{"version":3,"file":"useBaseQuery.026e41b3.mjs","sources":["../../../node_modules/react-query/es/core/queryObserver.js","../../../node_modules/react-query/es/react/QueryErrorResetBoundary.js","../../../node_modules/react-query/es/react/useBaseQuery.js"],"sourcesContent":["import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nimport { isServer, isValidTimeout, noop, replaceEqualDeep, shallowEqualObjects, timeUntilStale } from './utils';\nimport { notifyManager } from './notifyManager';\nimport { focusManager } from './focusManager';\nimport { Subscribable } from './subscribable';\nimport { getLogger } from './logger';\nexport var QueryObserver = /*#__PURE__*/function (_Subscribable) {\n  _inheritsLoose(QueryObserver, _Subscribable);\n\n  function QueryObserver(client, options) {\n    var _this;\n\n    _this = _Subscribable.call(this) || this;\n    _this.client = client;\n    _this.options = options;\n    _this.trackedProps = [];\n    _this.previousSelectError = null;\n\n    _this.bindMethods();\n\n    _this.setOptions(options);\n\n    return _this;\n  }\n\n  var _proto = QueryObserver.prototype;\n\n  _proto.bindMethods = function bindMethods() {\n    this.remove = this.remove.bind(this);\n    this.refetch = this.refetch.bind(this);\n  };\n\n  _proto.onSubscribe = function onSubscribe() {\n    if (this.listeners.length === 1) {\n      this.currentQuery.addObserver(this);\n\n      if (shouldFetchOnMount(this.currentQuery, this.options)) {\n        this.executeFetch();\n      }\n\n      this.updateTimers();\n    }\n  };\n\n  _proto.onUnsubscribe = function onUnsubscribe() {\n    if (!this.listeners.length) {\n      this.destroy();\n    }\n  };\n\n  _proto.shouldFetchOnReconnect = function shouldFetchOnReconnect() {\n    return _shouldFetchOnReconnect(this.currentQuery, this.options);\n  };\n\n  _proto.shouldFetchOnWindowFocus = function shouldFetchOnWindowFocus() {\n    return _shouldFetchOnWindowFocus(this.currentQuery, this.options);\n  };\n\n  _proto.destroy = function destroy() {\n    this.listeners = [];\n    this.clearTimers();\n    this.currentQuery.removeObserver(this);\n  };\n\n  _proto.setOptions = function setOptions(options, notifyOptions) {\n    var prevOptions = this.options;\n    var prevQuery = this.currentQuery;\n    this.options = this.client.defaultQueryObserverOptions(options);\n\n    if (typeof this.options.enabled !== 'undefined' && typeof this.options.enabled !== 'boolean') {\n      throw new Error('Expected enabled to be a boolean');\n    } // Keep previous query key if the user does not supply one\n\n\n    if (!this.options.queryKey) {\n      this.options.queryKey = prevOptions.queryKey;\n    }\n\n    this.updateQuery();\n    var mounted = this.hasListeners(); // Fetch if there are subscribers\n\n    if (mounted && shouldFetchOptionally(this.currentQuery, prevQuery, this.options, prevOptions)) {\n      this.executeFetch();\n    } // Update result\n\n\n    this.updateResult(notifyOptions); // Update stale interval if needed\n\n    if (mounted && (this.currentQuery !== prevQuery || this.options.enabled !== prevOptions.enabled || this.options.staleTime !== prevOptions.staleTime)) {\n      this.updateStaleTimeout();\n    } // Update refetch interval if needed\n\n\n    if (mounted && (this.currentQuery !== prevQuery || this.options.enabled !== prevOptions.enabled || this.options.refetchInterval !== prevOptions.refetchInterval)) {\n      this.updateRefetchInterval();\n    }\n  };\n\n  _proto.getOptimisticResult = function getOptimisticResult(options) {\n    var defaultedOptions = this.client.defaultQueryObserverOptions(options);\n    var query = this.client.getQueryCache().build(this.client, defaultedOptions);\n    return this.createResult(query, defaultedOptions);\n  };\n\n  _proto.getCurrentResult = function getCurrentResult() {\n    return this.currentResult;\n  };\n\n  _proto.trackResult = function trackResult(result) {\n    var _this2 = this;\n\n    var trackedResult = {};\n    Object.keys(result).forEach(function (key) {\n      Object.defineProperty(trackedResult, key, {\n        configurable: false,\n        enumerable: true,\n        get: function get() {\n          var typedKey = key;\n\n          if (!_this2.trackedProps.includes(typedKey)) {\n            _this2.trackedProps.push(typedKey);\n          }\n\n          return result[typedKey];\n        }\n      });\n    });\n    return trackedResult;\n  };\n\n  _proto.getNextResult = function getNextResult(options) {\n    var _this3 = this;\n\n    return new Promise(function (resolve, reject) {\n      var unsubscribe = _this3.subscribe(function (result) {\n        if (!result.isFetching) {\n          unsubscribe();\n\n          if (result.isError && (options == null ? void 0 : options.throwOnError)) {\n            reject(result.error);\n          } else {\n            resolve(result);\n          }\n        }\n      });\n    });\n  };\n\n  _proto.getCurrentQuery = function getCurrentQuery() {\n    return this.currentQuery;\n  };\n\n  _proto.remove = function remove() {\n    this.client.getQueryCache().remove(this.currentQuery);\n  };\n\n  _proto.refetch = function refetch(options) {\n    return this.fetch(options);\n  };\n\n  _proto.fetchOptimistic = function fetchOptimistic(options) {\n    var _this4 = this;\n\n    var defaultedOptions = this.client.defaultQueryObserverOptions(options);\n    var query = this.client.getQueryCache().build(this.client, defaultedOptions);\n    return query.fetch().then(function () {\n      return _this4.createResult(query, defaultedOptions);\n    });\n  };\n\n  _proto.fetch = function fetch(fetchOptions) {\n    var _this5 = this;\n\n    return this.executeFetch(fetchOptions).then(function () {\n      _this5.updateResult();\n\n      return _this5.currentResult;\n    });\n  };\n\n  _proto.executeFetch = function executeFetch(fetchOptions) {\n    // Make sure we reference the latest query as the current one might have been removed\n    this.updateQuery(); // Fetch\n\n    var promise = this.currentQuery.fetch(this.options, fetchOptions);\n\n    if (!(fetchOptions == null ? void 0 : fetchOptions.throwOnError)) {\n      promise = promise.catch(noop);\n    }\n\n    return promise;\n  };\n\n  _proto.updateStaleTimeout = function updateStaleTimeout() {\n    var _this6 = this;\n\n    this.clearStaleTimeout();\n\n    if (isServer || this.currentResult.isStale || !isValidTimeout(this.options.staleTime)) {\n      return;\n    }\n\n    var time = timeUntilStale(this.currentResult.dataUpdatedAt, this.options.staleTime); // The timeout is sometimes triggered 1 ms before the stale time expiration.\n    // To mitigate this issue we always add 1 ms to the timeout.\n\n    var timeout = time + 1;\n    this.staleTimeoutId = setTimeout(function () {\n      if (!_this6.currentResult.isStale) {\n        _this6.updateResult();\n      }\n    }, timeout);\n  };\n\n  _proto.updateRefetchInterval = function updateRefetchInterval() {\n    var _this7 = this;\n\n    this.clearRefetchInterval();\n\n    if (isServer || this.options.enabled === false || !isValidTimeout(this.options.refetchInterval)) {\n      return;\n    }\n\n    this.refetchIntervalId = setInterval(function () {\n      if (_this7.options.refetchIntervalInBackground || focusManager.isFocused()) {\n        _this7.executeFetch();\n      }\n    }, this.options.refetchInterval);\n  };\n\n  _proto.updateTimers = function updateTimers() {\n    this.updateStaleTimeout();\n    this.updateRefetchInterval();\n  };\n\n  _proto.clearTimers = function clearTimers() {\n    this.clearStaleTimeout();\n    this.clearRefetchInterval();\n  };\n\n  _proto.clearStaleTimeout = function clearStaleTimeout() {\n    clearTimeout(this.staleTimeoutId);\n    this.staleTimeoutId = undefined;\n  };\n\n  _proto.clearRefetchInterval = function clearRefetchInterval() {\n    clearInterval(this.refetchIntervalId);\n    this.refetchIntervalId = undefined;\n  };\n\n  _proto.createResult = function createResult(query, options) {\n    var prevQuery = this.currentQuery;\n    var prevOptions = this.options;\n    var prevResult = this.currentResult;\n    var prevResultState = this.currentResultState;\n    var prevResultOptions = this.currentResultOptions;\n    var queryChange = query !== prevQuery;\n    var queryInitialState = queryChange ? query.state : this.currentQueryInitialState;\n    var prevQueryResult = queryChange ? this.currentResult : this.previousQueryResult;\n    var state = query.state;\n    var dataUpdatedAt = state.dataUpdatedAt,\n        error = state.error,\n        errorUpdatedAt = state.errorUpdatedAt,\n        isFetching = state.isFetching,\n        status = state.status;\n    var isPreviousData = false;\n    var isPlaceholderData = false;\n    var data; // Optimistically set result in fetching state if needed\n\n    if (options.optimisticResults) {\n      var mounted = this.hasListeners();\n      var fetchOnMount = !mounted && shouldFetchOnMount(query, options);\n      var fetchOptionally = mounted && shouldFetchOptionally(query, prevQuery, options, prevOptions);\n\n      if (fetchOnMount || fetchOptionally) {\n        isFetching = true;\n\n        if (!dataUpdatedAt) {\n          status = 'loading';\n        }\n      }\n    } // Keep previous data if needed\n\n\n    if (options.keepPreviousData && !state.dataUpdateCount && (prevQueryResult == null ? void 0 : prevQueryResult.isSuccess) && status !== 'error') {\n      data = prevQueryResult.data;\n      dataUpdatedAt = prevQueryResult.dataUpdatedAt;\n      status = prevQueryResult.status;\n      isPreviousData = true;\n    } // Select data if needed\n    else if (options.select && typeof state.data !== 'undefined') {\n        // Memoize select result\n        if (prevResult && state.data === (prevResultState == null ? void 0 : prevResultState.data) && options.select === (prevResultOptions == null ? void 0 : prevResultOptions.select) && !this.previousSelectError) {\n          data = prevResult.data;\n        } else {\n          try {\n            data = options.select(state.data);\n\n            if (options.structuralSharing !== false) {\n              data = replaceEqualDeep(prevResult == null ? void 0 : prevResult.data, data);\n            }\n\n            this.previousSelectError = null;\n          } catch (selectError) {\n            getLogger().error(selectError);\n            error = selectError;\n            this.previousSelectError = selectError;\n            errorUpdatedAt = Date.now();\n            status = 'error';\n          }\n        }\n      } // Use query data\n      else {\n          data = state.data;\n        } // Show placeholder data if needed\n\n\n    if (typeof options.placeholderData !== 'undefined' && typeof data === 'undefined' && status === 'loading') {\n      var placeholderData; // Memoize placeholder data\n\n      if ((prevResult == null ? void 0 : prevResult.isPlaceholderData) && options.placeholderData === (prevResultOptions == null ? void 0 : prevResultOptions.placeholderData)) {\n        placeholderData = prevResult.data;\n      } else {\n        placeholderData = typeof options.placeholderData === 'function' ? options.placeholderData() : options.placeholderData;\n\n        if (options.select && typeof placeholderData !== 'undefined') {\n          try {\n            placeholderData = options.select(placeholderData);\n\n            if (options.structuralSharing !== false) {\n              placeholderData = replaceEqualDeep(prevResult == null ? void 0 : prevResult.data, placeholderData);\n            }\n\n            this.previousSelectError = null;\n          } catch (selectError) {\n            getLogger().error(selectError);\n            error = selectError;\n            this.previousSelectError = selectError;\n            errorUpdatedAt = Date.now();\n            status = 'error';\n          }\n        }\n      }\n\n      if (typeof placeholderData !== 'undefined') {\n        status = 'success';\n        data = placeholderData;\n        isPlaceholderData = true;\n      }\n    }\n\n    var result = {\n      status: status,\n      isLoading: status === 'loading',\n      isSuccess: status === 'success',\n      isError: status === 'error',\n      isIdle: status === 'idle',\n      data: data,\n      dataUpdatedAt: dataUpdatedAt,\n      error: error,\n      errorUpdatedAt: errorUpdatedAt,\n      failureCount: state.fetchFailureCount,\n      isFetched: state.dataUpdateCount > 0 || state.errorUpdateCount > 0,\n      isFetchedAfterMount: state.dataUpdateCount > queryInitialState.dataUpdateCount || state.errorUpdateCount > queryInitialState.errorUpdateCount,\n      isFetching: isFetching,\n      isLoadingError: status === 'error' && state.dataUpdatedAt === 0,\n      isPlaceholderData: isPlaceholderData,\n      isPreviousData: isPreviousData,\n      isRefetchError: status === 'error' && state.dataUpdatedAt !== 0,\n      isStale: isStale(query, options),\n      refetch: this.refetch,\n      remove: this.remove\n    };\n    return result;\n  };\n\n  _proto.shouldNotifyListeners = function shouldNotifyListeners(result, prevResult) {\n    if (!prevResult) {\n      return true;\n    }\n\n    if (result === prevResult) {\n      return false;\n    }\n\n    var _this$options = this.options,\n        notifyOnChangeProps = _this$options.notifyOnChangeProps,\n        notifyOnChangePropsExclusions = _this$options.notifyOnChangePropsExclusions;\n\n    if (!notifyOnChangeProps && !notifyOnChangePropsExclusions) {\n      return true;\n    }\n\n    if (notifyOnChangeProps === 'tracked' && !this.trackedProps.length) {\n      return true;\n    }\n\n    var includedProps = notifyOnChangeProps === 'tracked' ? this.trackedProps : notifyOnChangeProps;\n    return Object.keys(result).some(function (key) {\n      var typedKey = key;\n      var changed = result[typedKey] !== prevResult[typedKey];\n      var isIncluded = includedProps == null ? void 0 : includedProps.some(function (x) {\n        return x === key;\n      });\n      var isExcluded = notifyOnChangePropsExclusions == null ? void 0 : notifyOnChangePropsExclusions.some(function (x) {\n        return x === key;\n      });\n      return changed && !isExcluded && (!includedProps || isIncluded);\n    });\n  };\n\n  _proto.updateResult = function updateResult(notifyOptions) {\n    var prevResult = this.currentResult;\n    this.currentResult = this.createResult(this.currentQuery, this.options);\n    this.currentResultState = this.currentQuery.state;\n    this.currentResultOptions = this.options; // Only notify if something has changed\n\n    if (shallowEqualObjects(this.currentResult, prevResult)) {\n      return;\n    } // Determine which callbacks to trigger\n\n\n    var defaultNotifyOptions = {\n      cache: true\n    };\n\n    if ((notifyOptions == null ? void 0 : notifyOptions.listeners) !== false && this.shouldNotifyListeners(this.currentResult, prevResult)) {\n      defaultNotifyOptions.listeners = true;\n    }\n\n    this.notify(_extends({}, defaultNotifyOptions, notifyOptions));\n  };\n\n  _proto.updateQuery = function updateQuery() {\n    var query = this.client.getQueryCache().build(this.client, this.options);\n\n    if (query === this.currentQuery) {\n      return;\n    }\n\n    var prevQuery = this.currentQuery;\n    this.currentQuery = query;\n    this.currentQueryInitialState = query.state;\n    this.previousQueryResult = this.currentResult;\n\n    if (this.hasListeners()) {\n      prevQuery == null ? void 0 : prevQuery.removeObserver(this);\n      query.addObserver(this);\n    }\n  };\n\n  _proto.onQueryUpdate = function onQueryUpdate(action) {\n    var notifyOptions = {};\n\n    if (action.type === 'success') {\n      notifyOptions.onSuccess = true;\n    } else if (action.type === 'error') {\n      notifyOptions.onError = true;\n    }\n\n    this.updateResult(notifyOptions);\n\n    if (this.hasListeners()) {\n      this.updateTimers();\n    }\n  };\n\n  _proto.notify = function notify(notifyOptions) {\n    var _this8 = this;\n\n    notifyManager.batch(function () {\n      // First trigger the configuration callbacks\n      if (notifyOptions.onSuccess) {\n        _this8.options.onSuccess == null ? void 0 : _this8.options.onSuccess(_this8.currentResult.data);\n        _this8.options.onSettled == null ? void 0 : _this8.options.onSettled(_this8.currentResult.data, null);\n      } else if (notifyOptions.onError) {\n        _this8.options.onError == null ? void 0 : _this8.options.onError(_this8.currentResult.error);\n        _this8.options.onSettled == null ? void 0 : _this8.options.onSettled(undefined, _this8.currentResult.error);\n      } // Then trigger the listeners\n\n\n      if (notifyOptions.listeners) {\n        _this8.listeners.forEach(function (listener) {\n          listener(_this8.currentResult);\n        });\n      } // Then the cache listeners\n\n\n      if (notifyOptions.cache) {\n        _this8.client.getQueryCache().notify({\n          query: _this8.currentQuery,\n          type: 'observerResultsUpdated'\n        });\n      }\n    });\n  };\n\n  return QueryObserver;\n}(Subscribable);\n\nfunction shouldLoadOnMount(query, options) {\n  return options.enabled !== false && !query.state.dataUpdatedAt && !(query.state.status === 'error' && options.retryOnMount === false);\n}\n\nfunction shouldRefetchOnMount(query, options) {\n  return options.enabled !== false && query.state.dataUpdatedAt > 0 && (options.refetchOnMount === 'always' || options.refetchOnMount !== false && isStale(query, options));\n}\n\nfunction shouldFetchOnMount(query, options) {\n  return shouldLoadOnMount(query, options) || shouldRefetchOnMount(query, options);\n}\n\nfunction _shouldFetchOnReconnect(query, options) {\n  return options.enabled !== false && (options.refetchOnReconnect === 'always' || options.refetchOnReconnect !== false && isStale(query, options));\n}\n\nfunction _shouldFetchOnWindowFocus(query, options) {\n  return options.enabled !== false && (options.refetchOnWindowFocus === 'always' || options.refetchOnWindowFocus !== false && isStale(query, options));\n}\n\nfunction shouldFetchOptionally(query, prevQuery, options, prevOptions) {\n  return options.enabled !== false && (query !== prevQuery || prevOptions.enabled === false) && isStale(query, options);\n}\n\nfunction isStale(query, options) {\n  return query.isStaleByTime(options.staleTime);\n}","import React from 'react'; // CONTEXT\n\nfunction createValue() {\n  var _isReset = false;\n  return {\n    clearReset: function clearReset() {\n      _isReset = false;\n    },\n    reset: function reset() {\n      _isReset = true;\n    },\n    isReset: function isReset() {\n      return _isReset;\n    }\n  };\n}\n\nvar QueryErrorResetBoundaryContext = /*#__PURE__*/React.createContext(createValue()); // HOOK\n\nexport var useQueryErrorResetBoundary = function useQueryErrorResetBoundary() {\n  return React.useContext(QueryErrorResetBoundaryContext);\n}; // COMPONENT\n\nexport var QueryErrorResetBoundary = function QueryErrorResetBoundary(_ref) {\n  var children = _ref.children;\n  var value = React.useMemo(function () {\n    return createValue();\n  }, []);\n  return /*#__PURE__*/React.createElement(QueryErrorResetBoundaryContext.Provider, {\n    value: value\n  }, typeof children === 'function' ? children(value) : children);\n};","import React from 'react';\nimport { notifyManager } from '../core/notifyManager';\nimport { useQueryErrorResetBoundary } from './QueryErrorResetBoundary';\nimport { useQueryClient } from './QueryClientProvider';\nexport function useBaseQuery(options, Observer) {\n  var mountedRef = React.useRef(false);\n\n  var _React$useState = React.useState(0),\n      forceUpdate = _React$useState[1];\n\n  var queryClient = useQueryClient();\n  var errorResetBoundary = useQueryErrorResetBoundary();\n  var defaultedOptions = queryClient.defaultQueryObserverOptions(options); // Make sure results are optimistically set in fetching state before subscribing or updating options\n\n  defaultedOptions.optimisticResults = true; // Include callbacks in batch renders\n\n  if (defaultedOptions.onError) {\n    defaultedOptions.onError = notifyManager.batchCalls(defaultedOptions.onError);\n  }\n\n  if (defaultedOptions.onSuccess) {\n    defaultedOptions.onSuccess = notifyManager.batchCalls(defaultedOptions.onSuccess);\n  }\n\n  if (defaultedOptions.onSettled) {\n    defaultedOptions.onSettled = notifyManager.batchCalls(defaultedOptions.onSettled);\n  }\n\n  if (defaultedOptions.suspense) {\n    // Always set stale time when using suspense to prevent\n    // fetching again when directly mounting after suspending\n    if (typeof defaultedOptions.staleTime !== 'number') {\n      defaultedOptions.staleTime = 1000;\n    }\n  }\n\n  if (defaultedOptions.suspense || defaultedOptions.useErrorBoundary) {\n    // Prevent retrying failed query if the error boundary has not been reset yet\n    if (!errorResetBoundary.isReset()) {\n      defaultedOptions.retryOnMount = false;\n    }\n  }\n\n  var obsRef = React.useRef();\n\n  if (!obsRef.current) {\n    obsRef.current = new Observer(queryClient, defaultedOptions);\n  }\n\n  var result = obsRef.current.getOptimisticResult(defaultedOptions);\n  React.useEffect(function () {\n    mountedRef.current = true;\n    errorResetBoundary.clearReset();\n    var unsubscribe = obsRef.current.subscribe(notifyManager.batchCalls(function () {\n      if (mountedRef.current) {\n        forceUpdate(function (x) {\n          return x + 1;\n        });\n      }\n    })); // Update result to make sure we did not miss any query updates\n    // between creating the observer and subscribing to it.\n\n    obsRef.current.updateResult();\n    return function () {\n      mountedRef.current = false;\n      unsubscribe();\n    };\n  }, [errorResetBoundary]);\n  React.useEffect(function () {\n    // Do not notify on updates because of changes in the options because\n    // these changes should already be reflected in the optimistic result.\n    obsRef.current.setOptions(defaultedOptions, {\n      listeners: false\n    });\n  }, [defaultedOptions]); // Handle suspense\n\n  if (defaultedOptions.suspense && result.isLoading) {\n    throw obsRef.current.fetchOptimistic(defaultedOptions).then(function (_ref) {\n      var data = _ref.data;\n      defaultedOptions.onSuccess == null ? void 0 : defaultedOptions.onSuccess(data);\n      defaultedOptions.onSettled == null ? void 0 : defaultedOptions.onSettled(data, null);\n    }).catch(function (error) {\n      errorResetBoundary.clearReset();\n      defaultedOptions.onError == null ? void 0 : defaultedOptions.onError(error);\n      defaultedOptions.onSettled == null ? void 0 : defaultedOptions.onSettled(undefined, error);\n    });\n  } // Handle error boundary\n\n\n  if ((defaultedOptions.suspense || defaultedOptions.useErrorBoundary) && result.isError && !result.isFetching) {\n    throw result.error;\n  } // Handle result property usage tracking\n\n\n  if (defaultedOptions.notifyOnChangeProps === 'tracked') {\n    result = obsRef.current.trackResult(result);\n  }\n\n  return result;\n}"],"names":["QueryObserver","_Subscribable","_inheritsLoose","client","options","_this","_proto","shouldFetchOnMount","_shouldFetchOnReconnect","_shouldFetchOnWindowFocus","notifyOptions","prevOptions","prevQuery","mounted","shouldFetchOptionally","defaultedOptions","query","result","_this2","trackedResult","key","typedKey","_this3","resolve","reject","unsubscribe","_this4","fetchOptions","_this5","promise","noop","_this6","isServer","isValidTimeout","time","timeUntilStale","timeout","_this7","focusManager","prevResult","prevResultState","prevResultOptions","queryChange","queryInitialState","prevQueryResult","state","dataUpdatedAt","error","errorUpdatedAt","isFetching","status","isPreviousData","isPlaceholderData","data","fetchOnMount","fetchOptionally","replaceEqualDeep","selectError","getLogger","placeholderData","isStale","_this$options","notifyOnChangeProps","notifyOnChangePropsExclusions","includedProps","changed","isIncluded","x","isExcluded","shallowEqualObjects","defaultNotifyOptions","_extends","action","_this8","notifyManager","listener","Subscribable","shouldLoadOnMount","shouldRefetchOnMount","createValue","_isReset","QueryErrorResetBoundaryContext","React","useQueryErrorResetBoundary","useBaseQuery","Observer","mountedRef","_React$useState","forceUpdate","queryClient","useQueryClient","errorResetBoundary","obsRef","_ref"],"mappings":"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"}