{"version":3,"file":"website.js","sources":["webpack://thermondo-frontend-wagtail/./node_modules/clipboard/dist/clipboard.js","webpack://thermondo-frontend-wagtail/./node_modules/enter-view/enter-view.min.js","webpack://thermondo-frontend-wagtail/./node_modules/lodash.debounce/index.js","webpack://thermondo-frontend-wagtail/./node_modules/picturefill/dist/picturefill.js","webpack://thermondo-frontend-wagtail/./node_modules/squirrelly/dist/browser/squirrelly.min.js","webpack://thermondo-frontend-wagtail/./node_modules/validate.js/validate.js","webpack://thermondo-frontend-wagtail/./node_modules/vanilla-lazyload/dist/lazyload.min.js","webpack://thermondo-frontend-wagtail/webpack/bootstrap","webpack://thermondo-frontend-wagtail/webpack/runtime/amd define","webpack://thermondo-frontend-wagtail/webpack/runtime/compat get default export","webpack://thermondo-frontend-wagtail/webpack/runtime/define property getters","webpack://thermondo-frontend-wagtail/webpack/runtime/hasOwnProperty shorthand","webpack://thermondo-frontend-wagtail/webpack/runtime/make namespace object","webpack://thermondo-frontend-wagtail/webpack/runtime/node module decorator","webpack://thermondo-frontend-wagtail/webpack/runtime/set anonymous default export name","webpack://thermondo-frontend-wagtail/./node_modules/@sentry/core/build/esm/api.js","webpack://thermondo-frontend-wagtail/./node_modules/@sentry/core/build/esm/debug-build.js","webpack://thermondo-frontend-wagtail/./node_modules/@sentry/core/build/esm/utils/version.js","webpack://thermondo-frontend-wagtail/./node_modules/@sentry/core/build/esm/utils/worldwide.js","webpack://thermondo-frontend-wagtail/./node_modules/@sentry/core/build/esm/carrier.js","webpack://thermondo-frontend-wagtail/./node_modules/@sentry/core/build/esm/utils/debug-logger.js","webpack://thermondo-frontend-wagtail/./node_modules/@sentry/core/build/esm/utils/dsn.js","webpack://thermondo-frontend-wagtail/./node_modules/@sentry/core/build/esm/utils/normalizationHints.js","webpack://thermondo-frontend-wagtail/./node_modules/@sentry/core/build/esm/utils/is.js","webpack://thermondo-frontend-wagtail/./node_modules/@sentry/core/build/esm/utils/object.js","webpack://thermondo-frontend-wagtail/./node_modules/@sentry/core/build/esm/utils/stacktrace.js","webpack://thermondo-frontend-wagtail/./node_modules/@sentry/core/build/esm/utils/normalize.js","webpack://thermondo-frontend-wagtail/./node_modules/@sentry/core/build/esm/utils/randomSafeContext.js","webpack://thermondo-frontend-wagtail/./node_modules/@sentry/core/build/esm/utils/envelope.js","webpack://thermondo-frontend-wagtail/./node_modules/@sentry/core/build/esm/transports/multiplexed.js","webpack://thermondo-frontend-wagtail/./node_modules/@sentry/core/build/esm/utils/syncpromise.js","webpack://thermondo-frontend-wagtail/./node_modules/@sentry/core/build/esm/utils/timer.js","webpack://thermondo-frontend-wagtail/./node_modules/@sentry/core/build/esm/utils/promisebuffer.js","webpack://thermondo-frontend-wagtail/./node_modules/@sentry/core/build/esm/transports/base.js","webpack://thermondo-frontend-wagtail/./node_modules/@sentry/core/build/esm/utils/ratelimit.js","webpack://thermondo-frontend-wagtail/./node_modules/@sentry/core/build/esm/utils/supports.js","webpack://thermondo-frontend-wagtail/./node_modules/@sentry/browser-utils/build/esm/debug-build.js","webpack://thermondo-frontend-wagtail/./node_modules/@sentry/browser-utils/build/esm/types.js","webpack://thermondo-frontend-wagtail/./node_modules/@sentry/browser-utils/build/esm/getNativeImplementation.js","webpack://thermondo-frontend-wagtail/./node_modules/@sentry/browser/build/npm/esm/prod/transports/fetch.js","webpack://thermondo-frontend-wagtail/./node_modules/@sentry/core/build/esm/integration.js","webpack://thermondo-frontend-wagtail/./node_modules/@sentry/core/build/esm/utils/eventUtils.js","webpack://thermondo-frontend-wagtail/./node_modules/@sentry/core/build/esm/utils/misc.js","webpack://thermondo-frontend-wagtail/./node_modules/@sentry/core/build/esm/utils/string.js","webpack://thermondo-frontend-wagtail/./node_modules/@sentry/core/build/esm/integrations/eventFilters.js","webpack://thermondo-frontend-wagtail/./node_modules/@sentry/core/build/esm/utils/time.js","webpack://thermondo-frontend-wagtail/./node_modules/@sentry/core/build/esm/session.js","webpack://thermondo-frontend-wagtail/./node_modules/@sentry/core/build/esm/utils/merge.js","webpack://thermondo-frontend-wagtail/./node_modules/@sentry/core/build/esm/utils/propagationContext.js","webpack://thermondo-frontend-wagtail/./node_modules/@sentry/core/build/esm/scope.js","webpack://thermondo-frontend-wagtail/./node_modules/@sentry/core/build/esm/tracing/constants.js","webpack://thermondo-frontend-wagtail/./node_modules/@sentry/core/build/esm/utils/chain-and-copy-promiselike.js","webpack://thermondo-frontend-wagtail/./node_modules/@sentry/core/build/esm/asyncContext/stackStrategy.js","webpack://thermondo-frontend-wagtail/./node_modules/@sentry/core/build/esm/defaultScopes.js","webpack://thermondo-frontend-wagtail/./node_modules/@sentry/core/build/esm/asyncContext/index.js","webpack://thermondo-frontend-wagtail/./node_modules/@sentry/core/build/esm/currentScopes.js","webpack://thermondo-frontend-wagtail/./node_modules/@sentry/core/build/esm/integrations/functiontostring.js","webpack://thermondo-frontend-wagtail/./node_modules/@sentry/conventions/dist/attributes.mjs","webpack://thermondo-frontend-wagtail/./node_modules/@sentry/core/build/esm/attributes.js","webpack://thermondo-frontend-wagtail/./node_modules/@sentry/core/build/esm/types/spanStatus.js","webpack://thermondo-frontend-wagtail/./node_modules/@sentry/core/build/esm/tracing/spanstatus.js","webpack://thermondo-frontend-wagtail/./node_modules/@sentry/core/build/esm/utils/weakRef.js","webpack://thermondo-frontend-wagtail/./node_modules/@sentry/core/build/esm/tracing/utils.js","webpack://thermondo-frontend-wagtail/./node_modules/@sentry/core/build/esm/utils/baggage.js","webpack://thermondo-frontend-wagtail/./node_modules/@sentry/core/build/esm/utils/parseSampleRate.js","webpack://thermondo-frontend-wagtail/./node_modules/@sentry/core/build/esm/utils/tracing.js","webpack://thermondo-frontend-wagtail/./node_modules/@sentry/core/build/esm/utils/spanOnScope.js","webpack://thermondo-frontend-wagtail/./node_modules/@sentry/core/build/esm/utils/spanUtils.js","webpack://thermondo-frontend-wagtail/./node_modules/@sentry/core/build/esm/utils/safeCallback.js","webpack://thermondo-frontend-wagtail/./node_modules/@sentry/core/build/esm/breadcrumbs.js","webpack://thermondo-frontend-wagtail/./node_modules/@sentry/core/build/esm/instrument/handlers.js","webpack://thermondo-frontend-wagtail/./node_modules/@sentry/core/build/esm/instrument/console.js","webpack://thermondo-frontend-wagtail/./node_modules/@sentry/core/build/esm/utils/severity.js","webpack://thermondo-frontend-wagtail/./node_modules/@sentry/core/build/esm/integrations/console.js","webpack://thermondo-frontend-wagtail/./node_modules/@sentry/core/build/esm/integrations/dedupe.js","webpack://thermondo-frontend-wagtail/./node_modules/@sentry/core/build/esm/constants.js","webpack://thermondo-frontend-wagtail/./node_modules/@sentry/core/build/esm/utils/isBrowser.js","webpack://thermondo-frontend-wagtail/./node_modules/@sentry/core/build/esm/utils/env.js","webpack://thermondo-frontend-wagtail/./node_modules/@sentry/core/build/esm/utils/node.js","webpack://thermondo-frontend-wagtail/./node_modules/@sentry/core/build/esm/logs/envelope.js","webpack://thermondo-frontend-wagtail/./node_modules/@sentry/core/build/esm/logs/internal.js","webpack://thermondo-frontend-wagtail/./node_modules/@sentry/core/build/esm/metrics/envelope.js","webpack://thermondo-frontend-wagtail/./node_modules/@sentry/core/build/esm/metrics/internal.js","webpack://thermondo-frontend-wagtail/./node_modules/@sentry/core/build/esm/semanticAttributes.js","webpack://thermondo-frontend-wagtail/./node_modules/@sentry/core/build/esm/utils/hasSpansEnabled.js","webpack://thermondo-frontend-wagtail/./node_modules/@sentry/core/build/esm/tracing/sentryNonRecordingSpan.js","webpack://thermondo-frontend-wagtail/./node_modules/@sentry/core/build/esm/tracing/dynamicSamplingContext.js","webpack://thermondo-frontend-wagtail/./node_modules/@sentry/core/build/esm/tracing/spans/beforeSendSpan.js","webpack://thermondo-frontend-wagtail/./node_modules/@sentry/core/build/esm/tracing/spans/envelope.js","webpack://thermondo-frontend-wagtail/./node_modules/@sentry/core/build/esm/tracing/spans/hasSpanStreamingEnabled.js","webpack://thermondo-frontend-wagtail/./node_modules/@sentry/core/build/esm/tracing/spans/spanJsonToStreamedSpan.js","webpack://thermondo-frontend-wagtail/./node_modules/@sentry/core/build/esm/eventProcessors.js","webpack://thermondo-frontend-wagtail/./node_modules/@sentry/core/build/esm/utils/debug-ids.js","webpack://thermondo-frontend-wagtail/./node_modules/@sentry/core/build/esm/utils/errorSpanAttribution.js","webpack://thermondo-frontend-wagtail/./node_modules/@sentry/core/build/esm/utils/scopeData.js","webpack://thermondo-frontend-wagtail/./node_modules/@sentry/core/build/esm/utils/prepareEvent.js","webpack://thermondo-frontend-wagtail/./node_modules/@sentry/core/build/esm/utils/should-ignore-span.js","webpack://thermondo-frontend-wagtail/./node_modules/@sentry/core/build/esm/utils/data-collection/resolveDataCollectionOptions.js","webpack://thermondo-frontend-wagtail/./node_modules/@sentry/core/build/esm/client.js","webpack://thermondo-frontend-wagtail/./node_modules/@sentry/core/build/esm/utils/warnAboutIgnoredTransactionOptions.js","webpack://thermondo-frontend-wagtail/./node_modules/@sentry/core/build/esm/tracing/spans/extractGenAiSpans.js","webpack://thermondo-frontend-wagtail/./node_modules/@sentry/core/build/esm/envelope.js","webpack://thermondo-frontend-wagtail/./node_modules/@sentry/core/build/esm/utils/transactionEvent.js","webpack://thermondo-frontend-wagtail/./node_modules/@sentry/core/build/esm/utils/clientreport.js","webpack://thermondo-frontend-wagtail/./node_modules/@sentry/browser-utils/build/esm/routing.js","webpack://thermondo-frontend-wagtail/./node_modules/@sentry/core/build/esm/utils/ipAddress.js","webpack://thermondo-frontend-wagtail/./node_modules/@sentry/core/build/esm/utils/eventbuilder.js","webpack://thermondo-frontend-wagtail/./node_modules/@sentry/browser/build/npm/esm/prod/eventbuilder.js","webpack://thermondo-frontend-wagtail/./node_modules/@sentry/core/build/esm/utils/data-collection/filtering-snippets.js","webpack://thermondo-frontend-wagtail/./node_modules/@sentry/core/build/esm/utils/data-collection/filterKeyValueData.js","webpack://thermondo-frontend-wagtail/./node_modules/@sentry/core/build/esm/exports.js","webpack://thermondo-frontend-wagtail/./node_modules/@sentry/core/build/esm/utils/data-collection/filterQueryParams.js","webpack://thermondo-frontend-wagtail/./node_modules/@sentry/core/build/esm/utils/data-collection/filterCollectedUrl.js","webpack://thermondo-frontend-wagtail/./node_modules/@sentry/core/build/esm/utils/data-collection/filterUrlQuery.js","webpack://thermondo-frontend-wagtail/./node_modules/@sentry/browser-utils/build/esm/getLocationHref.js","webpack://thermondo-frontend-wagtail/./node_modules/@sentry/browser/build/npm/esm/prod/helpers.js","webpack://thermondo-frontend-wagtail/./node_modules/@sentry/browser/build/npm/esm/prod/client.js","webpack://thermondo-frontend-wagtail/./node_modules/@sentry/core/build/esm/utils/sdkMetadata.js","webpack://thermondo-frontend-wagtail/./node_modules/@sentry/core/build/esm/instrument/fetch.js","webpack://thermondo-frontend-wagtail/./node_modules/@sentry/core/build/esm/utils/breadcrumb-log-level.js","webpack://thermondo-frontend-wagtail/./node_modules/@sentry/core/build/esm/utils/url.js","webpack://thermondo-frontend-wagtail/./node_modules/@sentry/browser-utils/build/esm/instrumentation/dom.js","webpack://thermondo-frontend-wagtail/./node_modules/@sentry/browser-utils/build/esm/instrumentation/xhr.js","webpack://thermondo-frontend-wagtail/./node_modules/@sentry/browser-utils/build/esm/instrumentation/history.js","webpack://thermondo-frontend-wagtail/./node_modules/@sentry/browser-utils/build/esm/htmlTreeAsString.js","webpack://thermondo-frontend-wagtail/./node_modules/@sentry/browser-utils/build/esm/component-name.js","webpack://thermondo-frontend-wagtail/./node_modules/@sentry/browser/build/npm/esm/prod/debug-build.js","webpack://thermondo-frontend-wagtail/./node_modules/@sentry/browser/build/npm/esm/prod/integrations/breadcrumbs.js","webpack://thermondo-frontend-wagtail/./node_modules/@sentry/browser/build/npm/esm/prod/integrations/browserapierrors.js","webpack://thermondo-frontend-wagtail/./node_modules/@sentry/browser-utils/build/esm/web-vitals/utils.js","webpack://thermondo-frontend-wagtail/./node_modules/@sentry/browser/build/npm/esm/prod/integrations/browsersession.js","webpack://thermondo-frontend-wagtail/./node_modules/@sentry/core/build/esm/tracing/spans/captureSpan.js","webpack://thermondo-frontend-wagtail/./node_modules/@sentry/core/build/esm/tracing/spans/scopeContextAttributes.js","webpack://thermondo-frontend-wagtail/./node_modules/@sentry/browser/build/npm/esm/prod/integrations/culturecontext.js","webpack://thermondo-frontend-wagtail/./node_modules/@sentry/core/build/esm/instrument/globalError.js","webpack://thermondo-frontend-wagtail/./node_modules/@sentry/core/build/esm/instrument/globalUnhandledRejection.js","webpack://thermondo-frontend-wagtail/./node_modules/@sentry/browser/build/npm/esm/prod/integrations/globalhandlers.js","webpack://thermondo-frontend-wagtail/./node_modules/@sentry/core/build/esm/utils/aggregate-errors.js","webpack://thermondo-frontend-wagtail/./node_modules/@sentry/browser/build/npm/esm/prod/integrations/linkederrors.js","webpack://thermondo-frontend-wagtail/./node_modules/@sentry/browser/build/npm/esm/prod/stack-parsers.js","webpack://thermondo-frontend-wagtail/./node_modules/@sentry/browser/build/npm/esm/prod/normalizeStringifyValue.js","webpack://thermondo-frontend-wagtail/./node_modules/@sentry/browser-utils/build/esm/is.js","webpack://thermondo-frontend-wagtail/./node_modules/@sentry/browser/build/npm/esm/prod/utils/managedTunnel.js","webpack://thermondo-frontend-wagtail/./node_modules/@sentry/core/build/esm/utils/tunnel.js","webpack://thermondo-frontend-wagtail/./node_modules/@sentry/core/build/esm/tracing/spans/spanBuffer.js","webpack://thermondo-frontend-wagtail/./node_modules/@sentry/core/build/esm/tracing/spans/estimateSize.js","webpack://thermondo-frontend-wagtail/./node_modules/@sentry/core/build/esm/integrations/spanStreaming.js","webpack://thermondo-frontend-wagtail/./node_modules/@sentry/core/build/esm/tracing/measurement.js","webpack://thermondo-frontend-wagtail/./node_modules/@sentry/core/build/esm/tracing/segmentSpanCaptureStrategy.js","webpack://thermondo-frontend-wagtail/./node_modules/@sentry/core/build/esm/tracing/sentrySpan.js","webpack://thermondo-frontend-wagtail/./node_modules/@sentry/core/build/esm/tracing/logSpans.js","webpack://thermondo-frontend-wagtail/./node_modules/@sentry/core/build/esm/tracing/trace.js","webpack://thermondo-frontend-wagtail/./node_modules/@sentry/core/build/esm/tracing/sampling.js","webpack://thermondo-frontend-wagtail/./node_modules/@sentry/core/build/esm/tracing/browserSpanApi.js","webpack://thermondo-frontend-wagtail/./node_modules/@sentry/core/build/esm/tracing/idleSpan.js","webpack://thermondo-frontend-wagtail/./node_modules/@sentry/core/build/esm/tracing/errors.js","webpack://thermondo-frontend-wagtail/./node_modules/@sentry/conventions/dist/op.mjs","webpack://thermondo-frontend-wagtail/./node_modules/@sentry/core/build/esm/tracing/spans/spanNames.js","webpack://thermondo-frontend-wagtail/./node_modules/@sentry/browser-utils/build/esm/isBotUserAgent.js","webpack://thermondo-frontend-wagtail/./node_modules/web-vitals/dist/web-vitals.js","webpack://thermondo-frontend-wagtail/./node_modules/@sentry/browser-utils/build/esm/instrumentation/performanceObserver.js","webpack://thermondo-frontend-wagtail/./node_modules/@sentry/browser-utils/build/esm/performance/utils.js","webpack://thermondo-frontend-wagtail/./node_modules/@sentry/browser-utils/build/esm/performance/resourceTiming.js","webpack://thermondo-frontend-wagtail/./node_modules/@sentry/browser-utils/build/esm/performance/entries.js","webpack://thermondo-frontend-wagtail/./node_modules/@sentry/core/build/esm/utils/lru.js","webpack://thermondo-frontend-wagtail/./node_modules/@sentry/browser-utils/build/esm/web-vitals/softNavs.js","webpack://thermondo-frontend-wagtail/./node_modules/@sentry/browser-utils/build/esm/web-vitals/lcp.js","webpack://thermondo-frontend-wagtail/./node_modules/@sentry/browser-utils/build/esm/web-vitals/tracking.js","webpack://thermondo-frontend-wagtail/./node_modules/@sentry/browser-utils/build/esm/web-vitals/inp.js","webpack://thermondo-frontend-wagtail/./node_modules/@sentry/browser-utils/build/esm/web-vitals/emitSpan.js","webpack://thermondo-frontend-wagtail/./node_modules/@sentry/browser-utils/build/esm/web-vitals/reportEvents.js","webpack://thermondo-frontend-wagtail/./node_modules/@sentry/browser-utils/build/esm/web-vitals/spans.js","webpack://thermondo-frontend-wagtail/./node_modules/@sentry/browser/build/npm/esm/prod/integrations/webVitals.js","webpack://thermondo-frontend-wagtail/./node_modules/@sentry/browser/build/npm/esm/prod/tracing/linkedTraces.js","webpack://thermondo-frontend-wagtail/./node_modules/@sentry/core/build/esm/utils/traceData.js","webpack://thermondo-frontend-wagtail/./node_modules/@sentry/core/build/esm/fetch.js","webpack://thermondo-frontend-wagtail/./node_modules/@sentry/core/build/esm/utils/tracePropagationTargets.js","webpack://thermondo-frontend-wagtail/./node_modules/@sentry/browser-utils/build/esm/networkUtils.js","webpack://thermondo-frontend-wagtail/./node_modules/@sentry/browser/build/npm/esm/prod/tracing/utils.js","webpack://thermondo-frontend-wagtail/./node_modules/@sentry/browser/build/npm/esm/prod/tracing/request.js","webpack://thermondo-frontend-wagtail/./node_modules/@sentry/browser/build/npm/esm/prod/tracing/browserTracingIntegration.js","webpack://thermondo-frontend-wagtail/./node_modules/@sentry/core/build/esm/metadata.js","webpack://thermondo-frontend-wagtail/./src/frontend/js/utils/sentryEnv.js","webpack://thermondo-frontend-wagtail/./node_modules/axios/lib/helpers/bind.js","webpack://thermondo-frontend-wagtail/./node_modules/axios/lib/utils.js","webpack://thermondo-frontend-wagtail/./node_modules/axios/lib/helpers/parseHeaders.js","webpack://thermondo-frontend-wagtail/./node_modules/axios/lib/helpers/sanitizeHeaderValue.js","webpack://thermondo-frontend-wagtail/./node_modules/axios/lib/core/AxiosHeaders.js","webpack://thermondo-frontend-wagtail/./node_modules/axios/lib/core/AxiosError.js","webpack://thermondo-frontend-wagtail/./node_modules/axios/lib/helpers/toFormData.js","webpack://thermondo-frontend-wagtail/./node_modules/axios/lib/helpers/AxiosURLSearchParams.js","webpack://thermondo-frontend-wagtail/./node_modules/axios/lib/helpers/buildURL.js","webpack://thermondo-frontend-wagtail/./node_modules/axios/lib/core/InterceptorManager.js","webpack://thermondo-frontend-wagtail/./node_modules/axios/lib/defaults/transitional.js","webpack://thermondo-frontend-wagtail/./node_modules/axios/lib/platform/browser/index.js","webpack://thermondo-frontend-wagtail/./node_modules/axios/lib/platform/browser/classes/URLSearchParams.js","webpack://thermondo-frontend-wagtail/./node_modules/axios/lib/platform/browser/classes/FormData.js","webpack://thermondo-frontend-wagtail/./node_modules/axios/lib/platform/browser/classes/Blob.js","webpack://thermondo-frontend-wagtail/./node_modules/axios/lib/platform/common/utils.js","webpack://thermondo-frontend-wagtail/./node_modules/axios/lib/platform/index.js","webpack://thermondo-frontend-wagtail/./node_modules/axios/lib/helpers/formDataToJSON.js","webpack://thermondo-frontend-wagtail/./node_modules/axios/lib/core/methodList.js","webpack://thermondo-frontend-wagtail/./node_modules/axios/lib/defaults/index.js","webpack://thermondo-frontend-wagtail/./node_modules/axios/lib/helpers/toURLEncodedForm.js","webpack://thermondo-frontend-wagtail/./node_modules/axios/lib/core/transformData.js","webpack://thermondo-frontend-wagtail/./node_modules/axios/lib/cancel/isCancel.js","webpack://thermondo-frontend-wagtail/./node_modules/axios/lib/cancel/CanceledError.js","webpack://thermondo-frontend-wagtail/./node_modules/axios/lib/core/settle.js","webpack://thermondo-frontend-wagtail/./node_modules/axios/lib/helpers/normalizeURLForProtocolCheck.js","webpack://thermondo-frontend-wagtail/./node_modules/axios/lib/helpers/parseProtocol.js","webpack://thermondo-frontend-wagtail/./node_modules/axios/lib/helpers/cookies.js","webpack://thermondo-frontend-wagtail/./node_modules/axios/lib/helpers/progressEventReducer.js","webpack://thermondo-frontend-wagtail/./node_modules/axios/lib/helpers/speedometer.js","webpack://thermondo-frontend-wagtail/./node_modules/axios/lib/helpers/throttle.js","webpack://thermondo-frontend-wagtail/./node_modules/axios/lib/helpers/isURLSameOrigin.js","webpack://thermondo-frontend-wagtail/./node_modules/axios/lib/core/buildFullPath.js","webpack://thermondo-frontend-wagtail/./node_modules/axios/lib/helpers/isAbsoluteURL.js","webpack://thermondo-frontend-wagtail/./node_modules/axios/lib/helpers/combineURLs.js","webpack://thermondo-frontend-wagtail/./node_modules/axios/lib/core/mergeConfig.js","webpack://thermondo-frontend-wagtail/./node_modules/axios/lib/core/assertParamsAcyclic.js","webpack://thermondo-frontend-wagtail/./node_modules/axios/lib/core/setFormDataHeaders.js","webpack://thermondo-frontend-wagtail/./node_modules/axios/lib/helpers/resolveConfig.js","webpack://thermondo-frontend-wagtail/./node_modules/axios/lib/adapters/xhr.js","webpack://thermondo-frontend-wagtail/./node_modules/axios/lib/helpers/composeSignals.js","webpack://thermondo-frontend-wagtail/./node_modules/axios/lib/helpers/trackStream.js","webpack://thermondo-frontend-wagtail/./node_modules/axios/lib/helpers/formDataToBlob.js","webpack://thermondo-frontend-wagtail/./node_modules/axios/lib/helpers/estimateDataURLDecodedBytes.js","webpack://thermondo-frontend-wagtail/./node_modules/axios/lib/adapters/fetch.js","webpack://thermondo-frontend-wagtail/./node_modules/axios/lib/core/createMultipartBody.js","webpack://thermondo-frontend-wagtail/./node_modules/axios/lib/adapters/adapters.js","webpack://thermondo-frontend-wagtail/./node_modules/axios/lib/core/dispatchRequest.js","webpack://thermondo-frontend-wagtail/./node_modules/axios/lib/helpers/validator.js","webpack://thermondo-frontend-wagtail/./node_modules/axios/lib/core/Axios.js","webpack://thermondo-frontend-wagtail/./node_modules/axios/lib/cancel/CancelToken.js","webpack://thermondo-frontend-wagtail/./node_modules/axios/lib/helpers/HttpStatusCode.js","webpack://thermondo-frontend-wagtail/./node_modules/axios/lib/axios.js","webpack://thermondo-frontend-wagtail/./node_modules/axios/lib/helpers/spread.js","webpack://thermondo-frontend-wagtail/./node_modules/axios/lib/helpers/isAxiosError.js","webpack://thermondo-frontend-wagtail/./src/frontend/js/features/Navigation.js","webpack://thermondo-frontend-wagtail/./node_modules/js-cookie/dist/js.cookie.mjs","webpack://thermondo-frontend-wagtail/./node_modules/micromodal/dist/micromodal.es.js","webpack://thermondo-frontend-wagtail/./node_modules/scroll-js/dist/scroll.js","webpack://thermondo-frontend-wagtail/./src/frontend/js/utils/localStorageCheck.js","webpack://thermondo-frontend-wagtail/./src/frontend/js/features/EventTracking.js","webpack://thermondo-frontend-wagtail/./src/frontend/js/features/TrustPilot.js","webpack://thermondo-frontend-wagtail/./src/frontend/js/features/NewsletterForm.js","webpack://thermondo-frontend-wagtail/./src/frontend/js/features/Technology.js","webpack://thermondo-frontend-wagtail/./src/frontend/js/templates/technology.js","webpack://thermondo-frontend-wagtail/./node_modules/plyr/dist/plyr.mjs","webpack://thermondo-frontend-wagtail/./src/frontend/js/features/videoPlayerHandler.js","webpack://thermondo-frontend-wagtail/./src/frontend/js/utils/getQueryParameters.js","webpack://thermondo-frontend-wagtail/./src/frontend/js/features/CustomerReferral.js","webpack://thermondo-frontend-wagtail/./src/frontend/js/utils/sessionStorageCheck.js","webpack://thermondo-frontend-wagtail/./src/frontend/js/features/CustomerReferralResult.js","webpack://thermondo-frontend-wagtail/./src/frontend/js/features/ConversionBanner.js","webpack://thermondo-frontend-wagtail/./src/frontend/js/features/InvertCTA.js","webpack://thermondo-frontend-wagtail/./src/frontend/js/features/Header.js","webpack://thermondo-frontend-wagtail/./src/frontend/js/features/ScrollTo.js","webpack://thermondo-frontend-wagtail/./src/frontend/js/features/LazyLoad.js","webpack://thermondo-frontend-wagtail/./src/frontend/js/features/Tracking.js","webpack://thermondo-frontend-wagtail/./src/frontend/js/features/RecruitingChannel.js","webpack://thermondo-frontend-wagtail/./src/frontend/js/features/UsercentricsConfig.js","webpack://thermondo-frontend-wagtail/./node_modules/handorgel/lib/js/esm/handorgel.js","webpack://thermondo-frontend-wagtail/./src/frontend/js/features/Accordion.js","webpack://thermondo-frontend-wagtail/./node_modules/resize-observer-polyfill/dist/ResizeObserver.es.js","webpack://thermondo-frontend-wagtail/./src/frontend/js/features/NotificationBanner.js","webpack://thermondo-frontend-wagtail/./src/frontend/js/features/Modal.js","webpack://thermondo-frontend-wagtail/./node_modules/@popperjs/core/lib/dom-utils/getWindow.js","webpack://thermondo-frontend-wagtail/./node_modules/@popperjs/core/lib/dom-utils/instanceOf.js","webpack://thermondo-frontend-wagtail/./node_modules/@popperjs/core/lib/utils/math.js","webpack://thermondo-frontend-wagtail/./node_modules/@popperjs/core/lib/utils/userAgent.js","webpack://thermondo-frontend-wagtail/./node_modules/@popperjs/core/lib/dom-utils/getBoundingClientRect.js","webpack://thermondo-frontend-wagtail/./node_modules/@popperjs/core/lib/dom-utils/isLayoutViewport.js","webpack://thermondo-frontend-wagtail/./node_modules/@popperjs/core/lib/dom-utils/getWindowScroll.js","webpack://thermondo-frontend-wagtail/./node_modules/@popperjs/core/lib/dom-utils/getNodeName.js","webpack://thermondo-frontend-wagtail/./node_modules/@popperjs/core/lib/dom-utils/getDocumentElement.js","webpack://thermondo-frontend-wagtail/./node_modules/@popperjs/core/lib/dom-utils/getComputedStyle.js","webpack://thermondo-frontend-wagtail/./node_modules/@popperjs/core/lib/dom-utils/isScrollParent.js","webpack://thermondo-frontend-wagtail/./node_modules/@popperjs/core/lib/dom-utils/getCompositeRect.js","webpack://thermondo-frontend-wagtail/./node_modules/@popperjs/core/lib/dom-utils/getNodeScroll.js","webpack://thermondo-frontend-wagtail/./node_modules/@popperjs/core/lib/dom-utils/getHTMLElementScroll.js","webpack://thermondo-frontend-wagtail/./node_modules/@popperjs/core/lib/dom-utils/getWindowScrollBarX.js","webpack://thermondo-frontend-wagtail/./node_modules/@popperjs/core/lib/dom-utils/getLayoutRect.js","webpack://thermondo-frontend-wagtail/./node_modules/@popperjs/core/lib/dom-utils/getParentNode.js","webpack://thermondo-frontend-wagtail/./node_modules/@popperjs/core/lib/dom-utils/getScrollParent.js","webpack://thermondo-frontend-wagtail/./node_modules/@popperjs/core/lib/dom-utils/listScrollParents.js","webpack://thermondo-frontend-wagtail/./node_modules/@popperjs/core/lib/dom-utils/isTableElement.js","webpack://thermondo-frontend-wagtail/./node_modules/@popperjs/core/lib/dom-utils/getOffsetParent.js","webpack://thermondo-frontend-wagtail/./node_modules/@popperjs/core/lib/enums.js","webpack://thermondo-frontend-wagtail/./node_modules/@popperjs/core/lib/utils/orderModifiers.js","webpack://thermondo-frontend-wagtail/./node_modules/@popperjs/core/lib/createPopper.js","webpack://thermondo-frontend-wagtail/./node_modules/@popperjs/core/lib/utils/debounce.js","webpack://thermondo-frontend-wagtail/./node_modules/@popperjs/core/lib/utils/mergeByName.js","webpack://thermondo-frontend-wagtail/./node_modules/@popperjs/core/lib/modifiers/eventListeners.js","webpack://thermondo-frontend-wagtail/./node_modules/@popperjs/core/lib/utils/getBasePlacement.js","webpack://thermondo-frontend-wagtail/./node_modules/@popperjs/core/lib/utils/getVariation.js","webpack://thermondo-frontend-wagtail/./node_modules/@popperjs/core/lib/utils/getMainAxisFromPlacement.js","webpack://thermondo-frontend-wagtail/./node_modules/@popperjs/core/lib/modifiers/computeStyles.js","webpack://thermondo-frontend-wagtail/./node_modules/@popperjs/core/lib/popper-lite.js","webpack://thermondo-frontend-wagtail/./node_modules/@popperjs/core/lib/modifiers/popperOffsets.js","webpack://thermondo-frontend-wagtail/./node_modules/@popperjs/core/lib/utils/computeOffsets.js","webpack://thermondo-frontend-wagtail/./node_modules/@popperjs/core/lib/modifiers/applyStyles.js","webpack://thermondo-frontend-wagtail/./node_modules/@popperjs/core/lib/modifiers/arrow.js","webpack://thermondo-frontend-wagtail/./node_modules/@popperjs/core/lib/utils/mergePaddingObject.js","webpack://thermondo-frontend-wagtail/./node_modules/@popperjs/core/lib/utils/expandToHashMap.js","webpack://thermondo-frontend-wagtail/./node_modules/@popperjs/core/lib/utils/getFreshSideObject.js","webpack://thermondo-frontend-wagtail/./node_modules/@popperjs/core/lib/utils/within.js","webpack://thermondo-frontend-wagtail/./node_modules/@popperjs/core/lib/dom-utils/contains.js","webpack://thermondo-frontend-wagtail/./node_modules/@popperjs/core/lib/modifiers/offset.js","webpack://thermondo-frontend-wagtail/./src/frontend/js/utils/mediaQueries.js","webpack://thermondo-frontend-wagtail/./src/frontend/js/features/Popover.js","webpack://thermondo-frontend-wagtail/./src/frontend/js/features/CopyToClipboard.js","webpack://thermondo-frontend-wagtail/./src/frontend/js/features/AntiScam.js","webpack://thermondo-frontend-wagtail/./src/frontend/js/features/MonitorCssAvailability.js","webpack://thermondo-frontend-wagtail/./node_modules/swiper/shared/ssr-window.esm.mjs","webpack://thermondo-frontend-wagtail/./node_modules/swiper/shared/utils.mjs","webpack://thermondo-frontend-wagtail/./node_modules/swiper/shared/swiper-core.mjs","webpack://thermondo-frontend-wagtail/./node_modules/swiper/modules/navigation.mjs","webpack://thermondo-frontend-wagtail/./node_modules/swiper/shared/create-element-if-not-defined.mjs","webpack://thermondo-frontend-wagtail/./node_modules/swiper/modules/autoplay.mjs","webpack://thermondo-frontend-wagtail/./src/frontend/js/features/Carousel.js","webpack://thermondo-frontend-wagtail/./src/frontend/js/features/Tabs.js","webpack://thermondo-frontend-wagtail/./node_modules/axios/index.js","webpack://thermondo-frontend-wagtail/./src/frontend/js/features/IndicationPriceCalculator.js","webpack://thermondo-frontend-wagtail/./src/frontend/js/utils/abTestSession.js","webpack://thermondo-frontend-wagtail/./src/frontend/js/website.js","webpack://thermondo-frontend-wagtail/./node_modules/@sentry/browser/build/npm/esm/prod/sdk.js","webpack://thermondo-frontend-wagtail/./node_modules/@sentry/browser/build/npm/esm/prod/utils/detectBrowserExtension.js","webpack://thermondo-frontend-wagtail/./node_modules/@sentry/core/build/esm/integrations/conversationId.js","webpack://thermondo-frontend-wagtail/./node_modules/@sentry/browser/build/npm/esm/prod/integrations/httpcontext.js","webpack://thermondo-frontend-wagtail/./node_modules/@sentry/core/build/esm/sdk.js","webpack://thermondo-frontend-wagtail/./node_modules/@sentry/browser/build/npm/esm/prod/tracing/backgroundtab.js","webpack://thermondo-frontend-wagtail/./node_modules/@sentry/core/build/esm/integrations/moduleMetadata.js","webpack://thermondo-frontend-wagtail/./src/frontend/js/features/AppLoader.js","webpack://thermondo-frontend-wagtail/./src/frontend/js/features/DailyLeads.js","webpack://thermondo-frontend-wagtail/./src/frontend/js/features/JobForm.js","webpack://thermondo-frontend-wagtail/./src/frontend/js/features/ListFilter.js","webpack://thermondo-frontend-wagtail/./src/frontend/js/templates/listFilter.js","webpack://thermondo-frontend-wagtail/./src/frontend/js/features/VideoContent.js","webpack://thermondo-frontend-wagtail/./src/frontend/js/features/ZipCodeForm.js","webpack://thermondo-frontend-wagtail/./src/frontend/js/features/PressMailingForm.js","webpack://thermondo-frontend-wagtail/./src/frontend/js/features/FlexRateCalculator.js","webpack://thermondo-frontend-wagtail/./src/frontend/js/features/CustomerReferralEmail.js","webpack://thermondo-frontend-wagtail/./src/frontend/js/features/EngagementOnPageLeadForm.js","webpack://thermondo-frontend-wagtail/./src/frontend/js/features/IframeAutoHeight.js"],"sourceRoot":"","sourcesContent":["/*!\n * clipboard.js v2.0.11\n * https://clipboardjs.com/\n *\n * Licensed MIT © Zeno Rocha\n */\n(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"ClipboardJS\"] = factory();\n\telse\n\t\troot[\"ClipboardJS\"] = factory();\n})(this, function() {\nreturn /******/ (function() { // webpackBootstrap\n/******/ \tvar __webpack_modules__ = ({\n\n/***/ 686:\n/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n\n// EXPORTS\n__webpack_require__.d(__webpack_exports__, {\n  \"default\": function() { return /* binding */ clipboard; }\n});\n\n// EXTERNAL MODULE: ./node_modules/tiny-emitter/index.js\nvar tiny_emitter = __webpack_require__(279);\nvar tiny_emitter_default = /*#__PURE__*/__webpack_require__.n(tiny_emitter);\n// EXTERNAL MODULE: ./node_modules/good-listener/src/listen.js\nvar listen = __webpack_require__(370);\nvar listen_default = /*#__PURE__*/__webpack_require__.n(listen);\n// EXTERNAL MODULE: ./node_modules/select/src/select.js\nvar src_select = __webpack_require__(817);\nvar select_default = /*#__PURE__*/__webpack_require__.n(src_select);\n;// CONCATENATED MODULE: ./src/common/command.js\n/**\n * Executes a given operation type.\n * @param {String} type\n * @return {Boolean}\n */\nfunction command(type) {\n  try {\n    return document.execCommand(type);\n  } catch (err) {\n    return false;\n  }\n}\n;// CONCATENATED MODULE: ./src/actions/cut.js\n\n\n/**\n * Cut action wrapper.\n * @param {String|HTMLElement} target\n * @return {String}\n */\n\nvar ClipboardActionCut = function ClipboardActionCut(target) {\n  var selectedText = select_default()(target);\n  command('cut');\n  return selectedText;\n};\n\n/* harmony default export */ var actions_cut = (ClipboardActionCut);\n;// CONCATENATED MODULE: ./src/common/create-fake-element.js\n/**\n * Creates a fake textarea element with a value.\n * @param {String} value\n * @return {HTMLElement}\n */\nfunction createFakeElement(value) {\n  var isRTL = document.documentElement.getAttribute('dir') === 'rtl';\n  var fakeElement = document.createElement('textarea'); // Prevent zooming on iOS\n\n  fakeElement.style.fontSize = '12pt'; // Reset box model\n\n  fakeElement.style.border = '0';\n  fakeElement.style.padding = '0';\n  fakeElement.style.margin = '0'; // Move element out of screen horizontally\n\n  fakeElement.style.position = 'absolute';\n  fakeElement.style[isRTL ? 'right' : 'left'] = '-9999px'; // Move element to the same position vertically\n\n  var yPosition = window.pageYOffset || document.documentElement.scrollTop;\n  fakeElement.style.top = \"\".concat(yPosition, \"px\");\n  fakeElement.setAttribute('readonly', '');\n  fakeElement.value = value;\n  return fakeElement;\n}\n;// CONCATENATED MODULE: ./src/actions/copy.js\n\n\n\n/**\n * Create fake copy action wrapper using a fake element.\n * @param {String} target\n * @param {Object} options\n * @return {String}\n */\n\nvar fakeCopyAction = function fakeCopyAction(value, options) {\n  var fakeElement = createFakeElement(value);\n  options.container.appendChild(fakeElement);\n  var selectedText = select_default()(fakeElement);\n  command('copy');\n  fakeElement.remove();\n  return selectedText;\n};\n/**\n * Copy action wrapper.\n * @param {String|HTMLElement} target\n * @param {Object} options\n * @return {String}\n */\n\n\nvar ClipboardActionCopy = function ClipboardActionCopy(target) {\n  var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {\n    container: document.body\n  };\n  var selectedText = '';\n\n  if (typeof target === 'string') {\n    selectedText = fakeCopyAction(target, options);\n  } else if (target instanceof HTMLInputElement && !['text', 'search', 'url', 'tel', 'password'].includes(target === null || target === void 0 ? void 0 : target.type)) {\n    // If input type doesn't support `setSelectionRange`. Simulate it. https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement/setSelectionRange\n    selectedText = fakeCopyAction(target.value, options);\n  } else {\n    selectedText = select_default()(target);\n    command('copy');\n  }\n\n  return selectedText;\n};\n\n/* harmony default export */ var actions_copy = (ClipboardActionCopy);\n;// CONCATENATED MODULE: ./src/actions/default.js\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\n\n\n/**\n * Inner function which performs selection from either `text` or `target`\n * properties and then executes copy or cut operations.\n * @param {Object} options\n */\n\nvar ClipboardActionDefault = function ClipboardActionDefault() {\n  var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n  // Defines base properties passed from constructor.\n  var _options$action = options.action,\n      action = _options$action === void 0 ? 'copy' : _options$action,\n      container = options.container,\n      target = options.target,\n      text = options.text; // Sets the `action` to be performed which can be either 'copy' or 'cut'.\n\n  if (action !== 'copy' && action !== 'cut') {\n    throw new Error('Invalid \"action\" value, use either \"copy\" or \"cut\"');\n  } // Sets the `target` property using an element that will be have its content copied.\n\n\n  if (target !== undefined) {\n    if (target && _typeof(target) === 'object' && target.nodeType === 1) {\n      if (action === 'copy' && target.hasAttribute('disabled')) {\n        throw new Error('Invalid \"target\" attribute. Please use \"readonly\" instead of \"disabled\" attribute');\n      }\n\n      if (action === 'cut' && (target.hasAttribute('readonly') || target.hasAttribute('disabled'))) {\n        throw new Error('Invalid \"target\" attribute. You can\\'t cut text from elements with \"readonly\" or \"disabled\" attributes');\n      }\n    } else {\n      throw new Error('Invalid \"target\" value, use a valid Element');\n    }\n  } // Define selection strategy based on `text` property.\n\n\n  if (text) {\n    return actions_copy(text, {\n      container: container\n    });\n  } // Defines which selection strategy based on `target` property.\n\n\n  if (target) {\n    return action === 'cut' ? actions_cut(target) : actions_copy(target, {\n      container: container\n    });\n  }\n};\n\n/* harmony default export */ var actions_default = (ClipboardActionDefault);\n;// CONCATENATED MODULE: ./src/clipboard.js\nfunction clipboard_typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { clipboard_typeof = function _typeof(obj) { return typeof obj; }; } else { clipboard_typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return clipboard_typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (clipboard_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\n\n\n\n\n\n/**\n * Helper function to retrieve attribute value.\n * @param {String} suffix\n * @param {Element} element\n */\n\nfunction getAttributeValue(suffix, element) {\n  var attribute = \"data-clipboard-\".concat(suffix);\n\n  if (!element.hasAttribute(attribute)) {\n    return;\n  }\n\n  return element.getAttribute(attribute);\n}\n/**\n * Base class which takes one or more elements, adds event listeners to them,\n * and instantiates a new `ClipboardAction` on each click.\n */\n\n\nvar Clipboard = /*#__PURE__*/function (_Emitter) {\n  _inherits(Clipboard, _Emitter);\n\n  var _super = _createSuper(Clipboard);\n\n  /**\n   * @param {String|HTMLElement|HTMLCollection|NodeList} trigger\n   * @param {Object} options\n   */\n  function Clipboard(trigger, options) {\n    var _this;\n\n    _classCallCheck(this, Clipboard);\n\n    _this = _super.call(this);\n\n    _this.resolveOptions(options);\n\n    _this.listenClick(trigger);\n\n    return _this;\n  }\n  /**\n   * Defines if attributes would be resolved using internal setter functions\n   * or custom functions that were passed in the constructor.\n   * @param {Object} options\n   */\n\n\n  _createClass(Clipboard, [{\n    key: \"resolveOptions\",\n    value: function resolveOptions() {\n      var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n      this.action = typeof options.action === 'function' ? options.action : this.defaultAction;\n      this.target = typeof options.target === 'function' ? options.target : this.defaultTarget;\n      this.text = typeof options.text === 'function' ? options.text : this.defaultText;\n      this.container = clipboard_typeof(options.container) === 'object' ? options.container : document.body;\n    }\n    /**\n     * Adds a click event listener to the passed trigger.\n     * @param {String|HTMLElement|HTMLCollection|NodeList} trigger\n     */\n\n  }, {\n    key: \"listenClick\",\n    value: function listenClick(trigger) {\n      var _this2 = this;\n\n      this.listener = listen_default()(trigger, 'click', function (e) {\n        return _this2.onClick(e);\n      });\n    }\n    /**\n     * Defines a new `ClipboardAction` on each click event.\n     * @param {Event} e\n     */\n\n  }, {\n    key: \"onClick\",\n    value: function onClick(e) {\n      var trigger = e.delegateTarget || e.currentTarget;\n      var action = this.action(trigger) || 'copy';\n      var text = actions_default({\n        action: action,\n        container: this.container,\n        target: this.target(trigger),\n        text: this.text(trigger)\n      }); // Fires an event based on the copy operation result.\n\n      this.emit(text ? 'success' : 'error', {\n        action: action,\n        text: text,\n        trigger: trigger,\n        clearSelection: function clearSelection() {\n          if (trigger) {\n            trigger.focus();\n          }\n\n          window.getSelection().removeAllRanges();\n        }\n      });\n    }\n    /**\n     * Default `action` lookup function.\n     * @param {Element} trigger\n     */\n\n  }, {\n    key: \"defaultAction\",\n    value: function defaultAction(trigger) {\n      return getAttributeValue('action', trigger);\n    }\n    /**\n     * Default `target` lookup function.\n     * @param {Element} trigger\n     */\n\n  }, {\n    key: \"defaultTarget\",\n    value: function defaultTarget(trigger) {\n      var selector = getAttributeValue('target', trigger);\n\n      if (selector) {\n        return document.querySelector(selector);\n      }\n    }\n    /**\n     * Allow fire programmatically a copy action\n     * @param {String|HTMLElement} target\n     * @param {Object} options\n     * @returns Text copied.\n     */\n\n  }, {\n    key: \"defaultText\",\n\n    /**\n     * Default `text` lookup function.\n     * @param {Element} trigger\n     */\n    value: function defaultText(trigger) {\n      return getAttributeValue('text', trigger);\n    }\n    /**\n     * Destroy lifecycle.\n     */\n\n  }, {\n    key: \"destroy\",\n    value: function destroy() {\n      this.listener.destroy();\n    }\n  }], [{\n    key: \"copy\",\n    value: function copy(target) {\n      var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {\n        container: document.body\n      };\n      return actions_copy(target, options);\n    }\n    /**\n     * Allow fire programmatically a cut action\n     * @param {String|HTMLElement} target\n     * @returns Text cutted.\n     */\n\n  }, {\n    key: \"cut\",\n    value: function cut(target) {\n      return actions_cut(target);\n    }\n    /**\n     * Returns the support of the given action, or all actions if no action is\n     * given.\n     * @param {String} [action]\n     */\n\n  }, {\n    key: \"isSupported\",\n    value: function isSupported() {\n      var action = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : ['copy', 'cut'];\n      var actions = typeof action === 'string' ? [action] : action;\n      var support = !!document.queryCommandSupported;\n      actions.forEach(function (action) {\n        support = support && !!document.queryCommandSupported(action);\n      });\n      return support;\n    }\n  }]);\n\n  return Clipboard;\n}((tiny_emitter_default()));\n\n/* harmony default export */ var clipboard = (Clipboard);\n\n/***/ }),\n\n/***/ 828:\n/***/ (function(module) {\n\nvar DOCUMENT_NODE_TYPE = 9;\n\n/**\n * A polyfill for Element.matches()\n */\nif (typeof Element !== 'undefined' && !Element.prototype.matches) {\n    var proto = Element.prototype;\n\n    proto.matches = proto.matchesSelector ||\n                    proto.mozMatchesSelector ||\n                    proto.msMatchesSelector ||\n                    proto.oMatchesSelector ||\n                    proto.webkitMatchesSelector;\n}\n\n/**\n * Finds the closest parent that matches a selector.\n *\n * @param {Element} element\n * @param {String} selector\n * @return {Function}\n */\nfunction closest (element, selector) {\n    while (element && element.nodeType !== DOCUMENT_NODE_TYPE) {\n        if (typeof element.matches === 'function' &&\n            element.matches(selector)) {\n          return element;\n        }\n        element = element.parentNode;\n    }\n}\n\nmodule.exports = closest;\n\n\n/***/ }),\n\n/***/ 438:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar closest = __webpack_require__(828);\n\n/**\n * Delegates event to a selector.\n *\n * @param {Element} element\n * @param {String} selector\n * @param {String} type\n * @param {Function} callback\n * @param {Boolean} useCapture\n * @return {Object}\n */\nfunction _delegate(element, selector, type, callback, useCapture) {\n    var listenerFn = listener.apply(this, arguments);\n\n    element.addEventListener(type, listenerFn, useCapture);\n\n    return {\n        destroy: function() {\n            element.removeEventListener(type, listenerFn, useCapture);\n        }\n    }\n}\n\n/**\n * Delegates event to a selector.\n *\n * @param {Element|String|Array} [elements]\n * @param {String} selector\n * @param {String} type\n * @param {Function} callback\n * @param {Boolean} useCapture\n * @return {Object}\n */\nfunction delegate(elements, selector, type, callback, useCapture) {\n    // Handle the regular Element usage\n    if (typeof elements.addEventListener === 'function') {\n        return _delegate.apply(null, arguments);\n    }\n\n    // Handle Element-less usage, it defaults to global delegation\n    if (typeof type === 'function') {\n        // Use `document` as the first parameter, then apply arguments\n        // This is a short way to .unshift `arguments` without running into deoptimizations\n        return _delegate.bind(null, document).apply(null, arguments);\n    }\n\n    // Handle Selector-based usage\n    if (typeof elements === 'string') {\n        elements = document.querySelectorAll(elements);\n    }\n\n    // Handle Array-like based usage\n    return Array.prototype.map.call(elements, function (element) {\n        return _delegate(element, selector, type, callback, useCapture);\n    });\n}\n\n/**\n * Finds closest match and invokes callback.\n *\n * @param {Element} element\n * @param {String} selector\n * @param {String} type\n * @param {Function} callback\n * @return {Function}\n */\nfunction listener(element, selector, type, callback) {\n    return function(e) {\n        e.delegateTarget = closest(e.target, selector);\n\n        if (e.delegateTarget) {\n            callback.call(element, e);\n        }\n    }\n}\n\nmodule.exports = delegate;\n\n\n/***/ }),\n\n/***/ 879:\n/***/ (function(__unused_webpack_module, exports) {\n\n/**\n * Check if argument is a HTML element.\n *\n * @param {Object} value\n * @return {Boolean}\n */\nexports.node = function(value) {\n    return value !== undefined\n        && value instanceof HTMLElement\n        && value.nodeType === 1;\n};\n\n/**\n * Check if argument is a list of HTML elements.\n *\n * @param {Object} value\n * @return {Boolean}\n */\nexports.nodeList = function(value) {\n    var type = Object.prototype.toString.call(value);\n\n    return value !== undefined\n        && (type === '[object NodeList]' || type === '[object HTMLCollection]')\n        && ('length' in value)\n        && (value.length === 0 || exports.node(value[0]));\n};\n\n/**\n * Check if argument is a string.\n *\n * @param {Object} value\n * @return {Boolean}\n */\nexports.string = function(value) {\n    return typeof value === 'string'\n        || value instanceof String;\n};\n\n/**\n * Check if argument is a function.\n *\n * @param {Object} value\n * @return {Boolean}\n */\nexports.fn = function(value) {\n    var type = Object.prototype.toString.call(value);\n\n    return type === '[object Function]';\n};\n\n\n/***/ }),\n\n/***/ 370:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar is = __webpack_require__(879);\nvar delegate = __webpack_require__(438);\n\n/**\n * Validates all params and calls the right\n * listener function based on its target type.\n *\n * @param {String|HTMLElement|HTMLCollection|NodeList} target\n * @param {String} type\n * @param {Function} callback\n * @return {Object}\n */\nfunction listen(target, type, callback) {\n    if (!target && !type && !callback) {\n        throw new Error('Missing required arguments');\n    }\n\n    if (!is.string(type)) {\n        throw new TypeError('Second argument must be a String');\n    }\n\n    if (!is.fn(callback)) {\n        throw new TypeError('Third argument must be a Function');\n    }\n\n    if (is.node(target)) {\n        return listenNode(target, type, callback);\n    }\n    else if (is.nodeList(target)) {\n        return listenNodeList(target, type, callback);\n    }\n    else if (is.string(target)) {\n        return listenSelector(target, type, callback);\n    }\n    else {\n        throw new TypeError('First argument must be a String, HTMLElement, HTMLCollection, or NodeList');\n    }\n}\n\n/**\n * Adds an event listener to a HTML element\n * and returns a remove listener function.\n *\n * @param {HTMLElement} node\n * @param {String} type\n * @param {Function} callback\n * @return {Object}\n */\nfunction listenNode(node, type, callback) {\n    node.addEventListener(type, callback);\n\n    return {\n        destroy: function() {\n            node.removeEventListener(type, callback);\n        }\n    }\n}\n\n/**\n * Add an event listener to a list of HTML elements\n * and returns a remove listener function.\n *\n * @param {NodeList|HTMLCollection} nodeList\n * @param {String} type\n * @param {Function} callback\n * @return {Object}\n */\nfunction listenNodeList(nodeList, type, callback) {\n    Array.prototype.forEach.call(nodeList, function(node) {\n        node.addEventListener(type, callback);\n    });\n\n    return {\n        destroy: function() {\n            Array.prototype.forEach.call(nodeList, function(node) {\n                node.removeEventListener(type, callback);\n            });\n        }\n    }\n}\n\n/**\n * Add an event listener to a selector\n * and returns a remove listener function.\n *\n * @param {String} selector\n * @param {String} type\n * @param {Function} callback\n * @return {Object}\n */\nfunction listenSelector(selector, type, callback) {\n    return delegate(document.body, selector, type, callback);\n}\n\nmodule.exports = listen;\n\n\n/***/ }),\n\n/***/ 817:\n/***/ (function(module) {\n\nfunction select(element) {\n    var selectedText;\n\n    if (element.nodeName === 'SELECT') {\n        element.focus();\n\n        selectedText = element.value;\n    }\n    else if (element.nodeName === 'INPUT' || element.nodeName === 'TEXTAREA') {\n        var isReadOnly = element.hasAttribute('readonly');\n\n        if (!isReadOnly) {\n            element.setAttribute('readonly', '');\n        }\n\n        element.select();\n        element.setSelectionRange(0, element.value.length);\n\n        if (!isReadOnly) {\n            element.removeAttribute('readonly');\n        }\n\n        selectedText = element.value;\n    }\n    else {\n        if (element.hasAttribute('contenteditable')) {\n            element.focus();\n        }\n\n        var selection = window.getSelection();\n        var range = document.createRange();\n\n        range.selectNodeContents(element);\n        selection.removeAllRanges();\n        selection.addRange(range);\n\n        selectedText = selection.toString();\n    }\n\n    return selectedText;\n}\n\nmodule.exports = select;\n\n\n/***/ }),\n\n/***/ 279:\n/***/ (function(module) {\n\nfunction E () {\n  // Keep this empty so it's easier to inherit from\n  // (via https://github.com/lipsmack from https://github.com/scottcorgan/tiny-emitter/issues/3)\n}\n\nE.prototype = {\n  on: function (name, callback, ctx) {\n    var e = this.e || (this.e = {});\n\n    (e[name] || (e[name] = [])).push({\n      fn: callback,\n      ctx: ctx\n    });\n\n    return this;\n  },\n\n  once: function (name, callback, ctx) {\n    var self = this;\n    function listener () {\n      self.off(name, listener);\n      callback.apply(ctx, arguments);\n    };\n\n    listener._ = callback\n    return this.on(name, listener, ctx);\n  },\n\n  emit: function (name) {\n    var data = [].slice.call(arguments, 1);\n    var evtArr = ((this.e || (this.e = {}))[name] || []).slice();\n    var i = 0;\n    var len = evtArr.length;\n\n    for (i; i < len; i++) {\n      evtArr[i].fn.apply(evtArr[i].ctx, data);\n    }\n\n    return this;\n  },\n\n  off: function (name, callback) {\n    var e = this.e || (this.e = {});\n    var evts = e[name];\n    var liveEvents = [];\n\n    if (evts && callback) {\n      for (var i = 0, len = evts.length; i < len; i++) {\n        if (evts[i].fn !== callback && evts[i].fn._ !== callback)\n          liveEvents.push(evts[i]);\n      }\n    }\n\n    // Remove event from queue to prevent memory leak\n    // Suggested by https://github.com/lazd\n    // Ref: https://github.com/scottcorgan/tiny-emitter/commit/c6ebfaa9bc973b33d110a84a307742b7cf94c953#commitcomment-5024910\n\n    (liveEvents.length)\n      ? e[name] = liveEvents\n      : delete e[name];\n\n    return this;\n  }\n};\n\nmodule.exports = E;\nmodule.exports.TinyEmitter = E;\n\n\n/***/ })\n\n/******/ \t});\n/************************************************************************/\n/******/ \t// The module cache\n/******/ \tvar __webpack_module_cache__ = {};\n/******/ \t\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(__webpack_module_cache__[moduleId]) {\n/******/ \t\t\treturn __webpack_module_cache__[moduleId].exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = __webpack_module_cache__[moduleId] = {\n/******/ \t\t\t// no module.id needed\n/******/ \t\t\t// no module.loaded needed\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/ \t\n/******/ \t\t// Execute the module function\n/******/ \t\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n/******/ \t\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/ \t\n/************************************************************************/\n/******/ \t/* webpack/runtime/compat get default export */\n/******/ \t!function() {\n/******/ \t\t// getDefaultExport function for compatibility with non-harmony modules\n/******/ \t\t__webpack_require__.n = function(module) {\n/******/ \t\t\tvar getter = module && module.__esModule ?\n/******/ \t\t\t\tfunction() { return module['default']; } :\n/******/ \t\t\t\tfunction() { return module; };\n/******/ \t\t\t__webpack_require__.d(getter, { a: getter });\n/******/ \t\t\treturn getter;\n/******/ \t\t};\n/******/ \t}();\n/******/ \t\n/******/ \t/* webpack/runtime/define property getters */\n/******/ \t!function() {\n/******/ \t\t// define getter functions for harmony exports\n/******/ \t\t__webpack_require__.d = function(exports, definition) {\n/******/ \t\t\tfor(var key in definition) {\n/******/ \t\t\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n/******/ \t\t\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n/******/ \t\t\t\t}\n/******/ \t\t\t}\n/******/ \t\t};\n/******/ \t}();\n/******/ \t\n/******/ \t/* webpack/runtime/hasOwnProperty shorthand */\n/******/ \t!function() {\n/******/ \t\t__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }\n/******/ \t}();\n/******/ \t\n/************************************************************************/\n/******/ \t// module exports must be returned from runtime so entry inlining is disabled\n/******/ \t// startup\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(686);\n/******/ })()\n.default;\n});","(function(factory){if(typeof define===\"function\"&&define.amd){define(factory)}else if(typeof module!==\"undefined\"&&module.exports){module.exports=factory()}else{window.enterView=factory.call(this)}})((()=>{const lib=({selector:selector,enter:enter=(()=>{}),exit:exit=(()=>{}),progress:progress=(()=>{}),offset:offset=0,once:once=false})=>{let raf=null;let ticking=false;let elements=[];let height=0;function setupRaf(){raf=window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.msRequestAnimationFrame||function(callback){return setTimeout(callback,1e3/60)}}function getOffsetHeight(){if(offset&&typeof offset===\"number\"){const fraction=Math.min(Math.max(0,offset),1);return height-fraction*height}return height}function updateHeight(){const cH=document.documentElement.clientHeight;const wH=window.innerHeight||0;height=Math.max(cH,wH)}function updateScroll(){ticking=false;const targetFromTop=getOffsetHeight();elements=elements.filter((el=>{const{top:top,bottom:bottom,height:height}=el.getBoundingClientRect();const entered=top<targetFromTop;const exited=bottom<targetFromTop;if(entered&&!el.__ev_entered){enter(el);el.__ev_progress=0;progress(el,el.__ev_progress);if(once)return false}else if(!entered&&el.__ev_entered){el.__ev_progress=0;progress(el,el.__ev_progress);exit(el)}if(entered&&!exited){const delta=(targetFromTop-top)/height;el.__ev_progress=Math.min(1,Math.max(0,delta));progress(el,el.__ev_progress)}if(entered&&exited&&el.__ev_progress!==1){el.__ev_progress=1;progress(el,el.__ev_progress)}el.__ev_entered=entered;return true}));if(!elements.length){window.removeEventListener(\"scroll\",onScroll,true);window.removeEventListener(\"resize\",onResize,true);window.removeEventListener(\"load\",onLoad,true)}}function onScroll(){if(!ticking){ticking=true;raf(updateScroll)}}function onResize(){updateHeight();updateScroll()}function onLoad(){updateHeight();updateScroll()}function selectionToArray(selection){const len=selection.length;const result=[];for(let i=0;i<len;i+=1){result.push(selection[i])}return result}function selectAll(selector,parent=document){if(typeof selector===\"string\"){return selectionToArray(parent.querySelectorAll(selector))}else if(selector instanceof NodeList){return selectionToArray(selector)}else if(selector instanceof Array){return selector}}function setupElements(){elements=selectAll(selector)}function setupEvents(){window.addEventListener(\"resize\",onResize,true);window.addEventListener(\"scroll\",onScroll,true);window.addEventListener(\"load\",onLoad,true);onResize()}function init(){if(!selector){console.error(\"must pass a selector\");return false}setupElements();if(!elements||!elements.length){console.error(\"no selector elements found\");return false}setupRaf();setupEvents();updateScroll()}init()};return lib}));","/**\n * lodash (Custom Build) <https://lodash.com/>\n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors <https://jquery.org/>\n * Released under MIT license <https://lodash.com/license>\n * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as the `TypeError` message for \"Functions\" methods. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/** Used as references for various `Number` constants. */\nvar NAN = 0 / 0;\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/** Used to match leading and trailing whitespace. */\nvar reTrim = /^\\s+|\\s+$/g;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max,\n    nativeMin = Math.min;\n\n/**\n * Gets the timestamp of the number of milliseconds that have elapsed since\n * the Unix epoch (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Date\n * @returns {number} Returns the timestamp.\n * @example\n *\n * _.defer(function(stamp) {\n *   console.log(_.now() - stamp);\n * }, _.now());\n * // => Logs the number of milliseconds it took for the deferred invocation.\n */\nvar now = function() {\n  return root.Date.now();\n};\n\n/**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed `func` invocations and a `flush` method to immediately invoke them.\n * Provide `options` to indicate whether `func` should be invoked on the\n * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n * with the last arguments provided to the debounced function. Subsequent\n * calls to the debounced function return the result of the last `func`\n * invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the debounced function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=false]\n *  Specify invoking on the leading edge of the timeout.\n * @param {number} [options.maxWait]\n *  The maximum time `func` is allowed to be delayed before it's invoked.\n * @param {boolean} [options.trailing=true]\n *  Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // Avoid costly calculations while the window size is in flux.\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n * jQuery(element).on('click', _.debounce(sendMail, 300, {\n *   'leading': true,\n *   'trailing': false\n * }));\n *\n * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', debounced);\n *\n * // Cancel the trailing debounced invocation.\n * jQuery(window).on('popstate', debounced.cancel);\n */\nfunction debounce(func, wait, options) {\n  var lastArgs,\n      lastThis,\n      maxWait,\n      result,\n      timerId,\n      lastCallTime,\n      lastInvokeTime = 0,\n      leading = false,\n      maxing = false,\n      trailing = true;\n\n  if (typeof func != 'function') {\n    throw new TypeError(FUNC_ERROR_TEXT);\n  }\n  wait = toNumber(wait) || 0;\n  if (isObject(options)) {\n    leading = !!options.leading;\n    maxing = 'maxWait' in options;\n    maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n    trailing = 'trailing' in options ? !!options.trailing : trailing;\n  }\n\n  function invokeFunc(time) {\n    var args = lastArgs,\n        thisArg = lastThis;\n\n    lastArgs = lastThis = undefined;\n    lastInvokeTime = time;\n    result = func.apply(thisArg, args);\n    return result;\n  }\n\n  function leadingEdge(time) {\n    // Reset any `maxWait` timer.\n    lastInvokeTime = time;\n    // Start the timer for the trailing edge.\n    timerId = setTimeout(timerExpired, wait);\n    // Invoke the leading edge.\n    return leading ? invokeFunc(time) : result;\n  }\n\n  function remainingWait(time) {\n    var timeSinceLastCall = time - lastCallTime,\n        timeSinceLastInvoke = time - lastInvokeTime,\n        result = wait - timeSinceLastCall;\n\n    return maxing ? nativeMin(result, maxWait - timeSinceLastInvoke) : result;\n  }\n\n  function shouldInvoke(time) {\n    var timeSinceLastCall = time - lastCallTime,\n        timeSinceLastInvoke = time - lastInvokeTime;\n\n    // Either this is the first call, activity has stopped and we're at the\n    // trailing edge, the system time has gone backwards and we're treating\n    // it as the trailing edge, or we've hit the `maxWait` limit.\n    return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||\n      (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));\n  }\n\n  function timerExpired() {\n    var time = now();\n    if (shouldInvoke(time)) {\n      return trailingEdge(time);\n    }\n    // Restart the timer.\n    timerId = setTimeout(timerExpired, remainingWait(time));\n  }\n\n  function trailingEdge(time) {\n    timerId = undefined;\n\n    // Only invoke if we have `lastArgs` which means `func` has been\n    // debounced at least once.\n    if (trailing && lastArgs) {\n      return invokeFunc(time);\n    }\n    lastArgs = lastThis = undefined;\n    return result;\n  }\n\n  function cancel() {\n    if (timerId !== undefined) {\n      clearTimeout(timerId);\n    }\n    lastInvokeTime = 0;\n    lastArgs = lastCallTime = lastThis = timerId = undefined;\n  }\n\n  function flush() {\n    return timerId === undefined ? result : trailingEdge(now());\n  }\n\n  function debounced() {\n    var time = now(),\n        isInvoking = shouldInvoke(time);\n\n    lastArgs = arguments;\n    lastThis = this;\n    lastCallTime = time;\n\n    if (isInvoking) {\n      if (timerId === undefined) {\n        return leadingEdge(lastCallTime);\n      }\n      if (maxing) {\n        // Handle invocations in a tight loop.\n        timerId = setTimeout(timerExpired, wait);\n        return invokeFunc(lastCallTime);\n      }\n    }\n    if (timerId === undefined) {\n      timerId = setTimeout(timerExpired, wait);\n    }\n    return result;\n  }\n  debounced.cancel = cancel;\n  debounced.flush = flush;\n  return debounced;\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n  var type = typeof value;\n  return !!value && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n  return !!value && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n  return typeof value == 'symbol' ||\n    (isObjectLike(value) && objectToString.call(value) == symbolTag);\n}\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber(value) {\n  if (typeof value == 'number') {\n    return value;\n  }\n  if (isSymbol(value)) {\n    return NAN;\n  }\n  if (isObject(value)) {\n    var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n    value = isObject(other) ? (other + '') : other;\n  }\n  if (typeof value != 'string') {\n    return value === 0 ? value : +value;\n  }\n  value = value.replace(reTrim, '');\n  var isBinary = reIsBinary.test(value);\n  return (isBinary || reIsOctal.test(value))\n    ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n    : (reIsBadHex.test(value) ? NAN : +value);\n}\n\nmodule.exports = debounce;\n","/*! picturefill - v3.0.2 - 2016-02-12\n * https://scottjehl.github.io/picturefill/\n * Copyright (c) 2016 https://github.com/scottjehl/picturefill/blob/master/Authors.txt; Licensed MIT\n */\n/*! Gecko-Picture - v1.0\n * https://github.com/scottjehl/picturefill/tree/3.0/src/plugins/gecko-picture\n * Firefox's early picture implementation (prior to FF41) is static and does\n * not react to viewport changes. This tiny module fixes this.\n */\n(function(window) {\n\t/*jshint eqnull:true */\n\tvar ua = navigator.userAgent;\n\n\tif ( window.HTMLPictureElement && ((/ecko/).test(ua) && ua.match(/rv\\:(\\d+)/) && RegExp.$1 < 45) ) {\n\t\taddEventListener(\"resize\", (function() {\n\t\t\tvar timer;\n\n\t\t\tvar dummySrc = document.createElement(\"source\");\n\n\t\t\tvar fixRespimg = function(img) {\n\t\t\t\tvar source, sizes;\n\t\t\t\tvar picture = img.parentNode;\n\n\t\t\t\tif (picture.nodeName.toUpperCase() === \"PICTURE\") {\n\t\t\t\t\tsource = dummySrc.cloneNode();\n\n\t\t\t\t\tpicture.insertBefore(source, picture.firstElementChild);\n\t\t\t\t\tsetTimeout(function() {\n\t\t\t\t\t\tpicture.removeChild(source);\n\t\t\t\t\t});\n\t\t\t\t} else if (!img._pfLastSize || img.offsetWidth > img._pfLastSize) {\n\t\t\t\t\timg._pfLastSize = img.offsetWidth;\n\t\t\t\t\tsizes = img.sizes;\n\t\t\t\t\timg.sizes += \",100vw\";\n\t\t\t\t\tsetTimeout(function() {\n\t\t\t\t\t\timg.sizes = sizes;\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t};\n\n\t\t\tvar findPictureImgs = function() {\n\t\t\t\tvar i;\n\t\t\t\tvar imgs = document.querySelectorAll(\"picture > img, img[srcset][sizes]\");\n\t\t\t\tfor (i = 0; i < imgs.length; i++) {\n\t\t\t\t\tfixRespimg(imgs[i]);\n\t\t\t\t}\n\t\t\t};\n\t\t\tvar onResize = function() {\n\t\t\t\tclearTimeout(timer);\n\t\t\t\ttimer = setTimeout(findPictureImgs, 99);\n\t\t\t};\n\t\t\tvar mq = window.matchMedia && matchMedia(\"(orientation: landscape)\");\n\t\t\tvar init = function() {\n\t\t\t\tonResize();\n\n\t\t\t\tif (mq && mq.addListener) {\n\t\t\t\t\tmq.addListener(onResize);\n\t\t\t\t}\n\t\t\t};\n\n\t\t\tdummySrc.srcset = \"data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==\";\n\n\t\t\tif (/^[c|i]|d$/.test(document.readyState || \"\")) {\n\t\t\t\tinit();\n\t\t\t} else {\n\t\t\t\tdocument.addEventListener(\"DOMContentLoaded\", init);\n\t\t\t}\n\n\t\t\treturn onResize;\n\t\t})());\n\t}\n})(window);\n\n/*! Picturefill - v3.0.2\n * http://scottjehl.github.io/picturefill\n * Copyright (c) 2015 https://github.com/scottjehl/picturefill/blob/master/Authors.txt;\n *  License: MIT\n */\n\n(function( window, document, undefined ) {\n\t// Enable strict mode\n\t\"use strict\";\n\n\t// HTML shim|v it for old IE (IE9 will still need the HTML video tag workaround)\n\tdocument.createElement( \"picture\" );\n\n\tvar warn, eminpx, alwaysCheckWDescriptor, evalId;\n\t// local object for method references and testing exposure\n\tvar pf = {};\n\tvar isSupportTestReady = false;\n\tvar noop = function() {};\n\tvar image = document.createElement( \"img\" );\n\tvar getImgAttr = image.getAttribute;\n\tvar setImgAttr = image.setAttribute;\n\tvar removeImgAttr = image.removeAttribute;\n\tvar docElem = document.documentElement;\n\tvar types = {};\n\tvar cfg = {\n\t\t//resource selection:\n\t\talgorithm: \"\"\n\t};\n\tvar srcAttr = \"data-pfsrc\";\n\tvar srcsetAttr = srcAttr + \"set\";\n\t// ua sniffing is done for undetectable img loading features,\n\t// to do some non crucial perf optimizations\n\tvar ua = navigator.userAgent;\n\tvar supportAbort = (/rident/).test(ua) || ((/ecko/).test(ua) && ua.match(/rv\\:(\\d+)/) && RegExp.$1 > 35 );\n\tvar curSrcProp = \"currentSrc\";\n\tvar regWDesc = /\\s+\\+?\\d+(e\\d+)?w/;\n\tvar regSize = /(\\([^)]+\\))?\\s*(.+)/;\n\tvar setOptions = window.picturefillCFG;\n\t/**\n\t * Shortcut property for https://w3c.github.io/webappsec/specs/mixedcontent/#restricts-mixed-content ( for easy overriding in tests )\n\t */\n\t// baseStyle also used by getEmValue (i.e.: width: 1em is important)\n\tvar baseStyle = \"position:absolute;left:0;visibility:hidden;display:block;padding:0;border:none;font-size:1em;width:1em;overflow:hidden;clip:rect(0px, 0px, 0px, 0px)\";\n\tvar fsCss = \"font-size:100%!important;\";\n\tvar isVwDirty = true;\n\n\tvar cssCache = {};\n\tvar sizeLengthCache = {};\n\tvar DPR = window.devicePixelRatio;\n\tvar units = {\n\t\tpx: 1,\n\t\t\"in\": 96\n\t};\n\tvar anchor = document.createElement( \"a\" );\n\t/**\n\t * alreadyRun flag used for setOptions. is it true setOptions will reevaluate\n\t * @type {boolean}\n\t */\n\tvar alreadyRun = false;\n\n\t// Reusable, non-\"g\" Regexes\n\n\t// (Don't use \\s, to avoid matching non-breaking space.)\n\tvar regexLeadingSpaces = /^[ \\t\\n\\r\\u000c]+/,\n\t    regexLeadingCommasOrSpaces = /^[, \\t\\n\\r\\u000c]+/,\n\t    regexLeadingNotSpaces = /^[^ \\t\\n\\r\\u000c]+/,\n\t    regexTrailingCommas = /[,]+$/,\n\t    regexNonNegativeInteger = /^\\d+$/,\n\n\t    // ( Positive or negative or unsigned integers or decimals, without or without exponents.\n\t    // Must include at least one digit.\n\t    // According to spec tests any decimal point must be followed by a digit.\n\t    // No leading plus sign is allowed.)\n\t    // https://html.spec.whatwg.org/multipage/infrastructure.html#valid-floating-point-number\n\t    regexFloatingPoint = /^-?(?:[0-9]+|[0-9]*\\.[0-9]+)(?:[eE][+-]?[0-9]+)?$/;\n\n\tvar on = function(obj, evt, fn, capture) {\n\t\tif ( obj.addEventListener ) {\n\t\t\tobj.addEventListener(evt, fn, capture || false);\n\t\t} else if ( obj.attachEvent ) {\n\t\t\tobj.attachEvent( \"on\" + evt, fn);\n\t\t}\n\t};\n\n\t/**\n\t * simple memoize function:\n\t */\n\n\tvar memoize = function(fn) {\n\t\tvar cache = {};\n\t\treturn function(input) {\n\t\t\tif ( !(input in cache) ) {\n\t\t\t\tcache[ input ] = fn(input);\n\t\t\t}\n\t\t\treturn cache[ input ];\n\t\t};\n\t};\n\n\t// UTILITY FUNCTIONS\n\n\t// Manual is faster than RegEx\n\t// http://jsperf.com/whitespace-character/5\n\tfunction isSpace(c) {\n\t\treturn (c === \"\\u0020\" || // space\n\t\t        c === \"\\u0009\" || // horizontal tab\n\t\t        c === \"\\u000A\" || // new line\n\t\t        c === \"\\u000C\" || // form feed\n\t\t        c === \"\\u000D\");  // carriage return\n\t}\n\n\t/**\n\t * gets a mediaquery and returns a boolean or gets a css length and returns a number\n\t * @param css mediaqueries or css length\n\t * @returns {boolean|number}\n\t *\n\t * based on: https://gist.github.com/jonathantneal/db4f77009b155f083738\n\t */\n\tvar evalCSS = (function() {\n\n\t\tvar regLength = /^([\\d\\.]+)(em|vw|px)$/;\n\t\tvar replace = function() {\n\t\t\tvar args = arguments, index = 0, string = args[0];\n\t\t\twhile (++index in args) {\n\t\t\t\tstring = string.replace(args[index], args[++index]);\n\t\t\t}\n\t\t\treturn string;\n\t\t};\n\n\t\tvar buildStr = memoize(function(css) {\n\n\t\t\treturn \"return \" + replace((css || \"\").toLowerCase(),\n\t\t\t\t// interpret `and`\n\t\t\t\t/\\band\\b/g, \"&&\",\n\n\t\t\t\t// interpret `,`\n\t\t\t\t/,/g, \"||\",\n\n\t\t\t\t// interpret `min-` as >=\n\t\t\t\t/min-([a-z-\\s]+):/g, \"e.$1>=\",\n\n\t\t\t\t// interpret `max-` as <=\n\t\t\t\t/max-([a-z-\\s]+):/g, \"e.$1<=\",\n\n\t\t\t\t//calc value\n\t\t\t\t/calc([^)]+)/g, \"($1)\",\n\n\t\t\t\t// interpret css values\n\t\t\t\t/(\\d+[\\.]*[\\d]*)([a-z]+)/g, \"($1 * e.$2)\",\n\t\t\t\t//make eval less evil\n\t\t\t\t/^(?!(e.[a-z]|[0-9\\.&=|><\\+\\-\\*\\(\\)\\/])).*/ig, \"\"\n\t\t\t) + \";\";\n\t\t});\n\n\t\treturn function(css, length) {\n\t\t\tvar parsedLength;\n\t\t\tif (!(css in cssCache)) {\n\t\t\t\tcssCache[css] = false;\n\t\t\t\tif (length && (parsedLength = css.match( regLength ))) {\n\t\t\t\t\tcssCache[css] = parsedLength[ 1 ] * units[parsedLength[ 2 ]];\n\t\t\t\t} else {\n\t\t\t\t\t/*jshint evil:true */\n\t\t\t\t\ttry{\n\t\t\t\t\t\tcssCache[css] = new Function(\"e\", buildStr(css))(units);\n\t\t\t\t\t} catch(e) {}\n\t\t\t\t\t/*jshint evil:false */\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn cssCache[css];\n\t\t};\n\t})();\n\n\tvar setResolution = function( candidate, sizesattr ) {\n\t\tif ( candidate.w ) { // h = means height: || descriptor.type === 'h' do not handle yet...\n\t\t\tcandidate.cWidth = pf.calcListLength( sizesattr || \"100vw\" );\n\t\t\tcandidate.res = candidate.w / candidate.cWidth ;\n\t\t} else {\n\t\t\tcandidate.res = candidate.d;\n\t\t}\n\t\treturn candidate;\n\t};\n\n\t/**\n\t *\n\t * @param opt\n\t */\n\tvar picturefill = function( opt ) {\n\n\t\tif (!isSupportTestReady) {return;}\n\n\t\tvar elements, i, plen;\n\n\t\tvar options = opt || {};\n\n\t\tif ( options.elements && options.elements.nodeType === 1 ) {\n\t\t\tif ( options.elements.nodeName.toUpperCase() === \"IMG\" ) {\n\t\t\t\toptions.elements =  [ options.elements ];\n\t\t\t} else {\n\t\t\t\toptions.context = options.elements;\n\t\t\t\toptions.elements =  null;\n\t\t\t}\n\t\t}\n\n\t\telements = options.elements || pf.qsa( (options.context || document), ( options.reevaluate || options.reselect ) ? pf.sel : pf.selShort );\n\n\t\tif ( (plen = elements.length) ) {\n\n\t\t\tpf.setupRun( options );\n\t\t\talreadyRun = true;\n\n\t\t\t// Loop through all elements\n\t\t\tfor ( i = 0; i < plen; i++ ) {\n\t\t\t\tpf.fillImg(elements[ i ], options);\n\t\t\t}\n\n\t\t\tpf.teardownRun( options );\n\t\t}\n\t};\n\n\t/**\n\t * outputs a warning for the developer\n\t * @param {message}\n\t * @type {Function}\n\t */\n\twarn = ( window.console && console.warn ) ?\n\t\tfunction( message ) {\n\t\t\tconsole.warn( message );\n\t\t} :\n\t\tnoop\n\t;\n\n\tif ( !(curSrcProp in image) ) {\n\t\tcurSrcProp = \"src\";\n\t}\n\n\t// Add support for standard mime types.\n\ttypes[ \"image/jpeg\" ] = true;\n\ttypes[ \"image/gif\" ] = true;\n\ttypes[ \"image/png\" ] = true;\n\n\tfunction detectTypeSupport( type, typeUri ) {\n\t\t// based on Modernizr's lossless img-webp test\n\t\t// note: asynchronous\n\t\tvar image = new window.Image();\n\t\timage.onerror = function() {\n\t\t\ttypes[ type ] = false;\n\t\t\tpicturefill();\n\t\t};\n\t\timage.onload = function() {\n\t\t\ttypes[ type ] = image.width === 1;\n\t\t\tpicturefill();\n\t\t};\n\t\timage.src = typeUri;\n\t\treturn \"pending\";\n\t}\n\n\t// test svg support\n\ttypes[ \"image/svg+xml\" ] = document.implementation.hasFeature( \"http://www.w3.org/TR/SVG11/feature#Image\", \"1.1\" );\n\n\t/**\n\t * updates the internal vW property with the current viewport width in px\n\t */\n\tfunction updateMetrics() {\n\n\t\tisVwDirty = false;\n\t\tDPR = window.devicePixelRatio;\n\t\tcssCache = {};\n\t\tsizeLengthCache = {};\n\n\t\tpf.DPR = DPR || 1;\n\n\t\tunits.width = Math.max(window.innerWidth || 0, docElem.clientWidth);\n\t\tunits.height = Math.max(window.innerHeight || 0, docElem.clientHeight);\n\n\t\tunits.vw = units.width / 100;\n\t\tunits.vh = units.height / 100;\n\n\t\tevalId = [ units.height, units.width, DPR ].join(\"-\");\n\n\t\tunits.em = pf.getEmValue();\n\t\tunits.rem = units.em;\n\t}\n\n\tfunction chooseLowRes( lowerValue, higherValue, dprValue, isCached ) {\n\t\tvar bonusFactor, tooMuch, bonus, meanDensity;\n\n\t\t//experimental\n\t\tif (cfg.algorithm === \"saveData\" ){\n\t\t\tif ( lowerValue > 2.7 ) {\n\t\t\t\tmeanDensity = dprValue + 1;\n\t\t\t} else {\n\t\t\t\ttooMuch = higherValue - dprValue;\n\t\t\t\tbonusFactor = Math.pow(lowerValue - 0.6, 1.5);\n\n\t\t\t\tbonus = tooMuch * bonusFactor;\n\n\t\t\t\tif (isCached) {\n\t\t\t\t\tbonus += 0.1 * bonusFactor;\n\t\t\t\t}\n\n\t\t\t\tmeanDensity = lowerValue + bonus;\n\t\t\t}\n\t\t} else {\n\t\t\tmeanDensity = (dprValue > 1) ?\n\t\t\t\tMath.sqrt(lowerValue * higherValue) :\n\t\t\t\tlowerValue;\n\t\t}\n\n\t\treturn meanDensity > dprValue;\n\t}\n\n\tfunction applyBestCandidate( img ) {\n\t\tvar srcSetCandidates;\n\t\tvar matchingSet = pf.getSet( img );\n\t\tvar evaluated = false;\n\t\tif ( matchingSet !== \"pending\" ) {\n\t\t\tevaluated = evalId;\n\t\t\tif ( matchingSet ) {\n\t\t\t\tsrcSetCandidates = pf.setRes( matchingSet );\n\t\t\t\tpf.applySetCandidate( srcSetCandidates, img );\n\t\t\t}\n\t\t}\n\t\timg[ pf.ns ].evaled = evaluated;\n\t}\n\n\tfunction ascendingSort( a, b ) {\n\t\treturn a.res - b.res;\n\t}\n\n\tfunction setSrcToCur( img, src, set ) {\n\t\tvar candidate;\n\t\tif ( !set && src ) {\n\t\t\tset = img[ pf.ns ].sets;\n\t\t\tset = set && set[set.length - 1];\n\t\t}\n\n\t\tcandidate = getCandidateForSrc(src, set);\n\n\t\tif ( candidate ) {\n\t\t\tsrc = pf.makeUrl(src);\n\t\t\timg[ pf.ns ].curSrc = src;\n\t\t\timg[ pf.ns ].curCan = candidate;\n\n\t\t\tif ( !candidate.res ) {\n\t\t\t\tsetResolution( candidate, candidate.set.sizes );\n\t\t\t}\n\t\t}\n\t\treturn candidate;\n\t}\n\n\tfunction getCandidateForSrc( src, set ) {\n\t\tvar i, candidate, candidates;\n\t\tif ( src && set ) {\n\t\t\tcandidates = pf.parseSet( set );\n\t\t\tsrc = pf.makeUrl(src);\n\t\t\tfor ( i = 0; i < candidates.length; i++ ) {\n\t\t\t\tif ( src === pf.makeUrl(candidates[ i ].url) ) {\n\t\t\t\t\tcandidate = candidates[ i ];\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn candidate;\n\t}\n\n\tfunction getAllSourceElements( picture, candidates ) {\n\t\tvar i, len, source, srcset;\n\n\t\t// SPEC mismatch intended for size and perf:\n\t\t// actually only source elements preceding the img should be used\n\t\t// also note: don't use qsa here, because IE8 sometimes doesn't like source as the key part in a selector\n\t\tvar sources = picture.getElementsByTagName( \"source\" );\n\n\t\tfor ( i = 0, len = sources.length; i < len; i++ ) {\n\t\t\tsource = sources[ i ];\n\t\t\tsource[ pf.ns ] = true;\n\t\t\tsrcset = source.getAttribute( \"srcset\" );\n\n\t\t\t// if source does not have a srcset attribute, skip\n\t\t\tif ( srcset ) {\n\t\t\t\tcandidates.push( {\n\t\t\t\t\tsrcset: srcset,\n\t\t\t\t\tmedia: source.getAttribute( \"media\" ),\n\t\t\t\t\ttype: source.getAttribute( \"type\" ),\n\t\t\t\t\tsizes: source.getAttribute( \"sizes\" )\n\t\t\t\t} );\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Srcset Parser\n\t * By Alex Bell |  MIT License\n\t *\n\t * @returns Array [{url: _, d: _, w: _, h:_, set:_(????)}, ...]\n\t *\n\t * Based super duper closely on the reference algorithm at:\n\t * https://html.spec.whatwg.org/multipage/embedded-content.html#parse-a-srcset-attribute\n\t */\n\n\t// 1. Let input be the value passed to this algorithm.\n\t// (TO-DO : Explain what \"set\" argument is here. Maybe choose a more\n\t// descriptive & more searchable name.  Since passing the \"set\" in really has\n\t// nothing to do with parsing proper, I would prefer this assignment eventually\n\t// go in an external fn.)\n\tfunction parseSrcset(input, set) {\n\n\t\tfunction collectCharacters(regEx) {\n\t\t\tvar chars,\n\t\t\t    match = regEx.exec(input.substring(pos));\n\t\t\tif (match) {\n\t\t\t\tchars = match[ 0 ];\n\t\t\t\tpos += chars.length;\n\t\t\t\treturn chars;\n\t\t\t}\n\t\t}\n\n\t\tvar inputLength = input.length,\n\t\t    url,\n\t\t    descriptors,\n\t\t    currentDescriptor,\n\t\t    state,\n\t\t    c,\n\n\t\t    // 2. Let position be a pointer into input, initially pointing at the start\n\t\t    //    of the string.\n\t\t    pos = 0,\n\n\t\t    // 3. Let candidates be an initially empty source set.\n\t\t    candidates = [];\n\n\t\t/**\n\t\t* Adds descriptor properties to a candidate, pushes to the candidates array\n\t\t* @return undefined\n\t\t*/\n\t\t// (Declared outside of the while loop so that it's only created once.\n\t\t// (This fn is defined before it is used, in order to pass JSHINT.\n\t\t// Unfortunately this breaks the sequencing of the spec comments. :/ )\n\t\tfunction parseDescriptors() {\n\n\t\t\t// 9. Descriptor parser: Let error be no.\n\t\t\tvar pError = false,\n\n\t\t\t// 10. Let width be absent.\n\t\t\t// 11. Let density be absent.\n\t\t\t// 12. Let future-compat-h be absent. (We're implementing it now as h)\n\t\t\t    w, d, h, i,\n\t\t\t    candidate = {},\n\t\t\t    desc, lastChar, value, intVal, floatVal;\n\n\t\t\t// 13. For each descriptor in descriptors, run the appropriate set of steps\n\t\t\t// from the following list:\n\t\t\tfor (i = 0 ; i < descriptors.length; i++) {\n\t\t\t\tdesc = descriptors[ i ];\n\n\t\t\t\tlastChar = desc[ desc.length - 1 ];\n\t\t\t\tvalue = desc.substring(0, desc.length - 1);\n\t\t\t\tintVal = parseInt(value, 10);\n\t\t\t\tfloatVal = parseFloat(value);\n\n\t\t\t\t// If the descriptor consists of a valid non-negative integer followed by\n\t\t\t\t// a U+0077 LATIN SMALL LETTER W character\n\t\t\t\tif (regexNonNegativeInteger.test(value) && (lastChar === \"w\")) {\n\n\t\t\t\t\t// If width and density are not both absent, then let error be yes.\n\t\t\t\t\tif (w || d) {pError = true;}\n\n\t\t\t\t\t// Apply the rules for parsing non-negative integers to the descriptor.\n\t\t\t\t\t// If the result is zero, let error be yes.\n\t\t\t\t\t// Otherwise, let width be the result.\n\t\t\t\t\tif (intVal === 0) {pError = true;} else {w = intVal;}\n\n\t\t\t\t// If the descriptor consists of a valid floating-point number followed by\n\t\t\t\t// a U+0078 LATIN SMALL LETTER X character\n\t\t\t\t} else if (regexFloatingPoint.test(value) && (lastChar === \"x\")) {\n\n\t\t\t\t\t// If width, density and future-compat-h are not all absent, then let error\n\t\t\t\t\t// be yes.\n\t\t\t\t\tif (w || d || h) {pError = true;}\n\n\t\t\t\t\t// Apply the rules for parsing floating-point number values to the descriptor.\n\t\t\t\t\t// If the result is less than zero, let error be yes. Otherwise, let density\n\t\t\t\t\t// be the result.\n\t\t\t\t\tif (floatVal < 0) {pError = true;} else {d = floatVal;}\n\n\t\t\t\t// If the descriptor consists of a valid non-negative integer followed by\n\t\t\t\t// a U+0068 LATIN SMALL LETTER H character\n\t\t\t\t} else if (regexNonNegativeInteger.test(value) && (lastChar === \"h\")) {\n\n\t\t\t\t\t// If height and density are not both absent, then let error be yes.\n\t\t\t\t\tif (h || d) {pError = true;}\n\n\t\t\t\t\t// Apply the rules for parsing non-negative integers to the descriptor.\n\t\t\t\t\t// If the result is zero, let error be yes. Otherwise, let future-compat-h\n\t\t\t\t\t// be the result.\n\t\t\t\t\tif (intVal === 0) {pError = true;} else {h = intVal;}\n\n\t\t\t\t// Anything else, Let error be yes.\n\t\t\t\t} else {pError = true;}\n\t\t\t} // (close step 13 for loop)\n\n\t\t\t// 15. If error is still no, then append a new image source to candidates whose\n\t\t\t// URL is url, associated with a width width if not absent and a pixel\n\t\t\t// density density if not absent. Otherwise, there is a parse error.\n\t\t\tif (!pError) {\n\t\t\t\tcandidate.url = url;\n\n\t\t\t\tif (w) { candidate.w = w;}\n\t\t\t\tif (d) { candidate.d = d;}\n\t\t\t\tif (h) { candidate.h = h;}\n\t\t\t\tif (!h && !d && !w) {candidate.d = 1;}\n\t\t\t\tif (candidate.d === 1) {set.has1x = true;}\n\t\t\t\tcandidate.set = set;\n\n\t\t\t\tcandidates.push(candidate);\n\t\t\t}\n\t\t} // (close parseDescriptors fn)\n\n\t\t/**\n\t\t* Tokenizes descriptor properties prior to parsing\n\t\t* Returns undefined.\n\t\t* (Again, this fn is defined before it is used, in order to pass JSHINT.\n\t\t* Unfortunately this breaks the logical sequencing of the spec comments. :/ )\n\t\t*/\n\t\tfunction tokenize() {\n\n\t\t\t// 8.1. Descriptor tokeniser: Skip whitespace\n\t\t\tcollectCharacters(regexLeadingSpaces);\n\n\t\t\t// 8.2. Let current descriptor be the empty string.\n\t\t\tcurrentDescriptor = \"\";\n\n\t\t\t// 8.3. Let state be in descriptor.\n\t\t\tstate = \"in descriptor\";\n\n\t\t\twhile (true) {\n\n\t\t\t\t// 8.4. Let c be the character at position.\n\t\t\t\tc = input.charAt(pos);\n\n\t\t\t\t//  Do the following depending on the value of state.\n\t\t\t\t//  For the purpose of this step, \"EOF\" is a special character representing\n\t\t\t\t//  that position is past the end of input.\n\n\t\t\t\t// In descriptor\n\t\t\t\tif (state === \"in descriptor\") {\n\t\t\t\t\t// Do the following, depending on the value of c:\n\n\t\t\t\t  // Space character\n\t\t\t\t  // If current descriptor is not empty, append current descriptor to\n\t\t\t\t  // descriptors and let current descriptor be the empty string.\n\t\t\t\t  // Set state to after descriptor.\n\t\t\t\t\tif (isSpace(c)) {\n\t\t\t\t\t\tif (currentDescriptor) {\n\t\t\t\t\t\t\tdescriptors.push(currentDescriptor);\n\t\t\t\t\t\t\tcurrentDescriptor = \"\";\n\t\t\t\t\t\t\tstate = \"after descriptor\";\n\t\t\t\t\t\t}\n\n\t\t\t\t\t// U+002C COMMA (,)\n\t\t\t\t\t// Advance position to the next character in input. If current descriptor\n\t\t\t\t\t// is not empty, append current descriptor to descriptors. Jump to the step\n\t\t\t\t\t// labeled descriptor parser.\n\t\t\t\t\t} else if (c === \",\") {\n\t\t\t\t\t\tpos += 1;\n\t\t\t\t\t\tif (currentDescriptor) {\n\t\t\t\t\t\t\tdescriptors.push(currentDescriptor);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tparseDescriptors();\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\t// U+0028 LEFT PARENTHESIS (()\n\t\t\t\t\t// Append c to current descriptor. Set state to in parens.\n\t\t\t\t\t} else if (c === \"\\u0028\") {\n\t\t\t\t\t\tcurrentDescriptor = currentDescriptor + c;\n\t\t\t\t\t\tstate = \"in parens\";\n\n\t\t\t\t\t// EOF\n\t\t\t\t\t// If current descriptor is not empty, append current descriptor to\n\t\t\t\t\t// descriptors. Jump to the step labeled descriptor parser.\n\t\t\t\t\t} else if (c === \"\") {\n\t\t\t\t\t\tif (currentDescriptor) {\n\t\t\t\t\t\t\tdescriptors.push(currentDescriptor);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tparseDescriptors();\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\t// Anything else\n\t\t\t\t\t// Append c to current descriptor.\n\t\t\t\t\t} else {\n\t\t\t\t\t\tcurrentDescriptor = currentDescriptor + c;\n\t\t\t\t\t}\n\t\t\t\t// (end \"in descriptor\"\n\n\t\t\t\t// In parens\n\t\t\t\t} else if (state === \"in parens\") {\n\n\t\t\t\t\t// U+0029 RIGHT PARENTHESIS ())\n\t\t\t\t\t// Append c to current descriptor. Set state to in descriptor.\n\t\t\t\t\tif (c === \")\") {\n\t\t\t\t\t\tcurrentDescriptor = currentDescriptor + c;\n\t\t\t\t\t\tstate = \"in descriptor\";\n\n\t\t\t\t\t// EOF\n\t\t\t\t\t// Append current descriptor to descriptors. Jump to the step labeled\n\t\t\t\t\t// descriptor parser.\n\t\t\t\t\t} else if (c === \"\") {\n\t\t\t\t\t\tdescriptors.push(currentDescriptor);\n\t\t\t\t\t\tparseDescriptors();\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\t// Anything else\n\t\t\t\t\t// Append c to current descriptor.\n\t\t\t\t\t} else {\n\t\t\t\t\t\tcurrentDescriptor = currentDescriptor + c;\n\t\t\t\t\t}\n\n\t\t\t\t// After descriptor\n\t\t\t\t} else if (state === \"after descriptor\") {\n\n\t\t\t\t\t// Do the following, depending on the value of c:\n\t\t\t\t\t// Space character: Stay in this state.\n\t\t\t\t\tif (isSpace(c)) {\n\n\t\t\t\t\t// EOF: Jump to the step labeled descriptor parser.\n\t\t\t\t\t} else if (c === \"\") {\n\t\t\t\t\t\tparseDescriptors();\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\t// Anything else\n\t\t\t\t\t// Set state to in descriptor. Set position to the previous character in input.\n\t\t\t\t\t} else {\n\t\t\t\t\t\tstate = \"in descriptor\";\n\t\t\t\t\t\tpos -= 1;\n\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Advance position to the next character in input.\n\t\t\t\tpos += 1;\n\n\t\t\t// Repeat this step.\n\t\t\t} // (close while true loop)\n\t\t}\n\n\t\t// 4. Splitting loop: Collect a sequence of characters that are space\n\t\t//    characters or U+002C COMMA characters. If any U+002C COMMA characters\n\t\t//    were collected, that is a parse error.\n\t\twhile (true) {\n\t\t\tcollectCharacters(regexLeadingCommasOrSpaces);\n\n\t\t\t// 5. If position is past the end of input, return candidates and abort these steps.\n\t\t\tif (pos >= inputLength) {\n\t\t\t\treturn candidates; // (we're done, this is the sole return path)\n\t\t\t}\n\n\t\t\t// 6. Collect a sequence of characters that are not space characters,\n\t\t\t//    and let that be url.\n\t\t\turl = collectCharacters(regexLeadingNotSpaces);\n\n\t\t\t// 7. Let descriptors be a new empty list.\n\t\t\tdescriptors = [];\n\n\t\t\t// 8. If url ends with a U+002C COMMA character (,), follow these substeps:\n\t\t\t//\t\t(1). Remove all trailing U+002C COMMA characters from url. If this removed\n\t\t\t//         more than one character, that is a parse error.\n\t\t\tif (url.slice(-1) === \",\") {\n\t\t\t\turl = url.replace(regexTrailingCommas, \"\");\n\t\t\t\t// (Jump ahead to step 9 to skip tokenization and just push the candidate).\n\t\t\t\tparseDescriptors();\n\n\t\t\t//\tOtherwise, follow these substeps:\n\t\t\t} else {\n\t\t\t\ttokenize();\n\t\t\t} // (close else of step 8)\n\n\t\t// 16. Return to the step labeled splitting loop.\n\t\t} // (Close of big while loop.)\n\t}\n\n\t/*\n\t * Sizes Parser\n\t *\n\t * By Alex Bell |  MIT License\n\t *\n\t * Non-strict but accurate and lightweight JS Parser for the string value <img sizes=\"here\">\n\t *\n\t * Reference algorithm at:\n\t * https://html.spec.whatwg.org/multipage/embedded-content.html#parse-a-sizes-attribute\n\t *\n\t * Most comments are copied in directly from the spec\n\t * (except for comments in parens).\n\t *\n\t * Grammar is:\n\t * <source-size-list> = <source-size># [ , <source-size-value> ]? | <source-size-value>\n\t * <source-size> = <media-condition> <source-size-value>\n\t * <source-size-value> = <length>\n\t * http://www.w3.org/html/wg/drafts/html/master/embedded-content.html#attr-img-sizes\n\t *\n\t * E.g. \"(max-width: 30em) 100vw, (max-width: 50em) 70vw, 100vw\"\n\t * or \"(min-width: 30em), calc(30vw - 15px)\" or just \"30vw\"\n\t *\n\t * Returns the first valid <css-length> with a media condition that evaluates to true,\n\t * or \"100vw\" if all valid media conditions evaluate to false.\n\t *\n\t */\n\n\tfunction parseSizes(strValue) {\n\n\t\t// (Percentage CSS lengths are not allowed in this case, to avoid confusion:\n\t\t// https://html.spec.whatwg.org/multipage/embedded-content.html#valid-source-size-list\n\t\t// CSS allows a single optional plus or minus sign:\n\t\t// http://www.w3.org/TR/CSS2/syndata.html#numbers\n\t\t// CSS is ASCII case-insensitive:\n\t\t// http://www.w3.org/TR/CSS2/syndata.html#characters )\n\t\t// Spec allows exponential notation for <number> type:\n\t\t// http://dev.w3.org/csswg/css-values/#numbers\n\t\tvar regexCssLengthWithUnits = /^(?:[+-]?[0-9]+|[0-9]*\\.[0-9]+)(?:[eE][+-]?[0-9]+)?(?:ch|cm|em|ex|in|mm|pc|pt|px|rem|vh|vmin|vmax|vw)$/i;\n\n\t\t// (This is a quick and lenient test. Because of optional unlimited-depth internal\n\t\t// grouping parens and strict spacing rules, this could get very complicated.)\n\t\tvar regexCssCalc = /^calc\\((?:[0-9a-z \\.\\+\\-\\*\\/\\(\\)]+)\\)$/i;\n\n\t\tvar i;\n\t\tvar unparsedSizesList;\n\t\tvar unparsedSizesListLength;\n\t\tvar unparsedSize;\n\t\tvar lastComponentValue;\n\t\tvar size;\n\n\t\t// UTILITY FUNCTIONS\n\n\t\t//  (Toy CSS parser. The goals here are:\n\t\t//  1) expansive test coverage without the weight of a full CSS parser.\n\t\t//  2) Avoiding regex wherever convenient.\n\t\t//  Quick tests: http://jsfiddle.net/gtntL4gr/3/\n\t\t//  Returns an array of arrays.)\n\t\tfunction parseComponentValues(str) {\n\t\t\tvar chrctr;\n\t\t\tvar component = \"\";\n\t\t\tvar componentArray = [];\n\t\t\tvar listArray = [];\n\t\t\tvar parenDepth = 0;\n\t\t\tvar pos = 0;\n\t\t\tvar inComment = false;\n\n\t\t\tfunction pushComponent() {\n\t\t\t\tif (component) {\n\t\t\t\t\tcomponentArray.push(component);\n\t\t\t\t\tcomponent = \"\";\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfunction pushComponentArray() {\n\t\t\t\tif (componentArray[0]) {\n\t\t\t\t\tlistArray.push(componentArray);\n\t\t\t\t\tcomponentArray = [];\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// (Loop forwards from the beginning of the string.)\n\t\t\twhile (true) {\n\t\t\t\tchrctr = str.charAt(pos);\n\n\t\t\t\tif (chrctr === \"\") { // ( End of string reached.)\n\t\t\t\t\tpushComponent();\n\t\t\t\t\tpushComponentArray();\n\t\t\t\t\treturn listArray;\n\t\t\t\t} else if (inComment) {\n\t\t\t\t\tif ((chrctr === \"*\") && (str[pos + 1] === \"/\")) { // (At end of a comment.)\n\t\t\t\t\t\tinComment = false;\n\t\t\t\t\t\tpos += 2;\n\t\t\t\t\t\tpushComponent();\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tpos += 1; // (Skip all characters inside comments.)\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\t\t\t\t} else if (isSpace(chrctr)) {\n\t\t\t\t\t// (If previous character in loop was also a space, or if\n\t\t\t\t\t// at the beginning of the string, do not add space char to\n\t\t\t\t\t// component.)\n\t\t\t\t\tif ( (str.charAt(pos - 1) && isSpace( str.charAt(pos - 1) ) ) || !component ) {\n\t\t\t\t\t\tpos += 1;\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t} else if (parenDepth === 0) {\n\t\t\t\t\t\tpushComponent();\n\t\t\t\t\t\tpos +=1;\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// (Replace any space character with a plain space for legibility.)\n\t\t\t\t\t\tchrctr = \" \";\n\t\t\t\t\t}\n\t\t\t\t} else if (chrctr === \"(\") {\n\t\t\t\t\tparenDepth += 1;\n\t\t\t\t} else if (chrctr === \")\") {\n\t\t\t\t\tparenDepth -= 1;\n\t\t\t\t} else if (chrctr === \",\") {\n\t\t\t\t\tpushComponent();\n\t\t\t\t\tpushComponentArray();\n\t\t\t\t\tpos += 1;\n\t\t\t\t\tcontinue;\n\t\t\t\t} else if ( (chrctr === \"/\") && (str.charAt(pos + 1) === \"*\") ) {\n\t\t\t\t\tinComment = true;\n\t\t\t\t\tpos += 2;\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tcomponent = component + chrctr;\n\t\t\t\tpos += 1;\n\t\t\t}\n\t\t}\n\n\t\tfunction isValidNonNegativeSourceSizeValue(s) {\n\t\t\tif (regexCssLengthWithUnits.test(s) && (parseFloat(s) >= 0)) {return true;}\n\t\t\tif (regexCssCalc.test(s)) {return true;}\n\t\t\t// ( http://www.w3.org/TR/CSS2/syndata.html#numbers says:\n\t\t\t// \"-0 is equivalent to 0 and is not a negative number.\" which means that\n\t\t\t// unitless zero and unitless negative zero must be accepted as special cases.)\n\t\t\tif ((s === \"0\") || (s === \"-0\") || (s === \"+0\")) {return true;}\n\t\t\treturn false;\n\t\t}\n\n\t\t// When asked to parse a sizes attribute from an element, parse a\n\t\t// comma-separated list of component values from the value of the element's\n\t\t// sizes attribute (or the empty string, if the attribute is absent), and let\n\t\t// unparsed sizes list be the result.\n\t\t// http://dev.w3.org/csswg/css-syntax/#parse-comma-separated-list-of-component-values\n\n\t\tunparsedSizesList = parseComponentValues(strValue);\n\t\tunparsedSizesListLength = unparsedSizesList.length;\n\n\t\t// For each unparsed size in unparsed sizes list:\n\t\tfor (i = 0; i < unparsedSizesListLength; i++) {\n\t\t\tunparsedSize = unparsedSizesList[i];\n\n\t\t\t// 1. Remove all consecutive <whitespace-token>s from the end of unparsed size.\n\t\t\t// ( parseComponentValues() already omits spaces outside of parens. )\n\n\t\t\t// If unparsed size is now empty, that is a parse error; continue to the next\n\t\t\t// iteration of this algorithm.\n\t\t\t// ( parseComponentValues() won't push an empty array. )\n\n\t\t\t// 2. If the last component value in unparsed size is a valid non-negative\n\t\t\t// <source-size-value>, let size be its value and remove the component value\n\t\t\t// from unparsed size. Any CSS function other than the calc() function is\n\t\t\t// invalid. Otherwise, there is a parse error; continue to the next iteration\n\t\t\t// of this algorithm.\n\t\t\t// http://dev.w3.org/csswg/css-syntax/#parse-component-value\n\t\t\tlastComponentValue = unparsedSize[unparsedSize.length - 1];\n\n\t\t\tif (isValidNonNegativeSourceSizeValue(lastComponentValue)) {\n\t\t\t\tsize = lastComponentValue;\n\t\t\t\tunparsedSize.pop();\n\t\t\t} else {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// 3. Remove all consecutive <whitespace-token>s from the end of unparsed\n\t\t\t// size. If unparsed size is now empty, return size and exit this algorithm.\n\t\t\t// If this was not the last item in unparsed sizes list, that is a parse error.\n\t\t\tif (unparsedSize.length === 0) {\n\t\t\t\treturn size;\n\t\t\t}\n\n\t\t\t// 4. Parse the remaining component values in unparsed size as a\n\t\t\t// <media-condition>. If it does not parse correctly, or it does parse\n\t\t\t// correctly but the <media-condition> evaluates to false, continue to the\n\t\t\t// next iteration of this algorithm.\n\t\t\t// (Parsing all possible compound media conditions in JS is heavy, complicated,\n\t\t\t// and the payoff is unclear. Is there ever an situation where the\n\t\t\t// media condition parses incorrectly but still somehow evaluates to true?\n\t\t\t// Can we just rely on the browser/polyfill to do it?)\n\t\t\tunparsedSize = unparsedSize.join(\" \");\n\t\t\tif (!(pf.matchesMedia( unparsedSize ) ) ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// 5. Return size and exit this algorithm.\n\t\t\treturn size;\n\t\t}\n\n\t\t// If the above algorithm exhausts unparsed sizes list without returning a\n\t\t// size value, return 100vw.\n\t\treturn \"100vw\";\n\t}\n\n\t// namespace\n\tpf.ns = (\"pf\" + new Date().getTime()).substr(0, 9);\n\n\t// srcset support test\n\tpf.supSrcset = \"srcset\" in image;\n\tpf.supSizes = \"sizes\" in image;\n\tpf.supPicture = !!window.HTMLPictureElement;\n\n\t// UC browser does claim to support srcset and picture, but not sizes,\n\t// this extended test reveals the browser does support nothing\n\tif (pf.supSrcset && pf.supPicture && !pf.supSizes) {\n\t\t(function(image2) {\n\t\t\timage.srcset = \"data:,a\";\n\t\t\timage2.src = \"data:,a\";\n\t\t\tpf.supSrcset = image.complete === image2.complete;\n\t\t\tpf.supPicture = pf.supSrcset && pf.supPicture;\n\t\t})(document.createElement(\"img\"));\n\t}\n\n\t// Safari9 has basic support for sizes, but does't expose the `sizes` idl attribute\n\tif (pf.supSrcset && !pf.supSizes) {\n\n\t\t(function() {\n\t\t\tvar width2 = \"data:image/gif;base64,R0lGODlhAgABAPAAAP///wAAACH5BAAAAAAALAAAAAACAAEAAAICBAoAOw==\";\n\t\t\tvar width1 = \"data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==\";\n\t\t\tvar img = document.createElement(\"img\");\n\t\t\tvar test = function() {\n\t\t\t\tvar width = img.width;\n\n\t\t\t\tif (width === 2) {\n\t\t\t\t\tpf.supSizes = true;\n\t\t\t\t}\n\n\t\t\t\talwaysCheckWDescriptor = pf.supSrcset && !pf.supSizes;\n\n\t\t\t\tisSupportTestReady = true;\n\t\t\t\t// force async\n\t\t\t\tsetTimeout(picturefill);\n\t\t\t};\n\n\t\t\timg.onload = test;\n\t\t\timg.onerror = test;\n\t\t\timg.setAttribute(\"sizes\", \"9px\");\n\n\t\t\timg.srcset = width1 + \" 1w,\" + width2 + \" 9w\";\n\t\t\timg.src = width1;\n\t\t})();\n\n\t} else {\n\t\tisSupportTestReady = true;\n\t}\n\n\t// using pf.qsa instead of dom traversing does scale much better,\n\t// especially on sites mixing responsive and non-responsive images\n\tpf.selShort = \"picture>img,img[srcset]\";\n\tpf.sel = pf.selShort;\n\tpf.cfg = cfg;\n\n\t/**\n\t * Shortcut property for `devicePixelRatio` ( for easy overriding in tests )\n\t */\n\tpf.DPR = (DPR  || 1 );\n\tpf.u = units;\n\n\t// container of supported mime types that one might need to qualify before using\n\tpf.types =  types;\n\n\tpf.setSize = noop;\n\n\t/**\n\t * Gets a string and returns the absolute URL\n\t * @param src\n\t * @returns {String} absolute URL\n\t */\n\n\tpf.makeUrl = memoize(function(src) {\n\t\tanchor.href = src;\n\t\treturn anchor.href;\n\t});\n\n\t/**\n\t * Gets a DOM element or document and a selctor and returns the found matches\n\t * Can be extended with jQuery/Sizzle for IE7 support\n\t * @param context\n\t * @param sel\n\t * @returns {NodeList|Array}\n\t */\n\tpf.qsa = function(context, sel) {\n\t\treturn ( \"querySelector\" in context ) ? context.querySelectorAll(sel) : [];\n\t};\n\n\t/**\n\t * Shortcut method for matchMedia ( for easy overriding in tests )\n\t * wether native or pf.mMQ is used will be decided lazy on first call\n\t * @returns {boolean}\n\t */\n\tpf.matchesMedia = function() {\n\t\tif ( window.matchMedia && (matchMedia( \"(min-width: 0.1em)\" ) || {}).matches ) {\n\t\t\tpf.matchesMedia = function( media ) {\n\t\t\t\treturn !media || ( matchMedia( media ).matches );\n\t\t\t};\n\t\t} else {\n\t\t\tpf.matchesMedia = pf.mMQ;\n\t\t}\n\n\t\treturn pf.matchesMedia.apply( this, arguments );\n\t};\n\n\t/**\n\t * A simplified matchMedia implementation for IE8 and IE9\n\t * handles only min-width/max-width with px or em values\n\t * @param media\n\t * @returns {boolean}\n\t */\n\tpf.mMQ = function( media ) {\n\t\treturn media ? evalCSS(media) : true;\n\t};\n\n\t/**\n\t * Returns the calculated length in css pixel from the given sourceSizeValue\n\t * http://dev.w3.org/csswg/css-values-3/#length-value\n\t * intended Spec mismatches:\n\t * * Does not check for invalid use of CSS functions\n\t * * Does handle a computed length of 0 the same as a negative and therefore invalid value\n\t * @param sourceSizeValue\n\t * @returns {Number}\n\t */\n\tpf.calcLength = function( sourceSizeValue ) {\n\n\t\tvar value = evalCSS(sourceSizeValue, true) || false;\n\t\tif (value < 0) {\n\t\t\tvalue = false;\n\t\t}\n\n\t\treturn value;\n\t};\n\n\t/**\n\t * Takes a type string and checks if its supported\n\t */\n\n\tpf.supportsType = function( type ) {\n\t\treturn ( type ) ? types[ type ] : true;\n\t};\n\n\t/**\n\t * Parses a sourceSize into mediaCondition (media) and sourceSizeValue (length)\n\t * @param sourceSizeStr\n\t * @returns {*}\n\t */\n\tpf.parseSize = memoize(function( sourceSizeStr ) {\n\t\tvar match = ( sourceSizeStr || \"\" ).match(regSize);\n\t\treturn {\n\t\t\tmedia: match && match[1],\n\t\t\tlength: match && match[2]\n\t\t};\n\t});\n\n\tpf.parseSet = function( set ) {\n\t\tif ( !set.cands ) {\n\t\t\tset.cands = parseSrcset(set.srcset, set);\n\t\t}\n\t\treturn set.cands;\n\t};\n\n\t/**\n\t * returns 1em in css px for html/body default size\n\t * function taken from respondjs\n\t * @returns {*|number}\n\t */\n\tpf.getEmValue = function() {\n\t\tvar body;\n\t\tif ( !eminpx && (body = document.body) ) {\n\t\t\tvar div = document.createElement( \"div\" ),\n\t\t\t\toriginalHTMLCSS = docElem.style.cssText,\n\t\t\t\toriginalBodyCSS = body.style.cssText;\n\n\t\t\tdiv.style.cssText = baseStyle;\n\n\t\t\t// 1em in a media query is the value of the default font size of the browser\n\t\t\t// reset docElem and body to ensure the correct value is returned\n\t\t\tdocElem.style.cssText = fsCss;\n\t\t\tbody.style.cssText = fsCss;\n\n\t\t\tbody.appendChild( div );\n\t\t\teminpx = div.offsetWidth;\n\t\t\tbody.removeChild( div );\n\n\t\t\t//also update eminpx before returning\n\t\t\teminpx = parseFloat( eminpx, 10 );\n\n\t\t\t// restore the original values\n\t\t\tdocElem.style.cssText = originalHTMLCSS;\n\t\t\tbody.style.cssText = originalBodyCSS;\n\n\t\t}\n\t\treturn eminpx || 16;\n\t};\n\n\t/**\n\t * Takes a string of sizes and returns the width in pixels as a number\n\t */\n\tpf.calcListLength = function( sourceSizeListStr ) {\n\t\t// Split up source size list, ie ( max-width: 30em ) 100%, ( max-width: 50em ) 50%, 33%\n\t\t//\n\t\t//                           or (min-width:30em) calc(30% - 15px)\n\t\tif ( !(sourceSizeListStr in sizeLengthCache) || cfg.uT ) {\n\t\t\tvar winningLength = pf.calcLength( parseSizes( sourceSizeListStr ) );\n\n\t\t\tsizeLengthCache[ sourceSizeListStr ] = !winningLength ? units.width : winningLength;\n\t\t}\n\n\t\treturn sizeLengthCache[ sourceSizeListStr ];\n\t};\n\n\t/**\n\t * Takes a candidate object with a srcset property in the form of url/\n\t * ex. \"images/pic-medium.png 1x, images/pic-medium-2x.png 2x\" or\n\t *     \"images/pic-medium.png 400w, images/pic-medium-2x.png 800w\" or\n\t *     \"images/pic-small.png\"\n\t * Get an array of image candidates in the form of\n\t *      {url: \"/foo/bar.png\", resolution: 1}\n\t * where resolution is http://dev.w3.org/csswg/css-values-3/#resolution-value\n\t * If sizes is specified, res is calculated\n\t */\n\tpf.setRes = function( set ) {\n\t\tvar candidates;\n\t\tif ( set ) {\n\n\t\t\tcandidates = pf.parseSet( set );\n\n\t\t\tfor ( var i = 0, len = candidates.length; i < len; i++ ) {\n\t\t\t\tsetResolution( candidates[ i ], set.sizes );\n\t\t\t}\n\t\t}\n\t\treturn candidates;\n\t};\n\n\tpf.setRes.res = setResolution;\n\n\tpf.applySetCandidate = function( candidates, img ) {\n\t\tif ( !candidates.length ) {return;}\n\t\tvar candidate,\n\t\t\ti,\n\t\t\tj,\n\t\t\tlength,\n\t\t\tbestCandidate,\n\t\t\tcurSrc,\n\t\t\tcurCan,\n\t\t\tcandidateSrc,\n\t\t\tabortCurSrc;\n\n\t\tvar imageData = img[ pf.ns ];\n\t\tvar dpr = pf.DPR;\n\n\t\tcurSrc = imageData.curSrc || img[curSrcProp];\n\n\t\tcurCan = imageData.curCan || setSrcToCur(img, curSrc, candidates[0].set);\n\n\t\t// if we have a current source, we might either become lazy or give this source some advantage\n\t\tif ( curCan && curCan.set === candidates[ 0 ].set ) {\n\n\t\t\t// if browser can abort image request and the image has a higher pixel density than needed\n\t\t\t// and this image isn't downloaded yet, we skip next part and try to save bandwidth\n\t\t\tabortCurSrc = (supportAbort && !img.complete && curCan.res - 0.1 > dpr);\n\n\t\t\tif ( !abortCurSrc ) {\n\t\t\t\tcurCan.cached = true;\n\n\t\t\t\t// if current candidate is \"best\", \"better\" or \"okay\",\n\t\t\t\t// set it to bestCandidate\n\t\t\t\tif ( curCan.res >= dpr ) {\n\t\t\t\t\tbestCandidate = curCan;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif ( !bestCandidate ) {\n\n\t\t\tcandidates.sort( ascendingSort );\n\n\t\t\tlength = candidates.length;\n\t\t\tbestCandidate = candidates[ length - 1 ];\n\n\t\t\tfor ( i = 0; i < length; i++ ) {\n\t\t\t\tcandidate = candidates[ i ];\n\t\t\t\tif ( candidate.res >= dpr ) {\n\t\t\t\t\tj = i - 1;\n\n\t\t\t\t\t// we have found the perfect candidate,\n\t\t\t\t\t// but let's improve this a little bit with some assumptions ;-)\n\t\t\t\t\tif (candidates[ j ] &&\n\t\t\t\t\t\t(abortCurSrc || curSrc !== pf.makeUrl( candidate.url )) &&\n\t\t\t\t\t\tchooseLowRes(candidates[ j ].res, candidate.res, dpr, candidates[ j ].cached)) {\n\n\t\t\t\t\t\tbestCandidate = candidates[ j ];\n\n\t\t\t\t\t} else {\n\t\t\t\t\t\tbestCandidate = candidate;\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif ( bestCandidate ) {\n\n\t\t\tcandidateSrc = pf.makeUrl( bestCandidate.url );\n\n\t\t\timageData.curSrc = candidateSrc;\n\t\t\timageData.curCan = bestCandidate;\n\n\t\t\tif ( candidateSrc !== curSrc ) {\n\t\t\t\tpf.setSrc( img, bestCandidate );\n\t\t\t}\n\t\t\tpf.setSize( img );\n\t\t}\n\t};\n\n\tpf.setSrc = function( img, bestCandidate ) {\n\t\tvar origWidth;\n\t\timg.src = bestCandidate.url;\n\n\t\t// although this is a specific Safari issue, we don't want to take too much different code paths\n\t\tif ( bestCandidate.set.type === \"image/svg+xml\" ) {\n\t\t\torigWidth = img.style.width;\n\t\t\timg.style.width = (img.offsetWidth + 1) + \"px\";\n\n\t\t\t// next line only should trigger a repaint\n\t\t\t// if... is only done to trick dead code removal\n\t\t\tif ( img.offsetWidth + 1 ) {\n\t\t\t\timg.style.width = origWidth;\n\t\t\t}\n\t\t}\n\t};\n\n\tpf.getSet = function( img ) {\n\t\tvar i, set, supportsType;\n\t\tvar match = false;\n\t\tvar sets = img [ pf.ns ].sets;\n\n\t\tfor ( i = 0; i < sets.length && !match; i++ ) {\n\t\t\tset = sets[i];\n\n\t\t\tif ( !set.srcset || !pf.matchesMedia( set.media ) || !(supportsType = pf.supportsType( set.type )) ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tif ( supportsType === \"pending\" ) {\n\t\t\t\tset = supportsType;\n\t\t\t}\n\n\t\t\tmatch = set;\n\t\t\tbreak;\n\t\t}\n\n\t\treturn match;\n\t};\n\n\tpf.parseSets = function( element, parent, options ) {\n\t\tvar srcsetAttribute, imageSet, isWDescripor, srcsetParsed;\n\n\t\tvar hasPicture = parent && parent.nodeName.toUpperCase() === \"PICTURE\";\n\t\tvar imageData = element[ pf.ns ];\n\n\t\tif ( imageData.src === undefined || options.src ) {\n\t\t\timageData.src = getImgAttr.call( element, \"src\" );\n\t\t\tif ( imageData.src ) {\n\t\t\t\tsetImgAttr.call( element, srcAttr, imageData.src );\n\t\t\t} else {\n\t\t\t\tremoveImgAttr.call( element, srcAttr );\n\t\t\t}\n\t\t}\n\n\t\tif ( imageData.srcset === undefined || options.srcset || !pf.supSrcset || element.srcset ) {\n\t\t\tsrcsetAttribute = getImgAttr.call( element, \"srcset\" );\n\t\t\timageData.srcset = srcsetAttribute;\n\t\t\tsrcsetParsed = true;\n\t\t}\n\n\t\timageData.sets = [];\n\n\t\tif ( hasPicture ) {\n\t\t\timageData.pic = true;\n\t\t\tgetAllSourceElements( parent, imageData.sets );\n\t\t}\n\n\t\tif ( imageData.srcset ) {\n\t\t\timageSet = {\n\t\t\t\tsrcset: imageData.srcset,\n\t\t\t\tsizes: getImgAttr.call( element, \"sizes\" )\n\t\t\t};\n\n\t\t\timageData.sets.push( imageSet );\n\n\t\t\tisWDescripor = (alwaysCheckWDescriptor || imageData.src) && regWDesc.test(imageData.srcset || \"\");\n\n\t\t\t// add normal src as candidate, if source has no w descriptor\n\t\t\tif ( !isWDescripor && imageData.src && !getCandidateForSrc(imageData.src, imageSet) && !imageSet.has1x ) {\n\t\t\t\timageSet.srcset += \", \" + imageData.src;\n\t\t\t\timageSet.cands.push({\n\t\t\t\t\turl: imageData.src,\n\t\t\t\t\td: 1,\n\t\t\t\t\tset: imageSet\n\t\t\t\t});\n\t\t\t}\n\n\t\t} else if ( imageData.src ) {\n\t\t\timageData.sets.push( {\n\t\t\t\tsrcset: imageData.src,\n\t\t\t\tsizes: null\n\t\t\t} );\n\t\t}\n\n\t\timageData.curCan = null;\n\t\timageData.curSrc = undefined;\n\n\t\t// if img has picture or the srcset was removed or has a srcset and does not support srcset at all\n\t\t// or has a w descriptor (and does not support sizes) set support to false to evaluate\n\t\timageData.supported = !( hasPicture || ( imageSet && !pf.supSrcset ) || (isWDescripor && !pf.supSizes) );\n\n\t\tif ( srcsetParsed && pf.supSrcset && !imageData.supported ) {\n\t\t\tif ( srcsetAttribute ) {\n\t\t\t\tsetImgAttr.call( element, srcsetAttr, srcsetAttribute );\n\t\t\t\telement.srcset = \"\";\n\t\t\t} else {\n\t\t\t\tremoveImgAttr.call( element, srcsetAttr );\n\t\t\t}\n\t\t}\n\n\t\tif (imageData.supported && !imageData.srcset && ((!imageData.src && element.src) ||  element.src !== pf.makeUrl(imageData.src))) {\n\t\t\tif (imageData.src === null) {\n\t\t\t\telement.removeAttribute(\"src\");\n\t\t\t} else {\n\t\t\t\telement.src = imageData.src;\n\t\t\t}\n\t\t}\n\n\t\timageData.parsed = true;\n\t};\n\n\tpf.fillImg = function(element, options) {\n\t\tvar imageData;\n\t\tvar extreme = options.reselect || options.reevaluate;\n\n\t\t// expando for caching data on the img\n\t\tif ( !element[ pf.ns ] ) {\n\t\t\telement[ pf.ns ] = {};\n\t\t}\n\n\t\timageData = element[ pf.ns ];\n\n\t\t// if the element has already been evaluated, skip it\n\t\t// unless `options.reevaluate` is set to true ( this, for example,\n\t\t// is set to true when running `picturefill` on `resize` ).\n\t\tif ( !extreme && imageData.evaled === evalId ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( !imageData.parsed || options.reevaluate ) {\n\t\t\tpf.parseSets( element, element.parentNode, options );\n\t\t}\n\n\t\tif ( !imageData.supported ) {\n\t\t\tapplyBestCandidate( element );\n\t\t} else {\n\t\t\timageData.evaled = evalId;\n\t\t}\n\t};\n\n\tpf.setupRun = function() {\n\t\tif ( !alreadyRun || isVwDirty || (DPR !== window.devicePixelRatio) ) {\n\t\t\tupdateMetrics();\n\t\t}\n\t};\n\n\t// If picture is supported, well, that's awesome.\n\tif ( pf.supPicture ) {\n\t\tpicturefill = noop;\n\t\tpf.fillImg = noop;\n\t} else {\n\n\t\t // Set up picture polyfill by polling the document\n\t\t(function() {\n\t\t\tvar isDomReady;\n\t\t\tvar regReady = window.attachEvent ? /d$|^c/ : /d$|^c|^i/;\n\n\t\t\tvar run = function() {\n\t\t\t\tvar readyState = document.readyState || \"\";\n\n\t\t\t\ttimerId = setTimeout(run, readyState === \"loading\" ? 200 :  999);\n\t\t\t\tif ( document.body ) {\n\t\t\t\t\tpf.fillImgs();\n\t\t\t\t\tisDomReady = isDomReady || regReady.test(readyState);\n\t\t\t\t\tif ( isDomReady ) {\n\t\t\t\t\t\tclearTimeout( timerId );\n\t\t\t\t\t}\n\n\t\t\t\t}\n\t\t\t};\n\n\t\t\tvar timerId = setTimeout(run, document.body ? 9 : 99);\n\n\t\t\t// Also attach picturefill on resize and readystatechange\n\t\t\t// http://modernjavascript.blogspot.com/2013/08/building-better-debounce.html\n\t\t\tvar debounce = function(func, wait) {\n\t\t\t\tvar timeout, timestamp;\n\t\t\t\tvar later = function() {\n\t\t\t\t\tvar last = (new Date()) - timestamp;\n\n\t\t\t\t\tif (last < wait) {\n\t\t\t\t\t\ttimeout = setTimeout(later, wait - last);\n\t\t\t\t\t} else {\n\t\t\t\t\t\ttimeout = null;\n\t\t\t\t\t\tfunc();\n\t\t\t\t\t}\n\t\t\t\t};\n\n\t\t\t\treturn function() {\n\t\t\t\t\ttimestamp = new Date();\n\n\t\t\t\t\tif (!timeout) {\n\t\t\t\t\t\ttimeout = setTimeout(later, wait);\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t};\n\t\t\tvar lastClientWidth = docElem.clientHeight;\n\t\t\tvar onResize = function() {\n\t\t\t\tisVwDirty = Math.max(window.innerWidth || 0, docElem.clientWidth) !== units.width || docElem.clientHeight !== lastClientWidth;\n\t\t\t\tlastClientWidth = docElem.clientHeight;\n\t\t\t\tif ( isVwDirty ) {\n\t\t\t\t\tpf.fillImgs();\n\t\t\t\t}\n\t\t\t};\n\n\t\t\ton( window, \"resize\", debounce(onResize, 99 ) );\n\t\t\ton( document, \"readystatechange\", run );\n\t\t})();\n\t}\n\n\tpf.picturefill = picturefill;\n\t//use this internally for easy monkey patching/performance testing\n\tpf.fillImgs = picturefill;\n\tpf.teardownRun = noop;\n\n\t/* expose methods for testing */\n\tpicturefill._ = pf;\n\n\twindow.picturefillCFG = {\n\t\tpf: pf,\n\t\tpush: function(args) {\n\t\t\tvar name = args.shift();\n\t\t\tif (typeof pf[name] === \"function\") {\n\t\t\t\tpf[name].apply(pf, args);\n\t\t\t} else {\n\t\t\t\tcfg[name] = args[0];\n\t\t\t\tif (alreadyRun) {\n\t\t\t\t\tpf.fillImgs( { reselect: true } );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n\n\twhile (setOptions && setOptions.length) {\n\t\twindow.picturefillCFG.push(setOptions.shift());\n\t}\n\n\t/* expose picturefill */\n\twindow.picturefill = picturefill;\n\n\t/* expose picturefill */\n\tif ( typeof module === \"object\" && typeof module.exports === \"object\" ) {\n\t\t// CommonJS, just export\n\t\tmodule.exports = picturefill;\n\t} else if ( typeof define === \"function\" && define.amd ) {\n\t\t// AMD support\n\t\tdefine( \"picturefill\", function() { return picturefill; } );\n\t}\n\n\t// IE8 evals this sync, so it must be the last thing we do\n\tif ( !pf.supPicture ) {\n\t\ttypes[ \"image/webp\" ] = detectTypeSupport(\"image/webp\", \"data:image/webp;base64,UklGRkoAAABXRUJQVlA4WAoAAAAQAAAAAAAAAAAAQUxQSAwAAAABBxAR/Q9ERP8DAABWUDggGAAAADABAJ0BKgEAAQADADQlpAADcAD++/1QAA==\" );\n\t}\n\n} )( window, document );\n","!function(e,t){\"object\"==typeof exports&&\"undefined\"!=typeof module?t(exports):\"function\"==typeof define&&define.amd?define([\"exports\"],t):t((e=\"undefined\"!=typeof globalThis?globalThis:e||self).Sqrl={})}(this,(function(e){\"use strict\";function t(e){var n,r,a=new Error(e);return n=a,r=t.prototype,Object.setPrototypeOf?Object.setPrototypeOf(n,r):n.__proto__=r,a}function n(e,n,r){var a=n.slice(0,r).split(/\\n/),i=a.length,s=a[i-1].length+1;throw t(e+=\" at line \"+i+\" col \"+s+\":\\n\\n  \"+n.split(/\\n/)[i-1]+\"\\n  \"+Array(s).join(\" \")+\"^\")}t.prototype=Object.create(Error.prototype,{name:{value:\"Squirrelly Error\",enumerable:!1}});var r=new Function(\"return this\")().Promise,a=!1;try{a=new Function(\"return (async function(){}).constructor\")()}catch(e){if(!(e instanceof SyntaxError))throw e}function i(e,t){return Object.prototype.hasOwnProperty.call(e,t)}function s(e,t,n){for(var r in t)i(t,r)&&(null==t[r]||\"object\"!=typeof t[r]||\"storage\"!==r&&\"prefixes\"!==r||n?e[r]=t[r]:e[r]=s({},t[r]));return e}var o=/^async +/,c=/`(?:\\\\[\\s\\S]|\\${(?:[^{}]|{(?:[^{}]|{[^}]*})*})*}|(?!\\${)[^\\\\`])*`/g,l=/'(?:\\\\[\\s\\w\"'\\\\`]|[^\\n\\r'\\\\])*?'/g,f=/\"(?:\\\\[\\s\\w\"'\\\\`]|[^\\n\\r\"\\\\])*?\"/g,u=/[.*+\\-?^${}()|[\\]\\\\]/g;function p(e){return u.test(e)?e.replace(u,\"\\\\$&\"):e}function h(e,r){r.rmWhitespace&&(e=e.replace(/[\\r\\n]+/g,\"\\n\").replace(/^\\s+|\\s+$/gm,\"\")),c.lastIndex=0,l.lastIndex=0,f.lastIndex=0;var a=r.prefixes,i=[a.h,a.b,a.i,a.r,a.c,a.e].reduce((function(e,t){return e&&t?e+\"|\"+p(t):t?p(t):e}),\"\"),s=new RegExp(\"([|()]|=>)|('|\\\"|`|\\\\/\\\\*)|\\\\s*((\\\\/)?(-|_)?\"+p(r.tags[1])+\")\",\"g\"),u=new RegExp(\"([^]*?)\"+p(r.tags[0])+\"(-|_)?\\\\s*(\"+i+\")?\\\\s*\",\"g\"),h=0,d=!1;function g(t,a){var i,p={f:[]},g=0,v=\"c\";function m(t){var a=e.slice(h,t),i=a.trim();if(\"f\"===v)\"safe\"===i?p.raw=!0:r.async&&o.test(i)?(i=i.replace(o,\"\"),p.f.push([i,\"\",!0])):p.f.push([i,\"\"]);else if(\"fp\"===v)p.f[p.f.length-1][1]+=i;else if(\"err\"===v){if(i){var s=a.search(/\\S/);n(\"invalid syntax\",e,h+s)}}else p[v]=i;h=t+1}for(\"h\"===a||\"b\"===a||\"c\"===a?v=\"n\":\"r\"===a&&(p.raw=!0,a=\"i\"),s.lastIndex=h;null!==(i=s.exec(e));){var y=i[1],x=i[2],b=i[3],w=i[4],S=i[5],F=i.index;if(y)\"(\"===y?(0===g&&(\"n\"===v?(m(F),v=\"p\"):\"f\"===v&&(m(F),v=\"fp\")),g++):\")\"===y?0===--g&&\"c\"!==v&&(m(F),v=\"err\"):0===g&&\"|\"===y?(m(F),v=\"f\"):\"=>\"===y&&(m(F),h+=1,v=\"res\");else if(x){if(\"/*\"===x){var I=e.indexOf(\"*/\",s.lastIndex);-1===I&&n(\"unclosed comment\",e,i.index),s.lastIndex=I+2}else if(\"'\"===x){l.lastIndex=i.index,l.exec(e)?s.lastIndex=l.lastIndex:n(\"unclosed string\",e,i.index)}else if('\"'===x){f.lastIndex=i.index,f.exec(e)?s.lastIndex=f.lastIndex:n(\"unclosed string\",e,i.index)}else if(\"`\"===x){c.lastIndex=i.index,c.exec(e)?s.lastIndex=c.lastIndex:n(\"unclosed string\",e,i.index)}}else if(b)return m(F),h=F+i[0].length,u.lastIndex=h,d=S,w&&\"h\"===a&&(a=\"s\"),p.t=a,p}return n(\"unclosed tag\",e,t),p}var v=function i(s,c){s.b=[],s.d=[];var l,f=!1,p=[];function v(e,t){e&&(e=function(e,t,n,r){var a,i;return\"string\"==typeof t.autoTrim?a=i=t.autoTrim:Array.isArray(t.autoTrim)&&(a=t.autoTrim[1],i=t.autoTrim[0]),(n||!1===n)&&(a=n),(r||!1===r)&&(i=r),\"slurp\"===a&&\"slurp\"===i?e.trim():(\"_\"===a||\"slurp\"===a?e=String.prototype.trimLeft?e.trimLeft():e.replace(/^[\\s\\uFEFF\\xA0]+/,\"\"):\"-\"!==a&&\"nl\"!==a||(e=e.replace(/^(?:\\n|\\r|\\r\\n)/,\"\")),\"_\"===i||\"slurp\"===i?e=String.prototype.trimRight?e.trimRight():e.replace(/[\\s\\uFEFF\\xA0]+$/,\"\"):\"-\"!==i&&\"nl\"!==i||(e=e.replace(/(?:\\n|\\r|\\r\\n)$/,\"\")),e)}(e,r,d,t),e&&(e=e.replace(/\\\\|'/g,\"\\\\$&\").replace(/\\r\\n|\\n|\\r/g,\"\\\\n\"),p.push(e)))}for(;null!==(l=u.exec(e));){var m,y=l[1],x=l[2],b=l[3]||\"\";for(var w in a)if(a[w]===b){m=w;break}v(y,x),h=l.index+l[0].length,m||n(\"unrecognized tag type: \"+b,e,h);var S=g(l.index,m),F=S.t;if(\"h\"===F){var I=S.n||\"\";r.async&&o.test(I)&&(S.a=!0,S.n=I.replace(o,\"\")),S=i(S),p.push(S)}else if(\"c\"===F){if(s.n===S.n)return f?(f.d=p,s.b.push(f)):s.d=p,s;n(\"Helper start and end don't match\",e,l.index+l[0].length)}else if(\"b\"===F){f?(f.d=p,s.b.push(f)):s.d=p;var R=S.n||\"\";r.async&&o.test(R)&&(S.a=!0,S.n=R.replace(o,\"\")),f=S,p=[]}else if(\"s\"===F){var T=S.n||\"\";r.async&&o.test(T)&&(S.a=!0,S.n=T.replace(o,\"\")),p.push(S)}else p.push(S)}if(!c)throw t('unclosed helper \"'+s.n+'\"');return v(e.slice(h,e.length),!1),s.d=p,s}({f:[]},!0);if(r.plugins)for(var m=0;m<r.plugins.length;m++){var y=r.plugins[m];y.processAST&&(v.d=y.processAST(v.d,r))}return v.d}function d(e,t){var n=h(e,t),r=\"var tR='';\"+(t.useWith?\"with(\"+t.varName+\"||{}){\":\"\")+x(n,t)+\"if(cb){cb(null,tR)} return tR\"+(t.useWith?\"}\":\"\");if(t.plugins)for(var a=0;a<t.plugins.length;a++){var i=t.plugins[a];i.processFnString&&(r=i.processFnString(r,t))}return r}function g(e,t){for(var n=0;n<t.length;n++){var r=t[n][0],a=t[n][1];e=(t[n][2]?\"await \":\"\")+\"c.l('F','\"+r+\"')(\"+e,a&&(e+=\",\"+a),e+=\")\"}return e}function v(e,t,n,r,a,i){var s=\"{exec:\"+(a?\"async \":\"\")+y(n,t,e)+\",params:[\"+r+\"]\";return i&&(s+=\",name:'\"+i+\"'\"),a&&(s+=\",async:true\"),s+=\"}\"}function m(e,t){for(var n=\"[\",r=0;r<e.length;r++){var a=e[r];n+=v(t,a.res||\"\",a.d,a.p||\"\",a.a,a.n),r<e.length&&(n+=\",\")}return n+=\"]\"}function y(e,t,n){return\"function(\"+t+\"){var tR='';\"+x(e,n)+\"return tR}\"}function x(e,t){for(var n=0,r=e.length,a=\"\";n<r;n++){var i=e[n];if(\"string\"==typeof i){a+=\"tR+='\"+i+\"';\"}else{var s=i.t,o=i.c||\"\",c=i.f,l=i.n||\"\",f=i.p||\"\",u=i.res||\"\",p=i.b,h=!!i.a;if(\"i\"===s){t.defaultFilter&&(o=\"c.l('F',\"+JSON.stringify(t.defaultFilter)+\")(\"+o+\")\");var d=g(o,c);!i.raw&&t.autoEscape&&(d=\"c.l('F','e')(\"+d+\")\"),a+=\"tR+=\"+d+\";\"}else if(\"h\"===s)if(t.storage.nativeHelpers.get(l))a+=t.storage.nativeHelpers.get(l)(i,t);else{var y=(h?\"await \":\"\")+\"c.l('H','\"+l+\"')(\"+v(t,u,i.d,f,h);y+=p?\",\"+m(p,t):\",[]\",a+=\"tR+=\"+g(y+=\",c)\",c)+\";\"}else\"s\"===s?a+=\"tR+=\"+g((h?\"await \":\"\")+\"c.l('H','\"+l+\"')({params:[\"+f+\"]},[],c)\",c)+\";\":\"e\"===s&&(a+=o+\"\\n\")}}return a}var b=function(){function e(e){this.cache=e}return e.prototype.define=function(e,t){this.cache[e]=t},e.prototype.get=function(e){return this.cache[e]},e.prototype.remove=function(e){delete this.cache[e]},e.prototype.reset=function(){this.cache={}},e.prototype.load=function(e){s(this.cache,e,!0)},e}();function w(e,n,r,a){if(n&&n.length>0)throw t((a?\"Native\":\"\")+\"Helper '\"+e+\"' doesn't accept blocks\");if(r&&r.length>0)throw t((a?\"Native\":\"\")+\"Helper '\"+e+\"' doesn't accept filters\")}function S(e,t,n,r,a){n(e[t],t).then((function(i){r+=i,t===e.length-1?a(r):S(e,t+1,n,r,a)}))}function F(e,t,n,r,a,i){r(t[n],e[t[n]]).then((function(s){a+=s,n===t.length-1?i(a):F(e,t,n+1,r,a,i)}))}var I={\"&\":\"&amp;\",\"<\":\"&lt;\",\">\":\"&gt;\",'\"':\"&quot;\",\"'\":\"&#39;\"};function R(e){return I[e]}var T=new b({}),_=new b({each:function(e,t){var n=\"\",r=e.params[0];if(w(\"each\",t,!1),e.async)return new Promise((function(t){S(r,0,e.exec,n,t)}));for(var a=0;a<r.length;a++)n+=e.exec(r[a],a);return n},foreach:function(e,t){var n=e.params[0];if(w(\"foreach\",t,!1),e.async)return new Promise((function(t){F(n,Object.keys(n),0,e.exec,\"\",t)}));var r=\"\";for(var a in n)i(n,a)&&(r+=e.exec(a,n[a]));return r},include:function(e,n,r){w(\"include\",n,!1);var a=r.storage.templates.get(e.params[0]);if(!a)throw t('Could not fetch template \"'+e.params[0]+'\"');return a(e.params[1],r)},extends:function(e,n,r){var a=e.params[1]||{};a.content=e.exec();for(var i=0;i<n.length;i++){var s=n[i];a[s.name]=s.exec()}var o=r.storage.templates.get(e.params[0]);if(!o)throw t('Could not fetch template \"'+e.params[0]+'\"');return o(a,r)},useScope:function(e,t){return w(\"useScope\",t,!1),e.exec(e.params[0])}}),E=new b({if:function(e,t){w(\"if\",!1,e.f,!0);var n=\"if(\"+e.p+\"){\"+x(e.d,t)+\"}\";if(e.b)for(var r=0;r<e.b.length;r++){var a=e.b[r];\"else\"===a.n?n+=\"else{\"+x(a.d,t)+\"}\":\"elif\"===a.n&&(n+=\"else if(\"+a.p+\"){\"+x(a.d,t)+\"}\")}return n},try:function(e,n){if(w(\"try\",!1,e.f,!0),!e.b||1!==e.b.length||\"catch\"!==e.b[0].n)throw t(\"native helper 'try' only accepts 1 block, 'catch'\");var r=\"try{\"+x(e.d,n)+\"}\",a=e.b[0];return r+=\"catch\"+(a.res?\"(\"+a.res+\")\":\"\")+\"{\"+x(a.d,n)+\"}\"},block:function(e,t){return w(\"block\",e.b,e.f,!0),\"if(!\"+t.varName+\"[\"+e.p+\"]){tR+=(\"+y(e.d,\"\",t)+\")()}else{tR+=\"+t.varName+\"[\"+e.p+\"]}\"}}),N=new b({e:function(e){var t=String(e);return/[&<>\"']/.test(t)?t.replace(/[&<>\"']/g,R):t}}),O={varName:\"it\",autoTrim:[!1,\"nl\"],autoEscape:!0,defaultFilter:!1,tags:[\"{{\",\"}}\"],l:function(e,n){if(\"H\"===e){var r=this.storage.helpers.get(n);if(r)return r;throw t(\"Can't find helper '\"+n+\"'\")}if(\"F\"===e){var a=this.storage.filters.get(n);if(a)return a;throw t(\"Can't find filter '\"+n+\"'\")}},async:!1,storage:{helpers:_,nativeHelpers:E,filters:N,templates:T},prefixes:{h:\"@\",b:\"#\",i:\"\",r:\"*\",c:\"/\",e:\"!\"},cache:!1,plugins:[],useWith:!1};function $(e,t){var n={};return s(n,O),t&&s(n,t),e&&s(n,e),n.l.bind(n),n}function j(e,n){var r,i=$(n||{}),s=Function;if(i.async){if(!a)throw t(\"This environment doesn't support async/await\");s=a}if(i.varName&&!1===(r=i.varName,/^[a-zA-Z_$][a-zA-Z0-9_$]*$/.test(r)))throw t(\"options.varName must be a valid JS identifier\");try{return new s(i.varName,\"c\",\"cb\",d(e,i))}catch(n){throw n instanceof SyntaxError?t(\"Bad template syntax\\n\\n\"+n.message+\"\\n\"+Array(n.message.length+1).join(\"=\")+\"\\n\"+d(e,i)):n}}function A(e,t){var n;return t.cache&&t.name&&t.storage.templates.get(t.name)?t.storage.templates.get(t.name):(n=\"function\"==typeof e?e:j(e,t),t.cache&&t.name&&t.storage.templates.define(t.name,n),n)}O.l.bind(O),e.compile=j,e.compileScope=x,e.compileScopeIntoFunction=y,e.compileToString=d,e.defaultConfig=O,e.filters=N,e.getConfig=$,e.helpers=_,e.nativeHelpers=E,e.parse=h,e.render=function(e,n,a,i){var s=$(a||{});if(!s.async)return A(e,s)(n,s);if(!i){if(\"function\"==typeof r)return new r((function(t,r){try{t(A(e,s)(n,s))}catch(e){r(e)}}));throw t(\"Please provide a callback function, this env doesn't support Promises\")}try{A(e,s)(n,s,i)}catch(e){return i(e)}},e.templates=T,Object.defineProperty(e,\"__esModule\",{value:!0})}));\n//# sourceMappingURL=squirrelly.min.js.map\n","/*!\n * validate.js 0.13.1\n *\n * (c) 2013-2019 Nicklas Ansman, 2013 Wrapp\n * Validate.js may be freely distributed under the MIT license.\n * For all details and documentation:\n * http://validatejs.org/\n */\n\n(function(exports, module, define) {\n  \"use strict\";\n\n  // The main function that calls the validators specified by the constraints.\n  // The options are the following:\n  //   - format (string) - An option that controls how the returned value is formatted\n  //     * flat - Returns a flat array of just the error messages\n  //     * grouped - Returns the messages grouped by attribute (default)\n  //     * detailed - Returns an array of the raw validation data\n  //   - fullMessages (boolean) - If `true` (default) the attribute name is prepended to the error.\n  //\n  // Please note that the options are also passed to each validator.\n  var validate = function(attributes, constraints, options) {\n    options = v.extend({}, v.options, options);\n\n    var results = v.runValidations(attributes, constraints, options)\n      , attr\n      , validator;\n\n    if (results.some(function(r) { return v.isPromise(r.error); })) {\n      throw new Error(\"Use validate.async if you want support for promises\");\n    }\n    return validate.processValidationResults(results, options);\n  };\n\n  var v = validate;\n\n  // Copies over attributes from one or more sources to a single destination.\n  // Very much similar to underscore's extend.\n  // The first argument is the target object and the remaining arguments will be\n  // used as sources.\n  v.extend = function(obj) {\n    [].slice.call(arguments, 1).forEach(function(source) {\n      for (var attr in source) {\n        obj[attr] = source[attr];\n      }\n    });\n    return obj;\n  };\n\n  v.extend(validate, {\n    // This is the version of the library as a semver.\n    // The toString function will allow it to be coerced into a string\n    version: {\n      major: 0,\n      minor: 13,\n      patch: 1,\n      metadata: null,\n      toString: function() {\n        var version = v.format(\"%{major}.%{minor}.%{patch}\", v.version);\n        if (!v.isEmpty(v.version.metadata)) {\n          version += \"+\" + v.version.metadata;\n        }\n        return version;\n      }\n    },\n\n    // Below is the dependencies that are used in validate.js\n\n    // The constructor of the Promise implementation.\n    // If you are using Q.js, RSVP or any other A+ compatible implementation\n    // override this attribute to be the constructor of that promise.\n    // Since jQuery promises aren't A+ compatible they won't work.\n    Promise: typeof Promise !== \"undefined\" ? Promise : /* istanbul ignore next */ null,\n\n    EMPTY_STRING_REGEXP: /^\\s*$/,\n\n    // Runs the validators specified by the constraints object.\n    // Will return an array of the format:\n    //     [{attribute: \"<attribute name>\", error: \"<validation result>\"}, ...]\n    runValidations: function(attributes, constraints, options) {\n      var results = []\n        , attr\n        , validatorName\n        , value\n        , validators\n        , validator\n        , validatorOptions\n        , error;\n\n      if (v.isDomElement(attributes) || v.isJqueryElement(attributes)) {\n        attributes = v.collectFormValues(attributes);\n      }\n\n      // Loops through each constraints, finds the correct validator and run it.\n      for (attr in constraints) {\n        value = v.getDeepObjectValue(attributes, attr);\n        // This allows the constraints for an attribute to be a function.\n        // The function will be called with the value, attribute name, the complete dict of\n        // attributes as well as the options and constraints passed in.\n        // This is useful when you want to have different\n        // validations depending on the attribute value.\n        validators = v.result(constraints[attr], value, attributes, attr, options, constraints);\n\n        for (validatorName in validators) {\n          validator = v.validators[validatorName];\n\n          if (!validator) {\n            error = v.format(\"Unknown validator %{name}\", {name: validatorName});\n            throw new Error(error);\n          }\n\n          validatorOptions = validators[validatorName];\n          // This allows the options to be a function. The function will be\n          // called with the value, attribute name, the complete dict of\n          // attributes as well as the options and constraints passed in.\n          // This is useful when you want to have different\n          // validations depending on the attribute value.\n          validatorOptions = v.result(validatorOptions, value, attributes, attr, options, constraints);\n          if (!validatorOptions) {\n            continue;\n          }\n          results.push({\n            attribute: attr,\n            value: value,\n            validator: validatorName,\n            globalOptions: options,\n            attributes: attributes,\n            options: validatorOptions,\n            error: validator.call(validator,\n                value,\n                validatorOptions,\n                attr,\n                attributes,\n                options)\n          });\n        }\n      }\n\n      return results;\n    },\n\n    // Takes the output from runValidations and converts it to the correct\n    // output format.\n    processValidationResults: function(errors, options) {\n      errors = v.pruneEmptyErrors(errors, options);\n      errors = v.expandMultipleErrors(errors, options);\n      errors = v.convertErrorMessages(errors, options);\n\n      var format = options.format || \"grouped\";\n\n      if (typeof v.formatters[format] === 'function') {\n        errors = v.formatters[format](errors);\n      } else {\n        throw new Error(v.format(\"Unknown format %{format}\", options));\n      }\n\n      return v.isEmpty(errors) ? undefined : errors;\n    },\n\n    // Runs the validations with support for promises.\n    // This function will return a promise that is settled when all the\n    // validation promises have been completed.\n    // It can be called even if no validations returned a promise.\n    async: function(attributes, constraints, options) {\n      options = v.extend({}, v.async.options, options);\n\n      var WrapErrors = options.wrapErrors || function(errors) {\n        return errors;\n      };\n\n      // Removes unknown attributes\n      if (options.cleanAttributes !== false) {\n        attributes = v.cleanAttributes(attributes, constraints);\n      }\n\n      var results = v.runValidations(attributes, constraints, options);\n\n      return new v.Promise(function(resolve, reject) {\n        v.waitForResults(results).then(function() {\n          var errors = v.processValidationResults(results, options);\n          if (errors) {\n            reject(new WrapErrors(errors, options, attributes, constraints));\n          } else {\n            resolve(attributes);\n          }\n        }, function(err) {\n          reject(err);\n        });\n      });\n    },\n\n    single: function(value, constraints, options) {\n      options = v.extend({}, v.single.options, options, {\n        format: \"flat\",\n        fullMessages: false\n      });\n      return v({single: value}, {single: constraints}, options);\n    },\n\n    // Returns a promise that is resolved when all promises in the results array\n    // are settled. The promise returned from this function is always resolved,\n    // never rejected.\n    // This function modifies the input argument, it replaces the promises\n    // with the value returned from the promise.\n    waitForResults: function(results) {\n      // Create a sequence of all the results starting with a resolved promise.\n      return results.reduce(function(memo, result) {\n        // If this result isn't a promise skip it in the sequence.\n        if (!v.isPromise(result.error)) {\n          return memo;\n        }\n\n        return memo.then(function() {\n          return result.error.then(function(error) {\n            result.error = error || null;\n          });\n        });\n      }, new v.Promise(function(r) { r(); })); // A resolved promise\n    },\n\n    // If the given argument is a call: function the and: function return the value\n    // otherwise just return the value. Additional arguments will be passed as\n    // arguments to the function.\n    // Example:\n    // ```\n    // result('foo') // 'foo'\n    // result(Math.max, 1, 2) // 2\n    // ```\n    result: function(value) {\n      var args = [].slice.call(arguments, 1);\n      if (typeof value === 'function') {\n        value = value.apply(null, args);\n      }\n      return value;\n    },\n\n    // Checks if the value is a number. This function does not consider NaN a\n    // number like many other `isNumber` functions do.\n    isNumber: function(value) {\n      return typeof value === 'number' && !isNaN(value);\n    },\n\n    // Returns false if the object is not a function\n    isFunction: function(value) {\n      return typeof value === 'function';\n    },\n\n    // A simple check to verify that the value is an integer. Uses `isNumber`\n    // and a simple modulo check.\n    isInteger: function(value) {\n      return v.isNumber(value) && value % 1 === 0;\n    },\n\n    // Checks if the value is a boolean\n    isBoolean: function(value) {\n      return typeof value === 'boolean';\n    },\n\n    // Uses the `Object` function to check if the given argument is an object.\n    isObject: function(obj) {\n      return obj === Object(obj);\n    },\n\n    // Simply checks if the object is an instance of a date\n    isDate: function(obj) {\n      return obj instanceof Date;\n    },\n\n    // Returns false if the object is `null` of `undefined`\n    isDefined: function(obj) {\n      return obj !== null && obj !== undefined;\n    },\n\n    // Checks if the given argument is a promise. Anything with a `then`\n    // function is considered a promise.\n    isPromise: function(p) {\n      return !!p && v.isFunction(p.then);\n    },\n\n    isJqueryElement: function(o) {\n      return o && v.isString(o.jquery);\n    },\n\n    isDomElement: function(o) {\n      if (!o) {\n        return false;\n      }\n\n      if (!o.querySelectorAll || !o.querySelector) {\n        return false;\n      }\n\n      if (v.isObject(document) && o === document) {\n        return true;\n      }\n\n      // http://stackoverflow.com/a/384380/699304\n      /* istanbul ignore else */\n      if (typeof HTMLElement === \"object\") {\n        return o instanceof HTMLElement;\n      } else {\n        return o &&\n          typeof o === \"object\" &&\n          o !== null &&\n          o.nodeType === 1 &&\n          typeof o.nodeName === \"string\";\n      }\n    },\n\n    isEmpty: function(value) {\n      var attr;\n\n      // Null and undefined are empty\n      if (!v.isDefined(value)) {\n        return true;\n      }\n\n      // functions are non empty\n      if (v.isFunction(value)) {\n        return false;\n      }\n\n      // Whitespace only strings are empty\n      if (v.isString(value)) {\n        return v.EMPTY_STRING_REGEXP.test(value);\n      }\n\n      // For arrays we use the length property\n      if (v.isArray(value)) {\n        return value.length === 0;\n      }\n\n      // Dates have no attributes but aren't empty\n      if (v.isDate(value)) {\n        return false;\n      }\n\n      // If we find at least one property we consider it non empty\n      if (v.isObject(value)) {\n        for (attr in value) {\n          return false;\n        }\n        return true;\n      }\n\n      return false;\n    },\n\n    // Formats the specified strings with the given values like so:\n    // ```\n    // format(\"Foo: %{foo}\", {foo: \"bar\"}) // \"Foo bar\"\n    // ```\n    // If you want to write %{...} without having it replaced simply\n    // prefix it with % like this `Foo: %%{foo}` and it will be returned\n    // as `\"Foo: %{foo}\"`\n    format: v.extend(function(str, vals) {\n      if (!v.isString(str)) {\n        return str;\n      }\n      return str.replace(v.format.FORMAT_REGEXP, function(m0, m1, m2) {\n        if (m1 === '%') {\n          return \"%{\" + m2 + \"}\";\n        } else {\n          return String(vals[m2]);\n        }\n      });\n    }, {\n      // Finds %{key} style patterns in the given string\n      FORMAT_REGEXP: /(%?)%\\{([^\\}]+)\\}/g\n    }),\n\n    // \"Prettifies\" the given string.\n    // Prettifying means replacing [.\\_-] with spaces as well as splitting\n    // camel case words.\n    prettify: function(str) {\n      if (v.isNumber(str)) {\n        // If there are more than 2 decimals round it to two\n        if ((str * 100) % 1 === 0) {\n          return \"\" + str;\n        } else {\n          return parseFloat(Math.round(str * 100) / 100).toFixed(2);\n        }\n      }\n\n      if (v.isArray(str)) {\n        return str.map(function(s) { return v.prettify(s); }).join(\", \");\n      }\n\n      if (v.isObject(str)) {\n        if (!v.isDefined(str.toString)) {\n          return JSON.stringify(str);\n        }\n\n        return str.toString();\n      }\n\n      // Ensure the string is actually a string\n      str = \"\" + str;\n\n      return str\n        // Splits keys separated by periods\n        .replace(/([^\\s])\\.([^\\s])/g, '$1 $2')\n        // Removes backslashes\n        .replace(/\\\\+/g, '')\n        // Replaces - and - with space\n        .replace(/[_-]/g, ' ')\n        // Splits camel cased words\n        .replace(/([a-z])([A-Z])/g, function(m0, m1, m2) {\n          return \"\" + m1 + \" \" + m2.toLowerCase();\n        })\n        .toLowerCase();\n    },\n\n    stringifyValue: function(value, options) {\n      var prettify = options && options.prettify || v.prettify;\n      return prettify(value);\n    },\n\n    isString: function(value) {\n      return typeof value === 'string';\n    },\n\n    isArray: function(value) {\n      return {}.toString.call(value) === '[object Array]';\n    },\n\n    // Checks if the object is a hash, which is equivalent to an object that\n    // is neither an array nor a function.\n    isHash: function(value) {\n      return v.isObject(value) && !v.isArray(value) && !v.isFunction(value);\n    },\n\n    contains: function(obj, value) {\n      if (!v.isDefined(obj)) {\n        return false;\n      }\n      if (v.isArray(obj)) {\n        return obj.indexOf(value) !== -1;\n      }\n      return value in obj;\n    },\n\n    unique: function(array) {\n      if (!v.isArray(array)) {\n        return array;\n      }\n      return array.filter(function(el, index, array) {\n        return array.indexOf(el) == index;\n      });\n    },\n\n    forEachKeyInKeypath: function(object, keypath, callback) {\n      if (!v.isString(keypath)) {\n        return undefined;\n      }\n\n      var key = \"\"\n        , i\n        , escape = false;\n\n      for (i = 0; i < keypath.length; ++i) {\n        switch (keypath[i]) {\n          case '.':\n            if (escape) {\n              escape = false;\n              key += '.';\n            } else {\n              object = callback(object, key, false);\n              key = \"\";\n            }\n            break;\n\n          case '\\\\':\n            if (escape) {\n              escape = false;\n              key += '\\\\';\n            } else {\n              escape = true;\n            }\n            break;\n\n          default:\n            escape = false;\n            key += keypath[i];\n            break;\n        }\n      }\n\n      return callback(object, key, true);\n    },\n\n    getDeepObjectValue: function(obj, keypath) {\n      if (!v.isObject(obj)) {\n        return undefined;\n      }\n\n      return v.forEachKeyInKeypath(obj, keypath, function(obj, key) {\n        if (v.isObject(obj)) {\n          return obj[key];\n        }\n      });\n    },\n\n    // This returns an object with all the values of the form.\n    // It uses the input name as key and the value as value\n    // So for example this:\n    // <input type=\"text\" name=\"email\" value=\"foo@bar.com\" />\n    // would return:\n    // {email: \"foo@bar.com\"}\n    collectFormValues: function(form, options) {\n      var values = {}\n        , i\n        , j\n        , input\n        , inputs\n        , option\n        , value;\n\n      if (v.isJqueryElement(form)) {\n        form = form[0];\n      }\n\n      if (!form) {\n        return values;\n      }\n\n      options = options || {};\n\n      inputs = form.querySelectorAll(\"input[name], textarea[name]\");\n      for (i = 0; i < inputs.length; ++i) {\n        input = inputs.item(i);\n\n        if (v.isDefined(input.getAttribute(\"data-ignored\"))) {\n          continue;\n        }\n\n        var name = input.name.replace(/\\./g, \"\\\\\\\\.\");\n        value = v.sanitizeFormValue(input.value, options);\n        if (input.type === \"number\") {\n          value = value ? +value : null;\n        } else if (input.type === \"checkbox\") {\n          if (input.attributes.value) {\n            if (!input.checked) {\n              value = values[name] || null;\n            }\n          } else {\n            value = input.checked;\n          }\n        } else if (input.type === \"radio\") {\n          if (!input.checked) {\n            value = values[name] || null;\n          }\n        }\n        values[name] = value;\n      }\n\n      inputs = form.querySelectorAll(\"select[name]\");\n      for (i = 0; i < inputs.length; ++i) {\n        input = inputs.item(i);\n        if (v.isDefined(input.getAttribute(\"data-ignored\"))) {\n          continue;\n        }\n\n        if (input.multiple) {\n          value = [];\n          for (j in input.options) {\n            option = input.options[j];\n             if (option && option.selected) {\n              value.push(v.sanitizeFormValue(option.value, options));\n            }\n          }\n        } else {\n          var _val = typeof input.options[input.selectedIndex] !== 'undefined' ? input.options[input.selectedIndex].value : /* istanbul ignore next */ '';\n          value = v.sanitizeFormValue(_val, options);\n        }\n        values[input.name] = value;\n      }\n\n      return values;\n    },\n\n    sanitizeFormValue: function(value, options) {\n      if (options.trim && v.isString(value)) {\n        value = value.trim();\n      }\n\n      if (options.nullify !== false && value === \"\") {\n        return null;\n      }\n      return value;\n    },\n\n    capitalize: function(str) {\n      if (!v.isString(str)) {\n        return str;\n      }\n      return str[0].toUpperCase() + str.slice(1);\n    },\n\n    // Remove all errors who's error attribute is empty (null or undefined)\n    pruneEmptyErrors: function(errors) {\n      return errors.filter(function(error) {\n        return !v.isEmpty(error.error);\n      });\n    },\n\n    // In\n    // [{error: [\"err1\", \"err2\"], ...}]\n    // Out\n    // [{error: \"err1\", ...}, {error: \"err2\", ...}]\n    //\n    // All attributes in an error with multiple messages are duplicated\n    // when expanding the errors.\n    expandMultipleErrors: function(errors) {\n      var ret = [];\n      errors.forEach(function(error) {\n        // Removes errors without a message\n        if (v.isArray(error.error)) {\n          error.error.forEach(function(msg) {\n            ret.push(v.extend({}, error, {error: msg}));\n          });\n        } else {\n          ret.push(error);\n        }\n      });\n      return ret;\n    },\n\n    // Converts the error mesages by prepending the attribute name unless the\n    // message is prefixed by ^\n    convertErrorMessages: function(errors, options) {\n      options = options || {};\n\n      var ret = []\n        , prettify = options.prettify || v.prettify;\n      errors.forEach(function(errorInfo) {\n        var error = v.result(errorInfo.error,\n            errorInfo.value,\n            errorInfo.attribute,\n            errorInfo.options,\n            errorInfo.attributes,\n            errorInfo.globalOptions);\n\n        if (!v.isString(error)) {\n          ret.push(errorInfo);\n          return;\n        }\n\n        if (error[0] === '^') {\n          error = error.slice(1);\n        } else if (options.fullMessages !== false) {\n          error = v.capitalize(prettify(errorInfo.attribute)) + \" \" + error;\n        }\n        error = error.replace(/\\\\\\^/g, \"^\");\n        error = v.format(error, {\n          value: v.stringifyValue(errorInfo.value, options)\n        });\n        ret.push(v.extend({}, errorInfo, {error: error}));\n      });\n      return ret;\n    },\n\n    // In:\n    // [{attribute: \"<attributeName>\", ...}]\n    // Out:\n    // {\"<attributeName>\": [{attribute: \"<attributeName>\", ...}]}\n    groupErrorsByAttribute: function(errors) {\n      var ret = {};\n      errors.forEach(function(error) {\n        var list = ret[error.attribute];\n        if (list) {\n          list.push(error);\n        } else {\n          ret[error.attribute] = [error];\n        }\n      });\n      return ret;\n    },\n\n    // In:\n    // [{error: \"<message 1>\", ...}, {error: \"<message 2>\", ...}]\n    // Out:\n    // [\"<message 1>\", \"<message 2>\"]\n    flattenErrorsToArray: function(errors) {\n      return errors\n        .map(function(error) { return error.error; })\n        .filter(function(value, index, self) {\n          return self.indexOf(value) === index;\n        });\n    },\n\n    cleanAttributes: function(attributes, whitelist) {\n      function whitelistCreator(obj, key, last) {\n        if (v.isObject(obj[key])) {\n          return obj[key];\n        }\n        return (obj[key] = last ? true : {});\n      }\n\n      function buildObjectWhitelist(whitelist) {\n        var ow = {}\n          , lastObject\n          , attr;\n        for (attr in whitelist) {\n          if (!whitelist[attr]) {\n            continue;\n          }\n          v.forEachKeyInKeypath(ow, attr, whitelistCreator);\n        }\n        return ow;\n      }\n\n      function cleanRecursive(attributes, whitelist) {\n        if (!v.isObject(attributes)) {\n          return attributes;\n        }\n\n        var ret = v.extend({}, attributes)\n          , w\n          , attribute;\n\n        for (attribute in attributes) {\n          w = whitelist[attribute];\n\n          if (v.isObject(w)) {\n            ret[attribute] = cleanRecursive(ret[attribute], w);\n          } else if (!w) {\n            delete ret[attribute];\n          }\n        }\n        return ret;\n      }\n\n      if (!v.isObject(whitelist) || !v.isObject(attributes)) {\n        return {};\n      }\n\n      whitelist = buildObjectWhitelist(whitelist);\n      return cleanRecursive(attributes, whitelist);\n    },\n\n    exposeModule: function(validate, root, exports, module, define) {\n      if (exports) {\n        if (module && module.exports) {\n          exports = module.exports = validate;\n        }\n        exports.validate = validate;\n      } else {\n        root.validate = validate;\n        if (validate.isFunction(define) && define.amd) {\n          define([], function () { return validate; });\n        }\n      }\n    },\n\n    warn: function(msg) {\n      if (typeof console !== \"undefined\" && console.warn) {\n        console.warn(\"[validate.js] \" + msg);\n      }\n    },\n\n    error: function(msg) {\n      if (typeof console !== \"undefined\" && console.error) {\n        console.error(\"[validate.js] \" + msg);\n      }\n    }\n  });\n\n  validate.validators = {\n    // Presence validates that the value isn't empty\n    presence: function(value, options) {\n      options = v.extend({}, this.options, options);\n      if (options.allowEmpty !== false ? !v.isDefined(value) : v.isEmpty(value)) {\n        return options.message || this.message || \"can't be blank\";\n      }\n    },\n    length: function(value, options, attribute) {\n      // Empty values are allowed\n      if (!v.isDefined(value)) {\n        return;\n      }\n\n      options = v.extend({}, this.options, options);\n\n      var is = options.is\n        , maximum = options.maximum\n        , minimum = options.minimum\n        , tokenizer = options.tokenizer || function(val) { return val; }\n        , err\n        , errors = [];\n\n      value = tokenizer(value);\n      var length = value.length;\n      if(!v.isNumber(length)) {\n        return options.message || this.notValid || \"has an incorrect length\";\n      }\n\n      // Is checks\n      if (v.isNumber(is) && length !== is) {\n        err = options.wrongLength ||\n          this.wrongLength ||\n          \"is the wrong length (should be %{count} characters)\";\n        errors.push(v.format(err, {count: is}));\n      }\n\n      if (v.isNumber(minimum) && length < minimum) {\n        err = options.tooShort ||\n          this.tooShort ||\n          \"is too short (minimum is %{count} characters)\";\n        errors.push(v.format(err, {count: minimum}));\n      }\n\n      if (v.isNumber(maximum) && length > maximum) {\n        err = options.tooLong ||\n          this.tooLong ||\n          \"is too long (maximum is %{count} characters)\";\n        errors.push(v.format(err, {count: maximum}));\n      }\n\n      if (errors.length > 0) {\n        return options.message || errors;\n      }\n    },\n    numericality: function(value, options, attribute, attributes, globalOptions) {\n      // Empty values are fine\n      if (!v.isDefined(value)) {\n        return;\n      }\n\n      options = v.extend({}, this.options, options);\n\n      var errors = []\n        , name\n        , count\n        , checks = {\n            greaterThan:          function(v, c) { return v > c; },\n            greaterThanOrEqualTo: function(v, c) { return v >= c; },\n            equalTo:              function(v, c) { return v === c; },\n            lessThan:             function(v, c) { return v < c; },\n            lessThanOrEqualTo:    function(v, c) { return v <= c; },\n            divisibleBy:          function(v, c) { return v % c === 0; }\n          }\n        , prettify = options.prettify ||\n          (globalOptions && globalOptions.prettify) ||\n          v.prettify;\n\n      // Strict will check that it is a valid looking number\n      if (v.isString(value) && options.strict) {\n        var pattern = \"^-?(0|[1-9]\\\\d*)\";\n        if (!options.onlyInteger) {\n          pattern += \"(\\\\.\\\\d+)?\";\n        }\n        pattern += \"$\";\n\n        if (!(new RegExp(pattern).test(value))) {\n          return options.message ||\n            options.notValid ||\n            this.notValid ||\n            this.message ||\n            \"must be a valid number\";\n        }\n      }\n\n      // Coerce the value to a number unless we're being strict.\n      if (options.noStrings !== true && v.isString(value) && !v.isEmpty(value)) {\n        value = +value;\n      }\n\n      // If it's not a number we shouldn't continue since it will compare it.\n      if (!v.isNumber(value)) {\n        return options.message ||\n          options.notValid ||\n          this.notValid ||\n          this.message ||\n          \"is not a number\";\n      }\n\n      // Same logic as above, sort of. Don't bother with comparisons if this\n      // doesn't pass.\n      if (options.onlyInteger && !v.isInteger(value)) {\n        return options.message ||\n          options.notInteger ||\n          this.notInteger ||\n          this.message ||\n          \"must be an integer\";\n      }\n\n      for (name in checks) {\n        count = options[name];\n        if (v.isNumber(count) && !checks[name](value, count)) {\n          // This picks the default message if specified\n          // For example the greaterThan check uses the message from\n          // this.notGreaterThan so we capitalize the name and prepend \"not\"\n          var key = \"not\" + v.capitalize(name);\n          var msg = options[key] ||\n            this[key] ||\n            this.message ||\n            \"must be %{type} %{count}\";\n\n          errors.push(v.format(msg, {\n            count: count,\n            type: prettify(name)\n          }));\n        }\n      }\n\n      if (options.odd && value % 2 !== 1) {\n        errors.push(options.notOdd ||\n            this.notOdd ||\n            this.message ||\n            \"must be odd\");\n      }\n      if (options.even && value % 2 !== 0) {\n        errors.push(options.notEven ||\n            this.notEven ||\n            this.message ||\n            \"must be even\");\n      }\n\n      if (errors.length) {\n        return options.message || errors;\n      }\n    },\n    datetime: v.extend(function(value, options) {\n      if (!v.isFunction(this.parse) || !v.isFunction(this.format)) {\n        throw new Error(\"Both the parse and format functions needs to be set to use the datetime/date validator\");\n      }\n\n      // Empty values are fine\n      if (!v.isDefined(value)) {\n        return;\n      }\n\n      options = v.extend({}, this.options, options);\n\n      var err\n        , errors = []\n        , earliest = options.earliest ? this.parse(options.earliest, options) : NaN\n        , latest = options.latest ? this.parse(options.latest, options) : NaN;\n\n      value = this.parse(value, options);\n\n      // 86400000 is the number of milliseconds in a day, this is used to remove\n      // the time from the date\n      if (isNaN(value) || options.dateOnly && value % 86400000 !== 0) {\n        err = options.notValid ||\n          options.message ||\n          this.notValid ||\n          \"must be a valid date\";\n        return v.format(err, {value: arguments[0]});\n      }\n\n      if (!isNaN(earliest) && value < earliest) {\n        err = options.tooEarly ||\n          options.message ||\n          this.tooEarly ||\n          \"must be no earlier than %{date}\";\n        err = v.format(err, {\n          value: this.format(value, options),\n          date: this.format(earliest, options)\n        });\n        errors.push(err);\n      }\n\n      if (!isNaN(latest) && value > latest) {\n        err = options.tooLate ||\n          options.message ||\n          this.tooLate ||\n          \"must be no later than %{date}\";\n        err = v.format(err, {\n          date: this.format(latest, options),\n          value: this.format(value, options)\n        });\n        errors.push(err);\n      }\n\n      if (errors.length) {\n        return v.unique(errors);\n      }\n    }, {\n      parse: null,\n      format: null\n    }),\n    date: function(value, options) {\n      options = v.extend({}, options, {dateOnly: true});\n      return v.validators.datetime.call(v.validators.datetime, value, options);\n    },\n    format: function(value, options) {\n      if (v.isString(options) || (options instanceof RegExp)) {\n        options = {pattern: options};\n      }\n\n      options = v.extend({}, this.options, options);\n\n      var message = options.message || this.message || \"is invalid\"\n        , pattern = options.pattern\n        , match;\n\n      // Empty values are allowed\n      if (!v.isDefined(value)) {\n        return;\n      }\n      if (!v.isString(value)) {\n        return message;\n      }\n\n      if (v.isString(pattern)) {\n        pattern = new RegExp(options.pattern, options.flags);\n      }\n      match = pattern.exec(value);\n      if (!match || match[0].length != value.length) {\n        return message;\n      }\n    },\n    inclusion: function(value, options) {\n      // Empty values are fine\n      if (!v.isDefined(value)) {\n        return;\n      }\n      if (v.isArray(options)) {\n        options = {within: options};\n      }\n      options = v.extend({}, this.options, options);\n      if (v.contains(options.within, value)) {\n        return;\n      }\n      var message = options.message ||\n        this.message ||\n        \"^%{value} is not included in the list\";\n      return v.format(message, {value: value});\n    },\n    exclusion: function(value, options) {\n      // Empty values are fine\n      if (!v.isDefined(value)) {\n        return;\n      }\n      if (v.isArray(options)) {\n        options = {within: options};\n      }\n      options = v.extend({}, this.options, options);\n      if (!v.contains(options.within, value)) {\n        return;\n      }\n      var message = options.message || this.message || \"^%{value} is restricted\";\n      if (v.isString(options.within[value])) {\n        value = options.within[value];\n      }\n      return v.format(message, {value: value});\n    },\n    email: v.extend(function(value, options) {\n      options = v.extend({}, this.options, options);\n      var message = options.message || this.message || \"is not a valid email\";\n      // Empty values are fine\n      if (!v.isDefined(value)) {\n        return;\n      }\n      if (!v.isString(value)) {\n        return message;\n      }\n      if (!this.PATTERN.exec(value)) {\n        return message;\n      }\n    }, {\n      PATTERN: /^(?:[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*|\"(?:[\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x21\\x23-\\x5b\\x5d-\\x7f]|\\\\[\\x01-\\x09\\x0b\\x0c\\x0e-\\x7f])*\")@(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?|\\[(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?|[a-z0-9-]*[a-z0-9]:(?:[\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x21-\\x5a\\x53-\\x7f]|\\\\[\\x01-\\x09\\x0b\\x0c\\x0e-\\x7f])+)\\])$/i\n    }),\n    equality: function(value, options, attribute, attributes, globalOptions) {\n      if (!v.isDefined(value)) {\n        return;\n      }\n\n      if (v.isString(options)) {\n        options = {attribute: options};\n      }\n      options = v.extend({}, this.options, options);\n      var message = options.message ||\n        this.message ||\n        \"is not equal to %{attribute}\";\n\n      if (v.isEmpty(options.attribute) || !v.isString(options.attribute)) {\n        throw new Error(\"The attribute must be a non empty string\");\n      }\n\n      var otherValue = v.getDeepObjectValue(attributes, options.attribute)\n        , comparator = options.comparator || function(v1, v2) {\n          return v1 === v2;\n        }\n        , prettify = options.prettify ||\n          (globalOptions && globalOptions.prettify) ||\n          v.prettify;\n\n      if (!comparator(value, otherValue, options, attribute, attributes)) {\n        return v.format(message, {attribute: prettify(options.attribute)});\n      }\n    },\n    // A URL validator that is used to validate URLs with the ability to\n    // restrict schemes and some domains.\n    url: function(value, options) {\n      if (!v.isDefined(value)) {\n        return;\n      }\n\n      options = v.extend({}, this.options, options);\n\n      var message = options.message || this.message || \"is not a valid url\"\n        , schemes = options.schemes || this.schemes || ['http', 'https']\n        , allowLocal = options.allowLocal || this.allowLocal || false\n        , allowDataUrl = options.allowDataUrl || this.allowDataUrl || false;\n      if (!v.isString(value)) {\n        return message;\n      }\n\n      // https://gist.github.com/dperini/729294\n      var regex =\n        \"^\" +\n        // protocol identifier\n        \"(?:(?:\" + schemes.join(\"|\") + \")://)\" +\n        // user:pass authentication\n        \"(?:\\\\S+(?::\\\\S*)?@)?\" +\n        \"(?:\";\n\n      var tld = \"(?:\\\\.(?:[a-z\\\\u00a1-\\\\uffff]{2,}))\";\n\n      if (allowLocal) {\n        tld += \"?\";\n      } else {\n        regex +=\n          // IP address exclusion\n          // private & local networks\n          \"(?!(?:10|127)(?:\\\\.\\\\d{1,3}){3})\" +\n          \"(?!(?:169\\\\.254|192\\\\.168)(?:\\\\.\\\\d{1,3}){2})\" +\n          \"(?!172\\\\.(?:1[6-9]|2\\\\d|3[0-1])(?:\\\\.\\\\d{1,3}){2})\";\n      }\n\n      regex +=\n          // IP address dotted notation octets\n          // excludes loopback network 0.0.0.0\n          // excludes reserved space >= 224.0.0.0\n          // excludes network & broacast addresses\n          // (first & last IP address of each class)\n          \"(?:[1-9]\\\\d?|1\\\\d\\\\d|2[01]\\\\d|22[0-3])\" +\n          \"(?:\\\\.(?:1?\\\\d{1,2}|2[0-4]\\\\d|25[0-5])){2}\" +\n          \"(?:\\\\.(?:[1-9]\\\\d?|1\\\\d\\\\d|2[0-4]\\\\d|25[0-4]))\" +\n        \"|\" +\n          // host name\n          \"(?:(?:[a-z\\\\u00a1-\\\\uffff0-9]-*)*[a-z\\\\u00a1-\\\\uffff0-9]+)\" +\n          // domain name\n          \"(?:\\\\.(?:[a-z\\\\u00a1-\\\\uffff0-9]-*)*[a-z\\\\u00a1-\\\\uffff0-9]+)*\" +\n          tld +\n        \")\" +\n        // port number\n        \"(?::\\\\d{2,5})?\" +\n        // resource path\n        \"(?:[/?#]\\\\S*)?\" +\n      \"$\";\n\n      if (allowDataUrl) {\n        // RFC 2397\n        var mediaType = \"\\\\w+\\\\/[-+.\\\\w]+(?:;[\\\\w=]+)*\";\n        var urlchar = \"[A-Za-z0-9-_.!~\\\\*'();\\\\/?:@&=+$,%]*\";\n        var dataurl = \"data:(?:\"+mediaType+\")?(?:;base64)?,\"+urlchar;\n        regex = \"(?:\"+regex+\")|(?:^\"+dataurl+\"$)\";\n      }\n\n      var PATTERN = new RegExp(regex, 'i');\n      if (!PATTERN.exec(value)) {\n        return message;\n      }\n    },\n    type: v.extend(function(value, originalOptions, attribute, attributes, globalOptions) {\n      if (v.isString(originalOptions)) {\n        originalOptions = {type: originalOptions};\n      }\n\n      if (!v.isDefined(value)) {\n        return;\n      }\n\n      var options = v.extend({}, this.options, originalOptions);\n\n      var type = options.type;\n      if (!v.isDefined(type)) {\n        throw new Error(\"No type was specified\");\n      }\n\n      var check;\n      if (v.isFunction(type)) {\n        check = type;\n      } else {\n        check = this.types[type];\n      }\n\n      if (!v.isFunction(check)) {\n        throw new Error(\"validate.validators.type.types.\" + type + \" must be a function.\");\n      }\n\n      if (!check(value, options, attribute, attributes, globalOptions)) {\n        var message = originalOptions.message ||\n          this.messages[type] ||\n          this.message ||\n          options.message ||\n          (v.isFunction(type) ? \"must be of the correct type\" : \"must be of type %{type}\");\n\n        if (v.isFunction(message)) {\n          message = message(value, originalOptions, attribute, attributes, globalOptions);\n        }\n\n        return v.format(message, {attribute: v.prettify(attribute), type: type});\n      }\n    }, {\n      types: {\n        object: function(value) {\n          return v.isObject(value) && !v.isArray(value);\n        },\n        array: v.isArray,\n        integer: v.isInteger,\n        number: v.isNumber,\n        string: v.isString,\n        date: v.isDate,\n        boolean: v.isBoolean\n      },\n      messages: {}\n    })\n  };\n\n  validate.formatters = {\n    detailed: function(errors) {return errors;},\n    flat: v.flattenErrorsToArray,\n    grouped: function(errors) {\n      var attr;\n\n      errors = v.groupErrorsByAttribute(errors);\n      for (attr in errors) {\n        errors[attr] = v.flattenErrorsToArray(errors[attr]);\n      }\n      return errors;\n    },\n    constraint: function(errors) {\n      var attr;\n      errors = v.groupErrorsByAttribute(errors);\n      for (attr in errors) {\n        errors[attr] = errors[attr].map(function(result) {\n          return result.validator;\n        }).sort();\n      }\n      return errors;\n    }\n  };\n\n  validate.exposeModule(validate, this, exports, module, define);\n}).call(this,\n        typeof exports !== 'undefined' ? /* istanbul ignore next */ exports : null,\n        typeof module !== 'undefined' ? /* istanbul ignore next */ module : null,\n        typeof define !== 'undefined' ? /* istanbul ignore next */ define : null);\n","!function(e,t){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=t():\"function\"==typeof define&&define.amd?define(t):(e=\"undefined\"!=typeof globalThis?globalThis:e||self).LazyLoad=t()}(this,(function(){\"use strict\";const e=\"undefined\"!=typeof window,t=e&&!(\"onscroll\"in window)||\"undefined\"!=typeof navigator&&/(gle|ing|ro)bot|crawl|spider/i.test(navigator.userAgent),a=e&&window.devicePixelRatio>1,n={elements_selector:\".lazy\",container:t||e?document:null,threshold:300,thresholds:null,data_src:\"src\",data_srcset:\"srcset\",data_sizes:\"sizes\",data_bg:\"bg\",data_bg_hidpi:\"bg-hidpi\",data_bg_multi:\"bg-multi\",data_bg_multi_hidpi:\"bg-multi-hidpi\",data_bg_set:\"bg-set\",data_poster:\"poster\",class_applied:\"applied\",class_loading:\"loading\",class_loaded:\"loaded\",class_error:\"error\",class_entered:\"entered\",class_exited:\"exited\",unobserve_completed:!0,unobserve_entered:!1,cancel_on_exit:!0,callback_enter:null,callback_exit:null,callback_applied:null,callback_loading:null,callback_loaded:null,callback_error:null,callback_finish:null,callback_cancel:null,use_native:!1,restore_on_error:!1},s=e=>Object.assign({},n,e),l=function(e,t){let a;const n=\"LazyLoad::Initialized\",s=new e(t);try{a=new CustomEvent(n,{detail:{instance:s}})}catch(e){a=document.createEvent(\"CustomEvent\"),a.initCustomEvent(n,!1,!1,{instance:s})}window.dispatchEvent(a)},o=\"src\",r=\"srcset\",i=\"sizes\",d=\"poster\",c=\"llOriginalAttrs\",_=\"data\",u=\"loading\",g=\"loaded\",b=\"applied\",h=\"error\",m=\"native\",p=\"data-\",f=\"ll-status\",v=(e,t)=>e.getAttribute(p+t),E=e=>v(e,f),I=(e,t)=>((e,t,a)=>{const n=p+t;null!==a?e.setAttribute(n,a):e.removeAttribute(n)})(e,f,t),y=e=>I(e,null),k=e=>null===E(e),A=e=>E(e)===m,L=[u,g,b,h],w=(e,t,a,n)=>{e&&\"function\"==typeof e&&(void 0===n?void 0===a?e(t):e(t,a):e(t,a,n))},x=(t,a)=>{e&&\"\"!==a&&t.classList.add(a)},C=(t,a)=>{e&&\"\"!==a&&t.classList.remove(a)},O=e=>e.llTempImage,M=(e,t)=>{if(!t)return;const a=t._observer;a&&a.unobserve(e)},z=(e,t)=>{e&&(e.loadingCount+=t)},N=(e,t)=>{e&&(e.toLoadCount=t)},T=e=>{let t=[];for(let a,n=0;a=e.children[n];n+=1)\"SOURCE\"===a.tagName&&t.push(a);return t},R=(e,t)=>{const a=e.parentNode;a&&\"PICTURE\"===a.tagName&&T(a).forEach(t)},G=(e,t)=>{T(e).forEach(t)},D=[o],H=[o,d],V=[o,r,i],F=[_],j=e=>!!e[c],B=e=>e[c],J=e=>delete e[c],S=(e,t)=>{if(j(e))return;const a={};t.forEach((t=>{a[t]=e.getAttribute(t)})),e[c]=a},P=(e,t)=>{if(!j(e))return;const a=B(e);t.forEach((t=>{((e,t,a)=>{a?e.setAttribute(t,a):e.removeAttribute(t)})(e,t,a[t])}))},U=(e,t,a)=>{x(e,t.class_applied),I(e,b),a&&(t.unobserve_completed&&M(e,t),w(t.callback_applied,e,a))},$=(e,t,a)=>{x(e,t.class_loading),I(e,u),a&&(z(a,1),w(t.callback_loading,e,a))},q=(e,t,a)=>{a&&e.setAttribute(t,a)},K=(e,t)=>{q(e,i,v(e,t.data_sizes)),q(e,r,v(e,t.data_srcset)),q(e,o,v(e,t.data_src))},Q={IMG:(e,t)=>{R(e,(e=>{S(e,V),K(e,t)})),S(e,V),K(e,t)},IFRAME:(e,t)=>{S(e,D),q(e,o,v(e,t.data_src))},VIDEO:(e,t)=>{G(e,(e=>{S(e,D),q(e,o,v(e,t.data_src))})),S(e,H),q(e,d,v(e,t.data_poster)),q(e,o,v(e,t.data_src)),e.load()},OBJECT:(e,t)=>{S(e,F),q(e,_,v(e,t.data_src))}},W=[\"IMG\",\"IFRAME\",\"VIDEO\",\"OBJECT\"],X=(e,t)=>{!t||(e=>e.loadingCount>0)(t)||(e=>e.toLoadCount>0)(t)||w(e.callback_finish,t)},Y=(e,t,a)=>{e.addEventListener(t,a),e.llEvLisnrs[t]=a},Z=(e,t,a)=>{e.removeEventListener(t,a)},ee=e=>!!e.llEvLisnrs,te=e=>{if(!ee(e))return;const t=e.llEvLisnrs;for(let a in t){const n=t[a];Z(e,a,n)}delete e.llEvLisnrs},ae=(e,t,a)=>{(e=>{delete e.llTempImage})(e),z(a,-1),(e=>{e&&(e.toLoadCount-=1)})(a),C(e,t.class_loading),t.unobserve_completed&&M(e,a)},ne=(e,t,a)=>{const n=O(e)||e;ee(n)||((e,t,a)=>{ee(e)||(e.llEvLisnrs={});const n=\"VIDEO\"===e.tagName?\"loadeddata\":\"load\";Y(e,n,t),Y(e,\"error\",a)})(n,(s=>{((e,t,a,n)=>{const s=A(t);ae(t,a,n),x(t,a.class_loaded),I(t,g),w(a.callback_loaded,t,n),s||X(a,n)})(0,e,t,a),te(n)}),(s=>{((e,t,a,n)=>{const s=A(t);ae(t,a,n),x(t,a.class_error),I(t,h),w(a.callback_error,t,n),a.restore_on_error&&P(t,V),s||X(a,n)})(0,e,t,a),te(n)}))},se=(e,t,n)=>{(e=>W.indexOf(e.tagName)>-1)(e)?((e,t,a)=>{ne(e,t,a),((e,t,a)=>{const n=Q[e.tagName];n&&(n(e,t),$(e,t,a))})(e,t,a)})(e,t,n):((e,t,n)=>{(e=>{e.llTempImage=document.createElement(\"IMG\")})(e),ne(e,t,n),(e=>{j(e)||(e[c]={backgroundImage:e.style.backgroundImage})})(e),((e,t,n)=>{const s=v(e,t.data_bg),l=v(e,t.data_bg_hidpi),r=a&&l?l:s;r&&(e.style.backgroundImage=`url(\"${r}\")`,O(e).setAttribute(o,r),$(e,t,n))})(e,t,n),((e,t,n)=>{const s=v(e,t.data_bg_multi),l=v(e,t.data_bg_multi_hidpi),o=a&&l?l:s;o&&(e.style.backgroundImage=o,U(e,t,n))})(e,t,n),((e,t,a)=>{const n=v(e,t.data_bg_set);if(!n)return;let s=n.split(\"|\").map((e=>`image-set(${e})`));e.style.backgroundImage=s.join(),U(e,t,a)})(e,t,n)})(e,t,n)},le=e=>{e.removeAttribute(o),e.removeAttribute(r),e.removeAttribute(i)},oe=e=>{R(e,(e=>{P(e,V)})),P(e,V)},re={IMG:oe,IFRAME:e=>{P(e,D)},VIDEO:e=>{G(e,(e=>{P(e,D)})),P(e,H),e.load()},OBJECT:e=>{P(e,F)}},ie=(e,t)=>{(e=>{const t=re[e.tagName];t?t(e):(e=>{if(!j(e))return;const t=B(e);e.style.backgroundImage=t.backgroundImage})(e)})(e),((e,t)=>{k(e)||A(e)||(C(e,t.class_entered),C(e,t.class_exited),C(e,t.class_applied),C(e,t.class_loading),C(e,t.class_loaded),C(e,t.class_error))})(e,t),y(e),J(e)},de=[\"IMG\",\"IFRAME\",\"VIDEO\"],ce=e=>e.use_native&&\"loading\"in HTMLImageElement.prototype,_e=(e,t,a)=>{e.forEach((e=>(e=>e.isIntersecting||e.intersectionRatio>0)(e)?((e,t,a,n)=>{const s=(e=>L.indexOf(E(e))>=0)(e);I(e,\"entered\"),x(e,a.class_entered),C(e,a.class_exited),((e,t,a)=>{t.unobserve_entered&&M(e,a)})(e,a,n),w(a.callback_enter,e,t,n),s||se(e,a,n)})(e.target,e,t,a):((e,t,a,n)=>{k(e)||(x(e,a.class_exited),((e,t,a,n)=>{a.cancel_on_exit&&(e=>E(e)===u)(e)&&\"IMG\"===e.tagName&&(te(e),(e=>{R(e,(e=>{le(e)})),le(e)})(e),oe(e),C(e,a.class_loading),z(n,-1),y(e),w(a.callback_cancel,e,t,n))})(e,t,a,n),w(a.callback_exit,e,t,n))})(e.target,e,t,a)))},ue=e=>Array.prototype.slice.call(e),ge=e=>e.container.querySelectorAll(e.elements_selector),be=e=>(e=>E(e)===h)(e),he=(e,t)=>(e=>ue(e).filter(k))(e||ge(t)),me=function(t,a){const n=s(t);this._settings=n,this.loadingCount=0,((e,t)=>{ce(e)||(t._observer=new IntersectionObserver((a=>{_e(a,e,t)}),(e=>({root:e.container===document?null:e.container,rootMargin:e.thresholds||e.threshold+\"px\"}))(e)))})(n,this),((t,a)=>{e&&(a._onlineHandler=()=>{((e,t)=>{var a;(a=ge(e),ue(a).filter(be)).forEach((t=>{C(t,e.class_error),y(t)})),t.update()})(t,a)},window.addEventListener(\"online\",a._onlineHandler))})(n,this),this.update(a)};return me.prototype={update:function(e){const a=this._settings,n=he(e,a);var s,l;N(this,n.length),t?this.loadAll(n):ce(a)?((e,t,a)=>{e.forEach((e=>{-1!==de.indexOf(e.tagName)&&((e,t,a)=>{e.setAttribute(\"loading\",\"lazy\"),ne(e,t,a),((e,t)=>{const a=Q[e.tagName];a&&a(e,t)})(e,t),I(e,m)})(e,t,a)})),N(a,0)})(n,a,this):(l=n,(e=>{e.disconnect()})(s=this._observer),((e,t)=>{t.forEach((t=>{e.observe(t)}))})(s,l))},destroy:function(){this._observer&&this._observer.disconnect(),e&&window.removeEventListener(\"online\",this._onlineHandler),ge(this._settings).forEach((e=>{J(e)})),delete this._observer,delete this._settings,delete this._onlineHandler,delete this.loadingCount,delete this.toLoadCount},loadAll:function(e){const t=this._settings;he(e,t).forEach((e=>{M(e,this),se(e,t,this)}))},restoreAll:function(){const e=this._settings;ge(e).forEach((t=>{ie(t,e)}))}},me.load=(e,t)=>{const a=s(t);se(e,a)},me.resetStatus=e=>{y(e)},e&&((e,t)=>{if(t)if(t.length)for(let a,n=0;a=t[n];n+=1)l(e,a);else l(e,t)})(me,window.lazyLoadOptions),me}));\n","// The module cache\nconst __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tconst cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tconst module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","__webpack_require__.amdD = function () {\n\tthrow new Error('define cannot be used indirect');\n};","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tconst getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter/value functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.hasOwn(obj, prop));","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = (module) => {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","// set .name for anonymous default exports per ES spec\n// skipped when the property is non-configurable (pre-ES2015 engines),\n// where Object.defineProperty would throw\n__webpack_require__.dn = (x) => {\n\tvar descriptor = Object.getOwnPropertyDescriptor(x, \"name\");\n\tif (!descriptor || (!descriptor.writable && descriptor.configurable)) Object.defineProperty(x, \"name\", { value: \"default\", configurable: true });\n};","import { makeDsn, dsnToString } from './utils/dsn.js';\n\nconst SENTRY_API_VERSION = \"7\";\nfunction getBaseApiEndpoint(dsn) {\n  const protocol = dsn.protocol ? `${dsn.protocol}:` : \"\";\n  const port = dsn.port ? `:${dsn.port}` : \"\";\n  return `${protocol}//${dsn.host}${port}${dsn.path ? `/${dsn.path}` : \"\"}/api/`;\n}\nfunction _getIngestEndpoint(dsn) {\n  return `${getBaseApiEndpoint(dsn)}${dsn.projectId}/envelope/`;\n}\nfunction _encodedAuth(dsn, sdkInfo) {\n  const params = {\n    sentry_version: SENTRY_API_VERSION\n  };\n  if (dsn.publicKey) {\n    params.sentry_key = dsn.publicKey;\n  }\n  if (sdkInfo) {\n    params.sentry_client = `${sdkInfo.name}/${sdkInfo.version}`;\n  }\n  return new URLSearchParams(params).toString();\n}\nfunction getEnvelopeEndpointWithUrlEncodedAuth(dsn, tunnel, sdkInfo) {\n  return tunnel ? tunnel : `${_getIngestEndpoint(dsn)}?${_encodedAuth(dsn, sdkInfo)}`;\n}\nfunction getReportDialogEndpoint(dsnLike, dialogOptions) {\n  const dsn = makeDsn(dsnLike);\n  if (!dsn) {\n    return \"\";\n  }\n  const endpoint = `${getBaseApiEndpoint(dsn)}embed/error-page/`;\n  let encodedOptions = `dsn=${dsnToString(dsn)}`;\n  for (const key in dialogOptions) {\n    if (key === \"dsn\") {\n      continue;\n    }\n    if (key === \"onClose\" || key === \"onError\") {\n      continue;\n    }\n    if (key === \"user\") {\n      const user = dialogOptions.user;\n      if (!user) {\n        continue;\n      }\n      if (user.name) {\n        encodedOptions += `&name=${encodeURIComponent(user.name)}`;\n      }\n      if (user.email) {\n        encodedOptions += `&email=${encodeURIComponent(user.email)}`;\n      }\n    } else {\n      encodedOptions += `&${encodeURIComponent(key)}=${encodeURIComponent(dialogOptions[key])}`;\n    }\n  }\n  return `${endpoint}?${encodedOptions}`;\n}\n\nexport { SENTRY_API_VERSION, getEnvelopeEndpointWithUrlEncodedAuth, getReportDialogEndpoint };\n//# sourceMappingURL=api.js.map\n","const DEBUG_BUILD = (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__);\n\nexport { DEBUG_BUILD };\n//# sourceMappingURL=debug-build.js.map\n","const SDK_VERSION = \"11.11.0\" ;\n\nexport { SDK_VERSION };\n//# sourceMappingURL=version.js.map\n","const GLOBAL_OBJ = globalThis;\n\nexport { GLOBAL_OBJ };\n//# sourceMappingURL=worldwide.js.map\n","import { SDK_VERSION } from './utils/version.js';\nimport { GLOBAL_OBJ } from './utils/worldwide.js';\n\nfunction getMainCarrier() {\n  getSentryCarrier(GLOBAL_OBJ);\n  return GLOBAL_OBJ;\n}\nfunction getSentryCarrier(carrier) {\n  const __SENTRY__ = carrier.__SENTRY__ = carrier.__SENTRY__ || {};\n  __SENTRY__.version = __SENTRY__.version || SDK_VERSION;\n  return __SENTRY__[SDK_VERSION] = __SENTRY__[SDK_VERSION] || {};\n}\nfunction getGlobalSingleton(name, creator, obj = GLOBAL_OBJ) {\n  const __SENTRY__ = obj.__SENTRY__ = obj.__SENTRY__ || {};\n  const carrier = __SENTRY__[SDK_VERSION] = __SENTRY__[SDK_VERSION] || {};\n  return carrier[name] || (carrier[name] = creator());\n}\n\nexport { getGlobalSingleton, getMainCarrier, getSentryCarrier };\n//# sourceMappingURL=carrier.js.map\n","import { getGlobalSingleton } from '../carrier.js';\nimport { DEBUG_BUILD } from '../debug-build.js';\nimport { GLOBAL_OBJ } from './worldwide.js';\n\nconst CONSOLE_LEVELS = [\n  \"debug\",\n  \"info\",\n  \"warn\",\n  \"error\",\n  \"log\",\n  \"assert\",\n  \"trace\"\n];\nconst PREFIX = \"Sentry Logger \";\nconst originalConsoleMethods = {};\nfunction consoleSandbox(callback) {\n  if (!(\"console\" in GLOBAL_OBJ)) {\n    return callback();\n  }\n  const console = GLOBAL_OBJ.console;\n  const wrappedFuncs = {};\n  const wrappedLevels = Object.keys(originalConsoleMethods);\n  wrappedLevels.forEach((level) => {\n    const originalConsoleMethod = originalConsoleMethods[level];\n    wrappedFuncs[level] = console[level];\n    console[level] = originalConsoleMethod;\n  });\n  try {\n    return callback();\n  } finally {\n    wrappedLevels.forEach((level) => {\n      console[level] = wrappedFuncs[level];\n    });\n  }\n}\nfunction enable() {\n  _getLoggerSettings().enabled = true;\n}\nfunction disable() {\n  _getLoggerSettings().enabled = false;\n}\nfunction isEnabled() {\n  return _getLoggerSettings().enabled;\n}\nfunction log(...args) {\n  _maybeLog(\"log\", ...args);\n}\nfunction warn(...args) {\n  _maybeLog(\"warn\", ...args);\n}\nfunction error(...args) {\n  _maybeLog(\"error\", ...args);\n}\nfunction _maybeLog(level, ...args) {\n  if (!DEBUG_BUILD) {\n    return;\n  }\n  if (isEnabled()) {\n    consoleSandbox(() => {\n      GLOBAL_OBJ.console[level](`${PREFIX}[${level}]:`, ...args);\n    });\n  }\n}\nfunction _getLoggerSettings() {\n  if (!DEBUG_BUILD) {\n    return { enabled: false };\n  }\n  return getGlobalSingleton(\"loggerSettings\", () => ({ enabled: false }));\n}\nconst debug = {\n  /** Enable logging. */\n  enable,\n  /** Disable logging. */\n  disable,\n  /** Check if logging is enabled. */\n  isEnabled,\n  /** Log a message. */\n  log,\n  /** Log a warning. */\n  warn,\n  /** Log an error. */\n  error\n};\n\nexport { CONSOLE_LEVELS, consoleSandbox, debug, originalConsoleMethods };\n//# sourceMappingURL=debug-logger.js.map\n","import { DEBUG_BUILD } from '../debug-build.js';\nimport { consoleSandbox, debug } from './debug-logger.js';\n\nconst ORG_ID_REGEX = /^o(\\d+)\\./;\nconst DSN_REGEX = /^(?:(\\w+):)\\/\\/(?:(\\w+)(?::(\\w+)?)?@)((?:\\[[:.%\\w]+\\]|[\\w.-]+))(?::(\\d+))?\\/(.+)/;\nfunction isValidProtocol(protocol) {\n  return protocol === \"http\" || protocol === \"https\";\n}\nfunction dsnToString(dsn, withPassword = false) {\n  const { host, path, pass, port, projectId, protocol, publicKey } = dsn;\n  return `${protocol}://${publicKey}${withPassword && pass ? `:${pass}` : \"\"}@${host}${port ? `:${port}` : \"\"}/${path ? `${path}/` : path}${projectId}`;\n}\nfunction dsnFromString(str) {\n  const match = DSN_REGEX.exec(str);\n  if (!match) {\n    consoleSandbox(() => {\n      console.error(`Invalid Sentry Dsn: ${str}`);\n    });\n    return void 0;\n  }\n  const [protocol, publicKey, pass = \"\", host = \"\", port = \"\", lastPath = \"\"] = match.slice(1);\n  let path = \"\";\n  let projectId = lastPath;\n  const split = projectId.split(\"/\");\n  if (split.length > 1) {\n    path = split.slice(0, -1).join(\"/\");\n    projectId = split.pop();\n  }\n  if (projectId) {\n    const projectMatch = projectId.match(/^\\d+/);\n    if (projectMatch) {\n      projectId = projectMatch[0];\n    }\n  }\n  return dsnFromComponents({ host, pass, path, projectId, port, protocol, publicKey });\n}\nfunction dsnFromComponents(components) {\n  return {\n    protocol: components.protocol,\n    publicKey: components.publicKey || \"\",\n    pass: components.pass || \"\",\n    host: components.host,\n    port: components.port || \"\",\n    path: components.path || \"\",\n    projectId: components.projectId\n  };\n}\nfunction validateDsn(dsn) {\n  if (!DEBUG_BUILD) {\n    return true;\n  }\n  const { port, projectId, protocol } = dsn;\n  const requiredComponents = [\"protocol\", \"publicKey\", \"host\", \"projectId\"];\n  const hasMissingRequiredComponent = requiredComponents.find((component) => {\n    if (!dsn[component]) {\n      debug.error(`Invalid Sentry Dsn: ${component} missing`);\n      return true;\n    }\n    return false;\n  });\n  if (hasMissingRequiredComponent) {\n    return false;\n  }\n  if (!projectId.match(/^\\d+$/)) {\n    debug.error(`Invalid Sentry Dsn: Invalid projectId ${projectId}`);\n    return false;\n  }\n  if (!isValidProtocol(protocol)) {\n    debug.error(`Invalid Sentry Dsn: Invalid protocol ${protocol}`);\n    return false;\n  }\n  if (port && isNaN(parseInt(port, 10))) {\n    debug.error(`Invalid Sentry Dsn: Invalid port ${port}`);\n    return false;\n  }\n  return true;\n}\nfunction extractOrgIdFromDsnHost(host) {\n  const match = host.match(ORG_ID_REGEX);\n  return match?.[1];\n}\nfunction extractOrgIdFromClient(client) {\n  const options = client.getOptions();\n  const { host } = client.getDsn() || {};\n  let org_id;\n  if (options.orgId) {\n    org_id = String(options.orgId);\n  } else if (host) {\n    org_id = extractOrgIdFromDsnHost(host);\n  }\n  return org_id;\n}\nfunction makeDsn(from) {\n  const components = typeof from === \"string\" ? dsnFromString(from) : dsnFromComponents(from);\n  if (!components || !validateDsn(components)) {\n    return void 0;\n  }\n  return components;\n}\n\nexport { dsnFromString, dsnToString, extractOrgIdFromClient, extractOrgIdFromDsnHost, makeDsn };\n//# sourceMappingURL=dsn.js.map\n","import { addNonEnumerableProperty } from './object.js';\n\nconst SENTRY_SKIP_NORMALIZATION = /* @__PURE__ */ Symbol.for(\"sentry.skipNormalization\");\nconst SENTRY_OVERRIDE_NORMALIZATION_DEPTH = /* @__PURE__ */ Symbol.for(\"sentry.overrideNormalizationDepth\");\nfunction setSkipNormalizationHint(obj) {\n  addNonEnumerableProperty(obj, SENTRY_SKIP_NORMALIZATION, true);\n}\nfunction setNormalizationDepthOverrideHint(obj, depth) {\n  addNonEnumerableProperty(obj, SENTRY_OVERRIDE_NORMALIZATION_DEPTH, depth);\n}\nfunction hasSkipNormalizationHint(value) {\n  return Boolean(value[SENTRY_SKIP_NORMALIZATION]);\n}\nfunction getNormalizationDepthOverrideHint(value) {\n  const v = value[SENTRY_OVERRIDE_NORMALIZATION_DEPTH];\n  return typeof v === \"number\" ? v : void 0;\n}\n\nexport { getNormalizationDepthOverrideHint, hasSkipNormalizationHint, setNormalizationDepthOverrideHint, setSkipNormalizationHint };\n//# sourceMappingURL=normalizationHints.js.map\n","const objectToString = Object.prototype.toString;\nfunction isError(wat) {\n  switch (objectToString.call(wat)) {\n    case \"[object Error]\":\n    case \"[object Exception]\":\n    case \"[object DOMException]\":\n    case \"[object WebAssembly.Exception]\":\n      return true;\n    default:\n      return isInstanceOf(wat, Error);\n  }\n}\nfunction isBuiltin(wat, className) {\n  return objectToString.call(wat) === `[object ${className}]`;\n}\nfunction isErrorEvent(wat) {\n  return isBuiltin(wat, \"ErrorEvent\");\n}\nfunction isDOMError(wat) {\n  return isBuiltin(wat, \"DOMError\");\n}\nfunction isDOMException(wat) {\n  return isBuiltin(wat, \"DOMException\");\n}\nfunction isString(wat) {\n  return isBuiltin(wat, \"String\");\n}\nfunction isParameterizedString(wat) {\n  return typeof wat === \"object\" && wat !== null && \"__sentry_template_string__\" in wat && \"__sentry_template_values__\" in wat;\n}\nfunction isPrimitive(wat) {\n  return wat === null || isParameterizedString(wat) || typeof wat !== \"object\" && typeof wat !== \"function\";\n}\nfunction isPlainObject(wat) {\n  return isBuiltin(wat, \"Object\");\n}\nfunction isObjectLike(wat) {\n  return typeof wat === \"object\" && wat !== null;\n}\nfunction isEvent(wat) {\n  return typeof Event !== \"undefined\" && isInstanceOf(wat, Event);\n}\nfunction isElement(wat) {\n  return typeof Element !== \"undefined\" && isInstanceOf(wat, Element);\n}\nfunction isRegExp(wat) {\n  return isBuiltin(wat, \"RegExp\");\n}\nfunction isThenable(wat) {\n  return Boolean(wat?.then && typeof wat.then === \"function\");\n}\nfunction isSyntheticEvent(wat) {\n  return isPlainObject(wat) && \"nativeEvent\" in wat && \"preventDefault\" in wat && \"stopPropagation\" in wat;\n}\nfunction isInstanceOf(wat, base) {\n  try {\n    return wat instanceof base;\n  } catch {\n    return false;\n  }\n}\nfunction isVueViewModel(wat) {\n  return !!(typeof wat === \"object\" && wat !== null && (wat.__isVue || wat._isVue || wat.__v_isVNode));\n}\nfunction isRequest(request) {\n  return typeof Request !== \"undefined\" && isInstanceOf(request, Request);\n}\n\nexport { isDOMError, isDOMException, isElement, isError, isErrorEvent, isEvent, isInstanceOf, isObjectLike, isParameterizedString, isPlainObject, isPrimitive, isRegExp, isRequest, isString, isSyntheticEvent, isThenable, isVueViewModel };\n//# sourceMappingURL=is.js.map\n","import { DEBUG_BUILD } from '../debug-build.js';\nimport { debug } from './debug-logger.js';\nimport { isError, isEvent, isPrimitive, isObjectLike } from './is.js';\n\nfunction fill(source, name, replacementFactory) {\n  if (!(name in source)) {\n    return;\n  }\n  const original = source[name];\n  if (typeof original !== \"function\") {\n    return;\n  }\n  const wrapped = replacementFactory(original);\n  if (typeof wrapped === \"function\") {\n    markFunctionWrapped(wrapped, original);\n  }\n  try {\n    source[name] = wrapped;\n  } catch {\n    DEBUG_BUILD && debug.log(`Failed to replace method \"${name}\" in object`, source);\n  }\n}\nfunction addNonEnumerableProperty(obj, name, value) {\n  try {\n    Object.defineProperty(obj, name, {\n      // enumerable: false, // the default, so we can save on bundle size by not explicitly setting it\n      value,\n      writable: true,\n      configurable: true\n    });\n  } catch {\n    DEBUG_BUILD && debug.log(`Failed to add non-enumerable property \"${String(name)}\" to object`, obj);\n  }\n}\nfunction markFunctionWrapped(wrapped, original) {\n  try {\n    const proto = original.prototype || {};\n    wrapped.prototype = original.prototype = proto;\n    addNonEnumerableProperty(wrapped, \"__sentry_original__\", original);\n  } catch {\n  }\n}\nfunction wrapMethod(obj, field, wrapped, enumerable = true) {\n  const original = obj[field];\n  if (typeof original !== \"function\") {\n    throw new Error(`Cannot wrap method: ${field} is not a function`);\n  }\n  if (getOriginalFunction(original)) {\n    throw new Error(`Attempting to wrap method ${field} multiple times`);\n  }\n  markFunctionWrapped(wrapped, original);\n  Object.defineProperty(obj, field, {\n    writable: true,\n    configurable: true,\n    enumerable,\n    value: wrapped\n  });\n}\nfunction getOriginalFunction(func) {\n  return func.__sentry_original__;\n}\nfunction convertToPlainObject(value) {\n  if (isError(value)) {\n    return {\n      message: value.message,\n      name: value.name,\n      stack: value.stack,\n      ...getOwnProperties(value)\n    };\n  }\n  if (isEvent(value)) {\n    const { type, target, currentTarget, detail } = value;\n    return {\n      type,\n      target,\n      currentTarget,\n      ...detail ? { detail } : {},\n      ...getOwnProperties(value)\n    };\n  }\n  return value;\n}\nfunction getOwnProperties(obj) {\n  if (isObjectLike(obj)) {\n    return Object.fromEntries(Object.entries(obj));\n  }\n  return {};\n}\nfunction extractExceptionKeysForMessage(exception) {\n  const keys = Object.keys(convertToPlainObject(exception));\n  keys.sort();\n  return !keys[0] ? \"[object has no keys]\" : keys.join(\", \");\n}\nfunction dropUndefinedKeys(inputValue) {\n  const memoizationMap = /* @__PURE__ */ new Map();\n  return _dropUndefinedKeys(inputValue, memoizationMap);\n}\nfunction _dropUndefinedKeys(inputValue, memoizationMap) {\n  if (inputValue === null || typeof inputValue !== \"object\") {\n    return inputValue;\n  }\n  const memoVal = memoizationMap.get(inputValue);\n  if (memoVal !== void 0) {\n    return memoVal;\n  }\n  if (Array.isArray(inputValue)) {\n    const returnValue = [];\n    memoizationMap.set(inputValue, returnValue);\n    inputValue.forEach((value) => {\n      returnValue.push(_dropUndefinedKeys(value, memoizationMap));\n    });\n    return returnValue;\n  }\n  if (isPojo(inputValue)) {\n    const returnValue = {};\n    memoizationMap.set(inputValue, returnValue);\n    const keys = Object.keys(inputValue);\n    keys.forEach((key) => {\n      const val = inputValue[key];\n      if (val !== void 0) {\n        returnValue[key] = _dropUndefinedKeys(val, memoizationMap);\n      }\n    });\n    return returnValue;\n  }\n  return inputValue;\n}\nfunction isPojo(input) {\n  const constructor = input.constructor;\n  return constructor === Object || constructor === void 0;\n}\nfunction objectify(wat) {\n  let objectified;\n  switch (true) {\n    // this will catch both undefined and null\n    case wat == void 0:\n      objectified = new String(wat);\n      break;\n    // Though symbols and bigints do have wrapper classes (`Symbol` and `BigInt`, respectively), for whatever reason\n    // those classes don't have constructors which can be used with the `new` keyword. We therefore need to cast each as\n    // an object in order to wrap it.\n    case (typeof wat === \"symbol\" || typeof wat === \"bigint\"):\n      objectified = Object(wat);\n      break;\n    // this will catch the remaining primitives: `String`, `Number`, and `Boolean`\n    case isPrimitive(wat):\n      objectified = new wat.constructor(wat);\n      break;\n    // by process of elimination, at this point we know that `wat` must already be an object\n    default:\n      objectified = wat;\n      break;\n  }\n  return objectified;\n}\n\nexport { addNonEnumerableProperty, convertToPlainObject, dropUndefinedKeys, extractExceptionKeysForMessage, fill, getOriginalFunction, markFunctionWrapped, objectify, wrapMethod };\n//# sourceMappingURL=object.js.map\n","const STACKTRACE_FRAME_LIMIT = 50;\nconst UNKNOWN_FUNCTION = \"?\";\nconst WEBPACK_ERROR_REGEXP = /\\(error: (.*)\\)/;\nconst STRIP_FRAME_REGEXP = /captureMessage|captureException/;\nfunction createStackParser(...parsers) {\n  const sortedParsers = parsers.sort((a, b) => a[0] - b[0]).map((p) => p[1]);\n  return (stack, skipFirstLines = 0, framesToPop = 0) => {\n    const frames = [];\n    const lines = stack.split(\"\\n\");\n    for (let i = skipFirstLines; i < lines.length; i++) {\n      let line = lines[i];\n      if (line.length > 1024) {\n        line = line.slice(0, 1024);\n      }\n      const cleanedLine = WEBPACK_ERROR_REGEXP.test(line) ? line.replace(WEBPACK_ERROR_REGEXP, \"$1\") : line;\n      if (cleanedLine.includes(\"Error: \")) {\n        continue;\n      }\n      for (const parser of sortedParsers) {\n        const frame = parser(cleanedLine);\n        if (frame) {\n          frames.push(frame);\n          break;\n        }\n      }\n      if (frames.length >= STACKTRACE_FRAME_LIMIT + framesToPop) {\n        break;\n      }\n    }\n    return stripSentryFramesAndReverse(frames.slice(framesToPop));\n  };\n}\nfunction stackParserFromStackParserOptions(stackParser) {\n  if (Array.isArray(stackParser)) {\n    return createStackParser(...stackParser);\n  }\n  return stackParser;\n}\nfunction stripSentryFramesAndReverse(stack) {\n  if (!stack.length) {\n    return [];\n  }\n  const localStack = Array.from(stack);\n  if (/sentryWrapped/.test(getLastStackFrame(localStack).function || \"\")) {\n    localStack.pop();\n  }\n  localStack.reverse();\n  if (STRIP_FRAME_REGEXP.test(getLastStackFrame(localStack).function || \"\")) {\n    localStack.pop();\n    if (STRIP_FRAME_REGEXP.test(getLastStackFrame(localStack).function || \"\")) {\n      localStack.pop();\n    }\n  }\n  return localStack.slice(0, STACKTRACE_FRAME_LIMIT).map((frame) => ({\n    ...frame,\n    filename: frame.filename || getLastStackFrame(localStack).filename,\n    function: frame.function || UNKNOWN_FUNCTION\n  }));\n}\nfunction getLastStackFrame(arr) {\n  return arr[arr.length - 1] || {};\n}\nconst defaultFunctionName = \"<anonymous>\";\nfunction getFunctionName(fn) {\n  try {\n    if (!fn || typeof fn !== \"function\") {\n      return defaultFunctionName;\n    }\n    return fn.name || defaultFunctionName;\n  } catch {\n    return defaultFunctionName;\n  }\n}\nfunction getFramesFromEvent(event) {\n  const exception = event.exception;\n  if (exception) {\n    const frames = [];\n    try {\n      exception.values.forEach((value) => {\n        if (value.stacktrace.frames) {\n          frames.push(...value.stacktrace.frames);\n        }\n      });\n      return frames;\n    } catch {\n      return void 0;\n    }\n  }\n  return void 0;\n}\nfunction normalizeStackTracePath(path) {\n  let filename = path?.startsWith(\"file://\") ? path.slice(7) : path;\n  if (filename?.match(/\\/[A-Z]:/)) {\n    filename = filename.slice(1);\n  }\n  return filename;\n}\n\nexport { UNKNOWN_FUNCTION, createStackParser, getFramesFromEvent, getFunctionName, normalizeStackTracePath, stackParserFromStackParserOptions, stripSentryFramesAndReverse };\n//# sourceMappingURL=stacktrace.js.map\n","import { hasSkipNormalizationHint, getNormalizationDepthOverrideHint } from './normalizationHints.js';\nimport { convertToPlainObject } from './object.js';\nimport { getFunctionName } from './stacktrace.js';\n\nlet stringifier;\nfunction setNormalizeStringifier(newStringifier) {\n  stringifier = newStringifier;\n}\nfunction normalize(input, depth = 100, maxProperties = Infinity) {\n  try {\n    return visit(\"\", input, depth, maxProperties);\n  } catch (err) {\n    return { ERROR: `**non-serializable** (${err})` };\n  }\n}\nfunction normalizeToSize(object, depth = 3, maxSize = 100 * 1024) {\n  const normalized = normalize(object, depth);\n  if (jsonSize(normalized) > maxSize) {\n    return normalizeToSize(object, depth - 1, maxSize);\n  }\n  return normalized;\n}\nfunction visit(key, value, depth = Infinity, maxProperties = Infinity, memo = memoBuilder()) {\n  const [memoize, unmemoize] = memo;\n  if (value == null || // this matches null and undefined -> eqeq not eqeqeq\n  [\"boolean\", \"string\"].includes(typeof value) || typeof value === \"number\" && Number.isFinite(value)) {\n    return value;\n  }\n  const stringified = stringifyValue(key, value);\n  if (!stringified.startsWith(\"[object \")) {\n    return stringified;\n  }\n  if (hasSkipNormalizationHint(value)) {\n    return value;\n  }\n  const overrideDepth = getNormalizationDepthOverrideHint(value);\n  const remainingDepth = overrideDepth !== void 0 ? overrideDepth : depth;\n  if (remainingDepth === 0) {\n    return stringified.replace(\"object \", \"\");\n  }\n  if (memoize(value)) {\n    return \"[Circular ~]\";\n  }\n  const valueWithToJSON = value;\n  if (valueWithToJSON && typeof valueWithToJSON.toJSON === \"function\") {\n    try {\n      const jsonValue = valueWithToJSON.toJSON();\n      return visit(\"\", jsonValue, remainingDepth - 1, maxProperties, memo);\n    } catch {\n    }\n  }\n  const normalized = Array.isArray(value) ? [] : {};\n  let numAdded = 0;\n  const visitable = convertToPlainObject(value);\n  for (const visitKey in visitable) {\n    if (!Object.prototype.hasOwnProperty.call(visitable, visitKey)) {\n      continue;\n    }\n    if (numAdded >= maxProperties) {\n      normalized[visitKey] = \"[MaxProperties ~]\";\n      break;\n    }\n    const visitValue = visitable[visitKey];\n    normalized[visitKey] = visit(visitKey, visitValue, remainingDepth - 1, maxProperties, memo);\n    numAdded++;\n  }\n  unmemoize(value);\n  return normalized;\n}\nfunction stringifyValue(key, value) {\n  try {\n    if (stringifier) {\n      const stringified = stringifier(value);\n      if (stringified) {\n        return stringified;\n      }\n    }\n    if (typeof global !== \"undefined\" && value === global) {\n      return \"[Global]\";\n    }\n    if (typeof value === \"number\" && !Number.isFinite(value)) {\n      return `[${value}]`;\n    }\n    if (typeof value === \"function\") {\n      return `[Function: ${getFunctionName(value)}]`;\n    }\n    if (typeof value === \"symbol\") {\n      return `[${String(value)}]`;\n    }\n    if (typeof value === \"bigint\") {\n      return `[BigInt: ${String(value)}]`;\n    }\n    const objName = getConstructorName(value);\n    return `[object ${objName}]`;\n  } catch (err) {\n    return `**non-serializable** (${err})`;\n  }\n}\nfunction getConstructorName(value) {\n  const prototype = Object.getPrototypeOf(value);\n  return prototype?.constructor ? prototype.constructor.name : \"null prototype\";\n}\nfunction utf8Length(value) {\n  return ~-encodeURI(value).split(/%..|./).length;\n}\nfunction jsonSize(value) {\n  return utf8Length(JSON.stringify(value));\n}\nfunction normalizeUrlToBase(url, basePath) {\n  const escapedBase = basePath.replace(/\\\\/g, \"/\").replace(/[|\\\\{}()[\\]^$+*?.]/g, \"\\\\$&\");\n  let newUrl = url;\n  try {\n    newUrl = decodeURI(url);\n  } catch {\n  }\n  return newUrl.replace(/\\\\/g, \"/\").replace(/webpack:\\/?/g, \"\").replace(new RegExp(`(file://)?/*${escapedBase}/*`, \"ig\"), \"app:///\");\n}\nfunction memoBuilder() {\n  const inner = /* @__PURE__ */ new WeakSet();\n  function memoize(obj) {\n    if (inner.has(obj)) {\n      return true;\n    }\n    inner.add(obj);\n    return false;\n  }\n  function unmemoize(obj) {\n    inner.delete(obj);\n  }\n  return [memoize, unmemoize];\n}\n\nexport { normalize, normalizeToSize, normalizeUrlToBase, setNormalizeStringifier, stringifyValue };\n//# sourceMappingURL=normalize.js.map\n","import { GLOBAL_OBJ } from './worldwide.js';\n\nlet RESOLVED_RUNNER;\nfunction withRandomSafeContext(cb) {\n  if (RESOLVED_RUNNER !== void 0) {\n    return RESOLVED_RUNNER ? RESOLVED_RUNNER(cb) : cb();\n  }\n  const sym = /* @__PURE__ */ Symbol.for(\"__SENTRY_SAFE_RANDOM_ID_WRAPPER__\");\n  const globalWithSymbol = GLOBAL_OBJ;\n  if (sym in globalWithSymbol && typeof globalWithSymbol[sym] === \"function\") {\n    RESOLVED_RUNNER = globalWithSymbol[sym];\n    return RESOLVED_RUNNER(cb);\n  }\n  RESOLVED_RUNNER = null;\n  return cb();\n}\nfunction safeMathRandom() {\n  return withRandomSafeContext(() => Math.random());\n}\nfunction safeDateNow() {\n  return withRandomSafeContext(() => Date.now());\n}\n\nexport { safeDateNow, safeMathRandom, withRandomSafeContext };\n//# sourceMappingURL=randomSafeContext.js.map\n","import { getSentryCarrier } from '../carrier.js';\nimport { dsnToString } from './dsn.js';\nimport { normalize } from './normalize.js';\nimport { safeDateNow } from './randomSafeContext.js';\nimport { GLOBAL_OBJ } from './worldwide.js';\n\nfunction createEnvelope(headers, items = []) {\n  return [headers, items];\n}\nfunction addItemToEnvelope(envelope, newItem) {\n  const [headers, items] = envelope;\n  return [headers, [...items, newItem]];\n}\nfunction forEachEnvelopeItem(envelope, callback) {\n  const envelopeItems = envelope[1];\n  for (const envelopeItem of envelopeItems) {\n    const envelopeItemType = envelopeItem[0].type;\n    const result = callback(envelopeItem, envelopeItemType);\n    if (result) {\n      return true;\n    }\n  }\n  return false;\n}\nfunction envelopeContainsItemType(envelope, types) {\n  return forEachEnvelopeItem(envelope, (_, type) => types.includes(type));\n}\nfunction encodeUTF8(input) {\n  const carrier = getSentryCarrier(GLOBAL_OBJ);\n  return carrier.encodePolyfill ? carrier.encodePolyfill(input) : new TextEncoder().encode(input);\n}\nfunction decodeUTF8(input) {\n  const carrier = getSentryCarrier(GLOBAL_OBJ);\n  return carrier.decodePolyfill ? carrier.decodePolyfill(input) : new TextDecoder().decode(input);\n}\nfunction serializeEnvelope(envelope) {\n  const [envHeaders, items] = envelope;\n  let parts = JSON.stringify(envHeaders);\n  function append(next) {\n    if (typeof parts === \"string\") {\n      parts = typeof next === \"string\" ? parts + next : [encodeUTF8(parts), next];\n    } else {\n      parts.push(typeof next === \"string\" ? encodeUTF8(next) : next);\n    }\n  }\n  for (const item of items) {\n    const [itemHeaders, payload] = item;\n    append(`\n${JSON.stringify(itemHeaders)}\n`);\n    if (typeof payload === \"string\" || payload instanceof Uint8Array) {\n      append(payload);\n    } else {\n      let stringifiedPayload;\n      try {\n        stringifiedPayload = JSON.stringify(payload);\n      } catch {\n        stringifiedPayload = JSON.stringify(normalize(payload));\n      }\n      append(stringifiedPayload);\n    }\n  }\n  return typeof parts === \"string\" ? parts : concatBuffers(parts);\n}\nfunction concatBuffers(buffers) {\n  const totalLength = buffers.reduce((acc, buf) => acc + buf.length, 0);\n  const merged = new Uint8Array(totalLength);\n  let offset = 0;\n  for (const buffer of buffers) {\n    merged.set(buffer, offset);\n    offset += buffer.length;\n  }\n  return merged;\n}\nfunction parseEnvelope(env) {\n  let buffer = typeof env === \"string\" ? encodeUTF8(env) : env;\n  function readBinary(length) {\n    const bin = buffer.subarray(0, length);\n    buffer = buffer.subarray(length + 1);\n    return bin;\n  }\n  function readJson() {\n    let i = buffer.indexOf(10);\n    if (i < 0) {\n      i = buffer.length;\n    }\n    return JSON.parse(decodeUTF8(readBinary(i)));\n  }\n  const envelopeHeader = readJson();\n  const items = [];\n  while (buffer.length) {\n    const itemHeader = readJson();\n    const binaryLength = typeof itemHeader.length === \"number\" ? itemHeader.length : void 0;\n    items.push([itemHeader, binaryLength ? readBinary(binaryLength) : readJson()]);\n  }\n  return [envelopeHeader, items];\n}\nfunction createAttachmentEnvelopeItem(attachment) {\n  const buffer = typeof attachment.data === \"string\" ? encodeUTF8(attachment.data) : attachment.data;\n  return [\n    {\n      type: \"attachment\",\n      length: buffer.length,\n      filename: attachment.filename,\n      content_type: attachment.contentType,\n      attachment_type: attachment.attachmentType\n    },\n    buffer\n  ];\n}\nconst DATA_CATEGORY_OVERRIDES = {\n  sessions: \"session\",\n  event: \"error\",\n  client_report: \"internal\",\n  user_report: \"default\",\n  profile_chunk: \"profile\",\n  replay_event: \"replay\",\n  replay_recording: \"replay\",\n  check_in: \"monitor\",\n  raw_security: \"security\",\n  log: \"log_item\",\n  metric: \"trace_metric\"\n};\nfunction _isOverriddenType(type) {\n  return type in DATA_CATEGORY_OVERRIDES;\n}\nfunction envelopeItemTypeToDataCategory(type) {\n  return _isOverriddenType(type) ? DATA_CATEGORY_OVERRIDES[type] : type;\n}\nfunction getSdkMetadataForEnvelopeHeader(metadataOrEvent) {\n  if (!metadataOrEvent?.sdk) {\n    return;\n  }\n  const { name, version } = metadataOrEvent.sdk;\n  return { name, version };\n}\nfunction createEventEnvelopeHeaders(event, sdkInfo, tunnel, dsn) {\n  const dynamicSamplingContext = event.sdkProcessingMetadata?.dynamicSamplingContext;\n  return {\n    event_id: event.event_id,\n    sent_at: new Date(safeDateNow()).toISOString(),\n    ...sdkInfo && { sdk: sdkInfo },\n    ...!!tunnel && dsn && { dsn: dsnToString(dsn) },\n    ...dynamicSamplingContext && {\n      trace: dynamicSamplingContext\n    }\n  };\n}\nfunction getDataCategoryByType(type) {\n  return type === \"replay_event\" ? \"replay\" : type || \"error\";\n}\n\nexport { addItemToEnvelope, createAttachmentEnvelopeItem, createEnvelope, createEventEnvelopeHeaders, envelopeContainsItemType, envelopeItemTypeToDataCategory, forEachEnvelopeItem, getDataCategoryByType, getSdkMetadataForEnvelopeHeader, parseEnvelope, serializeEnvelope };\n//# sourceMappingURL=envelope.js.map\n","import { getEnvelopeEndpointWithUrlEncodedAuth } from '../api.js';\nimport { dsnFromString } from '../utils/dsn.js';\nimport { createEnvelope, forEachEnvelopeItem } from '../utils/envelope.js';\n\nconst MULTIPLEXED_TRANSPORT_EXTRA_KEY = \"MULTIPLEXED_TRANSPORT_EXTRA_KEY\";\nfunction eventFromEnvelope(env, types) {\n  let event;\n  forEachEnvelopeItem(env, (item, type) => {\n    if (types.includes(type)) {\n      event = Array.isArray(item) ? item[1] : void 0;\n    }\n    return !!event;\n  });\n  return event;\n}\nfunction makeOverrideReleaseTransport(createTransport, release) {\n  return (options) => {\n    const transport = createTransport(options);\n    return {\n      ...transport,\n      send: async (envelope) => {\n        const event = eventFromEnvelope(envelope, [\"event\", \"transaction\", \"profile\", \"replay_event\"]);\n        if (event) {\n          event.release = release;\n        }\n        return transport.send(envelope);\n      }\n    };\n  };\n}\nfunction overrideDsn(envelope, dsn) {\n  return createEnvelope(\n    dsn ? {\n      ...envelope[0],\n      dsn\n    } : envelope[0],\n    envelope[1]\n  );\n}\nfunction makeMultiplexedTransport(createTransport, matcher) {\n  return (options) => {\n    const fallbackTransport = createTransport(options);\n    const otherTransports = /* @__PURE__ */ new Map();\n    const actualMatcher = matcher || ((args) => {\n      const event = args.getEvent();\n      if (event?.extra?.[MULTIPLEXED_TRANSPORT_EXTRA_KEY] && Array.isArray(event.extra[MULTIPLEXED_TRANSPORT_EXTRA_KEY])) {\n        return event.extra[MULTIPLEXED_TRANSPORT_EXTRA_KEY];\n      }\n      return [];\n    });\n    function getTransport(dsn, release) {\n      const key = release ? `${dsn}:${release}` : dsn;\n      let transport = otherTransports.get(key);\n      if (!transport) {\n        const validatedDsn = dsnFromString(dsn);\n        if (!validatedDsn) {\n          return void 0;\n        }\n        const url = getEnvelopeEndpointWithUrlEncodedAuth(validatedDsn, options.tunnel);\n        transport = release ? makeOverrideReleaseTransport(createTransport, release)({ ...options, url }) : createTransport({ ...options, url });\n        otherTransports.set(key, transport);\n      }\n      return [dsn, transport];\n    }\n    async function send(envelope) {\n      function getEvent(types) {\n        const eventTypes = types?.length ? types : [\"event\"];\n        return eventFromEnvelope(envelope, eventTypes);\n      }\n      const transports = actualMatcher({ envelope, getEvent }).map((result) => {\n        if (typeof result === \"string\") {\n          return getTransport(result, void 0);\n        } else {\n          return getTransport(result.dsn, result.release);\n        }\n      }).filter((t) => !!t);\n      const transportsWithFallback = transports.length ? transports : [[\"\", fallbackTransport]];\n      const results = await Promise.all(\n        transportsWithFallback.map(([dsn, transport]) => transport.send(overrideDsn(envelope, dsn)))\n      );\n      return results[0];\n    }\n    async function flush(timeout) {\n      const allTransports = [...otherTransports.values(), fallbackTransport];\n      const results = await Promise.all(allTransports.map((transport) => transport.flush(timeout)));\n      return results.every((r) => r);\n    }\n    return {\n      send,\n      flush\n    };\n  };\n}\n\nexport { MULTIPLEXED_TRANSPORT_EXTRA_KEY, eventFromEnvelope, makeMultiplexedTransport };\n//# sourceMappingURL=multiplexed.js.map\n","import { isThenable } from './is.js';\n\nconst STATE_PENDING = 0;\nconst STATE_RESOLVED = 1;\nconst STATE_REJECTED = 2;\nfunction resolvedSyncPromise(value) {\n  return new SyncPromise((resolve) => {\n    resolve(value);\n  });\n}\nfunction rejectedSyncPromise(reason) {\n  return new SyncPromise((_, reject) => {\n    reject(reason);\n  });\n}\nclass SyncPromise {\n  constructor(executor) {\n    this._state = STATE_PENDING;\n    this._handlers = [];\n    this._runExecutor(executor);\n  }\n  /** @inheritdoc */\n  then(onfulfilled, onrejected) {\n    return new SyncPromise((resolve, reject) => {\n      this._handlers.push([\n        false,\n        (result) => {\n          if (!onfulfilled) {\n            resolve(result);\n          } else {\n            try {\n              resolve(onfulfilled(result));\n            } catch (e) {\n              reject(e);\n            }\n          }\n        },\n        (reason) => {\n          if (!onrejected) {\n            reject(reason);\n          } else {\n            try {\n              resolve(onrejected(reason));\n            } catch (e) {\n              reject(e);\n            }\n          }\n        }\n      ]);\n      this._executeHandlers();\n    });\n  }\n  /** @inheritdoc */\n  catch(onrejected) {\n    return this.then((val) => val, onrejected);\n  }\n  /** @inheritdoc */\n  finally(onfinally) {\n    return new SyncPromise((resolve, reject) => {\n      let val;\n      let isRejected;\n      return this.then(\n        (value) => {\n          isRejected = false;\n          val = value;\n          if (onfinally) {\n            onfinally();\n          }\n        },\n        (reason) => {\n          isRejected = true;\n          val = reason;\n          if (onfinally) {\n            onfinally();\n          }\n        }\n      ).then(() => {\n        if (isRejected) {\n          reject(val);\n          return;\n        }\n        resolve(val);\n      });\n    });\n  }\n  /** Excute the resolve/reject handlers. */\n  _executeHandlers() {\n    if (this._state === STATE_PENDING) {\n      return;\n    }\n    const cachedHandlers = this._handlers.slice();\n    this._handlers = [];\n    cachedHandlers.forEach((handler) => {\n      if (handler[0]) {\n        return;\n      }\n      if (this._state === STATE_RESOLVED) {\n        handler[1](this._value);\n      }\n      if (this._state === STATE_REJECTED) {\n        handler[2](this._value);\n      }\n      handler[0] = true;\n    });\n  }\n  /** Run the executor for the SyncPromise. */\n  _runExecutor(executor) {\n    const setResult = (state, value) => {\n      if (this._state !== STATE_PENDING) {\n        return;\n      }\n      if (isThenable(value)) {\n        void value.then(resolve, reject);\n        return;\n      }\n      this._state = state;\n      this._value = value;\n      this._executeHandlers();\n    };\n    const resolve = (value) => {\n      setResult(STATE_RESOLVED, value);\n    };\n    const reject = (reason) => {\n      setResult(STATE_REJECTED, reason);\n    };\n    try {\n      executor(resolve, reject);\n    } catch (e) {\n      reject(e);\n    }\n  }\n}\n\nexport { SyncPromise, rejectedSyncPromise, resolvedSyncPromise };\n//# sourceMappingURL=syncpromise.js.map\n","function safeUnref(timer) {\n  if (typeof timer === \"object\" && typeof timer.unref === \"function\") {\n    timer.unref();\n  }\n  return timer;\n}\n\nexport { safeUnref };\n//# sourceMappingURL=timer.js.map\n","import { resolvedSyncPromise, rejectedSyncPromise } from './syncpromise.js';\nimport { safeUnref } from './timer.js';\n\nconst SENTRY_BUFFER_FULL_ERROR = /* @__PURE__ */ Symbol.for(\"SentryBufferFullError\");\nfunction makePromiseBuffer(limit = 100) {\n  const buffer = /* @__PURE__ */ new Set();\n  function isReady() {\n    return buffer.size < limit;\n  }\n  function remove(task) {\n    buffer.delete(task);\n  }\n  function add(taskProducer) {\n    if (!isReady()) {\n      return rejectedSyncPromise(SENTRY_BUFFER_FULL_ERROR);\n    }\n    const task = taskProducer();\n    buffer.add(task);\n    void task.then(\n      () => remove(task),\n      () => remove(task)\n    );\n    return task;\n  }\n  function drain(timeout) {\n    if (!buffer.size) {\n      return resolvedSyncPromise(true);\n    }\n    const drainPromise = Promise.allSettled(Array.from(buffer)).then(() => true);\n    if (!timeout) {\n      return drainPromise;\n    }\n    const promises = [\n      drainPromise,\n      new Promise((resolve) => safeUnref(setTimeout(() => resolve(false), timeout)))\n    ];\n    return Promise.race(promises);\n  }\n  return {\n    get $() {\n      return Array.from(buffer);\n    },\n    add,\n    drain\n  };\n}\n\nexport { SENTRY_BUFFER_FULL_ERROR, makePromiseBuffer };\n//# sourceMappingURL=promisebuffer.js.map\n","import { DEBUG_BUILD } from '../debug-build.js';\nimport { debug } from '../utils/debug-logger.js';\nimport { forEachEnvelopeItem, envelopeItemTypeToDataCategory, createEnvelope, serializeEnvelope, envelopeContainsItemType } from '../utils/envelope.js';\nimport { makePromiseBuffer, SENTRY_BUFFER_FULL_ERROR } from '../utils/promisebuffer.js';\nimport { isRateLimited, updateRateLimits } from '../utils/ratelimit.js';\n\nconst DEFAULT_TRANSPORT_BUFFER_SIZE = 64;\nfunction createTransport(options, makeRequest, buffer = makePromiseBuffer(\n  options.bufferSize || DEFAULT_TRANSPORT_BUFFER_SIZE\n)) {\n  let rateLimits = {};\n  const flush = (timeout) => buffer.drain(timeout);\n  function recordItemLoss(reason, [headers, payload], type) {\n    const dataCategory = envelopeItemTypeToDataCategory(type);\n    if (type === \"transaction\") {\n      options.recordDroppedEvent(reason, \"span\", (payload.spans?.length ?? 0) + 1);\n    }\n    options.recordDroppedEvent(reason, dataCategory, typeof headers.item_count === \"number\" ? headers.item_count : 1);\n  }\n  function send(envelope) {\n    const filteredEnvelopeItems = [];\n    forEachEnvelopeItem(envelope, (item, type) => {\n      if (isRateLimited(rateLimits, envelopeItemTypeToDataCategory(type))) {\n        recordItemLoss(\"ratelimit_backoff\", item, type);\n      } else {\n        filteredEnvelopeItems.push(item);\n      }\n    });\n    if (filteredEnvelopeItems.length === 0) {\n      return Promise.resolve({});\n    }\n    const filteredEnvelope = createEnvelope(envelope[0], filteredEnvelopeItems);\n    const recordEnvelopeLoss = (reason) => {\n      if (envelopeContainsItemType(filteredEnvelope, [\"client_report\"])) {\n        DEBUG_BUILD && debug.warn(`Dropping client report. Will not send outcomes (reason: ${reason}).`);\n        return;\n      }\n      forEachEnvelopeItem(filteredEnvelope, (item, type) => {\n        recordItemLoss(reason, item, type);\n      });\n    };\n    const requestTask = () => makeRequest({ body: serializeEnvelope(filteredEnvelope) }).then(\n      (response) => {\n        if (response.statusCode === 413) {\n          DEBUG_BUILD && debug.error(\n            \"Sentry responded with status code 413. Envelope was discarded due to exceeding size limits.\"\n          );\n          recordEnvelopeLoss(\"send_error\");\n          return response;\n        }\n        if (DEBUG_BUILD && response.statusCode !== void 0 && (response.statusCode < 200 || response.statusCode >= 300)) {\n          debug.warn(`Sentry responded with status code ${response.statusCode} to sent event.`);\n        }\n        rateLimits = updateRateLimits(rateLimits, response);\n        return response;\n      },\n      (error) => {\n        recordEnvelopeLoss(\"network_error\");\n        DEBUG_BUILD && debug.error(\"Encountered error running transport request:\", error);\n        throw error;\n      }\n    );\n    return buffer.add(requestTask).then(\n      (result) => result,\n      (error) => {\n        if (error === SENTRY_BUFFER_FULL_ERROR) {\n          DEBUG_BUILD && debug.error(\"Skipped sending event because buffer is full.\");\n          recordEnvelopeLoss(\"queue_overflow\");\n          return Promise.resolve({});\n        } else {\n          throw error;\n        }\n      }\n    );\n  }\n  return {\n    send,\n    flush\n  };\n}\n\nexport { DEFAULT_TRANSPORT_BUFFER_SIZE, createTransport };\n//# sourceMappingURL=base.js.map\n","import { safeDateNow } from './randomSafeContext.js';\n\nconst DEFAULT_RETRY_AFTER = 60 * 1e3;\nfunction parseRetryAfterHeader(header, now = safeDateNow()) {\n  const headerDelay = parseInt(`${header}`, 10);\n  if (!isNaN(headerDelay)) {\n    return headerDelay * 1e3;\n  }\n  const headerDate = Date.parse(`${header}`);\n  if (!isNaN(headerDate)) {\n    return headerDate - now;\n  }\n  return DEFAULT_RETRY_AFTER;\n}\nfunction disabledUntil(limits, dataCategory) {\n  return limits[dataCategory] || limits.all || 0;\n}\nfunction isRateLimited(limits, dataCategory, now = safeDateNow()) {\n  return disabledUntil(limits, dataCategory) > now;\n}\nfunction updateRateLimits(limits, { statusCode, headers }, now = safeDateNow()) {\n  const updatedRateLimits = {\n    ...limits\n  };\n  const rateLimitHeader = headers?.[\"x-sentry-rate-limits\"];\n  const retryAfterHeader = headers?.[\"retry-after\"];\n  if (rateLimitHeader) {\n    for (const limit of rateLimitHeader.trim().split(\",\")) {\n      const [retryAfter, categories, , , namespaces] = limit.split(\":\", 5);\n      const headerDelay = parseInt(retryAfter, 10);\n      const delay = (!isNaN(headerDelay) ? headerDelay : 60) * 1e3;\n      if (!categories) {\n        updatedRateLimits.all = now + delay;\n      } else {\n        for (const category of categories.split(\";\")) {\n          if (category === \"metric_bucket\") {\n            if (!namespaces || namespaces.split(\";\").includes(\"custom\")) {\n              updatedRateLimits[category] = now + delay;\n            }\n          } else {\n            updatedRateLimits[category] = now + delay;\n          }\n        }\n      }\n    }\n  } else if (retryAfterHeader) {\n    updatedRateLimits.all = now + parseRetryAfterHeader(retryAfterHeader, now);\n  } else if (statusCode === 429) {\n    updatedRateLimits.all = now + 60 * 1e3;\n  }\n  return updatedRateLimits;\n}\n\nexport { DEFAULT_RETRY_AFTER, disabledUntil, isRateLimited, parseRetryAfterHeader, updateRateLimits };\n//# sourceMappingURL=ratelimit.js.map\n","import { DEBUG_BUILD } from '../debug-build.js';\nimport { debug } from './debug-logger.js';\nimport { GLOBAL_OBJ } from './worldwide.js';\n\nconst WINDOW = GLOBAL_OBJ;\nfunction supportsErrorEvent() {\n  try {\n    new ErrorEvent(\"\");\n    return true;\n  } catch {\n    return false;\n  }\n}\nfunction supportsDOMException() {\n  try {\n    new DOMException(\"\");\n    return true;\n  } catch {\n    return false;\n  }\n}\nconst supportsFetch = _isFetchSupported;\nfunction _isFetchSupported() {\n  if (!(\"fetch\" in WINDOW)) {\n    return false;\n  }\n  try {\n    new Headers();\n    new Request(\"data:,\");\n    new Response();\n    return true;\n  } catch {\n    return false;\n  }\n}\nfunction isNativeFunction(func) {\n  return func && /^function\\s+\\w+\\(\\)\\s+\\{\\s+\\[native code\\]\\s+\\}$/.test(func.toString());\n}\nfunction supportsNativeFetch() {\n  if (typeof EdgeRuntime === \"string\") {\n    return true;\n  }\n  if (!_isFetchSupported()) {\n    return false;\n  }\n  if (isNativeFunction(WINDOW.fetch)) {\n    return true;\n  }\n  let result = false;\n  const doc = WINDOW.document;\n  if (doc && typeof doc.createElement === \"function\") {\n    try {\n      const sandbox = doc.createElement(\"iframe\");\n      sandbox.hidden = true;\n      doc.head.appendChild(sandbox);\n      if (sandbox.contentWindow?.fetch) {\n        result = isNativeFunction(sandbox.contentWindow.fetch);\n      }\n      doc.head.removeChild(sandbox);\n    } catch (err) {\n      DEBUG_BUILD && debug.warn(\"Could not create sandbox iframe for pure fetch check, bailing to window.fetch: \", err);\n    }\n  }\n  return result;\n}\nfunction supportsReferrerPolicy() {\n  if (!_isFetchSupported()) {\n    return false;\n  }\n  try {\n    new Request(\"_\", {\n      referrerPolicy: \"origin\"\n    });\n    return true;\n  } catch {\n    return false;\n  }\n}\n\nexport { isNativeFunction, supportsDOMException, supportsErrorEvent, supportsFetch, supportsNativeFetch, supportsReferrerPolicy };\n//# sourceMappingURL=supports.js.map\n","const DEBUG_BUILD = (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__);\n\nexport { DEBUG_BUILD };\n//# sourceMappingURL=debug-build.js.map\n","import { GLOBAL_OBJ } from '@sentry/core';\n\nconst WINDOW = GLOBAL_OBJ;\n\nexport { WINDOW };\n//# sourceMappingURL=types.js.map\n","import { isNativeFunction, debug } from '@sentry/core';\nimport { DEBUG_BUILD } from './debug-build.js';\nimport { WINDOW } from './types.js';\n\nconst cachedImplementations = {};\nfunction getNativeImplementation(name) {\n  const cached = cachedImplementations[name];\n  if (cached) {\n    return cached;\n  }\n  let impl = WINDOW[name];\n  if (isNativeFunction(impl)) {\n    return cachedImplementations[name] = impl.bind(WINDOW);\n  }\n  const document = WINDOW.document;\n  if (document && typeof document.createElement === \"function\") {\n    try {\n      const sandbox = document.createElement(\"iframe\");\n      sandbox.hidden = true;\n      document.head.appendChild(sandbox);\n      const contentWindow = sandbox.contentWindow;\n      if (contentWindow?.[name]) {\n        impl = contentWindow[name];\n      }\n      document.head.removeChild(sandbox);\n    } catch (e) {\n      DEBUG_BUILD && debug.warn(`Could not create sandbox iframe for ${name} check, bailing to window.${name}: `, e);\n    }\n  }\n  if (!impl) {\n    return impl;\n  }\n  return cachedImplementations[name] = impl.bind(WINDOW);\n}\nfunction clearCachedImplementation(name) {\n  cachedImplementations[name] = void 0;\n}\nfunction fetch(...rest) {\n  return getNativeImplementation(\"fetch\")(...rest);\n}\nfunction setTimeout(...rest) {\n  try {\n    return getNativeImplementation(\"setTimeout\")(...rest);\n  } catch (e) {\n    DEBUG_BUILD && debug.warn(\"Could not use native setTimeout implementation, falling back to window.setTimeout: \", e);\n    const fallback = WINDOW.setTimeout.bind(WINDOW);\n    cachedImplementations.setTimeout = fallback;\n    return fallback(...rest);\n  }\n}\n\nexport { clearCachedImplementation, fetch, getNativeImplementation, setTimeout };\n//# sourceMappingURL=getNativeImplementation.js.map\n","import { createTransport, makePromiseBuffer } from '@sentry/core';\nimport { getNativeImplementation, clearCachedImplementation } from '@sentry/browser-utils';\n\nconst DEFAULT_BROWSER_TRANSPORT_BUFFER_SIZE = 40;\nfunction makeFetchTransport(options, nativeFetch = getNativeImplementation(\"fetch\")) {\n  let pendingBodySize = 0;\n  let pendingCount = 0;\n  async function makeRequest(request) {\n    const requestSize = request.body.length;\n    pendingBodySize += requestSize;\n    pendingCount++;\n    const requestOptions = {\n      body: request.body,\n      method: \"POST\",\n      referrerPolicy: \"strict-origin\",\n      headers: options.headers,\n      // Outgoing requests are usually cancelled when navigating to a different page, causing a \"TypeError: Failed to\n      // fetch\" error and sending a \"network_error\" client-outcome - in Chrome, the request status shows \"(cancelled)\".\n      // The `keepalive` flag keeps outgoing requests alive, even when switching pages. We want this since we're\n      // frequently sending events right before the user is switching pages (eg. when finishing navigation transactions).\n      // Gotchas:\n      // - `keepalive` isn't supported by Firefox\n      // - As per spec (https://fetch.spec.whatwg.org/#http-network-or-cache-fetch):\n      //   If the sum of contentLength and inflightKeepaliveBytes is greater than 64 kibibytes, then return a network error.\n      //   We will therefore only activate the flag when we're below that limit.\n      // There is also a limit of requests that can be open at the same time, so we also limit this to 15\n      // See https://github.com/getsentry/sentry-javascript/pull/7553 for details\n      keepalive: pendingBodySize <= 6e4 && pendingCount < 15,\n      ...options.fetchOptions\n    };\n    try {\n      const response = await nativeFetch(options.url, requestOptions);\n      return {\n        statusCode: response.status,\n        headers: {\n          \"x-sentry-rate-limits\": response.headers.get(\"X-Sentry-Rate-Limits\"),\n          \"retry-after\": response.headers.get(\"Retry-After\")\n        }\n      };\n    } catch (e) {\n      clearCachedImplementation(\"fetch\");\n      throw e;\n    } finally {\n      pendingBodySize -= requestSize;\n      pendingCount--;\n    }\n  }\n  return createTransport(\n    options,\n    makeRequest,\n    makePromiseBuffer(options.bufferSize || DEFAULT_BROWSER_TRANSPORT_BUFFER_SIZE)\n  );\n}\n\nexport { makeFetchTransport };\n//# sourceMappingURL=fetch.js.map\n","import { getClient } from './currentScopes.js';\nimport { DEBUG_BUILD } from './debug-build.js';\nimport { debug } from './utils/debug-logger.js';\n\nconst installedIntegrations = [];\nfunction filterDuplicates(integrations) {\n  const integrationsByName = {};\n  integrations.forEach((currentInstance) => {\n    const { name } = currentInstance;\n    const existingInstance = integrationsByName[name];\n    if (existingInstance && !existingInstance.isDefaultInstance && currentInstance.isDefaultInstance) {\n      return;\n    }\n    integrationsByName[name] = currentInstance;\n  });\n  return Object.values(integrationsByName);\n}\nfunction getIntegrationsToSetup(options) {\n  const defaultIntegrations = options.defaultIntegrations || [];\n  const userIntegrations = options.integrations;\n  defaultIntegrations.forEach((integration) => {\n    integration.isDefaultInstance = true;\n  });\n  let integrations;\n  if (Array.isArray(userIntegrations)) {\n    integrations = [...defaultIntegrations, ...userIntegrations];\n  } else if (typeof userIntegrations === \"function\") {\n    const resolvedUserIntegrations = userIntegrations(defaultIntegrations);\n    integrations = Array.isArray(resolvedUserIntegrations) ? resolvedUserIntegrations : [resolvedUserIntegrations];\n  } else {\n    integrations = defaultIntegrations;\n  }\n  return filterDuplicates(integrations);\n}\nfunction setupIntegrations(client, integrations) {\n  const integrationIndex = {};\n  integrations.forEach((integration) => {\n    if (integration?.beforeSetup) {\n      integration.beforeSetup(client);\n    }\n  });\n  integrations.forEach((integration) => {\n    if (integration) {\n      setupIntegration(client, integration, integrationIndex);\n    }\n  });\n  return integrationIndex;\n}\nfunction afterSetupIntegrations(client, integrations) {\n  for (const integration of integrations) {\n    if (integration?.afterAllSetup) {\n      integration.afterAllSetup(client);\n    }\n  }\n}\nfunction setupIntegration(client, integration, integrationIndex) {\n  if (integrationIndex[integration.name]) {\n    DEBUG_BUILD && debug.log(`Integration skipped because it was already installed: ${integration.name}`);\n    return;\n  }\n  integrationIndex[integration.name] = integration;\n  if (!installedIntegrations.includes(integration.name) && typeof integration.setupOnce === \"function\") {\n    integration.setupOnce();\n    installedIntegrations.push(integration.name);\n  }\n  if (integration.setup && typeof integration.setup === \"function\") {\n    integration.setup(client);\n  }\n  if (typeof integration.preprocessEvent === \"function\") {\n    const callback = integration.preprocessEvent.bind(integration);\n    client.on(\"preprocessEvent\", (event, hint) => callback(event, hint, client));\n  }\n  if (typeof integration.processEvent === \"function\") {\n    const callback = integration.processEvent.bind(integration);\n    const processor = Object.assign((event, hint) => callback(event, hint, client), {\n      id: integration.name\n    });\n    client.addEventProcessor(processor);\n  }\n  [\"processSpan\", \"processSegmentSpan\"].forEach((hook) => {\n    const callback = integration[hook];\n    if (typeof callback === \"function\") {\n      client.on(hook, (span) => callback.call(integration, span, client));\n    }\n  });\n  DEBUG_BUILD && debug.log(`Integration installed: ${integration.name}`);\n}\nfunction addIntegration(integration) {\n  const client = getClient();\n  if (!client) {\n    DEBUG_BUILD && debug.warn(`Cannot add integration \"${integration.name}\" because no SDK Client is available.`);\n    return;\n  }\n  client.addIntegration(integration);\n}\nfunction defineIntegration(fn) {\n  return fn;\n}\nfunction extendIntegration(integration, extendedIntegration) {\n  const wrappedIntegration = {\n    ...integration,\n    ...extendedIntegration\n  };\n  for (const key in extendedIntegration) {\n    const baseValue = integration[key];\n    const extendedValue = extendedIntegration[key];\n    if (typeof baseValue === \"function\" && typeof extendedValue === \"function\") {\n      const wrappedFunction = new Proxy(baseValue, {\n        apply: (target, thisArg, args) => {\n          Reflect.apply(target, thisArg, args);\n          return Reflect.apply(extendedValue, thisArg, args);\n        }\n      });\n      wrappedIntegration[key] = wrappedFunction;\n    }\n  }\n  return wrappedIntegration;\n}\n\nexport { addIntegration, afterSetupIntegrations, defineIntegration, extendIntegration, getIntegrationsToSetup, installedIntegrations, setupIntegration, setupIntegrations };\n//# sourceMappingURL=integration.js.map\n","function isInternalException(hint) {\n  return hint.data?.__sentry__ === true;\n}\nfunction getPossibleEventMessages(event) {\n  const possibleMessages = [];\n  if (event.message) {\n    possibleMessages.push(event.message);\n  }\n  try {\n    const lastException = event.exception.values[event.exception.values.length - 1];\n    if (lastException?.value) {\n      possibleMessages.push(lastException.value);\n      if (lastException.type) {\n        possibleMessages.push(`${lastException.type}: ${lastException.value}`);\n      }\n    }\n  } catch {\n  }\n  return possibleMessages;\n}\n\nexport { getPossibleEventMessages, isInternalException };\n//# sourceMappingURL=eventUtils.js.map\n","import { addNonEnumerableProperty } from './object.js';\nimport { withRandomSafeContext, safeMathRandom } from './randomSafeContext.js';\nimport { snipLine } from './string.js';\nimport { GLOBAL_OBJ } from './worldwide.js';\n\nfunction getCrypto() {\n  const gbl = GLOBAL_OBJ;\n  return gbl.crypto || gbl.msCrypto;\n}\nlet emptyUuid;\nfunction getRandomByte() {\n  return safeMathRandom() * 16;\n}\nfunction uuid4(crypto = getCrypto()) {\n  try {\n    if (crypto?.randomUUID) {\n      return withRandomSafeContext(() => crypto.randomUUID()).replace(/-/g, \"\");\n    }\n  } catch {\n  }\n  if (!emptyUuid) {\n    emptyUuid = \"10000000100040008000\" + 1e11;\n  }\n  return emptyUuid.replace(\n    /[018]/g,\n    (c) => (\n      // eslint-disable-next-line no-bitwise\n      (c ^ (getRandomByte() & 15) >> c / 4).toString(16)\n    )\n  );\n}\nfunction getFirstException(event) {\n  return event.exception?.values?.[0];\n}\nfunction getEventDescription(event) {\n  const { message, event_id: eventId } = event;\n  if (message) {\n    return message;\n  }\n  const firstException = getFirstException(event);\n  if (firstException) {\n    if (firstException.type && firstException.value) {\n      return `${firstException.type}: ${firstException.value}`;\n    }\n    return firstException.type || firstException.value || eventId || \"<unknown>\";\n  }\n  return eventId || \"<unknown>\";\n}\nfunction addExceptionTypeValue(event, value, type) {\n  const exception = event.exception = event.exception || {};\n  const values = exception.values = exception.values || [];\n  const firstException = values[0] = values[0] || {};\n  if (!firstException.value) {\n    firstException.value = value || \"\";\n  }\n  if (!firstException.type) {\n    firstException.type = type || \"Error\";\n  }\n}\nfunction addExceptionMechanism(event, newMechanism) {\n  const firstException = getFirstException(event);\n  if (!firstException) {\n    return;\n  }\n  applyExceptionMechanism(firstException, newMechanism);\n}\nfunction addExceptionMechanismToCapturedException(event, newMechanism) {\n  const exceptions = event.exception?.values;\n  const capturedException = exceptions?.find((exception) => exception.mechanism?.exception_id === 0) ?? exceptions?.[0];\n  if (!capturedException) {\n    return;\n  }\n  applyExceptionMechanism(capturedException, newMechanism);\n}\nfunction applyExceptionMechanism(exception, newMechanism) {\n  const defaultMechanism = { type: \"generic\", handled: true };\n  const currentMechanism = exception.mechanism;\n  exception.mechanism = { ...defaultMechanism, ...currentMechanism, ...newMechanism };\n  if (newMechanism && \"data\" in newMechanism) {\n    exception.mechanism.data = { ...currentMechanism?.data, ...newMechanism.data };\n  }\n}\nconst SEMVER_REGEXP = /^(0|[1-9]\\d*)\\.(0|[1-9]\\d*)\\.(0|[1-9]\\d*)(?:-((?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\\.(?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\\+([0-9a-zA-Z-]+(?:\\.[0-9a-zA-Z-]+)*))?$/;\nfunction _parseInt(input) {\n  return parseInt(input || \"\", 10);\n}\nfunction parseSemver(input) {\n  const match = input.match(SEMVER_REGEXP) || [];\n  const major = _parseInt(match[1]);\n  const minor = _parseInt(match[2]);\n  const patch = _parseInt(match[3]);\n  return {\n    buildmetadata: match[5],\n    major: isNaN(major) ? void 0 : major,\n    minor: isNaN(minor) ? void 0 : minor,\n    patch: isNaN(patch) ? void 0 : patch,\n    prerelease: match[4]\n  };\n}\nfunction addContextToFrame(lines, frame, linesOfContext = 5) {\n  if (frame.lineno === void 0) {\n    return;\n  }\n  const maxLines = lines.length;\n  const sourceLine = Math.max(Math.min(maxLines - 1, frame.lineno - 1), 0);\n  frame.pre_context = lines.slice(Math.max(0, sourceLine - linesOfContext), sourceLine).map((line) => snipLine(line, 0));\n  const lineIndex = Math.min(maxLines - 1, sourceLine);\n  frame.context_line = snipLine(lines[lineIndex], frame.colno || 0);\n  frame.post_context = lines.slice(Math.min(sourceLine + 1, maxLines), sourceLine + 1 + linesOfContext).map((line) => snipLine(line, 0));\n}\nfunction checkOrSetAlreadyCaught(exception) {\n  if (isAlreadyCaptured(exception)) {\n    return true;\n  }\n  try {\n    addNonEnumerableProperty(exception, \"__sentry_captured__\", true);\n  } catch {\n  }\n  return false;\n}\nfunction isAlreadyCaptured(exception) {\n  try {\n    return exception.__sentry_captured__;\n  } catch {\n  }\n}\n\nexport { addContextToFrame, addExceptionMechanism, addExceptionMechanismToCapturedException, addExceptionTypeValue, checkOrSetAlreadyCaught, getEventDescription, isAlreadyCaptured, parseSemver, uuid4 };\n//# sourceMappingURL=misc.js.map\n","import { isString, isRegExp, isPrimitive } from './is.js';\nimport { stringifyValue } from './normalize.js';\n\nfunction stringify(value, fallback = \"[unserializable]\") {\n  if (typeof value === \"string\") {\n    return value;\n  }\n  try {\n    return JSON.stringify(value);\n  } catch {\n    return typeof fallback === \"function\" ? fallback(value) : fallback;\n  }\n}\nfunction truncate(str, max = 0) {\n  if (typeof str !== \"string\" || max === 0) {\n    return str;\n  }\n  return str.length <= max ? str : `${str.slice(0, max)}...`;\n}\nfunction snipLine(line, colno) {\n  let newLine = line;\n  const lineLength = newLine.length;\n  if (lineLength <= 150) {\n    return newLine;\n  }\n  if (colno > lineLength) {\n    colno = lineLength;\n  }\n  let start = Math.max(colno - 60, 0);\n  if (start < 5) {\n    start = 0;\n  }\n  let end = Math.min(start + 140, lineLength);\n  if (end > lineLength - 5) {\n    end = lineLength;\n  }\n  if (end === lineLength) {\n    start = Math.max(end - 140, 0);\n  }\n  newLine = newLine.slice(start, end);\n  if (start > 0) {\n    newLine = `'{snip} ${newLine}`;\n  }\n  if (end < lineLength) {\n    newLine += \" {snip}\";\n  }\n  return newLine;\n}\nfunction safeJoin(input, delimiter) {\n  if (!Array.isArray(input)) {\n    return \"\";\n  }\n  const output = [];\n  for (let i = 0; i < input.length; i++) {\n    const value = input[i];\n    if (isPrimitive(value)) {\n      output.push(String(value));\n    } else if (value instanceof Error) {\n      output.push(value.message ? `${value.name}: ${value.message}` : value.name);\n    } else {\n      output.push(stringifyValue(void 0, value));\n    }\n  }\n  return output.join(delimiter);\n}\nfunction isMatchingPattern(value, pattern, requireExactStringMatch = false) {\n  if (!isString(value)) {\n    return false;\n  }\n  if (isRegExp(pattern)) {\n    return pattern.test(value);\n  }\n  if (isString(pattern)) {\n    return requireExactStringMatch ? value === pattern : value.includes(pattern);\n  }\n  if (typeof pattern === \"function\") {\n    return pattern(value);\n  }\n  return false;\n}\nfunction stringMatchesSomePattern(testString, patterns = [], requireExactStringMatch = false) {\n  for (const pattern of patterns) {\n    if (isMatchingPattern(testString, pattern, requireExactStringMatch)) {\n      return true;\n    }\n  }\n  return false;\n}\n\nexport { isMatchingPattern, safeJoin, snipLine, stringMatchesSomePattern, stringify, truncate };\n//# sourceMappingURL=string.js.map\n","import { DEBUG_BUILD } from '../debug-build.js';\nimport { defineIntegration } from '../integration.js';\nimport { debug } from '../utils/debug-logger.js';\nimport { getPossibleEventMessages } from '../utils/eventUtils.js';\nimport { getEventDescription } from '../utils/misc.js';\nimport { stringMatchesSomePattern } from '../utils/string.js';\n\nconst DEFAULT_IGNORE_ERRORS = [\n  /^Script error\\.?$/,\n  /^Javascript error: Script error\\.? on line 0$/,\n  /^ResizeObserver loop completed with undelivered notifications.$/,\n  // The browser logs this when a ResizeObserver handler takes a bit longer. Usually this is not an actual issue though. It indicates slowness.\n  /^Cannot redefine property: googletag$/,\n  // This is thrown when google tag manager is used in combination with an ad blocker\n  /^Can't find variable: gmo$/,\n  // Error from Google Search App https://issuetracker.google.com/issues/396043331\n  /^undefined is not an object \\(evaluating 'a\\.[A-Z]'\\)$/,\n  // Random error that happens but not actionable or noticeable to end-users.\n  /can't redefine non-configurable property \"solana\"/,\n  // Probably a browser extension or custom browser (Brave) throwing this error\n  /vv\\(\\)\\.getRestrictions is not a function/,\n  // Error thrown by GTM, seemingly not affecting end-users\n  /Can't find variable: _AutofillCallbackHandler/,\n  // Unactionable error in instagram webview https://developers.facebook.com/community/threads/320013549791141/\n  /Object Not Found Matching Id:\\d+, MethodName:simulateEvent/,\n  // unactionable error from CEFSharp, a .NET library that embeds chromium in .NET apps\n  /Java exception was raised during method invocation$/,\n  // error from Facebook Mobile browser (https://github.com/getsentry/sentry-javascript/issues/15065, https://github.com/getsentry/sentry-javascript/issues/23733)\n  /Java object is gone$/\n  // error from Facebook Mobile browser (https://github.com/getsentry/sentry-javascript/issues/15065, https://github.com/getsentry/sentry-javascript/issues/23733)\n];\nconst INTEGRATION_NAME = \"EventFilters\";\nconst eventFiltersIntegration = defineIntegration((options = {}) => {\n  let mergedOptions;\n  return {\n    name: INTEGRATION_NAME,\n    setup(client) {\n      const clientOptions = client.getOptions();\n      mergedOptions = _mergeOptions(options, clientOptions);\n    },\n    processEvent(event, _hint, client) {\n      if (!mergedOptions) {\n        const clientOptions = client.getOptions();\n        mergedOptions = _mergeOptions(options, clientOptions);\n      }\n      return _shouldDropEvent(event, mergedOptions) ? null : event;\n    }\n  };\n});\nfunction _mergeOptions(internalOptions = {}, clientOptions = {}) {\n  return {\n    allowUrls: [...internalOptions.allowUrls || [], ...clientOptions.allowUrls || []],\n    denyUrls: [...internalOptions.denyUrls || [], ...clientOptions.denyUrls || []],\n    ignoreErrors: [\n      ...internalOptions.ignoreErrors || [],\n      ...clientOptions.ignoreErrors || [],\n      ...internalOptions.disableErrorDefaults ? [] : DEFAULT_IGNORE_ERRORS\n    ],\n    ignoreTransactions: [...internalOptions.ignoreTransactions || [], ...clientOptions.ignoreTransactions || []]\n  };\n}\nfunction _shouldDropEvent(event, options) {\n  if (!event.type) {\n    if (_isIgnoredError(event, options.ignoreErrors)) {\n      DEBUG_BUILD && debug.warn(\n        `Event dropped due to being matched by \\`ignoreErrors\\` option.\nEvent: ${getEventDescription(event)}`\n      );\n      return true;\n    }\n    if (_isUselessError(event)) {\n      DEBUG_BUILD && debug.warn(\n        `Event dropped due to not having an error message, error type or stacktrace.\nEvent: ${getEventDescription(\n          event\n        )}`\n      );\n      return true;\n    }\n    if (_isDeniedUrl(event, options.denyUrls)) {\n      DEBUG_BUILD && debug.warn(\n        `Event dropped due to being matched by \\`denyUrls\\` option.\nEvent: ${getEventDescription(\n          event\n        )}.\nUrl: ${_getEventFilterUrl(event)}`\n      );\n      return true;\n    }\n    if (!_isAllowedUrl(event, options.allowUrls)) {\n      DEBUG_BUILD && debug.warn(\n        `Event dropped due to not being matched by \\`allowUrls\\` option.\nEvent: ${getEventDescription(\n          event\n        )}.\nUrl: ${_getEventFilterUrl(event)}`\n      );\n      return true;\n    }\n  } else if (event.type === \"transaction\") {\n    if (_isIgnoredTransaction(event, options.ignoreTransactions)) {\n      DEBUG_BUILD && debug.warn(\n        `Event dropped due to being matched by \\`ignoreTransactions\\` option.\nEvent: ${getEventDescription(event)}`\n      );\n      return true;\n    }\n  }\n  return false;\n}\nfunction _isIgnoredError(event, ignoreErrors) {\n  if (!ignoreErrors?.length) {\n    return false;\n  }\n  return getPossibleEventMessages(event).some((message) => stringMatchesSomePattern(message, ignoreErrors));\n}\nfunction _isIgnoredTransaction(event, ignoreTransactions) {\n  if (!ignoreTransactions?.length) {\n    return false;\n  }\n  const name = event.transaction;\n  return name ? stringMatchesSomePattern(name, ignoreTransactions) : false;\n}\nfunction _isDeniedUrl(event, denyUrls) {\n  if (!denyUrls?.length) {\n    return false;\n  }\n  const url = _getEventFilterUrl(event);\n  return !url ? false : stringMatchesSomePattern(url, denyUrls);\n}\nfunction _isAllowedUrl(event, allowUrls) {\n  if (!allowUrls?.length) {\n    return true;\n  }\n  const url = _getEventFilterUrl(event);\n  return !url ? true : stringMatchesSomePattern(url, allowUrls);\n}\nfunction _getLastValidUrl(frames = []) {\n  for (let i = frames.length - 1; i >= 0; i--) {\n    const frame = frames[i];\n    if (frame && frame.filename !== \"<anonymous>\" && frame.filename !== \"[native code]\") {\n      return frame.filename || null;\n    }\n  }\n  return null;\n}\nfunction _getEventFilterUrl(event) {\n  try {\n    const rootException = [...event.exception?.values ?? []].reverse().find((value) => value.mechanism?.parent_id === void 0 && value.stacktrace?.frames?.length);\n    const frames = rootException?.stacktrace?.frames;\n    return frames ? _getLastValidUrl(frames) : null;\n  } catch {\n    DEBUG_BUILD && debug.error(`Cannot extract url for event ${getEventDescription(event)}`);\n    return null;\n  }\n}\nfunction _isUselessError(event) {\n  if (!event.exception?.values?.length) {\n    return false;\n  }\n  return (\n    // No top-level message\n    !event.message && // There are no exception values that have a stacktrace, a non-generic-Error type or value\n    !event.exception.values.some((value) => value.stacktrace || value.type && value.type !== \"Error\" || value.value)\n  );\n}\n\nexport { eventFiltersIntegration };\n//# sourceMappingURL=eventFilters.js.map\n","import { safeDateNow, withRandomSafeContext } from './randomSafeContext.js';\nimport { GLOBAL_OBJ } from './worldwide.js';\n\nconst ONE_SECOND_IN_MS = 1e3;\nconst CLOCK_DRIFT_THRESHOLD_MS = 1e3;\nconst MAX_TIME_ORIGIN_SEGMENTS = 100;\nfunction dateTimestampInSeconds() {\n  return safeDateNow() / ONE_SECOND_IN_MS;\n}\nlet _timeOriginSegments = [];\nfunction createUnixTimestampInSecondsFunc() {\n  const { performance } = GLOBAL_OBJ;\n  if (!performance?.now || !performance.timeOrigin) {\n    if (performance?.now) {\n      _timeOriginSegments = [{ from: 0, origin: safeDateNow() - withRandomSafeContext(() => performance.now()) }];\n    }\n    return dateTimestampInSeconds;\n  }\n  let correctedTimeOrigin = performance.timeOrigin;\n  _timeOriginSegments = [{ from: 0, origin: correctedTimeOrigin }];\n  let isFirstCall = true;\n  let lastCheckedPerformanceNow = 0;\n  return () => {\n    return withRandomSafeContext(() => {\n      const performanceNow = performance.now();\n      const dateNow = Date.now();\n      if (Math.abs(correctedTimeOrigin + performanceNow - dateNow) > CLOCK_DRIFT_THRESHOLD_MS) {\n        correctedTimeOrigin = dateNow - performanceNow;\n        if (isFirstCall) {\n          _timeOriginSegments = [{ from: 0, origin: correctedTimeOrigin }];\n        } else {\n          _timeOriginSegments.push({ from: lastCheckedPerformanceNow, origin: correctedTimeOrigin });\n          if (_timeOriginSegments.length > MAX_TIME_ORIGIN_SEGMENTS) {\n            _timeOriginSegments.splice(1, 1);\n          }\n        }\n      }\n      isFirstCall = false;\n      lastCheckedPerformanceNow = performanceNow;\n      return (correctedTimeOrigin + performanceNow) / ONE_SECOND_IN_MS;\n    });\n  };\n}\nfunction safePerformanceNow() {\n  const { performance } = GLOBAL_OBJ;\n  return performance?.now ? withRandomSafeContext(() => performance.now()) : void 0;\n}\nlet _cachedTimestampInSecondsFn;\nlet _checkedForDriftInThisTask = false;\nfunction performanceTimeToSeconds(monotonicTimeInMs, entryStartTimeInMs = monotonicTimeInMs) {\n  const origin = browserPerformanceTimeOrigin(entryStartTimeInMs);\n  return origin == null ? void 0 : (origin + monotonicTimeInMs) / ONE_SECOND_IN_MS;\n}\nfunction timestampInSeconds() {\n  const func = _cachedTimestampInSecondsFn ?? (_cachedTimestampInSecondsFn = createUnixTimestampInSecondsFunc());\n  return func();\n}\nfunction browserPerformanceTimeOrigin(monotonicTimeInMs = 0) {\n  if (!_checkedForDriftInThisTask) {\n    _checkedForDriftInThisTask = true;\n    void Promise.resolve().then(() => {\n      _checkedForDriftInThisTask = false;\n    });\n    timestampInSeconds();\n  }\n  let segment;\n  for (const candidate of _timeOriginSegments) {\n    if (segment && candidate.from > monotonicTimeInMs) {\n      break;\n    }\n    segment = candidate;\n  }\n  return segment?.origin;\n}\n\nexport { browserPerformanceTimeOrigin, dateTimestampInSeconds, performanceTimeToSeconds, safePerformanceNow, timestampInSeconds };\n//# sourceMappingURL=time.js.map\n","import { uuid4 } from './utils/misc.js';\nimport { timestampInSeconds } from './utils/time.js';\n\nfunction makeSession(context) {\n  const startingTime = timestampInSeconds();\n  const session = {\n    sid: uuid4(),\n    init: true,\n    timestamp: startingTime,\n    started: startingTime,\n    duration: 0,\n    status: \"ok\",\n    errors: 0,\n    ignoreDuration: false,\n    toJSON: () => sessionToJSON(session)\n  };\n  if (context) {\n    updateSession(session, context);\n  }\n  return session;\n}\nfunction updateSession(session, context = {}) {\n  if (context.user) {\n    if (!session.ipAddress && context.user.ip_address) {\n      session.ipAddress = context.user.ip_address;\n    }\n    if (!session.did && !context.did) {\n      session.did = context.user.id || context.user.email || context.user.username;\n    }\n  }\n  session.timestamp = context.timestamp || timestampInSeconds();\n  if (context.abnormal_mechanism) {\n    session.abnormal_mechanism = context.abnormal_mechanism;\n  }\n  if (context.ignoreDuration) {\n    session.ignoreDuration = context.ignoreDuration;\n  }\n  if (context.sid) {\n    session.sid = context.sid.length === 32 ? context.sid : uuid4();\n  }\n  if (context.init !== void 0) {\n    session.init = context.init;\n  }\n  if (!session.did && context.did) {\n    session.did = `${context.did}`;\n  }\n  if (typeof context.started === \"number\") {\n    session.started = context.started;\n  }\n  if (session.ignoreDuration) {\n    session.duration = void 0;\n  } else if (typeof context.duration === \"number\") {\n    session.duration = context.duration;\n  } else {\n    const duration = session.timestamp - session.started;\n    session.duration = duration >= 0 ? duration : 0;\n  }\n  if (context.release) {\n    session.release = context.release;\n  }\n  if (context.environment) {\n    session.environment = context.environment;\n  }\n  if (!session.ipAddress && context.ipAddress) {\n    session.ipAddress = context.ipAddress;\n  }\n  if (!session.userAgent && context.userAgent) {\n    session.userAgent = context.userAgent;\n  }\n  if (typeof context.errors === \"number\") {\n    session.errors = context.errors;\n  }\n  if (context.status) {\n    session.status = context.status;\n  }\n}\nfunction closeSession(session, status) {\n  let context = {};\n  if (status) {\n    context = { status };\n  } else if (session.status === \"ok\") {\n    context = { status: \"exited\" };\n  }\n  updateSession(session, context);\n}\nfunction sessionToJSON(session) {\n  return {\n    sid: `${session.sid}`,\n    init: session.init,\n    // Make sure that sec is converted to ms for date constructor\n    started: new Date(session.started * 1e3).toISOString(),\n    timestamp: new Date(session.timestamp * 1e3).toISOString(),\n    status: session.status,\n    errors: session.errors,\n    did: typeof session.did === \"number\" || typeof session.did === \"string\" ? `${session.did}` : void 0,\n    duration: session.duration,\n    abnormal_mechanism: session.abnormal_mechanism,\n    attrs: {\n      release: session.release,\n      environment: session.environment,\n      ip_address: session.ipAddress,\n      user_agent: session.userAgent\n    }\n  };\n}\n\nexport { closeSession, makeSession, updateSession };\n//# sourceMappingURL=session.js.map\n","function merge(initialObj, mergeObj, levels = 2) {\n  if (!mergeObj || typeof mergeObj !== \"object\" || levels <= 0) {\n    return mergeObj;\n  }\n  if (initialObj && Object.keys(mergeObj).length === 0) {\n    return initialObj;\n  }\n  const output = { ...initialObj };\n  for (const key in mergeObj) {\n    if (Object.prototype.hasOwnProperty.call(mergeObj, key)) {\n      output[key] = merge(output[key], mergeObj[key], levels - 1);\n    }\n  }\n  return output;\n}\n\nexport { merge };\n//# sourceMappingURL=merge.js.map\n","import { uuid4 } from './misc.js';\n\nfunction generateTraceId() {\n  return uuid4();\n}\nfunction generateSpanId() {\n  return uuid4().substring(16);\n}\n\nexport { generateSpanId, generateTraceId };\n//# sourceMappingURL=propagationContext.js.map\n","import { DEBUG_BUILD } from './debug-build.js';\nimport { updateSession } from './session.js';\nimport { debug } from './utils/debug-logger.js';\nimport { isPlainObject } from './utils/is.js';\nimport { addNonEnumerableProperty } from './utils/object.js';\nimport { merge } from './utils/merge.js';\nimport { uuid4 } from './utils/misc.js';\nimport { generateTraceId } from './utils/propagationContext.js';\nimport { safeMathRandom } from './utils/randomSafeContext.js';\nimport { truncate } from './utils/string.js';\nimport { dateTimestampInSeconds } from './utils/time.js';\n\nconst DEFAULT_MAX_BREADCRUMBS = 100;\nclass Scope {\n  // NOTE: Any field which gets added here should get added not only to the constructor but also to the `clone` method.\n  constructor() {\n    this._notifyingListeners = false;\n    this._scopeListeners = [];\n    this._eventProcessors = [];\n    this._breadcrumbs = [];\n    this._attachments = [];\n    this._user = {};\n    this._tags = {};\n    this._attributes = {};\n    this._extra = {};\n    this._contexts = {};\n    this._sdkProcessingMetadata = {};\n    addNonEnumerableProperty(this, \"refs\", {});\n    this._propagationContext = {\n      traceId: generateTraceId(),\n      sampleRand: safeMathRandom()\n    };\n  }\n  /**\n   * Clone all data from this scope into a new scope.\n   */\n  clone() {\n    const newScope = new Scope();\n    newScope._breadcrumbs = [...this._breadcrumbs];\n    newScope._tags = { ...this._tags };\n    newScope._attributes = { ...this._attributes };\n    newScope._extra = { ...this._extra };\n    newScope._contexts = { ...this._contexts };\n    if (this._contexts.flags) {\n      newScope._contexts.flags = {\n        values: [...this._contexts.flags.values]\n      };\n    }\n    newScope._user = this._user;\n    newScope._level = this._level;\n    newScope._session = this._session;\n    newScope._transactionName = this._transactionName;\n    newScope._fingerprint = this._fingerprint;\n    newScope._eventProcessors = [...this._eventProcessors];\n    newScope._attachments = [...this._attachments];\n    newScope._sdkProcessingMetadata = { ...this._sdkProcessingMetadata };\n    newScope._propagationContext = { ...this._propagationContext };\n    newScope._client = this._client;\n    newScope._lastEventId = this._lastEventId;\n    newScope._conversationId = this._conversationId;\n    newScope.refs = { ...this.refs };\n    return newScope;\n  }\n  /**\n   * Update the client assigned to this scope.\n   * Note that not every scope will have a client assigned - isolation scopes & the global scope will generally not have a client,\n   * as well as manually created scopes.\n   */\n  setClient(client) {\n    this._client = client;\n  }\n  /**\n   * Set the ID of the last captured error event.\n   * This is generally only captured on the isolation scope.\n   */\n  setLastEventId(lastEventId) {\n    this._lastEventId = lastEventId;\n  }\n  /**\n   * Get the client assigned to this scope.\n   */\n  getClient() {\n    return this._client;\n  }\n  /**\n   * Get the ID of the last captured error event.\n   * This is generally only available on the isolation scope.\n   */\n  lastEventId() {\n    return this._lastEventId;\n  }\n  /**\n   * @inheritDoc\n   */\n  addScopeListener(callback) {\n    this._scopeListeners.push(callback);\n  }\n  /**\n   * Add an event processor that will be called before an event is sent.\n   */\n  addEventProcessor(callback) {\n    this._eventProcessors.push(callback);\n    return this;\n  }\n  /**\n   * Set the user for this scope.\n   * Set to `null` to unset the user.\n   */\n  setUser(user) {\n    this._user = user || {\n      email: void 0,\n      id: void 0,\n      ip_address: void 0,\n      username: void 0\n    };\n    if (this._session) {\n      updateSession(this._session, { user });\n    }\n    this._notifyScopeListeners();\n    return this;\n  }\n  /**\n   * Get the user from this scope.\n   */\n  getUser() {\n    return this._user;\n  }\n  /**\n   * Set the conversation ID for this scope.\n   * Set to `null` to unset the conversation ID.\n   */\n  setConversationId(conversationId) {\n    this._conversationId = conversationId || void 0;\n    this._notifyScopeListeners();\n    return this;\n  }\n  /**\n   * Set an object that will be merged into existing tags on the scope,\n   * and will be sent as tags data with the event.\n   */\n  setTags(tags) {\n    this._tags = {\n      ...this._tags,\n      ...tags\n    };\n    this._notifyScopeListeners();\n    return this;\n  }\n  /**\n   * Set a single tag that will be sent as tags data with the event.\n   */\n  setTag(key, value) {\n    return this.setTags({ [key]: value });\n  }\n  /**\n   * Sets attributes onto the scope.\n   *\n   * These attributes are applied to logs, metrics and streamed spans.\n   *\n   * Supported attribute value types are `string`, `number`, `boolean`, `string[]`, `number[]` and `boolean[]`.\n   *\n   * @param newAttributes - The attributes to set on the scope, as key-value pairs.\n   *\n   * @example\n   * ```typescript\n   * scope.setAttributes({\n   *   is_admin: true,\n   *   payment_selection: 'credit_card',\n   *   render_duration: 150,\n   * });\n   * ```\n   */\n  setAttributes(newAttributes) {\n    this._attributes = {\n      ...this._attributes,\n      ...newAttributes\n    };\n    this._notifyScopeListeners();\n    return this;\n  }\n  /**\n   * Sets an attribute onto the scope.\n   *\n   * These attributes are applied to logs, metrics and streamed spans.\n   *\n   * Supported attribute value types are `string`, `number`, `boolean`, `string[]`, `number[]` and `boolean[]`.\n   *\n   * @param key - The attribute key.\n   * @param value - The attribute value.\n   *\n   * @example\n   * ```typescript\n   * scope.setAttribute('is_admin', true);\n   * scope.setAttribute('render_duration', 150);\n   * ```\n   */\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  setAttribute(key, value) {\n    return this.setAttributes({ [key]: value });\n  }\n  /**\n   * Removes the attribute with the given key from the scope.\n   *\n   * @param key - The attribute key.\n   *\n   * @example\n   * ```typescript\n   * scope.removeAttribute('is_admin');\n   * ```\n   */\n  removeAttribute(key) {\n    if (key in this._attributes) {\n      delete this._attributes[key];\n      this._notifyScopeListeners();\n    }\n    return this;\n  }\n  /**\n   * Set an object that will be merged into existing extra on the scope,\n   * and will be sent as extra data with the event.\n   */\n  setExtras(extras) {\n    this._extra = {\n      ...this._extra,\n      ...extras\n    };\n    this._notifyScopeListeners();\n    return this;\n  }\n  /**\n   * Set a single key:value extra entry that will be sent as extra data with the event.\n   */\n  setExtra(key, extra) {\n    this._extra = { ...this._extra, [key]: extra };\n    this._notifyScopeListeners();\n    return this;\n  }\n  /**\n   * Sets the fingerprint on the scope to send with the events.\n   * @param {string[]} fingerprint Fingerprint to group events in Sentry.\n   */\n  setFingerprint(fingerprint) {\n    this._fingerprint = fingerprint;\n    this._notifyScopeListeners();\n    return this;\n  }\n  /**\n   * Sets the level on the scope for future events.\n   */\n  setLevel(level) {\n    this._level = level;\n    this._notifyScopeListeners();\n    return this;\n  }\n  /**\n   * Sets the transaction name on the scope so that the name of e.g. taken server route or\n   * the page location is attached to future events.\n   *\n   * IMPORTANT: Calling this function does NOT change the name of the currently active\n   * root span. If you want to change the name of the active root span, use\n   * `Sentry.updateSpanName(rootSpan, 'new name')` instead.\n   *\n   * By default, the SDK updates the scope's transaction name automatically on sensible\n   * occasions, such as a page navigation or when handling a new request on the server.\n   */\n  setTransactionName(name) {\n    this._transactionName = name;\n    this._notifyScopeListeners();\n    return this;\n  }\n  /**\n   * Sets context data with the given name.\n   * Data passed as context will be normalized. You can also pass `null` to unset the context.\n   * Note that context data will not be merged - calling `setContext` will overwrite an existing context with the same key.\n   */\n  setContext(key, context) {\n    if (context === null) {\n      delete this._contexts[key];\n    } else {\n      this._contexts[key] = context;\n    }\n    this._notifyScopeListeners();\n    return this;\n  }\n  /**\n   * Set the session for the scope.\n   */\n  setSession(session) {\n    if (!session) {\n      delete this._session;\n    } else {\n      this._session = session;\n    }\n    this._notifyScopeListeners();\n    return this;\n  }\n  /**\n   * Get the session from the scope.\n   */\n  getSession() {\n    return this._session;\n  }\n  /**\n   * Updates the scope with provided data. Can work in three variations:\n   * - plain object containing updatable attributes\n   * - Scope instance that'll extract the attributes from\n   * - callback function that'll receive the current scope as an argument and allow for modifications\n   */\n  update(captureContext) {\n    if (!captureContext) {\n      return this;\n    }\n    const scopeToMerge = typeof captureContext === \"function\" ? captureContext(this) : captureContext;\n    const scopeInstance = scopeToMerge instanceof Scope ? scopeToMerge.getScopeData() : isPlainObject(scopeToMerge) ? captureContext : void 0;\n    const {\n      tags,\n      attributes,\n      extra,\n      user,\n      contexts,\n      level,\n      fingerprint = [],\n      propagationContext,\n      conversationId\n    } = scopeInstance || {};\n    this._tags = { ...this._tags, ...tags };\n    this._attributes = { ...this._attributes, ...attributes };\n    this._extra = { ...this._extra, ...extra };\n    this._contexts = { ...this._contexts, ...contexts };\n    if (user && Object.keys(user).length) {\n      this._user = user;\n    }\n    if (level) {\n      this._level = level;\n    }\n    if (fingerprint.length) {\n      this._fingerprint = fingerprint;\n    }\n    if (propagationContext) {\n      this._propagationContext = propagationContext;\n    }\n    if (conversationId) {\n      this._conversationId = conversationId;\n    }\n    return this;\n  }\n  /**\n   * Adds a breadcrumb to the scope.\n   * By default, the last 100 breadcrumbs are kept.\n   */\n  addBreadcrumb(breadcrumb, maxBreadcrumbs) {\n    const maxCrumbs = typeof maxBreadcrumbs === \"number\" ? maxBreadcrumbs : DEFAULT_MAX_BREADCRUMBS;\n    if (maxCrumbs <= 0) {\n      return this;\n    }\n    const mergedBreadcrumb = {\n      timestamp: dateTimestampInSeconds(),\n      ...breadcrumb,\n      // Breadcrumb messages can theoretically be infinitely large and they're held in memory so we truncate them not to leak (too much) memory\n      message: breadcrumb.message ? truncate(breadcrumb.message, 2048) : breadcrumb.message\n    };\n    this._breadcrumbs.push(mergedBreadcrumb);\n    if (this._breadcrumbs.length > maxCrumbs) {\n      this._breadcrumbs = this._breadcrumbs.slice(-maxCrumbs);\n    }\n    this._notifyScopeListeners();\n    return this;\n  }\n  /**\n   * Get the last breadcrumb of the scope.\n   */\n  getLastBreadcrumb() {\n    return this._breadcrumbs[this._breadcrumbs.length - 1];\n  }\n  /**\n   * Clear all breadcrumbs from the scope.\n   */\n  clearBreadcrumbs() {\n    this._breadcrumbs = [];\n    this._notifyScopeListeners();\n    return this;\n  }\n  /**\n   * Add an attachment to the scope.\n   */\n  addAttachment(attachment) {\n    this._attachments.push(attachment);\n    return this;\n  }\n  /**\n   * Clear all attachments from the scope.\n   */\n  clearAttachments() {\n    this._attachments = [];\n    return this;\n  }\n  /**\n   * Get the data of this scope, which should be applied to an event during processing.\n   */\n  getScopeData() {\n    return {\n      breadcrumbs: this._breadcrumbs,\n      attachments: this._attachments,\n      contexts: this._contexts,\n      tags: this._tags,\n      attributes: this._attributes,\n      extra: this._extra,\n      user: this._user,\n      level: this._level,\n      fingerprint: this._fingerprint || [],\n      eventProcessors: this._eventProcessors,\n      propagationContext: this._propagationContext,\n      sdkProcessingMetadata: this._sdkProcessingMetadata,\n      transactionName: this._transactionName,\n      conversationId: this._conversationId\n    };\n  }\n  /**\n   * Add data which will be accessible during event processing but won't get sent to Sentry.\n   */\n  setSDKProcessingMetadata(newData) {\n    this._sdkProcessingMetadata = merge(this._sdkProcessingMetadata, newData, 2);\n    return this;\n  }\n  /**\n   * Add propagation context to the scope, used for distributed tracing\n   */\n  setPropagationContext(context) {\n    this._propagationContext = context;\n    return this;\n  }\n  /**\n   * Get propagation context from the scope, used for distributed tracing\n   */\n  getPropagationContext() {\n    return this._propagationContext;\n  }\n  /**\n   * Capture an exception for this scope.\n   *\n   * @returns {string} The id of the captured Sentry event.\n   */\n  captureException(exception, hint) {\n    const eventId = hint?.event_id || uuid4();\n    if (!this._client) {\n      DEBUG_BUILD && debug.warn(\"No client configured on scope - will not capture exception!\");\n      return eventId;\n    }\n    const syntheticException = new Error(\"Sentry syntheticException\");\n    this._client.captureException(\n      exception,\n      {\n        originalException: exception,\n        syntheticException,\n        ...hint,\n        event_id: eventId\n      },\n      this\n    );\n    return eventId;\n  }\n  /**\n   * Capture a message for this scope.\n   *\n   * @returns {string} The id of the captured message.\n   */\n  captureMessage(message, level, hint) {\n    const eventId = hint?.event_id || uuid4();\n    if (!this._client) {\n      DEBUG_BUILD && debug.warn(\"No client configured on scope - will not capture message!\");\n      return eventId;\n    }\n    const syntheticException = hint?.syntheticException ?? new Error(message);\n    this._client.captureMessage(\n      message,\n      level,\n      {\n        originalException: message,\n        syntheticException,\n        ...hint,\n        event_id: eventId\n      },\n      this\n    );\n    return eventId;\n  }\n  /**\n   * Capture a Sentry event for this scope.\n   *\n   * @returns {string} The id of the captured event.\n   */\n  captureEvent(event, hint) {\n    const eventId = event.event_id || hint?.event_id || uuid4();\n    if (!this._client) {\n      DEBUG_BUILD && debug.warn(\"No client configured on scope - will not capture event!\");\n      return eventId;\n    }\n    this._client.captureEvent(event, { ...hint, event_id: eventId }, this);\n    return eventId;\n  }\n  /**\n   * This will be called on every set call.\n   */\n  _notifyScopeListeners() {\n    if (!this._notifyingListeners) {\n      this._notifyingListeners = true;\n      this._scopeListeners.forEach((callback) => {\n        callback(this);\n      });\n      this._notifyingListeners = false;\n    }\n  }\n}\n\nexport { Scope };\n//# sourceMappingURL=scope.js.map\n","const SUPPRESS_TRACING_KEY = \"__SENTRY_SUPPRESS_TRACING__\";\n\nexport { SUPPRESS_TRACING_KEY };\n//# sourceMappingURL=constants.js.map\n","const isActualPromise = (p) => p instanceof Promise && !p[kChainedCopy];\nconst kChainedCopy = /* @__PURE__ */ Symbol(\"chained PromiseLike\");\nconst chainAndCopyPromiseLike = (original, onSuccess, onError) => {\n  const chained = original.then(\n    (value) => {\n      onSuccess(value);\n      return value;\n    },\n    (err) => {\n      onError(err);\n      throw err;\n    }\n  );\n  return isActualPromise(chained) && isActualPromise(original) ? chained : copyProps(original, chained);\n};\nconst copyProps = (original, chained) => {\n  if (!chained) return original;\n  let mutated = false;\n  for (const key in original) {\n    if (key in chained) continue;\n    mutated = true;\n    const value = original[key];\n    if (typeof value === \"function\") {\n      Object.defineProperty(chained, key, {\n        value: (...args) => value.apply(original, args),\n        enumerable: true,\n        configurable: true,\n        writable: true\n      });\n    } else {\n      chained[key] = value;\n    }\n  }\n  if (mutated) Object.assign(chained, { [kChainedCopy]: true });\n  return chained;\n};\n\nexport { chainAndCopyPromiseLike };\n//# sourceMappingURL=chain-and-copy-promiselike.js.map\n","import { getDefaultCurrentScope, getDefaultIsolationScope } from '../defaultScopes.js';\nimport { Scope } from '../scope.js';\nimport { SUPPRESS_TRACING_KEY } from '../tracing/constants.js';\nimport { chainAndCopyPromiseLike } from '../utils/chain-and-copy-promiselike.js';\nimport { isThenable } from '../utils/is.js';\nimport { getMainCarrier, getSentryCarrier } from '../carrier.js';\n\nclass AsyncContextStack {\n  constructor(scope, isolationScope) {\n    let assignedScope;\n    if (!scope) {\n      assignedScope = new Scope();\n    } else {\n      assignedScope = scope;\n    }\n    let assignedIsolationScope;\n    if (!isolationScope) {\n      assignedIsolationScope = new Scope();\n    } else {\n      assignedIsolationScope = isolationScope;\n    }\n    this._stack = [{ scope: assignedScope }];\n    this._isolationScope = assignedIsolationScope;\n  }\n  /**\n   * Fork a scope for the stack.\n   */\n  withScope(callback) {\n    const scope = this._pushScope();\n    let maybePromiseResult;\n    try {\n      maybePromiseResult = callback(scope);\n    } catch (e) {\n      this._popScope();\n      throw e;\n    }\n    if (isThenable(maybePromiseResult)) {\n      return chainAndCopyPromiseLike(\n        maybePromiseResult,\n        () => this._popScope(),\n        () => this._popScope()\n      );\n    }\n    this._popScope();\n    return maybePromiseResult;\n  }\n  /**\n   * Get the client of the stack.\n   */\n  getClient() {\n    return this.getStackTop().client;\n  }\n  /**\n   * Returns the scope of the top stack.\n   */\n  getScope() {\n    return this.getStackTop().scope;\n  }\n  /**\n   * Get the isolation scope for the stack.\n   */\n  getIsolationScope() {\n    return this._isolationScope;\n  }\n  /**\n   * Returns the topmost scope layer in the order domain > local > process.\n   */\n  getStackTop() {\n    return this._stack[this._stack.length - 1];\n  }\n  /**\n   * Push a scope to the stack.\n   */\n  _pushScope() {\n    const scope = this.getScope().clone();\n    this._stack.push({\n      client: this.getClient(),\n      scope\n    });\n    return scope;\n  }\n  /**\n   * Pop a scope from the stack.\n   */\n  _popScope() {\n    if (this._stack.length <= 1) return false;\n    return !!this._stack.pop();\n  }\n}\nfunction getAsyncContextStack() {\n  const registry = getMainCarrier();\n  const sentry = getSentryCarrier(registry);\n  return sentry.stack = sentry.stack || new AsyncContextStack(getDefaultCurrentScope(), getDefaultIsolationScope());\n}\nfunction withScope(callback) {\n  return getAsyncContextStack().withScope(callback);\n}\nfunction withSetScope(scope, callback) {\n  const stack = getAsyncContextStack();\n  return stack.withScope(() => {\n    stack.getStackTop().scope = scope;\n    return callback(scope);\n  });\n}\nfunction withIsolationScope(callback) {\n  return getAsyncContextStack().withScope(() => {\n    return callback(getAsyncContextStack().getIsolationScope());\n  });\n}\nfunction getStackAsyncContextStrategy() {\n  return {\n    suppressTracing: suppressTracingInStack,\n    withIsolationScope,\n    withScope,\n    withSetScope,\n    withSetIsolationScope: (_isolationScope, callback) => {\n      return withIsolationScope(callback);\n    },\n    getCurrentScope: () => getAsyncContextStack().getScope(),\n    getIsolationScope: () => getAsyncContextStack().getIsolationScope()\n  };\n}\nfunction suppressTracingInStack(callback) {\n  return withScope((scope) => {\n    scope.setSDKProcessingMetadata({ [SUPPRESS_TRACING_KEY]: true });\n    const res = callback();\n    scope.setSDKProcessingMetadata({ [SUPPRESS_TRACING_KEY]: void 0 });\n    return res;\n  });\n}\n\nexport { AsyncContextStack, getStackAsyncContextStrategy };\n//# sourceMappingURL=stackStrategy.js.map\n","import { getGlobalSingleton } from './carrier.js';\nimport { Scope } from './scope.js';\n\nfunction getDefaultCurrentScope() {\n  return getGlobalSingleton(\"defaultCurrentScope\", () => new Scope());\n}\nfunction getDefaultIsolationScope() {\n  return getGlobalSingleton(\"defaultIsolationScope\", () => new Scope());\n}\n\nexport { getDefaultCurrentScope, getDefaultIsolationScope };\n//# sourceMappingURL=defaultScopes.js.map\n","import { getSentryCarrier, getMainCarrier } from '../carrier.js';\nimport { getStackAsyncContextStrategy } from './stackStrategy.js';\n\nfunction setAsyncContextStrategy(strategy) {\n  const registry = getMainCarrier();\n  const sentry = getSentryCarrier(registry);\n  sentry.acs = strategy;\n}\nfunction getAsyncContextStrategy(carrier) {\n  const sentry = getSentryCarrier(carrier);\n  if (sentry.acs) {\n    return sentry.acs;\n  }\n  return getStackAsyncContextStrategy();\n}\n\nexport { getAsyncContextStrategy, setAsyncContextStrategy };\n//# sourceMappingURL=index.js.map\n","import { getAsyncContextStrategy } from './asyncContext/index.js';\nimport { getMainCarrier, getSentryCarrier, getGlobalSingleton } from './carrier.js';\nimport { Scope } from './scope.js';\nimport { generateSpanId } from './utils/propagationContext.js';\n\nfunction registerExternalPropagationContext(fn) {\n  getSentryCarrier(getMainCarrier()).externalPropagationContextProvider = fn;\n}\nfunction getExternalPropagationContext() {\n  return getSentryCarrier(getMainCarrier()).externalPropagationContextProvider?.();\n}\nfunction hasExternalPropagationContext() {\n  return getSentryCarrier(getMainCarrier()).externalPropagationContextProvider !== void 0;\n}\nfunction getCurrentScope() {\n  const carrier = getMainCarrier();\n  const acs = getAsyncContextStrategy(carrier);\n  return acs.getCurrentScope();\n}\nfunction getIsolationScope() {\n  const carrier = getMainCarrier();\n  const acs = getAsyncContextStrategy(carrier);\n  return acs.getIsolationScope();\n}\nfunction getGlobalScope() {\n  return getGlobalSingleton(\"globalScope\", () => new Scope());\n}\nfunction withScope(...rest) {\n  const carrier = getMainCarrier();\n  const acs = getAsyncContextStrategy(carrier);\n  if (rest.length === 2) {\n    const [scope, callback] = rest;\n    if (!scope) {\n      return acs.withScope(callback);\n    }\n    return acs.withSetScope(scope, callback);\n  }\n  return acs.withScope(rest[0]);\n}\nfunction withIsolationScope(...rest) {\n  const carrier = getMainCarrier();\n  const acs = getAsyncContextStrategy(carrier);\n  if (rest.length === 2) {\n    const [isolationScope, callback] = rest;\n    if (!isolationScope) {\n      return acs.withIsolationScope(callback);\n    }\n    return acs.withSetIsolationScope(isolationScope, callback);\n  }\n  return acs.withIsolationScope(rest[0]);\n}\nfunction getClient() {\n  return getCurrentScope().getClient();\n}\nfunction getTraceContextFromScope(scope) {\n  const externalContext = getExternalPropagationContext();\n  if (externalContext) {\n    return { trace_id: externalContext.traceId, span_id: externalContext.spanId };\n  }\n  const propagationContext = scope.getPropagationContext();\n  const { traceId, parentSpanId, propagationSpanId } = propagationContext;\n  const traceContext = {\n    trace_id: traceId,\n    span_id: propagationSpanId || generateSpanId()\n  };\n  if (parentSpanId) {\n    traceContext.parent_span_id = parentSpanId;\n  }\n  return traceContext;\n}\n\nexport { getClient, getCurrentScope, getExternalPropagationContext, getGlobalScope, getIsolationScope, getTraceContextFromScope, hasExternalPropagationContext, registerExternalPropagationContext, withIsolationScope, withScope };\n//# sourceMappingURL=currentScopes.js.map\n","import { getClient } from '../currentScopes.js';\nimport { defineIntegration } from '../integration.js';\nimport { getOriginalFunction } from '../utils/object.js';\n\nconst INTEGRATION_NAME = \"FunctionToString\";\nconst SETUP_CLIENTS = /* @__PURE__ */ new WeakMap();\nconst _functionToStringIntegration = (() => {\n  return {\n    name: INTEGRATION_NAME,\n    setupOnce() {\n      const originalFunctionToString = Function.prototype.toString;\n      const callOriginalFunctionToString = Function.prototype.call.bind(originalFunctionToString);\n      try {\n        Function.prototype.toString = function() {\n          const originalFunction = getOriginalFunction(this);\n          let unwrappedFunction;\n          try {\n            if (SETUP_CLIENTS.has(getClient()) && originalFunction !== void 0) {\n              unwrappedFunction = originalFunction;\n            }\n          } catch {\n          }\n          return callOriginalFunctionToString(unwrappedFunction ?? this);\n        };\n      } catch {\n      }\n    },\n    setup(client) {\n      SETUP_CLIENTS.set(client, true);\n    }\n  };\n});\nconst functionToStringIntegration = defineIntegration(_functionToStringIntegration);\n\nexport { functionToStringIntegration };\n//# sourceMappingURL=functiontostring.js.map\n","const e=\"address\",t=\"ai.citations\",i=\"ai.completion_tokens.used\",a=\"ai.documents\",s=\"ai.finish_reason\",r=\"ai.frequency_penalty\",n=\"ai.function_call\",o=\"ai.generation_id\",l=\"ai.input_messages\",p=\"ai.is_search_required\",c=\"ai.metadata\",u=\"ai.model.id\",d=\"ai.model_id\",m=\"ai.model.provider\",b=\"ai.pipeline.name\",g=\"ai.preamble\",y=\"ai.presence_penalty\",_=\"ai.prompt\",h=\"ai.prompt.messages\",f=\"ai.prompt_tokens.used\",v=\"ai.prompt.tools\",k=\"ai.raw_prompting\",S=\"ai.responses\",T=\"ai.response_format\",E=\"ai.response.id\",I=\"ai.response.model\",O=\"ai.response.object\",w=\"ai.response.text\",A=\"ai.response.timestamp\",x=\"ai.response.toolCalls\",R=\"ai.schema\",N=\"ai.search_queries\",C=\"ai.search_results\",P=\"ai.seed\",q=\"ai.streaming\",D=\"ai.tags\",L=\"ai.temperature\",M=\"ai.texts\",U=\"ai.toolCall.args\",G=\"ai.toolCall.result\",B=\"ai.tools\",z=\"ai.tool_calls\",Y=\"ai.top_k\",j=\"ai.top_p\",W=\"ai.total_cost\",K=\"ai.total_tokens.used\",V=\"ai.usage.tokens\",F=\"ai.values\",H=\"ai.warnings\",Q=\"angular.version\",J=\"anthropic.tool_result.content\",X=\"app.app_build\",Z=\"app.app_identifier\",$=\"app.app_name\",ee=\"app.app_start_time\",te=\"app.app_version\",ie=\"app.build\",ae=\"app.identifier\",se=\"app.in_foreground\",re=\"app.name\",ne=\"app_start_cold\",oe=\"app.start_time\",le=\"app_start_type\",pe=\"app_start_warm\",ce=\"app.version\",ue=\"app.vitals.frames.delay.value\",de=\"app.vitals.frames.frozen.count\",me=\"app.vitals.frames.frozen.rate\",be=\"app.vitals.frames.slow.count\",ge=\"app.vitals.frames.slow.rate\",ye=\"app.vitals.frames.total.count\",_e=\"app.vitals.stall.duration\",he=\"app.vitals.stall.percentage\",fe=\"app.vitals.start.cold.value\",ve=\"app.vitals.start.prewarmed\",ke=\"app.vitals.start.reason\",Se=\"app.vitals.start.screen\",Te=\"app.vitals.start.type\",Ee=\"app.vitals.start.warm.value\",Ie=\"app.vitals.ttfd.value\",Oe=\"app.vitals.ttid.value\",we=\"art.gc.blocking_count\",Ae=\"art.gc.blocking_time\",xe=\"art.gc.pre_oome_count\",Re=\"art.gc.total_count\",Ne=\"art.gc.total_time\",Ce=\"art.gc.waiting_time\",Pe=\"art.memory.free\",qe=\"art.memory.free_until_gc\",De=\"art.memory.free_until_oome\",Le=\"art.memory.max\",Me=\"art.memory.total\",Ue=\"aws.cloudwatch.logs.log_group\",Ge=\"aws.cloudwatch.logs.log_stream\",Be=\"aws.cloudwatch.logs.url\",ze=\"aws.dynamodb.attributes_to_get\",Ye=\"aws.dynamodb.attribute_definitions\",je=\"aws.dynamodb.consistent_read\",We=\"aws.dynamodb.consumed_capacity\",Ke=\"aws.dynamodb.count\",Ve=\"aws.dynamodb.exclusive_start_table\",Fe=\"aws.dynamodb.global_secondary_indexes\",He=\"aws.dynamodb.global_secondary_index_updates\",Qe=\"aws.dynamodb.index_name\",Je=\"aws.dynamodb.item_collection_metrics\",Xe=\"aws.dynamodb.limit\",Ze=\"aws.dynamodb.local_secondary_indexes\",$e=\"aws.dynamodb.projection\",et=\"aws.dynamodb.provisioned_read_capacity\",tt=\"aws.dynamodb.provisioned_write_capacity\",it=\"aws.dynamodb.scanned_count\",at=\"aws.dynamodb.scan_forward\",st=\"aws.dynamodb.segment\",rt=\"aws.dynamodb.select\",nt=\"aws.dynamodb.table_count\",ot=\"aws.dynamodb.table_names\",lt=\"aws.dynamodb.total_segments\",pt=\"aws.extended_request_id\",ct=\"aws.kinesis.stream_name\",ut=\"aws.kinesis.stream.name\",dt=\"aws.lambda.aws_request_id\",mt=\"aws.lambda.execution_duration_in_millis\",bt=\"aws.lambda.function_name\",gt=\"aws.lambda.function_version\",yt=\"aws.lambda.initialization_type\",_t=\"aws.lambda.invoked_arn\",ht=\"aws.lambda.invoked_function_arn\",ft=\"aws.lambda.remaining_time_in_millis\",vt=\"aws.lambda.resource_mapping.id\",kt=\"aws.lambda.target_function.name\",St=\"aws.lambda.web.endpoint_name\",Tt=\"aws.log.group.names\",Et=\"aws.log.stream.names\",It=\"aws.operation_name\",Ot=\"aws_region\",wt=\"aws.request.extended_id\",At=\"aws.request_id\",xt=\"aws.request.id\",Rt=\"aws.request.url\",Nt=\"aws.s3.bucket\",Ct=\"aws.s3.copy_source\",Pt=\"aws.s3.delete\",qt=\"aws.s3.key\",Dt=\"aws.s3.part_number\",Lt=\"aws.s3.upload_id\",Mt=\"aws.secretsmanager.secret.arn\",Ut=\"aws.secretsmanager.secret.name\",Gt=\"aws.sns.topic.arn\",Bt=\"aws.sqs.queue.url\",zt=\"aws.step_functions.activity.arn\",Yt=\"aws.step_functions.activity.name\",jt=\"aws.step_functions.execution.arn\",Wt=\"aws.step_functions.state_machine.arn\",Kt=\"aws.step_functions.state_machine.name\",Vt=\"blocked_main_thread\",Ft=\"browser.bfcache.frame\",Ht=\"browser.bfcache.not_restored_reason_count\",Qt=\"browser.bfcache.outcome\",Jt=\"browser.bfcache.reason\",Xt=\"browser.name\",Zt=\"browser.navigation.id\",$t=\"browser.navigation.type\",ei=\"browser.paint.type\",ti=\"browser.performance.navigation.activation_start\",ii=\"browser.performance.time_origin\",ai=\"browser.report.type\",si=\"browser.script.invoker\",ri=\"browser.script.invoker_type\",ni=\"browser.script.source_char_position\",oi=\"browser.version\",li=\"browser.web_vital.cls.report_event\",pi=\"browser.web_vital.cls.source.<key>\",ci=\"browser.web_vital.cls.source\",ui=\"browser.web_vital.cls.value\",di=\"browser.web_vital.fcp.value\",mi=\"browser.web_vital.fp.value\",bi=\"browser.web_vital.inp.input_delay\",gi=\"browser.web_vital.inp.interaction_type\",yi=\"browser.web_vital.inp.presentation_delay\",_i=\"browser.web_vital.inp.processing_duration\",hi=\"browser.web_vital.inp.target\",fi=\"browser.web_vital.inp.value\",vi=\"browser.web_vital.lcp.element\",ki=\"browser.web_vital.lcp.element_render_delay\",Si=\"browser.web_vital.lcp.id\",Ti=\"browser.web_vital.lcp.load_time\",Ei=\"browser.web_vital.lcp.render_time\",Ii=\"browser.web_vital.lcp.report_event\",Oi=\"browser.web_vital.lcp.resource_load_delay\",wi=\"browser.web_vital.lcp.resource_load_duration\",Ai=\"browser.web_vital.lcp.size\",xi=\"browser.web_vital.lcp.url\",Ri=\"browser.web_vital.lcp.value\",Ni=\"browser.web_vital.ttfb.request_time\",Ci=\"browser.web_vital.ttfb.value\",Pi=\"cache.hit\",qi=\"cache.item_age\",Di=\"cache.item_size\",Li=\"cache.key\",Mi=\"cache.operation\",Ui=\"cache.tags\",Gi=\"cache.ttl\",Bi=\"cache.write\",zi=\"channel\",Yi=\"client.address\",ji=\"client.port\",Wi=\"cloudflare.d1.duration\",Ki=\"cloudflare.d1.query_type\",Vi=\"cloudflare.d1.rows_read\",Fi=\"cloudflare.d1.rows_written\",Hi=\"cloudflare.durable_object.query.bindings\",Qi=\"cloudflare.durable_object.response.rows_read\",Ji=\"cloudflare.durable_object.response.rows_written\",Xi=\"cloudflare.r2.bucket\",Zi=\"cloudflare.r2.operation\",$i=\"cloudflare.r2.request.delimiter\",ea=\"cloudflare.r2.request.key\",ta=\"cloudflare.r2.request.part_number\",ia=\"cloudflare.r2.request.prefix\",aa=\"cloudflare.workflow.attempt\",sa=\"cloudflare.workflow.retries.backoff\",ra=\"cloudflare.workflow.retries.delay\",na=\"cloudflare.workflow.retries.limit\",oa=\"cloudflare.workflow.timeout\",la=\"cloud.account.id\",pa=\"cloud.availability_zone\",ca=\"cloud.platform\",ua=\"cloud.provider\",da=\"cloud.region\",ma=\"cloud.resource_id\",ba=\"cls\",ga=\"cls.source.<key>\",ya=\"cls.source\",_a=\"code\",ha=\"code.filepath\",fa=\"code.file.path\",va=\"code.function\",ka=\"code.function.name\",Sa=\"code.lineno\",Ta=\"code.line.number\",Ea=\"code.namespace\",Ia=\"connectionType\",Oa=\"connection.rtt\",wa=\"culture.calendar\",Aa=\"culture.display_name\",xa=\"culture.is_24_hour_format\",Ra=\"culture.locale\",Na=\"culture.timezone\",Ca=\"db.collection.name\",Pa=\"db.connection_string\",qa=\"db.driver.name\",Da=\"db.mongodb.collection\",La=\"db.name\",Ma=\"db.namespace\",Ua=\"db.operation\",Ga=\"db.operation.batch.size\",Ba=\"db.operation.name\",za=\"db.params\",Ya=\"db.query.parameter.<key>\",ja=\"db.query.parameter\",Wa=\"db.query.summary\",Ka=\"db.query.text\",Va=\"db.redis.connection\",Fa=\"db.redis.key\",Ha=\"db.redis.parameters\",Qa=\"db.response.status_code\",Ja=\"db.sql.bindings\",Xa=\"db.statement\",Za=\"db.stored_procedure.name\",$a=\"db.system\",es=\"db.system.name\",ts=\"db.user\",is=\"deviceMemory\",as=\"device.archs\",ss=\"device.battery_level\",rs=\"device.battery_temperature\",ns=\"device.boot_time\",os=\"device.brand\",ls=\"device.charging\",ps=\"device.chipset\",cs=\"device.class\",us=\"device.connection_type\",ds=\"device.cpu_description\",ms=\"device.external_free_storage\",bs=\"device.external_storage_size\",gs=\"device.family\",ys=\"device.free_memory\",_s=\"device.free_storage\",hs=\"device.id\",fs=\"device.locale\",vs=\"device.low_memory\",ks=\"device.low_power_mode\",Ss=\"device.manufacturer\",Ts=\"device.memory.estimated_capacity\",Es=\"device.memory_size\",Is=\"device.model\",Os=\"device.model_id\",ws=\"device.name\",As=\"device.online\",xs=\"device.orientation\",Rs=\"device.processor_count\",Ns=\"device.processor_frequency\",Cs=\"device.screen_density\",Ps=\"device.screen_dpi\",qs=\"device.screen_height_pixels\",Ds=\"device.screen_width_pixels\",Ls=\"device.simulator\",Ms=\"device.storage_size\",Us=\"device.thermal_state\",Gs=\"device.timezone\",Bs=\"device.usable_memory\",zs=\"dist\",Ys=\"django.function_name\",js=\"django.middleware_name\",Ws=\"effectiveConnectionType\",Ks=\"environment\",Vs=\"error.type\",Fs=\"event.id\",Hs=\"event.name\",Qs=\"exception.escaped\",Js=\"exception.message\",Xs=\"exception.stacktrace\",Zs=\"exception.type\",$s=\"faas.coldstart\",er=\"faas.cron\",tr=\"faas.duration_in_ms\",ir=\"faas.entry_point\",ar=\"faas.execution\",sr=\"faas.id\",rr=\"faas.identity\",nr=\"faas.invocation_id\",or=\"faas.invoked_name\",lr=\"faas.invoked_provider\",pr=\"faas.invoked_region\",cr=\"faas.max_memory\",ur=\"faas.name\",dr=\"faas.time\",mr=\"faas.trigger\",br=\"faas.version\",gr=\"fcp\",yr=\"file.path\",_r=\"file.size\",hr=\"flag.evaluation.<key>\",fr=\"flag.evaluation\",vr=\"fp\",kr=\"frames.delay\",Sr=\"frames.frozen\",Tr=\"frames_frozen_rate\",Er=\"frames.slow\",Ir=\"frames_slow_rate\",Or=\"frames.total\",wr=\"fs_error\",Ar=\"gcp.function.context.event_id\",xr=\"gcp.function.context.event_type\",Rr=\"gcp.function.context.id\",Nr=\"gcp.function.context.resource\",Cr=\"gcp.function.context.source\",Pr=\"gcp.function.context.specversion\",qr=\"gcp.function.context.time\",Dr=\"gcp.function.context.timestamp\",Lr=\"gcp.function.context.type\",Mr=\"gcp.project.id\",Ur=\"gcp_region\",Gr=\"gen_ai.agent.name\",Br=\"gen_ai.context.utilization\",zr=\"gen_ai.context.window_size\",Yr=\"gen_ai.conversation.id\",jr=\"gen_ai.cost.cache_creation.input_tokens\",Wr=\"gen_ai.cost.cache_read.input_tokens\",Kr=\"gen_ai.cost.input_tokens\",Vr=\"gen_ai.cost.output_tokens\",Fr=\"gen_ai.cost.reasoning.output_tokens\",Hr=\"gen_ai.cost.total_tokens\",Qr=\"gen_ai.embeddings.input\",Jr=\"gen_ai.function_id\",Xr=\"gen_ai.input.messages\",Zr=\"gen_ai.memory.query.text\",$r=\"gen_ai.memory.records\",en=\"gen_ai.memory.record.count\",tn=\"gen_ai.memory.record.id\",an=\"gen_ai.memory.store.id\",sn=\"gen_ai.operation.name\",rn=\"gen_ai.operation.type\",nn=\"gen_ai.output.messages\",on=\"gen_ai.pipeline.name\",ln=\"gen_ai.prompt\",pn=\"gen_ai.prompt.name\",cn=\"gen_ai.prompt.variable.<key>\",un=\"gen_ai.prompt.variable\",dn=\"gen_ai.provider.name\",mn=\"gen_ai.request.available_tools\",bn=\"gen_ai.request.frequency_penalty\",gn=\"gen_ai.request.max_tokens\",yn=\"gen_ai.request.messages\",_n=\"gen_ai.request.model\",hn=\"gen_ai.request.presence_penalty\",fn=\"gen_ai.request.reasoning.level\",vn=\"gen_ai.request.schema\",kn=\"gen_ai.request.seed\",Sn=\"gen_ai.request.stop_sequences\",Tn=\"gen_ai.request.temperature\",En=\"gen_ai.request.top_k\",In=\"gen_ai.request.top_p\",On=\"gen_ai.response.finish_reason\",wn=\"gen_ai.response.finish_reasons\",An=\"gen_ai.response.id\",xn=\"gen_ai.response.model\",Rn=\"gen_ai.response.object\",Nn=\"gen_ai.response.streaming\",Cn=\"gen_ai.response.text\",Pn=\"gen_ai.response.time_to_first_chunk\",qn=\"gen_ai.response.time_to_first_token\",Dn=\"gen_ai.response.tokens_per_second\",Ln=\"gen_ai.response.tool_calls\",Mn=\"gen_ai.system\",Un=\"gen_ai.system_instructions\",Gn=\"gen_ai.system.message\",Bn=\"gen_ai.tool.call.arguments\",zn=\"gen_ai.tool.call.result\",Yn=\"gen_ai.tool.call.result.size\",jn=\"gen_ai.tool.definitions\",Wn=\"gen_ai.tool.description\",Kn=\"gen_ai.tool.input\",Vn=\"gen_ai.tool.message\",Fn=\"gen_ai.tool.name\",Hn=\"gen_ai.tool.output\",Qn=\"gen_ai.tool.type\",Jn=\"gen_ai.usage.cache_creation.input_tokens\",Xn=\"gen_ai.usage.cache_creation_input_tokens\",Zn=\"gen_ai.usage.cache_read.input_tokens\",$n=\"gen_ai.usage.cache_read_input_tokens\",eo=\"gen_ai.usage.completion_tokens\",to=\"gen_ai.usage.input_tokens\",io=\"gen_ai.usage.input_tokens.cached\",ao=\"gen_ai.usage.input_tokens.cache_write\",so=\"gen_ai.usage.output_tokens\",ro=\"gen_ai.usage.output_tokens.reasoning\",no=\"gen_ai.usage.prompt_tokens\",oo=\"gen_ai.usage.reasoning.output_tokens\",lo=\"gen_ai.usage.total_tokens\",po=\"graphql.document\",co=\"graphql.operation.name\",uo=\"graphql.operation.type\",mo=\"graphql.processing.type\",bo=\"graphql.source\",go=\"grpc.error.bad_request.field_violations\",yo=\"grpc.error.debug_info.detail\",_o=\"grpc.error.debug_info.stack_entries\",ho=\"grpc.error.error_info.domain\",fo=\"grpc.error.error_info.metadata.<key>\",vo=\"grpc.error.error_info.metadata\",ko=\"grpc.error.error_info.reason\",So=\"grpc.error.precondition_failure.violations\",To=\"grpc.error.quota_failure.violations\",Eo=\"grpc.error.resource_info.description\",Io=\"grpc.error.resource_info.owner\",Oo=\"grpc.error.resource_info.resource_name\",wo=\"grpc.error.resource_info.resource_type\",Ao=\"grpc.error.retry_info.retry_delay_ms\",xo=\"hapi.ext.type\",Ro=\"hapi.plugin.name\",No=\"hapi.type\",Co=\"hardwareConcurrency\",Po=\"http.client_ip\",qo=\"http.decoded_response_content_length\",Do=\"http.flavor\",Lo=\"http.fragment\",Mo=\"http.host\",Uo=\"http.method\",Go=\"http.query\",Bo=\"http.request.body.data\",zo=\"http.request.body.decoded_size\",Yo=\"http.request.body.size\",jo=\"http.request.connection_end\",Wo=\"http.request.connect_start\",Ko=\"http.request_content_length\",Vo=\"http.request_content_length_uncompressed\",Fo=\"http.request.domain_lookup_end\",Ho=\"http.request.domain_lookup_start\",Qo=\"http.request.duration\",Jo=\"http.request.fetch_start\",Xo=\"http.request.header.<key>\",Zo=\"http.request.header\",$o=\"http.request.method\",el=\"http.request_method\",tl=\"http.request.redirect_end\",il=\"http.request.redirect_start\",al=\"http.request.request_start\",sl=\"http.request.resend_count\",rl=\"http.request.response_end\",nl=\"http.request.response_start\",ol=\"http.request.same_origin\",ll=\"http.request.secure_connection_start\",pl=\"http.request.time_to_first_byte\",cl=\"http.request.worker_start\",ul=\"http.response.body.decoded_size\",dl=\"http.response.body.size\",ml=\"http.response_content_length\",bl=\"http.response_content_length_uncompressed\",gl=\"http.response.header.content-length\",yl=\"http.response.header.<key>\",_l=\"http.response.header\",hl=\"http.response.size\",fl=\"http.response.status_code\",vl=\"http.response.status_text\",kl=\"http.response_transfer_size\",Sl=\"http.route\",Tl=\"http.scheme\",El=\"http.server_name\",Il=\"http.server.request.time_in_queue\",Ol=\"http.status_code\",wl=\"http.status_text\",Al=\"http.target\",xl=\"http.url\",Rl=\"http.user_agent\",Nl=\"id\",Cl=\"inp\",Pl=\"integrity.blocked_url\",ql=\"integrity.destination\",Dl=\"integrity.document_url\",Ll=\"integrity.report_only\",Ml=\"jsonrpc.protocol.version\",Ul=\"jsonrpc.request.id\",Gl=\"jvm.gc.action\",Bl=\"jvm.gc.name\",zl=\"jvm.memory.pool.name\",Yl=\"jvm.memory.type\",jl=\"jvm.thread.daemon\",Wl=\"jvm.thread.state\",Kl=\"koa.name\",Vl=\"koa.type\",Fl=\"langchain.chain.name\",Hl=\"lcp\",Ql=\"lcp.element\",Jl=\"lcp.id\",Xl=\"lcp.loadTime\",Zl=\"lcp.renderTime\",$l=\"lcp.size\",ep=\"lcp.url\",tp=\"litestar.middleware_name\",ip=\"logger.name\",ap=\"mcp.auth.client.name\",sp=\"mcp.cancelled.reason\",rp=\"mcp.cancelled.request_id\",np=\"mcp.client.name\",op=\"mcp.client.title\",lp=\"mcp.client.version\",pp=\"mcp.lifecycle.phase\",cp=\"mcp.logging.data_type\",up=\"mcp.logging.level\",dp=\"mcp.logging.logger\",mp=\"mcp.logging.message\",bp=\"mcp.method.name\",gp=\"mcp.progress.current\",yp=\"mcp.progress.message\",_p=\"mcp.progress.percentage\",hp=\"mcp.progress.token\",fp=\"mcp.progress.total\",vp=\"mcp.prompt.name\",kp=\"mcp.prompt.result.description\",Sp=\"mcp.prompt.result.<key>.content\",Tp=\"mcp.prompt.result.<key>.role\",Ep=\"mcp.prompt.result.message_content\",Ip=\"mcp.prompt.result.message_count\",Op=\"mcp.prompt.result.message_role\",wp=\"mcp.protocol.ready\",Ap=\"mcp.protocol.version\",xp=\"mcp.request.argument.<key>\",Rp=\"mcp.request.argument\",Np=\"mcp.request.argument.name\",Cp=\"mcp.request.argument.uri\",Pp=\"mcp.request.id\",qp=\"mcp.resource.protocol\",Dp=\"mcp.resource.uri\",Lp=\"mcp.server.name\",Mp=\"mcp.server.title\",Up=\"mcp.server.version\",Gp=\"mcp.session.id\",Bp=\"mcp.tool.name\",zp=\"mcp.tool.result.content\",Yp=\"mcp.tool.result.content_count\",jp=\"mcp.tool.result.content_type\",Wp=\"mcp.tool.result.data_size\",Kp=\"mcp.tool.result.is_error\",Vp=\"mcp.tool.result.<key>.content\",Fp=\"mcp.tool.result.<key>.content_type\",Hp=\"mcp.tool.result.<key>.data_size\",Qp=\"mcp.tool.result.<key>.mime_type\",Jp=\"mcp.tool.result.<key>.name\",Xp=\"mcp.tool.result.<key>.resource_mime_type\",Zp=\"mcp.tool.result.<key>.resource_uri\",$p=\"mcp.tool.result.<key>.uri\",ec=\"mcp.tool.result.mime_type\",tc=\"mcp.tool.result.name\",ic=\"mcp.tool.result.resource_mime_type\",ac=\"mcp.tool.result.resource_uri\",sc=\"mcp.tool.result.uri\",rc=\"mcp.transport\",nc=\"mdc.<key>\",oc=\"mdc\",lc=\"messaging.batch.message_count\",pc=\"messaging.bullmq.flow.name\",cc=\"messaging.bullmq.job.attempt_finished_timestamp\",uc=\"messaging.bullmq.job.bulk.names\",dc=\"messaging.bullmq.job.deduplication.key\",mc=\"messaging.bullmq.job.ids\",bc=\"messaging.bullmq.job.key\",gc=\"messaging.bullmq.job.name\",yc=\"messaging.bullmq.job.processed_timestamp\",_c=\"messaging.bullmq.job.scheduler.id\",hc=\"messaging.bullmq.job.state\",fc=\"messaging.bullmq.job.type\",vc=\"messaging.bullmq.queue.clean.count\",kc=\"messaging.bullmq.queue.clean.limit\",Sc=\"messaging.bullmq.queue.drain.delay\",Tc=\"messaging.bullmq.queue.event.max_length\",Ec=\"messaging.bullmq.queue.grace\",Ic=\"messaging.bullmq.queue.jobs.state\",Oc=\"messaging.bullmq.queue.rate_limit\",wc=\"messaging.bullmq.worker.do_not_wait_active\",Ac=\"messaging.bullmq.worker.force_close\",xc=\"messaging.bullmq.worker.jobs_to_extend_locks\",Rc=\"messaging.bullmq.worker.name\",Nc=\"messaging.bullmq.worker.rate_limit\",Cc=\"messaging.bullmq.worker.stalled_jobs\",Pc=\"messaging.client.id\",qc=\"messaging.conversation_id\",Dc=\"messaging.destination\",Lc=\"messaging.destination.connection\",Mc=\"messaging.destination_kind\",Uc=\"messaging.destination.name\",Gc=\"messaging.destination.partition.id\",Bc=\"messaging.kafka.message.key\",zc=\"messaging.kafka.message.tombstone\",Yc=\"messaging.kafka.offset\",jc=\"messaging.message.body.size\",Wc=\"messaging.message.conversation_id\",Kc=\"messaging.message.envelope.size\",Vc=\"messaging.message.id\",Fc=\"messaging.message_id\",Hc=\"messaging.message.receive.latency\",Qc=\"messaging.message.retry.count\",Jc=\"messaging.operation\",Xc=\"messaging.operation.name\",Zc=\"messaging.operation.type\",$c=\"messaging.protocol\",eu=\"messaging.protocol_version\",tu=\"messaging.rabbitmq.destination.routing_key\",iu=\"messaging.rabbitmq.routing_key\",au=\"messaging.system\",su=\"messaging.url\",ru=\"method\",nu=\"middleware.name\",ou=\"navigation.origin\",lu=\"navigation.route.id\",pu=\"navigation.type\",cu=\"nel.elapsed_time\",uu=\"nel.phase\",du=\"nel.referrer\",mu=\"nel.sampling_fraction\",bu=\"nel.sampling_function\",gu=\"nel.type\",yu=\"network.connection.effective_type\",_u=\"network.connection.rtt\",hu=\"network.connection.type\",fu=\"network.local.address\",vu=\"network.local.port\",ku=\"network.peer.address\",Su=\"network.peer.port\",Tu=\"network.protocol.name\",Eu=\"network.protocol.version\",Iu=\"network.transport\",Ou=\"network.type\",wu=\"net.host.ip\",Au=\"net.host.name\",xu=\"net.host.port\",Ru=\"net.peer.ip\",Nu=\"net.peer.name\",Cu=\"net.peer.port\",Pu=\"net.protocol.name\",qu=\"net.protocol.version\",Du=\"net.sock.family\",Lu=\"net.sock.host.addr\",Mu=\"net.sock.host.port\",Uu=\"net.sock.peer.addr\",Gu=\"net.sock.peer.name\",Bu=\"net.sock.peer.port\",zu=\"net.transport\",Yu=\"os.build\",ju=\"os.build_id\",Wu=\"os.description\",Ku=\"os.kernel_version\",Vu=\"os.name\",Fu=\"os.raw_description\",Hu=\"os.rooted\",Qu=\"os.theme\",Ju=\"os.type\",Xu=\"os.version\",Zu=\"otel.kind\",$u=\"otel.scope.name\",ed=\"otel.scope.version\",td=\"otel.status_code\",id=\"otel.status_description\",ad=\"params.<key>\",sd=\"params\",rd=\"performance.activationStart\",nd=\"performance.timeOrigin\",od=\"port\",ld=\"previous_route\",pd=\"process.command_args\",cd=\"process.executable.name\",ud=\"process.pid\",dd=\"process.runtime.description\",md=\"process.runtime.engine.name\",bd=\"process.runtime.engine.version\",gd=\"process.runtime.name\",yd=\"process.runtime.version\",_d=\"profile_id\",hd=\"query\",fd=\"query.<key>\",vd=\"query\",kd=\"react_native.architecture\",Sd=\"react_native.module.call.count\",Td=\"react_native.module.call.distinct_count\",Ed=\"react_native.module.duration.max\",Id=\"react_native.module.duration.total\",Od=\"react_native.module.error.count\",wd=\"react_native.module.kind\",Ad=\"react_native.module.method\",xd=\"react_native.module.name\",Rd=\"react_native.module.top.duration\",Nd=\"react_native.module.top.name\",Cd=\"react.version\",Pd=\"redis.command\",qd=\"redis.key\",Dd=\"release\",Ld=\"remix.action_form_data.<key>\",Md=\"remix.action_form_data\",Ud=\"replayId\",Gd=\"replay_id\",Bd=\"resource.deployment.environment\",zd=\"resource.deployment.environment.name\",Yd=\"resource.render_blocking_status\",jd=\"route\",Wd=\"router.navigation.origin\",Kd=\"router.navigation.route.id\",Vd=\"router.navigation.type\",Fd=\"rpc.grpc.status_code\",Hd=\"rpc.method\",Qd=\"rpc.response.status_code\",Jd=\"rpc.service\",Xd=\"rpc.system\",Zd=\"rpc.system.name\",$d=\"runtime.build\",em=\"runtime.name\",tm=\"runtime.raw_description\",im=\"runtime.version\",am=\"score.<key>\",sm=\"score\",rm=\"score.ratio.<key>\",nm=\"score.ratio\",om=\"score.total\",lm=\"score.weight.<key>\",pm=\"score.weight\",cm=\"sentry.action\",um=\"sentry.browser.name\",dm=\"sentry.browser.version\",mm=\"sentry.cancellation_reason\",bm=\"sentry.category\",gm=\"sentry.client_sample_rate\",ym=\"sentry.description\",_m=\"sentry.dist\",hm=\"sentry.domain\",fm=\"sentry.dsc.environment\",vm=\"sentry.dsc.project_id\",km=\"sentry.dsc.public_key\",Sm=\"sentry.dsc.release\",Tm=\"sentry.dsc.sampled\",Em=\"sentry.dsc.sample_rate\",Im=\"sentry.dsc.trace_id\",Om=\"sentry.dsc.transaction\",wm=\"sentry.environment\",Am=\"sentry.event.serialized_breadcrumbs\",xm=\"sentry.event.serialized_contexts\",Rm=\"sentry.event.serialized_extra\",Nm=\"sentry.event.serialized_meta\",Cm=\"sentry.exclusive_time\",Pm=\"sentry.frames.frozen\",qm=\"sentry.frames.slow\",Dm=\"sentry.frames.total\",Lm=\"sentry.graphql.operation\",Mm=\"sentry.group\",Um=\"sentry.http.prefetch\",Gm=\"sentry.idle_span_finish_reason\",Bm=\"sentry.is_localhost\",zm=\"sentry.is_remote\",Ym=\"sentry.kind\",jm=\"sentry.link.type\",Wm=\"sentry.main_thread\",Km=\"sentry.message.parameter.<key>\",Vm=\"sentry.message.template\",Fm=\"sentry.metric.source\",Hm=\"sentry.mobile\",Qm=\"sentry.module.<key>\",Jm=\"sentry.module\",Xm=\"sentry.nextjs.ssr.function.route\",Zm=\"sentry.nextjs.ssr.function.type\",$m=\"sentry.normalized_db_query\",eb=\"sentry.normalized_db_query.hash\",tb=\"sentry.normalized_description\",ib=\"sentry.observed_timestamp_nanos\",ab=\"sentry.op\",sb=\"sentry.origin\",rb=\"sentry.pageload.span_id\",nb=\"sentry.platform\",ob=\"sentry.profiler_id\",lb=\"sentry.profile_id\",pb=\"sentry.relay.ingress\",cb=\"sentry.relay.pipeline\",ub=\"sentry.release\",db=\"sentry.replay_id\",mb=\"sentry.replay_is_buffering\",bb=\"sentry.report_event\",gb=\"sentry.sdk.integrations\",yb=\"sentry.sdk.name\",_b=\"sentry.sdk.version\",hb=\"sentry.segment.id\",fb=\"sentry.segment_id\",vb=\"sentry.segment.name\",kb=\"sentry.segment.name.source\",Sb=\"sentry.server_sample_rate\",Tb=\"sentry.source\",Eb=\"sentry.span.source\",Ib=\"sentry.status\",Ob=\"sentry.status_code\",wb=\"sentry.status.message\",Ab=\"sentry.sveltekit.navigation.from\",xb=\"sentry.sveltekit.navigation.to\",Rb=\"sentry.sveltekit.navigation.type\",Nb=\"sentry.thread.id\",Cb=\"sentry.timestamp.sequence\",Pb=\"sentry.trace_lifecycle\",qb=\"sentry.trace.parent_span_id\",Db=\"sentry.trace.status\",Lb=\"sentry.transaction\",Mb=\"sentry.user.email\",Ub=\"sentry.user.geo.city\",Gb=\"sentry.user.geo.country_code\",Bb=\"sentry.user.geo.region\",zb=\"sentry.user.geo.subdivision\",Yb=\"sentry.user.id\",jb=\"sentry.user.ip\",Wb=\"sentry.user.username\",Kb=\"server.address\",Vb=\"server.ext.type\",Fb=\"server_name\",Hb=\"server.port\",Qb=\"service.name\",Jb=\"service.version\",Xb=\"session.id\",Zb=\"stall_percentage\",$b=\"stall_total_time\",eg=\"starlette.middleware_name\",tg=\"starlite.middleware_name\",ig=\"state.type\",ag=\"subprocess.pid\",sg=\"sveltekit.load.environment\",rg=\"sveltekit.load.node_id\",ng=\"sveltekit.load.node_type\",og=\"sveltekit.tracing.original_name\",lg=\"thread.id\",pg=\"thread.name\",cg=\"timber.tag\",ug=\"time_to_full_display\",dg=\"time_to_initial_display\",mg=\"transaction\",bg=\"trpc.procedure_path\",gg=\"trpc.procedure_type\",yg=\"ttfb\",_g=\"ttfb.requestTime\",hg=\"turbo_modules.total_call_count\",fg=\"turbo_modules.total_duration_ms\",vg=\"turbo_modules.total_error_count\",kg=\"turbo_modules.unique_methods\",Sg=\"turbo_module.arch\",Tg=\"turbo_module.method\",Eg=\"turbo_module.name\",Ig=\"turbo_module.top_module\",Og=\"turbo_module.top_module_duration_ms\",wg=\"turbo_module.total_call_count\",Ag=\"turbo_module.total_duration_ms\",xg=\"turbo_module.total_error_count\",Rg=\"turbo_module.unique_methods\",Ng=\"type\",Cg=\"ui.component_name\",Pg=\"ui.contributes_to_ttfd\",qg=\"ui.contributes_to_ttid\",Dg=\"ui.element.height\",Lg=\"ui.element.id\",Mg=\"ui.element.identifier\",Ug=\"ui.element.load_time\",Gg=\"ui.element.paint_type\",Bg=\"ui.element.render_time\",zg=\"ui.element.type\",Yg=\"ui.element.url\",jg=\"ui.element.width\",Wg=\"url\",Kg=\"url.domain\",Vg=\"url.fragment\",Fg=\"url.full\",Hg=\"url.path\",Qg=\"url.path.parameter.<key>\",Jg=\"url.path.parameter\",Xg=\"url.path.params.<key>\",Zg=\"url.path.params\",$g=\"url.port\",ey=\"url.query\",ty=\"url.same_origin\",iy=\"url.scheme\",ay=\"url.template\",sy=\"user_agent.original\",ry=\"user.email\",ny=\"user.full_name\",oy=\"user.geo.city\",ly=\"user.geo.country_code\",py=\"user.geo.region\",cy=\"user.geo.subdivision\",uy=\"user.hash\",dy=\"user.id\",my=\"user.ip_address\",by=\"user.name\",gy=\"user.roles\",yy=\"vercel.ai.telemetry.metadata.<key>\",_y=\"vercel.ai.telemetry.metadata\",hy=\"vercel.branch\",fy=\"vercel.build_id\",vy=\"vercel.deployment_id\",ky=\"vercel.destination\",Sy=\"vercel.edge_type\",Ty=\"vercel.entrypoint\",Ey=\"vercel.execution_region\",Iy=\"vercel.id\",Oy=\"vercel.ja3_digest\",wy=\"vercel.ja4_digest\",Ay=\"vercel.log_type\",xy=\"vercel.path\",Ry=\"vercel.project_id\",Ny=\"vercel.project_name\",Cy=\"vercel.proxy.cache_id\",Py=\"vercel.proxy.client_ip\",qy=\"vercel.proxy.host\",Dy=\"vercel.proxy.lambda_region\",Ly=\"vercel.proxy.method\",My=\"vercel.proxy.path\",Uy=\"vercel.proxy.path_type\",Gy=\"vercel.proxy.path_type_variant\",By=\"vercel.proxy.referer\",zy=\"vercel.proxy.region\",Yy=\"vercel.proxy.response_byte_size\",jy=\"vercel.proxy.scheme\",Wy=\"vercel.proxy.status_code\",Ky=\"vercel.proxy.timestamp\",Vy=\"vercel.proxy.user_agent\",Fy=\"vercel.proxy.vercel_cache\",Hy=\"vercel.proxy.vercel_id\",Qy=\"vercel.proxy.waf_action\",Jy=\"vercel.proxy.waf_rule_id\",Xy=\"vercel.request_id\",Zy=\"vercel.source\",$y=\"vercel.status_code\",e_={address:\"string\",\"ai.citations\":\"string[]\",\"ai.completion_tokens.used\":\"integer\",\"ai.documents\":\"string[]\",\"ai.finish_reason\":\"string\",\"ai.frequency_penalty\":\"double\",\"ai.function_call\":\"string\",\"ai.generation_id\":\"string\",\"ai.input_messages\":\"string\",\"ai.is_search_required\":\"boolean\",\"ai.metadata\":\"string\",\"ai.model.id\":\"string\",\"ai.model_id\":\"string\",\"ai.model.provider\":\"string\",\"ai.pipeline.name\":\"string\",\"ai.preamble\":\"string\",\"ai.presence_penalty\":\"double\",\"ai.prompt\":\"string\",\"ai.prompt.messages\":\"string\",\"ai.prompt_tokens.used\":\"integer\",\"ai.prompt.tools\":\"string[]\",\"ai.raw_prompting\":\"boolean\",\"ai.responses\":\"string[]\",\"ai.response_format\":\"string\",\"ai.response.id\":\"string\",\"ai.response.model\":\"string\",\"ai.response.object\":\"string\",\"ai.response.text\":\"string\",\"ai.response.timestamp\":\"string\",\"ai.response.toolCalls\":\"string\",\"ai.schema\":\"string\",\"ai.search_queries\":\"string[]\",\"ai.search_results\":\"string[]\",\"ai.seed\":\"string\",\"ai.streaming\":\"boolean\",\"ai.tags\":\"string\",\"ai.temperature\":\"double\",\"ai.texts\":\"string[]\",\"ai.toolCall.args\":\"string\",\"ai.toolCall.result\":\"string\",\"ai.tools\":\"string[]\",\"ai.tool_calls\":\"string[]\",\"ai.top_k\":\"integer\",\"ai.top_p\":\"double\",\"ai.total_cost\":\"double\",\"ai.total_tokens.used\":\"integer\",\"ai.usage.tokens\":\"integer\",\"ai.values\":\"string\",\"ai.warnings\":\"string[]\",\"angular.version\":\"string\",\"anthropic.tool_result.content\":\"string\",\"app.app_build\":\"string\",\"app.app_identifier\":\"string\",\"app.app_name\":\"string\",\"app.app_start_time\":\"string\",\"app.app_version\":\"string\",\"app.build\":\"string\",\"app.identifier\":\"string\",\"app.in_foreground\":\"boolean\",\"app.name\":\"string\",app_start_cold:\"double\",\"app.start_time\":\"string\",app_start_type:\"string\",app_start_warm:\"double\",\"app.version\":\"string\",\"app.vitals.frames.delay.value\":\"integer\",\"app.vitals.frames.frozen.count\":\"integer\",\"app.vitals.frames.frozen.rate\":\"double\",\"app.vitals.frames.slow.count\":\"integer\",\"app.vitals.frames.slow.rate\":\"double\",\"app.vitals.frames.total.count\":\"integer\",\"app.vitals.stall.duration\":\"double\",\"app.vitals.stall.percentage\":\"double\",\"app.vitals.start.cold.value\":\"double\",\"app.vitals.start.prewarmed\":\"boolean\",\"app.vitals.start.reason\":\"string\",\"app.vitals.start.screen\":\"string\",\"app.vitals.start.type\":\"string\",\"app.vitals.start.warm.value\":\"double\",\"app.vitals.ttfd.value\":\"double\",\"app.vitals.ttid.value\":\"double\",\"art.gc.blocking_count\":\"integer\",\"art.gc.blocking_time\":\"double\",\"art.gc.pre_oome_count\":\"integer\",\"art.gc.total_count\":\"integer\",\"art.gc.total_time\":\"double\",\"art.gc.waiting_time\":\"double\",\"art.memory.free\":\"integer\",\"art.memory.free_until_gc\":\"integer\",\"art.memory.free_until_oome\":\"integer\",\"art.memory.max\":\"integer\",\"art.memory.total\":\"integer\",\"aws.cloudwatch.logs.log_group\":\"string\",\"aws.cloudwatch.logs.log_stream\":\"string\",\"aws.cloudwatch.logs.url\":\"string\",\"aws.dynamodb.attributes_to_get\":\"string[]\",\"aws.dynamodb.attribute_definitions\":\"string[]\",\"aws.dynamodb.consistent_read\":\"boolean\",\"aws.dynamodb.consumed_capacity\":\"string[]\",\"aws.dynamodb.count\":\"integer\",\"aws.dynamodb.exclusive_start_table\":\"string\",\"aws.dynamodb.global_secondary_indexes\":\"string[]\",\"aws.dynamodb.global_secondary_index_updates\":\"string[]\",\"aws.dynamodb.index_name\":\"string\",\"aws.dynamodb.item_collection_metrics\":\"string\",\"aws.dynamodb.limit\":\"integer\",\"aws.dynamodb.local_secondary_indexes\":\"string[]\",\"aws.dynamodb.projection\":\"string\",\"aws.dynamodb.provisioned_read_capacity\":\"double\",\"aws.dynamodb.provisioned_write_capacity\":\"double\",\"aws.dynamodb.scanned_count\":\"integer\",\"aws.dynamodb.scan_forward\":\"boolean\",\"aws.dynamodb.segment\":\"integer\",\"aws.dynamodb.select\":\"string\",\"aws.dynamodb.table_count\":\"integer\",\"aws.dynamodb.table_names\":\"string[]\",\"aws.dynamodb.total_segments\":\"integer\",\"aws.extended_request_id\":\"string\",\"aws.kinesis.stream_name\":\"string\",\"aws.kinesis.stream.name\":\"string\",\"aws.lambda.aws_request_id\":\"string\",\"aws.lambda.execution_duration_in_millis\":\"double\",\"aws.lambda.function_name\":\"string\",\"aws.lambda.function_version\":\"string\",\"aws.lambda.initialization_type\":\"string\",\"aws.lambda.invoked_arn\":\"string\",\"aws.lambda.invoked_function_arn\":\"string\",\"aws.lambda.remaining_time_in_millis\":\"double\",\"aws.lambda.resource_mapping.id\":\"string\",\"aws.lambda.target_function.name\":\"string\",\"aws.lambda.web.endpoint_name\":\"string\",\"aws.log.group.names\":\"string[]\",\"aws.log.stream.names\":\"string[]\",\"aws.operation_name\":\"string\",aws_region:\"string\",\"aws.request.extended_id\":\"string\",\"aws.request_id\":\"string\",\"aws.request.id\":\"string\",\"aws.request.url\":\"string\",\"aws.s3.bucket\":\"string\",\"aws.s3.copy_source\":\"string\",\"aws.s3.delete\":\"string\",\"aws.s3.key\":\"string\",\"aws.s3.part_number\":\"integer\",\"aws.s3.upload_id\":\"string\",\"aws.secretsmanager.secret.arn\":\"string\",\"aws.secretsmanager.secret.name\":\"string\",\"aws.sns.topic.arn\":\"string\",\"aws.sqs.queue.url\":\"string\",\"aws.step_functions.activity.arn\":\"string\",\"aws.step_functions.activity.name\":\"string\",\"aws.step_functions.execution.arn\":\"string\",\"aws.step_functions.state_machine.arn\":\"string\",\"aws.step_functions.state_machine.name\":\"string\",blocked_main_thread:\"boolean\",\"browser.bfcache.frame\":\"string\",\"browser.bfcache.not_restored_reason_count\":\"integer\",\"browser.bfcache.outcome\":\"string\",\"browser.bfcache.reason\":\"string\",\"browser.name\":\"string\",\"browser.navigation.id\":\"integer\",\"browser.navigation.type\":\"string\",\"browser.paint.type\":\"string\",\"browser.performance.navigation.activation_start\":\"double\",\"browser.performance.time_origin\":\"double\",\"browser.report.type\":\"string\",\"browser.script.invoker\":\"string\",\"browser.script.invoker_type\":\"string\",\"browser.script.source_char_position\":\"integer\",\"browser.version\":\"string\",\"browser.web_vital.cls.report_event\":\"string\",\"browser.web_vital.cls.source.<key>\":\"string\",\"browser.web_vital.cls.value\":\"double\",\"browser.web_vital.fcp.value\":\"double\",\"browser.web_vital.fp.value\":\"double\",\"browser.web_vital.inp.input_delay\":\"double\",\"browser.web_vital.inp.interaction_type\":\"string\",\"browser.web_vital.inp.presentation_delay\":\"double\",\"browser.web_vital.inp.processing_duration\":\"double\",\"browser.web_vital.inp.target\":\"string\",\"browser.web_vital.inp.value\":\"double\",\"browser.web_vital.lcp.element\":\"string\",\"browser.web_vital.lcp.element_render_delay\":\"double\",\"browser.web_vital.lcp.id\":\"string\",\"browser.web_vital.lcp.load_time\":\"integer\",\"browser.web_vital.lcp.render_time\":\"integer\",\"browser.web_vital.lcp.report_event\":\"string\",\"browser.web_vital.lcp.resource_load_delay\":\"double\",\"browser.web_vital.lcp.resource_load_duration\":\"double\",\"browser.web_vital.lcp.size\":\"integer\",\"browser.web_vital.lcp.url\":\"string\",\"browser.web_vital.lcp.value\":\"double\",\"browser.web_vital.ttfb.request_time\":\"double\",\"browser.web_vital.ttfb.value\":\"double\",\"cache.hit\":\"boolean\",\"cache.item_age\":\"integer\",\"cache.item_size\":\"integer\",\"cache.key\":\"string[]\",\"cache.operation\":\"string\",\"cache.tags\":\"string[]\",\"cache.ttl\":\"integer\",\"cache.write\":\"boolean\",channel:\"string\",\"client.address\":\"string\",\"client.port\":\"integer\",\"cloudflare.d1.duration\":\"integer\",\"cloudflare.d1.query_type\":\"string\",\"cloudflare.d1.rows_read\":\"integer\",\"cloudflare.d1.rows_written\":\"integer\",\"cloudflare.durable_object.query.bindings\":\"integer\",\"cloudflare.durable_object.response.rows_read\":\"integer\",\"cloudflare.durable_object.response.rows_written\":\"integer\",\"cloudflare.r2.bucket\":\"string\",\"cloudflare.r2.operation\":\"string\",\"cloudflare.r2.request.delimiter\":\"string\",\"cloudflare.r2.request.key\":\"string\",\"cloudflare.r2.request.part_number\":\"integer\",\"cloudflare.r2.request.prefix\":\"string\",\"cloudflare.workflow.attempt\":\"integer\",\"cloudflare.workflow.retries.backoff\":\"string\",\"cloudflare.workflow.retries.delay\":\"string\",\"cloudflare.workflow.retries.limit\":\"integer\",\"cloudflare.workflow.timeout\":\"string\",\"cloud.account.id\":\"string\",\"cloud.availability_zone\":\"string\",\"cloud.platform\":\"string\",\"cloud.provider\":\"string\",\"cloud.region\":\"string\",\"cloud.resource_id\":\"string\",cls:\"double\",\"cls.source.<key>\":\"string\",code:\"string\",\"code.filepath\":\"string\",\"code.file.path\":\"string\",\"code.function\":\"string\",\"code.function.name\":\"string\",\"code.lineno\":\"integer\",\"code.line.number\":\"integer\",\"code.namespace\":\"string\",connectionType:\"string\",\"connection.rtt\":\"integer\",\"culture.calendar\":\"string\",\"culture.display_name\":\"string\",\"culture.is_24_hour_format\":\"boolean\",\"culture.locale\":\"string\",\"culture.timezone\":\"string\",\"db.collection.name\":\"string\",\"db.connection_string\":\"string\",\"db.driver.name\":\"string\",\"db.mongodb.collection\":\"string\",\"db.name\":\"string\",\"db.namespace\":\"string\",\"db.operation\":\"string\",\"db.operation.batch.size\":\"integer\",\"db.operation.name\":\"string\",\"db.params\":\"string\",\"db.query.parameter.<key>\":\"string\",\"db.query.summary\":\"string\",\"db.query.text\":\"string\",\"db.redis.connection\":\"string\",\"db.redis.key\":\"string\",\"db.redis.parameters\":\"string[]\",\"db.response.status_code\":\"string\",\"db.sql.bindings\":\"string[]\",\"db.statement\":\"string\",\"db.stored_procedure.name\":\"string\",\"db.system\":\"string\",\"db.system.name\":\"string\",\"db.user\":\"string\",deviceMemory:\"string\",\"device.archs\":\"string[]\",\"device.battery_level\":\"double\",\"device.battery_temperature\":\"double\",\"device.boot_time\":\"string\",\"device.brand\":\"string\",\"device.charging\":\"boolean\",\"device.chipset\":\"string\",\"device.class\":\"string\",\"device.connection_type\":\"string\",\"device.cpu_description\":\"string\",\"device.external_free_storage\":\"integer\",\"device.external_storage_size\":\"integer\",\"device.family\":\"string\",\"device.free_memory\":\"integer\",\"device.free_storage\":\"integer\",\"device.id\":\"string\",\"device.locale\":\"string\",\"device.low_memory\":\"boolean\",\"device.low_power_mode\":\"boolean\",\"device.manufacturer\":\"string\",\"device.memory.estimated_capacity\":\"integer\",\"device.memory_size\":\"integer\",\"device.model\":\"string\",\"device.model_id\":\"string\",\"device.name\":\"string\",\"device.online\":\"boolean\",\"device.orientation\":\"string\",\"device.processor_count\":\"integer\",\"device.processor_frequency\":\"double\",\"device.screen_density\":\"double\",\"device.screen_dpi\":\"integer\",\"device.screen_height_pixels\":\"integer\",\"device.screen_width_pixels\":\"integer\",\"device.simulator\":\"boolean\",\"device.storage_size\":\"integer\",\"device.thermal_state\":\"string\",\"device.timezone\":\"string\",\"device.usable_memory\":\"integer\",dist:\"string\",\"django.function_name\":\"string\",\"django.middleware_name\":\"string\",effectiveConnectionType:\"string\",environment:\"string\",\"error.type\":\"string\",\"event.id\":\"integer\",\"event.name\":\"string\",\"exception.escaped\":\"boolean\",\"exception.message\":\"string\",\"exception.stacktrace\":\"string\",\"exception.type\":\"string\",\"faas.coldstart\":\"boolean\",\"faas.cron\":\"string\",\"faas.duration_in_ms\":\"integer\",\"faas.entry_point\":\"string\",\"faas.execution\":\"string\",\"faas.id\":\"string\",\"faas.identity\":\"string\",\"faas.invocation_id\":\"string\",\"faas.invoked_name\":\"string\",\"faas.invoked_provider\":\"string\",\"faas.invoked_region\":\"string\",\"faas.max_memory\":\"integer\",\"faas.name\":\"string\",\"faas.time\":\"string\",\"faas.trigger\":\"string\",\"faas.version\":\"string\",fcp:\"double\",\"file.path\":\"string\",\"file.size\":\"integer\",\"flag.evaluation.<key>\":\"boolean\",fp:\"double\",\"frames.delay\":\"integer\",\"frames.frozen\":\"integer\",frames_frozen_rate:\"double\",\"frames.slow\":\"integer\",frames_slow_rate:\"double\",\"frames.total\":\"integer\",fs_error:\"string\",\"gcp.function.context.event_id\":\"string\",\"gcp.function.context.event_type\":\"string\",\"gcp.function.context.id\":\"string\",\"gcp.function.context.resource\":\"string\",\"gcp.function.context.source\":\"string\",\"gcp.function.context.specversion\":\"string\",\"gcp.function.context.time\":\"string\",\"gcp.function.context.timestamp\":\"string\",\"gcp.function.context.type\":\"string\",\"gcp.project.id\":\"string\",gcp_region:\"string\",\"gen_ai.agent.name\":\"string\",\"gen_ai.context.utilization\":\"double\",\"gen_ai.context.window_size\":\"integer\",\"gen_ai.conversation.id\":\"string\",\"gen_ai.cost.cache_creation.input_tokens\":\"double\",\"gen_ai.cost.cache_read.input_tokens\":\"double\",\"gen_ai.cost.input_tokens\":\"double\",\"gen_ai.cost.output_tokens\":\"double\",\"gen_ai.cost.reasoning.output_tokens\":\"double\",\"gen_ai.cost.total_tokens\":\"double\",\"gen_ai.embeddings.input\":\"string\",\"gen_ai.function_id\":\"string\",\"gen_ai.input.messages\":\"string\",\"gen_ai.memory.query.text\":\"string\",\"gen_ai.memory.records\":\"string\",\"gen_ai.memory.record.count\":\"integer\",\"gen_ai.memory.record.id\":\"string\",\"gen_ai.memory.store.id\":\"string\",\"gen_ai.operation.name\":\"string\",\"gen_ai.operation.type\":\"string\",\"gen_ai.output.messages\":\"string\",\"gen_ai.pipeline.name\":\"string\",\"gen_ai.prompt\":\"string\",\"gen_ai.prompt.name\":\"string\",\"gen_ai.prompt.variable.<key>\":\"string\",\"gen_ai.provider.name\":\"string\",\"gen_ai.request.available_tools\":\"string\",\"gen_ai.request.frequency_penalty\":\"double\",\"gen_ai.request.max_tokens\":\"integer\",\"gen_ai.request.messages\":\"string\",\"gen_ai.request.model\":\"string\",\"gen_ai.request.presence_penalty\":\"double\",\"gen_ai.request.reasoning.level\":\"string\",\"gen_ai.request.schema\":\"string\",\"gen_ai.request.seed\":\"string\",\"gen_ai.request.stop_sequences\":\"string[]\",\"gen_ai.request.temperature\":\"double\",\"gen_ai.request.top_k\":\"integer\",\"gen_ai.request.top_p\":\"double\",\"gen_ai.response.finish_reason\":\"string\",\"gen_ai.response.finish_reasons\":\"string\",\"gen_ai.response.id\":\"string\",\"gen_ai.response.model\":\"string\",\"gen_ai.response.object\":\"string\",\"gen_ai.response.streaming\":\"boolean\",\"gen_ai.response.text\":\"string\",\"gen_ai.response.time_to_first_chunk\":\"double\",\"gen_ai.response.time_to_first_token\":\"double\",\"gen_ai.response.tokens_per_second\":\"double\",\"gen_ai.response.tool_calls\":\"string\",\"gen_ai.system\":\"string\",\"gen_ai.system_instructions\":\"string\",\"gen_ai.system.message\":\"string\",\"gen_ai.tool.call.arguments\":\"string\",\"gen_ai.tool.call.result\":\"string\",\"gen_ai.tool.call.result.size\":\"integer\",\"gen_ai.tool.definitions\":\"string\",\"gen_ai.tool.description\":\"string\",\"gen_ai.tool.input\":\"string\",\"gen_ai.tool.message\":\"string\",\"gen_ai.tool.name\":\"string\",\"gen_ai.tool.output\":\"string\",\"gen_ai.tool.type\":\"string\",\"gen_ai.usage.cache_creation.input_tokens\":\"integer\",\"gen_ai.usage.cache_creation_input_tokens\":\"integer\",\"gen_ai.usage.cache_read.input_tokens\":\"integer\",\"gen_ai.usage.cache_read_input_tokens\":\"integer\",\"gen_ai.usage.completion_tokens\":\"integer\",\"gen_ai.usage.input_tokens\":\"integer\",\"gen_ai.usage.input_tokens.cached\":\"integer\",\"gen_ai.usage.input_tokens.cache_write\":\"integer\",\"gen_ai.usage.output_tokens\":\"integer\",\"gen_ai.usage.output_tokens.reasoning\":\"integer\",\"gen_ai.usage.prompt_tokens\":\"integer\",\"gen_ai.usage.reasoning.output_tokens\":\"integer\",\"gen_ai.usage.total_tokens\":\"integer\",\"graphql.document\":\"string\",\"graphql.operation.name\":\"string\",\"graphql.operation.type\":\"string\",\"graphql.processing.type\":\"string\",\"graphql.source\":\"string\",\"grpc.error.bad_request.field_violations\":\"string[]\",\"grpc.error.debug_info.detail\":\"string\",\"grpc.error.debug_info.stack_entries\":\"string[]\",\"grpc.error.error_info.domain\":\"string\",\"grpc.error.error_info.metadata.<key>\":\"string\",\"grpc.error.error_info.reason\":\"string\",\"grpc.error.precondition_failure.violations\":\"string[]\",\"grpc.error.quota_failure.violations\":\"string[]\",\"grpc.error.resource_info.description\":\"string\",\"grpc.error.resource_info.owner\":\"string\",\"grpc.error.resource_info.resource_name\":\"string\",\"grpc.error.resource_info.resource_type\":\"string\",\"grpc.error.retry_info.retry_delay_ms\":\"integer\",\"hapi.ext.type\":\"string\",\"hapi.plugin.name\":\"string\",\"hapi.type\":\"string\",hardwareConcurrency:\"string\",\"http.client_ip\":\"string\",\"http.decoded_response_content_length\":\"integer\",\"http.flavor\":\"string\",\"http.fragment\":\"string\",\"http.host\":\"string\",\"http.method\":\"string\",\"http.query\":\"string\",\"http.request.body.data\":\"string\",\"http.request.body.decoded_size\":\"integer\",\"http.request.body.size\":\"integer\",\"http.request.connection_end\":\"double\",\"http.request.connect_start\":\"double\",\"http.request_content_length\":\"integer\",\"http.request_content_length_uncompressed\":\"integer\",\"http.request.domain_lookup_end\":\"double\",\"http.request.domain_lookup_start\":\"double\",\"http.request.duration\":\"integer\",\"http.request.fetch_start\":\"double\",\"http.request.header.<key>\":\"string[]\",\"http.request.method\":\"string\",\"http.request_method\":\"string\",\"http.request.redirect_end\":\"double\",\"http.request.redirect_start\":\"double\",\"http.request.request_start\":\"double\",\"http.request.resend_count\":\"integer\",\"http.request.response_end\":\"double\",\"http.request.response_start\":\"double\",\"http.request.same_origin\":\"boolean\",\"http.request.secure_connection_start\":\"double\",\"http.request.time_to_first_byte\":\"double\",\"http.request.worker_start\":\"double\",\"http.response.body.decoded_size\":\"integer\",\"http.response.body.size\":\"integer\",\"http.response_content_length\":\"integer\",\"http.response_content_length_uncompressed\":\"integer\",\"http.response.header.content-length\":\"string\",\"http.response.header.<key>\":\"string[]\",\"http.response.size\":\"integer\",\"http.response.status_code\":\"integer\",\"http.response.status_text\":\"string\",\"http.response_transfer_size\":\"integer\",\"http.route\":\"string\",\"http.scheme\":\"string\",\"http.server_name\":\"string\",\"http.server.request.time_in_queue\":\"double\",\"http.status_code\":\"integer\",\"http.status_text\":\"string\",\"http.target\":\"string\",\"http.url\":\"string\",\"http.user_agent\":\"string\",id:\"string\",inp:\"double\",\"integrity.blocked_url\":\"string\",\"integrity.destination\":\"string\",\"integrity.document_url\":\"string\",\"integrity.report_only\":\"boolean\",\"jsonrpc.protocol.version\":\"string\",\"jsonrpc.request.id\":\"string\",\"jvm.gc.action\":\"string\",\"jvm.gc.name\":\"string\",\"jvm.memory.pool.name\":\"string\",\"jvm.memory.type\":\"string\",\"jvm.thread.daemon\":\"boolean\",\"jvm.thread.state\":\"string\",\"koa.name\":\"string\",\"koa.type\":\"string\",\"langchain.chain.name\":\"string\",lcp:\"double\",\"lcp.element\":\"string\",\"lcp.id\":\"string\",\"lcp.loadTime\":\"integer\",\"lcp.renderTime\":\"integer\",\"lcp.size\":\"integer\",\"lcp.url\":\"string\",\"litestar.middleware_name\":\"string\",\"logger.name\":\"string\",\"mcp.auth.client.name\":\"string\",\"mcp.cancelled.reason\":\"string\",\"mcp.cancelled.request_id\":\"string\",\"mcp.client.name\":\"string\",\"mcp.client.title\":\"string\",\"mcp.client.version\":\"string\",\"mcp.lifecycle.phase\":\"string\",\"mcp.logging.data_type\":\"string\",\"mcp.logging.level\":\"string\",\"mcp.logging.logger\":\"string\",\"mcp.logging.message\":\"string\",\"mcp.method.name\":\"string\",\"mcp.progress.current\":\"double\",\"mcp.progress.message\":\"string\",\"mcp.progress.percentage\":\"double\",\"mcp.progress.token\":\"string\",\"mcp.progress.total\":\"double\",\"mcp.prompt.name\":\"string\",\"mcp.prompt.result.description\":\"string\",\"mcp.prompt.result.<key>.content\":\"string\",\"mcp.prompt.result.<key>.role\":\"string\",\"mcp.prompt.result.message_content\":\"string\",\"mcp.prompt.result.message_count\":\"integer\",\"mcp.prompt.result.message_role\":\"string\",\"mcp.protocol.ready\":\"integer\",\"mcp.protocol.version\":\"string\",\"mcp.request.argument.<key>\":\"string\",\"mcp.request.argument.name\":\"string\",\"mcp.request.argument.uri\":\"string\",\"mcp.request.id\":\"string\",\"mcp.resource.protocol\":\"string\",\"mcp.resource.uri\":\"string\",\"mcp.server.name\":\"string\",\"mcp.server.title\":\"string\",\"mcp.server.version\":\"string\",\"mcp.session.id\":\"string\",\"mcp.tool.name\":\"string\",\"mcp.tool.result.content\":\"string\",\"mcp.tool.result.content_count\":\"integer\",\"mcp.tool.result.content_type\":\"string\",\"mcp.tool.result.data_size\":\"integer\",\"mcp.tool.result.is_error\":\"boolean\",\"mcp.tool.result.<key>.content\":\"string\",\"mcp.tool.result.<key>.content_type\":\"string\",\"mcp.tool.result.<key>.data_size\":\"integer\",\"mcp.tool.result.<key>.mime_type\":\"string\",\"mcp.tool.result.<key>.name\":\"string\",\"mcp.tool.result.<key>.resource_mime_type\":\"string\",\"mcp.tool.result.<key>.resource_uri\":\"string\",\"mcp.tool.result.<key>.uri\":\"string\",\"mcp.tool.result.mime_type\":\"string\",\"mcp.tool.result.name\":\"string\",\"mcp.tool.result.resource_mime_type\":\"string\",\"mcp.tool.result.resource_uri\":\"string\",\"mcp.tool.result.uri\":\"string\",\"mcp.transport\":\"string\",\"mdc.<key>\":\"string\",\"messaging.batch.message_count\":\"integer\",\"messaging.bullmq.flow.name\":\"string\",\"messaging.bullmq.job.attempt_finished_timestamp\":\"integer\",\"messaging.bullmq.job.bulk.names\":\"string[]\",\"messaging.bullmq.job.deduplication.key\":\"string\",\"messaging.bullmq.job.ids\":\"string[]\",\"messaging.bullmq.job.key\":\"string\",\"messaging.bullmq.job.name\":\"string\",\"messaging.bullmq.job.processed_timestamp\":\"integer\",\"messaging.bullmq.job.scheduler.id\":\"string\",\"messaging.bullmq.job.state\":\"string\",\"messaging.bullmq.job.type\":\"string\",\"messaging.bullmq.queue.clean.count\":\"integer\",\"messaging.bullmq.queue.clean.limit\":\"integer\",\"messaging.bullmq.queue.drain.delay\":\"boolean\",\"messaging.bullmq.queue.event.max_length\":\"integer\",\"messaging.bullmq.queue.grace\":\"integer\",\"messaging.bullmq.queue.jobs.state\":\"string\",\"messaging.bullmq.queue.rate_limit\":\"integer\",\"messaging.bullmq.worker.do_not_wait_active\":\"boolean\",\"messaging.bullmq.worker.force_close\":\"boolean\",\"messaging.bullmq.worker.jobs_to_extend_locks\":\"string[]\",\"messaging.bullmq.worker.name\":\"string\",\"messaging.bullmq.worker.rate_limit\":\"integer\",\"messaging.bullmq.worker.stalled_jobs\":\"string[]\",\"messaging.client.id\":\"string\",\"messaging.conversation_id\":\"string\",\"messaging.destination\":\"string\",\"messaging.destination.connection\":\"string\",\"messaging.destination_kind\":\"string\",\"messaging.destination.name\":\"string\",\"messaging.destination.partition.id\":\"string\",\"messaging.kafka.message.key\":\"string\",\"messaging.kafka.message.tombstone\":\"boolean\",\"messaging.kafka.offset\":\"integer\",\"messaging.message.body.size\":\"integer\",\"messaging.message.conversation_id\":\"string\",\"messaging.message.envelope.size\":\"integer\",\"messaging.message.id\":\"string\",\"messaging.message_id\":\"string\",\"messaging.message.receive.latency\":\"integer\",\"messaging.message.retry.count\":\"integer\",\"messaging.operation\":\"string\",\"messaging.operation.name\":\"string\",\"messaging.operation.type\":\"string\",\"messaging.protocol\":\"string\",\"messaging.protocol_version\":\"string\",\"messaging.rabbitmq.destination.routing_key\":\"string\",\"messaging.rabbitmq.routing_key\":\"string\",\"messaging.system\":\"string\",\"messaging.url\":\"string\",method:\"string\",\"middleware.name\":\"string\",\"navigation.origin\":\"string\",\"navigation.route.id\":\"string\",\"navigation.type\":\"string\",\"nel.elapsed_time\":\"integer\",\"nel.phase\":\"string\",\"nel.referrer\":\"string\",\"nel.sampling_fraction\":\"double\",\"nel.sampling_function\":\"double\",\"nel.type\":\"string\",\"network.connection.effective_type\":\"string\",\"network.connection.rtt\":\"integer\",\"network.connection.type\":\"string\",\"network.local.address\":\"string\",\"network.local.port\":\"integer\",\"network.peer.address\":\"string\",\"network.peer.port\":\"integer\",\"network.protocol.name\":\"string\",\"network.protocol.version\":\"string\",\"network.transport\":\"string\",\"network.type\":\"string\",\"net.host.ip\":\"string\",\"net.host.name\":\"string\",\"net.host.port\":\"integer\",\"net.peer.ip\":\"string\",\"net.peer.name\":\"string\",\"net.peer.port\":\"integer\",\"net.protocol.name\":\"string\",\"net.protocol.version\":\"string\",\"net.sock.family\":\"string\",\"net.sock.host.addr\":\"string\",\"net.sock.host.port\":\"integer\",\"net.sock.peer.addr\":\"string\",\"net.sock.peer.name\":\"string\",\"net.sock.peer.port\":\"integer\",\"net.transport\":\"string\",\"os.build\":\"string\",\"os.build_id\":\"string\",\"os.description\":\"string\",\"os.kernel_version\":\"string\",\"os.name\":\"string\",\"os.raw_description\":\"string\",\"os.rooted\":\"boolean\",\"os.theme\":\"string\",\"os.type\":\"string\",\"os.version\":\"string\",\"otel.kind\":\"string\",\"otel.scope.name\":\"string\",\"otel.scope.version\":\"string\",\"otel.status_code\":\"string\",\"otel.status_description\":\"string\",\"params.<key>\":\"string\",\"performance.activationStart\":\"double\",\"performance.timeOrigin\":\"double\",port:\"integer\",previous_route:\"string\",\"process.command_args\":\"string[]\",\"process.executable.name\":\"string\",\"process.pid\":\"integer\",\"process.runtime.description\":\"string\",\"process.runtime.engine.name\":\"string\",\"process.runtime.engine.version\":\"string\",\"process.runtime.name\":\"string\",\"process.runtime.version\":\"string\",profile_id:\"string\",query:\"string\",\"query.<key>\":\"string\",\"react_native.architecture\":\"string\",\"react_native.module.call.count\":\"integer\",\"react_native.module.call.distinct_count\":\"integer\",\"react_native.module.duration.max\":\"double\",\"react_native.module.duration.total\":\"double\",\"react_native.module.error.count\":\"integer\",\"react_native.module.kind\":\"string\",\"react_native.module.method\":\"string\",\"react_native.module.name\":\"string\",\"react_native.module.top.duration\":\"double\",\"react_native.module.top.name\":\"string\",\"react.version\":\"string\",\"redis.command\":\"string\",\"redis.key\":\"string\",release:\"string\",\"remix.action_form_data.<key>\":\"string\",replayId:\"string\",replay_id:\"string\",\"resource.deployment.environment\":\"string\",\"resource.deployment.environment.name\":\"string\",\"resource.render_blocking_status\":\"string\",route:\"string\",\"router.navigation.origin\":\"string\",\"router.navigation.route.id\":\"string\",\"router.navigation.type\":\"string\",\"rpc.grpc.status_code\":\"integer\",\"rpc.method\":\"string\",\"rpc.response.status_code\":\"string\",\"rpc.service\":\"string\",\"rpc.system\":\"string\",\"rpc.system.name\":\"string\",\"runtime.build\":\"string\",\"runtime.name\":\"string\",\"runtime.raw_description\":\"string\",\"runtime.version\":\"string\",\"score.<key>\":\"double\",\"score.ratio.<key>\":\"double\",\"score.total\":\"double\",\"score.weight.<key>\":\"double\",\"sentry.action\":\"string\",\"sentry.browser.name\":\"string\",\"sentry.browser.version\":\"string\",\"sentry.cancellation_reason\":\"string\",\"sentry.category\":\"string\",\"sentry.client_sample_rate\":\"double\",\"sentry.description\":\"string\",\"sentry.dist\":\"string\",\"sentry.domain\":\"string\",\"sentry.dsc.environment\":\"string\",\"sentry.dsc.project_id\":\"string\",\"sentry.dsc.public_key\":\"string\",\"sentry.dsc.release\":\"string\",\"sentry.dsc.sampled\":\"boolean\",\"sentry.dsc.sample_rate\":\"string\",\"sentry.dsc.trace_id\":\"string\",\"sentry.dsc.transaction\":\"string\",\"sentry.environment\":\"string\",\"sentry.event.serialized_breadcrumbs\":\"string\",\"sentry.event.serialized_contexts\":\"string\",\"sentry.event.serialized_extra\":\"string\",\"sentry.event.serialized_meta\":\"string\",\"sentry.exclusive_time\":\"double\",\"sentry.frames.frozen\":\"integer\",\"sentry.frames.slow\":\"integer\",\"sentry.frames.total\":\"integer\",\"sentry.graphql.operation\":\"string\",\"sentry.group\":\"string\",\"sentry.http.prefetch\":\"boolean\",\"sentry.idle_span_finish_reason\":\"string\",\"sentry.is_localhost\":\"boolean\",\"sentry.is_remote\":\"boolean\",\"sentry.kind\":\"string\",\"sentry.link.type\":\"string\",\"sentry.main_thread\":\"boolean\",\"sentry.message.parameter.<key>\":\"string\",\"sentry.message.template\":\"string\",\"sentry.metric.source\":\"string\",\"sentry.mobile\":\"boolean\",\"sentry.module.<key>\":\"string\",\"sentry.nextjs.ssr.function.route\":\"string\",\"sentry.nextjs.ssr.function.type\":\"string\",\"sentry.normalized_db_query\":\"string\",\"sentry.normalized_db_query.hash\":\"string\",\"sentry.normalized_description\":\"string\",\"sentry.observed_timestamp_nanos\":\"string\",\"sentry.op\":\"string\",\"sentry.origin\":\"string\",\"sentry.pageload.span_id\":\"string\",\"sentry.platform\":\"string\",\"sentry.profiler_id\":\"string\",\"sentry.profile_id\":\"string\",\"sentry.relay.ingress\":\"string\",\"sentry.relay.pipeline\":\"string\",\"sentry.release\":\"string\",\"sentry.replay_id\":\"string\",\"sentry.replay_is_buffering\":\"boolean\",\"sentry.report_event\":\"string\",\"sentry.sdk.integrations\":\"string[]\",\"sentry.sdk.name\":\"string\",\"sentry.sdk.version\":\"string\",\"sentry.segment.id\":\"string\",\"sentry.segment_id\":\"string\",\"sentry.segment.name\":\"string\",\"sentry.segment.name.source\":\"string\",\"sentry.server_sample_rate\":\"double\",\"sentry.source\":\"string\",\"sentry.span.source\":\"string\",\"sentry.status\":\"string\",\"sentry.status_code\":\"integer\",\"sentry.status.message\":\"string\",\"sentry.sveltekit.navigation.from\":\"string\",\"sentry.sveltekit.navigation.to\":\"string\",\"sentry.sveltekit.navigation.type\":\"string\",\"sentry.thread.id\":\"integer\",\"sentry.timestamp.sequence\":\"integer\",\"sentry.trace_lifecycle\":\"string\",\"sentry.trace.parent_span_id\":\"string\",\"sentry.trace.status\":\"string\",\"sentry.transaction\":\"string\",\"sentry.user.email\":\"string\",\"sentry.user.geo.city\":\"string\",\"sentry.user.geo.country_code\":\"string\",\"sentry.user.geo.region\":\"string\",\"sentry.user.geo.subdivision\":\"string\",\"sentry.user.id\":\"string\",\"sentry.user.ip\":\"string\",\"sentry.user.username\":\"string\",\"server.address\":\"string\",\"server.ext.type\":\"string\",server_name:\"string\",\"server.port\":\"integer\",\"service.name\":\"string\",\"service.version\":\"string\",\"session.id\":\"string\",stall_percentage:\"double\",stall_total_time:\"double\",\"starlette.middleware_name\":\"string\",\"starlite.middleware_name\":\"string\",\"state.type\":\"string\",\"subprocess.pid\":\"integer\",\"sveltekit.load.environment\":\"string\",\"sveltekit.load.node_id\":\"string\",\"sveltekit.load.node_type\":\"string\",\"sveltekit.tracing.original_name\":\"string\",\"thread.id\":\"integer\",\"thread.name\":\"string\",\"timber.tag\":\"string\",time_to_full_display:\"double\",time_to_initial_display:\"double\",transaction:\"string\",\"trpc.procedure_path\":\"string\",\"trpc.procedure_type\":\"string\",ttfb:\"double\",\"ttfb.requestTime\":\"double\",\"turbo_modules.total_call_count\":\"integer\",\"turbo_modules.total_duration_ms\":\"double\",\"turbo_modules.total_error_count\":\"integer\",\"turbo_modules.unique_methods\":\"integer\",\"turbo_module.arch\":\"string\",\"turbo_module.method\":\"string\",\"turbo_module.name\":\"string\",\"turbo_module.top_module\":\"string\",\"turbo_module.top_module_duration_ms\":\"double\",\"turbo_module.total_call_count\":\"integer\",\"turbo_module.total_duration_ms\":\"double\",\"turbo_module.total_error_count\":\"integer\",\"turbo_module.unique_methods\":\"integer\",type:\"string\",\"ui.component_name\":\"string\",\"ui.contributes_to_ttfd\":\"boolean\",\"ui.contributes_to_ttid\":\"boolean\",\"ui.element.height\":\"integer\",\"ui.element.id\":\"string\",\"ui.element.identifier\":\"string\",\"ui.element.load_time\":\"double\",\"ui.element.paint_type\":\"string\",\"ui.element.render_time\":\"double\",\"ui.element.type\":\"string\",\"ui.element.url\":\"string\",\"ui.element.width\":\"integer\",url:\"string\",\"url.domain\":\"string\",\"url.fragment\":\"string\",\"url.full\":\"string\",\"url.path\":\"string\",\"url.path.parameter.<key>\":\"string\",\"url.path.params.<key>\":\"string\",\"url.port\":\"integer\",\"url.query\":\"string\",\"url.same_origin\":\"boolean\",\"url.scheme\":\"string\",\"url.template\":\"string\",\"user_agent.original\":\"string\",\"user.email\":\"string\",\"user.full_name\":\"string\",\"user.geo.city\":\"string\",\"user.geo.country_code\":\"string\",\"user.geo.region\":\"string\",\"user.geo.subdivision\":\"string\",\"user.hash\":\"string\",\"user.id\":\"string\",\"user.ip_address\":\"string\",\"user.name\":\"string\",\"user.roles\":\"string[]\",\"vercel.ai.telemetry.metadata.<key>\":\"string\",\"vercel.branch\":\"string\",\"vercel.build_id\":\"string\",\"vercel.deployment_id\":\"string\",\"vercel.destination\":\"string\",\"vercel.edge_type\":\"string\",\"vercel.entrypoint\":\"string\",\"vercel.execution_region\":\"string\",\"vercel.id\":\"string\",\"vercel.ja3_digest\":\"string\",\"vercel.ja4_digest\":\"string\",\"vercel.log_type\":\"string\",\"vercel.path\":\"string\",\"vercel.project_id\":\"string\",\"vercel.project_name\":\"string\",\"vercel.proxy.cache_id\":\"string\",\"vercel.proxy.client_ip\":\"string\",\"vercel.proxy.host\":\"string\",\"vercel.proxy.lambda_region\":\"string\",\"vercel.proxy.method\":\"string\",\"vercel.proxy.path\":\"string\",\"vercel.proxy.path_type\":\"string\",\"vercel.proxy.path_type_variant\":\"string\",\"vercel.proxy.referer\":\"string\",\"vercel.proxy.region\":\"string\",\"vercel.proxy.response_byte_size\":\"integer\",\"vercel.proxy.scheme\":\"string\",\"vercel.proxy.status_code\":\"integer\",\"vercel.proxy.timestamp\":\"integer\",\"vercel.proxy.user_agent\":\"string[]\",\"vercel.proxy.vercel_cache\":\"string\",\"vercel.proxy.vercel_id\":\"string\",\"vercel.proxy.waf_action\":\"string\",\"vercel.proxy.waf_rule_id\":\"string\",\"vercel.request_id\":\"string\",\"vercel.source\":\"string\",\"vercel.status_code\":\"integer\"},t_={address:{brief:\"The destination hostname or IP address for a TCP connection.\",type:\"string\",keys:[\"server.address\",\"address\",\"http.server_name\",\"net.host.name\",\"server_name\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:\"example.com\",examples:[\"example.com\"],deprecation:{replacement:\"server.address\",reason:\"Old namespace-less attribute, to be replaced with server.address for span-first future\",status:\"backfill\"},aliases:[\"server.address\",\"http.server_name\",\"net.host.name\",\"http.host\",\"server_name\",\"net.peer.name\"],changelog:[{version:\"0.24.0\",prs:[647],description:\"Added server_name as an alias\"},{version:\"0.21.0\",prs:[588,602],description:\"Added net.peer.name as an alias\"},{version:\"0.19.0\",prs:[534],description:\"Added address attribute\"}]},\"ai.citations\":{brief:\"References or sources cited by the AI model in its response.\",type:\"string[]\",keys:[\"ai.citations\"],applyScrubbing:{key:\"auto\"},isInOtel:!1,visibility:\"public\",example:[\"Citation 1\",\"Citation 2\"],deprecation:{},changelog:[{version:\"0.5.0\",prs:[264]},{version:\"0.1.0\",prs:[55]}]},\"ai.completion_tokens.used\":{brief:\"The number of tokens used to respond to the message.\",type:\"integer\",keys:[\"gen_ai.usage.output_tokens\",\"ai.completion_tokens.used\",\"gen_ai.usage.completion_tokens\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:10,deprecation:{replacement:\"gen_ai.usage.output_tokens\",status:\"backfill\"},aliases:[\"gen_ai.usage.output_tokens\",\"gen_ai.usage.completion_tokens\"],changelog:[{version:\"0.4.0\",prs:[228]},{version:\"0.1.0\",prs:[57,61]},{version:\"0.0.0\"}]},\"ai.documents\":{brief:\"Documents or content chunks used as context for the AI model.\",type:\"string[]\",keys:[\"ai.documents\"],applyScrubbing:{key:\"auto\"},isInOtel:!1,visibility:\"public\",example:[\"document1.txt\",\"document2.pdf\"],deprecation:{},changelog:[{version:\"0.5.0\",prs:[264]},{version:\"0.1.0\",prs:[55]}]},\"ai.finish_reason\":{brief:\"The reason why the model stopped generating.\",type:\"string\",keys:[\"gen_ai.response.finish_reasons\",\"ai.finish_reason\",\"gen_ai.response.finish_reason\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:\"COMPLETE\",deprecation:{replacement:\"gen_ai.response.finish_reasons\",status:\"backfill\"},aliases:[\"gen_ai.response.finish_reasons\"],changelog:[{version:\"0.1.0\",prs:[55,57,61,108,127]}]},\"ai.frequency_penalty\":{brief:\"Used to reduce repetitiveness of generated tokens. The higher the value, the stronger a penalty is applied to previously present tokens, proportional to how many times they have already appeared in the prompt or prior generation.\",type:\"double\",keys:[\"gen_ai.request.frequency_penalty\",\"ai.frequency_penalty\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:.5,deprecation:{replacement:\"gen_ai.request.frequency_penalty\",status:\"backfill\"},aliases:[\"gen_ai.request.frequency_penalty\"],changelog:[{version:\"0.4.0\",prs:[228]},{version:\"0.1.0\",prs:[55,57,61,108]}]},\"ai.function_call\":{brief:\"For an AI model call, the function that was called. This is deprecated for OpenAI, and replaced by tool_calls\",type:\"string\",keys:[\"gen_ai.tool.name\",\"ai.function_call\",\"mcp.tool.name\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:\"function_name\",deprecation:{replacement:\"gen_ai.tool.name\",status:\"backfill\"},aliases:[\"gen_ai.tool.name\",\"mcp.tool.name\"],changelog:[{version:\"0.1.0\",prs:[55,57,61,108]}]},\"ai.generation_id\":{brief:\"Unique identifier for the completion.\",type:\"string\",keys:[\"gen_ai.response.id\",\"ai.generation_id\",\"ai.response.id\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:\"gen_123abc\",deprecation:{replacement:\"gen_ai.response.id\",status:\"backfill\"},aliases:[\"gen_ai.response.id\",\"ai.response.id\"],changelog:[{version:\"0.21.0\",prs:[583],description:\"Added ai.response.id as an alias\"},{version:\"0.1.0\",prs:[55,57,61,108,127]}]},\"ai.input_messages\":{brief:\"The input messages sent to the model\",type:\"string\",keys:[\"gen_ai.input.messages\",\"ai.input_messages\",\"ai.prompt\",\"ai.prompt.messages\",\"ai.texts\",\"gen_ai.prompt\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:'[{\"role\": \"user\", \"message\": \"hello\"}]',deprecation:{replacement:\"gen_ai.input.messages\",status:\"backfill\"},aliases:[\"gen_ai.request.messages\"],changelog:[{version:\"0.1.0\",prs:[65,119]},{version:\"0.0.0\"}]},\"ai.is_search_required\":{brief:\"Boolean indicating if the model needs to perform a search.\",type:\"boolean\",keys:[\"ai.is_search_required\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:!1,deprecation:{},changelog:[{version:\"0.5.0\",prs:[264]},{version:\"0.1.0\",prs:[55]}]},\"ai.metadata\":{brief:\"Extra metadata passed to an AI pipeline step.\",type:\"string\",keys:[\"ai.metadata\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:'{\"user_id\": 123, \"session_id\": \"abc123\"}',deprecation:{},changelog:[{version:\"0.5.0\",prs:[264]},{version:\"0.1.0\",prs:[55,127]}]},\"ai.model.id\":{brief:\"The id of the model used by the Vercel AI SDK.\",type:\"string\",keys:[\"gen_ai.request.model\",\"ai.model.id\",\"ai.model_id\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:\"gpt-4o\",examples:[\"gpt-4o\"],deprecation:{replacement:\"gen_ai.request.model\",reason:\"This attribute is being deprecated in favor of gen_ai.request.model.\",status:\"backfill\"},aliases:[\"gen_ai.request.model\",\"ai.model_id\"],changelog:[{version:\"0.21.0\",prs:[583],description:\"Added ai.model.id attribute\"}]},\"ai.model_id\":{brief:\"The vendor-specific ID of the model used.\",type:\"string\",keys:[\"gen_ai.request.model\",\"ai.model.id\",\"ai.model_id\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:\"gpt-4\",deprecation:{replacement:\"gen_ai.request.model\",status:\"backfill\"},aliases:[\"gen_ai.request.model\",\"ai.model.id\"],changelog:[{version:\"0.21.0\",prs:[583],description:\"Added ai.model.id as an alias\"},{version:\"0.1.0\",prs:[57,61,127]},{version:\"0.0.0\"}]},\"ai.model.provider\":{brief:\"The provider of the model.\",type:\"string\",keys:[\"gen_ai.provider.name\",\"ai.model.provider\",\"gen_ai.system\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:\"openai\",deprecation:{replacement:\"gen_ai.provider.name\",status:\"backfill\"},aliases:[\"gen_ai.provider.name\",\"gen_ai.system\"],changelog:[{version:\"0.4.0\",prs:[253]},{version:\"0.1.0\",prs:[57,61,108,127]}]},\"ai.pipeline.name\":{brief:\"The name of the AI pipeline.\",type:\"string\",keys:[\"gen_ai.pipeline.name\",\"ai.pipeline.name\",\"langchain.chain.name\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:\"Autofix Pipeline\",deprecation:{replacement:\"gen_ai.pipeline.name\",status:\"backfill\"},aliases:[\"gen_ai.pipeline.name\",\"langchain.chain.name\"],changelog:[{version:\"0.22.0\",prs:[599],description:\"Added langchain.chain.name as an alias\"},{version:\"0.1.0\",prs:[53,76,108,127]}]},\"ai.preamble\":{brief:\"For an AI model call, the preamble parameter. Preambles are a part of the prompt used to adjust the model's overall behavior and conversation style.\",type:\"string\",keys:[\"gen_ai.system_instructions\",\"ai.preamble\",\"gen_ai.system.message\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:\"You are now a clown.\",deprecation:{replacement:\"gen_ai.system_instructions\",status:\"backfill\"},aliases:[\"gen_ai.system_instructions\"],changelog:[{version:\"0.5.0\",prs:[264]},{version:\"0.1.0\",prs:[55]}]},\"ai.presence_penalty\":{brief:\"Used to reduce repetitiveness of generated tokens. Similar to frequency_penalty, except that this penalty is applied equally to all tokens that have already appeared, regardless of their exact frequencies.\",type:\"double\",keys:[\"gen_ai.request.presence_penalty\",\"ai.presence_penalty\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:.5,deprecation:{replacement:\"gen_ai.request.presence_penalty\",status:\"backfill\"},aliases:[\"gen_ai.request.presence_penalty\"],changelog:[{version:\"0.4.0\",prs:[228]},{version:\"0.1.0\",prs:[55,57,61,108]}]},\"ai.prompt\":{brief:\"The prompt passed to the Vercel AI SDK, as a stringified object.\",type:\"string\",keys:[\"gen_ai.input.messages\",\"ai.input_messages\",\"ai.prompt\",\"ai.prompt.messages\",\"ai.texts\",\"gen_ai.prompt\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:'{\"prompt\":\"What is the weather in Paris?\"}',examples:['{\"prompt\":\"What is the weather in Paris?\"}'],deprecation:{replacement:\"gen_ai.input.messages\",reason:\"This attribute is being deprecated in favor of gen_ai.input.messages.\",status:\"backfill\"},aliases:[\"gen_ai.input.messages\",\"ai.texts\",\"ai.prompt.messages\",\"gen_ai.prompt\"],changelog:[{version:\"0.21.0\",prs:[583],description:\"Added ai.prompt attribute\"}]},\"ai.prompt.messages\":{brief:\"The input messages sent to the AI model.\",type:\"string\",keys:[\"gen_ai.input.messages\",\"ai.input_messages\",\"ai.prompt\",\"ai.prompt.messages\",\"ai.texts\",\"gen_ai.prompt\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:'[{\"role\": \"user\", \"message\": \"hello\"}]',deprecation:{replacement:\"gen_ai.input.messages\",status:\"backfill\"},aliases:[\"gen_ai.input.messages\",\"ai.texts\",\"gen_ai.prompt\",\"ai.prompt\"],changelog:[{version:\"0.21.0\",prs:[583],description:\"Added ai.prompt as an alias\"},{version:\"0.19.0\",prs:[498],description:\"Added ai.prompt.messages attribute\"}]},\"ai.prompt_tokens.used\":{brief:\"The number of tokens used to process just the prompt.\",type:\"integer\",keys:[\"gen_ai.usage.input_tokens\",\"ai.prompt_tokens.used\",\"gen_ai.usage.prompt_tokens\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:20,deprecation:{replacement:\"gen_ai.usage.input_tokens\",status:\"backfill\"},aliases:[\"gen_ai.usage.prompt_tokens\",\"gen_ai.usage.input_tokens\"],changelog:[{version:\"0.4.0\",prs:[228]},{version:\"0.1.0\",prs:[57,61]},{version:\"0.0.0\"}]},\"ai.prompt.tools\":{brief:\"The tools made available to the model, as an array of stringified tool definitions.\",type:\"string[]\",keys:[\"gen_ai.tool.definitions\",\"ai.prompt.tools\",\"ai.tools\",\"gen_ai.request.available_tools\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:['{\"type\":\"function\",\"name\":\"get_weather\"}'],examples:[['{\"type\":\"function\",\"name\":\"get_weather\"}']],deprecation:{replacement:\"gen_ai.tool.definitions\",reason:\"This attribute is being deprecated in favor of gen_ai.tool.definitions.\",status:\"backfill\"},changelog:[{version:\"0.21.0\",prs:[583],description:\"Added ai.prompt.tools attribute\"}]},\"ai.raw_prompting\":{brief:\"When enabled, the user\\u2019s prompt will be sent to the model without any pre-processing.\",type:\"boolean\",keys:[\"ai.raw_prompting\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:!0,deprecation:{},changelog:[{version:\"0.5.0\",prs:[264]},{version:\"0.1.0\",prs:[55]}]},\"ai.responses\":{brief:\"The response messages sent back by the AI model.\",type:\"string[]\",keys:[\"gen_ai.output.messages\",\"ai.response.text\",\"ai.response.toolCalls\",\"ai.responses\",\"ai.tool_calls\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:[\"hello\",\"world\"],deprecation:{replacement:\"gen_ai.output.messages\",status:\"backfill\"},changelog:[{version:\"0.1.0\",prs:[65,127]},{version:\"0.0.0\"}]},\"ai.response_format\":{brief:\"For an AI model call, the format of the response\",type:\"string\",keys:[\"ai.response_format\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:\"json_object\",deprecation:{},changelog:[{version:\"0.5.0\",prs:[264]},{version:\"0.1.0\",prs:[55,127]}]},\"ai.response.id\":{brief:\"The id of the response returned by the model.\",type:\"string\",keys:[\"gen_ai.response.id\",\"ai.generation_id\",\"ai.response.id\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:\"chatcmpl-BuKJgVSKAMTUYbBSjHTMUuNGKzOPY\",examples:[\"chatcmpl-BuKJgVSKAMTUYbBSjHTMUuNGKzOPY\"],deprecation:{replacement:\"gen_ai.response.id\",reason:\"This attribute is being deprecated in favor of gen_ai.response.id.\",status:\"backfill\"},aliases:[\"gen_ai.response.id\",\"ai.generation_id\"],changelog:[{version:\"0.21.0\",prs:[583],description:\"Added ai.response.id attribute\"}]},\"ai.response.model\":{brief:\"The id of the model that produced the response.\",type:\"string\",keys:[\"gen_ai.response.model\",\"ai.response.model\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:\"gpt-4o-2024-08-06\",examples:[\"gpt-4o-2024-08-06\"],deprecation:{replacement:\"gen_ai.response.model\",reason:\"This attribute is being deprecated in favor of gen_ai.response.model.\",status:\"backfill\"},aliases:[\"gen_ai.response.model\"],changelog:[{version:\"0.21.0\",prs:[583],description:\"Added ai.response.model attribute\"}]},\"ai.response.object\":{brief:\"The type of the object returned by the model.\",type:\"string\",keys:[\"ai.response.object\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:\"chat.completion\",examples:[\"chat.completion\"],deprecation:{reason:\"This attribute is deprecated. The Sentry conventions have no replacement for the raw Vercel AI response object type.\"},changelog:[{version:\"0.21.0\",prs:[583],description:\"Added ai.response.object attribute\"}]},\"ai.response.text\":{brief:\"The text response from the AI model.\",type:\"string\",keys:[\"gen_ai.output.messages\",\"ai.response.text\",\"ai.response.toolCalls\",\"ai.responses\",\"ai.tool_calls\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:\"The weather in Paris is currently rainy.\",deprecation:{replacement:\"gen_ai.output.messages\",status:\"backfill\"},aliases:[\"gen_ai.output.messages\",\"ai.response.toolCalls\"],changelog:[{version:\"0.19.0\",prs:[498],description:\"Added ai.response.text attribute\"}]},\"ai.response.timestamp\":{brief:\"The ISO 8601 timestamp at which the response was produced.\",type:\"string\",keys:[\"ai.response.timestamp\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:\"2026-02-19T15:32:11.000Z\",examples:[\"2026-02-19T15:32:11.000Z\"],deprecation:{reason:\"This attribute is deprecated. The span start and end timestamps carry the same information.\"},changelog:[{version:\"0.21.0\",prs:[583],description:\"Added ai.response.timestamp attribute\"}]},\"ai.response.toolCalls\":{brief:\"The tool calls in the AI model response.\",type:\"string\",keys:[\"gen_ai.output.messages\",\"ai.response.text\",\"ai.response.toolCalls\",\"ai.responses\",\"ai.tool_calls\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:'[{\"name\": \"get_weather\", \"arguments\": {\"location\": \"Paris\"}}]',deprecation:{replacement:\"gen_ai.output.messages\",status:\"backfill\"},aliases:[\"gen_ai.output.messages\",\"ai.response.text\"],changelog:[{version:\"0.19.0\",prs:[498],description:\"Added ai.response.toolCalls attribute\"}]},\"ai.schema\":{brief:\"The stringified JSON schema the model output must conform to.\",type:\"string\",keys:[\"ai.schema\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:'{\"type\":\"object\",\"properties\":{\"city\":{\"type\":\"string\"}}}',examples:['{\"type\":\"object\",\"properties\":{\"city\":{\"type\":\"string\"}}}'],deprecation:{reason:\"This attribute is deprecated. The Sentry conventions have no replacement for the requested output schema.\"},changelog:[{version:\"0.21.0\",prs:[583],description:\"Added ai.schema attribute\"}]},\"ai.search_queries\":{brief:\"Queries used to search for relevant context or documents.\",type:\"string[]\",keys:[\"ai.search_queries\"],applyScrubbing:{key:\"auto\"},isInOtel:!1,visibility:\"public\",example:[\"climate change effects\",\"renewable energy\"],deprecation:{},changelog:[{version:\"0.5.0\",prs:[264]},{version:\"0.1.0\",prs:[55]}]},\"ai.search_results\":{brief:\"Results returned from search queries for context.\",type:\"string[]\",keys:[\"ai.search_results\"],applyScrubbing:{key:\"auto\"},isInOtel:!1,visibility:\"public\",example:[\"search_result_1, search_result_2\"],deprecation:{},changelog:[{version:\"0.5.0\",prs:[264]},{version:\"0.1.0\",prs:[55]}]},\"ai.seed\":{brief:\"The seed, ideally models given the same seed and same other parameters will produce the exact same output.\",type:\"string\",keys:[\"gen_ai.request.seed\",\"ai.seed\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:\"1234567890\",deprecation:{replacement:\"gen_ai.request.seed\",status:\"backfill\"},aliases:[\"gen_ai.request.seed\"],changelog:[{version:\"0.1.0\",prs:[55,57,61,108,127]}]},\"ai.streaming\":{brief:\"Whether the request was streamed back.\",type:\"boolean\",keys:[\"gen_ai.response.streaming\",\"ai.streaming\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:!0,deprecation:{replacement:\"gen_ai.response.streaming\",status:\"backfill\"},aliases:[\"gen_ai.response.streaming\"],changelog:[{version:\"0.1.0\",prs:[76,108]},{version:\"0.0.0\"}]},\"ai.tags\":{brief:\"Tags that describe an AI pipeline step.\",type:\"string\",keys:[\"ai.tags\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:'{\"executed_function\": \"add_integers\"}',deprecation:{},changelog:[{version:\"0.5.0\",prs:[264]},{version:\"0.1.0\",prs:[55,127]}]},\"ai.temperature\":{brief:\"For an AI model call, the temperature parameter. Temperature essentially means how random the output will be.\",type:\"double\",keys:[\"gen_ai.request.temperature\",\"ai.temperature\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:.1,deprecation:{replacement:\"gen_ai.request.temperature\",status:\"backfill\"},aliases:[\"gen_ai.request.temperature\"],changelog:[{version:\"0.4.0\",prs:[228]},{version:\"0.1.0\",prs:[55,57,61,108]}]},\"ai.texts\":{brief:\"Raw text inputs provided to the model.\",type:\"string[]\",keys:[\"gen_ai.input.messages\",\"ai.input_messages\",\"ai.prompt\",\"ai.prompt.messages\",\"ai.texts\",\"gen_ai.prompt\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:[\"Hello, how are you?\",\"What is the capital of France?\"],deprecation:{replacement:\"gen_ai.input.messages\",status:\"backfill\"},aliases:[\"gen_ai.input.messages\",\"ai.prompt.messages\",\"gen_ai.prompt\",\"ai.prompt\"],changelog:[{version:\"0.21.0\",prs:[583],description:\"Added ai.prompt as an alias\"},{version:\"0.5.0\",prs:[264]},{version:\"0.1.0\",prs:[55]}]},\"ai.toolCall.args\":{brief:\"The arguments of the tool call.\",type:\"string\",keys:[\"gen_ai.tool.call.arguments\",\"ai.toolCall.args\",\"gen_ai.tool.input\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:'{\"location\": \"Paris\"}',deprecation:{replacement:\"gen_ai.tool.call.arguments\",status:\"backfill\"},aliases:[\"gen_ai.tool.call.arguments\",\"gen_ai.tool.input\"],changelog:[{version:\"0.19.0\",prs:[498],description:\"Added ai.toolCall.args attribute\"}]},\"ai.toolCall.result\":{brief:\"The result of the tool call.\",type:\"string\",keys:[\"gen_ai.tool.call.result\",\"ai.toolCall.result\",\"anthropic.tool_result.content\",\"gen_ai.tool.message\",\"gen_ai.tool.output\",\"mcp.tool.result.content\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:\"rainy, 57\\xB0F\",deprecation:{replacement:\"gen_ai.tool.call.result\",status:\"backfill\"},aliases:[\"gen_ai.tool.call.result\",\"gen_ai.tool.output\",\"gen_ai.tool.message\",\"mcp.tool.result.content\",\"anthropic.tool_result.content\"],changelog:[{version:\"0.19.0\",prs:[498],description:\"Added ai.toolCall.result attribute\"}]},\"ai.tools\":{brief:\"For an AI model call, the functions that are available\",type:\"string[]\",keys:[\"gen_ai.tool.definitions\",\"ai.prompt.tools\",\"ai.tools\",\"gen_ai.request.available_tools\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:[\"function_1\",\"function_2\"],deprecation:{replacement:\"gen_ai.tool.definitions\",status:\"backfill\"},changelog:[{version:\"0.1.0\",prs:[55,65,127]}]},\"ai.tool_calls\":{brief:\"For an AI model call, the tool calls that were made.\",type:\"string[]\",keys:[\"gen_ai.output.messages\",\"ai.response.text\",\"ai.response.toolCalls\",\"ai.responses\",\"ai.tool_calls\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:[\"tool_call_1\",\"tool_call_2\"],deprecation:{replacement:\"gen_ai.output.messages\",status:\"backfill\"},changelog:[{version:\"0.1.0\",prs:[55,65]}]},\"ai.top_k\":{brief:\"Limits the model to only consider the K most likely next tokens, where K is an integer (e.g., top_k=20 means only the 20 highest probability tokens are considered).\",type:\"integer\",keys:[\"gen_ai.request.top_k\",\"ai.top_k\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:35,deprecation:{replacement:\"gen_ai.request.top_k\",status:\"backfill\"},aliases:[\"gen_ai.request.top_k\"],changelog:[{version:\"0.4.0\",prs:[228]},{version:\"0.1.0\",prs:[55,57,61,108]}]},\"ai.top_p\":{brief:\"Limits the model to only consider tokens whose cumulative probability mass adds up to p, where p is a float between 0 and 1 (e.g., top_p=0.7 means only tokens that sum up to 70% of the probability mass are considered).\",type:\"double\",keys:[\"gen_ai.request.top_p\",\"ai.top_p\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:.7,deprecation:{replacement:\"gen_ai.request.top_p\",status:\"backfill\"},aliases:[\"gen_ai.request.top_p\"],changelog:[{version:\"0.4.0\",prs:[228]},{version:\"0.1.0\",prs:[55,57,61,108]}]},\"ai.total_cost\":{brief:\"The total cost for the tokens used.\",type:\"double\",keys:[\"gen_ai.cost.total_tokens\",\"ai.total_cost\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:12.34,deprecation:{replacement:\"gen_ai.cost.total_tokens\",status:\"backfill\"},aliases:[\"gen_ai.cost.total_tokens\"],changelog:[{version:\"0.5.0\",prs:[264]},{version:\"0.4.0\",prs:[228]},{version:\"0.1.0\",prs:[53]}],searchAlias:{name:\"ai.total_cost\",type:\"currency\"}},\"ai.total_tokens.used\":{brief:\"The total number of tokens used to process the prompt.\",type:\"integer\",keys:[\"gen_ai.usage.total_tokens\",\"ai.total_tokens.used\",\"ai.usage.tokens\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:30,deprecation:{replacement:\"gen_ai.usage.total_tokens\",status:\"backfill\"},aliases:[\"gen_ai.usage.total_tokens\",\"ai.usage.tokens\"],changelog:[{version:\"0.21.0\",prs:[583],description:\"Added ai.usage.tokens as an alias\"},{version:\"0.4.0\",prs:[228]},{version:\"0.1.0\",prs:[57,61,108]},{version:\"0.0.0\"}]},\"ai.usage.tokens\":{brief:\"The total number of tokens used for the request and the response.\",type:\"integer\",keys:[\"gen_ai.usage.total_tokens\",\"ai.total_tokens.used\",\"ai.usage.tokens\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:150,examples:[150],deprecation:{replacement:\"gen_ai.usage.total_tokens\",reason:\"This attribute is being deprecated in favor of gen_ai.usage.total_tokens.\",status:\"backfill\"},aliases:[\"gen_ai.usage.total_tokens\",\"ai.total_tokens.used\"],changelog:[{version:\"0.21.0\",prs:[583],description:\"Added ai.usage.tokens attribute\"}]},\"ai.values\":{brief:\"The stringified values produced by a Vercel AI SDK object or array generation.\",type:\"string\",keys:[\"ai.values\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:'[{\"city\":\"Paris\"}]',examples:['[{\"city\":\"Paris\"}]'],deprecation:{reason:\"This attribute is deprecated. Use gen_ai.output.messages for model output instead.\"},changelog:[{version:\"0.21.0\",prs:[583],description:\"Added ai.values attribute\"}]},\"ai.warnings\":{brief:\"Warning messages generated during model execution.\",type:\"string[]\",keys:[\"ai.warnings\"],applyScrubbing:{key:\"auto\"},isInOtel:!1,visibility:\"public\",example:[\"Token limit exceeded\"],deprecation:{},changelog:[{version:\"0.5.0\",prs:[264]},{version:\"0.1.0\",prs:[55]}]},\"angular.version\":{brief:\"The version of the Angular framework\",type:\"string\",keys:[\"angular.version\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:\"17.1.0\",changelog:[{version:\"0.7.0\",prs:[367],description:\"Added angular.version attribute\"}]},\"anthropic.tool_result.content\":{brief:\"The content of the tool result.\",type:\"string\",keys:[\"gen_ai.tool.call.result\",\"ai.toolCall.result\",\"anthropic.tool_result.content\",\"gen_ai.tool.message\",\"gen_ai.tool.output\",\"mcp.tool.result.content\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:\"rainy, 57\\xB0F\",examples:[\"rainy, 57\\xB0F\"],deprecation:{replacement:\"gen_ai.tool.call.result\",reason:\"Use gen_ai.tool.call.result for tool results.\",status:\"backfill\"},aliases:[\"gen_ai.tool.call.result\",\"gen_ai.tool.output\",\"gen_ai.tool.message\",\"mcp.tool.result.content\",\"ai.toolCall.result\"],changelog:[{version:\"0.26.0\",prs:[660],description:\"Added anthropic.tool_result.content attribute, deprecated in favor of gen_ai.tool.call.result\"}]},\"app.app_build\":{brief:\"Internal build identifier, as it appears on the platform.\",type:\"string\",keys:[\"app.build\",\"app.app_build\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:\"1\",deprecation:{replacement:\"app.build\",reason:\"Deprecated in favor of app.build\",status:\"backfill\"},aliases:[\"app.build\"],changelog:[{version:\"0.5.0\",prs:[296],description:\"Added and deprecated app.app_build in favor of app.build\"}]},\"app.app_identifier\":{brief:\"Version-independent application identifier, often a dotted bundle ID.\",type:\"string\",keys:[\"app.identifier\",\"app.app_identifier\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:\"com.example.myapp\",deprecation:{replacement:\"app.identifier\",reason:\"Deprecated in favor of app.identifier\",status:\"backfill\"},aliases:[\"app.identifier\"],changelog:[{version:\"0.5.0\",prs:[296],description:\"Added and deprecated app.app_identifier in favor of app.identifier\"}]},\"app.app_name\":{brief:\"Human readable application name, as it appears on the platform.\",type:\"string\",keys:[\"app.name\",\"app.app_name\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:\"My App\",deprecation:{replacement:\"app.name\",reason:\"Deprecated in favor of app.name\",status:\"backfill\"},aliases:[\"app.name\"],changelog:[{version:\"0.5.0\",prs:[296],description:\"Added and deprecated app.app_name in favor of app.name\"}]},\"app.app_start_time\":{brief:\"Formatted UTC timestamp when the user started the application.\",type:\"string\",keys:[\"app.start_time\",\"app.app_start_time\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:\"2025-01-01T00:00:00.000Z\",deprecation:{replacement:\"app.start_time\",reason:\"Deprecated in favor of app.start_time\",status:\"backfill\"},aliases:[\"app.start_time\"],changelog:[{version:\"0.5.0\",prs:[296],description:\"Added and deprecated app.app_start_time in favor of app.start_time\"}]},\"app.app_version\":{brief:\"Human readable application version, as it appears on the platform.\",type:\"string\",keys:[\"app.version\",\"app.app_version\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:\"1.0.0\",deprecation:{replacement:\"app.version\",reason:\"Deprecated in favor of app.version\",status:\"backfill\"},aliases:[\"app.version\"],changelog:[{version:\"0.5.0\",prs:[296],description:\"Added and deprecated app.app_version in favor of app.version\"}]},\"app.build\":{brief:\"Internal build identifier, as it appears on the platform.\",type:\"string\",keys:[\"app.build\",\"app.app_build\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:\"1\",aliases:[\"app.app_build\"],changelog:[{version:\"0.5.0\",prs:[296],description:\"Added app.build attribute\"}]},\"app.identifier\":{brief:\"Version-independent application identifier, often a dotted bundle ID.\",type:\"string\",keys:[\"app.identifier\",\"app.app_identifier\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:\"com.example.myapp\",aliases:[\"app.app_identifier\"],changelog:[{version:\"0.5.0\",prs:[296],description:\"Added app.identifier attribute\"}]},\"app.in_foreground\":{brief:\"Whether the application is currently in the foreground.\",type:\"boolean\",keys:[\"app.in_foreground\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:!0,changelog:[{version:\"0.5.0\",prs:[296],description:\"Added app.in_foreground attribute\"}]},\"app.name\":{brief:\"Human readable application name, as it appears on the platform.\",type:\"string\",keys:[\"app.name\",\"app.app_name\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:\"My App\",aliases:[\"app.app_name\"],changelog:[{version:\"0.5.0\",prs:[296],description:\"Added app.name attribute\"}]},app_start_cold:{brief:\"The duration of a cold app start in milliseconds\",type:\"double\",keys:[\"app.vitals.start.cold.value\",\"app_start_cold\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:1234.56,deprecation:{replacement:\"app.vitals.start.cold.value\",reason:\"Replaced by app.vitals.start.cold.value to align with the app.vitals.* namespace for mobile performance attributes\",status:\"backfill\"},aliases:[\"app.vitals.start.cold.value\"],changelog:[{version:\"0.5.0\",prs:[323],description:\"Added and deprecated in favor of app.vitals.start.cold.value\"}]},\"app.start_time\":{brief:\"Formatted UTC timestamp when the user started the application.\",type:\"string\",keys:[\"app.start_time\",\"app.app_start_time\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:\"2025-01-01T00:00:00.000Z\",aliases:[\"app.app_start_time\"],changelog:[{version:\"0.5.0\",prs:[296],description:\"Added app.start_time attribute\"}]},app_start_type:{brief:\"Mobile app start variant. Either cold or warm.\",type:\"string\",keys:[\"app.vitals.start.type\",\"app_start_type\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:\"cold\",deprecation:{replacement:\"app.vitals.start.type\",reason:\"Replaced by app.vitals.start.type to align with the app.vitals.* namespace for mobile performance attributes\",status:\"backfill\"},aliases:[\"app.vitals.start.type\"],changelog:[{version:\"0.5.0\",prs:[313],description:\"Deprecated in favor of app.vitals.start.type\"},{version:\"0.1.0\",prs:[127]},{version:\"0.0.0\"}]},app_start_warm:{brief:\"The duration of a warm app start in milliseconds\",type:\"double\",keys:[\"app.vitals.start.warm.value\",\"app_start_warm\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:1234.56,deprecation:{replacement:\"app.vitals.start.warm.value\",reason:\"Replaced by app.vitals.start.warm.value to align with the app.vitals.* namespace for mobile performance attributes\",status:\"backfill\"},aliases:[\"app.vitals.start.warm.value\"],changelog:[{version:\"0.5.0\",prs:[323],description:\"Added and deprecated in favor of app.vitals.start.warm.value\"}]},\"app.version\":{brief:\"Human readable application version, as it appears on the platform.\",type:\"string\",keys:[\"app.version\",\"app.app_version\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:\"1.0.0\",aliases:[\"app.app_version\"],changelog:[{version:\"0.5.0\",prs:[296],description:\"Added app.version attribute\"}]},\"app.vitals.frames.delay.value\":{brief:\"The sum of all delayed frame durations in seconds during the lifetime of the span. For more information see [frames delay](https://develop.sentry.dev/sdk/performance/frames-delay/).\",type:\"integer\",keys:[\"app.vitals.frames.delay.value\",\"frames.delay\",\"mobile.frames_delay\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:5,aliases:[\"frames.delay\"],changelog:[{version:\"0.5.0\",prs:[313],description:\"Added app.vitals.frames.delay.value to replace frames.delay\"}]},\"app.vitals.frames.frozen.count\":{brief:\"The number of frozen frames rendered during the lifetime of the span.\",type:\"integer\",keys:[\"app.vitals.frames.frozen.count\",\"frames.frozen\",\"mobile.frozen_frames\",\"sentry.frames.frozen\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:3,aliases:[\"frames.frozen\",\"sentry.frames.frozen\"],changelog:[{version:\"0.19.0\",prs:[500],description:\"Added sentry.frames.frozen as an alias\"},{version:\"0.5.0\",prs:[313],description:\"Added app.vitals.frames.frozen.count to replace frames.frozen\"}]},\"app.vitals.frames.frozen.rate\":{brief:\"The fraction of rendered frames that were frozen, calculated as `app.vitals.frames.frozen.count` divided by `app.vitals.frames.total.count`. This is computed by Relay.\",type:\"double\",keys:[\"app.vitals.frames.frozen.rate\",\"frames_frozen_rate\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:.5,aliases:[\"frames_frozen_rate\"],changelog:[{version:\"0.19.0\",prs:[493],description:\"Added app.vitals.frames.frozen.rate attribute\"}]},\"app.vitals.frames.slow.count\":{brief:\"The number of slow frames rendered during the lifetime of the span.\",type:\"integer\",keys:[\"app.vitals.frames.slow.count\",\"frames.slow\",\"mobile.slow_frames\",\"sentry.frames.slow\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:1,aliases:[\"frames.slow\",\"sentry.frames.slow\"],changelog:[{version:\"0.19.0\",prs:[500],description:\"Added sentry.frames.slow as an alias\"},{version:\"0.5.0\",prs:[313],description:\"Added app.vitals.frames.slow.count to replace frames.slow\"}]},\"app.vitals.frames.slow.rate\":{brief:\"The fraction of rendered frames that were slow, calculated as `app.vitals.frames.slow.count` divided by `app.vitals.frames.total.count`. This is computed by Relay.\",type:\"double\",keys:[\"app.vitals.frames.slow.rate\",\"frames_slow_rate\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:.25,aliases:[\"frames_slow_rate\"],changelog:[{version:\"0.19.0\",prs:[493],description:\"Added app.vitals.frames.slow.rate attribute\"}]},\"app.vitals.frames.total.count\":{brief:\"The number of total frames rendered during the lifetime of the span.\",type:\"integer\",keys:[\"app.vitals.frames.total.count\",\"frames.total\",\"mobile.total_frames\",\"sentry.frames.total\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:60,aliases:[\"frames.total\",\"sentry.frames.total\"],changelog:[{version:\"0.19.0\",prs:[500],description:\"Added sentry.frames.total as an alias\"},{version:\"0.5.0\",prs:[313],description:\"Added app.vitals.frames.total.count to replace frames.total\"}]},\"app.vitals.stall.duration\":{brief:\"The combined duration of all stalls in milliseconds. Only applies to React Native. This is computed by Relay.\",type:\"double\",keys:[\"app.vitals.stall.duration\",\"stall_total_time\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:4e3,aliases:[\"stall_total_time\"],changelog:[{version:\"0.19.0\",prs:[493],description:\"Added app.vitals.stall.duration attribute\"}]},\"app.vitals.stall.percentage\":{brief:\"The fraction of transaction duration during which the app was stalled, between 0.0 and 1.0. For example, 0.8 represents 80%. Only applies to React Native. This is computed by Relay.\",type:\"double\",keys:[\"app.vitals.stall.percentage\",\"stall_percentage\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:.8,aliases:[\"stall_percentage\"],changelog:[{version:\"0.19.0\",prs:[493],description:\"Added app.vitals.stall.percentage attribute\"}]},\"app.vitals.start.cold.value\":{brief:\"The duration of a cold app start in milliseconds\",type:\"double\",keys:[\"app.vitals.start.cold.value\",\"app_start_cold\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:1234.56,aliases:[\"app_start_cold\"],changelog:[{version:\"0.5.0\",prs:[313],description:\"Added app.vitals.start.cold.value attribute\"}]},\"app.vitals.start.prewarmed\":{brief:\"Whether the app start was prewarmed.\",type:\"boolean\",keys:[\"app.vitals.start.prewarmed\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:!0,changelog:[{version:\"0.11.0\",prs:[379],description:\"Added app.vitals.start.prewarmed attribute\"}]},\"app.vitals.start.reason\":{brief:\"The reason that triggered the app start.\",type:\"string\",keys:[\"app.vitals.start.reason\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:\"push\",changelog:[{version:\"0.7.0\",prs:[353],description:\"Added app.vitals.start.reason attribute\"}]},\"app.vitals.start.screen\":{brief:\"The screen that is rendered when the app start is complete. This is the screen the user first sees and can interact with after launch. The absence of this attribute on the app start span indicates a background app start where no UI was rendered.\",type:\"string\",keys:[\"app.vitals.start.screen\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:\"MainActivity\",changelog:[{version:\"0.7.0\",prs:[353],description:\"Added app.vitals.start.screen attribute\"}]},\"app.vitals.start.type\":{brief:\"The type of app start, for example `cold` or `warm`\",type:\"string\",keys:[\"app.vitals.start.type\",\"app_start_type\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:\"cold\",aliases:[\"app_start_type\"],changelog:[{version:\"0.5.0\",prs:[313],description:\"Added app.vitals.start.type attribute\"}]},\"app.vitals.start.warm.value\":{brief:\"The duration of a warm app start in milliseconds\",type:\"double\",keys:[\"app.vitals.start.warm.value\",\"app_start_warm\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:1234.56,aliases:[\"app_start_warm\"],changelog:[{version:\"0.5.0\",prs:[313],description:\"Added app.vitals.start.warm.value attribute\"}]},\"app.vitals.ttfd.value\":{brief:\"The duration of time to full display in milliseconds\",type:\"double\",keys:[\"app.vitals.ttfd.value\",\"time_to_full_display\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:1234.56,aliases:[\"time_to_full_display\"],changelog:[{version:\"0.5.0\",prs:[313],description:\"Added app.vitals.ttfd.value attribute\"}]},\"app.vitals.ttid.value\":{brief:\"The duration of time to initial display in milliseconds\",type:\"double\",keys:[\"app.vitals.ttid.value\",\"time_to_initial_display\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:1234.56,aliases:[\"time_to_initial_display\"],changelog:[{version:\"0.5.0\",prs:[313],description:\"Added app.vitals.ttid.value attribute\"}]},\"art.gc.blocking_count\":{brief:\"Total number of blocking (stop-the-world) garbage collections performed by the Android Runtime\",type:\"integer\",keys:[\"art.gc.blocking_count\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:1,changelog:[{version:\"0.11.0\",prs:[382],description:\"Added art.gc.blocking_count attribute\"}]},\"art.gc.blocking_time\":{brief:\"Total time spent in blocking (stop-the-world) garbage collections by the Android Runtime, in milliseconds\",type:\"double\",keys:[\"art.gc.blocking_time\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:11.873,changelog:[{version:\"0.11.0\",prs:[382],description:\"Added art.gc.blocking_time attribute\"}]},\"art.gc.pre_oome_count\":{brief:\"Total number of garbage collections triggered as a last resort before an OutOfMemoryError by the Android Runtime\",type:\"integer\",keys:[\"art.gc.pre_oome_count\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:0,changelog:[{version:\"0.11.0\",prs:[382],description:\"Added art.gc.pre_oome_count attribute\"}]},\"art.gc.total_count\":{brief:\"Total number of garbage collections performed by the Android Runtime\",type:\"integer\",keys:[\"art.gc.total_count\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:1,changelog:[{version:\"0.11.0\",prs:[382],description:\"Added art.gc.total_count attribute\"}]},\"art.gc.total_time\":{brief:\"Total time spent in garbage collection by the Android Runtime, in milliseconds\",type:\"double\",keys:[\"art.gc.total_time\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:11.807,changelog:[{version:\"0.11.0\",prs:[382],description:\"Added art.gc.total_time attribute\"}]},\"art.gc.waiting_time\":{brief:\"Total time threads spent waiting for garbage collection to complete in the Android Runtime, in milliseconds\",type:\"double\",keys:[\"art.gc.waiting_time\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:8.054,changelog:[{version:\"0.11.0\",prs:[382],description:\"Added art.gc.waiting_time attribute\"}]},\"art.memory.free\":{brief:\"Free memory available to the process as reported by the Android Runtime, in bytes\",type:\"integer\",keys:[\"art.memory.free\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:3181568,changelog:[{version:\"0.11.0\",prs:[382],description:\"Added art.memory.free attribute\"}]},\"art.memory.free_until_gc\":{brief:\"Free memory available before a garbage collection would be triggered by the Android Runtime, in bytes\",type:\"integer\",keys:[\"art.memory.free_until_gc\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:3181568,changelog:[{version:\"0.11.0\",prs:[382],description:\"Added art.memory.free_until_gc attribute\"}]},\"art.memory.free_until_oome\":{brief:\"Free memory available before an OutOfMemoryError would be thrown by the Android Runtime, in bytes\",type:\"integer\",keys:[\"art.memory.free_until_oome\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:196083712,changelog:[{version:\"0.11.0\",prs:[382],description:\"Added art.memory.free_until_oome attribute\"}]},\"art.memory.max\":{brief:\"Maximum memory the process is allowed to use as reported by the Android Runtime, in bytes\",type:\"integer\",keys:[\"art.memory.max\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:201326592,changelog:[{version:\"0.11.0\",prs:[382],description:\"Added art.memory.max attribute\"}]},\"art.memory.total\":{brief:\"Total memory currently allocated to the process by the Android Runtime, in bytes\",type:\"integer\",keys:[\"art.memory.total\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:7774208,changelog:[{version:\"0.11.0\",prs:[382],description:\"Added art.memory.total attribute\"}]},\"aws.cloudwatch.logs.log_group\":{brief:\"The name of the CloudWatch Logs log group\",type:\"string\",keys:[\"aws.cloudwatch.logs.log_group\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:\"/aws/lambda/my-function\",changelog:[{version:\"0.7.0\",prs:[369],description:\"Added aws.cloudwatch.logs.log_group attribute\"}]},\"aws.cloudwatch.logs.log_stream\":{brief:\"The name of the CloudWatch Logs log stream\",type:\"string\",keys:[\"aws.cloudwatch.logs.log_stream\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:\"2024/01/01/[$LATEST]abcdef1234567890\",changelog:[{version:\"0.7.0\",prs:[369],description:\"Added aws.cloudwatch.logs.log_stream attribute\"}]},\"aws.cloudwatch.logs.url\":{brief:\"The URL to the CloudWatch Logs log group\",type:\"string\",keys:[\"aws.cloudwatch.logs.url\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:\"https://console.aws.amazon.com/cloudwatch/home?region=us-east-1#logsV2:log-groups/log-group/my-log-group\",changelog:[{version:\"0.7.0\",prs:[369],description:\"Added aws.cloudwatch.logs.url attribute\"}]},\"aws.dynamodb.attributes_to_get\":{brief:\"The value of the `AttributesToGet` request parameter.\",type:\"string[]\",keys:[\"aws.dynamodb.attributes_to_get\"],applyScrubbing:{key:\"manual\"},isInOtel:!0,visibility:\"public\",example:[\"lives\",\"id\"],examples:[[\"lives\",\"id\"]],changelog:[{version:\"0.27.0\",prs:[672],description:\"Added aws.dynamodb.attributes_to_get attribute\"}]},\"aws.dynamodb.attribute_definitions\":{brief:\"The JSON-serialized value of each item in the `AttributeDefinitions` request field.\",type:\"string[]\",keys:[\"aws.dynamodb.attribute_definitions\"],applyScrubbing:{key:\"manual\"},isInOtel:!0,visibility:\"public\",example:['{ \"AttributeName\": \"string\", \"AttributeType\": \"string\" }'],changelog:[{version:\"0.16.0\",prs:[479],description:\"Added aws.dynamodb.attribute_definitions attribute\"}]},\"aws.dynamodb.consistent_read\":{brief:\"The value of the `ConsistentRead` request parameter.\",type:\"boolean\",keys:[\"aws.dynamodb.consistent_read\"],applyScrubbing:{key:\"manual\"},isInOtel:!0,visibility:\"public\",example:!0,changelog:[{version:\"0.16.0\",prs:[479],description:\"Added aws.dynamodb.consistent_read attribute\"}]},\"aws.dynamodb.consumed_capacity\":{brief:\"The JSON-serialized value of each item in the `ConsumedCapacity` response field.\",type:\"string[]\",keys:[\"aws.dynamodb.consumed_capacity\"],applyScrubbing:{key:\"manual\"},isInOtel:!0,visibility:\"public\",example:['{ \"CapacityUnits\": number, \"GlobalSecondaryIndexes\": { \"string\" : { \"CapacityUnits\": number, \"ReadCapacityUnits\": number, \"WriteCapacityUnits\": number } }, \"LocalSecondaryIndexes\": { \"string\" : { \"CapacityUnits\": number, \"ReadCapacityUnits\": number, \"WriteCapacityUnits\": number } }, \"ReadCapacityUnits\": number, \"Table\": { \"CapacityUnits\": number, \"ReadCapacityUnits\": number, \"WriteCapacityUnits\": number }, \"TableName\": \"string\", \"WriteCapacityUnits\": number }'],changelog:[{version:\"0.16.0\",prs:[479],description:\"Added aws.dynamodb.consumed_capacity attribute\"}]},\"aws.dynamodb.count\":{brief:\"The value of the `Count` response parameter.\",type:\"integer\",keys:[\"aws.dynamodb.count\"],applyScrubbing:{key:\"manual\"},isInOtel:!0,visibility:\"public\",example:10,changelog:[{version:\"0.16.0\",prs:[479],description:\"Added aws.dynamodb.count attribute\"}]},\"aws.dynamodb.exclusive_start_table\":{brief:\"The value of the `ExclusiveStartTableName` request parameter.\",type:\"string\",keys:[\"aws.dynamodb.exclusive_start_table\"],applyScrubbing:{key:\"manual\"},isInOtel:!0,visibility:\"public\",example:\"Users\",changelog:[{version:\"0.16.0\",prs:[479],description:\"Added aws.dynamodb.exclusive_start_table attribute\"}]},\"aws.dynamodb.global_secondary_indexes\":{brief:\"The JSON-serialized value of each item of the `GlobalSecondaryIndexes` request field.\",type:\"string[]\",keys:[\"aws.dynamodb.global_secondary_indexes\"],applyScrubbing:{key:\"manual\"},isInOtel:!0,visibility:\"public\",example:['{ \"IndexName\": \"string\", \"KeySchema\": [ { \"AttributeName\": \"string\", \"KeyType\": \"string\" } ], \"Projection\": { \"NonKeyAttributes\": [ \"string\" ], \"ProjectionType\": \"string\" }, \"ProvisionedThroughput\": { \"ReadCapacityUnits\": number, \"WriteCapacityUnits\": number } }'],changelog:[{version:\"0.16.0\",prs:[479],description:\"Added aws.dynamodb.global_secondary_indexes attribute\"}]},\"aws.dynamodb.global_secondary_index_updates\":{brief:\"The JSON-serialized value of each item in the `GlobalSecondaryIndexUpdates` request field.\",type:\"string[]\",keys:[\"aws.dynamodb.global_secondary_index_updates\"],applyScrubbing:{key:\"manual\"},isInOtel:!0,visibility:\"public\",example:['{ \"Create\": { \"IndexName\": \"string\", \"KeySchema\": [ { \"AttributeName\": \"string\", \"KeyType\": \"string\" } ], \"Projection\": { \"NonKeyAttributes\": [ \"string\" ], \"ProjectionType\": \"string\" }, \"ProvisionedThroughput\": { \"ReadCapacityUnits\": number, \"WriteCapacityUnits\": number } }'],changelog:[{version:\"0.16.0\",prs:[479],description:\"Added aws.dynamodb.global_secondary_index_updates attribute\"}]},\"aws.dynamodb.index_name\":{brief:\"The value of the `IndexName` request parameter.\",type:\"string\",keys:[\"aws.dynamodb.index_name\"],applyScrubbing:{key:\"manual\"},isInOtel:!0,visibility:\"public\",example:\"name_to_group\",changelog:[{version:\"0.16.0\",prs:[479],description:\"Added aws.dynamodb.index_name attribute\"}]},\"aws.dynamodb.item_collection_metrics\":{brief:\"The JSON-serialized value of the `ItemCollectionMetrics` response field.\",type:\"string\",keys:[\"aws.dynamodb.item_collection_metrics\"],applyScrubbing:{key:\"manual\"},isInOtel:!0,visibility:\"public\",example:'{ \"string\" : [ { \"ItemCollectionKey\": { \"string\" : { \"B\": blob, \"BOOL\": boolean, \"BS\": [ blob ], \"L\": [ \"AttributeValue\" ], \"M\": { \"string\" : \"AttributeValue\" }, \"N\": \"string\", \"NS\": [ \"string\" ], \"NULL\": boolean, \"S\": \"string\", \"SS\": [ \"string\" ] } }, \"SizeEstimateRangeGB\": [ number ] } ] }',changelog:[{version:\"0.16.0\",prs:[479],description:\"Added aws.dynamodb.item_collection_metrics attribute\"}]},\"aws.dynamodb.limit\":{brief:\"The value of the `Limit` request parameter.\",type:\"integer\",keys:[\"aws.dynamodb.limit\"],applyScrubbing:{key:\"manual\"},isInOtel:!0,visibility:\"public\",example:10,changelog:[{version:\"0.16.0\",prs:[479],description:\"Added aws.dynamodb.limit attribute\"}]},\"aws.dynamodb.local_secondary_indexes\":{brief:\"The JSON-serialized value of each item of the `LocalSecondaryIndexes` request field.\",type:\"string[]\",keys:[\"aws.dynamodb.local_secondary_indexes\"],applyScrubbing:{key:\"manual\"},isInOtel:!0,visibility:\"public\",example:['{ \"IndexArn\": \"string\", \"IndexName\": \"string\", \"IndexSizeBytes\": number, \"ItemCount\": number, \"KeySchema\": [ { \"AttributeName\": \"string\", \"KeyType\": \"string\" } ], \"Projection\": { \"NonKeyAttributes\": [ \"string\" ], \"ProjectionType\": \"string\" } }'],changelog:[{version:\"0.16.0\",prs:[479],description:\"Added aws.dynamodb.local_secondary_indexes attribute\"}]},\"aws.dynamodb.projection\":{brief:\"The value of the `ProjectionExpression` request parameter.\",type:\"string\",keys:[\"aws.dynamodb.projection\"],applyScrubbing:{key:\"manual\"},isInOtel:!0,visibility:\"public\",example:\"Title, Price, Color\",changelog:[{version:\"0.16.0\",prs:[479],description:\"Added aws.dynamodb.projection attribute\"}]},\"aws.dynamodb.provisioned_read_capacity\":{brief:\"The value of the `ProvisionedThroughput.ReadCapacityUnits` request parameter.\",type:\"double\",keys:[\"aws.dynamodb.provisioned_read_capacity\"],applyScrubbing:{key:\"manual\"},isInOtel:!0,visibility:\"public\",example:1,changelog:[{version:\"0.16.0\",prs:[479],description:\"Added aws.dynamodb.provisioned_read_capacity attribute\"}]},\"aws.dynamodb.provisioned_write_capacity\":{brief:\"The value of the `ProvisionedThroughput.WriteCapacityUnits` request parameter.\",type:\"double\",keys:[\"aws.dynamodb.provisioned_write_capacity\"],applyScrubbing:{key:\"manual\"},isInOtel:!0,visibility:\"public\",example:2,changelog:[{version:\"0.16.0\",prs:[479],description:\"Added aws.dynamodb.provisioned_write_capacity attribute\"}]},\"aws.dynamodb.scanned_count\":{brief:\"The value of the `ScannedCount` response parameter.\",type:\"integer\",keys:[\"aws.dynamodb.scanned_count\"],applyScrubbing:{key:\"manual\"},isInOtel:!0,visibility:\"public\",example:50,changelog:[{version:\"0.16.0\",prs:[479],description:\"Added aws.dynamodb.scanned_count attribute\"}]},\"aws.dynamodb.scan_forward\":{brief:\"The value of the `ScanIndexForward` request parameter.\",type:\"boolean\",keys:[\"aws.dynamodb.scan_forward\"],applyScrubbing:{key:\"manual\"},isInOtel:!0,visibility:\"public\",example:!0,changelog:[{version:\"0.16.0\",prs:[479],description:\"Added aws.dynamodb.scan_forward attribute\"}]},\"aws.dynamodb.segment\":{brief:\"The value of the `Segment` request parameter.\",type:\"integer\",keys:[\"aws.dynamodb.segment\"],applyScrubbing:{key:\"manual\"},isInOtel:!0,visibility:\"public\",example:10,changelog:[{version:\"0.16.0\",prs:[479],description:\"Added aws.dynamodb.segment attribute\"}]},\"aws.dynamodb.select\":{brief:\"The value of the `Select` request parameter.\",type:\"string\",keys:[\"aws.dynamodb.select\"],applyScrubbing:{key:\"manual\"},isInOtel:!0,visibility:\"public\",example:\"ALL_ATTRIBUTES\",changelog:[{version:\"0.16.0\",prs:[479],description:\"Added aws.dynamodb.select attribute\"}]},\"aws.dynamodb.table_count\":{brief:\"The number of items in the `TableNames` response parameter.\",type:\"integer\",keys:[\"aws.dynamodb.table_count\"],applyScrubbing:{key:\"manual\"},isInOtel:!0,visibility:\"public\",example:20,changelog:[{version:\"0.16.0\",prs:[479],description:\"Added aws.dynamodb.table_count attribute\"}]},\"aws.dynamodb.table_names\":{brief:\"The keys in the `RequestItems` object field.\",type:\"string[]\",keys:[\"aws.dynamodb.table_names\"],applyScrubbing:{key:\"manual\"},isInOtel:!0,visibility:\"public\",example:[\"Users\",\"Cats\"],changelog:[{version:\"0.29.0\",prs:[717],description:\"Added additional context on sorting the names\"},{version:\"0.16.0\",prs:[479],description:\"Added aws.dynamodb.table_names attribute\"}],additionalContext:[\"List each table name once, sorted alphabetically, so the same call gets the same value and span description (`DynamoDB.BatchGetItem Cat, Users`), whatever the order of the tables in the request.\"]},\"aws.dynamodb.total_segments\":{brief:\"The value of the `TotalSegments` request parameter.\",type:\"integer\",keys:[\"aws.dynamodb.total_segments\"],applyScrubbing:{key:\"manual\"},isInOtel:!0,visibility:\"public\",example:100,changelog:[{version:\"0.16.0\",prs:[479],description:\"Added aws.dynamodb.total_segments attribute\"}]},\"aws.extended_request_id\":{brief:\"The AWS extended request ID as returned in the response headers.\",type:\"string\",keys:[\"aws.extended_request_id\",\"aws.request.extended_id\"],applyScrubbing:{key:\"manual\"},isInOtel:!0,visibility:\"public\",example:\"wzHcyEWfmOGDIE5QOhTAqFDoDWP3y8IUvpNINCwL9N4TEHbUw0/gZJ+VZTmCNCWR7fezEN3eCiQ=\",aliases:[\"aws.request.extended_id\"],changelog:[{version:\"0.16.0\",prs:[480],description:\"Added aws.extended_request_id attribute\"}]},\"aws.kinesis.stream_name\":{brief:\"The name of the AWS Kinesis stream the request refers to.\",type:\"string\",keys:[\"aws.kinesis.stream_name\",\"aws.kinesis.stream.name\"],applyScrubbing:{key:\"manual\"},isInOtel:!0,visibility:\"public\",example:\"some-stream-name\",aliases:[\"aws.kinesis.stream.name\"],changelog:[{version:\"0.16.0\",prs:[480],description:\"Added aws.kinesis.stream_name attribute\"}]},\"aws.kinesis.stream.name\":{brief:\"The name of the AWS Kinesis stream the request refers to.\",type:\"string\",keys:[\"aws.kinesis.stream_name\",\"aws.kinesis.stream.name\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:\"some-stream-name\",deprecation:{replacement:\"aws.kinesis.stream_name\",reason:\"This attribute is being deprecated in favor of aws.kinesis.stream_name, which is the OTel-aligned replacement.\",status:\"backfill\"},aliases:[\"aws.kinesis.stream_name\"],changelog:[{version:\"0.16.0\",prs:[480],description:\"Added aws.kinesis.stream.name attribute, deprecated in favor of aws.kinesis.stream_name\"}]},\"aws.lambda.aws_request_id\":{brief:\"The AWS request ID as received by the Lambda function runtime\",type:\"string\",keys:[\"faas.invocation_id\",\"aws.lambda.aws_request_id\",\"faas.execution\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:\"8476a536-e9f4-11e8-9739-2dfe598c3fcd\",deprecation:{replacement:\"faas.invocation_id\",reason:\"This attribute is being deprecated in favor of faas.invocation_id\",status:\"backfill\"},aliases:[\"faas.invocation_id\",\"faas.execution\"],changelog:[{version:\"0.16.0\",prs:[473],description:\"Added faas.execution as an alias\"},{version:\"0.11.1\",prs:[414,424],description:\"Deprecated aws.lambda.aws_request_id in favor of faas.invocation_id\"},{version:\"0.7.0\",prs:[369],description:\"Added aws.lambda.aws_request_id attribute\"}]},\"aws.lambda.execution_duration_in_millis\":{brief:\"The execution duration of the Lambda function invocation in milliseconds\",type:\"double\",keys:[\"aws.lambda.execution_duration_in_millis\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:1234.56,changelog:[{version:\"0.7.0\",prs:[369],description:\"Added aws.lambda.execution_duration_in_millis attribute\"}]},\"aws.lambda.function_name\":{brief:\"The name of the Lambda function\",type:\"string\",keys:[\"faas.name\",\"aws.lambda.function_name\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:\"my-function\",deprecation:{replacement:\"faas.name\",reason:\"Use the OTel-aligned faas.name attribute instead\",status:\"backfill\"},aliases:[\"faas.name\"],changelog:[{version:\"0.11.1\",prs:[414],description:\"Deprecated aws.lambda.function_name in favor of faas.name\"},{version:\"0.7.0\",prs:[369],description:\"Added aws.lambda.function_name attribute\"}]},\"aws.lambda.function_version\":{brief:\"The version of the Lambda function\",type:\"string\",keys:[\"faas.version\",\"aws.lambda.function_version\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:\"$LATEST\",deprecation:{replacement:\"faas.version\",reason:\"Use the OTel-aligned faas.version attribute instead\",status:\"backfill\"},aliases:[\"faas.version\"],changelog:[{version:\"0.11.1\",prs:[414,424],description:\"Deprecated aws.lambda.function_version in favor of faas.version\"},{version:\"0.7.0\",prs:[369],description:\"Added aws.lambda.function_version attribute\"}]},\"aws.lambda.initialization_type\":{brief:\"How AWS Lambda initialized the execution environment, as reported by AWS_LAMBDA_INITIALIZATION_TYPE.\",type:\"string\",keys:[\"aws.lambda.initialization_type\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:\"native-http\",examples:[\"native-http\",\"on-demand\",\"provisioned-concurrency\",\"snap-start\"],changelog:[{version:\"0.30.0\",prs:[715],description:\"Added aws.lambda.initialization_type attribute\"}]},\"aws.lambda.invoked_arn\":{brief:\"The full ARN of the Lambda function that was invoked\",type:\"string\",keys:[\"aws.lambda.invoked_arn\",\"aws.lambda.invoked_function_arn\"],applyScrubbing:{key:\"manual\"},isInOtel:!0,visibility:\"public\",example:\"arn:aws:lambda:us-east-1:123456789012:function:my-function\",aliases:[\"aws.lambda.invoked_function_arn\"],changelog:[{version:\"0.11.1\",prs:[414]}]},\"aws.lambda.invoked_function_arn\":{brief:\"The full ARN of the Lambda function that was invoked\",type:\"string\",keys:[\"aws.lambda.invoked_arn\",\"aws.lambda.invoked_function_arn\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:\"arn:aws:lambda:us-east-1:123456789012:function:my-function\",deprecation:{replacement:\"aws.lambda.invoked_arn\",reason:\"This attribute is being deprecated in favor of aws.lambda.invoked_arn\",status:\"backfill\"},aliases:[\"aws.lambda.invoked_arn\"],changelog:[{version:\"0.11.1\",prs:[414],description:\"Deprecated aws.lambda.invoked_function_arn in favor of aws.lambda.invoked_arn\"},{version:\"0.7.0\",prs:[369],description:\"Added aws.lambda.invoked_function_arn attribute\"}]},\"aws.lambda.remaining_time_in_millis\":{brief:\"The remaining time in milliseconds before the Lambda function times out\",type:\"double\",keys:[\"aws.lambda.remaining_time_in_millis\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:5e3,changelog:[{version:\"0.7.0\",prs:[369],description:\"Added aws.lambda.remaining_time_in_millis attribute\"}]},\"aws.lambda.resource_mapping.id\":{brief:\"The UUID of the [AWS Lambda EventSource Mapping](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-lambda-eventsourcemapping.html). An event source is mapped to a lambda function. Its contents are read by Lambda and used to trigger a function. This isn't available in the lambda execution context or the lambda runtime environment. This is going to be populated by the AWS SDK for each language when that UUID is present. Some of these operations are Create/Delete/Get/List/Update EventSourceMapping.\",type:\"string\",keys:[\"aws.lambda.resource_mapping.id\"],applyScrubbing:{key:\"manual\"},isInOtel:!0,visibility:\"public\",example:\"587ad24b-03b9-4413-8202-bbd56b36e5b7\",examples:[\"587ad24b-03b9-4413-8202-bbd56b36e5b7\"],changelog:[{version:\"0.28.0\",prs:[710],description:\"Added aws.lambda.resource_mapping.id attribute\"}]},\"aws.lambda.target_function.name\":{brief:\"The name of the AWS Lambda function that an AWS SDK call acts on.\",type:\"string\",keys:[\"aws.lambda.target_function.name\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:\"billing\",examples:[\"billing\"],changelog:[{version:\"0.29.0\",prs:[716],description:\"Added aws.lambda.target_function.name attribute\"}],additionalContext:[\"Set on Lambda API calls that take a `FunctionName`, such as `GetFunction` or `UpdateFunctionCode`, without a version or alias qualifier (`billing`, not `billing:prod`). Different from `faas.name` which is the function the code runs in.\"]},\"aws.lambda.web.endpoint_name\":{brief:\"The name of the AWS Lambda Web Function endpoint that received the request, as reported by the lambda-web-endpoint-name request header.\",type:\"string\",keys:[\"aws.lambda.web.endpoint_name\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:\"prod\",examples:[\"prod\",\"canary\"],changelog:[{version:\"0.30.0\",prs:[715],description:\"Added aws.lambda.web.endpoint_name attribute\"}]},\"aws.log.group.names\":{brief:\"The name(s) of the AWS log group(s) an application is writing to.\",type:\"string[]\",keys:[\"aws.log.group.names\"],applyScrubbing:{key:\"manual\"},isInOtel:!0,visibility:\"public\",example:[\"/aws/lambda/my-function\",\"opentelemetry-service\"],changelog:[{version:\"0.11.1\",prs:[414]}]},\"aws.log.stream.names\":{brief:\"The name(s) of the AWS log stream(s) an application is writing to.\",type:\"string[]\",keys:[\"aws.log.stream.names\"],applyScrubbing:{key:\"manual\"},isInOtel:!0,visibility:\"public\",example:[\"logs/main/10838bed-421f-43ef-870a-f43feacbbb5b\"],changelog:[{version:\"0.11.1\",prs:[414]}]},\"aws.operation_name\":{brief:\"The name of the API operation invoked on an AWS service.\",type:\"string\",keys:[\"rpc.method\",\"aws.operation_name\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:\"PutObject\",examples:[\"PutObject\"],deprecation:{replacement:\"rpc.method\",reason:\"This attribute is being deprecated in favor of rpc.method, which is the framework-agnostic replacement.\",status:\"backfill\"},aliases:[\"rpc.method\"],changelog:[{version:\"0.19.0\",prs:[536],description:\"Added aws.operation_name attribute\"}]},aws_region:{brief:\"The geographical region the AWS resource is running\",type:\"string\",keys:[\"cloud.region\",\"aws_region\",\"gcp_region\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:\"us-east-1\",examples:[\"us-east-1\"],deprecation:{replacement:\"cloud.region\",status:\"backfill\"},aliases:[\"cloud.region\",\"gcp_region\"],changelog:[{version:\"0.19.0\",prs:[537],description:\"Added aws_region attribute\"}]},\"aws.request.extended_id\":{brief:\"The AWS extended request ID as returned in the response headers.\",type:\"string\",keys:[\"aws.extended_request_id\",\"aws.request.extended_id\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:\"wzHcyEWfmOGDIE5QOhTAqFDoDWP3y8IUvpNINCwL9N4TEHbUw0/gZJ+VZTmCNCWR7fezEN3eCiQ=\",deprecation:{replacement:\"aws.extended_request_id\",reason:\"This attribute is being deprecated in favor of aws.extended_request_id, which is the OTel-aligned replacement.\",status:\"backfill\"},aliases:[\"aws.extended_request_id\"],changelog:[{version:\"0.16.0\",prs:[480],description:\"Added aws.request.extended_id attribute, deprecated in favor of aws.extended_request_id\"}]},\"aws.request_id\":{brief:\"The AWS request ID as returned in the response headers.\",type:\"string\",keys:[\"aws.request_id\",\"aws.request.id\"],applyScrubbing:{key:\"manual\"},isInOtel:!0,visibility:\"public\",example:\"79b9da39-b7ae-508a-a6bc-864b2829c622\",aliases:[\"aws.request.id\"],changelog:[{version:\"0.16.0\",prs:[480],description:\"Added aws.request_id attribute\"}]},\"aws.request.id\":{brief:\"The AWS request ID as returned in the response headers.\",type:\"string\",keys:[\"aws.request_id\",\"aws.request.id\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:\"79b9da39-b7ae-508a-a6bc-864b2829c622\",deprecation:{replacement:\"aws.request_id\",reason:\"This attribute is being deprecated in favor of aws.request_id, which is the OTel-aligned replacement.\",status:\"backfill\"},aliases:[\"aws.request_id\"],changelog:[{version:\"0.16.0\",prs:[480],description:\"Added aws.request.id attribute, deprecated in favor of aws.request_id\"}]},\"aws.request.url\":{brief:\"The URL of the AWS API request.\",type:\"string\",keys:[\"url.full\",\"aws.request.url\",\"http.url\",\"messaging.url\",\"url\"],applyScrubbing:{key:\"auto\"},isInOtel:!1,visibility:\"public\",example:\"https://sqs.us-east-1.amazonaws.com/123456789/my-queue\",deprecation:{replacement:\"url.full\",reason:\"This attribute is being deprecated in favor of url.full, which is the OTel-aligned replacement.\",status:\"backfill\"},aliases:[\"url.full\",\"http.url\",\"url\",\"messaging.url\"],changelog:[{version:\"0.21.0\",prs:[581],description:\"Added messaging.url as an alias\"},{version:\"0.19.0\",prs:[488],description:\"Added aws.request.url attribute, deprecated in favor of url.full\"}]},\"aws.s3.bucket\":{brief:\"The S3 bucket name the request refers to.\",type:\"string\",keys:[\"aws.s3.bucket\"],applyScrubbing:{key:\"manual\"},isInOtel:!0,visibility:\"public\",example:\"ot-demo-test\",changelog:[{version:\"0.16.0\",prs:[480],description:\"Added aws.s3.bucket attribute\"}]},\"aws.s3.copy_source\":{brief:\"The source object (in the form bucket/key) for the copy operation.\",type:\"string\",keys:[\"aws.s3.copy_source\"],applyScrubbing:{key:\"auto\"},isInOtel:!0,visibility:\"public\",example:\"someFile.yml\",examples:[\"someFile.yml\"],changelog:[{version:\"0.28.0\",prs:[713],description:\"Changed apply_scrubbing from manual to auto\"},{version:\"0.27.0\",prs:[672],description:\"Added aws.s3.copy_source attribute\"}],additionalContext:[\"Applicable to the copy-object and upload-part-copy operations, corresponding to the CopySource parameter.\"]},\"aws.s3.delete\":{brief:\"The JSON-serialized value of Delete request field, which specifies the objects to be deleted.\",type:\"string\",keys:[\"aws.s3.delete\"],applyScrubbing:{key:\"auto\"},isInOtel:!0,visibility:\"public\",example:'{\"Objects\":[{\"Key\":\"someFile.yml\",\"VersionId\":\"3HL4kqtJlcpXroDTDmJ\"}],\"Quiet\":false}',examples:['{\"Objects\":[{\"Key\":\"someFile.yml\",\"VersionId\":\"3HL4kqtJlcpXroDTDmJ\"}],\"Quiet\":false}'],changelog:[{version:\"0.29.0\",prs:[711],description:\"Changed the value to a JSON-serialized field, with an example\"},{version:\"0.28.0\",prs:[713],description:\"Changed apply_scrubbing from manual to auto\"},{version:\"0.27.0\",prs:[672],description:\"Added aws.s3.delete attribute\"}],additionalContext:[\"Applicable only to the delete-objects operation, corresponding to its Delete parameter.\"]},\"aws.s3.key\":{brief:\"The S3 object key the request refers to. Corresponds to the --key parameter of the S3 API operations.\",type:\"string\",keys:[\"aws.s3.key\"],applyScrubbing:{key:\"auto\"},isInOtel:!0,visibility:\"public\",example:\"someFile.yml\",examples:[\"someFile.yml\"],changelog:[{version:\"0.28.0\",prs:[713],description:\"Changed apply_scrubbing from manual to auto\"},{version:\"0.27.0\",prs:[672],description:\"Added aws.s3.key attribute\"}]},\"aws.s3.part_number\":{brief:\"The part number of the part being uploaded in a multipart-upload operation. This is a positive integer between 1 and 10,000.\",type:\"integer\",keys:[\"aws.s3.part_number\"],applyScrubbing:{key:\"manual\"},isInOtel:!0,visibility:\"public\",example:3456,examples:[3456],changelog:[{version:\"0.27.0\",prs:[672],description:\"Added aws.s3.part_number attribute\"}],additionalContext:[\"Applicable only to the upload-part and upload-part-copy operations.\"]},\"aws.s3.upload_id\":{brief:\"Upload ID that identifies the multipart upload.\",type:\"string\",keys:[\"aws.s3.upload_id\"],applyScrubbing:{key:\"manual\"},isInOtel:!0,visibility:\"public\",example:\"dfRtDYWFbkRONycy.Yxwh66Yjlx.cph0gtNBtJ\",examples:[\"dfRtDYWFbkRONycy.Yxwh66Yjlx.cph0gtNBtJ\"],changelog:[{version:\"0.27.0\",prs:[672],description:\"Added aws.s3.upload_id attribute\"}]},\"aws.secretsmanager.secret.arn\":{brief:\"The ARN of the Secret stored in Secrets Manager.\",type:\"string\",keys:[\"aws.secretsmanager.secret.arn\"],applyScrubbing:{key:\"manual\"},isInOtel:!0,visibility:\"public\",example:\"arn:aws:secretsmanager:us-east-1:123456789012:secret:SecretName-6RandomCharacters\",changelog:[{version:\"0.16.0\",prs:[480],description:\"Added aws.secretsmanager.secret.arn attribute\"}]},\"aws.secretsmanager.secret.name\":{brief:\"The name of the secret stored in AWS Secrets Manager.\",type:\"string\",keys:[\"aws.secretsmanager.secret.name\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:\"db-password\",examples:[\"db-password\",\"prod/billing/api-key\"],changelog:[{version:\"0.29.0\",prs:[716],description:\"Added aws.secretsmanager.secret.name attribute\"}],additionalContext:[\"Without the hyphen and six random characters that Secrets Manager appends to the name in the secret's ARN (`db-password`, not `db-password-AbCdEf`).\"]},\"aws.sns.topic.arn\":{brief:\"The ARN of the AWS SNS Topic. An Amazon SNS topic is a logical access point that acts as a communication channel.\",type:\"string\",keys:[\"aws.sns.topic.arn\"],applyScrubbing:{key:\"manual\"},isInOtel:!0,visibility:\"public\",example:\"arn:aws:sns:us-east-1:123456789012:mystack-mytopic-NZJ5JSMVGFIE\",changelog:[{version:\"0.16.0\",prs:[480],description:\"Added aws.sns.topic.arn attribute\"}]},\"aws.sqs.queue.url\":{brief:\"The URL of the AWS SQS Queue. It\\u2019s a unique identifier for a queue in Amazon Simple Queue Service (SQS) and is used to access the queue and perform actions on it.\",type:\"string\",keys:[\"aws.sqs.queue.url\"],applyScrubbing:{key:\"manual\"},isInOtel:!0,visibility:\"public\",example:\"https://sqs.us-east-1.amazonaws.com/123456789012/MyQueue\",examples:[\"https://sqs.us-east-1.amazonaws.com/123456789012/MyQueue\"],changelog:[{version:\"0.27.0\",prs:[672],description:\"Added aws.sqs.queue.url attribute\"}]},\"aws.step_functions.activity.arn\":{brief:\"The ARN of the AWS Step Functions Activity.\",type:\"string\",keys:[\"aws.step_functions.activity.arn\"],applyScrubbing:{key:\"manual\"},isInOtel:!0,visibility:\"public\",example:\"arn:aws:states:us-east-1:123456789012:activity:get-greeting\",changelog:[{version:\"0.16.0\",prs:[480],description:\"Added aws.step_functions.activity.arn attribute\"}]},\"aws.step_functions.activity.name\":{brief:\"The name of the AWS Step Functions activity.\",type:\"string\",keys:[\"aws.step_functions.activity.name\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:\"resize-image\",examples:[\"resize-image\"],changelog:[{version:\"0.29.0\",prs:[716],description:\"Added aws.step_functions.activity.name attribute\"}],additionalContext:[\"The last part of the activity ARN (`arn:aws:states:us-east-1:123456789012:activity:resize-image`).\"]},\"aws.step_functions.execution.arn\":{brief:\"The ARN of the AWS Step Functions Execution.\",type:\"string\",keys:[\"aws.step_functions.execution.arn\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:\"arn:aws:states:us-east-1:123456789012:execution:myStateMachine:myExecution\",examples:[\"arn:aws:states:us-east-1:123456789012:execution:myStateMachine:myExecution\"],changelog:[{version:\"0.27.0\",prs:[672],description:\"Added aws.step_functions.execution.arn attribute\"}]},\"aws.step_functions.state_machine.arn\":{brief:\"The ARN of the AWS Step Functions State Machine.\",type:\"string\",keys:[\"aws.step_functions.state_machine.arn\"],applyScrubbing:{key:\"manual\"},isInOtel:!0,visibility:\"public\",example:\"arn:aws:states:us-east-1:123456789012:stateMachine:myStateMachine:1\",changelog:[{version:\"0.16.0\",prs:[480],description:\"Added aws.step_functions.state_machine.arn attribute\"}]},\"aws.step_functions.state_machine.name\":{brief:\"The name of the AWS Step Functions state machine.\",type:\"string\",keys:[\"aws.step_functions.state_machine.name\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:\"orders\",examples:[\"orders\"],changelog:[{version:\"0.29.0\",prs:[716],description:\"Added aws.step_functions.state_machine.name attribute\"}],additionalContext:[\"Contains no version or alias qualifier (`orders`, not `orders:1` or `orders:prod`).\"]},blocked_main_thread:{brief:\"Whether the main thread was blocked by the span.\",type:\"boolean\",keys:[\"blocked_main_thread\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:!0,changelog:[{version:\"0.0.0\"}]},\"browser.bfcache.frame\":{brief:\"Which frame in the page's frame tree a back/forward cache not-restored reason originated from: the top document or a child frame.\",type:\"string\",keys:[\"browser.bfcache.frame\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:\"top\",examples:[\"top\",\"child\"],changelog:[{version:\"0.19.0\",prs:[513],description:\"Added browser.bfcache.frame attribute\"}]},\"browser.bfcache.not_restored_reason_count\":{brief:\"The number of reported reasons a page was not restored from the back/forward cache on a back/forward navigation. 0 when the browser reported no reasons (e.g. non-Chromium browsers).\",type:\"integer\",keys:[\"browser.bfcache.not_restored_reason_count\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:2,examples:[2],changelog:[{version:\"0.19.0\",prs:[513],description:\"Added browser.bfcache.not_restored_reason_count attribute\"}]},\"browser.bfcache.outcome\":{brief:\"Whether a back/forward navigation was restored from the browser's back/forward cache (bfcache). 'hit' means the page was restored; 'miss' means it was reloaded.\",type:\"string\",keys:[\"browser.bfcache.outcome\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:\"hit\",examples:[\"hit\",\"miss\"],changelog:[{version:\"0.19.0\",prs:[513],description:\"Added browser.bfcache.outcome attribute\"}]},\"browser.bfcache.reason\":{brief:\"A browser-reported reason a page was not restored from the back/forward cache on a back/forward navigation, taken from the notRestoredReasons API. Reported per reason (a single miss can have several). Currently Chromium-only.\",type:\"string\",keys:[\"browser.bfcache.reason\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:\"unload-listener\",examples:[\"unload-listener\",\"websocket\",\"idbversionchangeevent\",\"response-cache-control-no-store\"],changelog:[{version:\"0.19.0\",prs:[513],description:\"Added browser.bfcache.reason attribute\"}]},\"browser.name\":{brief:\"The name of the browser.\",type:\"string\",keys:[\"browser.name\",\"sentry.browser.name\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:\"Chrome\",aliases:[\"sentry.browser.name\"],changelog:[{version:\"0.1.0\",prs:[127,139]},{version:\"0.0.0\"}]},\"browser.navigation.id\":{brief:\"The identifier of the navigation the measurement belongs to, incremented by the browser for each navigation within a page's lifetime.\",type:\"integer\",keys:[\"browser.navigation.id\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:1,examples:[1,3,0],changelog:[{version:\"0.24.0\",prs:[640],description:\"Document 0 as the fallback value when the browser does not support `navigationId`\"},{version:\"0.22.0\",prs:[634],description:\"Added browser.navigation.id attribute\"}],additionalContext:[\"Sourced from `PerformanceEntry.navigationId`, defined by the Soft Navigations spec. Despite its origin it is not soft-navigation specific: the field is set on the `PerformanceNavigationTiming` entry of a hard navigation too.\",\"The value starts at 1 for the initial page load and increments for each subsequent navigation. It is only unique within a single page lifetime, not globally.\",\"A value of 0 is a fallback rather than a real navigation id: web-vitals reports 0 when the browser does not expose `PerformanceEntry.navigationId`, so 0 means the id is unknown.\",\"Pairs with `browser.navigation.type`: the type says how the browser arrived at the page, the id says which navigation of that page a measurement belongs to.\",\"Not to be confused with the Navigation API's `NavigationHistoryEntry.id`, which is an opaque string identifying a history entry rather than a counter, and is not interchangeable with this value.\",\"Also distinct from the `router.navigation.*` attributes, which describe the client-side router's own view of a navigation. Those come from the framework, this one comes from the browser, and both can be set on the same span.\"]},\"browser.navigation.type\":{brief:\"The type of navigation the browser performed to arrive at the page the metrics were measured on.\",type:\"string\",keys:[\"browser.navigation.type\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:\"navigate\",examples:[\"navigate\",\"reload\",\"back-forward\",\"back-forward-cache\",\"prerender\",\"restore\",\"soft-navigation\"],changelog:[{version:\"0.24.0\",prs:[640],description:\"Use the web-vitals navigation types as-is: `bfcache` is now `back-forward-cache`, and `back-forward` and `restore` are no longer reported as `navigate`\"},{version:\"0.22.0\",prs:[600],description:\"Added browser.navigation.type attribute\"}],additionalContext:[\"Carries the `navigationType` value reported by the web-vitals library verbatim. web-vitals hyphenates the Navigation Timing `PerformanceNavigationTiming.type` value (`back_forward` becomes `back-forward`) and adds states that API does not cover: `back-forward-cache` for a restore from the back/forward cache, `prerender`, `restore` for a discarded tab being reloaded, and `soft-navigation`.\",\"`back-forward-cache` is only set when the page was actually restored from the back/forward cache. A back/forward navigation that missed the cache is a full document load and reports `back-forward`. Use the `browser.bfcache.*` attributes to diagnose misses.\",\"`prerender` pages finish painting before activation, so their paint timings are offset by `browser.performance.navigation.activation_start`. Keep them separate when aggregating web vitals.\",\"Not to be confused with `router.navigation.type`, which holds the client-side router's own vocabulary (`link`, `goto`, `router.push`). The two are independent and can both be set on the same span.\"]},\"browser.paint.type\":{brief:\"The type of paint timing entry reported by the browser.\",type:\"string\",keys:[\"browser.paint.type\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:\"first-paint\",examples:[\"first-paint\",\"first-contentful-paint\"],changelog:[{version:\"0.22.0\",prs:[606],description:\"Added browser.paint.type attribute\"}]},\"browser.performance.navigation.activation_start\":{brief:\"The time between initiating a navigation to a page and the browser activating the page\",type:\"double\",keys:[\"browser.performance.navigation.activation_start\",\"performance.activationStart\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:1.983,aliases:[\"performance.activationStart\"],changelog:[{version:\"0.5.0\",prs:[321],description:\"Added browser.performance.navigation.activation_start attribute\"}]},\"browser.performance.time_origin\":{brief:\"The browser's performance.timeOrigin timestamp representing the time when the pageload was initiated\",type:\"double\",keys:[\"browser.performance.time_origin\",\"performance.timeOrigin\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:1776185678886e-3,aliases:[\"performance.timeOrigin\"],changelog:[{version:\"0.5.0\",prs:[321],description:\"Added browser.performance.time_origin attribute attribute\"}]},\"browser.report.type\":{brief:\"A browser report sent via reporting API..\",type:\"string\",keys:[\"browser.report.type\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:\"network-error\",changelog:[{version:\"0.1.0\",prs:[68,127]}]},\"browser.script.invoker\":{brief:\"How a script was called in the browser.\",type:\"string\",keys:[\"browser.script.invoker\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:\"Window.requestAnimationFrame\",changelog:[{version:\"0.1.0\",prs:[127]},{version:\"0.0.0\"}]},\"browser.script.invoker_type\":{brief:\"Browser script entry point type.\",type:\"string\",keys:[\"browser.script.invoker_type\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:\"event-listener\",changelog:[{version:\"0.1.0\",prs:[127]},{version:\"0.0.0\"}]},\"browser.script.source_char_position\":{brief:\"A number representing the script character position of the script.\",type:\"integer\",keys:[\"browser.script.source_char_position\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:678,changelog:[{version:\"0.4.0\",prs:[228]},{version:\"0.0.0\"}]},\"browser.version\":{brief:\"The version of the browser.\",type:\"string\",keys:[\"browser.version\",\"sentry.browser.version\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:\"120.0.6099.130\",aliases:[\"sentry.browser.version\"],changelog:[{version:\"0.1.0\",prs:[59,127,139]}]},\"browser.web_vital.cls.report_event\":{brief:\"The event that caused the SDK to report CLS (pagehide or navigation)\",type:\"string\",keys:[\"browser.web_vital.cls.report_event\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:\"navigation\",deprecation:{reason:\"The JavaScript SDK stopped setting this in v11. With per-navigation web vitals, web-vitals decides when the CLS value is final, so there is no report event to record. No replacement.\"},changelog:[{version:\"0.24.0\",prs:[642],description:\"Deprecated browser.web_vital.cls.report_event, which has no replacement\"},{version:\"0.5.0\",prs:[319],description:\"Added browser.web_vital.cls.report_event attribute\"}]},\"browser.web_vital.cls.source.<key>\":{brief:\"The HTML elements or components responsible for the layout shift. <key> is a numeric index from 1 to N\",type:\"string\",keys:[\"browser.web_vital.cls.source.<key>\",\"cls.source.<key>\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",hasDynamicSuffix:!0,example:\"body > div#app\",aliases:[\"cls.source.<key>\"],changelog:[{version:\"0.5.0\",prs:[234]}]},\"browser.web_vital.cls.value\":{brief:\"The value of the recorded Cumulative Layout Shift (CLS) web vital\",type:\"double\",keys:[\"browser.web_vital.cls.value\",\"cls\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:.2361,aliases:[\"cls\"],changelog:[{version:\"0.5.0\",prs:[229],description:\"Added browser.web_vital.cls.value attribute\"}]},\"browser.web_vital.fcp.value\":{brief:\"The time it takes for the browser to render the first piece of meaningful content on the screen\",type:\"double\",keys:[\"browser.web_vital.fcp.value\",\"fcp\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:547.6951,aliases:[\"fcp\"],changelog:[{version:\"0.5.0\",prs:[235]}]},\"browser.web_vital.fp.value\":{brief:\"The time in milliseconds it takes for the browser to render the first pixel on the screen\",type:\"double\",keys:[\"browser.web_vital.fp.value\",\"fp\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:477.1926,aliases:[\"fp\"],changelog:[{version:\"0.5.0\",prs:[235]}]},\"browser.web_vital.inp.input_delay\":{brief:\"The time between the user interacting with the page and the browser starting to run the event handlers, for the interaction INP was reported on, in milliseconds\",type:\"double\",keys:[\"browser.web_vital.inp.input_delay\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:120,examples:[120],changelog:[{version:\"0.28.0\",prs:[712],description:\"Added browser.web_vital.inp.input_delay attribute\"}],additionalContext:[\"One of the three INP subparts, which add up to `browser.web_vital.inp.value`: input delay, processing duration and presentation delay. Named after `inputDelay` in the web-vitals attribution build.\",\"Measured from the interaction's `PerformanceEventTiming` entry as `processingStart` minus `startTime`.\",\"Omitted when INP is reported without an interaction to attribute it to, like `browser.web_vital.inp.target`.\"]},\"browser.web_vital.inp.interaction_type\":{brief:\"The kind of user interaction INP was reported on\",type:\"string\",keys:[\"browser.web_vital.inp.interaction_type\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:\"click\",examples:[\"click\",\"hover\",\"drag\",\"press\"],changelog:[{version:\"0.24.0\",prs:[641],description:\"Added browser.web_vital.inp.interaction_type attribute\"}],additionalContext:[\"One of `click`, `hover`, `drag` or `press`, derived from the DOM event name of the Event Timing entry: pointer, mouse and touch events map to `click`, `mouseover` and similar to `hover`, drag and drop events to `drag`, and keyboard and `input` events to `press`. The same value forms the suffix of the span's `ui.interaction.*` op.\",\"Not to be confused with the `interactionType` of the web-vitals attribution build, which only distinguishes `pointer` and `keyboard`.\",\"Omitted when INP is reported without an interaction to attribute it to, see `browser.web_vital.inp.target`. The op of such a span still falls into `ui.interaction.click` so that it stays within the interaction span family, which makes this attribute, not the op, the way to tell a real click from a value with no interaction.\"]},\"browser.web_vital.inp.presentation_delay\":{brief:\"The time between the event handlers finishing and the browser presenting the next frame, for the interaction INP was reported on, in milliseconds\",type:\"double\",keys:[\"browser.web_vital.inp.presentation_delay\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:100,examples:[100],changelog:[{version:\"0.28.0\",prs:[712],description:\"Added browser.web_vital.inp.presentation_delay attribute\"}],additionalContext:[\"One of the three INP subparts, which add up to `browser.web_vital.inp.value`. Named after `presentationDelay` in the web-vitals attribution build.\",\"Measured from the interaction's `PerformanceEventTiming` entry as `startTime` plus `duration` minus `processingEnd`.\",\"Omitted when INP is reported without an interaction to attribute it to, like `browser.web_vital.inp.target`.\"]},\"browser.web_vital.inp.processing_duration\":{brief:\"The time it took the event handlers to run, for the interaction INP was reported on, in milliseconds\",type:\"double\",keys:[\"browser.web_vital.inp.processing_duration\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:140,examples:[140],changelog:[{version:\"0.28.0\",prs:[712],description:\"Added browser.web_vital.inp.processing_duration attribute\"}],additionalContext:[\"One of the three INP subparts, which add up to `browser.web_vital.inp.value`. Named after `processingDuration` in the web-vitals attribution build.\",\"Measured from the interaction's `PerformanceEventTiming` entry as `processingEnd` minus `processingStart`.\",\"Omitted when INP is reported without an interaction to attribute it to, like `browser.web_vital.inp.target`.\"]},\"browser.web_vital.inp.target\":{brief:\"The HTML element selector or component name of the element the user interacted with, for the interaction INP was reported on\",type:\"string\",keys:[\"browser.web_vital.inp.target\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:\"body > div#app > button.submit\",examples:[\"body > div#app > button.submit\",\"SubmitButton\"],changelog:[{version:\"0.24.0\",prs:[641],description:\"Added browser.web_vital.inp.target attribute\"}],additionalContext:[\"Named after `PerformanceEventTiming.target`, the way `browser.web_vital.lcp.element` is named after `LargestContentfulPaint.element`. The value uses the same format as that attribute.\",\"Omitted when INP is reported without an interaction to attribute it to. web-vitals reports such a value for a soft navigation whose interactions all stayed below the Event Timing duration threshold, so there is no element to name. The span is still named and still carries `browser.web_vital.inp.value`.\"]},\"browser.web_vital.inp.value\":{brief:\"The value of the recorded Interaction to Next Paint (INP) web vital\",type:\"double\",keys:[\"browser.web_vital.inp.value\",\"inp\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:200,aliases:[\"inp\"],changelog:[{version:\"0.5.0\",prs:[229],description:\"Added browser.web_vital.inp.value attribute\"}]},\"browser.web_vital.lcp.element\":{brief:\"The HTML element selector or component name for which LCP was reported\",type:\"string\",keys:[\"browser.web_vital.lcp.element\",\"lcp.element\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:\"body > div#app > div#container > div\",aliases:[\"lcp.element\"],changelog:[{version:\"0.5.0\",prs:[233]}]},\"browser.web_vital.lcp.element_render_delay\":{brief:\"The time between the LCP resource finishing loading and the LCP element being rendered, in milliseconds\",type:\"double\",keys:[\"browser.web_vital.lcp.element_render_delay\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:410,examples:[410],changelog:[{version:\"0.28.0\",prs:[712],description:\"Added browser.web_vital.lcp.element_render_delay attribute\"}],additionalContext:[\"One of the four LCP subparts, which add up to `browser.web_vital.lcp.value`. Named after `elementRenderDelay` in the web-vitals attribution build.\",\"Measured as the LCP value minus the LCP resource's `responseEnd`. When the LCP element is text, it covers all time after TTFB.\",\"For a prerendered page, timestamps are measured from `activationStart`.\"]},\"browser.web_vital.lcp.id\":{brief:\"The id of the dom element responsible for the largest contentful paint\",type:\"string\",keys:[\"browser.web_vital.lcp.id\",\"lcp.id\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:\"#gero\",aliases:[\"lcp.id\"],changelog:[{version:\"0.5.0\",prs:[233]}]},\"browser.web_vital.lcp.load_time\":{brief:\"The time it took for the LCP element to be loaded\",type:\"integer\",keys:[\"browser.web_vital.lcp.load_time\",\"lcp.loadTime\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:1402,aliases:[\"lcp.loadTime\"],changelog:[{version:\"0.5.0\",prs:[233]}]},\"browser.web_vital.lcp.render_time\":{brief:\"The time it took for the LCP element to be rendered\",type:\"integer\",keys:[\"browser.web_vital.lcp.render_time\",\"lcp.renderTime\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:1685,aliases:[\"lcp.renderTime\"],changelog:[{version:\"0.5.0\",prs:[233]}]},\"browser.web_vital.lcp.report_event\":{brief:\"The event that caused the SDK to report LCP (pagehide or navigation)\",type:\"string\",keys:[\"browser.web_vital.lcp.report_event\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:\"pagehide\",deprecation:{reason:\"The JavaScript SDK stopped setting this in v11. With per-navigation web vitals, web-vitals decides when the LCP value is final, so there is no report event to record. No replacement.\"},changelog:[{version:\"0.24.0\",prs:[642],description:\"Deprecated browser.web_vital.lcp.report_event, which has no replacement\"},{version:\"0.5.0\",prs:[319],description:\"Added browser.web_vital.lcp.report_event attribute\"}]},\"browser.web_vital.lcp.resource_load_delay\":{brief:\"The time between the first byte of the document arriving and the browser starting to load the LCP resource, in milliseconds\",type:\"double\",keys:[\"browser.web_vital.lcp.resource_load_delay\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:320.5,examples:[320.5],changelog:[{version:\"0.28.0\",prs:[712],description:\"Added browser.web_vital.lcp.resource_load_delay attribute\"}],additionalContext:[\"One of the four LCP subparts, which add up to `browser.web_vital.lcp.value`: TTFB (`browser.web_vital.ttfb.value`), resource load delay, resource load duration and element render delay. Named after `resourceLoadDelay` in the web-vitals attribution build.\",\"Measured as the LCP resource's `requestStart` (or `startTime` when `requestStart` is not exposed) minus TTFB. It is 0 when the LCP element is text, since no resource is loaded.\",\"For a prerendered page, timestamps are measured from `activationStart`.\"]},\"browser.web_vital.lcp.resource_load_duration\":{brief:\"The time it took to load the LCP resource, in milliseconds\",type:\"double\",keys:[\"browser.web_vital.lcp.resource_load_duration\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:780.2,examples:[780.2],changelog:[{version:\"0.28.0\",prs:[712],description:\"Added browser.web_vital.lcp.resource_load_duration attribute\"}],additionalContext:[\"One of the four LCP subparts, which add up to `browser.web_vital.lcp.value`. Named after `resourceLoadDuration` in the web-vitals attribution build.\",\"Measured as the LCP resource's `responseEnd` minus its `requestStart` (or `startTime` when `requestStart` is not exposed). It is 0 when the LCP element is text, since no resource is loaded.\",\"For a prerendered page, timestamps are measured from `activationStart`.\"]},\"browser.web_vital.lcp.size\":{brief:\"The size of the largest contentful paint element\",type:\"integer\",keys:[\"browser.web_vital.lcp.size\",\"lcp.size\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:1024,aliases:[\"lcp.size\"],changelog:[{version:\"0.5.0\",prs:[233]}]},\"browser.web_vital.lcp.url\":{brief:\"The url of the dom element responsible for the largest contentful paint\",type:\"string\",keys:[\"browser.web_vital.lcp.url\",\"lcp.url\"],applyScrubbing:{key:\"auto\"},isInOtel:!1,visibility:\"public\",example:\"https://example.com/static/img.png\",aliases:[\"lcp.url\"],changelog:[{version:\"0.5.0\",prs:[233]}]},\"browser.web_vital.lcp.value\":{brief:\"The value of the recorded Largest Contentful Paint (LCP) web vital\",type:\"double\",keys:[\"browser.web_vital.lcp.value\",\"lcp\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:2500,aliases:[\"lcp\"],changelog:[{version:\"0.5.0\",prs:[229],description:\"Added browser.web_vital.lcp.value attribute\"}]},\"browser.web_vital.ttfb.request_time\":{brief:\"The time it takes for the server to process the initial request and send the first byte of a response to the user's browser\",type:\"double\",keys:[\"browser.web_vital.ttfb.request_time\",\"ttfb.requestTime\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:1554.5814,aliases:[\"ttfb.requestTime\"],changelog:[{version:\"0.5.0\",prs:[235]}]},\"browser.web_vital.ttfb.value\":{brief:\"The value of the recorded Time To First Byte (TTFB) web vital in Milliseconds\",type:\"double\",keys:[\"browser.web_vital.ttfb.value\",\"ttfb\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:194.3322,aliases:[\"ttfb\"],changelog:[{version:\"0.5.0\",prs:[235]}]},\"cache.hit\":{brief:\"If the cache was hit during this span.\",type:\"boolean\",keys:[\"cache.hit\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:!0,changelog:[{version:\"0.0.0\"}]},\"cache.item_age\":{brief:\"The age of the cache entry in seconds, measured at read time.\",type:\"integer\",keys:[\"cache.item_age\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:5,examples:[5,3600],changelog:[{version:\"0.23.0\",prs:[637],description:\"Added cache.item_age attribute\"}],additionalContext:[\"Set on reads that return an entry. Absent on a miss, or when the cache does not report a write time.\",\"Clamped to 0. On a shared cache, the writer's clock and the reader's clock can drift far enough to make the age negative.\",\"Can exceed `cache.ttl`. A cache that discards an expired entry on read still reports the age of that entry, with `cache.hit: false`.\"],searchAlias:{name:\"cache.item_age\",type:\"second\"}},\"cache.item_size\":{brief:\"The size of the requested item in the cache. In bytes.\",type:\"integer\",keys:[\"cache.item_size\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:58,changelog:[{version:\"0.4.0\",prs:[228]},{version:\"0.0.0\"}],searchAlias:{name:\"cache.item_size\",type:\"byte\"}},\"cache.key\":{brief:\"The key of the cache accessed.\",type:\"string[]\",keys:[\"cache.key\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:[\"my-cache-key\",\"my-other-cache-key\"],changelog:[{version:\"0.0.0\"}]},\"cache.operation\":{brief:\"The operation being performed on the cache.\",type:\"string\",keys:[\"cache.operation\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:\"get\",examples:[\"get\",\"put\",\"remove\"],changelog:[{version:\"0.1.0\",prs:[127]},{version:\"0.0.0\"}]},\"cache.tags\":{brief:\"The tags attached to the cache entry. Tags group entries so a cache can invalidate them together.\",type:\"string[]\",keys:[\"cache.tags\"],applyScrubbing:{key:\"auto\",reason:\"Applications pick tag values freely and often build them from record identifiers such as a user id.\"},isInOtel:!1,visibility:\"public\",example:[\"blog-posts\",\"post-42\"],examples:[[\"blog-posts\",\"post-42\"],[\"products\"]],changelog:[{version:\"0.23.0\",prs:[637],description:\"Added cache.tags attribute\"}],additionalContext:[\"Cache library examples that support tags: Next.js `cacheTag()`, Symfony `ItemInterface::tag()`, Laravel `Cache::tags()`.\",\"HTTP caches take tags from a response header. Cloudflare reads `Cache-Tag`, Fastly reads `Surrogate-Key`.\",\"Record only the tags the application declared. Leave out implicit tags that the framework adds itself, for example one tag per route.\",\"The tags describe the entry, not the operation. Take them from the entry the cache returned or stored.\"]},\"cache.ttl\":{brief:\"The TTL (maximum lifetime) of the cache entry in seconds\",type:\"integer\",keys:[\"cache.ttl\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:120,changelog:[{version:\"0.4.0\",prs:[228]},{version:\"0.0.0\"}],additionalContext:[\"Counted from the write. On a read, the value is the full TTL, not the time that remains.\",\"A value of 0 means the entry expires immediately, as with HTTP `max-age=0`. Round a fractional TTL up, so 0.3 seconds becomes 1, not 0.\",\"Omit the attribute when the entry never expires, the TTL is unknown, or each read restarts the TTL.\"]},\"cache.write\":{brief:\"If the cache operation resulted in a write to the cache.\",type:\"boolean\",keys:[\"cache.write\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:!0,changelog:[{version:\"0.5.0\"}]},channel:{brief:\"The channel name that is being used.\",type:\"string\",keys:[\"channel\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:\"mail\",changelog:[{version:\"0.1.0\",prs:[127]},{version:\"0.0.0\"}]},\"client.address\":{brief:\"Client address - domain name if available without reverse DNS lookup; otherwise, IP address or Unix domain socket name.\",type:\"string\",keys:[\"client.address\",\"http.client_ip\"],applyScrubbing:{key:\"auto\"},isInOtel:!0,visibility:\"public\",example:\"example.com\",aliases:[\"http.client_ip\"],changelog:[{version:\"0.1.0\",prs:[106,127]},{version:\"0.0.0\"}]},\"client.port\":{brief:\"Client port number.\",type:\"integer\",keys:[\"client.port\"],applyScrubbing:{key:\"manual\"},isInOtel:!0,visibility:\"public\",example:5432,changelog:[{version:\"0.4.0\",prs:[228]},{version:\"0.0.0\"}]},\"cloudflare.d1.duration\":{brief:\"The duration of a Cloudflare D1 operation.\",type:\"integer\",keys:[\"cloudflare.d1.duration\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:543,changelog:[{version:\"0.4.0\",prs:[228]},{version:\"0.0.0\"}]},\"cloudflare.d1.query_type\":{brief:\"The type of query executed in a Cloudflare D1 operation\",type:\"string\",keys:[\"db.operation.name\",\"cloudflare.d1.query_type\",\"db.operation\",\"redis.command\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:\"run\",deprecation:{replacement:\"db.operation.name\",status:\"backfill\"},aliases:[\"db.operation.name\",\"db.operation\",\"redis.command\"],changelog:[{version:\"0.19.0\",prs:[531],description:\"Added redis.command as an alias\"},{version:\"0.11.0\",prs:[392],description:\"Added cloudflare.d1.query_type attribute\"}]},\"cloudflare.d1.rows_read\":{brief:\"The number of rows read in a Cloudflare D1 operation.\",type:\"integer\",keys:[\"cloudflare.d1.rows_read\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:12,changelog:[{version:\"0.4.0\",prs:[228]},{version:\"0.0.0\"}]},\"cloudflare.d1.rows_written\":{brief:\"The number of rows written in a Cloudflare D1 operation.\",type:\"integer\",keys:[\"cloudflare.d1.rows_written\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:12,changelog:[{version:\"0.4.0\",prs:[228]},{version:\"0.0.0\"}]},\"cloudflare.durable_object.query.bindings\":{brief:\"The number of bound parameters passed to the SQL exec call.\",type:\"integer\",keys:[\"cloudflare.durable_object.query.bindings\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:2,changelog:[{version:\"0.13.0\",prs:[435],description:\"Added cloudflare.durable_object.query.bindings attribute\"}]},\"cloudflare.durable_object.response.rows_read\":{brief:\"The number of rows read by a Cloudflare Durable Object SQL operation.\",type:\"integer\",keys:[\"cloudflare.durable_object.response.rows_read\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:12,changelog:[{version:\"0.13.0\",prs:[435],description:\"Added cloudflare.durable_object.response.rows_read attribute\"}]},\"cloudflare.durable_object.response.rows_written\":{brief:\"The number of rows written by a Cloudflare Durable Object SQL operation.\",type:\"integer\",keys:[\"cloudflare.durable_object.response.rows_written\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:1,changelog:[{version:\"0.13.0\",prs:[435],description:\"Added cloudflare.durable_object.response.rows_written attribute\"}]},\"cloudflare.r2.bucket\":{brief:\"The name of the Cloudflare R2 bucket binding\",type:\"string\",keys:[\"cloudflare.r2.bucket\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:\"MY_BUCKET\",changelog:[{version:\"0.11.1\",prs:[413],description:\"Added cloudflare.r2.bucket attribute\"}]},\"cloudflare.r2.operation\":{brief:\"The R2 API operation being performed\",type:\"string\",keys:[\"cloudflare.r2.operation\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:\"GetObject\",changelog:[{version:\"0.11.1\",prs:[413],description:\"Added cloudflare.r2.operation attribute\"}]},\"cloudflare.r2.request.delimiter\":{brief:\"The delimiter used to group objects in an R2 list operation\",type:\"string\",keys:[\"cloudflare.r2.request.delimiter\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:\"/\",changelog:[{version:\"0.11.1\",prs:[413],description:\"Added cloudflare.r2.request.delimiter attribute\"}]},\"cloudflare.r2.request.key\":{brief:\"The object key used in the R2 operation\",type:\"string\",keys:[\"cloudflare.r2.request.key\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:\"my-file.txt\",changelog:[{version:\"0.11.1\",prs:[413],description:\"Added cloudflare.r2.request.key attribute\"}]},\"cloudflare.r2.request.part_number\":{brief:\"The part number in a multipart upload operation\",type:\"integer\",keys:[\"cloudflare.r2.request.part_number\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:1,changelog:[{version:\"0.11.1\",prs:[413],description:\"Added cloudflare.r2.request.part_number attribute\"}]},\"cloudflare.r2.request.prefix\":{brief:\"The prefix used to filter objects in an R2 list operation\",type:\"string\",keys:[\"cloudflare.r2.request.prefix\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:\"images/\",changelog:[{version:\"0.11.1\",prs:[413],description:\"Added cloudflare.r2.request.prefix attribute\"}]},\"cloudflare.workflow.attempt\":{brief:\"The current attempt number for a Cloudflare Workflow step\",type:\"integer\",keys:[\"cloudflare.workflow.attempt\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:1,changelog:[{version:\"0.11.0\",prs:[392],description:\"Added cloudflare.workflow.attempt attribute\"}]},\"cloudflare.workflow.retries.backoff\":{brief:\"The backoff strategy for Cloudflare Workflow step retries\",type:\"string\",keys:[\"cloudflare.workflow.retries.backoff\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:\"exponential\",changelog:[{version:\"0.11.0\",prs:[392],description:\"Added cloudflare.workflow.retries.backoff attribute\"}]},\"cloudflare.workflow.retries.delay\":{brief:\"The delay between Cloudflare Workflow step retries\",type:\"string\",keys:[\"cloudflare.workflow.retries.delay\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:\"5 seconds\",changelog:[{version:\"0.11.0\",prs:[392],description:\"Added cloudflare.workflow.retries.delay attribute\"}]},\"cloudflare.workflow.retries.limit\":{brief:\"The maximum number of retries for a Cloudflare Workflow step\",type:\"integer\",keys:[\"cloudflare.workflow.retries.limit\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:3,changelog:[{version:\"0.11.0\",prs:[392],description:\"Added cloudflare.workflow.retries.limit attribute\"}]},\"cloudflare.workflow.timeout\":{brief:\"The timeout duration for a Cloudflare Workflow step\",type:\"string\",keys:[\"cloudflare.workflow.timeout\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:\"1 minute\",changelog:[{version:\"0.11.0\",prs:[392],description:\"Added cloudflare.workflow.timeout attribute\"}]},\"cloud.account.id\":{brief:\"The cloud account ID the resource is assigned to\",type:\"string\",keys:[\"cloud.account.id\"],applyScrubbing:{key:\"manual\"},isInOtel:!0,visibility:\"public\",example:\"123456789012\",changelog:[{version:\"0.7.0\",prs:[364],description:\"Added cloud.account.id attribute\"}]},\"cloud.availability_zone\":{brief:\"Cloud regions often have multiple, isolated locations known as zones to increase availability\",type:\"string\",keys:[\"cloud.availability_zone\"],applyScrubbing:{key:\"manual\"},isInOtel:!0,visibility:\"public\",example:\"us-east-1c\",changelog:[{version:\"0.7.0\",prs:[364],description:\"Added cloud.availability_zone attribute\"}]},\"cloud.platform\":{brief:\"The cloud platform in use\",type:\"string\",keys:[\"cloud.platform\"],applyScrubbing:{key:\"manual\"},isInOtel:!0,visibility:\"public\",example:\"aws_lambda\",changelog:[{version:\"0.7.0\",prs:[364],description:\"Added cloud.platform attribute\"}]},\"cloud.provider\":{brief:\"Name of the cloud provider\",type:\"string\",keys:[\"cloud.provider\"],applyScrubbing:{key:\"manual\"},isInOtel:!0,visibility:\"public\",example:\"aws\",changelog:[{version:\"0.7.0\",prs:[364],description:\"Added cloud.provider attribute\"}]},\"cloud.region\":{brief:\"The geographical region the resource is running\",type:\"string\",keys:[\"cloud.region\",\"aws_region\",\"gcp_region\"],applyScrubbing:{key:\"manual\"},isInOtel:!0,visibility:\"public\",example:\"us-east-1\",aliases:[\"aws_region\",\"gcp_region\"],changelog:[{version:\"0.19.0\",prs:[535,537],description:\"Added aws_region and gcp_region as aliases\"},{version:\"0.7.0\",prs:[364],description:\"Added cloud.region attribute\"}]},\"cloud.resource_id\":{brief:\"Cloud provider-specific native identifier of the monitored cloud resource\",type:\"string\",keys:[\"cloud.resource_id\",\"faas.id\"],applyScrubbing:{key:\"manual\"},isInOtel:!0,visibility:\"public\",example:\"arn:aws:lambda:REGION:ACCOUNT_ID:function:my-function\",aliases:[\"faas.id\"],changelog:[{version:\"0.16.0\",prs:[475],description:\"Added faas.id as an alias\"},{version:\"0.11.1\",prs:[414]}],additionalContext:[\"This can be an identifier for a resource in AWS, GCP, or Azure. There may be some overlap in values found here with other attributes. For instance, an AWS lambda ARN may be found here as well as in `aws.lambda.invoked_arn`. OTEL recommends setting them alongside each other.\"]},cls:{brief:\"The value of the recorded Cumulative Layout Shift (CLS) web vital\",type:\"double\",keys:[\"browser.web_vital.cls.value\",\"cls\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:.2361,deprecation:{replacement:\"browser.web_vital.cls.value\",reason:\"The CLS web vital is now recorded as a browser.web_vital.cls.value attribute.\",status:\"backfill\"},aliases:[\"browser.web_vital.cls.value\"],changelog:[{version:\"0.5.0\",prs:[229],description:\"Added and deprecated attribute to document JS SDK's current behaviour\"}]},\"cls.source.<key>\":{brief:\"The HTML elements or components responsible for the layout shift. <key> is a numeric index from 1 to N\",type:\"string\",keys:[\"browser.web_vital.cls.source.<key>\",\"cls.source.<key>\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",hasDynamicSuffix:!0,example:\"body > div#app\",deprecation:{replacement:\"browser.web_vital.cls.source.<key>\",reason:\"The CLS source is now recorded as a browser.web_vital.cls.source.<key> attribute.\",status:\"backfill\"},aliases:[\"browser.web_vital.cls.source.<key>\"],changelog:[{version:\"0.5.0\",prs:[234]}]},code:{brief:\"Status code of the RPC returned by the RPC server or generated by the client.\",type:\"string\",keys:[\"rpc.response.status_code\",\"code\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:\"DEADLINE_EXCEEDED\",examples:[\"DEADLINE_EXCEEDED\"],deprecation:{replacement:\"rpc.response.status_code\",status:\"backfill\"},aliases:[\"rpc.grpc.status_code\",\"rpc.response.status_code\"],changelog:[{version:\"0.19.0\",prs:[533],description:\"Added code attribute\"}]},\"code.filepath\":{brief:\"The source code file name that identifies the code unit as uniquely as possible (preferably an absolute file path).\",type:\"string\",keys:[\"code.file.path\",\"sveltekit.load.node_id\",\"code.filepath\"],applyScrubbing:{key:\"manual\"},isInOtel:!0,visibility:\"public\",example:\"/app/myapplication/http/handler/server.py\",deprecation:{replacement:\"code.file.path\",status:\"backfill\"},aliases:[\"code.file.path\",\"sveltekit.load.node_id\"],changelog:[{version:\"0.22.0\",prs:[611],description:\"Added sveltekit.load.node_id as an alias\"},{version:\"0.1.0\",prs:[61]},{version:\"0.0.0\"}]},\"code.file.path\":{brief:\"The source code file name that identifies the code unit as uniquely as possible (preferably an absolute file path).\",type:\"string\",keys:[\"code.file.path\",\"sveltekit.load.node_id\",\"code.filepath\"],applyScrubbing:{key:\"manual\"},isInOtel:!0,visibility:\"public\",example:\"/app/myapplication/http/handler/server.py\",aliases:[\"code.filepath\",\"sveltekit.load.node_id\"],changelog:[{version:\"0.22.0\",prs:[611],description:\"Added sveltekit.load.node_id as an alias\"},{version:\"0.0.0\"}]},\"code.function\":{brief:\"The method or function name, or equivalent (usually rightmost part of the code unit's name).\",type:\"string\",keys:[\"code.function\",\"code.function.name\",\"django.function_name\"],applyScrubbing:{key:\"manual\"},isInOtel:!0,visibility:\"public\",example:\"server_request\",aliases:[\"code.function.name\",\"django.function_name\"],changelog:[{version:\"0.19.0\",prs:[538],description:\"Added django.function_name as an alias\"},{version:\"0.1.0\",prs:[61,74]},{version:\"0.0.0\"}]},\"code.function.name\":{brief:\"The method or function fully-qualified name without arguments.\",type:\"string\",keys:[\"code.function.name\",\"code.function\",\"django.function_name\"],applyScrubbing:{key:\"manual\"},isInOtel:!0,visibility:\"public\",example:\"server_request\",aliases:[\"code.function\",\"django.function_name\"],changelog:[{version:\"0.19.0\",prs:[538],description:\"Added django.function_name as an alias\"},{version:\"0.1.0\",prs:[127]},{version:\"0.0.0\"}]},\"code.lineno\":{brief:\"The line number in code.filepath best representing the operation. It SHOULD point within the code unit named in code.function\",type:\"integer\",keys:[\"code.line.number\",\"code.lineno\"],applyScrubbing:{key:\"manual\"},isInOtel:!0,visibility:\"public\",example:42,deprecation:{replacement:\"code.line.number\",status:\"backfill\"},aliases:[\"code.line.number\"],changelog:[{version:\"0.4.0\",prs:[228]},{version:\"0.1.0\",prs:[61,108]},{version:\"0.0.0\"}]},\"code.line.number\":{brief:\"The line number in code.filepath best representing the operation. It SHOULD point within the code unit named in code.function\",type:\"integer\",keys:[\"code.line.number\",\"code.lineno\"],applyScrubbing:{key:\"manual\"},isInOtel:!0,visibility:\"public\",example:42,aliases:[\"code.lineno\"],changelog:[{version:\"0.4.0\",prs:[228]},{version:\"0.0.0\"}]},\"code.namespace\":{brief:\"The 'namespace' within which code.function is defined. Usually the qualified class or module name, such that code.namespace + some separator + code.function form a unique identifier for the code unit.\",type:\"string\",keys:[\"code.namespace\"],applyScrubbing:{key:\"manual\"},isInOtel:!0,visibility:\"public\",example:\"http.handler\",changelog:[{version:\"0.1.0\",prs:[61,74]},{version:\"0.0.0\"}]},connectionType:{brief:\"Specifies the type of the current connection (e.g. wifi, ethernet, cellular , etc).\",type:\"string\",keys:[\"network.connection.type\",\"connectionType\",\"device.connection_type\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:\"wifi\",deprecation:{replacement:\"network.connection.type\",reason:\"Old namespace-less attribute, to be replaced with network.connection.type for span-first future\",status:\"backfill\"},aliases:[\"network.connection.type\",\"device.connection_type\"],changelog:[{version:\"0.5.0\",prs:[279],description:\"Added and deprecated attribute to document JS SDK's current behaviour\"}]},\"connection.rtt\":{brief:\"Specifies the estimated effective round-trip time of the current connection, in milliseconds.\",type:\"integer\",keys:[\"network.connection.rtt\",\"connection.rtt\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:100,deprecation:{replacement:\"network.connection.rtt\",reason:\"Old attribute name (no official namespace), to be replaced with network.connection.rtt for span-first future\",status:\"backfill\"},aliases:[\"network.connection.rtt\"],changelog:[{version:\"0.5.0\",prs:[279],description:\"Added and deprecated attribute to document JS SDK's current behaviour\"}]},\"culture.calendar\":{brief:\"The calendar system used by the culture.\",type:\"string\",keys:[\"culture.calendar\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:\"GregorianCalendar\",changelog:[{version:\"0.4.0\",prs:[243]}]},\"culture.display_name\":{brief:\"Human readable name of the culture.\",type:\"string\",keys:[\"culture.display_name\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:\"English (United States)\",changelog:[{version:\"0.4.0\",prs:[243]}]},\"culture.is_24_hour_format\":{brief:\"Whether the culture uses 24-hour time format.\",type:\"boolean\",keys:[\"culture.is_24_hour_format\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:!0,changelog:[{version:\"0.4.0\",prs:[243]}]},\"culture.locale\":{brief:\"The locale identifier following RFC 4646.\",type:\"string\",keys:[\"culture.locale\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:\"en-US\",changelog:[{version:\"0.4.0\",prs:[243]}]},\"culture.timezone\":{brief:\"The timezone of the culture, as a geographic timezone identifier.\",type:\"string\",keys:[\"culture.timezone\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:\"Europe/Vienna\",changelog:[{version:\"0.4.0\",prs:[243]}]},\"db.collection.name\":{brief:\"The name of a collection (table, container) within the database.\",type:\"string\",keys:[\"db.collection.name\",\"db.mongodb.collection\"],applyScrubbing:{key:\"manual\"},isInOtel:!0,visibility:\"public\",example:\"users\",examples:[\"users\",\",customers,orders,\"],aliases:[\"db.mongodb.collection\"],changelog:[{version:\"0.29.0\",prs:[711],description:\"Add comma-wrapped format for calls on more than one collection\"},{version:\"0.19.0\",prs:[483],description:\"Added db.mongodb.collection as an alias\"},{version:\"0.1.0\",prs:[106,127]},{version:\"0.0.0\"}],additionalContext:[\"For a call on more than one collection: the unique names, sorted and wrapped in commas (`,customers,orders,`), so each name matches `,<name>,`.\"]},\"db.connection_string\":{brief:\"The connection string used to connect to the database.\",type:\"string\",keys:[\"db.connection_string\"],applyScrubbing:{key:\"auto\"},isInOtel:!0,visibility:\"public\",example:\"redis://localhost:6379\",examples:[\"redis://localhost:6379\"],deprecation:{reason:\"This attribute is deprecated. The connection is described by server.address and server.port instead, so the value cannot be copied to a single replacement attribute.\"},changelog:[{version:\"0.21.0\",prs:[581],description:\"Added db.connection_string attribute\"}]},\"db.driver.name\":{brief:\"The name of the driver used for the database connection.\",type:\"string\",keys:[\"db.driver.name\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:\"psycopg2\",changelog:[{version:\"0.5.0\",prs:[297],description:\"Added db.driver.name attribute\"}]},\"db.mongodb.collection\":{brief:\"The MongoDB collection being accessed.\",type:\"string\",keys:[\"db.collection.name\",\"db.mongodb.collection\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:\"users\",deprecation:{replacement:\"db.collection.name\",reason:\"This attribute is being deprecated in favor of db.collection.name, which is the OTel-aligned replacement.\",status:\"backfill\"},aliases:[\"db.collection.name\"],changelog:[{version:\"0.19.0\",prs:[483],description:\"Added db.mongodb.collection attribute, deprecated in favor of db.collection.name\"}]},\"db.name\":{brief:\"The name of the database being accessed.\",type:\"string\",keys:[\"db.namespace\",\"db.name\"],applyScrubbing:{key:\"manual\"},isInOtel:!0,visibility:\"public\",example:\"customers\",deprecation:{replacement:\"db.namespace\",status:\"backfill\"},aliases:[\"db.namespace\"],changelog:[{version:\"0.1.0\",prs:[61,127]},{version:\"0.0.0\"}]},\"db.namespace\":{brief:\"The name of the database being accessed.\",type:\"string\",keys:[\"db.namespace\",\"db.name\"],applyScrubbing:{key:\"manual\"},isInOtel:!0,visibility:\"public\",example:\"customers\",aliases:[\"db.name\"],changelog:[{version:\"0.1.0\",prs:[127]},{version:\"0.0.0\"}]},\"db.operation\":{brief:\"The name of the operation being executed.\",type:\"string\",keys:[\"db.operation.name\",\"cloudflare.d1.query_type\",\"db.operation\",\"redis.command\"],applyScrubbing:{key:\"manual\"},isInOtel:!0,visibility:\"public\",example:\"SELECT\",deprecation:{replacement:\"db.operation.name\",status:\"normalize\"},aliases:[\"db.operation.name\",\"cloudflare.d1.query_type\",\"redis.command\"],changelog:[{version:\"0.19.0\",prs:[531],description:\"Added redis.command as an alias\"},{version:\"0.4.0\",prs:[199]},{version:\"0.1.0\",prs:[61,127]},{version:\"0.0.0\"}]},\"db.operation.batch.size\":{brief:\"The number of queries included in a batch operation. Operations are only considered batches when they contain two or more operations, and so db.operation.batch.size SHOULD never be 1.\",type:\"integer\",keys:[\"db.operation.batch.size\"],applyScrubbing:{key:\"manual\"},isInOtel:!0,visibility:\"public\",example:3,changelog:[{version:\"0.11.0\",prs:[407],description:\"Added db.operation.batch.size attribute\"}]},\"db.operation.name\":{brief:\"The name of the operation being executed.\",type:\"string\",keys:[\"db.operation.name\",\"cloudflare.d1.query_type\",\"db.operation\",\"redis.command\"],applyScrubbing:{key:\"manual\"},isInOtel:!0,visibility:\"public\",example:\"SELECT\",aliases:[\"db.operation\",\"cloudflare.d1.query_type\",\"redis.command\"],changelog:[{version:\"0.19.0\",prs:[531],description:\"Added redis.command as an alias\"},{version:\"0.1.0\",prs:[127]},{version:\"0.0.0\"}]},\"db.params\":{brief:\"The query bindings for a database request.\",type:\"string\",keys:[\"db.params\"],applyScrubbing:{key:\"auto\"},isInOtel:!1,visibility:\"public\",example:'[{\"x\": 100}]',examples:['[{\"x\": 100}]'],deprecation:{replacement:\"db.query.parameter.<key>\",reason:\"Instead of adding every binding in the db.params attribute, add them as individual entries with db.query.parameter.<key>.\"},changelog:[{version:\"0.19.0\",prs:[529],description:\"Added db.params attribute\"}]},\"db.query.parameter.<key>\":{brief:\"A query parameter used in db.query.text, with <key> being the parameter name, and the attribute value being a string representation of the parameter value.\",type:\"string\",keys:[\"db.query.parameter.<key>\"],applyScrubbing:{key:\"auto\"},isInOtel:!0,visibility:\"public\",hasDynamicSuffix:!0,example:\"db.query.parameter.foo='123'\",changelog:[{version:\"0.1.0\",prs:[103,127]}]},\"db.query.summary\":{brief:\"A shortened representation of operation(s) in the full query. This attribute must be low-cardinality and should only contain the operation table names.\",type:\"string\",keys:[\"db.query.summary\"],applyScrubbing:{key:\"manual\"},isInOtel:!0,visibility:\"public\",example:\"SELECT users\",examples:[\"SELECT users\",\"INSERT products; UPDATE orders\"],changelog:[{version:\"0.19.0\",prs:[505],description:\"Added multiple examples\"},{version:\"0.4.0\",prs:[208]},{version:\"0.1.0\",prs:[127]},{version:\"0.0.0\"}]},\"db.query.text\":{brief:\"The database parameterized query being executed. Any parameter values (filters, insertion values, etc) should be replaced with parameter placeholders. If applicable, use `db.query.parameter.<key>` to add the parameter value.\",type:\"string\",keys:[\"db.query.text\",\"db.statement\",\"query\"],applyScrubbing:{key:\"auto\"},isInOtel:!0,visibility:\"public\",example:\"SELECT * FROM users WHERE id = $1\",aliases:[\"db.statement\",\"query\"],changelog:[{version:\"0.19.0\",prs:[530],description:\"Added query as an alias\"},{version:\"0.4.0\",prs:[208]},{version:\"0.1.0\",prs:[127]},{version:\"0.0.0\"}]},\"db.redis.connection\":{brief:\"The redis connection name.\",type:\"string\",keys:[\"db.redis.connection\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:\"my-redis-instance\",changelog:[{version:\"0.1.0\",prs:[127]},{version:\"0.0.0\"}]},\"db.redis.key\":{brief:\"The key the Redis command is operating on.\",type:\"string\",keys:[\"db.redis.key\",\"redis.key\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:\"user:2047:city\",aliases:[\"redis.key\"],changelog:[{version:\"0.19.0\",prs:[484],description:\"Added redis.key as an alias\"},{version:\"0.6.0\",prs:[326],description:\"Added db.redis.key attribute\"}]},\"db.redis.parameters\":{brief:\"The array of command parameters given to a redis command.\",type:\"string[]\",keys:[\"db.redis.parameters\"],applyScrubbing:{key:\"auto\"},isInOtel:!1,visibility:\"public\",example:[\"test\",\"*\"],changelog:[{version:\"0.0.0\"}]},\"db.response.status_code\":{brief:\"Database response status code. The status code returned by the database. Usually it represents an error code, but may also represent partial success, warning, or differentiate between various types of successful outcomes.\",type:\"string\",keys:[\"db.response.status_code\"],applyScrubbing:{key:\"manual\"},isInOtel:!0,visibility:\"public\",example:\"ORA-17002\",changelog:[{version:\"0.16.0\",prs:[462],description:\"Added db.response.status_code attribute\"}]},\"db.sql.bindings\":{brief:\"The array of query bindings.\",type:\"string[]\",keys:[\"db.sql.bindings\"],applyScrubbing:{key:\"auto\"},isInOtel:!1,visibility:\"public\",example:[\"1\",\"foo\"],deprecation:{replacement:\"db.query.parameter.<key>\",reason:\"Instead of adding every binding in the db.sql.bindings attribute, add them as individual entires with db.query.parameter.<key>.\"},changelog:[{version:\"0.1.0\",prs:[61]},{version:\"0.0.0\"}]},\"db.statement\":{brief:\"The database statement being executed.\",type:\"string\",keys:[\"db.query.text\",\"db.statement\",\"query\"],applyScrubbing:{key:\"auto\"},isInOtel:!0,visibility:\"public\",example:\"SELECT * FROM users WHERE id = $1\",deprecation:{replacement:\"db.query.text\",reason:\"While this attribute never specifically required parameterization, the replacement, db.query.text, does.\",status:\"normalize\"},aliases:[\"db.query.text\",\"query\"],changelog:[{version:\"0.19.0\",prs:[501],description:\"Improved example, added deprecation reason, and added query as an alias\"},{version:\"0.4.0\",prs:[199]},{version:\"0.1.0\",prs:[61,127]},{version:\"0.0.0\"}]},\"db.stored_procedure.name\":{brief:\"The name of a stored procedure being called.\",type:\"string\",keys:[\"db.stored_procedure.name\"],applyScrubbing:{key:\"manual\"},isInOtel:!0,visibility:\"public\",example:\"GetUserById\",changelog:[{version:\"0.11.0\",prs:[398]}]},\"db.system\":{brief:\"An identifier for the database management system (DBMS) product being used. See [OpenTelemetry docs](https://github.com/open-telemetry/semantic-conventions/blob/main/docs/database/database-spans.md#notes-and-well-known-identifiers-for-dbsystem) for a list of well-known identifiers.\",type:\"string\",keys:[\"db.system.name\",\"db.system\",\"span.system\"],applyScrubbing:{key:\"manual\"},isInOtel:!0,visibility:\"public\",example:\"postgresql\",deprecation:{replacement:\"db.system.name\",status:\"backfill\"},aliases:[\"db.system.name\"],changelog:[{version:\"0.4.0\",prs:[199,224]},{version:\"0.1.0\",prs:[61,127]},{version:\"0.0.0\"}],searchAlias:{name:\"db.system\",deprecatedAliases:[\"span.system\"]}},\"db.system.name\":{brief:\"An identifier for the database management system (DBMS) product being used. See [OpenTelemetry docs](https://github.com/open-telemetry/semantic-conventions/blob/main/docs/database/database-spans.md#notes-and-well-known-identifiers-for-dbsystem) for a list of well-known identifiers.\",type:\"string\",keys:[\"db.system.name\",\"db.system\",\"span.system\"],applyScrubbing:{key:\"manual\"},isInOtel:!0,visibility:\"public\",example:\"postgresql\",aliases:[\"db.system\"],changelog:[{version:\"0.1.0\",prs:[127]},{version:\"0.0.0\"}]},\"db.user\":{brief:\"The database user.\",type:\"string\",keys:[\"db.user\"],applyScrubbing:{key:\"manual\"},isInOtel:!0,visibility:\"public\",example:\"fancy_user\",changelog:[{version:\"0.0.0\"}]},deviceMemory:{brief:\"The estimated total memory capacity of the device, only a rough estimation in gigabytes.\",type:\"string\",keys:[\"device.memory.estimated_capacity\",\"deviceMemory\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:\"8 GB\",deprecation:{replacement:\"device.memory.estimated_capacity\",reason:\"Old namespace-less attribute, to be replaced with device.memory.estimated_capacity for span-first future\",status:\"backfill\"},aliases:[\"device.memory.estimated_capacity\"],changelog:[{version:\"0.5.0\",prs:[281],description:\"Added and deprecated attribute to document JS SDK's current behaviour\"}]},\"device.archs\":{brief:\"The CPU architectures of the device.\",type:\"string[]\",keys:[\"device.archs\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:[\"arm64-v8a\",\"armeabi-v7a\",\"armeabi\"],changelog:[{version:\"0.5.0\",prs:[303],description:\"Added device.archs attribute\"}]},\"device.battery_level\":{brief:\"The battery level of the device as a percentage (0-100).\",type:\"double\",keys:[\"device.battery_level\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:100,changelog:[{version:\"0.5.0\",prs:[303],description:\"Added device.battery_level attribute\"}]},\"device.battery_temperature\":{brief:\"The battery temperature of the device in Celsius.\",type:\"double\",keys:[\"device.battery_temperature\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:25,changelog:[{version:\"0.5.0\",prs:[303],description:\"Added device.battery_temperature attribute\"}]},\"device.boot_time\":{brief:\"A formatted UTC timestamp when the system was booted.\",type:\"string\",keys:[\"device.boot_time\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:\"2018-02-08T12:52:12Z\",changelog:[{version:\"0.5.0\",prs:[303],description:\"Added device.boot_time attribute\"}]},\"device.brand\":{brief:\"The brand of the device.\",type:\"string\",keys:[\"device.brand\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:\"Apple\",changelog:[{version:\"0.1.0\",prs:[116,127]}]},\"device.charging\":{brief:\"Whether the device was charging or not.\",type:\"boolean\",keys:[\"device.charging\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:!1,changelog:[{version:\"0.5.0\",prs:[303],description:\"Added device.charging attribute\"}]},\"device.chipset\":{brief:\"The chipset of the device.\",type:\"string\",keys:[\"device.chipset\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:\"Qualcomm SM8550\",changelog:[{version:\"0.5.0\",prs:[303],description:\"Added device.chipset attribute\"}]},\"device.class\":{brief:\"The classification of the device. For example, `low`, `medium`, or `high`. Typically inferred by Relay - SDKs generally do not need to set this directly.\",type:\"string\",keys:[\"device.class\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:\"medium\",changelog:[{version:\"0.5.0\",prs:[300],description:\"Added device.class attribute\"}]},\"device.connection_type\":{brief:\"The internet connection type currently being used by the device.\",type:\"string\",keys:[\"network.connection.type\",\"connectionType\",\"device.connection_type\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:\"wifi\",deprecation:{replacement:\"network.connection.type\",reason:\"This attribute is being deprecated in favor of network.connection.type\",status:\"backfill\"},aliases:[\"network.connection.type\",\"connectionType\"],changelog:[{version:\"0.5.0\",prs:[303],description:\"Added and deprecated device.connection_type in favor of network.connection.type\"}]},\"device.cpu_description\":{brief:\"A description of the CPU of the device.\",type:\"string\",keys:[\"device.cpu_description\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:\"Intel(R) Core(TM)2 Quad CPU Q6600 @ 2.40GHz\",changelog:[{version:\"0.5.0\",prs:[303],description:\"Added device.cpu_description attribute\"}]},\"device.external_free_storage\":{brief:\"External storage free size in bytes.\",type:\"integer\",keys:[\"device.external_free_storage\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:67108864e3,changelog:[{version:\"0.5.0\",prs:[303],description:\"Added device.external_free_storage attribute\"}]},\"device.external_storage_size\":{brief:\"External storage total size in bytes.\",type:\"integer\",keys:[\"device.external_storage_size\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:134217728e3,changelog:[{version:\"0.5.0\",prs:[303],description:\"Added device.external_storage_size attribute\"}]},\"device.family\":{brief:\"The family of the device.\",type:\"string\",keys:[\"device.family\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:\"iPhone\",changelog:[{version:\"0.1.0\",prs:[116,127]}]},\"device.free_memory\":{brief:\"Free system memory in bytes.\",type:\"integer\",keys:[\"device.free_memory\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:2147483648,changelog:[{version:\"0.5.0\",prs:[300],description:\"Added device.free_memory attribute\"}]},\"device.free_storage\":{brief:\"Free device storage in bytes.\",type:\"integer\",keys:[\"device.free_storage\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:107374182400,changelog:[{version:\"0.5.0\",prs:[303],description:\"Added device.free_storage attribute\"}]},\"device.id\":{brief:\"Unique device identifier.\",type:\"string\",keys:[\"device.id\"],applyScrubbing:{key:\"manual\"},isInOtel:!0,visibility:\"public\",example:\"a1b2c3d4-e5f6-7890-abcd-ef1234567890\",changelog:[{version:\"0.5.0\",prs:[303],description:\"Added device.id attribute\"}]},\"device.locale\":{brief:\"The locale of the device.\",type:\"string\",keys:[\"device.locale\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:\"en-US\",changelog:[{version:\"0.5.0\",prs:[303],description:\"Added device.locale attribute\"}]},\"device.low_memory\":{brief:\"Whether the device was low on memory.\",type:\"boolean\",keys:[\"device.low_memory\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:!1,changelog:[{version:\"0.5.0\",prs:[303],description:\"Added device.low_memory attribute\"}]},\"device.low_power_mode\":{brief:\"Whether the device is in Low Power Mode.\",type:\"boolean\",keys:[\"device.low_power_mode\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:!0,changelog:[{version:\"0.6.0\",prs:[314],description:\"Added device.low_power_mode attribute\"}]},\"device.manufacturer\":{brief:\"The manufacturer of the device.\",type:\"string\",keys:[\"device.manufacturer\"],applyScrubbing:{key:\"manual\"},isInOtel:!0,visibility:\"public\",example:\"Google\",changelog:[{version:\"0.5.0\",prs:[303],description:\"Added device.manufacturer attribute\"}]},\"device.memory.estimated_capacity\":{brief:\"The estimated total memory capacity of the device, only a rough estimation in gigabytes. Browsers report estimations in buckets of powers of 2, mostly capped at 8 GB\",type:\"integer\",keys:[\"device.memory.estimated_capacity\",\"deviceMemory\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:8,aliases:[\"deviceMemory\"],changelog:[{version:\"0.5.0\",prs:[281],description:\"Added attribute device.memory.estimated_capacity to be used instead of deviceMemory\"}]},\"device.memory_size\":{brief:\"Total system memory available in bytes.\",type:\"integer\",keys:[\"device.memory_size\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:17179869184,changelog:[{version:\"0.5.0\",prs:[300],description:\"Added device.memory_size attribute\"}]},\"device.model\":{brief:\"The model of the device.\",type:\"string\",keys:[\"device.model\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:\"iPhone 15 Pro Max\",changelog:[{version:\"0.1.0\",prs:[116,127]}]},\"device.model_id\":{brief:\"An internal hardware revision to identify the device exactly.\",type:\"string\",keys:[\"device.model_id\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:\"N861AP\",changelog:[{version:\"0.5.0\",prs:[300],description:\"Added device.model_id attribute\"}]},\"device.name\":{brief:\"The user-assigned name of the mobile device.\",type:\"string\",keys:[\"device.name\"],applyScrubbing:{key:\"auto\"},isInOtel:!1,visibility:\"public\",example:\"localhost\",changelog:[{version:\"0.24.0\",prs:[647],description:\"Limit brief to mobile attributes and remove server_name alias\"},{version:\"0.21.0\",prs:[602],description:\"Added server_name as an alias\"},{version:\"0.5.0\",prs:[303],description:\"Added device.name attribute\"}]},\"device.online\":{brief:\"Whether the device was online or not.\",type:\"boolean\",keys:[\"device.online\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:!0,changelog:[{version:\"0.5.0\",prs:[303],description:\"Added device.online attribute\"}]},\"device.orientation\":{brief:'The orientation of the device, either \"portrait\" or \"landscape\".',type:\"string\",keys:[\"device.orientation\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:\"portrait\",changelog:[{version:\"0.5.0\",prs:[303],description:\"Added device.orientation attribute\"}]},\"device.processor_count\":{brief:'Number of \"logical processors\".',type:\"integer\",keys:[\"device.processor_count\",\"hardwareConcurrency\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:8,aliases:[\"hardwareConcurrency\"],changelog:[{version:\"0.5.0\",prs:[300],description:\"Added and deprecated attribute device.processor_count in favor of device.cpu.logical_core_count\"}]},\"device.processor_frequency\":{brief:\"Processor frequency in MHz.\",type:\"double\",keys:[\"device.processor_frequency\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:2400,changelog:[{version:\"0.5.0\",prs:[303],description:\"Added device.processor_frequency attribute\"}]},\"device.screen_density\":{brief:\"The screen density of the device.\",type:\"double\",keys:[\"device.screen_density\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:2.625,changelog:[{version:\"0.5.0\",prs:[303],description:\"Added device.screen_density attribute\"}]},\"device.screen_dpi\":{brief:\"The screen density in dots-per-inch (DPI) of the device.\",type:\"integer\",keys:[\"device.screen_dpi\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:420,changelog:[{version:\"0.5.0\",prs:[303],description:\"Added device.screen_dpi attribute\"}]},\"device.screen_height_pixels\":{brief:\"The height of the device screen in pixels.\",type:\"integer\",keys:[\"device.screen_height_pixels\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:2400,changelog:[{version:\"0.5.0\",prs:[303],description:\"Added device.screen_height_pixels attribute\"}]},\"device.screen_width_pixels\":{brief:\"The width of the device screen in pixels.\",type:\"integer\",keys:[\"device.screen_width_pixels\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:1080,changelog:[{version:\"0.5.0\",prs:[303],description:\"Added device.screen_width_pixels attribute\"}]},\"device.simulator\":{brief:\"Whether the device is a simulator or an actual device.\",type:\"boolean\",keys:[\"device.simulator\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:!1,changelog:[{version:\"0.5.0\",prs:[300],description:\"Added device.simulator attribute\"}]},\"device.storage_size\":{brief:\"Total device storage in bytes.\",type:\"integer\",keys:[\"device.storage_size\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:274877906944,changelog:[{version:\"0.5.0\",prs:[303],description:\"Added device.storage_size attribute\"}]},\"device.thermal_state\":{brief:\"The thermal state of the device. Based on Apple's `ProcessInfo.ThermalState` enum.\",type:\"string\",keys:[\"device.thermal_state\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:\"nominal\",changelog:[{version:\"0.5.0\",prs:[303],description:\"Added device.thermal_state attribute\"}]},\"device.timezone\":{brief:\"The timezone of the device.\",type:\"string\",keys:[\"device.timezone\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:\"Europe/Vienna\",changelog:[{version:\"0.5.0\",prs:[303],description:\"Added device.timezone attribute\"}]},\"device.usable_memory\":{brief:\"Memory usable for the app in bytes.\",type:\"integer\",keys:[\"device.usable_memory\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:2147483648,changelog:[{version:\"0.5.0\",prs:[303],description:\"Added device.usable_memory attribute\"}]},dist:{brief:\"The sentry dist.\",type:\"string\",keys:[\"sentry.dist\",\"dist\"],applyScrubbing:{key:\"never\"},isInOtel:!1,visibility:\"public\",example:\"1.0\",deprecation:{replacement:\"sentry.dist\",reason:\"This attribute is being deprecated in favor of sentry.dist.\",status:\"backfill\"},aliases:[\"sentry.dist\"],changelog:[{version:\"0.16.0\",prs:[489],description:\"Added dist attribute\"}]},\"django.function_name\":{brief:\"The fully qualified name of a function used in a Django context.\",type:\"string\",keys:[\"code.function.name\",\"code.function\",\"django.function_name\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:\"django.contrib.sessions.middleware.SessionMiddleware\",examples:[\"django.contrib.sessions.middleware.SessionMiddleware\"],deprecation:{replacement:\"code.function.name\",reason:\"This attribute is being deprecated in favor of code.function.name, which is the framework-agnostic replacement.\",status:\"backfill\"},aliases:[\"code.function.name\",\"code.function\"],changelog:[{version:\"0.19.0\",prs:[538],description:\"Added django.function_name attribute\"}]},\"django.middleware_name\":{brief:\"The name of the Django middleware.\",type:\"string\",keys:[\"middleware.name\",\"django.middleware_name\",\"litestar.middleware_name\",\"starlette.middleware_name\",\"starlite.middleware_name\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:\"AuthenticationMiddleware\",examples:[\"AuthenticationMiddleware\"],deprecation:{replacement:\"middleware.name\",reason:\"This attribute is being deprecated in favor of middleware.name, which is the framework-agnostic replacement.\",status:\"backfill\"},aliases:[\"middleware.name\"],changelog:[{version:\"0.19.0\",prs:[520],description:\"Added django.middleware_name attribute\"}]},effectiveConnectionType:{brief:\"Specifies the estimated effective type of the current connection (e.g. slow-2g, 2g, 3g, 4g).\",type:\"string\",keys:[\"network.connection.effective_type\",\"effectiveConnectionType\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:\"4g\",deprecation:{replacement:\"network.connection.effective_type\",reason:\"Old namespace-less attribute, to be replaced with network.connection.effective_type for span-first future\",status:\"backfill\"},aliases:[\"network.connection.effective_type\"],changelog:[{version:\"0.5.0\",prs:[279],description:\"Added and deprecated attribute to document JS SDK's current behaviour\"}]},environment:{brief:\"The sentry environment.\",type:\"string\",keys:[\"sentry.environment\",\"environment\",\"resource.deployment.environment\",\"resource.deployment.environment.name\"],applyScrubbing:{key:\"never\"},isInOtel:!1,visibility:\"public\",example:\"production\",deprecation:{replacement:\"sentry.environment\",status:\"normalize\"},aliases:[\"sentry.environment\"],changelog:[{version:\"0.19.0\",prs:[427],description:\"Configured normalization\"},{version:\"0.1.0\",prs:[61,127]},{version:\"0.0.0\"}]},\"error.type\":{brief:\"Describes a class of error the operation ended with.\",type:\"string\",keys:[\"error.type\"],applyScrubbing:{key:\"manual\"},isInOtel:!0,visibility:\"public\",example:\"timeout\",changelog:[{version:\"0.1.0\",prs:[127]},{version:\"0.0.0\"}]},\"event.id\":{brief:\"The unique identifier for this event (log record)\",type:\"integer\",keys:[\"event.id\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:1234567890,changelog:[{version:\"0.1.0\",prs:[101]}]},\"event.name\":{brief:\"The name that uniquely identifies this event (log record)\",type:\"string\",keys:[\"event.name\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:\"Process Payload\",changelog:[{version:\"0.1.0\",prs:[101,127]}]},\"exception.escaped\":{brief:\"SHOULD be set to true if the exception event is recorded at a point where it is known that the exception is escaping the scope of the span.\",type:\"boolean\",keys:[\"exception.escaped\"],applyScrubbing:{key:\"manual\"},isInOtel:!0,visibility:\"public\",example:!0,changelog:[{version:\"0.0.0\"}]},\"exception.message\":{brief:\"The error message.\",type:\"string\",keys:[\"exception.message\"],applyScrubbing:{key:\"auto\"},isInOtel:!0,visibility:\"public\",example:\"ENOENT: no such file or directory\",changelog:[{version:\"0.1.0\",prs:[127]},{version:\"0.0.0\"}]},\"exception.stacktrace\":{brief:\"A stacktrace as a string in the natural representation for the language runtime. The representation is to be determined and documented by each language SIG.\",type:\"string\",keys:[\"exception.stacktrace\"],applyScrubbing:{key:\"auto\"},isInOtel:!0,visibility:\"public\",example:`Exception in thread \"main\" java.lang.RuntimeException: Test exception\n at com.example.GenerateTrace.methodB(GenerateTrace.java:13)\n at com.example.GenerateTrace.methodA(GenerateTrace.java:9)\n at com.example.GenerateTrace.main(GenerateTrace.java:5)`,changelog:[{version:\"0.1.0\",prs:[127]},{version:\"0.0.0\"}]},\"exception.type\":{brief:\"The type of the exception (its fully-qualified class name, if applicable). The dynamic type of the exception should be preferred over the static type in languages that support it.\",type:\"string\",keys:[\"exception.type\"],applyScrubbing:{key:\"manual\"},isInOtel:!0,visibility:\"public\",example:\"OSError\",changelog:[{version:\"0.1.0\",prs:[127]},{version:\"0.0.0\"}]},\"faas.coldstart\":{brief:\"A boolean that is true if the serverless function is executed for the first time (aka cold-start).\",type:\"boolean\",keys:[\"faas.coldstart\"],applyScrubbing:{key:\"manual\"},isInOtel:!0,visibility:\"public\",example:!0,changelog:[{version:\"0.0.0\"}]},\"faas.cron\":{brief:\"A string containing the schedule period as Cron Expression.\",type:\"string\",keys:[\"faas.cron\"],applyScrubbing:{key:\"manual\"},isInOtel:!0,visibility:\"public\",example:\"0/5 * * * ? *\",changelog:[{version:\"0.1.0\",prs:[127]},{version:\"0.0.0\"}]},\"faas.duration_in_ms\":{brief:\"The duration a function took to run, in milliseconds.\",type:\"integer\",keys:[\"faas.duration_in_ms\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:120,changelog:[{version:\"0.11.0\",prs:[403]}]},\"faas.entry_point\":{brief:\"The code that's run when the cloud provider invokes your function.\",type:\"string\",keys:[\"faas.entry_point\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:\"my_main_function\",changelog:[{version:\"0.11.0\",prs:[403,415]}]},\"faas.execution\":{brief:\"The execution ID of the current function execution.\",type:\"string\",keys:[\"faas.invocation_id\",\"aws.lambda.aws_request_id\",\"faas.execution\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:\"af9d5aa4-a685-4c5f-a22b-444f80b3cc28\",deprecation:{replacement:\"faas.invocation_id\",reason:\"This attribute is being deprecated in favor of faas.invocation_id, which is the OTel-aligned replacement.\",status:\"backfill\"},aliases:[\"faas.invocation_id\",\"aws.lambda.aws_request_id\"],changelog:[{version:\"0.16.0\",prs:[473],description:\"Added faas.execution attribute, deprecated in favor of faas.invocation_id\"}]},\"faas.id\":{brief:\"The unique ID of the single function that this runtime instance executes.\",type:\"string\",keys:[\"cloud.resource_id\",\"faas.id\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:\"arn:aws:lambda:REGION:ACCOUNT_ID:function:my-function\",deprecation:{replacement:\"cloud.resource_id\",reason:\"This attribute is being deprecated in favor of cloud.resource_id, which is the OTel-aligned replacement (renamed in OTel semantic conventions v1.19.0).\",status:\"backfill\"},aliases:[\"cloud.resource_id\"],changelog:[{version:\"0.16.0\",prs:[475],description:\"Added faas.id attribute, deprecated in favor of cloud.resource_id\"}]},\"faas.identity\":{brief:\"The Service Account (GCP), IAM Execution Role (AWS), or Managed Identity (Azure) used by the serverless function when interacting with other cloud services\",type:\"string\",keys:[\"faas.identity\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:\"name@project.iam.gserviceaccount.com (GCP), arn:aws:iam::123456789012:role/role-name (AWS), 00000000-0000-0000-0000-000000000000 (Azure)\",changelog:[{version:\"0.11.0\",prs:[403]}]},\"faas.invocation_id\":{brief:\"The invocation ID of the current function invocation.\",type:\"string\",keys:[\"faas.invocation_id\",\"aws.lambda.aws_request_id\",\"faas.execution\"],applyScrubbing:{key:\"manual\"},isInOtel:!0,visibility:\"public\",example:\"af9d5aa4-a685-4c5f-a22b-444f80b3cc28\",aliases:[\"aws.lambda.aws_request_id\",\"faas.execution\"],changelog:[{version:\"0.16.0\",prs:[473],description:\"Added faas.execution as an alias\"},{version:\"0.11.1\",prs:[414,424]}]},\"faas.invoked_name\":{brief:\"The name of the invoked function.\",type:\"string\",keys:[\"faas.invoked_name\"],applyScrubbing:{key:\"manual\"},isInOtel:!0,visibility:\"public\",example:\"my-function\",changelog:[{version:\"0.16.0\",prs:[481],description:\"Added faas.invoked_name attribute\"}]},\"faas.invoked_provider\":{brief:\"The cloud provider of the invoked function.\",type:\"string\",keys:[\"faas.invoked_provider\"],applyScrubbing:{key:\"manual\"},isInOtel:!0,visibility:\"public\",example:\"aws\",changelog:[{version:\"0.16.0\",prs:[481],description:\"Added faas.invoked_provider attribute\"}]},\"faas.invoked_region\":{brief:\"The cloud region of the invoked function.\",type:\"string\",keys:[\"faas.invoked_region\"],applyScrubbing:{key:\"manual\"},isInOtel:!0,visibility:\"public\",example:\"eu-central-1\",changelog:[{version:\"0.16.0\",prs:[481],description:\"Added faas.invoked_region attribute\"}]},\"faas.max_memory\":{brief:\"The amount of memory available to the serverless function, in bytes.\",type:\"integer\",keys:[\"faas.max_memory\"],applyScrubbing:{key:\"manual\"},isInOtel:!0,visibility:\"public\",example:134217728,examples:[134217728,1073741824],changelog:[{version:\"0.30.0\",prs:[715],description:\"Added faas.max_memory attribute\"}],additionalContext:[\"On AWS Lambda, multiply AWS_LAMBDA_FUNCTION_MEMORY_SIZE by 1,048,576 to convert the configured memory from MiB to bytes.\"]},\"faas.name\":{brief:\"The name of the serverless function\",type:\"string\",keys:[\"faas.name\",\"aws.lambda.function_name\"],applyScrubbing:{key:\"manual\"},isInOtel:!0,visibility:\"public\",example:\"my_function\",aliases:[\"aws.lambda.function_name\"],changelog:[{version:\"0.11.0\",prs:[403,415]}]},\"faas.time\":{brief:\"A string containing the function invocation time in the ISO 8601 format expressed in UTC.\",type:\"string\",keys:[\"faas.time\"],applyScrubbing:{key:\"manual\"},isInOtel:!0,visibility:\"public\",example:\"2020-01-23T13:47:06Z\",changelog:[{version:\"0.1.0\",prs:[127]},{version:\"0.0.0\"}]},\"faas.trigger\":{brief:\"Type of the trigger which caused this function invocation.\",type:\"string\",keys:[\"faas.trigger\"],applyScrubbing:{key:\"manual\"},isInOtel:!0,visibility:\"public\",example:\"timer\",changelog:[{version:\"0.1.0\",prs:[127]},{version:\"0.0.0\"}]},\"faas.version\":{brief:\"The version of the function that was invoked\",type:\"string\",keys:[\"faas.version\",\"aws.lambda.function_version\"],applyScrubbing:{key:\"manual\"},isInOtel:!0,visibility:\"public\",example:\"$LATEST\",aliases:[\"aws.lambda.function_version\"],changelog:[{version:\"0.11.1\",prs:[414,424]}]},fcp:{brief:\"The time it takes for the browser to render the first piece of meaningful content on the screen\",type:\"double\",keys:[\"browser.web_vital.fcp.value\",\"fcp\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:547.6951,deprecation:{replacement:\"browser.web_vital.fcp.value\",reason:\"This attribute is being deprecated in favor of browser.web_vital.fcp.value\",status:\"backfill\"},aliases:[\"browser.web_vital.fcp.value\"],changelog:[{version:\"0.5.0\",prs:[235]}]},\"file.path\":{brief:\"Path to the file.\",type:\"string\",keys:[\"file.path\"],applyScrubbing:{key:\"auto\",reason:\"File paths can contain end-user paths (e.g. from stack traces) that may be sensitive.\"},isInOtel:!0,visibility:\"public\",example:\"/home/user/example.txt\",changelog:[{version:\"0.17.0\",prs:[458],description:\"Added file.path attribute\"}]},\"file.size\":{brief:\"File size in bytes.\",type:\"integer\",keys:[\"file.size\"],applyScrubbing:{key:\"manual\"},isInOtel:!0,visibility:\"public\",example:1024,changelog:[{version:\"0.17.0\",prs:[458],description:\"Added file.size attribute\"}]},\"flag.evaluation.<key>\":{brief:\"An instance of a feature flag evaluation. The value of this attribute is the boolean representing the evaluation result. The <key> suffix is the name of the feature flag.\",type:\"boolean\",keys:[\"flag.evaluation.<key>\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",hasDynamicSuffix:!0,example:\"flag.evaluation.is_new_ui=true\",changelog:[{version:\"0.1.0\",prs:[103]}]},fp:{brief:\"The time it takes for the browser to render the first pixel on the screen\",type:\"double\",keys:[\"browser.web_vital.fp.value\",\"fp\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:477.1926,deprecation:{replacement:\"browser.web_vital.fp.value\",reason:\"This attribute is being deprecated in favor of browser.web_vital.fp.value\",status:\"backfill\"},aliases:[\"browser.web_vital.fp.value\"],changelog:[{version:\"0.5.0\",prs:[235]}]},\"frames.delay\":{brief:\"The sum of all delayed frame durations in seconds during the lifetime of the span. For more information see [frames delay](https://develop.sentry.dev/sdk/performance/frames-delay/).\",type:\"integer\",keys:[\"app.vitals.frames.delay.value\",\"frames.delay\",\"mobile.frames_delay\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:5,deprecation:{replacement:\"app.vitals.frames.delay.value\",reason:\"Replaced by app.vitals.frames.delay.value to align with the app.vitals.* namespace for mobile performance attributes\",status:\"backfill\"},aliases:[\"app.vitals.frames.delay.value\"],changelog:[{version:\"0.5.0\",prs:[313],description:\"Deprecated in favor of app.vitals.frames.delay.value\"},{version:\"0.4.0\",prs:[228]},{version:\"0.0.0\"}],searchAlias:{name:\"mobile.frames_delay\",type:\"second\"}},\"frames.frozen\":{brief:\"The number of frozen frames rendered during the lifetime of the span.\",type:\"integer\",keys:[\"app.vitals.frames.frozen.count\",\"frames.frozen\",\"mobile.frozen_frames\",\"sentry.frames.frozen\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:3,deprecation:{replacement:\"app.vitals.frames.frozen.count\",reason:\"Replaced by app.vitals.frames.frozen.count to align with the app.vitals.* namespace for mobile performance attributes\",status:\"backfill\"},aliases:[\"app.vitals.frames.frozen.count\",\"sentry.frames.frozen\"],changelog:[{version:\"0.19.0\",prs:[500],description:\"Added sentry.frames.frozen as an alias\"},{version:\"0.5.0\",prs:[313],description:\"Deprecated in favor of app.vitals.frames.frozen.count\"},{version:\"0.4.0\",prs:[228]},{version:\"0.0.0\"}],searchAlias:{name:\"mobile.frozen_frames\"}},frames_frozen_rate:{brief:\"The rate of frozen frames, or `app.vitals.frames.frozen.count` divided by `app.vitals.frames.total.count`. This is computed by Relay.\",type:\"double\",keys:[\"app.vitals.frames.frozen.rate\",\"frames_frozen_rate\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",deprecation:{replacement:\"app.vitals.frames.frozen.rate\",reason:\"Replaced by app.vitals.frames.frozen.rate to align with the app.vitals.* namespace for mobile performance attributes\",status:\"backfill\"},aliases:[\"app.vitals.frames.frozen.rate\"],changelog:[{version:\"0.19.0\",prs:[493],description:\"Deprecated in favor of app.vitals.frames.frozen.rate\"},{version:\"0.7.0\",prs:[362],description:\"Added frames_frozen_rate attribute\"}]},\"frames.slow\":{brief:\"The number of slow frames rendered during the lifetime of the span.\",type:\"integer\",keys:[\"app.vitals.frames.slow.count\",\"frames.slow\",\"mobile.slow_frames\",\"sentry.frames.slow\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:1,deprecation:{replacement:\"app.vitals.frames.slow.count\",reason:\"Replaced by app.vitals.frames.slow.count to align with the app.vitals.* namespace for mobile performance attributes\",status:\"backfill\"},aliases:[\"app.vitals.frames.slow.count\",\"sentry.frames.slow\"],changelog:[{version:\"0.19.0\",prs:[500],description:\"Added sentry.frames.slow as an alias\"},{version:\"0.5.0\",prs:[313],description:\"Deprecated in favor of app.vitals.frames.slow.count\"},{version:\"0.4.0\",prs:[228]},{version:\"0.0.0\"}],searchAlias:{name:\"mobile.slow_frames\"}},frames_slow_rate:{brief:\"The rate of slow frames, or `app.vitals.frames.slow.count` divided by `app.vitals.frames.total.count`. This is computed by Relay.\",type:\"double\",keys:[\"app.vitals.frames.slow.rate\",\"frames_slow_rate\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",deprecation:{replacement:\"app.vitals.frames.slow.rate\",reason:\"Replaced by app.vitals.frames.slow.rate to align with the app.vitals.* namespace for mobile performance attributes\",status:\"backfill\"},aliases:[\"app.vitals.frames.slow.rate\"],changelog:[{version:\"0.19.0\",prs:[493],description:\"Deprecated in favor of app.vitals.frames.slow.rate\"},{version:\"0.7.0\",prs:[362],description:\"Added frames_slow_rate attribute\"}]},\"frames.total\":{brief:\"The number of total frames rendered during the lifetime of the span.\",type:\"integer\",keys:[\"app.vitals.frames.total.count\",\"frames.total\",\"mobile.total_frames\",\"sentry.frames.total\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:60,deprecation:{replacement:\"app.vitals.frames.total.count\",reason:\"Replaced by app.vitals.frames.total.count to align with the app.vitals.* namespace for mobile performance attributes\",status:\"backfill\"},aliases:[\"app.vitals.frames.total.count\",\"sentry.frames.total\"],changelog:[{version:\"0.19.0\",prs:[500],description:\"Added sentry.frames.total as an alias\"},{version:\"0.5.0\",prs:[313],description:\"Deprecated in favor of app.vitals.frames.total.count\"},{version:\"0.4.0\",prs:[228]},{version:\"0.0.0\"}],searchAlias:{name:\"mobile.total_frames\"}},fs_error:{brief:\"The error message of a file system error.\",type:\"string\",keys:[\"fs_error\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:\"ENOENT: no such file or directory\",deprecation:{replacement:\"error.type\",reason:\"This attribute is not part of the OpenTelemetry specification and error.type fits much better. The value changes from the full error message to the syscall error code, so the old value cannot be copied over.\"},changelog:[{version:\"0.23.0\",prs:[638],description:\"Remove unnecessary transformation and change deprecation status to null.\"},{version:\"0.22.0\",prs:[589],description:\"Transform fs_error into error.type\"},{version:\"0.1.0\",prs:[61,127]},{version:\"0.0.0\"}]},\"gcp.function.context.event_id\":{brief:\"The event ID from the legacy GCP Cloud Function context (1st gen)\",type:\"string\",keys:[\"gcp.function.context.event_id\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:\"1234567890\",changelog:[{version:\"0.7.0\",prs:[371],description:\"Added gcp.function.context.event_id attribute\"}]},\"gcp.function.context.event_type\":{brief:\"The type of the GCP Cloud Function event\",type:\"string\",keys:[\"gcp.function.context.event_type\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:\"google.pubsub.topic.publish\",changelog:[{version:\"0.7.0\",prs:[371],description:\"Added gcp.function.context.event_type attribute\"}]},\"gcp.function.context.id\":{brief:\"The unique event ID from the GCP CloudEvents context (2nd gen Cloud Functions)\",type:\"string\",keys:[\"gcp.function.context.id\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:\"1234567890\",changelog:[{version:\"0.7.0\",prs:[371],description:\"Added gcp.function.context.id attribute\"}]},\"gcp.function.context.resource\":{brief:\"The resource that triggered the GCP Cloud Function event\",type:\"string\",keys:[\"gcp.function.context.resource\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:\"projects/my-project/topics/my-topic\",changelog:[{version:\"0.7.0\",prs:[371],description:\"Added gcp.function.context.resource attribute\"}]},\"gcp.function.context.source\":{brief:\"The source of the GCP Cloud Function event\",type:\"string\",keys:[\"gcp.function.context.source\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:\"//pubsub.googleapis.com/projects/my-project/topics/my-topic\",changelog:[{version:\"0.7.0\",prs:[371],description:\"Added gcp.function.context.source attribute\"}]},\"gcp.function.context.specversion\":{brief:\"The CloudEvents specification version of the GCP Cloud Function event\",type:\"string\",keys:[\"gcp.function.context.specversion\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:\"1.0\",changelog:[{version:\"0.7.0\",prs:[371],description:\"Added gcp.function.context.specversion attribute\"}]},\"gcp.function.context.time\":{brief:\"The timestamp of the GCP Cloud Function event\",type:\"string\",keys:[\"gcp.function.context.time\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:\"2024-01-01T00:00:00.000Z\",changelog:[{version:\"0.7.0\",prs:[371],description:\"Added gcp.function.context.time attribute\"}]},\"gcp.function.context.timestamp\":{brief:\"The legacy timestamp of the GCP Cloud Function event\",type:\"string\",keys:[\"gcp.function.context.timestamp\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:\"2024-01-01T00:00:00.000Z\",changelog:[{version:\"0.7.0\",prs:[371],description:\"Added gcp.function.context.timestamp attribute\"}]},\"gcp.function.context.type\":{brief:\"The type of the GCP Cloud Function event context\",type:\"string\",keys:[\"gcp.function.context.type\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:\"cloud_functions.context\",changelog:[{version:\"0.7.0\",prs:[371],description:\"Added gcp.function.context.type attribute\"}]},\"gcp.project.id\":{brief:\"The ID of the project in GCP that this resource is associated with\",type:\"string\",keys:[\"gcp.project.id\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:\"my-project-123\",changelog:[{version:\"0.11.0\",prs:[403]}]},gcp_region:{brief:\"The geographical region the GCP resource is running\",type:\"string\",keys:[\"cloud.region\",\"aws_region\",\"gcp_region\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:\"us-east-1\",examples:[\"us-east-1\"],deprecation:{replacement:\"cloud.region\",status:\"backfill\"},aliases:[\"cloud.region\",\"aws_region\"],changelog:[{version:\"0.19.0\",prs:[535],description:\"Added gcp_region attribute\"}]},\"gen_ai.agent.name\":{brief:\"The name of the agent being used.\",type:\"string\",keys:[\"gen_ai.agent.name\"],applyScrubbing:{key:\"manual\"},isInOtel:!0,visibility:\"public\",example:\"ResearchAssistant\",changelog:[{version:\"0.1.0\",prs:[62,127]}]},\"gen_ai.context.utilization\":{brief:\"The fraction of the model context window utilized by this generation.\",type:\"double\",keys:[\"gen_ai.context.utilization\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:.75,changelog:[{version:\"0.5.0\",prs:[315],description:\"Added gen_ai.context.utilization attribute\"}]},\"gen_ai.context.window_size\":{brief:\"The maximum context window size supported by the model for this generation.\",type:\"integer\",keys:[\"gen_ai.context.window_size\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:128e3,changelog:[{version:\"0.5.0\",prs:[315],description:\"Added gen_ai.context.window_size attribute\"}]},\"gen_ai.conversation.id\":{brief:\"The unique identifier for a conversation (session, thread), used to store and correlate messages within this conversation.\",type:\"string\",keys:[\"gen_ai.conversation.id\"],applyScrubbing:{key:\"manual\"},isInOtel:!0,visibility:\"public\",example:\"conv_5j66UpCpwteGg4YSxUnt7lPY\",changelog:[{version:\"0.4.0\",prs:[250]}]},\"gen_ai.cost.cache_creation.input_tokens\":{brief:\"The cost of input tokens written to cache in USD.\",type:\"double\",keys:[\"gen_ai.cost.cache_creation.input_tokens\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:12.34,changelog:[{version:\"0.16.0\",description:\"Added gen_ai.cost.cache_creation.input_tokens attribute\"}],additionalContext:[\"This attribute appears on both agent parent spans (aggregated totals) and LLM child spans (per-call values). When using sum() to calculate total cost, filter to gen_ai.operation.type:ai_client to avoid double-counting hierarchical spans.\",\"Despite the name 'cost.cache_creation.input_tokens', this value is cost in USD, not a token count. For token counts, use gen_ai.usage.cache_creation.input_tokens.\",\"This is a subset of gen_ai.cost.input_tokens, not an independent cost. Do not sum this with gen_ai.cost.input_tokens \\u2014 it is already included.\"]},\"gen_ai.cost.cache_read.input_tokens\":{brief:\"The cost of cached input tokens in USD.\",type:\"double\",keys:[\"gen_ai.cost.cache_read.input_tokens\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:12.34,changelog:[{version:\"0.16.0\",description:\"Added gen_ai.cost.cache_read.input_tokens attribute\"}],additionalContext:[\"This attribute appears on both agent parent spans (aggregated totals) and LLM child spans (per-call values). When using sum() to calculate total cost, filter to gen_ai.operation.type:ai_client to avoid double-counting hierarchical spans.\",\"Despite the name 'cost.cache_read.input_tokens', this value is cost in USD, not a token count. For token counts, use gen_ai.usage.cache_read.input_tokens.\",\"This is a subset of gen_ai.cost.input_tokens, not an independent cost. Do not sum this with gen_ai.cost.input_tokens \\u2014 it is already included.\"]},\"gen_ai.cost.input_tokens\":{brief:\"The total cost of all input tokens in USD (includes cached and cache creation tokens).\",type:\"double\",keys:[\"gen_ai.cost.input_tokens\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:123.45,changelog:[{version:\"0.9.0\",prs:[397],description:\"Add additional_context\"},{version:\"0.4.0\",prs:[228]},{version:\"0.1.0\",prs:[112]}],additionalContext:[\"This attribute appears on both agent parent spans (aggregated totals) and LLM child spans (per-call values). When using sum() to calculate total cost, filter to gen_ai.operation.type:ai_client to avoid double-counting hierarchical spans.\",\"Despite the name 'cost.input_tokens', this value is cost in USD, not a token count. For token counts, use gen_ai.usage.input_tokens.\",\"This is the total cost of all input tokens, including cached and cache creation tokens at their respective rates. For the cached portion, see gen_ai.cost.cache_read.input_tokens. For the cache creation portion, see gen_ai.cost.cache_creation.input_tokens.\"]},\"gen_ai.cost.output_tokens\":{brief:\"The total cost of all output tokens in USD (includes reasoning tokens).\",type:\"double\",keys:[\"gen_ai.cost.output_tokens\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:123.45,changelog:[{version:\"0.9.0\",prs:[397],description:\"Add additional_context\"},{version:\"0.4.0\",prs:[228]},{version:\"0.1.0\",prs:[112]}],additionalContext:[\"This attribute appears on both agent parent spans (aggregated totals) and LLM child spans (per-call values). When using sum() to calculate total cost, filter to gen_ai.operation.type:ai_client to avoid double-counting hierarchical spans.\",\"Despite the name 'cost.output_tokens', this value is cost in USD, not a token count. For token counts, use gen_ai.usage.output_tokens.\",\"This is the total cost of all output tokens, including reasoning tokens at their respective rate. For the reasoning portion, see gen_ai.cost.reasoning.output_tokens.\"]},\"gen_ai.cost.reasoning.output_tokens\":{brief:\"The cost of reasoning output tokens in USD.\",type:\"double\",keys:[\"gen_ai.cost.reasoning.output_tokens\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:12.34,changelog:[{version:\"0.16.0\",description:\"Added gen_ai.cost.reasoning.output_tokens attribute\"}],additionalContext:[\"This attribute appears on both agent parent spans (aggregated totals) and LLM child spans (per-call values). When using sum() to calculate total cost, filter to gen_ai.operation.type:ai_client to avoid double-counting hierarchical spans.\",\"Despite the name 'cost.reasoning.output_tokens', this value is cost in USD, not a token count. For token counts, use gen_ai.usage.reasoning.output_tokens.\",\"This is a subset of gen_ai.cost.output_tokens, not an independent cost. Do not sum this with gen_ai.cost.output_tokens \\u2014 it is already included.\"]},\"gen_ai.cost.total_tokens\":{brief:\"The total cost for the tokens used.\",type:\"double\",keys:[\"gen_ai.cost.total_tokens\",\"ai.total_cost\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:12.34,aliases:[\"ai.total_cost\"],changelog:[{version:\"0.9.0\",prs:[397],description:\"Add additional_context\"},{version:\"0.5.0\",prs:[264]},{version:\"0.4.0\",prs:[228]},{version:\"0.1.0\",prs:[126]}],additionalContext:[\"This attribute appears on both agent parent spans (aggregated totals) and LLM child spans (per-call values). When using sum() to calculate total cost, filter to gen_ai.operation.type:ai_client to avoid double-counting hierarchical spans.\",\"Despite the name 'cost.total_tokens', this value is cost in USD, not a token count. For token counts, use gen_ai.usage.total_tokens.\"]},\"gen_ai.embeddings.input\":{brief:\"The input to the embeddings model.\",type:\"string\",keys:[\"gen_ai.embeddings.input\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:\"What's the weather in Paris?\",changelog:[{version:\"0.3.1\",prs:[195]}]},\"gen_ai.function_id\":{brief:\"Framework-specific tracing label for the execution of a function or other unit of execution in a generative AI system.\",type:\"string\",keys:[\"gen_ai.function_id\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:\"my-awesome-function\",changelog:[{version:\"0.5.0\",prs:[308],description:\"Added gen_ai.function_id attribute\"}]},\"gen_ai.input.messages\":{brief:'The messages passed to the model. It has to be a stringified version of an array of objects. The `role` attribute of each object must be `\"user\"`, `\"assistant\"`, `\"tool\"`, or `\"system\"`. For messages of the role `\"tool\"`, the `content` can be a string or an arbitrary object with information about the tool call. For other messages the `content` can be either a string or a list of objects in the format `{type: \"text\", text:\"...\"}`. The first example shows this shape. Some operations use a different shape. See the additional context.',type:\"string\",keys:[\"gen_ai.input.messages\",\"ai.input_messages\",\"ai.prompt\",\"ai.prompt.messages\",\"ai.texts\",\"gen_ai.prompt\"],applyScrubbing:{key:\"manual\"},isInOtel:!0,visibility:\"public\",example:'[{\"role\": \"user\", \"parts\": [{\"type\": \"text\", \"content\": \"Weather in Paris?\"}]}, {\"role\": \"assistant\", \"parts\": [{\"type\": \"tool_call\", \"id\": \"call_VSPygqKTWdrhaFErNvMV18Yl\", \"name\": \"get_weather\", \"arguments\": {\"location\": \"Paris\"}}]}, {\"role\": \"tool\", \"parts\": [{\"type\": \"tool_call_response\", \"id\": \"call_VSPygqKTWdrhaFErNvMV18Yl\", \"result\": \"rainy, 57\\xB0F\"}]}]',examples:['[{\"role\": \"user\", \"parts\": [{\"type\": \"text\", \"content\": \"Weather in Paris?\"}]}, {\"role\": \"assistant\", \"parts\": [{\"type\": \"tool_call\", \"id\": \"call_VSPygqKTWdrhaFErNvMV18Yl\", \"name\": \"get_weather\", \"arguments\": {\"location\": \"Paris\"}}]}, {\"role\": \"tool\", \"parts\": [{\"type\": \"tool_call_response\", \"id\": \"call_VSPygqKTWdrhaFErNvMV18Yl\", \"result\": \"rainy, 57\\xB0F\"}]}]','[{\"state\": \"I cannot log in, and I also want a refund for last month.\", \"questions\": {\"authIssue\": {\"type\": \"noul\", \"instructions\": \"Is there a login problem?\"}, \"department\": {\"type\": \"choice\", \"instructions\": \"Which team should handle this?\", \"criteria\": {\"billing\": \"Charges and refunds\", \"technical\": \"Bugs and outages\"}}}}]','[{\"state\": \"Invoice INV-2291 from Northwind Supply, issued 2026-09-02, net 30. 4 pallets at $250.00 each, shipping $80.00. Contact: Dana Ruiz, Priya Shah.\", \"fields\": {\"invoice_number\": {\"type\": \"text\"}, \"due_date\": {\"type\": \"date\", \"instructions\": \"Issue date plus the net payment days\"}, \"total\": {\"type\": \"number\", \"decimals\": 2, \"unit\": \"USD\", \"instructions\": \"Amount due including shipping\"}, \"contacts\": {\"type\": \"list\", \"items\": \"text\"}, \"po_number\": {\"type\": \"text\", \"instructions\": \"Purchase order number\"}, \"days_to_pay\": {\"type\": \"estimate\", \"min\": 0, \"max\": 120, \"step\": 1, \"instructions\": \"Days after issue until this invoice is paid\"}}}]'],aliases:[\"ai.texts\",\"ai.prompt.messages\",\"gen_ai.prompt\",\"ai.prompt\"],changelog:[{version:\"0.28.0\",prs:[728],description:\"Describe the extraction message shape for gen_ai.extract and move operation-specific shapes to additional context\"},{version:\"0.26.0\",prs:[650],description:\"Describe the evaluation message shape for gen_ai.evaluate\"},{version:\"0.21.0\",prs:[583],description:\"Added ai.prompt as an alias\"},{version:\"0.5.0\",prs:[264]},{version:\"0.4.0\",prs:[221]}],additionalContext:['For `gen_ai.decide` operations, the array holds one object `{state: ..., questions: {...}}`. `state` is the evaluated state. `questions` holds the questions keyed by name, as the caller passed them. Replace binary data in `state`, including `data:` URLs, with the string `\"[Blob substitute]\"`. The second example shows this shape.','For `gen_ai.extract` operations, the array holds one object `{state?: string, fields: {<name>: <field spec>}, images?: string[], reference_date?: string, options?: {...}}`. This object is the request body as the caller passed it, without `model`. Do not change the values, and leave out the keys that the caller did not set. Do not record the image data. Replace each image with the string `\"[Blob substitute]\"`. `state` is the text that the model reads. `fields` holds the field specs keyed by field name. Set the model in `gen_ai.request.model`. The third example shows this shape.']},\"gen_ai.memory.query.text\":{brief:\"The search query used to retrieve memories. Only applicable to 'search_memory'. Opt-in: instrumentations SHOULD NOT capture this by default and SHOULD gate it behind explicit user opt-in, as it may contain sensitive information.\",type:\"string\",keys:[\"gen_ai.memory.query.text\"],applyScrubbing:{key:\"manual\"},isInOtel:!0,visibility:\"public\",example:\"user dietary preferences\",examples:[\"user dietary preferences\",\"past flight bookings\"],changelog:[{version:\"0.27.0\",prs:[653],description:\"Added gen_ai.memory.query.text attribute\"}]},\"gen_ai.memory.records\":{brief:\"The memory records stored or retrieved in a memory operation. Stringified JSON array; each element follows the OTel MemoryRecord schema: {content (required), id, metadata, score}. Opt-in: instrumentations SHOULD NOT capture this by default and SHOULD gate it behind explicit user opt-in, as it may contain sensitive information including user/PII data.\",type:\"string\",keys:[\"gen_ai.memory.records\"],applyScrubbing:{key:\"manual\"},isInOtel:!0,visibility:\"public\",example:'[{\"content\": \"User prefers dark mode\", \"id\": \"mem_123\", \"score\": 0.95}, {\"content\": {\"preference\": \"vegetarian meals\", \"confidence\": 0.9}, \"metadata\": {\"source\": \"profile\"}}]',examples:['[{\"content\": \"User prefers dark mode\", \"id\": \"mem_123\", \"score\": 0.95}, {\"content\": {\"preference\": \"vegetarian meals\", \"confidence\": 0.9}, \"metadata\": {\"source\": \"profile\"}}]'],changelog:[{version:\"0.27.0\",prs:[653],description:\"Added gen_ai.memory.records attribute\"}]},\"gen_ai.memory.record.count\":{brief:\"The number of memory records relevant to the operation. For 'search_memory' this is the number returned; for 'create_memory', 'update_memory', 'upsert_memory' and 'delete_memory' it is the number the operation attempted to create, modify, create-or-update, or delete respectively.\",type:\"integer\",keys:[\"gen_ai.memory.record.count\"],applyScrubbing:{key:\"manual\"},isInOtel:!0,visibility:\"public\",example:3,examples:[3],changelog:[{version:\"0.27.0\",prs:[653],description:\"Added gen_ai.memory.record.count attribute\"}]},\"gen_ai.memory.record.id\":{brief:\"The unique identifier of the memory record. Set when the operation applies to a specific memory record. For 'delete_memory', its absence may indicate the operation intends to delete all memory records in the store.\",type:\"string\",keys:[\"gen_ai.memory.record.id\"],applyScrubbing:{key:\"manual\"},isInOtel:!0,visibility:\"public\",example:\"mem_5j66UpCpwteGg4YSxUnt7lPY\",examples:[\"mem_5j66UpCpwteGg4YSxUnt7lPY\"],changelog:[{version:\"0.27.0\",prs:[653],description:\"Added gen_ai.memory.record.id attribute\"}]},\"gen_ai.memory.store.id\":{brief:\"The unique identifier of the memory store the operation targets. What this maps to is implementation-specific (e.g. a collection, namespace, or vector index) and SHOULD be documented per integration.\",type:\"string\",keys:[\"gen_ai.memory.store.id\"],applyScrubbing:{key:\"manual\"},isInOtel:!0,visibility:\"public\",example:\"ms_abc123\",examples:[\"ms_abc123\",\"user-preferences-store\",\"seer-knowledge\"],changelog:[{version:\"0.27.0\",prs:[653],description:\"Added gen_ai.memory.store.id attribute\"}]},\"gen_ai.operation.name\":{brief:\"The name of the operation being performed.\",type:\"string\",keys:[\"gen_ai.operation.name\"],applyScrubbing:{key:\"manual\"},isInOtel:!0,visibility:\"public\",example:\"chat\",changelog:[{version:\"0.28.0\",prs:[728],description:\"Added 'extract' to the well-known values\"},{version:\"0.27.0\",prs:[653,680],description:\"Added memory operation values, 'evaluate', and 'decide' to the well-known values; deprecated 'evaluate' in favor of 'decide'\"},{version:\"0.4.0\",prs:[225]},{version:\"0.1.0\",prs:[62,127]}]},\"gen_ai.operation.type\":{brief:\"The type of AI operation. Added during ingestion based on span.op and gen_ai.operation.type. Used to filter and aggregate data in the UI\",type:\"string\",keys:[\"gen_ai.operation.type\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:\"tool\",changelog:[{version:\"0.27.0\",prs:[653],description:\"Added 'memory' value\"},{version:\"0.4.0\",prs:[257]},{version:\"0.1.0\",prs:[113,127]}]},\"gen_ai.output.messages\":{brief:\"The model's response messages. It has to be a stringified version of an array of message objects, which can include text responses and tool calls. The first example shows this shape. Some operations use a different shape. See the additional context.\",type:\"string\",keys:[\"gen_ai.output.messages\",\"ai.response.text\",\"ai.response.toolCalls\",\"ai.responses\",\"ai.tool_calls\"],applyScrubbing:{key:\"manual\"},isInOtel:!0,visibility:\"public\",example:'[{\"role\": \"assistant\", \"parts\": [{\"type\": \"text\", \"content\": \"The weather in Paris is currently rainy with a temperature of 57\\xB0F.\"}], \"finish_reason\": \"stop\"}]',examples:['[{\"role\": \"assistant\", \"parts\": [{\"type\": \"text\", \"content\": \"The weather in Paris is currently rainy with a temperature of 57\\xB0F.\"}], \"finish_reason\": \"stop\"}]','[{\"answers\": {\"authIssue\": {\"type\": \"noul\", \"noul\": 0.98}, \"department\": {\"type\": \"choice\", \"choice\": \"billing\", \"confidence\": 0.28, \"probabilities\": {\"billing\": 0.64, \"technical\": 0.36}}}}]','[{\"answers\": {\"invoice_number\": {\"type\": \"text\", \"p_null\": 3.8e-10, \"span\": [8, 16], \"guess\": \"INV-2291\", \"confidence\": 1, \"value\": \"INV-2291\"}, \"due_date\": {\"type\": \"date\", \"p_null\": 1.9e-08, \"guess\": \"2026-10-02\", \"confidence\": 0.9999, \"value\": \"2026-10-02\"}, \"total\": {\"type\": \"number\", \"p_null\": 2.3e-08, \"guess\": 1080, \"confidence\": 0.9999, \"value\": 1080}, \"contacts\": {\"type\": \"list\", \"value\": [\"Dana Ruiz\", \"Priya Shah\"], \"spans\": [[120, 129], [131, 141]], \"confidence\": 0.9999}, \"po_number\": {\"type\": \"text\", \"p_null\": 1, \"span\": [8, 16], \"guess\": \"INV-2291\", \"confidence\": 0.9995, \"value\": null}, \"days_to_pay\": {\"type\": \"estimate\", \"value\": 30, \"mean\": 29.535, \"median\": 30, \"p10\": 21, \"p90\": 38, \"p_below\": 5.9e-06, \"p_above\": 1.2e-05}}, \"truncated\": false}]'],aliases:[\"ai.response.toolCalls\",\"ai.response.text\"],changelog:[{version:\"0.28.0\",prs:[728],description:\"Describe the extraction message shape for gen_ai.extract and move operation-specific shapes to additional context\"},{version:\"0.26.0\",prs:[650],description:\"Describe the evaluation message shape for gen_ai.evaluate\"},{version:\"0.4.0\",prs:[221]}],additionalContext:[\"For `gen_ai.decide` operations, the array holds one object `{answers: {...}}`. `answers` holds the answers keyed by question name, as the provider returned them. The second example shows this shape.\",\"For `gen_ai.extract` operations, the array holds one object `{answers: {<name>: <answer>}, truncated: boolean, state_text?: string}`. This object is the response body as the provider returned it, without `model` and `usage`. Do not change the values. `answers` holds one answer for each field in the input, keyed by field name. A field that the model cannot determine has a `value` of `null`. `span` and `spans` are `[start, end]` character offsets into `state` (or into `state_text`, if the provider returns it), and `end` is exclusive. Set the model in `gen_ai.response.model` and the token counts in `gen_ai.usage.input_tokens` and `gen_ai.usage.output_tokens`. The third example shows this shape.\"]},\"gen_ai.pipeline.name\":{brief:\"Name of the AI pipeline or chain being executed.\",type:\"string\",keys:[\"gen_ai.pipeline.name\",\"ai.pipeline.name\",\"langchain.chain.name\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:\"Autofix Pipeline\",aliases:[\"ai.pipeline.name\",\"langchain.chain.name\"],changelog:[{version:\"0.22.0\",prs:[599],description:\"Added langchain.chain.name as an alias\"},{version:\"0.1.0\",prs:[76,127]}]},\"gen_ai.prompt\":{brief:\"The input messages sent to the model\",type:\"string\",keys:[\"gen_ai.input.messages\",\"ai.input_messages\",\"ai.prompt\",\"ai.prompt.messages\",\"ai.texts\",\"gen_ai.prompt\"],applyScrubbing:{key:\"manual\"},isInOtel:!0,visibility:\"public\",example:'[{\"role\": \"user\", \"message\": \"hello\"}]',deprecation:{replacement:\"gen_ai.input.messages\",reason:\"Deprecated from OTEL, use gen_ai.input.messages with the new format instead.\",status:\"backfill\"},aliases:[\"gen_ai.input.messages\",\"ai.texts\",\"ai.prompt.messages\",\"ai.prompt\"],changelog:[{version:\"0.21.0\",prs:[583],description:\"Added ai.prompt as an alias\"},{version:\"0.1.0\",prs:[74,108,119]},{version:\"0.0.0\"}]},\"gen_ai.prompt.name\":{brief:\"The name of the prompt that uniquely identifies it.\",type:\"string\",keys:[\"gen_ai.prompt.name\",\"mcp.prompt.name\"],applyScrubbing:{key:\"manual\",reason:\"Prompt names may reveal user behavior patterns or sensitive operations\"},isInOtel:!0,visibility:\"public\",example:\"summarize_text\",aliases:[\"mcp.prompt.name\"],changelog:[{version:\"0.12.0\",prs:[420],description:\"Added gen_ai.prompt.name attribute\"}]},\"gen_ai.prompt.variable.<key>\":{brief:\"Variables supplied to the prompt template. The <key> is the variable name, and the value is the variable value serialized as a string.\",type:\"string\",keys:[\"gen_ai.prompt.variable.<key>\"],applyScrubbing:{key:\"auto\",reason:\"Prompt variables contain user input and may include sensitive information\"},isInOtel:!0,visibility:\"public\",hasDynamicSuffix:!0,example:\"gen_ai.prompt.variable.language='French'\",examples:[\"gen_ai.prompt.variable.language='French'\",\"gen_ai.prompt.variable.topic='weather'\"],changelog:[{version:\"0.27.0\",prs:[671],description:\"Added the OpenTelemetry convention for prompt variables\"}],additionalContext:[\"Capture only when the user explicitly opts in to recording prompt inputs. In MCP, these values are the arguments supplied in prompts/get requests.\"]},\"gen_ai.provider.name\":{brief:\"The Generative AI provider as identified by the client or server instrumentation.\",type:\"string\",keys:[\"gen_ai.provider.name\",\"ai.model.provider\",\"gen_ai.system\"],applyScrubbing:{key:\"manual\"},isInOtel:!0,visibility:\"public\",example:\"openai\",aliases:[\"ai.model.provider\",\"gen_ai.system\"],changelog:[{version:\"0.4.0\",prs:[253]}]},\"gen_ai.request.available_tools\":{brief:\"The available tools for the model. It has to be a stringified version of an array of objects.\",type:\"string\",keys:[\"gen_ai.tool.definitions\",\"ai.prompt.tools\",\"ai.tools\",\"gen_ai.request.available_tools\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:'[{\"name\": \"get_weather\", \"description\": \"Get the weather for a given location\"}, {\"name\": \"get_news\", \"description\": \"Get the news for a given topic\"}]',deprecation:{replacement:\"gen_ai.tool.definitions\",status:\"normalize\"},aliases:[\"gen_ai.tool.definitions\"],changelog:[{version:\"0.22.0\",prs:[595],description:\"Added gen_ai.tool.definitions as an alias\"},{version:\"0.4.0\",prs:[221]},{version:\"0.1.0\",prs:[63,127]}]},\"gen_ai.request.frequency_penalty\":{brief:\"Used to reduce repetitiveness of generated tokens. The higher the value, the stronger a penalty is applied to previously present tokens, proportional to how many times they have already appeared in the prompt or prior generation.\",type:\"double\",keys:[\"gen_ai.request.frequency_penalty\",\"ai.frequency_penalty\"],applyScrubbing:{key:\"manual\"},isInOtel:!0,visibility:\"public\",example:.5,aliases:[\"ai.frequency_penalty\"],changelog:[{version:\"0.4.0\",prs:[228]},{version:\"0.1.0\",prs:[57]}]},\"gen_ai.request.max_tokens\":{brief:\"The maximum number of tokens to generate in the response.\",type:\"integer\",keys:[\"gen_ai.request.max_tokens\"],applyScrubbing:{key:\"manual\"},isInOtel:!0,visibility:\"public\",example:2048,changelog:[{version:\"0.4.0\",prs:[228]},{version:\"0.1.0\",prs:[62]}]},\"gen_ai.request.messages\":{brief:'The messages passed to the model. It has to be a stringified version of an array of objects. The `role` attribute of each object must be `\"user\"`, `\"assistant\"`, `\"tool\"`, or `\"system\"`. For messages of the role `\"tool\"`, the `content` can be a string or an arbitrary object with information about the tool call. For other messages the `content` can be either a string or a list of objects in the format `{type: \"text\", text:\"...\"}`.',type:\"string\",keys:[\"gen_ai.request.messages\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:'[{\"role\": \"system\", \"content\": \"Generate a random number.\"}, {\"role\": \"user\", \"content\": [{\"text\": \"Generate a random number between 0 and 10.\", \"type\": \"text\"}]}, {\"role\": \"tool\", \"content\": {\"toolCallId\": \"1\", \"toolName\": \"Weather\", \"output\": \"rainy\"}}]',deprecation:{replacement:\"gen_ai.input.messages\",status:\"transform\",transformation:\"gen_ai_request_messages_to_input_messages\"},aliases:[\"ai.input_messages\"],changelog:[{version:\"0.4.0\",prs:[221]},{version:\"0.1.0\",prs:[63,74,108,119,122]}]},\"gen_ai.request.model\":{brief:\"The model identifier being used for the request.\",type:\"string\",keys:[\"gen_ai.request.model\",\"ai.model.id\",\"ai.model_id\"],applyScrubbing:{key:\"manual\"},isInOtel:!0,visibility:\"public\",example:\"gpt-4-turbo-preview\",aliases:[\"ai.model_id\",\"ai.model.id\"],changelog:[{version:\"0.21.0\",prs:[583],description:\"Added ai.model.id as an alias\"},{version:\"0.1.0\",prs:[62,127]}]},\"gen_ai.request.presence_penalty\":{brief:\"Used to reduce repetitiveness of generated tokens. Similar to frequency_penalty, except that this penalty is applied equally to all tokens that have already appeared, regardless of their exact frequencies.\",type:\"double\",keys:[\"gen_ai.request.presence_penalty\",\"ai.presence_penalty\"],applyScrubbing:{key:\"manual\"},isInOtel:!0,visibility:\"public\",example:.5,aliases:[\"ai.presence_penalty\"],changelog:[{version:\"0.4.0\",prs:[228]},{version:\"0.1.0\",prs:[57]}]},\"gen_ai.request.reasoning.level\":{brief:\"The reasoning or thinking effort level requested for a GenAI model.\",type:\"string\",keys:[\"gen_ai.request.reasoning.level\"],applyScrubbing:{key:\"manual\"},isInOtel:!0,visibility:\"public\",example:\"high\",changelog:[{version:\"0.17.0\",prs:[502],description:\"Added gen_ai.request.reasoning.level attribute\"}]},\"gen_ai.request.schema\":{brief:\"The stringified JSON schema the model output must conform to.\",type:\"string\",keys:[\"gen_ai.request.schema\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:'{\"type\":\"object\",\"properties\":{\"city\":{\"type\":\"string\"}}}',examples:['{\"type\":\"object\",\"properties\":{\"city\":{\"type\":\"string\"}}}'],deprecation:{reason:\"This attribute is deprecated. The Sentry conventions have no replacement for the requested output schema.\"},changelog:[{version:\"0.21.0\",prs:[583],description:\"Added gen_ai.request.schema attribute\"}]},\"gen_ai.request.seed\":{brief:\"The seed, ideally models given the same seed and same other parameters will produce the exact same output.\",type:\"string\",keys:[\"gen_ai.request.seed\",\"ai.seed\"],applyScrubbing:{key:\"manual\"},isInOtel:!0,visibility:\"public\",example:\"1234567890\",aliases:[\"ai.seed\"],changelog:[{version:\"0.1.0\",prs:[57,127]}]},\"gen_ai.request.stop_sequences\":{brief:\"List of sequences that the model will use to stop generating further tokens.\",type:\"string[]\",keys:[\"gen_ai.request.stop_sequences\"],applyScrubbing:{key:\"manual\"},isInOtel:!0,visibility:\"public\",example:[\"forest\",\"lived\"],changelog:[{version:\"0.16.0\",prs:[482],description:\"Added gen_ai.request.stop_sequences attribute\"}]},\"gen_ai.request.temperature\":{brief:\"For an AI model call, the temperature parameter. Temperature essentially means how random the output will be.\",type:\"double\",keys:[\"gen_ai.request.temperature\",\"ai.temperature\"],applyScrubbing:{key:\"manual\"},isInOtel:!0,visibility:\"public\",example:.1,aliases:[\"ai.temperature\"],changelog:[{version:\"0.4.0\",prs:[228]},{version:\"0.1.0\",prs:[57]}]},\"gen_ai.request.top_k\":{brief:\"Limits the model to only consider the K most likely next tokens, where K is an integer (e.g., top_k=20 means only the 20 highest probability tokens are considered).\",type:\"integer\",keys:[\"gen_ai.request.top_k\",\"ai.top_k\"],applyScrubbing:{key:\"manual\"},isInOtel:!0,visibility:\"public\",example:35,aliases:[\"ai.top_k\"],changelog:[{version:\"0.4.0\",prs:[228]},{version:\"0.1.0\",prs:[57]}]},\"gen_ai.request.top_p\":{brief:\"Limits the model to only consider tokens whose cumulative probability mass adds up to p, where p is a float between 0 and 1 (e.g., top_p=0.7 means only tokens that sum up to 70% of the probability mass are considered).\",type:\"double\",keys:[\"gen_ai.request.top_p\",\"ai.top_p\"],applyScrubbing:{key:\"manual\"},isInOtel:!0,visibility:\"public\",example:.7,aliases:[\"ai.top_p\"],changelog:[{version:\"0.4.0\",prs:[228]},{version:\"0.1.0\",prs:[57]}]},\"gen_ai.response.finish_reason\":{brief:\"The reason why the model stopped generating (singular form).\",type:\"string\",keys:[\"gen_ai.response.finish_reasons\",\"ai.finish_reason\",\"gen_ai.response.finish_reason\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:\"COMPLETE\",deprecation:{replacement:\"gen_ai.response.finish_reasons\",status:\"normalize\"},aliases:[\"gen_ai.response.finish_reasons\"],changelog:[{version:\"0.19.0\",prs:[498],description:\"Added gen_ai.response.finish_reason attribute\"}]},\"gen_ai.response.finish_reasons\":{brief:\"The reason why the model stopped generating.\",type:\"string\",keys:[\"gen_ai.response.finish_reasons\",\"ai.finish_reason\",\"gen_ai.response.finish_reason\"],applyScrubbing:{key:\"manual\"},isInOtel:!0,visibility:\"public\",example:\"COMPLETE\",aliases:[\"ai.finish_reason\",\"gen_ai.response.finish_reason\"],changelog:[{version:\"0.1.0\",prs:[57,127]}]},\"gen_ai.response.id\":{brief:\"Unique identifier for the completion.\",type:\"string\",keys:[\"gen_ai.response.id\",\"ai.generation_id\",\"ai.response.id\"],applyScrubbing:{key:\"manual\"},isInOtel:!0,visibility:\"public\",example:\"gen_123abc\",aliases:[\"ai.generation_id\",\"ai.response.id\"],changelog:[{version:\"0.21.0\",prs:[583],description:\"Added ai.response.id as an alias\"},{version:\"0.1.0\",prs:[57,127]}]},\"gen_ai.response.model\":{brief:\"The vendor-specific ID of the model used.\",type:\"string\",keys:[\"gen_ai.response.model\",\"ai.response.model\"],applyScrubbing:{key:\"manual\"},isInOtel:!0,visibility:\"public\",example:\"gpt-4\",aliases:[\"ai.response.model\"],changelog:[{version:\"0.21.0\",prs:[583],description:\"Added ai.response.model as an alias\"},{version:\"0.1.0\",prs:[127]},{version:\"0.0.0\"}]},\"gen_ai.response.object\":{brief:\"The type of the object returned by the model.\",type:\"string\",keys:[\"gen_ai.response.object\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:\"chat.completion\",examples:[\"chat.completion\"],deprecation:{reason:\"This attribute is deprecated. The Sentry conventions have no replacement for the raw response object type.\"},changelog:[{version:\"0.21.0\",prs:[583],description:\"Added gen_ai.response.object attribute\"}]},\"gen_ai.response.streaming\":{brief:\"Whether or not the AI model call's response was streamed back asynchronously\",type:\"boolean\",keys:[\"gen_ai.response.streaming\",\"ai.streaming\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:!0,aliases:[\"ai.streaming\"],changelog:[{version:\"0.1.0\",prs:[76]}]},\"gen_ai.response.text\":{brief:\"The model's response text messages. It has to be a stringified version of an array of response text messages.\",type:\"string\",keys:[\"gen_ai.response.text\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:'[\"The weather in Paris is rainy and overcast, with temperatures around 57\\xB0F\", \"The weather in London is sunny and warm, with temperatures around 65\\xB0F\"]',deprecation:{replacement:\"gen_ai.output.messages\",status:\"transform\",transformation:\"gen_ai_response_to_output_messages\"},changelog:[{version:\"0.4.0\",prs:[221]},{version:\"0.1.0\",prs:[63,74]}]},\"gen_ai.response.time_to_first_chunk\":{brief:\"Time in seconds when the first response content chunk arrived in streaming responses.\",type:\"double\",keys:[\"gen_ai.response.time_to_first_chunk\",\"gen_ai.response.time_to_first_token\"],applyScrubbing:{key:\"manual\"},isInOtel:!0,visibility:\"public\",example:.6853435,aliases:[\"gen_ai.response.time_to_first_token\"],changelog:[{version:\"0.11.0\",prs:[418],description:\"Added gen_ai.response.time_to_first_chunk attribute\"}]},\"gen_ai.response.time_to_first_token\":{brief:\"Time in seconds when the first response content chunk arrived in streaming responses.\",type:\"double\",keys:[\"gen_ai.response.time_to_first_chunk\",\"gen_ai.response.time_to_first_token\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:.6853435,deprecation:{replacement:\"gen_ai.response.time_to_first_chunk\",status:\"backfill\"},aliases:[\"gen_ai.response.time_to_first_chunk\"],changelog:[{version:\"0.11.0\",prs:[418],description:\"Deprecate in favor of gen_ai.response.time_to_first_chunk\"},{version:\"0.4.0\",prs:[227]}]},\"gen_ai.response.tokens_per_second\":{brief:\"The total output tokens per seconds throughput\",type:\"double\",keys:[\"gen_ai.response.tokens_per_second\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:12345.67,changelog:[{version:\"0.4.0\",prs:[228]},{version:\"0.1.0\",prs:[66]}]},\"gen_ai.response.tool_calls\":{brief:\"The tool calls in the model's response. It has to be a stringified version of an array of objects.\",type:\"string\",keys:[\"gen_ai.response.tool_calls\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:'[{\"name\": \"get_weather\", \"arguments\": {\"location\": \"Paris\"}}]',deprecation:{replacement:\"gen_ai.output.messages\",status:\"transform\",transformation:\"gen_ai_response_to_output_messages\"},changelog:[{version:\"0.4.0\",prs:[221]},{version:\"0.1.0\",prs:[63,74]}]},\"gen_ai.system\":{brief:\"The provider of the model.\",type:\"string\",keys:[\"gen_ai.provider.name\",\"ai.model.provider\",\"gen_ai.system\"],applyScrubbing:{key:\"manual\"},isInOtel:!0,visibility:\"public\",example:\"openai\",deprecation:{replacement:\"gen_ai.provider.name\",status:\"normalize\"},aliases:[\"ai.model.provider\",\"gen_ai.provider.name\"],changelog:[{version:\"0.4.0\",prs:[253]},{version:\"0.1.0\",prs:[57,127]}]},\"gen_ai.system_instructions\":{brief:\"The system instructions passed to the model.\",type:\"string\",keys:[\"gen_ai.system_instructions\",\"ai.preamble\",\"gen_ai.system.message\"],applyScrubbing:{key:\"manual\"},isInOtel:!0,visibility:\"public\",example:\"You are a helpful assistant\",aliases:[\"ai.preamble\"],changelog:[{version:\"0.5.0\",prs:[264]},{version:\"0.4.0\",prs:[221]}]},\"gen_ai.system.message\":{brief:\"The system instructions passed to the model.\",type:\"string\",keys:[\"gen_ai.system_instructions\",\"ai.preamble\",\"gen_ai.system.message\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:\"You are a helpful assistant\",deprecation:{replacement:\"gen_ai.system_instructions\",status:\"backfill\"},changelog:[{version:\"0.4.0\",prs:[221]},{version:\"0.1.0\",prs:[62]}]},\"gen_ai.tool.call.arguments\":{brief:\"The arguments of the tool call. It has to be a stringified version of the arguments to the tool.\",type:\"string\",keys:[\"gen_ai.tool.call.arguments\",\"ai.toolCall.args\",\"gen_ai.tool.input\"],applyScrubbing:{key:\"manual\"},isInOtel:!0,visibility:\"public\",example:'{\"location\": \"Paris\"}',aliases:[\"gen_ai.tool.input\",\"ai.toolCall.args\"],changelog:[{version:\"0.5.0\",prs:[265]},{version:\"0.4.0\",prs:[221]}]},\"gen_ai.tool.call.result\":{brief:\"The result of the tool call. It has to be a stringified version of the result of the tool.\",type:\"string\",keys:[\"gen_ai.tool.call.result\",\"ai.toolCall.result\",\"anthropic.tool_result.content\",\"gen_ai.tool.message\",\"gen_ai.tool.output\",\"mcp.tool.result.content\"],applyScrubbing:{key:\"manual\"},isInOtel:!0,visibility:\"public\",example:\"rainy, 57\\xB0F\",aliases:[\"gen_ai.tool.output\",\"gen_ai.tool.message\",\"mcp.tool.result.content\",\"ai.toolCall.result\",\"anthropic.tool_result.content\"],changelog:[{version:\"0.5.0\",prs:[265]},{version:\"0.4.0\",prs:[221]}]},\"gen_ai.tool.call.result.size\":{brief:\"The UTF-8 byte length of the serialized tool call result, measured before truncation.\",type:\"integer\",keys:[\"gen_ai.tool.call.result.size\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:0,examples:[0,1024],changelog:[{version:\"0.28.0\",prs:[679],description:\"Added gen_ai.tool.call.result.size attribute\"}],additionalContext:[\"The value is a non-negative byte count, not a token count, character count, or in-memory object size. It excludes span and envelope overhead.\",\"Use 0 for an empty string result. Omit this attribute when the tool result is unavailable; do not treat missing output as zero.\"],searchAlias:{name:\"gen_ai.tool.call.result.size\",type:\"byte\"}},\"gen_ai.tool.definitions\":{brief:\"The list of source system tool definitions available to the GenAI agent or model.\",type:\"string\",keys:[\"gen_ai.tool.definitions\",\"ai.prompt.tools\",\"ai.tools\",\"gen_ai.request.available_tools\"],applyScrubbing:{key:\"manual\"},isInOtel:!0,visibility:\"public\",example:'[{\"type\": \"function\", \"name\": \"get_current_weather\", \"description\": \"Get the current weather in a given location\", \"parameters\": {\"type\": \"object\", \"properties\": {\"location\": {\"type\": \"string\", \"description\": \"The city and state, e.g. San Francisco, CA\"}, \"unit\": {\"type\": \"string\", \"enum\": [\"celsius\", \"fahrenheit\"]}}, \"required\": [\"location\", \"unit\"]}}]',aliases:[\"gen_ai.request.available_tools\"],changelog:[{version:\"0.22.0\",prs:[595],description:\"Added gen_ai.request.available_tools as an alias\"},{version:\"0.4.0\",prs:[221]}]},\"gen_ai.tool.description\":{brief:\"The description of the tool being used.\",type:\"string\",keys:[\"gen_ai.tool.description\"],applyScrubbing:{key:\"manual\"},isInOtel:!0,visibility:\"public\",example:\"Searches the web for current information about a topic\",changelog:[{version:\"0.1.0\",prs:[62,127]}]},\"gen_ai.tool.input\":{brief:\"The input of the tool being used. It has to be a stringified version of the input to the tool.\",type:\"string\",keys:[\"gen_ai.tool.call.arguments\",\"ai.toolCall.args\",\"gen_ai.tool.input\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:'{\"location\": \"Paris\"}',deprecation:{replacement:\"gen_ai.tool.call.arguments\",status:\"normalize\"},aliases:[\"gen_ai.tool.call.arguments\",\"ai.toolCall.args\"],changelog:[{version:\"0.5.0\",prs:[265]},{version:\"0.1.0\",prs:[63,74]}]},\"gen_ai.tool.message\":{brief:\"The response from a tool or function call passed to the model.\",type:\"string\",keys:[\"gen_ai.tool.call.result\",\"ai.toolCall.result\",\"anthropic.tool_result.content\",\"gen_ai.tool.message\",\"gen_ai.tool.output\",\"mcp.tool.result.content\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:\"rainy, 57\\xB0F\",deprecation:{replacement:\"gen_ai.tool.call.result\",status:\"normalize\"},aliases:[\"gen_ai.tool.call.result\",\"gen_ai.tool.output\",\"mcp.tool.result.content\",\"ai.toolCall.result\",\"anthropic.tool_result.content\"],changelog:[{version:\"0.5.0\",prs:[265]},{version:\"0.1.0\",prs:[62]}]},\"gen_ai.tool.name\":{brief:\"Name of the tool utilized by the agent.\",type:\"string\",keys:[\"gen_ai.tool.name\",\"ai.function_call\",\"mcp.tool.name\"],applyScrubbing:{key:\"manual\"},isInOtel:!0,visibility:\"public\",example:\"Flights\",aliases:[\"ai.function_call\",\"mcp.tool.name\"],changelog:[{version:\"0.1.0\",prs:[57,127]}]},\"gen_ai.tool.output\":{brief:\"The output of the tool being used. It has to be a stringified version of the output of the tool.\",type:\"string\",keys:[\"gen_ai.tool.call.result\",\"ai.toolCall.result\",\"anthropic.tool_result.content\",\"gen_ai.tool.message\",\"gen_ai.tool.output\",\"mcp.tool.result.content\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:\"rainy, 57\\xB0F\",deprecation:{replacement:\"gen_ai.tool.call.result\",status:\"normalize\"},aliases:[\"gen_ai.tool.call.result\",\"gen_ai.tool.message\",\"mcp.tool.result.content\",\"ai.toolCall.result\",\"anthropic.tool_result.content\"],changelog:[{version:\"0.5.0\",prs:[265]},{version:\"0.1.0\",prs:[63,74]}]},\"gen_ai.tool.type\":{brief:\"The type of tool being used.\",type:\"string\",keys:[\"gen_ai.tool.type\"],applyScrubbing:{key:\"manual\"},isInOtel:!0,visibility:\"public\",example:\"function\",deprecation:{reason:\"The gen_ai.tool.type attribute is deprecated and should no longer be set.\"},changelog:[{version:\"0.1.0\",prs:[62,127]}]},\"gen_ai.usage.cache_creation.input_tokens\":{brief:\"The number of tokens written to the cache when processing the AI input (prompt).\",type:\"integer\",keys:[\"gen_ai.usage.cache_creation.input_tokens\",\"gen_ai.usage.cache_creation_input_tokens\",\"gen_ai.usage.input_tokens.cache_write\"],applyScrubbing:{key:\"manual\"},isInOtel:!0,visibility:\"public\",example:100,aliases:[\"gen_ai.usage.input_tokens.cache_write\",\"gen_ai.usage.cache_creation_input_tokens\"],changelog:[{version:\"0.24.0\",prs:[582],description:\"Added gen_ai.usage.cache_creation_input_tokens as an alias\"},{version:\"0.11.0\",prs:[418],description:\"Added gen_ai.usage.cache_creation.input_tokens attribute\"}],additionalContext:[\"This attribute appears on both agent parent spans (aggregated totals) and LLM child spans (per-call values). When using sum() to count tokens, filter to gen_ai.operation.type:ai_client to avoid double-counting hierarchical spans.\"]},\"gen_ai.usage.cache_creation_input_tokens\":{brief:\"The number of tokens written to the cache when processing the AI input (prompt).\",type:\"integer\",keys:[\"gen_ai.usage.cache_creation.input_tokens\",\"gen_ai.usage.cache_creation_input_tokens\",\"gen_ai.usage.input_tokens.cache_write\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:100,examples:[100],deprecation:{replacement:\"gen_ai.usage.cache_creation.input_tokens\",reason:\"This attribute is being deprecated in favor of gen_ai.usage.cache_creation.input_tokens.\",status:\"backfill\"},aliases:[\"gen_ai.usage.cache_creation.input_tokens\",\"gen_ai.usage.input_tokens.cache_write\"],changelog:[{version:\"0.24.0\",prs:[582],description:\"Added gen_ai.usage.cache_creation_input_tokens attribute\"}]},\"gen_ai.usage.cache_read.input_tokens\":{brief:\"The number of cached tokens used to process the AI input (prompt).\",type:\"integer\",keys:[\"gen_ai.usage.cache_read.input_tokens\",\"gen_ai.usage.cache_read_input_tokens\",\"gen_ai.usage.input_tokens.cached\"],applyScrubbing:{key:\"manual\"},isInOtel:!0,visibility:\"public\",example:50,aliases:[\"gen_ai.usage.input_tokens.cached\",\"gen_ai.usage.cache_read_input_tokens\"],changelog:[{version:\"0.24.0\",prs:[582],description:\"Added gen_ai.usage.cache_read_input_tokens as an alias\"},{version:\"0.11.0\",prs:[418],description:\"Added gen_ai.usage.cache_read.input_tokens attribute\"}],additionalContext:[\"This attribute appears on both agent parent spans (aggregated totals) and LLM child spans (per-call values). When using sum() to count tokens, filter to gen_ai.operation.type:ai_client to avoid double-counting hierarchical spans.\",\"This is a subset of gen_ai.usage.input_tokens, not an independent count. Do not sum this with gen_ai.usage.input_tokens \\u2014 it is already included.\"]},\"gen_ai.usage.cache_read_input_tokens\":{brief:\"The number of cached tokens used to process the AI input (prompt).\",type:\"integer\",keys:[\"gen_ai.usage.cache_read.input_tokens\",\"gen_ai.usage.cache_read_input_tokens\",\"gen_ai.usage.input_tokens.cached\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:50,examples:[50],deprecation:{replacement:\"gen_ai.usage.cache_read.input_tokens\",reason:\"This attribute is being deprecated in favor of gen_ai.usage.cache_read.input_tokens.\",status:\"backfill\"},aliases:[\"gen_ai.usage.cache_read.input_tokens\",\"gen_ai.usage.input_tokens.cached\"],changelog:[{version:\"0.24.0\",prs:[582],description:\"Added gen_ai.usage.cache_read_input_tokens attribute\"}]},\"gen_ai.usage.completion_tokens\":{brief:\"The number of tokens used in the GenAI response (completion).\",type:\"integer\",keys:[\"gen_ai.usage.output_tokens\",\"ai.completion_tokens.used\",\"gen_ai.usage.completion_tokens\"],applyScrubbing:{key:\"manual\"},isInOtel:!0,visibility:\"public\",example:10,deprecation:{replacement:\"gen_ai.usage.output_tokens\",status:\"backfill\"},aliases:[\"ai.completion_tokens.used\",\"gen_ai.usage.output_tokens\"],changelog:[{version:\"0.9.0\",prs:[397],description:\"Add additional_context\"},{version:\"0.4.0\",prs:[228]},{version:\"0.1.0\",prs:[61]},{version:\"0.0.0\"}],additionalContext:[\"This attribute appears on both agent parent spans (aggregated totals) and LLM child spans (per-call values). When using sum() to count tokens, filter to gen_ai.operation.type:ai_client to avoid double-counting hierarchical spans.\"]},\"gen_ai.usage.input_tokens\":{brief:\"The number of tokens used to process the AI input (prompt) including cached input tokens.\",type:\"integer\",keys:[\"gen_ai.usage.input_tokens\",\"ai.prompt_tokens.used\",\"gen_ai.usage.prompt_tokens\"],applyScrubbing:{key:\"manual\"},isInOtel:!0,visibility:\"public\",example:10,aliases:[\"ai.prompt_tokens.used\",\"gen_ai.usage.prompt_tokens\"],changelog:[{version:\"0.11.0\",prs:[418],description:\"Update additional_context to reference gen_ai.usage.cache_read.input_tokens\"},{version:\"0.9.0\",prs:[397],description:\"Add additional_context\"},{version:\"0.5.0\",prs:[261]},{version:\"0.4.0\",prs:[228]},{version:\"0.1.0\",prs:[112]},{version:\"0.0.0\"}],additionalContext:[\"This attribute appears on both agent parent spans (aggregated totals) and LLM child spans (per-call values). When using sum() to count tokens, filter to gen_ai.operation.type:ai_client to avoid double-counting hierarchical spans.\",\"This count includes cached input tokens. gen_ai.usage.cache_read.input_tokens is a subset of this value, not an independent count \\u2014 do not sum them together.\"]},\"gen_ai.usage.input_tokens.cached\":{brief:\"The number of cached tokens used to process the AI input (prompt).\",type:\"integer\",keys:[\"gen_ai.usage.cache_read.input_tokens\",\"gen_ai.usage.cache_read_input_tokens\",\"gen_ai.usage.input_tokens.cached\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:50,deprecation:{replacement:\"gen_ai.usage.cache_read.input_tokens\",status:\"backfill\"},aliases:[\"gen_ai.usage.cache_read.input_tokens\",\"gen_ai.usage.cache_read_input_tokens\"],changelog:[{version:\"0.24.0\",prs:[582],description:\"Added gen_ai.usage.cache_read_input_tokens as an alias\"},{version:\"0.11.0\",prs:[418],description:\"Deprecate in favor of gen_ai.usage.cache_read.input_tokens\"},{version:\"0.9.0\",prs:[397],description:\"Add additional_context\"},{version:\"0.4.0\",prs:[228]},{version:\"0.1.0\",prs:[62,112]}],additionalContext:[\"This attribute appears on both agent parent spans (aggregated totals) and LLM child spans (per-call values). When using sum() to count tokens, filter to gen_ai.operation.type:ai_client to avoid double-counting hierarchical spans.\",\"This is a subset of gen_ai.usage.input_tokens, not an independent count. Do not sum this with gen_ai.usage.input_tokens \\u2014 it is already included.\"]},\"gen_ai.usage.input_tokens.cache_write\":{brief:\"The number of tokens written to the cache when processing the AI input (prompt).\",type:\"integer\",keys:[\"gen_ai.usage.cache_creation.input_tokens\",\"gen_ai.usage.cache_creation_input_tokens\",\"gen_ai.usage.input_tokens.cache_write\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:100,deprecation:{replacement:\"gen_ai.usage.cache_creation.input_tokens\",status:\"backfill\"},aliases:[\"gen_ai.usage.cache_creation.input_tokens\",\"gen_ai.usage.cache_creation_input_tokens\"],changelog:[{version:\"0.24.0\",prs:[582],description:\"Added gen_ai.usage.cache_creation_input_tokens as an alias\"},{version:\"0.11.0\",prs:[418],description:\"Deprecate in favor of gen_ai.usage.cache_creation.input_tokens\"},{version:\"0.9.0\",prs:[397],description:\"Add additional_context\"},{version:\"0.4.0\",prs:[217,228]}],additionalContext:[\"This attribute appears on both agent parent spans (aggregated totals) and LLM child spans (per-call values). When using sum() to count tokens, filter to gen_ai.operation.type:ai_client to avoid double-counting hierarchical spans.\"]},\"gen_ai.usage.output_tokens\":{brief:\"The number of tokens used for creating the AI output (including reasoning tokens).\",type:\"integer\",keys:[\"gen_ai.usage.output_tokens\",\"ai.completion_tokens.used\",\"gen_ai.usage.completion_tokens\"],applyScrubbing:{key:\"manual\"},isInOtel:!0,visibility:\"public\",example:10,aliases:[\"ai.completion_tokens.used\",\"gen_ai.usage.completion_tokens\"],changelog:[{version:\"0.11.0\",prs:[418],description:\"Update additional_context to reference gen_ai.usage.reasoning.output_tokens\"},{version:\"0.9.0\",prs:[397],description:\"Add additional_context\"},{version:\"0.5.0\",prs:[261]},{version:\"0.4.0\",prs:[228]},{version:\"0.1.0\",prs:[112]},{version:\"0.0.0\"}],additionalContext:[\"This attribute appears on both agent parent spans (aggregated totals) and LLM child spans (per-call values). When using sum() to count tokens, filter to gen_ai.operation.type:ai_client to avoid double-counting hierarchical spans.\",\"This count includes reasoning tokens. gen_ai.usage.reasoning.output_tokens is a subset of this value, not an independent count \\u2014 do not sum them together.\"]},\"gen_ai.usage.output_tokens.reasoning\":{brief:\"The number of tokens used for reasoning to create the AI output.\",type:\"integer\",keys:[\"gen_ai.usage.reasoning.output_tokens\",\"gen_ai.usage.output_tokens.reasoning\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:75,deprecation:{replacement:\"gen_ai.usage.reasoning.output_tokens\",status:\"backfill\"},aliases:[\"gen_ai.usage.reasoning.output_tokens\"],changelog:[{version:\"0.11.0\",prs:[418],description:\"Deprecate in favor of gen_ai.usage.reasoning.output_tokens\"},{version:\"0.9.0\",prs:[397],description:\"Add additional_context\"},{version:\"0.4.0\",prs:[228]},{version:\"0.1.0\",prs:[62,112]}],additionalContext:[\"This attribute appears on both agent parent spans (aggregated totals) and LLM child spans (per-call values). When using sum() to count tokens, filter to gen_ai.operation.type:ai_client to avoid double-counting hierarchical spans.\",\"This is a subset of gen_ai.usage.output_tokens, not an independent count. Do not sum this with gen_ai.usage.output_tokens \\u2014 it is already included.\"]},\"gen_ai.usage.prompt_tokens\":{brief:\"The number of tokens used in the GenAI input (prompt).\",type:\"integer\",keys:[\"gen_ai.usage.input_tokens\",\"ai.prompt_tokens.used\",\"gen_ai.usage.prompt_tokens\"],applyScrubbing:{key:\"manual\"},isInOtel:!0,visibility:\"public\",example:20,deprecation:{replacement:\"gen_ai.usage.input_tokens\",status:\"backfill\"},aliases:[\"ai.prompt_tokens.used\",\"gen_ai.usage.input_tokens\"],changelog:[{version:\"0.9.0\",prs:[397],description:\"Add additional_context\"},{version:\"0.4.0\",prs:[228]},{version:\"0.1.0\",prs:[61]},{version:\"0.0.0\"}],additionalContext:[\"This attribute appears on both agent parent spans (aggregated totals) and LLM child spans (per-call values). When using sum() to count tokens, filter to gen_ai.operation.type:ai_client to avoid double-counting hierarchical spans.\"]},\"gen_ai.usage.reasoning.output_tokens\":{brief:\"The number of tokens used for reasoning to create the AI output.\",type:\"integer\",keys:[\"gen_ai.usage.reasoning.output_tokens\",\"gen_ai.usage.output_tokens.reasoning\"],applyScrubbing:{key:\"manual\"},isInOtel:!0,visibility:\"public\",example:75,aliases:[\"gen_ai.usage.output_tokens.reasoning\"],changelog:[{version:\"0.11.0\",prs:[418],description:\"Added gen_ai.usage.reasoning.output_tokens attribute\"}],additionalContext:[\"This attribute appears on both agent parent spans (aggregated totals) and LLM child spans (per-call values). When using sum() to count tokens, filter to gen_ai.operation.type:ai_client to avoid double-counting hierarchical spans.\",\"This is a subset of gen_ai.usage.output_tokens, not an independent count. Do not sum this with gen_ai.usage.output_tokens \\u2014 it is already included.\"]},\"gen_ai.usage.total_tokens\":{brief:\"The total number of tokens used to process the prompt. (input tokens plus output todkens)\",type:\"integer\",keys:[\"gen_ai.usage.total_tokens\",\"ai.total_tokens.used\",\"ai.usage.tokens\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:20,aliases:[\"ai.total_tokens.used\",\"ai.usage.tokens\"],changelog:[{version:\"0.21.0\",prs:[583],description:\"Added ai.usage.tokens as an alias\"},{version:\"0.9.0\",prs:[397],description:\"Add additional_context\"},{version:\"0.4.0\",prs:[228]},{version:\"0.1.0\",prs:[57]}],additionalContext:[\"This attribute appears on both agent parent spans (aggregated totals) and LLM child spans (per-call values). When using sum() to count tokens, filter to gen_ai.operation.type:ai_client to avoid double-counting hierarchical spans.\",\"This is the sum of gen_ai.usage.input_tokens and gen_ai.usage.output_tokens. Do not sum this with either of them \\u2014 they are already included.\"]},\"graphql.document\":{brief:\"The GraphQL document being executed.\",type:\"string\",keys:[\"graphql.document\",\"graphql.source\"],applyScrubbing:{key:\"auto\",reason:\"The document may contain sensitive information in arguments or variables. Instrumentation should redact sensitive information when possible.\"},isInOtel:!0,visibility:\"public\",example:\"query findBookById { bookById(id: ?) { name } }\",aliases:[\"graphql.source\"],changelog:[{version:\"0.21.0\",prs:[584],description:\"Added graphql.source as an alias\"},{version:\"0.7.0\",description:\"Adds the `graphql.document` attribute to track the GraphQL document being executed.\"}]},\"graphql.operation.name\":{brief:\"The name of the operation being executed.\",type:\"string\",keys:[\"graphql.operation.name\"],applyScrubbing:{key:\"manual\"},isInOtel:!0,visibility:\"public\",example:\"findBookById\",changelog:[{version:\"0.1.0\",prs:[127]},{version:\"0.0.0\"}]},\"graphql.operation.type\":{brief:\"The type of the operation being executed.\",type:\"string\",keys:[\"graphql.operation.type\"],applyScrubbing:{key:\"manual\"},isInOtel:!0,visibility:\"public\",example:\"query\",changelog:[{version:\"0.1.0\",prs:[127]},{version:\"0.0.0\"}]},\"graphql.processing.type\":{brief:\"The type of processing represented by this span.\",type:\"string\",keys:[\"graphql.processing.type\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:\"parse\",examples:[\"parse\",\"validate\",\"execute\",\"resolve\"],changelog:[{version:\"0.21.0\",prs:[572],description:\"Added graphql.processing.type attribute\"}],additionalContext:[\"Well-known values are request, parse, validate, variable_coercion, plan, execute, subscription_event, step_execute, resolve, dataloader_dispatch, dataloader_batch and _OTHER. Use one of these if it applies, otherwise a custom value.\",\"Not to be confused with graphql.operation.type, which holds the GraphQL operation type (query, mutation, subscription) and only applies to spans that run an operation.\"]},\"graphql.source\":{brief:\"The GraphQL document being executed.\",type:\"string\",keys:[\"graphql.document\",\"graphql.source\"],applyScrubbing:{key:\"auto\"},isInOtel:!1,visibility:\"public\",example:\"query findBookById { bookById(id: ?) { name } }\",examples:[\"query findBookById { bookById(id: ?) { name } }\"],deprecation:{replacement:\"graphql.document\",reason:\"This attribute is being deprecated in favor of graphql.document, which is the OpenTelemetry name for the same value.\",status:\"backfill\"},aliases:[\"graphql.document\"],changelog:[{version:\"0.21.0\",prs:[584],description:\"Added graphql.source attribute\"}]},\"grpc.error.bad_request.field_violations\":{brief:\"The individual field violations from a google.rpc.BadRequest error detail. Each entry is a JSON-encoded object with field, description, reason, and (optional) localized_message keys, mirroring google.rpc.BadRequest.FieldViolation.\",type:\"string[]\",keys:[\"grpc.error.bad_request.field_violations\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:['{\"field\":\"email\",\"description\":\"must be a valid email address\",\"reason\":\"FIELD_INVALID\",\"localized_message\":{\"locale\":\"en-US\",\"message\":\"Must be a valid email address\"}}'],changelog:[{version:\"0.17.0\",prs:[460],description:\"Added grpc.error.bad_request.field_violations attribute\"}]},\"grpc.error.debug_info.detail\":{brief:\"Additional debugging information, such as a server-side stack trace, from a google.rpc.DebugInfo error detail. SDKs should only send this attribute when sendDefaultPii is enabled or dataCollection is configured accordingly.\",type:\"string\",keys:[\"grpc.error.debug_info.detail\"],applyScrubbing:{key:\"auto\"},isInOtel:!1,visibility:\"public\",example:\"at com.example.Service.method(Service.java:42)\",changelog:[{version:\"0.17.0\",prs:[460],description:\"Added grpc.error.debug_info.detail attribute\"}]},\"grpc.error.debug_info.stack_entries\":{brief:\"The server-side stack trace entries from a google.rpc.DebugInfo error detail. SDKs should only send this attribute when sendDefaultPii is enabled or dataCollection is configured accordingly.\",type:\"string[]\",keys:[\"grpc.error.debug_info.stack_entries\"],applyScrubbing:{key:\"auto\"},isInOtel:!1,visibility:\"public\",example:[\"com.example.Service.method(Service.java:42)\",\"com.example.Server.handle(Server.java:100)\"],changelog:[{version:\"0.17.0\",prs:[460],description:\"Added grpc.error.debug_info.stack_entries attribute\"}]},\"grpc.error.error_info.domain\":{brief:\"The logical grouping to which the gRPC error reason belongs, from the google.rpc.ErrorInfo error detail.\",type:\"string\",keys:[\"grpc.error.error_info.domain\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:\"example.sentry.io\",changelog:[{version:\"0.17.0\",prs:[460],description:\"Added grpc.error.error_info.domain attribute\"}]},\"grpc.error.error_info.metadata.<key>\":{brief:\"Additional structured metadata attached to a google.rpc.ErrorInfo error detail, with <key> being the metadata key name. SDKs should only send this attribute when sendDefaultPii is enabled or dataCollection is configured accordingly.\",type:\"string\",keys:[\"grpc.error.error_info.metadata.<key>\"],applyScrubbing:{key:\"auto\"},isInOtel:!1,visibility:\"public\",hasDynamicSuffix:!0,example:\"grpc.error.error_info.metadata.user_id='123'\",changelog:[{version:\"0.17.0\",prs:[460],description:\"Added grpc.error.error_info.metadata.<key> attribute\"}]},\"grpc.error.error_info.reason\":{brief:\"The reason for the gRPC error, as defined by the service that generated it, from the google.rpc.ErrorInfo error detail.\",type:\"string\",keys:[\"grpc.error.error_info.reason\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:\"FIELD_INVALID\",changelog:[{version:\"0.17.0\",prs:[460],description:\"Added grpc.error.error_info.reason attribute\"}]},\"grpc.error.precondition_failure.violations\":{brief:\"The individual precondition violations from a google.rpc.PreconditionFailure error detail. Each entry is a JSON-encoded object with type, subject, and description keys. SDKs should only send this attribute when sendDefaultPii is enabled or dataCollection is configured accordingly, since violation subjects may identify specific resources or users.\",type:\"string[]\",keys:[\"grpc.error.precondition_failure.violations\"],applyScrubbing:{key:\"auto\"},isInOtel:!1,visibility:\"public\",example:['{\"type\":\"TOS\",\"subject\":\"example.com/user/123\",\"description\":\"User must accept the terms of service\"}'],changelog:[{version:\"0.17.0\",prs:[460],description:\"Added grpc.error.precondition_failure.violations attribute\"}]},\"grpc.error.quota_failure.violations\":{brief:\"The individual quota violations from a google.rpc.QuotaFailure error detail. Each entry is a JSON-encoded object with subject, description, api_service, quota_metric, quota_id, quota_dimensions, quota_value, and (optional) future_quota_value keys, mirroring google.rpc.QuotaFailure.Violation. SDKs should only send this attribute when sendDefaultPii is enabled or dataCollection is configured accordingly, since violation subjects may identify specific resources or users.\",type:\"string[]\",keys:[\"grpc.error.quota_failure.violations\"],applyScrubbing:{key:\"auto\"},isInOtel:!1,visibility:\"public\",example:['{\"subject\":\"clientip:127.0.0.1\",\"description\":\"Limit checks failed.\",\"api_service\":\"example.googleapis.com\",\"quota_metric\":\"example.googleapis.com/read_requests\",\"quota_id\":\"ReadRequestsPerMinutePerProject\",\"quota_dimensions\":{\"region\":\"us-central1\"},\"quota_value\":1000}'],changelog:[{version:\"0.17.0\",prs:[460],description:\"Added grpc.error.quota_failure.violations attribute\"}]},\"grpc.error.resource_info.description\":{brief:\"A description of the error that occurred while accessing the resource, from a google.rpc.ResourceInfo error detail.\",type:\"string\",keys:[\"grpc.error.resource_info.description\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:\"Instance is not ready for the request.\",changelog:[{version:\"0.17.0\",prs:[460],description:\"Added grpc.error.resource_info.description attribute\"}]},\"grpc.error.resource_info.owner\":{brief:\"The owner of the resource being accessed (e.g. project or account owning it), from a google.rpc.ResourceInfo error detail. SDKs should only send this attribute when sendDefaultPii is enabled or dataCollection is configured accordingly.\",type:\"string\",keys:[\"grpc.error.resource_info.owner\"],applyScrubbing:{key:\"auto\"},isInOtel:!1,visibility:\"public\",example:\"user@example.com\",changelog:[{version:\"0.17.0\",prs:[460],description:\"Added grpc.error.resource_info.owner attribute\"}]},\"grpc.error.resource_info.resource_name\":{brief:\"The name of the resource being accessed, from a google.rpc.ResourceInfo error detail. SDKs should only send this attribute when sendDefaultPii is enabled or dataCollection is configured accordingly.\",type:\"string\",keys:[\"grpc.error.resource_info.resource_name\"],applyScrubbing:{key:\"auto\"},isInOtel:!1,visibility:\"public\",example:\"projects/example/instances/example-instance\",changelog:[{version:\"0.17.0\",prs:[460],description:\"Added grpc.error.resource_info.resource_name attribute\"}]},\"grpc.error.resource_info.resource_type\":{brief:\"The type of resource being accessed, from a google.rpc.ResourceInfo error detail.\",type:\"string\",keys:[\"grpc.error.resource_info.resource_type\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:\"database\",changelog:[{version:\"0.17.0\",prs:[460],description:\"Added grpc.error.resource_info.resource_type attribute\"}]},\"grpc.error.retry_info.retry_delay_ms\":{brief:\"How long the client should wait before retrying the gRPC call, in milliseconds, from the google.rpc.RetryInfo error detail.\",type:\"integer\",keys:[\"grpc.error.retry_info.retry_delay_ms\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:5e3,changelog:[{version:\"0.17.0\",prs:[460],description:\"Added grpc.error.retry_info.retry_delay_ms attribute\"}]},\"hapi.ext.type\":{brief:\"The request lifecycle extension point where the Hapi extension function runs.\",type:\"string\",keys:[\"hapi.ext.type\",\"server.ext.type\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:\"onRequest\",examples:[\"onRequest\",\"onPreResponse\"],aliases:[\"server.ext.type\"],changelog:[{version:\"0.28.0\",prs:[741],description:\"Added hapi.ext.type attribute\"}]},\"hapi.plugin.name\":{brief:\"The name of the Hapi plugin that registered the route.\",type:\"string\",keys:[\"hapi.plugin.name\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:\"hapi-swagger\",examples:[\"hapi-swagger\"],changelog:[{version:\"0.28.0\",prs:[741],description:\"Added hapi.plugin.name attribute\"}]},\"hapi.type\":{brief:\"The type of the Hapi layer that the span describes: `router`, `plugin`, or `server.ext`.\",type:\"string\",keys:[\"hapi.type\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:\"router\",examples:[\"router\",\"plugin\",\"server.ext\"],changelog:[{version:\"0.28.0\",prs:[741],description:\"Added hapi.type attribute\"}]},hardwareConcurrency:{brief:\"The number of logical CPU cores available.\",type:\"string\",keys:[\"device.processor_count\",\"hardwareConcurrency\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:\"14\",deprecation:{replacement:\"device.processor_count\",reason:\"Old namespace-less attribute, to be replaced with device.processor_count for span-first future\",status:\"backfill\"},aliases:[\"device.processor_count\"],changelog:[{version:\"0.5.0\",prs:[281,300],description:\"Added and deprecated attribute to document JS SDK's current behaviour\"}]},\"http.client_ip\":{brief:\"Client address - domain name if available without reverse DNS lookup; otherwise, IP address or Unix domain socket name.\",type:\"string\",keys:[\"client.address\",\"http.client_ip\"],applyScrubbing:{key:\"auto\"},isInOtel:!0,visibility:\"public\",example:\"example.com\",deprecation:{replacement:\"client.address\",status:\"backfill\"},aliases:[\"client.address\"],changelog:[{version:\"0.1.0\",prs:[61,106,127]},{version:\"0.0.0\"}]},\"http.decoded_response_content_length\":{brief:\"The decoded body size of the response (in bytes).\",type:\"integer\",keys:[\"http.response.body.decoded_size\",\"http.decoded_response_content_length\",\"http.response_content_length_uncompressed\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:456,deprecation:{replacement:\"http.response.body.decoded_size\",status:\"backfill\"},aliases:[\"http.response.body.decoded_size\",\"http.response_content_length_uncompressed\"],changelog:[{version:\"0.21.0\",prs:[574],description:\"Deprecated in favor of http.response.body.decoded_size\"},{version:\"0.4.0\",prs:[228]},{version:\"0.0.0\"}],searchAlias:{name:\"http.decoded_response_content_length\",type:\"byte\"}},\"http.flavor\":{brief:\"The actual version of the protocol used for network communication.\",type:\"string\",keys:[\"network.protocol.version\",\"http.flavor\",\"messaging.protocol_version\",\"net.protocol.version\"],applyScrubbing:{key:\"manual\"},isInOtel:!0,visibility:\"public\",example:\"1.1\",deprecation:{replacement:\"network.protocol.version\",status:\"backfill\"},aliases:[\"network.protocol.version\",\"net.protocol.version\",\"messaging.protocol_version\"],changelog:[{version:\"0.21.0\",prs:[581],description:\"Added messaging.protocol_version as an alias\"},{version:\"0.1.0\",prs:[61,108,127]},{version:\"0.0.0\"}]},\"http.fragment\":{brief:\"The fragments present in the URI. Note that this contains the leading # character, while the `url.fragment` attribute does not.\",type:\"string\",keys:[\"http.fragment\"],applyScrubbing:{key:\"auto\"},isInOtel:!1,visibility:\"public\",example:\"#details\",changelog:[{version:\"0.0.0\"}]},\"http.host\":{brief:\"The domain name.\",type:\"string\",keys:[\"http.host\"],applyScrubbing:{key:\"manual\"},isInOtel:!0,visibility:\"public\",example:\"example.com\",deprecation:{replacement:\"server.address\",reason:\"Deprecated, use one of `server.address` or `client.address`, depending on the usage\"},aliases:[\"address\",\"server.address\",\"client.address\",\"http.server_name\",\"net.host.name\",\"server_name\",\"net.peer.name\"],changelog:[{version:\"0.24.0\",prs:[647],description:\"Added server_name as an alias\"},{version:\"0.21.0\",prs:[588,602],description:\"Added net.peer.name as an alias\"},{version:\"0.19.0\",prs:[534],description:\"Added address as an alias\"},{version:\"0.1.0\",prs:[61,108,127]},{version:\"0.0.0\"}]},\"http.method\":{brief:\"The HTTP method used.\",type:\"string\",keys:[\"http.request.method\",\"http.method\",\"http.request_method\",\"method\"],applyScrubbing:{key:\"manual\"},isInOtel:!0,visibility:\"public\",example:\"GET\",deprecation:{replacement:\"http.request.method\",status:\"backfill\"},aliases:[\"http.request.method\",\"http.request_method\",\"method\"],changelog:[{version:\"0.1.0\",prs:[61,127]},{version:\"0.0.0\"}]},\"http.query\":{brief:\"The query string present in the URL. Note that this contains the leading ? character, while the `url.query` attribute does not.\",type:\"string\",keys:[\"http.query\"],applyScrubbing:{key:\"auto\",reason:\"Query string values can contain sensitive information. Clients should attempt to scrub parameters that might contain sensitive information.\"},isInOtel:!1,visibility:\"public\",example:\"?foo=bar&bar=baz\",changelog:[{version:\"0.0.0\"}]},\"http.request.body.data\":{brief:\"HTTP request body data. Can be given as string or structural data of any format.\",type:\"string\",keys:[\"http.request.body.data\"],applyScrubbing:{key:\"auto\"},isInOtel:!1,visibility:\"public\",example:'[{\"role\": \"user\", \"message\": \"hello\"}]',changelog:[{version:\"0.6.0\",prs:[336],description:\"Added http.request.body.data attribute\"}]},\"http.request.body.decoded_size\":{brief:\"The decoded body size of the request (in bytes).\",type:\"integer\",keys:[\"http.request.body.decoded_size\",\"http.request_content_length_uncompressed\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:456,aliases:[\"http.request_content_length_uncompressed\"],changelog:[{version:\"0.21.0\",prs:[574],description:\"Added http.request.body.decoded_size attribute\"}],additionalContext:[\"This is the size after content decoding. Set it only when the decoded size is actually known, for example by measuring a decompressed request stream.\",\"Do not derive this from the `content-length` header, which always carries the encoded size. Use `http.request.body.size` for that.\"]},\"http.request.body.size\":{brief:\"The encoded body size of the request (in bytes).\",type:\"integer\",keys:[\"http.request.body.size\",\"http.request_content_length\"],applyScrubbing:{key:\"manual\"},isInOtel:!0,visibility:\"public\",example:123,aliases:[\"http.request_content_length\"],changelog:[{version:\"0.21.0\",prs:[574],description:\"Added http.request.body.size attribute\"}],additionalContext:[\"This is the on-the-wire (encoded) size. The `content-length` header always carries the encoded size, so set this attribute whenever `content-length` is known, regardless of whether `content-encoding` is present.\"]},\"http.request.connection_end\":{brief:\"The UNIX timestamp representing the time immediately after the browser finishes establishing the connection to the server to retrieve the resource. The timestamp value includes the time interval to establish the transport connection, as well as other time intervals such as TLS handshake and SOCKS authentication.\",type:\"double\",keys:[\"http.request.connection_end\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:173282955515e-2,changelog:[{version:\"0.4.0\",prs:[228]},{version:\"0.1.0\",prs:[134]},{version:\"0.0.0\"}]},\"http.request.connect_start\":{brief:\"The UNIX timestamp representing the time immediately before the user agent starts establishing the connection to the server to retrieve the resource.\",type:\"double\",keys:[\"http.request.connect_start\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:1732829555111e-3,changelog:[{version:\"0.4.0\",prs:[228]},{version:\"0.1.0\",prs:[134]},{version:\"0.0.0\"}]},\"http.request_content_length\":{brief:\"The encoded body size of the request (in bytes).\",type:\"integer\",keys:[\"http.request.body.size\",\"http.request_content_length\"],applyScrubbing:{key:\"manual\"},isInOtel:!0,visibility:\"public\",example:123,deprecation:{replacement:\"http.request.body.size\",status:\"backfill\"},aliases:[\"http.request.body.size\"],changelog:[{version:\"0.21.0\",prs:[574],description:\"Added http.request_content_length attribute, deprecated in favor of http.request.body.size\"}]},\"http.request_content_length_uncompressed\":{brief:\"The decoded body size of the request (in bytes).\",type:\"integer\",keys:[\"http.request.body.decoded_size\",\"http.request_content_length_uncompressed\"],applyScrubbing:{key:\"manual\"},isInOtel:!0,visibility:\"public\",example:456,deprecation:{replacement:\"http.request.body.decoded_size\",status:\"backfill\"},aliases:[\"http.request.body.decoded_size\"],changelog:[{version:\"0.21.0\",prs:[574],description:\"Added http.request_content_length_uncompressed attribute, deprecated in favor of http.request.body.decoded_size\"}]},\"http.request.domain_lookup_end\":{brief:\"The UNIX timestamp representing the time immediately after the browser finishes the domain-name lookup for the resource.\",type:\"double\",keys:[\"http.request.domain_lookup_end\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:1732829555201e-3,changelog:[{version:\"0.4.0\",prs:[228]},{version:\"0.1.0\",prs:[134]},{version:\"0.0.0\"}]},\"http.request.domain_lookup_start\":{brief:\"The UNIX timestamp representing the time immediately before the browser starts the domain name lookup for the resource.\",type:\"double\",keys:[\"http.request.domain_lookup_start\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:1732829555322e-3,changelog:[{version:\"0.4.0\",prs:[228]},{version:\"0.1.0\",prs:[134]},{version:\"0.0.0\"}]},\"http.request.duration\":{brief:\"The duration of a HTTP request, in milliseconds.\",type:\"integer\",keys:[\"http.request.duration\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:5e3,examples:[5e3],changelog:[{version:\"0.28.0\",prs:[697],description:\"Added http.request.duration attribute\"}],additionalContext:[\"This attribute is set by Relay.\"]},\"http.request.fetch_start\":{brief:\"The UNIX timestamp representing the time immediately before the browser starts to fetch the resource.\",type:\"double\",keys:[\"http.request.fetch_start\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:1732829555389e-3,changelog:[{version:\"0.4.0\",prs:[228]},{version:\"0.1.0\",prs:[134]},{version:\"0.0.0\"}]},\"http.request.header.<key>\":{brief:\"HTTP request headers, <key> being the lower-cased, but otherwise unchanged HTTP Header name, the value being the header values.\",type:\"string[]\",keys:[\"http.request.header.<key>\"],applyScrubbing:{key:\"auto\"},isInOtel:!0,visibility:\"public\",hasDynamicSuffix:!0,example:\"http.request.header.custom-header=['foo', 'bar']\",examples:[\"http.request.header.custom-header=['foo', 'bar']\",\"http.request.header.content-length=['123']\"],changelog:[{version:\"0.4.0\",prs:[201,204]},{version:\"0.1.0\",prs:[103]}]},\"http.request.method\":{brief:\"The HTTP method used.\",type:\"string\",keys:[\"http.request.method\",\"http.method\",\"http.request_method\",\"method\"],applyScrubbing:{key:\"manual\"},isInOtel:!0,visibility:\"public\",example:\"GET\",aliases:[\"method\",\"http.method\",\"http.request_method\"],changelog:[{version:\"0.1.0\",prs:[127]},{version:\"0.0.0\"}]},\"http.request_method\":{brief:\"The HTTP method used.\",type:\"string\",keys:[\"http.request.method\",\"http.method\",\"http.request_method\",\"method\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:\"GET\",deprecation:{replacement:\"http.request.method\",status:\"backfill\"},aliases:[\"method\",\"http.method\",\"http.request.method\"],changelog:[{version:\"0.6.0\",prs:[343],description:\"Added http.request_method attribute\"}]},\"http.request.redirect_end\":{brief:\"The UNIX timestamp representing the timestamp immediately after receiving the last byte of the response of the last redirect\",type:\"double\",keys:[\"http.request.redirect_end\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:1732829558502e-3,changelog:[{version:\"0.4.0\",prs:[228]},{version:\"0.1.0\",prs:[130,134]}]},\"http.request.redirect_start\":{brief:\"The UNIX timestamp representing the start time of the fetch which that initiates the redirect.\",type:\"double\",keys:[\"http.request.redirect_start\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:1732829555495e-3,changelog:[{version:\"0.4.0\",prs:[228]},{version:\"0.1.0\",prs:[134]},{version:\"0.0.0\"}]},\"http.request.request_start\":{brief:\"The UNIX timestamp representing the time immediately before the browser starts requesting the resource from the server, cache, or local resource. If the transport connection fails and the browser retires the request, the value returned will be the start of the retry request.\",type:\"double\",keys:[\"http.request.request_start\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:173282955551e-2,changelog:[{version:\"0.4.0\",prs:[228]},{version:\"0.1.0\",prs:[134]},{version:\"0.0.0\"}]},\"http.request.resend_count\":{brief:\"The ordinal number of request resending attempt (for any reason, including redirects).\",type:\"integer\",keys:[\"http.request.resend_count\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:2,changelog:[{version:\"0.4.0\",prs:[228]},{version:\"0.0.0\"}]},\"http.request.response_end\":{brief:\"The UNIX timestamp representing the time immediately after the browser receives the last byte of the resource or immediately before the transport connection is closed, whichever comes first.\",type:\"double\",keys:[\"http.request.response_end\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:173282955589e-2,changelog:[{version:\"0.4.0\",prs:[228]},{version:\"0.1.0\",prs:[134]},{version:\"0.0.0\"}]},\"http.request.response_start\":{brief:\"The UNIX timestamp representing the time immediately before the browser starts requesting the resource from the server, cache, or local resource. If the transport connection fails and the browser retires the request, the value returned will be the start of the retry request.\",type:\"double\",keys:[\"http.request.response_start\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:17328295557e-1,changelog:[{version:\"0.4.0\",prs:[228]},{version:\"0.1.0\",prs:[134]},{version:\"0.0.0\"}]},\"http.request.same_origin\":{brief:\"Indicates that a URL has the same origin as the current page's origin in the browser.\",type:\"boolean\",keys:[\"http.request.same_origin\",\"url.same_origin\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:!0,aliases:[\"url.same_origin\"],changelog:[{version:\"0.16.0\",prs:[456],description:\"Added http.request.same_origin attribute\"}]},\"http.request.secure_connection_start\":{brief:\"The UNIX timestamp representing the time immediately before the browser starts the handshake process to secure the current connection. If a secure connection is not used, the property returns zero.\",type:\"double\",keys:[\"http.request.secure_connection_start\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:173282955573e-2,changelog:[{version:\"0.4.0\",prs:[228]},{version:\"0.1.0\",prs:[134]},{version:\"0.0.0\"}]},\"http.request.time_to_first_byte\":{brief:\"The time in seconds from the browser's timeorigin to when the first byte of the request's response was received. See https://web.dev/articles/ttfb#measure-resource-requests\",type:\"double\",keys:[\"http.request.time_to_first_byte\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:1.032,changelog:[{version:\"0.4.0\",prs:[228]},{version:\"0.1.0\",prs:[131]}]},\"http.request.worker_start\":{brief:\"The UNIX timestamp representing the timestamp immediately before dispatching the FetchEvent if a Service Worker thread is already running, or immediately before starting the Service Worker thread if it is not already running.\",type:\"double\",keys:[\"http.request.worker_start\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:173282955368e-2,changelog:[{version:\"0.4.0\",prs:[228]},{version:\"0.1.0\",prs:[130,134]}]},\"http.response.body.decoded_size\":{brief:\"The decoded body size of the response (in bytes).\",type:\"integer\",keys:[\"http.response.body.decoded_size\",\"http.decoded_response_content_length\",\"http.response_content_length_uncompressed\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:456,aliases:[\"http.decoded_response_content_length\",\"http.response_content_length_uncompressed\"],changelog:[{version:\"0.21.0\",prs:[574],description:\"Added http.response.body.decoded_size attribute\"}],additionalContext:[\"This is the size after content decoding. Set it only when the decoded size is actually known, for example from the browser Resource Timing `decodedBodySize` or by measuring a decompressed response stream.\",\"Do not derive this from the `content-length` header, which always carries the encoded size. Use `http.response.body.size` for that.\"]},\"http.response.body.size\":{brief:\"The encoded body size of the response (in bytes).\",type:\"integer\",keys:[\"http.response.body.size\",\"http.response.header.content-length\",\"http.response_content_length\"],applyScrubbing:{key:\"manual\"},isInOtel:!0,visibility:\"public\",example:123,aliases:[\"http.response_content_length\",\"http.response.header.content-length\"],changelog:[{version:\"0.4.0\",prs:[228]},{version:\"0.1.0\",prs:[106]},{version:\"0.0.0\"}]},\"http.response_content_length\":{brief:\"The encoded body size of the response (in bytes).\",type:\"integer\",keys:[\"http.response.body.size\",\"http.response.header.content-length\",\"http.response_content_length\"],applyScrubbing:{key:\"manual\"},isInOtel:!0,visibility:\"public\",example:123,deprecation:{replacement:\"http.response.body.size\",status:\"backfill\"},aliases:[\"http.response.body.size\",\"http.response.header.content-length\"],changelog:[{version:\"0.4.0\",prs:[228]},{version:\"0.1.0\",prs:[61,106]},{version:\"0.0.0\"}],searchAlias:{name:\"http.response_content_length\",type:\"byte\"}},\"http.response_content_length_uncompressed\":{brief:\"The decoded body size of the response (in bytes).\",type:\"integer\",keys:[\"http.response.body.decoded_size\",\"http.decoded_response_content_length\",\"http.response_content_length_uncompressed\"],applyScrubbing:{key:\"manual\"},isInOtel:!0,visibility:\"public\",example:456,deprecation:{replacement:\"http.response.body.decoded_size\",status:\"backfill\"},aliases:[\"http.response.body.decoded_size\",\"http.decoded_response_content_length\"],changelog:[{version:\"0.21.0\",prs:[574],description:\"Added http.response_content_length_uncompressed attribute, deprecated in favor of http.response.body.decoded_size\"}]},\"http.response.header.content-length\":{brief:\"The size of the message body sent to the recipient (in bytes)\",type:\"string\",keys:[\"http.response.header.content-length\",\"http.response.body.size\",\"http.response_content_length\"],applyScrubbing:{key:\"manual\"},isInOtel:!0,visibility:\"public\",example:\"http.response.header.custom-header=['foo', 'bar']\",aliases:[\"http.response_content_length\",\"http.response.body.size\"],changelog:[{version:\"0.1.0\",prs:[127]},{version:\"0.0.0\"}]},\"http.response.header.<key>\":{brief:\"HTTP response headers, <key> being the lower-cased, but otherwise unchanged HTTP Header name, the value being the header values.\",type:\"string[]\",keys:[\"http.response.header.<key>\"],applyScrubbing:{key:\"auto\"},isInOtel:!0,visibility:\"public\",hasDynamicSuffix:!0,example:\"http.response.header.custom-header=['foo', 'bar']\",examples:[\"http.response.header.custom-header=['foo', 'bar']\",\"http.response.header.content-length=['123']\"],changelog:[{version:\"0.4.0\",prs:[201,204]},{version:\"0.1.0\",prs:[103]}]},\"http.response.size\":{brief:\"The transfer size of the response (in bytes).\",type:\"integer\",keys:[\"http.response.size\",\"http.response_transfer_size\"],applyScrubbing:{key:\"manual\"},isInOtel:!0,visibility:\"public\",example:456,aliases:[\"http.response_transfer_size\"],changelog:[{version:\"0.4.0\",prs:[228]},{version:\"0.0.0\"}]},\"http.response.status_code\":{brief:\"The status code of the HTTP response.\",type:\"integer\",keys:[\"http.response.status_code\",\"http.response_status_code\",\"http.status_code\"],applyScrubbing:{key:\"manual\"},isInOtel:!0,visibility:\"public\",example:404,aliases:[\"http.status_code\"],changelog:[{version:\"0.4.0\",prs:[228]},{version:\"0.0.0\"}],searchAlias:{name:\"http.response_status_code\"}},\"http.response.status_text\":{brief:\"The reason phrase of the HTTP response.\",type:\"string\",keys:[\"http.response.status_text\",\"http.status_text\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:\"NOT FOUND\",aliases:[\"http.status_text\"],changelog:[{version:\"0.21.0\",prs:[574],description:\"Added http.response.status_text attribute\"}],additionalContext:[\"HTTP/2 and HTTP/3 do not carry a reason phrase. Do not set this attribute when the protocol provides none; use `http.response.status_code` instead.\"]},\"http.response_transfer_size\":{brief:\"The transfer size of the response (in bytes).\",type:\"integer\",keys:[\"http.response.size\",\"http.response_transfer_size\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:456,deprecation:{replacement:\"http.response.size\",status:\"backfill\"},aliases:[\"http.response.size\"],changelog:[{version:\"0.4.0\",prs:[228]},{version:\"0.1.0\",prs:[61]},{version:\"0.0.0\"}],searchAlias:{name:\"http.response_transfer_size\",type:\"byte\"}},\"http.route\":{brief:\"The matched route, that is, the path template in the format used by the respective server framework.\",type:\"string\",keys:[\"http.route\"],applyScrubbing:{key:\"manual\"},isInOtel:!0,visibility:\"public\",example:\"/users/:id\",examples:[\"/users/:id\",\"my-controller/my-action/{id}\",\"/posts\"],aliases:[\"route\"],changelog:[{version:\"0.19.0\",prs:[505,521],description:\"Added multiple examples, removed alias to `url.template`, added additional context\"},{version:\"0.1.0\",prs:[127]},{version:\"0.0.0\"}],additionalContext:[\"This attribute should primarily be set by server-side instrumentation that captures the framework route of an incoming request.\",\"For `http.client` spans and client-side routing, use `url.template` instead.\"]},\"http.scheme\":{brief:\"The URI scheme component identifying the used protocol.\",type:\"string\",keys:[\"url.scheme\",\"http.scheme\"],applyScrubbing:{key:\"manual\"},isInOtel:!0,visibility:\"public\",example:\"https\",deprecation:{replacement:\"url.scheme\",status:\"backfill\"},aliases:[\"url.scheme\"],changelog:[{version:\"0.1.0\",prs:[61,127]},{version:\"0.0.0\"}]},\"http.server_name\":{brief:\"The server domain name\",type:\"string\",keys:[\"server.address\",\"address\",\"http.server_name\",\"net.host.name\",\"server_name\"],applyScrubbing:{key:\"manual\"},isInOtel:!0,visibility:\"public\",example:\"example.com\",deprecation:{replacement:\"server.address\",status:\"backfill\"},aliases:[\"address\",\"server.address\",\"net.host.name\",\"http.host\",\"server_name\",\"net.peer.name\"],changelog:[{version:\"0.24.0\",prs:[647],description:\"Added server_name as an alias\"},{version:\"0.21.0\",prs:[588,602],description:\"Added net.peer.name as an alias\"},{version:\"0.19.0\",prs:[534],description:\"Added address as an alias\"},{version:\"0.1.0\",prs:[61,108,127]},{version:\"0.0.0\"}]},\"http.server.request.time_in_queue\":{brief:\"The time in milliseconds the request spent in the server queue before processing began. Measured from the X-Request-Start header set by reverse proxies (e.g., Nginx, HAProxy, Heroku) to when the application started handling the request.\",type:\"double\",keys:[\"http.server.request.time_in_queue\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:50,changelog:[{version:\"0.5.0\",prs:[267]}]},\"http.status_code\":{brief:\"The status code of the HTTP response.\",type:\"integer\",keys:[\"http.response.status_code\",\"http.response_status_code\",\"http.status_code\"],applyScrubbing:{key:\"manual\"},isInOtel:!0,visibility:\"public\",example:404,deprecation:{replacement:\"http.response.status_code\",status:\"backfill\"},aliases:[\"http.response.status_code\"],changelog:[{version:\"0.4.0\",prs:[228]},{version:\"0.1.0\",prs:[61]},{version:\"0.0.0\"}]},\"http.status_text\":{brief:\"The reason phrase of the HTTP response\",type:\"string\",keys:[\"http.response.status_text\",\"http.status_text\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:\"NOT FOUND\",examples:[\"NOT FOUND\"],deprecation:{replacement:\"http.response.status_text\",status:\"backfill\"},aliases:[\"http.response.status_text\"],changelog:[{version:\"0.21.0\",prs:[574],description:\"Added http.status_text attribute, deprecated in favor of http.response.status_text\"}]},\"http.target\":{brief:\"The pathname and query string of the URL.\",type:\"string\",keys:[\"http.target\"],applyScrubbing:{key:\"auto\"},isInOtel:!0,visibility:\"public\",example:\"/test?foo=bar#buzz\",deprecation:{reason:\"This attribute is being deprecated in favor of url.path, url.query and url.fragment. The value holds all three parts at once, so it has no single replacement.\"},changelog:[{version:\"0.21.0\",prs:[587],description:\"Documented url.path, url.query and url.fragment as the replacements for http.target\"},{version:\"0.1.0\",prs:[61]},{version:\"0.0.0\"}]},\"http.url\":{brief:\"The URL of the resource that was fetched.\",type:\"string\",keys:[\"url.full\",\"aws.request.url\",\"http.url\",\"messaging.url\",\"url\"],applyScrubbing:{key:\"auto\"},isInOtel:!0,visibility:\"public\",example:\"https://example.com/test?foo=bar#buzz\",deprecation:{replacement:\"url.full\",status:\"backfill\"},aliases:[\"url.full\",\"url\",\"aws.request.url\",\"messaging.url\"],changelog:[{version:\"0.21.0\",prs:[581],description:\"Added messaging.url as an alias\"},{version:\"0.1.0\",prs:[61,108]},{version:\"0.0.0\"}]},\"http.user_agent\":{brief:\"Value of the HTTP User-Agent header sent by the client.\",type:\"string\",keys:[\"user_agent.original\",\"http.user_agent\"],applyScrubbing:{key:\"manual\"},isInOtel:!0,visibility:\"public\",example:\"Mozilla/5.0 (iPhone; CPU iPhone OS 14_7_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.1.2 Mobile/15E148 Safari/604.1\",deprecation:{replacement:\"user_agent.original\",status:\"backfill\"},aliases:[\"user_agent.original\"],changelog:[{version:\"0.1.0\",prs:[61,127]},{version:\"0.0.0\"}]},id:{brief:\"A unique identifier for the span.\",type:\"string\",keys:[\"id\"],applyScrubbing:{key:\"never\"},isInOtel:!1,visibility:\"public\",example:\"f47ac10b58cc4372a5670e02b2c3d479\",changelog:[{version:\"0.0.0\"}]},inp:{brief:\"The value of the recorded Interaction to Next Paint (INP) web vital\",type:\"double\",keys:[\"browser.web_vital.inp.value\",\"inp\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:200,deprecation:{replacement:\"browser.web_vital.inp.value\",reason:\"The INP web vital is now recorded as a browser.web_vital.inp.value attribute.\",status:\"backfill\"},aliases:[\"browser.web_vital.inp.value\"],changelog:[{version:\"0.5.0\",prs:[229],description:\"Added and deprecated attribute to document JS SDK's current behaviour\"}]},\"integrity.blocked_url\":{brief:\"The URL of the resource blocked by the integrity policy.\",type:\"string\",keys:[\"integrity.blocked_url\"],applyScrubbing:{key:\"auto\"},isInOtel:!1,visibility:\"public\",example:\"https://example.com/app.js\",changelog:[{version:\"0.27.0\",prs:[691]}]},\"integrity.destination\":{brief:\"The destination type of the resource affected by the integrity policy.\",type:\"string\",keys:[\"integrity.destination\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:\"script\",changelog:[{version:\"0.27.0\",prs:[691]}]},\"integrity.document_url\":{brief:\"The URL of the document where the integrity violation occurred.\",type:\"string\",keys:[\"integrity.document_url\"],applyScrubbing:{key:\"auto\"},isInOtel:!1,visibility:\"public\",example:\"https://example.com/index.html\",changelog:[{version:\"0.27.0\",prs:[691]}]},\"integrity.report_only\":{brief:\"Whether the integrity violation was generated by a report-only policy.\",type:\"boolean\",keys:[\"integrity.report_only\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:!0,changelog:[{version:\"0.27.0\",prs:[691]}]},\"jsonrpc.protocol.version\":{brief:\"The version of the JSON-RPC protocol used.\",type:\"string\",keys:[\"jsonrpc.protocol.version\"],applyScrubbing:{key:\"manual\"},isInOtel:!0,visibility:\"public\",example:\"2.0\",changelog:[{version:\"0.12.0\",prs:[420],description:\"Added jsonrpc.protocol.version attribute\"}]},\"jsonrpc.request.id\":{brief:\"The JSON-RPC request identifier, used to correlate a request with its response.\",type:\"string\",keys:[\"jsonrpc.request.id\",\"mcp.request.id\"],applyScrubbing:{key:\"manual\"},isInOtel:!0,visibility:\"public\",example:\"1\",examples:[\"1\"],aliases:[\"mcp.request.id\"],changelog:[{version:\"0.27.0\",prs:[671],description:\"Removed the session-scoped uniqueness requirement from the request identifier\"},{version:\"0.12.0\",prs:[420],description:\"Added jsonrpc.request.id attribute\"}]},\"jvm.gc.action\":{brief:\"Name of the garbage collector action.\",type:\"string\",keys:[\"jvm.gc.action\"],applyScrubbing:{key:\"manual\"},isInOtel:!0,visibility:\"public\",example:\"end of minor GC\",changelog:[{version:\"0.1.0\",prs:[127]},{version:\"0.0.0\"}]},\"jvm.gc.name\":{brief:\"Name of the garbage collector.\",type:\"string\",keys:[\"jvm.gc.name\"],applyScrubbing:{key:\"manual\"},isInOtel:!0,visibility:\"public\",example:\"G1 Young Generation\",changelog:[{version:\"0.1.0\",prs:[127]},{version:\"0.0.0\"}]},\"jvm.memory.pool.name\":{brief:\"Name of the memory pool.\",type:\"string\",keys:[\"jvm.memory.pool.name\"],applyScrubbing:{key:\"manual\"},isInOtel:!0,visibility:\"public\",example:\"G1 Old Gen\",changelog:[{version:\"0.1.0\",prs:[127]},{version:\"0.0.0\"}]},\"jvm.memory.type\":{brief:\"Name of the memory pool.\",type:\"string\",keys:[\"jvm.memory.type\"],applyScrubbing:{key:\"manual\"},isInOtel:!0,visibility:\"public\",example:\"G1 Old Gen\",changelog:[{version:\"0.1.0\",prs:[127]},{version:\"0.0.0\"}]},\"jvm.thread.daemon\":{brief:\"Whether the thread is daemon or not.\",type:\"boolean\",keys:[\"jvm.thread.daemon\"],applyScrubbing:{key:\"manual\"},isInOtel:!0,visibility:\"public\",example:!0,changelog:[{version:\"0.0.0\"}]},\"jvm.thread.state\":{brief:\"State of the thread.\",type:\"string\",keys:[\"jvm.thread.state\"],applyScrubbing:{key:\"manual\"},isInOtel:!0,visibility:\"public\",example:\"blocked\",changelog:[{version:\"0.1.0\",prs:[127]},{version:\"0.0.0\"}]},\"koa.name\":{brief:\"The name of the Koa middleware or matched route that handled the request.\",type:\"string\",keys:[\"koa.name\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:\"/users/:id\",deprecation:{reason:\"No single replacement. SDKs should use http.route for router layers and code.function.name for middleware layers instead.\"},changelog:[{version:\"0.16.0\",prs:[490],description:\"Added koa.name attribute as deprecated\"}]},\"koa.type\":{brief:\"The type of the Koa layer that handled the request.\",type:\"string\",keys:[\"koa.type\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:\"router\",changelog:[{version:\"0.16.0\",prs:[471],description:\"Added koa.type attribute\"}]},\"langchain.chain.name\":{brief:\"The name of the LangChain chain being executed.\",type:\"string\",keys:[\"gen_ai.pipeline.name\",\"ai.pipeline.name\",\"langchain.chain.name\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:\"format_prompt\",examples:[\"format_prompt\",\"RunnableSequence\"],deprecation:{replacement:\"gen_ai.pipeline.name\",reason:\"This attribute is being deprecated in favor of gen_ai.pipeline.name, which is the SDK-agnostic replacement for the name of the AI pipeline or chain being executed.\",status:\"backfill\"},aliases:[\"gen_ai.pipeline.name\",\"ai.pipeline.name\"],changelog:[{version:\"0.22.0\",prs:[599],description:\"Added langchain.chain.name attribute\"}]},lcp:{brief:\"The value of the recorded Largest Contentful Paint (LCP) web vital\",type:\"double\",keys:[\"browser.web_vital.lcp.value\",\"lcp\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:2500,deprecation:{replacement:\"browser.web_vital.lcp.value\",reason:\"The LCP web vital is now recorded as a browser.web_vital.lcp.value attribute.\",status:\"backfill\"},aliases:[\"browser.web_vital.lcp.value\"],changelog:[{version:\"0.5.0\",prs:[229],description:\"Added and deprecated attribute to document JS SDK's current behaviour\"}]},\"lcp.element\":{brief:\"The dom element responsible for the largest contentful paint.\",type:\"string\",keys:[\"browser.web_vital.lcp.element\",\"lcp.element\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:\"img\",deprecation:{replacement:\"browser.web_vital.lcp.element\",reason:\"The LCP element is now recorded as a browser.web_vital.lcp.element attribute.\",status:\"backfill\"},aliases:[\"browser.web_vital.lcp.element\"],changelog:[{version:\"0.5.0\",prs:[233]},{version:\"0.1.0\",prs:[127]},{version:\"0.0.0\"}]},\"lcp.id\":{brief:\"The id of the dom element responsible for the largest contentful paint.\",type:\"string\",keys:[\"browser.web_vital.lcp.id\",\"lcp.id\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:\"#hero\",deprecation:{replacement:\"browser.web_vital.lcp.id\",reason:\"The LCP id is now recorded as a browser.web_vital.lcp.id attribute.\",status:\"backfill\"},aliases:[\"browser.web_vital.lcp.id\"],changelog:[{version:\"0.5.0\",prs:[233]},{version:\"0.1.0\",prs:[127]},{version:\"0.0.0\"}]},\"lcp.loadTime\":{brief:\"The time it took for the LCP element to be loaded\",type:\"integer\",keys:[\"browser.web_vital.lcp.load_time\",\"lcp.loadTime\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:1402,deprecation:{replacement:\"browser.web_vital.lcp.load_time\",reason:\"The LCP load time is now recorded as a browser.web_vital.lcp.load_time attribute.\",status:\"backfill\"},aliases:[\"browser.web_vital.lcp.load_time\"],changelog:[{version:\"0.5.0\",prs:[233]}]},\"lcp.renderTime\":{brief:\"The time it took for the LCP element to be rendered\",type:\"integer\",keys:[\"browser.web_vital.lcp.render_time\",\"lcp.renderTime\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:1685,deprecation:{replacement:\"browser.web_vital.lcp.render_time\",reason:\"The LCP render time is now recorded as a browser.web_vital.lcp.render_time attribute.\",status:\"backfill\"},aliases:[\"browser.web_vital.lcp.render_time\"],changelog:[{version:\"0.5.0\",prs:[233]}]},\"lcp.size\":{brief:\"The size of the largest contentful paint element.\",type:\"integer\",keys:[\"browser.web_vital.lcp.size\",\"lcp.size\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:1234,deprecation:{replacement:\"browser.web_vital.lcp.size\",reason:\"The LCP size is now recorded as a browser.web_vital.lcp.size attribute.\",status:\"backfill\"},aliases:[\"browser.web_vital.lcp.size\"],changelog:[{version:\"0.5.0\",prs:[233]},{version:\"0.4.0\",prs:[228]},{version:\"0.0.0\"}]},\"lcp.url\":{brief:\"The url of the dom element responsible for the largest contentful paint.\",type:\"string\",keys:[\"browser.web_vital.lcp.url\",\"lcp.url\"],applyScrubbing:{key:\"auto\"},isInOtel:!1,visibility:\"public\",example:\"https://example.com\",deprecation:{replacement:\"browser.web_vital.lcp.url\",reason:\"The LCP url is now recorded as a browser.web_vital.lcp.url attribute.\",status:\"backfill\"},aliases:[\"browser.web_vital.lcp.url\"],changelog:[{version:\"0.5.0\",prs:[233]},{version:\"0.1.0\",prs:[127]},{version:\"0.0.0\"}]},\"litestar.middleware_name\":{brief:\"The name of the Litestar middleware.\",type:\"string\",keys:[\"middleware.name\",\"django.middleware_name\",\"litestar.middleware_name\",\"starlette.middleware_name\",\"starlite.middleware_name\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:\"AuthenticationMiddleware\",deprecation:{replacement:\"middleware.name\",reason:\"This attribute is being deprecated in favor of middleware.name, which is the framework-agnostic replacement.\",status:\"backfill\"},aliases:[\"middleware.name\"],changelog:[{version:\"0.19.0\",prs:[486],description:\"Added litestar.middleware_name attribute, deprecated in favor of middleware.name\"}]},\"logger.name\":{brief:\"The name of the logger that generated this event.\",type:\"string\",keys:[\"logger.name\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:\"myLogger\",changelog:[{version:\"0.1.0\",prs:[127]},{version:\"0.0.0\"}]},\"mcp.auth.client.name\":{brief:\"Registered OAuth client application name associated with the authenticated MCP request. Taken from OAuth client registration metadata (client_name) made available by the authentication layer. This is distinct from the MCP implementation name in mcp.client.name; omit it when the OAuth client name is unavailable.\",type:\"string\",keys:[\"mcp.auth.client.name\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:\"Example Desktop\",examples:[\"Example Desktop\",\"Example CLI\"],changelog:[{version:\"0.27.0\",prs:[671],description:\"Added mcp.auth.client.name attribute\"}]},\"mcp.cancelled.reason\":{brief:\"Reason for the cancellation of an MCP operation.\",type:\"string\",keys:[\"mcp.cancelled.reason\"],applyScrubbing:{key:\"manual\",reason:\"Cancellation reasons may contain user-specific or sensitive information\"},isInOtel:!1,visibility:\"public\",example:\"User cancelled the request\",changelog:[{version:\"0.3.0\",prs:[171]}]},\"mcp.cancelled.request_id\":{brief:\"Request ID of the cancelled MCP operation.\",type:\"string\",keys:[\"mcp.cancelled.request_id\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:\"123\",changelog:[{version:\"0.3.0\",prs:[171]}]},\"mcp.client.name\":{brief:\"Name of the MCP client implementation, as declared in clientInfo. This is distinct from the registered OAuth application name in mcp.auth.client.name.\",type:\"string\",keys:[\"mcp.client.name\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:\"example-mcp-client\",examples:[\"example-mcp-client\"],changelog:[{version:\"0.27.0\",prs:[671],description:\"Clarified that the attribute describes declared MCP implementation metadata\"},{version:\"0.3.0\",prs:[171]}]},\"mcp.client.title\":{brief:\"Display title of the MCP client implementation, as declared in clientInfo.\",type:\"string\",keys:[\"mcp.client.title\"],applyScrubbing:{key:\"manual\",reason:\"Client titles may reveal user-specific application configurations or custom setups\"},isInOtel:!1,visibility:\"public\",example:\"Example MCP Client\",examples:[\"Example MCP Client\"],changelog:[{version:\"0.27.0\",prs:[671],description:\"Clarified that the attribute describes declared MCP implementation metadata\"},{version:\"0.3.0\",prs:[171]}]},\"mcp.client.version\":{brief:\"Version of the MCP client implementation, as declared in clientInfo.\",type:\"string\",keys:[\"mcp.client.version\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:\"1.0.0\",examples:[\"1.0.0\"],changelog:[{version:\"0.27.0\",prs:[671],description:\"Clarified that the attribute describes declared MCP implementation metadata\"},{version:\"0.3.0\",prs:[171]}]},\"mcp.lifecycle.phase\":{brief:\"Lifecycle phase indicator for MCP operations.\",type:\"string\",keys:[\"mcp.lifecycle.phase\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:\"initialization_complete\",changelog:[{version:\"0.3.0\",prs:[171]}]},\"mcp.logging.data_type\":{brief:\"Data type of the logged message content.\",type:\"string\",keys:[\"mcp.logging.data_type\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:\"string\",changelog:[{version:\"0.3.0\",prs:[171]}]},\"mcp.logging.level\":{brief:\"Log level for MCP logging operations.\",type:\"string\",keys:[\"mcp.logging.level\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:\"info\",changelog:[{version:\"0.3.0\",prs:[171]}]},\"mcp.logging.logger\":{brief:\"Logger name for MCP logging operations.\",type:\"string\",keys:[\"mcp.logging.logger\"],applyScrubbing:{key:\"manual\",reason:\"Logger names may be user-defined and could contain sensitive information\"},isInOtel:!1,visibility:\"public\",example:\"mcp_server\",changelog:[{version:\"0.3.0\",prs:[171]}]},\"mcp.logging.message\":{brief:\"Log message content from MCP logging operations.\",type:\"string\",keys:[\"mcp.logging.message\"],applyScrubbing:{key:\"auto\",reason:\"Log messages can contain user data\"},isInOtel:!1,visibility:\"public\",example:\"Tool execution completed successfully\",changelog:[{version:\"0.3.0\",prs:[171]}]},\"mcp.method.name\":{brief:\"The name of the MCP request or notification method being called.\",type:\"string\",keys:[\"mcp.method.name\"],applyScrubbing:{key:\"manual\"},isInOtel:!0,visibility:\"public\",example:\"tools/call\",changelog:[{version:\"0.12.0\",prs:[420],description:\"Set is_in_otel=true, attribute exists in OTel MCP registry\"},{version:\"0.3.0\",prs:[171]}]},\"mcp.progress.current\":{brief:\"Current progress value of an MCP operation.\",type:\"double\",keys:[\"mcp.progress.current\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:.2,examples:[.2,50],changelog:[{version:\"0.27.0\",prs:[671],description:\"Changed the type to double to support fractional MCP progress values\"},{version:\"0.4.0\",prs:[228]},{version:\"0.3.0\",prs:[171]}]},\"mcp.progress.message\":{brief:\"Progress message describing the current state of an MCP operation.\",type:\"string\",keys:[\"mcp.progress.message\"],applyScrubbing:{key:\"manual\",reason:\"Progress messages may contain user-specific or sensitive information\"},isInOtel:!1,visibility:\"public\",example:\"Processing 50 of 100 items\",changelog:[{version:\"0.3.0\",prs:[171]}]},\"mcp.progress.percentage\":{brief:\"Calculated progress percentage of an MCP operation. Computed from current/total * 100.\",type:\"double\",keys:[\"mcp.progress.percentage\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:50,changelog:[{version:\"0.4.0\",prs:[228]},{version:\"0.3.0\",prs:[171]}]},\"mcp.progress.token\":{brief:\"Token for tracking progress of an MCP operation.\",type:\"string\",keys:[\"mcp.progress.token\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:\"progress-token-123\",changelog:[{version:\"0.3.0\",prs:[171]}]},\"mcp.progress.total\":{brief:\"Total progress target value of an MCP operation.\",type:\"double\",keys:[\"mcp.progress.total\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:1,examples:[1,100],changelog:[{version:\"0.27.0\",prs:[671],description:\"Changed the type to double to support fractional MCP progress values\"},{version:\"0.4.0\",prs:[228]},{version:\"0.3.0\",prs:[171]}]},\"mcp.prompt.name\":{brief:\"Name of the MCP prompt template being used.\",type:\"string\",keys:[\"gen_ai.prompt.name\",\"mcp.prompt.name\"],applyScrubbing:{key:\"manual\",reason:\"Prompt names may reveal user behavior patterns or sensitive operations\"},isInOtel:!1,visibility:\"public\",example:\"summarize\",deprecation:{replacement:\"gen_ai.prompt.name\",reason:\"OTel uses gen_ai.prompt.name for MCP prompt names\",status:\"backfill\"},aliases:[\"gen_ai.prompt.name\"],changelog:[{version:\"0.12.0\",prs:[420],description:\"Deprecated in favor of gen_ai.prompt.name\"},{version:\"0.3.0\",prs:[171]}]},\"mcp.prompt.result.description\":{brief:\"Description of the prompt result.\",type:\"string\",keys:[\"mcp.prompt.result.description\"],applyScrubbing:{key:\"auto\"},isInOtel:!1,visibility:\"public\",example:\"A summary of the requested information\",changelog:[{version:\"0.3.0\",prs:[171]}]},\"mcp.prompt.result.<key>.content\":{brief:\"Legacy text content of an indexed message in a multi-message MCP prompt result.\",type:\"string\",keys:[\"mcp.prompt.result.<key>.content\"],applyScrubbing:{key:\"auto\",reason:\"Preserve automatic scrubbing of server-provided result fields.\"},isInOtel:!1,visibility:\"public\",example:\"Summarize the document.\",examples:[\"Summarize the document.\"],changelog:[{version:\"0.27.0\",prs:[689],description:\"Register an existing JavaScript SDK MCP result attribute.\"}],additionalContext:[\"Registers an existing Sentry JavaScript SDK attribute for compatibility.\",\"Emitted for results with multiple messages. <key> is the zero-based position in the original messages array; absent fields do not renumber later messages.\",\"Recorded only when output capture is enabled.\"]},\"mcp.prompt.result.<key>.role\":{brief:\"Legacy role of an indexed message in a multi-message MCP prompt result.\",type:\"string\",keys:[\"mcp.prompt.result.<key>.role\"],applyScrubbing:{key:\"auto\",reason:\"Preserve automatic scrubbing of server-provided result fields.\"},isInOtel:!1,visibility:\"public\",example:\"user\",examples:[\"user\",\"assistant\"],changelog:[{version:\"0.27.0\",prs:[689],description:\"Register an existing JavaScript SDK MCP result attribute.\"}],additionalContext:[\"Registers an existing Sentry JavaScript SDK attribute for compatibility.\",\"Emitted for results with multiple messages. <key> is the zero-based position in the original messages array; absent fields do not renumber later messages.\",\"Recorded only when output capture is enabled.\"]},\"mcp.prompt.result.message_content\":{brief:\"Content of the message in the prompt result. Used for single message results only.\",type:\"string\",keys:[\"mcp.prompt.result.message_content\"],applyScrubbing:{key:\"auto\"},isInOtel:!1,visibility:\"public\",example:\"Please provide a summary of the document\",changelog:[{version:\"0.3.0\",prs:[171]}]},\"mcp.prompt.result.message_count\":{brief:\"Number of messages in the prompt result.\",type:\"integer\",keys:[\"mcp.prompt.result.message_count\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:3,changelog:[{version:\"0.4.0\",prs:[228]},{version:\"0.3.0\",prs:[171]}]},\"mcp.prompt.result.message_role\":{brief:\"Role of the message in the prompt result. Used for single message results only.\",type:\"string\",keys:[\"mcp.prompt.result.message_role\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:\"user\",changelog:[{version:\"0.3.0\",prs:[171]}]},\"mcp.protocol.ready\":{brief:\"Readiness indicator for the legacy MCP initialization handshake. A non-zero value indicates that notifications/initialized has completed initialization. Omit for protocol versions without this handshake.\",type:\"integer\",keys:[\"mcp.protocol.ready\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:1,examples:[1],changelog:[{version:\"0.27.0\",prs:[671],description:\"Clarified that readiness describes the legacy MCP initialization handshake\"},{version:\"0.4.0\",prs:[228]},{version:\"0.3.0\",prs:[171]}]},\"mcp.protocol.version\":{brief:\"Version of the Model Context Protocol used for the operation.\",type:\"string\",keys:[\"mcp.protocol.version\"],applyScrubbing:{key:\"manual\"},isInOtel:!0,visibility:\"public\",example:\"2024-11-05\",examples:[\"2024-11-05\"],changelog:[{version:\"0.27.0\",prs:[671],description:\"Clarified that the protocol version applies to an operation without requiring a session\"},{version:\"0.12.0\",prs:[420],description:\"Set is_in_otel=true, attribute exists in OTel MCP registry\"},{version:\"0.3.0\",prs:[171]}]},\"mcp.request.argument.<key>\":{brief:\"MCP request argument with dynamic key suffix. The <key> is replaced with the actual argument name. The value is a JSON-stringified representation of the argument value.\",type:\"string\",keys:[\"mcp.request.argument.<key>\"],applyScrubbing:{key:\"auto\",reason:\"Arguments contain user input\"},isInOtel:!1,visibility:\"public\",hasDynamicSuffix:!0,example:\"mcp.request.argument.query='weather in Paris'\",changelog:[{version:\"0.3.0\",prs:[176]}]},\"mcp.request.argument.name\":{brief:\"Name argument from prompts/get MCP request.\",type:\"string\",keys:[\"mcp.request.argument.name\"],applyScrubbing:{key:\"auto\",reason:\"Prompt names can contain user input\"},isInOtel:!1,visibility:\"public\",example:\"summarize\",changelog:[{version:\"0.3.0\",prs:[171]}]},\"mcp.request.argument.uri\":{brief:\"URI argument from resources/read MCP request.\",type:\"string\",keys:[\"mcp.request.argument.uri\"],applyScrubbing:{key:\"auto\",reason:\"URIs can contain user file paths\"},isInOtel:!1,visibility:\"public\",example:\"file:///path/to/resource\",changelog:[{version:\"0.3.0\",prs:[171]}]},\"mcp.request.id\":{brief:\"JSON-RPC request identifier for the MCP request, used to correlate the request with its response.\",type:\"string\",keys:[\"jsonrpc.request.id\",\"mcp.request.id\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:\"1\",examples:[\"1\"],deprecation:{replacement:\"jsonrpc.request.id\",reason:\"OTel models MCP as JSON-RPC, uses jsonrpc.request.id\",status:\"backfill\"},aliases:[\"jsonrpc.request.id\"],changelog:[{version:\"0.27.0\",prs:[671],description:\"Removed the session-scoped uniqueness requirement from the request identifier\"},{version:\"0.12.0\",prs:[420],description:\"Deprecated in favor of jsonrpc.request.id\"},{version:\"0.3.0\",prs:[171]}]},\"mcp.resource.protocol\":{brief:\"URI scheme of the MCP resource being accessed, extracted from its URI. This is distinct from the network protocol used to communicate with the MCP server.\",type:\"string\",keys:[\"mcp.resource.protocol\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:\"file\",examples:[\"file\",\"postgres\"],changelog:[{version:\"0.27.0\",prs:[671],description:\"Clarified Sentry-specific semantics and removed the incorrect network attribute alias and deprecation\"},{version:\"0.21.0\",prs:[581],description:\"Added messaging.protocol as an alias\"},{version:\"0.12.0\",prs:[420],description:\"Deprecated in favor of network.protocol.name\"},{version:\"0.3.0\",prs:[171]}]},\"mcp.resource.uri\":{brief:\"The resource URI being accessed in an MCP operation.\",type:\"string\",keys:[\"mcp.resource.uri\"],applyScrubbing:{key:\"auto\",reason:\"URIs can contain sensitive file paths\"},isInOtel:!0,visibility:\"public\",example:\"file:///path/to/file.txt\",changelog:[{version:\"0.12.0\",prs:[420],description:\"Set is_in_otel=true, attribute exists in OTel MCP registry\"},{version:\"0.3.0\",prs:[171]}]},\"mcp.server.name\":{brief:\"Name of the MCP server implementation, as declared in serverInfo.\",type:\"string\",keys:[\"mcp.server.name\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:\"example-mcp-server\",examples:[\"example-mcp-server\"],changelog:[{version:\"0.27.0\",prs:[671],description:\"Clarified that the attribute describes declared MCP implementation metadata\"},{version:\"0.3.0\",prs:[171]}]},\"mcp.server.title\":{brief:\"Display title of the MCP server implementation, as declared in serverInfo.\",type:\"string\",keys:[\"mcp.server.title\"],applyScrubbing:{key:\"manual\",reason:\"Server titles may reveal user-specific application configurations or custom setups\"},isInOtel:!1,visibility:\"public\",example:\"Example MCP Server\",examples:[\"Example MCP Server\"],changelog:[{version:\"0.27.0\",prs:[671],description:\"Clarified that the attribute describes declared MCP implementation metadata\"},{version:\"0.3.0\",prs:[171]}]},\"mcp.server.version\":{brief:\"Version of the MCP server implementation, as declared in serverInfo.\",type:\"string\",keys:[\"mcp.server.version\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:\"0.1.0\",examples:[\"0.1.0\"],changelog:[{version:\"0.27.0\",prs:[671],description:\"Clarified that the attribute describes declared MCP implementation metadata\"},{version:\"0.3.0\",prs:[171]}]},\"mcp.session.id\":{brief:\"Identifier for an MCP protocol session, when the operation belongs to a session.\",type:\"string\",keys:[\"mcp.session.id\"],applyScrubbing:{key:\"manual\"},isInOtel:!0,visibility:\"public\",example:\"550e8400-e29b-41d4-a716-446655440000\",examples:[\"550e8400-e29b-41d4-a716-446655440000\"],changelog:[{version:\"0.27.0\",prs:[671],description:\"Clarified that the identifier requires a real MCP protocol session\"},{version:\"0.12.0\",prs:[420],description:\"Set is_in_otel=true, attribute exists in OTel MCP registry\"},{version:\"0.3.0\",prs:[171]}],additionalContext:[\"Applies to protocol versions and transports that provide MCP session management, including legacy Streamable HTTP sessions. Omit for operations without a protocol session; do not synthesize a session identifier from a request, connection, or conversation.\"]},\"mcp.tool.name\":{brief:\"Name of the MCP tool being called.\",type:\"string\",keys:[\"gen_ai.tool.name\",\"ai.function_call\",\"mcp.tool.name\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:\"calculator\",deprecation:{replacement:\"gen_ai.tool.name\",reason:\"OTel uses gen_ai.tool.name for MCP tool names\",status:\"backfill\"},aliases:[\"gen_ai.tool.name\",\"ai.function_call\"],changelog:[{version:\"0.12.0\",prs:[420],description:\"Deprecated in favor of gen_ai.tool.name\"},{version:\"0.3.0\",prs:[171]}]},\"mcp.tool.result.content\":{brief:\"The content of the tool result.\",type:\"string\",keys:[\"gen_ai.tool.call.result\",\"ai.toolCall.result\",\"anthropic.tool_result.content\",\"gen_ai.tool.message\",\"gen_ai.tool.output\",\"mcp.tool.result.content\"],applyScrubbing:{key:\"manual\",reason:\"Tool results can contain user data\"},isInOtel:!1,visibility:\"public\",example:'{\"output\": \"rainy\", \"toolCallId\": \"1\"}',deprecation:{replacement:\"gen_ai.tool.call.result\",reason:\"OTel uses gen_ai.tool.call.result for MCP tool results\",status:\"backfill\"},aliases:[\"gen_ai.tool.call.result\",\"gen_ai.tool.message\",\"gen_ai.tool.output\",\"ai.toolCall.result\",\"anthropic.tool_result.content\"],changelog:[{version:\"0.12.0\",prs:[420],description:\"Deprecated in favor of gen_ai.tool.call.result\"},{version:\"0.3.0\",prs:[171]},{version:\"0.2.0\",prs:[164]}]},\"mcp.tool.result.content_count\":{brief:\"Number of content items in the tool result.\",type:\"integer\",keys:[\"mcp.tool.result.content_count\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:1,deprecation:{reason:\"A count can be calculcated from the value of the gen_ai.tool.call.result attribute.\"},changelog:[{version:\"0.27.0\",prs:[669],description:\"Deprecate the attribute since it is redundant given gen_ai.tool.call.result.\"},{version:\"0.4.0\",prs:[228]},{version:\"0.3.0\",prs:[171]}]},\"mcp.tool.result.content_type\":{brief:\"Legacy content type of the content item in a single-item MCP tool result.\",type:\"string\",keys:[\"mcp.tool.result.content_type\"],applyScrubbing:{key:\"auto\",reason:\"Preserve automatic scrubbing of server-provided result fields.\"},isInOtel:!1,visibility:\"public\",example:\"text\",examples:[\"text\",\"image\"],deprecation:{reason:\"Capture the complete tool result in gen_ai.tool.call.result instead. This attribute describes only part of the result and cannot be directly backfilled.\"},changelog:[{version:\"0.27.0\",prs:[689],description:\"Register an existing JavaScript SDK MCP result attribute as deprecated in favor of gen_ai.tool.call.result, without backfill.\"}],additionalContext:[\"Registers an existing Sentry JavaScript SDK attribute for compatibility.\",\"Emitted only when the result contains exactly one content item.\",\"Recorded even when output capture is disabled.\"]},\"mcp.tool.result.data_size\":{brief:\"Legacy length of the data string in UTF-16 code units of the content item in a single-item MCP tool result.\",type:\"integer\",keys:[\"mcp.tool.result.data_size\"],applyScrubbing:{key:\"manual\",reason:\"The length contains no result content.\"},isInOtel:!1,visibility:\"public\",example:4,examples:[4,1024],deprecation:{reason:\"Capture the complete tool result in gen_ai.tool.call.result instead. This attribute describes only part of the result and cannot be directly backfilled.\"},changelog:[{version:\"0.27.0\",prs:[689],description:\"Register an existing JavaScript SDK MCP result attribute as deprecated in favor of gen_ai.tool.call.result, without backfill.\"}],additionalContext:[\"Registers an existing Sentry JavaScript SDK attribute for compatibility.\",\"Emitted only when the result contains exactly one content item.\",\"Recorded only when output capture is enabled.\",\"The JavaScript SDK records data.length. For base64-encoded image or audio data, this counts encoded characters, not decoded bytes.\"]},\"mcp.tool.result.is_error\":{brief:\"Whether a tool execution resulted in an error.\",type:\"boolean\",keys:[\"mcp.tool.result.is_error\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:!1,deprecation:{replacement:\"error.type\",reason:\"OTel uses error.type set to 'tool_error' when isError is true. Cannot be automatically backfilled due to type mismatch (boolean vs string).\"},changelog:[{version:\"0.12.0\",prs:[420],description:\"Deprecated in favor of error.type\"},{version:\"0.3.0\",prs:[171]}]},\"mcp.tool.result.<key>.content\":{brief:\"Legacy text content of an indexed content item in a multi-item MCP tool result.\",type:\"string\",keys:[\"mcp.tool.result.<key>.content\"],applyScrubbing:{key:\"auto\",reason:\"Preserve automatic scrubbing of server-provided result fields.\"},isInOtel:!1,visibility:\"public\",example:\"The operation completed.\",examples:[\"The operation completed.\"],deprecation:{reason:\"Capture the complete tool result in gen_ai.tool.call.result instead. This attribute describes only part of the result and cannot be directly backfilled.\"},changelog:[{version:\"0.27.0\",prs:[689],description:\"Register an existing JavaScript SDK MCP result attribute as deprecated in favor of gen_ai.tool.call.result, without backfill.\"}],additionalContext:[\"Registers an existing Sentry JavaScript SDK attribute for compatibility.\",\"Emitted for results with multiple content items. <key> is the zero-based position in the original content array; absent fields do not renumber later items.\",\"Recorded only when output capture is enabled.\",\"This is one item's text, not the complete tool result. It must not be aliased or directly backfilled to gen_ai.tool.call.result; reconstructing the complete result requires aggregation.\"]},\"mcp.tool.result.<key>.content_type\":{brief:\"Legacy content type of an indexed content item in a multi-item MCP tool result.\",type:\"string\",keys:[\"mcp.tool.result.<key>.content_type\"],applyScrubbing:{key:\"auto\",reason:\"Preserve automatic scrubbing of server-provided result fields.\"},isInOtel:!1,visibility:\"public\",example:\"text\",examples:[\"text\",\"image\"],deprecation:{reason:\"Capture the complete tool result in gen_ai.tool.call.result instead. This attribute describes only part of the result and cannot be directly backfilled.\"},changelog:[{version:\"0.27.0\",prs:[689],description:\"Register an existing JavaScript SDK MCP result attribute as deprecated in favor of gen_ai.tool.call.result, without backfill.\"}],additionalContext:[\"Registers an existing Sentry JavaScript SDK attribute for compatibility.\",\"Emitted for results with multiple content items. <key> is the zero-based position in the original content array; absent fields do not renumber later items.\",\"Recorded even when output capture is disabled.\"]},\"mcp.tool.result.<key>.data_size\":{brief:\"Legacy length of the data string in UTF-16 code units of an indexed content item in a multi-item MCP tool result.\",type:\"integer\",keys:[\"mcp.tool.result.<key>.data_size\"],applyScrubbing:{key:\"manual\",reason:\"The length contains no result content.\"},isInOtel:!1,visibility:\"public\",example:4,examples:[4,1024],deprecation:{reason:\"Capture the complete tool result in gen_ai.tool.call.result instead. This attribute describes only part of the result and cannot be directly backfilled.\"},changelog:[{version:\"0.27.0\",prs:[689],description:\"Register an existing JavaScript SDK MCP result attribute as deprecated in favor of gen_ai.tool.call.result, without backfill.\"}],additionalContext:[\"Registers an existing Sentry JavaScript SDK attribute for compatibility.\",\"Emitted for results with multiple content items. <key> is the zero-based position in the original content array; absent fields do not renumber later items.\",\"Recorded only when output capture is enabled.\",\"The JavaScript SDK records data.length. For base64-encoded image or audio data, this counts encoded characters, not decoded bytes.\"]},\"mcp.tool.result.<key>.mime_type\":{brief:\"Legacy MIME type of an indexed content item in a multi-item MCP tool result.\",type:\"string\",keys:[\"mcp.tool.result.<key>.mime_type\"],applyScrubbing:{key:\"auto\",reason:\"Preserve automatic scrubbing of server-provided result fields.\"},isInOtel:!1,visibility:\"public\",example:\"image/png\",examples:[\"image/png\",\"audio/wav\"],deprecation:{reason:\"Capture the complete tool result in gen_ai.tool.call.result instead. This attribute describes only part of the result and cannot be directly backfilled.\"},changelog:[{version:\"0.27.0\",prs:[689],description:\"Register an existing JavaScript SDK MCP result attribute as deprecated in favor of gen_ai.tool.call.result, without backfill.\"}],additionalContext:[\"Registers an existing Sentry JavaScript SDK attribute for compatibility.\",\"Emitted for results with multiple content items. <key> is the zero-based position in the original content array; absent fields do not renumber later items.\",\"Recorded only when output capture is enabled.\"]},\"mcp.tool.result.<key>.name\":{brief:\"Legacy resource link name of an indexed content item in a multi-item MCP tool result.\",type:\"string\",keys:[\"mcp.tool.result.<key>.name\"],applyScrubbing:{key:\"auto\",reason:\"Preserve automatic scrubbing of server-provided result fields.\"},isInOtel:!1,visibility:\"public\",example:\"report.txt\",examples:[\"report.txt\"],deprecation:{reason:\"Capture the complete tool result in gen_ai.tool.call.result instead. This attribute describes only part of the result and cannot be directly backfilled.\"},changelog:[{version:\"0.27.0\",prs:[689],description:\"Register an existing JavaScript SDK MCP result attribute as deprecated in favor of gen_ai.tool.call.result, without backfill.\"}],additionalContext:[\"Registers an existing Sentry JavaScript SDK attribute for compatibility.\",\"Emitted for results with multiple content items. <key> is the zero-based position in the original content array; absent fields do not renumber later items.\",\"Recorded only when output capture is enabled.\"]},\"mcp.tool.result.<key>.resource_mime_type\":{brief:\"Legacy embedded resource MIME type of an indexed content item in a multi-item MCP tool result.\",type:\"string\",keys:[\"mcp.tool.result.<key>.resource_mime_type\"],applyScrubbing:{key:\"auto\",reason:\"Preserve automatic scrubbing of server-provided result fields.\"},isInOtel:!1,visibility:\"public\",example:\"text/plain\",examples:[\"text/plain\"],deprecation:{reason:\"Capture the complete tool result in gen_ai.tool.call.result instead. This attribute describes only part of the result and cannot be directly backfilled.\"},changelog:[{version:\"0.27.0\",prs:[689],description:\"Register an existing JavaScript SDK MCP result attribute as deprecated in favor of gen_ai.tool.call.result, without backfill.\"}],additionalContext:[\"Registers an existing Sentry JavaScript SDK attribute for compatibility.\",\"Emitted for results with multiple content items. <key> is the zero-based position in the original content array; absent fields do not renumber later items.\",\"Recorded only when output capture is enabled.\"]},\"mcp.tool.result.<key>.resource_uri\":{brief:\"Legacy embedded resource URI of an indexed content item in a multi-item MCP tool result.\",type:\"string\",keys:[\"mcp.tool.result.<key>.resource_uri\"],applyScrubbing:{key:\"auto\",reason:\"Preserve automatic scrubbing of server-provided result fields.\"},isInOtel:!1,visibility:\"public\",example:\"file:///project/report.txt\",examples:[\"file:///project/report.txt\"],deprecation:{reason:\"Capture the complete tool result in gen_ai.tool.call.result instead. This attribute describes only part of the result and cannot be directly backfilled.\"},changelog:[{version:\"0.27.0\",prs:[689],description:\"Register an existing JavaScript SDK MCP result attribute as deprecated in favor of gen_ai.tool.call.result, without backfill.\"}],additionalContext:[\"Registers an existing Sentry JavaScript SDK attribute for compatibility.\",\"Emitted for results with multiple content items. <key> is the zero-based position in the original content array; absent fields do not renumber later items.\",\"Recorded only when output capture is enabled.\"]},\"mcp.tool.result.<key>.uri\":{brief:\"Legacy resource link URI of an indexed content item in a multi-item MCP tool result.\",type:\"string\",keys:[\"mcp.tool.result.<key>.uri\"],applyScrubbing:{key:\"auto\",reason:\"Preserve automatic scrubbing of server-provided result fields.\"},isInOtel:!1,visibility:\"public\",example:\"file:///project/report.txt\",examples:[\"file:///project/report.txt\"],deprecation:{reason:\"Capture the complete tool result in gen_ai.tool.call.result instead. This attribute describes only part of the result and cannot be directly backfilled.\"},changelog:[{version:\"0.27.0\",prs:[689],description:\"Register an existing JavaScript SDK MCP result attribute as deprecated in favor of gen_ai.tool.call.result, without backfill.\"}],additionalContext:[\"Registers an existing Sentry JavaScript SDK attribute for compatibility.\",\"Emitted for results with multiple content items. <key> is the zero-based position in the original content array; absent fields do not renumber later items.\",\"Recorded only when output capture is enabled.\"]},\"mcp.tool.result.mime_type\":{brief:\"Legacy MIME type of the content item in a single-item MCP tool result.\",type:\"string\",keys:[\"mcp.tool.result.mime_type\"],applyScrubbing:{key:\"auto\",reason:\"Preserve automatic scrubbing of server-provided result fields.\"},isInOtel:!1,visibility:\"public\",example:\"image/png\",examples:[\"image/png\",\"audio/wav\"],deprecation:{reason:\"Capture the complete tool result in gen_ai.tool.call.result instead. This attribute describes only part of the result and cannot be directly backfilled.\"},changelog:[{version:\"0.27.0\",prs:[689],description:\"Register an existing JavaScript SDK MCP result attribute as deprecated in favor of gen_ai.tool.call.result, without backfill.\"}],additionalContext:[\"Registers an existing Sentry JavaScript SDK attribute for compatibility.\",\"Emitted only when the result contains exactly one content item.\",\"Recorded only when output capture is enabled.\"]},\"mcp.tool.result.name\":{brief:\"Legacy resource link name of the content item in a single-item MCP tool result.\",type:\"string\",keys:[\"mcp.tool.result.name\"],applyScrubbing:{key:\"auto\",reason:\"Preserve automatic scrubbing of server-provided result fields.\"},isInOtel:!1,visibility:\"public\",example:\"report.txt\",examples:[\"report.txt\"],deprecation:{reason:\"Capture the complete tool result in gen_ai.tool.call.result instead. This attribute describes only part of the result and cannot be directly backfilled.\"},changelog:[{version:\"0.27.0\",prs:[689],description:\"Register an existing JavaScript SDK MCP result attribute as deprecated in favor of gen_ai.tool.call.result, without backfill.\"}],additionalContext:[\"Registers an existing Sentry JavaScript SDK attribute for compatibility.\",\"Emitted only when the result contains exactly one content item.\",\"Recorded only when output capture is enabled.\"]},\"mcp.tool.result.resource_mime_type\":{brief:\"Legacy embedded resource MIME type of the content item in a single-item MCP tool result.\",type:\"string\",keys:[\"mcp.tool.result.resource_mime_type\"],applyScrubbing:{key:\"auto\",reason:\"Preserve automatic scrubbing of server-provided result fields.\"},isInOtel:!1,visibility:\"public\",example:\"text/plain\",examples:[\"text/plain\"],deprecation:{reason:\"Capture the complete tool result in gen_ai.tool.call.result instead. This attribute describes only part of the result and cannot be directly backfilled.\"},changelog:[{version:\"0.27.0\",prs:[689],description:\"Register an existing JavaScript SDK MCP result attribute as deprecated in favor of gen_ai.tool.call.result, without backfill.\"}],additionalContext:[\"Registers an existing Sentry JavaScript SDK attribute for compatibility.\",\"Emitted only when the result contains exactly one content item.\",\"Recorded only when output capture is enabled.\"]},\"mcp.tool.result.resource_uri\":{brief:\"Legacy embedded resource URI of the content item in a single-item MCP tool result.\",type:\"string\",keys:[\"mcp.tool.result.resource_uri\"],applyScrubbing:{key:\"auto\",reason:\"Preserve automatic scrubbing of server-provided result fields.\"},isInOtel:!1,visibility:\"public\",example:\"file:///project/report.txt\",examples:[\"file:///project/report.txt\"],deprecation:{reason:\"Capture the complete tool result in gen_ai.tool.call.result instead. This attribute describes only part of the result and cannot be directly backfilled.\"},changelog:[{version:\"0.27.0\",prs:[689],description:\"Register an existing JavaScript SDK MCP result attribute as deprecated in favor of gen_ai.tool.call.result, without backfill.\"}],additionalContext:[\"Registers an existing Sentry JavaScript SDK attribute for compatibility.\",\"Emitted only when the result contains exactly one content item.\",\"Recorded only when output capture is enabled.\"]},\"mcp.tool.result.uri\":{brief:\"Legacy resource link URI of the content item in a single-item MCP tool result.\",type:\"string\",keys:[\"mcp.tool.result.uri\"],applyScrubbing:{key:\"auto\",reason:\"Preserve automatic scrubbing of server-provided result fields.\"},isInOtel:!1,visibility:\"public\",example:\"file:///project/report.txt\",examples:[\"file:///project/report.txt\"],deprecation:{reason:\"Capture the complete tool result in gen_ai.tool.call.result instead. This attribute describes only part of the result and cannot be directly backfilled.\"},changelog:[{version:\"0.27.0\",prs:[689],description:\"Register an existing JavaScript SDK MCP result attribute as deprecated in favor of gen_ai.tool.call.result, without backfill.\"}],additionalContext:[\"Registers an existing Sentry JavaScript SDK attribute for compatibility.\",\"Emitted only when the result contains exactly one content item.\",\"Recorded only when output capture is enabled.\"]},\"mcp.transport\":{brief:\"MCP transport implementation name, such as the transport class name. This identifies the implementation, not the network transport or application protocol.\",type:\"string\",keys:[\"mcp.transport\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:\"StdioServerTransport\",examples:[\"StdioServerTransport\",\"CustomHTTPTransport\"],changelog:[{version:\"0.27.0\",prs:[671],description:\"Clarified Sentry-specific semantics and removed the incorrect network attribute alias and deprecation\"},{version:\"0.12.0\",prs:[420],description:\"Deprecated in favor of network.transport\"},{version:\"0.3.0\",prs:[171]}]},\"mdc.<key>\":{brief:\"Attributes from the Mapped Diagnostic Context (MDC) present at the moment the log record was created. The MDC is supported by all the most popular logging solutions in the Java ecosystem, and it's usually implemented as a thread-local map that stores context for e.g. a specific request.\",type:\"string\",keys:[\"mdc.<key>\"],applyScrubbing:{key:\"auto\"},isInOtel:!1,visibility:\"public\",hasDynamicSuffix:!0,example:\"mdc.some_key='some_value'\",changelog:[{version:\"0.3.0\",prs:[176]}]},\"messaging.batch.message_count\":{brief:\"The number of messages sent, received, or processed in the scope of the batching operation.\",type:\"integer\",keys:[\"messaging.batch.message_count\"],applyScrubbing:{key:\"manual\"},isInOtel:!0,visibility:\"public\",example:10,changelog:[{version:\"0.6.0\",prs:[341],description:\"Added messaging.batch.message_count attribute\"}]},\"messaging.bullmq.flow.name\":{brief:\"The name of the root job of the BullMQ flow that FlowProducer.add() adds.\",type:\"string\",keys:[\"messaging.bullmq.flow.name\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:\"build-report\",examples:[\"build-report\"],changelog:[{version:\"0.28.0\",prs:[690],description:\"Added messaging.bullmq.flow.name attribute\"}],additionalContext:[\"The Sentry SDK sets this attribute from the `bullmq.flow.name` attribute of BullMQ's telemetry interface.\"]},\"messaging.bullmq.job.attempt_finished_timestamp\":{brief:\"The time in milliseconds since the Unix epoch when the current attempt of the BullMQ job finished.\",type:\"integer\",keys:[\"messaging.bullmq.job.attempt_finished_timestamp\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:1791184722406,examples:[1791184722406],changelog:[{version:\"0.28.0\",prs:[690],description:\"Added messaging.bullmq.job.attempt_finished_timestamp attribute\"}],additionalContext:[\"The Sentry SDK sets this attribute from the `bullmq.job.attempt_finished_timestamp` attribute of BullMQ's telemetry interface.\"]},\"messaging.bullmq.job.bulk.names\":{brief:\"The names of the BullMQ jobs or flows that one bulk operation adds, for example Queue.addBulk().\",type:\"string[]\",keys:[\"messaging.bullmq.job.bulk.names\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:[\"send-welcome-email\",\"generate-report\"],examples:[[\"send-welcome-email\",\"generate-report\"]],changelog:[{version:\"0.28.0\",prs:[690],description:\"Added messaging.bullmq.job.bulk.names attribute\"}],additionalContext:[\"The Sentry SDK sets this attribute from the `bullmq.job.bulk.names` attribute of BullMQ's telemetry interface.\"]},\"messaging.bullmq.job.deduplication.key\":{brief:\"The deduplication ID that Queue.removeDeduplicationKey() removes.\",type:\"string\",keys:[\"messaging.bullmq.job.deduplication.key\"],applyScrubbing:{key:\"auto\"},isInOtel:!1,visibility:\"public\",example:\"user-42-sync\",examples:[\"user-42-sync\"],changelog:[{version:\"0.28.0\",prs:[690],description:\"Added messaging.bullmq.job.deduplication.key attribute\"}],additionalContext:[\"The Sentry SDK sets this attribute from the `bullmq.job.deduplication.key` attribute of BullMQ's telemetry interface.\"]},\"messaging.bullmq.job.ids\":{brief:\"The IDs of the BullMQ jobs that Queue.clean() removed.\",type:\"string[]\",keys:[\"messaging.bullmq.job.ids\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:[\"1\",\"2\",\"3\"],examples:[[\"1\",\"2\",\"3\"]],changelog:[{version:\"0.28.0\",prs:[690],description:\"Added messaging.bullmq.job.ids attribute\"}],additionalContext:[\"The Sentry SDK sets this attribute from the `bullmq.job.ids` attribute of BullMQ's telemetry interface.\",\"BullMQ 5.79.1 sets this attribute. BullMQ 6.3.11 does not.\"]},\"messaging.bullmq.job.key\":{brief:\"The key that a BullMQ remove operation for a debounce or repeatable key gets, for example Queue.removeDebounceKey().\",type:\"string\",keys:[\"messaging.bullmq.job.key\"],applyScrubbing:{key:\"auto\"},isInOtel:!1,visibility:\"public\",example:\"user-42-sync\",examples:[\"user-42-sync\"],changelog:[{version:\"0.28.0\",prs:[690],description:\"Added messaging.bullmq.job.key attribute\"}],additionalContext:[\"The Sentry SDK sets this attribute from the `bullmq.job.key` attribute of BullMQ's telemetry interface.\"]},\"messaging.bullmq.job.name\":{brief:\"The name of the BullMQ job, which the user passes to Queue.add() to identify the kind of work.\",type:\"string\",keys:[\"messaging.bullmq.job.name\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:\"send-welcome-email\",examples:[\"send-welcome-email\",\"generate-report\"],changelog:[{version:\"0.28.0\",prs:[690],description:\"Added messaging.bullmq.job.name attribute\"}],additionalContext:[\"The Sentry SDK sets this attribute from the `bullmq.job.name` attribute of BullMQ's telemetry interface.\",\"Also set on the BullMQ job metrics.\"]},\"messaging.bullmq.job.processed_timestamp\":{brief:\"The time in milliseconds since the Unix epoch when the Worker started to process the BullMQ job.\",type:\"integer\",keys:[\"messaging.bullmq.job.processed_timestamp\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:1791184722281,examples:[1791184722281],changelog:[{version:\"0.28.0\",prs:[690],description:\"Added messaging.bullmq.job.processed_timestamp attribute\"}],additionalContext:[\"The Sentry SDK sets this attribute from the `bullmq.job.processed.timestamp` attribute of BullMQ's telemetry interface.\"]},\"messaging.bullmq.job.scheduler.id\":{brief:\"The ID of the BullMQ job scheduler that adds the job.\",type:\"string\",keys:[\"messaging.bullmq.job.scheduler.id\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:\"daily-report\",examples:[\"daily-report\"],changelog:[{version:\"0.28.0\",prs:[690],description:\"Added messaging.bullmq.job.scheduler.id attribute\"}],additionalContext:[\"The Sentry SDK sets this attribute from the `bullmq.job.scheduler.id` attribute of BullMQ's telemetry interface.\"]},\"messaging.bullmq.job.state\":{brief:\"The state of the BullMQ job that a job metric counts.\",type:\"string\",keys:[\"messaging.bullmq.job.state\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:\"completed\",examples:[\"completed\",\"failed\",\"delayed\"],changelog:[{version:\"0.28.0\",prs:[690],description:\"Added messaging.bullmq.job.state attribute\"}],additionalContext:[\"The Sentry SDK sets this attribute from the `bullmq.job.state` attribute of BullMQ's telemetry interface. BullMQ before 5.81.2 sets `bullmq.job.status` instead, and the SDK then uses that value.\"]},\"messaging.bullmq.job.type\":{brief:\"The job state from which Queue.clean() removes BullMQ jobs.\",type:\"string\",keys:[\"messaging.bullmq.job.type\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:\"completed\",examples:[\"completed\",\"failed\"],changelog:[{version:\"0.28.0\",prs:[690],description:\"Added messaging.bullmq.job.type attribute\"}],additionalContext:[\"The Sentry SDK sets this attribute from the `bullmq.job.type` attribute of BullMQ's telemetry interface.\"]},\"messaging.bullmq.queue.clean.count\":{brief:\"The number of BullMQ jobs that Queue.clean() removed.\",type:\"integer\",keys:[\"messaging.bullmq.queue.clean.count\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:25,examples:[25],changelog:[{version:\"0.28.0\",prs:[690],description:\"Added messaging.bullmq.queue.clean.count attribute\"}],additionalContext:[\"The Sentry SDK sets this attribute from the `bullmq.queue.clean.count` attribute of BullMQ's telemetry interface.\",\"BullMQ 6.3.11 sets this attribute. BullMQ 5.79.1 does not.\"]},\"messaging.bullmq.queue.clean.limit\":{brief:\"The maximum number of BullMQ jobs that Queue.clean() removes.\",type:\"integer\",keys:[\"messaging.bullmq.queue.clean.limit\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:1e3,examples:[1e3],changelog:[{version:\"0.28.0\",prs:[690],description:\"Added messaging.bullmq.queue.clean.limit attribute\"}],additionalContext:[\"The Sentry SDK sets this attribute from the `bullmq.queue.clean.limit` attribute of BullMQ's telemetry interface.\"]},\"messaging.bullmq.queue.drain.delay\":{brief:\"Whether Queue.drain() also removes the delayed BullMQ jobs.\",type:\"boolean\",keys:[\"messaging.bullmq.queue.drain.delay\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:!0,examples:[!0],changelog:[{version:\"0.28.0\",prs:[690],description:\"Added messaging.bullmq.queue.drain.delay attribute\"}],additionalContext:[\"The Sentry SDK sets this attribute from the `bullmq.queue.drain.delay` attribute of BullMQ's telemetry interface.\"]},\"messaging.bullmq.queue.event.max_length\":{brief:\"The maximum number of events that Queue.trimEvents() keeps in the BullMQ event stream.\",type:\"integer\",keys:[\"messaging.bullmq.queue.event.max_length\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:1e4,examples:[1e4],changelog:[{version:\"0.28.0\",prs:[690],description:\"Added messaging.bullmq.queue.event.max_length attribute\"}],additionalContext:[\"The Sentry SDK sets this attribute from the `bullmq.queue.event.max.length` attribute of BullMQ's telemetry interface.\"]},\"messaging.bullmq.queue.grace\":{brief:\"The grace period in milliseconds that Queue.clean() uses. Only BullMQ jobs that are older are removed.\",type:\"integer\",keys:[\"messaging.bullmq.queue.grace\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:6e4,examples:[6e4],changelog:[{version:\"0.28.0\",prs:[690],description:\"Added messaging.bullmq.queue.grace attribute\"}],additionalContext:[\"The Sentry SDK sets this attribute from the `bullmq.queue.grace` attribute of BullMQ's telemetry interface.\"]},\"messaging.bullmq.queue.jobs.state\":{brief:\"The BullMQ job state that the queue job count metric counts.\",type:\"string\",keys:[\"messaging.bullmq.queue.jobs.state\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:\"waiting\",examples:[\"waiting\",\"active\",\"completed\"],changelog:[{version:\"0.28.0\",prs:[690],description:\"Added messaging.bullmq.queue.jobs.state attribute\"}],additionalContext:[\"The Sentry SDK sets this attribute from the `bullmq.queue.jobs.state` attribute of BullMQ's telemetry interface.\",\"Set on the BullMQ queue job count metric.\"]},\"messaging.bullmq.queue.rate_limit\":{brief:\"The time in milliseconds for which Queue.rateLimit() rate-limits the BullMQ queue.\",type:\"integer\",keys:[\"messaging.bullmq.queue.rate_limit\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:5e3,examples:[5e3],changelog:[{version:\"0.28.0\",prs:[690],description:\"Added messaging.bullmq.queue.rate_limit attribute\"}],additionalContext:[\"The Sentry SDK sets this attribute from the `bullmq.queue.rate.limit` attribute of BullMQ's telemetry interface.\"]},\"messaging.bullmq.worker.do_not_wait_active\":{brief:\"Whether Worker.pause() returns without waiting for the active BullMQ jobs to finish.\",type:\"boolean\",keys:[\"messaging.bullmq.worker.do_not_wait_active\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:!1,examples:[!1],changelog:[{version:\"0.28.0\",prs:[690],description:\"Added messaging.bullmq.worker.do_not_wait_active attribute\"}],additionalContext:[\"The Sentry SDK sets this attribute from the `bullmq.worker.do.not.wait.active` attribute of BullMQ's telemetry interface.\"]},\"messaging.bullmq.worker.force_close\":{brief:\"Whether Worker.close() closes the Worker without waiting for the active BullMQ jobs to finish.\",type:\"boolean\",keys:[\"messaging.bullmq.worker.force_close\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:!1,examples:[!1],changelog:[{version:\"0.28.0\",prs:[690],description:\"Added messaging.bullmq.worker.force_close attribute\"}],additionalContext:[\"The Sentry SDK sets this attribute from the `bullmq.worker.force.close` attribute of BullMQ's telemetry interface.\"]},\"messaging.bullmq.worker.jobs_to_extend_locks\":{brief:\"The IDs of the BullMQ jobs whose locks the Worker extends.\",type:\"string[]\",keys:[\"messaging.bullmq.worker.jobs_to_extend_locks\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:[\"1\",\"2\"],examples:[[\"1\",\"2\"]],changelog:[{version:\"0.28.0\",prs:[690],description:\"Added messaging.bullmq.worker.jobs_to_extend_locks attribute\"}],additionalContext:[\"The Sentry SDK sets this attribute from the `bullmq.worker.jobs.to.extend.locks` attribute of BullMQ's telemetry interface.\"]},\"messaging.bullmq.worker.name\":{brief:\"The name that the user gives to the BullMQ Worker in its options.\",type:\"string\",keys:[\"messaging.bullmq.worker.name\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:\"email-worker\",examples:[\"email-worker\"],changelog:[{version:\"0.28.0\",prs:[690],description:\"Added messaging.bullmq.worker.name attribute\"}],additionalContext:[\"The Sentry SDK sets this attribute from the `bullmq.worker.name` attribute of BullMQ's telemetry interface.\"]},\"messaging.bullmq.worker.rate_limit\":{brief:\"The time in milliseconds for which Worker.rateLimit() rate-limits the BullMQ Worker.\",type:\"integer\",keys:[\"messaging.bullmq.worker.rate_limit\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:5e3,examples:[5e3],changelog:[{version:\"0.28.0\",prs:[690],description:\"Added messaging.bullmq.worker.rate_limit attribute\"}],additionalContext:[\"The Sentry SDK sets this attribute from the `bullmq.worker.rate.limit` attribute of BullMQ's telemetry interface.\"]},\"messaging.bullmq.worker.stalled_jobs\":{brief:\"The IDs of the stalled BullMQ jobs that the Worker moved back to the wait state.\",type:\"string[]\",keys:[\"messaging.bullmq.worker.stalled_jobs\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:[\"1\",\"2\"],examples:[[\"1\",\"2\"]],changelog:[{version:\"0.28.0\",prs:[690],description:\"Added messaging.bullmq.worker.stalled_jobs attribute\"}],additionalContext:[\"The Sentry SDK sets this attribute from the `bullmq.worker.stalled.jobs` attribute of BullMQ's telemetry interface.\"]},\"messaging.client.id\":{brief:\"A unique identifier for the client that consumes or produces a message.\",type:\"string\",keys:[\"messaging.client.id\"],applyScrubbing:{key:\"manual\"},isInOtel:!0,visibility:\"public\",example:\"client-5\",examples:[\"client-5\",\"myhost@8742@s8083jm\"],changelog:[{version:\"0.28.0\",prs:[690],description:\"Added messaging.client.id attribute\"}],additionalContext:[\"The Sentry SDK sets this attribute on BullMQ spans from the `bullmq.worker.id` attribute of BullMQ's telemetry interface, which is the ID of the Worker.\"]},\"messaging.conversation_id\":{brief:'The conversation ID identifying the conversation to which the message belongs, represented as a string. Sometimes called \"Correlation ID\".',type:\"string\",keys:[\"messaging.message.conversation_id\",\"messaging.conversation_id\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:\"MyConversationId\",examples:[\"MyConversationId\"],deprecation:{replacement:\"messaging.message.conversation_id\",reason:\"This attribute is being deprecated in favor of messaging.message.conversation_id.\",status:\"backfill\"},aliases:[\"messaging.message.conversation_id\"],changelog:[{version:\"0.21.0\",prs:[581],description:\"Added messaging.conversation_id attribute\"}]},\"messaging.destination\":{brief:\"The message destination name.\",type:\"string\",keys:[\"messaging.destination.name\",\"messaging.destination\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:\"BestTopic\",deprecation:{replacement:\"messaging.destination.name\",reason:\"This attribute is being deprecated in favor of messaging.destination.name, which is the OTel-aligned replacement.\",status:\"backfill\"},aliases:[\"messaging.destination.name\"],changelog:[{version:\"0.16.0\",prs:[482],description:\"Added messaging.destination attribute, deprecated in favor of messaging.destination.name\"}]},\"messaging.destination.connection\":{brief:\"The message destination connection.\",type:\"string\",keys:[\"messaging.destination.connection\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:\"BestTopic\",changelog:[{version:\"0.1.0\",prs:[127]},{version:\"0.0.0\"}]},\"messaging.destination_kind\":{brief:\"The kind of message destination.\",type:\"string\",keys:[\"messaging.destination_kind\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:\"topic\",deprecation:{reason:\"Deprecated from OTEL, which now models the destination kind via messaging.operation.type and messaging.destination.name.\"},changelog:[{version:\"0.19.0\",prs:[509],description:\"Added deprecated messaging.destination_kind attribute for parity with legacy OTel instrumentations.\"}]},\"messaging.destination.name\":{brief:\"The message destination name.\",type:\"string\",keys:[\"messaging.destination.name\",\"messaging.destination\"],applyScrubbing:{key:\"manual\"},isInOtel:!0,visibility:\"public\",example:\"BestTopic\",aliases:[\"messaging.destination\"],changelog:[{version:\"0.16.0\",prs:[482],description:\"Added messaging.destination as an alias\"},{version:\"0.1.0\",prs:[127]},{version:\"0.0.0\"}]},\"messaging.destination.partition.id\":{brief:\"The identifier of the partition messages are sent to or received from, unique within the messaging.destination.name.\",type:\"string\",keys:[\"messaging.destination.partition.id\"],applyScrubbing:{key:\"manual\"},isInOtel:!0,visibility:\"public\",example:\"1\",changelog:[{version:\"0.19.0\",prs:[474],description:\"Added messaging.destination.partition.id attribute\"}]},\"messaging.kafka.message.key\":{brief:\"Message keys in Kafka are used for grouping alike messages to ensure they're processed on the same partition. They differ from messaging.message.id in that they're not unique. If the key is null, the attribute MUST NOT be set.\",type:\"string\",keys:[\"messaging.kafka.message.key\"],applyScrubbing:{key:\"manual\"},isInOtel:!0,visibility:\"public\",example:\"myKey\",changelog:[{version:\"0.19.0\",prs:[474],description:\"Added messaging.kafka.message.key attribute\"}]},\"messaging.kafka.message.tombstone\":{brief:\"A boolean that is true if the message is a tombstone.\",type:\"boolean\",keys:[\"messaging.kafka.message.tombstone\"],applyScrubbing:{key:\"manual\"},isInOtel:!0,visibility:\"public\",example:!0,changelog:[{version:\"0.19.0\",prs:[474],description:\"Added messaging.kafka.message.tombstone attribute\"}]},\"messaging.kafka.offset\":{brief:\"The offset of a record in the corresponding Kafka partition.\",type:\"integer\",keys:[\"messaging.kafka.offset\"],applyScrubbing:{key:\"manual\"},isInOtel:!0,visibility:\"public\",example:42,changelog:[{version:\"0.19.0\",prs:[474],description:\"Added messaging.kafka.offset attribute\"}]},\"messaging.message.body.size\":{brief:\"The size of the message body in bytes.\",type:\"integer\",keys:[\"messaging.message.body.size\"],applyScrubbing:{key:\"manual\"},isInOtel:!0,visibility:\"public\",example:839,changelog:[{version:\"0.4.0\",prs:[228]},{version:\"0.0.0\"}],searchAlias:{name:\"messaging.message.body.size\",type:\"byte\"}},\"messaging.message.conversation_id\":{brief:'The conversation ID identifying the conversation to which the message belongs, represented as a string. Sometimes called \"Correlation ID\".',type:\"string\",keys:[\"messaging.message.conversation_id\",\"messaging.conversation_id\"],applyScrubbing:{key:\"manual\"},isInOtel:!0,visibility:\"public\",example:\"MyConversationId\",aliases:[\"messaging.conversation_id\"],changelog:[{version:\"0.21.0\",prs:[581],description:\"Added messaging.conversation_id as an alias\"},{version:\"0.16.0\",prs:[468],description:\"Added messaging.message.conversation_id attribute\"}]},\"messaging.message.envelope.size\":{brief:\"The size of the message body and metadata in bytes.\",type:\"integer\",keys:[\"messaging.message.envelope.size\"],applyScrubbing:{key:\"manual\"},isInOtel:!0,visibility:\"public\",example:1045,changelog:[{version:\"0.4.0\",prs:[228]},{version:\"0.0.0\"}]},\"messaging.message.id\":{brief:\"A value used by the messaging system as an identifier for the message, represented as a string.\",type:\"string\",keys:[\"messaging.message.id\",\"messaging.message_id\"],applyScrubbing:{key:\"manual\"},isInOtel:!0,visibility:\"public\",example:\"f47ac10b58cc4372a5670e02b2c3d479\",aliases:[\"messaging.message_id\"],changelog:[{version:\"0.21.0\",prs:[581],description:\"Added messaging.message_id as an alias\"},{version:\"0.1.0\",prs:[127]},{version:\"0.0.0\"}]},\"messaging.message_id\":{brief:\"A value used by the messaging system as an identifier for the message, represented as a string.\",type:\"string\",keys:[\"messaging.message.id\",\"messaging.message_id\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:\"452a7c7c7c7048c2f887f0e7\",examples:[\"452a7c7c7c7048c2f887f0e7\"],deprecation:{replacement:\"messaging.message.id\",reason:\"This attribute is being deprecated in favor of messaging.message.id.\",status:\"backfill\"},aliases:[\"messaging.message.id\"],changelog:[{version:\"0.21.0\",prs:[581],description:\"Added messaging.message_id attribute\"}]},\"messaging.message.receive.latency\":{brief:\"The latency between when the message was published and received.\",type:\"integer\",keys:[\"messaging.message.receive.latency\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:1732847252,changelog:[{version:\"0.4.0\",prs:[228]},{version:\"0.0.0\"}],searchAlias:{name:\"messaging.message.receive.latency\",type:\"millisecond\"}},\"messaging.message.retry.count\":{brief:\"The amount of attempts to send the message.\",type:\"integer\",keys:[\"messaging.message.retry.count\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:2,changelog:[{version:\"0.4.0\",prs:[228]},{version:\"0.0.0\"}]},\"messaging.operation\":{brief:\"The name of the messaging operation being performed.\",type:\"string\",keys:[\"messaging.operation.name\",\"messaging.operation\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:\"publish\",examples:[\"publish\"],deprecation:{replacement:\"messaging.operation.name\",reason:\"This attribute is being deprecated in favor of messaging.operation.name.\",status:\"backfill\"},aliases:[\"messaging.operation.name\"],changelog:[{version:\"0.21.0\",prs:[581],description:\"Added messaging.operation attribute\"}]},\"messaging.operation.name\":{brief:\"The name of the messaging operation being performed\",type:\"string\",keys:[\"messaging.operation.name\",\"messaging.operation\"],applyScrubbing:{key:\"manual\"},isInOtel:!0,visibility:\"public\",example:\"send\",aliases:[\"messaging.operation\"],changelog:[{version:\"0.21.0\",prs:[581],description:\"Added messaging.operation as an alias\"},{version:\"0.11.0\",prs:[392],description:\"Added messaging.operation.name attribute\"}]},\"messaging.operation.type\":{brief:\"A string identifying the type of the messaging operation\",type:\"string\",keys:[\"messaging.operation.type\"],applyScrubbing:{key:\"manual\"},isInOtel:!0,visibility:\"public\",example:\"create\",changelog:[{version:\"0.1.0\",prs:[51,127]}]},\"messaging.protocol\":{brief:\"OSI application layer or non-OSI equivalent.\",type:\"string\",keys:[\"network.protocol.name\",\"messaging.protocol\",\"net.protocol.name\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:\"AMQP\",examples:[\"AMQP\"],deprecation:{replacement:\"network.protocol.name\",reason:\"This attribute is being deprecated in favor of network.protocol.name.\",status:\"backfill\"},aliases:[\"network.protocol.name\",\"net.protocol.name\"],changelog:[{version:\"0.27.0\",prs:[671],description:\"Removed the semantically distinct mcp.resource.protocol alias\"},{version:\"0.21.0\",prs:[581],description:\"Added messaging.protocol attribute\"}]},\"messaging.protocol_version\":{brief:\"The actual version of the protocol used for network communication.\",type:\"string\",keys:[\"network.protocol.version\",\"http.flavor\",\"messaging.protocol_version\",\"net.protocol.version\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:\"0.9.1\",examples:[\"0.9.1\"],deprecation:{replacement:\"network.protocol.version\",reason:\"This attribute is being deprecated in favor of network.protocol.version.\",status:\"backfill\"},aliases:[\"network.protocol.version\",\"http.flavor\",\"net.protocol.version\"],changelog:[{version:\"0.21.0\",prs:[581],description:\"Added messaging.protocol_version attribute\"}]},\"messaging.rabbitmq.destination.routing_key\":{brief:\"RabbitMQ message routing key.\",type:\"string\",keys:[\"messaging.rabbitmq.destination.routing_key\",\"messaging.rabbitmq.routing_key\"],applyScrubbing:{key:\"manual\"},isInOtel:!0,visibility:\"public\",example:\"myKey\",aliases:[\"messaging.rabbitmq.routing_key\"],changelog:[{version:\"0.21.0\",prs:[581],description:\"Added messaging.rabbitmq.routing_key as an alias\"},{version:\"0.16.0\",prs:[468],description:\"Added messaging.rabbitmq.destination.routing_key attribute\"}]},\"messaging.rabbitmq.routing_key\":{brief:\"RabbitMQ message routing key.\",type:\"string\",keys:[\"messaging.rabbitmq.destination.routing_key\",\"messaging.rabbitmq.routing_key\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:\"myKey\",examples:[\"myKey\"],deprecation:{replacement:\"messaging.rabbitmq.destination.routing_key\",reason:\"This attribute is being deprecated in favor of messaging.rabbitmq.destination.routing_key.\",status:\"backfill\"},aliases:[\"messaging.rabbitmq.destination.routing_key\"],changelog:[{version:\"0.21.0\",prs:[581],description:\"Added messaging.rabbitmq.routing_key attribute\"}]},\"messaging.system\":{brief:\"The messaging system as identified by the client instrumentation.\",type:\"string\",keys:[\"messaging.system\"],applyScrubbing:{key:\"manual\"},isInOtel:!0,visibility:\"public\",example:\"activemq\",changelog:[{version:\"0.1.0\",prs:[127]},{version:\"0.0.0\"}]},\"messaging.url\":{brief:\"The connection string of the messaging broker.\",type:\"string\",keys:[\"url.full\",\"aws.request.url\",\"http.url\",\"messaging.url\",\"url\"],applyScrubbing:{key:\"auto\"},isInOtel:!1,visibility:\"public\",example:\"amqp://guest:guest@localhost:5672\",examples:[\"amqp://guest:guest@localhost:5672\"],deprecation:{replacement:\"url.full\",reason:\"This attribute is being deprecated in favor of url.full.\",status:\"backfill\"},aliases:[\"url.full\",\"http.url\",\"url\",\"aws.request.url\"],changelog:[{version:\"0.21.0\",prs:[581],description:\"Added messaging.url attribute\"}]},method:{brief:\"The HTTP method used.\",type:\"string\",keys:[\"http.request.method\",\"http.method\",\"http.request_method\",\"method\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:\"GET\",deprecation:{replacement:\"http.request.method\",status:\"normalize\"},aliases:[\"http.request.method\",\"http.request_method\",\"http.method\"],changelog:[{version:\"0.19.0\",prs:[497],description:\"Configured normalization\"},{version:\"0.1.0\",prs:[61,127]},{version:\"0.0.0\"}]},\"middleware.name\":{brief:\"The name of the middleware.\",type:\"string\",keys:[\"middleware.name\",\"django.middleware_name\",\"litestar.middleware_name\",\"starlette.middleware_name\",\"starlite.middleware_name\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:\"AuthenticationMiddleware\",aliases:[\"django.middleware_name\",\"starlite.middleware_name\",\"litestar.middleware_name\",\"starlette.middleware_name\"],changelog:[{version:\"0.19.0\",prs:[485,486,519,520],description:\"Added django.middleware_name, starlite.middleware_name, litestar.middleware_name and starlette.middleware_name as aliases\"},{version:\"0.6.0\",prs:[336],description:\"Added middleware.name attribute\"}]},\"navigation.origin\":{brief:\"The origin of the navigation (usually client side router navigations). Should preferrably parameterized template (like url.template) or a URL path otherwise.\",type:\"string\",keys:[\"router.navigation.origin\",\"navigation.origin\",\"sentry.sveltekit.navigation.from\"],applyScrubbing:{key:\"auto\"},isInOtel:!1,visibility:\"public\",example:\"/users/:id\",deprecation:{replacement:\"router.navigation.origin\",reason:\"Moved to the router.* namespace to separate client-side router navigations from browser navigations.\",status:\"backfill\"},aliases:[\"router.navigation.origin\",\"sentry.sveltekit.navigation.from\"],changelog:[{version:\"0.22.0\",prs:[600],description:\"Deprecated in favor of router.navigation.origin\"},{version:\"0.16.0\",prs:[467],description:\"Added navigation.origin attribute\"}]},\"navigation.route.id\":{brief:\"The identifier of the matched client-side route, as assigned by the routing framework (e.g., vue-router name, react-router id).\",type:\"string\",keys:[\"router.navigation.route.id\",\"navigation.route.id\"],applyScrubbing:{key:\"auto\"},isInOtel:!1,visibility:\"public\",example:\"AboutView\",deprecation:{replacement:\"router.navigation.route.id\",reason:\"Moved to the router.* namespace to separate client-side router navigations from browser navigations.\",status:\"backfill\"},aliases:[\"router.navigation.route.id\"],changelog:[{version:\"0.22.0\",prs:[600],description:\"Deprecated in favor of router.navigation.route.id\"},{version:\"0.16.0\",prs:[468],description:\"Added navigation.route.id attribute\"}]},\"navigation.type\":{brief:\"The type of navigation done by a client-side router.\",type:\"string\",keys:[\"router.navigation.type\",\"navigation.type\",\"sentry.sveltekit.navigation.type\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:\"router.push\",deprecation:{replacement:\"router.navigation.type\",reason:\"Moved to the router.* namespace to separate client-side router navigations from browser navigations.\",status:\"backfill\"},aliases:[\"router.navigation.type\",\"sentry.sveltekit.navigation.type\"],changelog:[{version:\"0.22.0\",prs:[600],description:\"Deprecated in favor of router.navigation.type\"},{version:\"0.16.0\",prs:[467],description:\"Added new deprecated alias\"},{version:\"0.1.0\",prs:[127]},{version:\"0.0.0\"}]},\"nel.elapsed_time\":{brief:\"The elapsed number of milliseconds between the start of the resource fetch and when it was completed or aborted by the user agent.\",type:\"integer\",keys:[\"nel.elapsed_time\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:100,changelog:[{version:\"0.4.0\",prs:[228]},{version:\"0.1.0\",prs:[68]}]},\"nel.phase\":{brief:'If request failed, the phase of its network error. If request succeeded, \"application\".',type:\"string\",keys:[\"nel.phase\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:\"application\",changelog:[{version:\"0.1.0\",prs:[68,127]}]},\"nel.referrer\":{brief:\"request's referrer, as determined by the referrer policy associated with its client.\",type:\"string\",keys:[\"nel.referrer\"],applyScrubbing:{key:\"auto\"},isInOtel:!1,visibility:\"public\",example:\"https://example.com/foo?bar=baz\",changelog:[{version:\"0.1.0\",prs:[68,127]}]},\"nel.sampling_fraction\":{brief:\"The sampling fraction used to determine if the request should be sampled.\",type:\"double\",keys:[\"nel.sampling_fraction\",\"nel.sampling_function\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:.5,examples:[.5],aliases:[\"nel.sampling_function\"],changelog:[{version:\"0.26.0\",prs:[668],description:\"Added nel.sampling_fraction attribute\"}]},\"nel.sampling_function\":{brief:\"The sampling function used to determine if the request should be sampled.\",type:\"double\",keys:[\"nel.sampling_fraction\",\"nel.sampling_function\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:.5,deprecation:{replacement:\"nel.sampling_fraction\",reason:\"The correct name of this attribute is nel.sampling_fraction\",status:\"backfill\"},aliases:[\"nel.sampling_fraction\"],changelog:[{version:\"0.26.0\",prs:[668],description:\"Deprecated in favor of nel.sampling_fraction\"},{version:\"0.4.0\",prs:[228]},{version:\"0.1.0\",prs:[68]}]},\"nel.type\":{brief:'If request failed, the type of its network error. If request succeeded, \"ok\".',type:\"string\",keys:[\"nel.type\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:\"dns.unreachable\",changelog:[{version:\"0.1.0\",prs:[68,127]}]},\"network.connection.effective_type\":{brief:\"Specifies the effective type of the current connection (e.g. slow-2g, 2g, 3g, 4g).\",type:\"string\",keys:[\"network.connection.effective_type\",\"effectiveConnectionType\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:\"4g\",aliases:[\"effectiveConnectionType\"],changelog:[{version:\"0.5.0\",prs:[279],description:\"Added attribute network.connection.effective_type to be used instead of effectiveConnectionType\"}]},\"network.connection.rtt\":{brief:\"Specifies the estimated effective round-trip time of the current connection, in milliseconds.\",type:\"integer\",keys:[\"network.connection.rtt\",\"connection.rtt\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:100,aliases:[\"connection.rtt\"],changelog:[{version:\"0.5.0\",prs:[279],description:\"Added attribute network.connection.rtt to be used instead of connection.rtt\"}]},\"network.connection.type\":{brief:\"Specifies the type of the current connection (e.g. wifi, ethernet, cellular , etc).\",type:\"string\",keys:[\"network.connection.type\",\"connectionType\",\"device.connection_type\"],applyScrubbing:{key:\"manual\"},isInOtel:!0,visibility:\"public\",example:\"wifi\",aliases:[\"device.connection_type\",\"connectionType\"],changelog:[{version:\"0.5.0\",prs:[279],description:\"Added attribute network.connection.type to be used instead of connectionType\"}]},\"network.local.address\":{brief:\"Local address of the network connection - IP address or Unix domain socket name.\",type:\"string\",keys:[\"network.local.address\",\"net.host.ip\",\"net.sock.host.addr\"],applyScrubbing:{key:\"manual\"},isInOtel:!0,visibility:\"public\",example:\"10.1.2.80\",examples:[\"10.1.2.80\",\"/var/run/my.sock\"],aliases:[\"net.host.ip\",\"net.sock.host.addr\"],changelog:[{version:\"0.1.0\",prs:[127]},{version:\"0.0.0\"}]},\"network.local.port\":{brief:\"Local port number of the network connection.\",type:\"integer\",keys:[\"network.local.port\",\"net.sock.host.port\"],applyScrubbing:{key:\"manual\"},isInOtel:!0,visibility:\"public\",example:65400,aliases:[\"net.sock.host.port\"],changelog:[{version:\"0.4.0\",prs:[228]},{version:\"0.0.0\"}]},\"network.peer.address\":{brief:\"Peer address of the network connection - IP address or Unix domain socket name.\",type:\"string\",keys:[\"network.peer.address\",\"net.peer.ip\",\"net.sock.peer.addr\"],applyScrubbing:{key:\"auto\"},isInOtel:!0,visibility:\"public\",example:\"10.1.2.80\",aliases:[\"net.peer.ip\",\"net.sock.peer.addr\"],changelog:[{version:\"0.1.0\",prs:[108,127]},{version:\"0.0.0\"}]},\"network.peer.port\":{brief:\"Peer port number of the network connection.\",type:\"integer\",keys:[\"network.peer.port\",\"net.sock.peer.port\"],applyScrubbing:{key:\"manual\"},isInOtel:!0,visibility:\"public\",example:65400,aliases:[\"net.sock.peer.port\"],changelog:[{version:\"0.21.0\",prs:[588],description:\"Added net.sock.peer.port as an alias\"},{version:\"0.4.0\",prs:[228]},{version:\"0.0.0\"}]},\"network.protocol.name\":{brief:\"OSI application layer or non-OSI equivalent.\",type:\"string\",keys:[\"network.protocol.name\",\"messaging.protocol\",\"net.protocol.name\"],applyScrubbing:{key:\"manual\"},isInOtel:!0,visibility:\"public\",example:\"http\",examples:[\"http\"],aliases:[\"net.protocol.name\",\"messaging.protocol\"],changelog:[{version:\"0.27.0\",prs:[671],description:\"Removed the semantically distinct mcp.resource.protocol alias\"},{version:\"0.21.0\",prs:[581],description:\"Added messaging.protocol as an alias\"},{version:\"0.1.0\",prs:[127]},{version:\"0.0.0\"}]},\"network.protocol.version\":{brief:\"The actual version of the protocol used for network communication.\",type:\"string\",keys:[\"network.protocol.version\",\"http.flavor\",\"messaging.protocol_version\",\"net.protocol.version\"],applyScrubbing:{key:\"manual\"},isInOtel:!0,visibility:\"public\",example:\"1.1\",aliases:[\"http.flavor\",\"net.protocol.version\",\"messaging.protocol_version\"],changelog:[{version:\"0.21.0\",prs:[581],description:\"Added messaging.protocol_version as an alias\"},{version:\"0.1.0\",prs:[127]},{version:\"0.0.0\"}]},\"network.transport\":{brief:\"OSI transport layer or inter-process communication method.\",type:\"string\",keys:[\"network.transport\"],applyScrubbing:{key:\"manual\"},isInOtel:!0,visibility:\"public\",example:\"tcp\",examples:[\"tcp\"],aliases:[\"net.transport\"],changelog:[{version:\"0.27.0\",prs:[671],description:\"Removed the semantically distinct mcp.transport alias\"},{version:\"0.1.0\",prs:[127]},{version:\"0.0.0\"}]},\"network.type\":{brief:\"OSI network layer or non-OSI equivalent.\",type:\"string\",keys:[\"network.type\"],applyScrubbing:{key:\"manual\"},isInOtel:!0,visibility:\"public\",example:\"ipv4\",changelog:[{version:\"0.1.0\",prs:[127]},{version:\"0.0.0\"}]},\"net.host.ip\":{brief:\"Local address of the network connection - IP address or Unix domain socket name.\",type:\"string\",keys:[\"network.local.address\",\"net.host.ip\",\"net.sock.host.addr\"],applyScrubbing:{key:\"manual\"},isInOtel:!0,visibility:\"public\",example:\"192.168.0.1\",deprecation:{replacement:\"network.local.address\",status:\"backfill\"},aliases:[\"network.local.address\",\"net.sock.host.addr\"],changelog:[{version:\"0.1.0\",prs:[61,108,127]},{version:\"0.0.0\"}]},\"net.host.name\":{brief:\"Server domain name if available without reverse DNS lookup; otherwise, IP address or Unix domain socket name.\",type:\"string\",keys:[\"server.address\",\"address\",\"http.server_name\",\"net.host.name\",\"server_name\"],applyScrubbing:{key:\"manual\"},isInOtel:!0,visibility:\"public\",example:\"example.com\",deprecation:{replacement:\"server.address\",status:\"backfill\"},aliases:[\"address\",\"server.address\",\"http.server_name\",\"http.host\",\"server_name\",\"net.peer.name\"],changelog:[{version:\"0.24.0\",prs:[647],description:\"Added server_name as an alias\"},{version:\"0.21.0\",prs:[588,602],description:\"Added net.peer.name as an alias\"},{version:\"0.19.0\",prs:[534],description:\"Added address as an alias\"},{version:\"0.1.0\",prs:[61,108,127]},{version:\"0.0.0\"}]},\"net.host.port\":{brief:\"Server port number.\",type:\"integer\",keys:[\"server.port\",\"net.host.port\",\"port\"],applyScrubbing:{key:\"manual\"},isInOtel:!0,visibility:\"public\",example:1337,deprecation:{replacement:\"server.port\",status:\"backfill\"},aliases:[\"server.port\",\"port\"],changelog:[{version:\"0.19.0\",prs:[532],description:\"Added port as an alias\"},{version:\"0.4.0\",prs:[228]},{version:\"0.1.0\",prs:[61]},{version:\"0.0.0\"}]},\"net.peer.ip\":{brief:\"Peer address of the network connection - IP address or Unix domain socket name.\",type:\"string\",keys:[\"network.peer.address\",\"net.peer.ip\",\"net.sock.peer.addr\"],applyScrubbing:{key:\"auto\"},isInOtel:!0,visibility:\"public\",example:\"192.168.0.1\",deprecation:{replacement:\"network.peer.address\",status:\"backfill\"},aliases:[\"network.peer.address\",\"net.sock.peer.addr\"],changelog:[{version:\"0.1.0\",prs:[61,108,127]},{version:\"0.0.0\"}]},\"net.peer.name\":{brief:\"Server domain name if available without reverse DNS lookup; otherwise, IP address or Unix domain socket name.\",type:\"string\",keys:[\"net.peer.name\"],applyScrubbing:{key:\"manual\"},isInOtel:!0,visibility:\"public\",example:\"example.com\",deprecation:{replacement:\"server.address\",reason:\"Deprecated, use server.address on client spans and client.address on server spans.\"},aliases:[\"address\",\"server.address\",\"http.server_name\",\"net.host.name\",\"http.host\",\"server_name\"],changelog:[{version:\"0.24.0\",prs:[647],description:\"Added server_name as an alias\"},{version:\"0.21.0\",prs:[588,602],description:\"Added the server.address alias group to net.peer.name\"},{version:\"0.1.0\",prs:[61,127]},{version:\"0.0.0\"}]},\"net.peer.port\":{brief:\"Peer port number.\",type:\"integer\",keys:[\"net.peer.port\"],applyScrubbing:{key:\"manual\"},isInOtel:!0,visibility:\"public\",example:1337,deprecation:{replacement:\"server.port\",reason:\"Deprecated, use server.port on client spans and client.port on server spans.\"},changelog:[{version:\"0.4.0\",prs:[228]},{version:\"0.1.0\",prs:[61]},{version:\"0.0.0\"}]},\"net.protocol.name\":{brief:\"OSI application layer or non-OSI equivalent.\",type:\"string\",keys:[\"network.protocol.name\",\"messaging.protocol\",\"net.protocol.name\"],applyScrubbing:{key:\"manual\"},isInOtel:!0,visibility:\"public\",example:\"http\",examples:[\"http\"],deprecation:{replacement:\"network.protocol.name\",status:\"backfill\"},aliases:[\"network.protocol.name\",\"messaging.protocol\"],changelog:[{version:\"0.27.0\",prs:[671],description:\"Removed the semantically distinct mcp.resource.protocol alias\"},{version:\"0.21.0\",prs:[581],description:\"Added messaging.protocol as an alias\"},{version:\"0.1.0\",prs:[61,127]},{version:\"0.0.0\"}]},\"net.protocol.version\":{brief:\"The actual version of the protocol used for network communication.\",type:\"string\",keys:[\"network.protocol.version\",\"http.flavor\",\"messaging.protocol_version\",\"net.protocol.version\"],applyScrubbing:{key:\"manual\"},isInOtel:!0,visibility:\"public\",example:\"1.1\",deprecation:{replacement:\"network.protocol.version\",status:\"backfill\"},aliases:[\"network.protocol.version\",\"http.flavor\",\"messaging.protocol_version\"],changelog:[{version:\"0.21.0\",prs:[581],description:\"Added messaging.protocol_version as an alias\"},{version:\"0.1.0\",prs:[61,108,127]},{version:\"0.0.0\"}]},\"net.sock.family\":{brief:\"OSI transport and network layer\",type:\"string\",keys:[\"net.sock.family\"],applyScrubbing:{key:\"manual\"},isInOtel:!0,visibility:\"public\",example:\"inet\",deprecation:{replacement:\"network.transport\",reason:\"Deprecated, use network.transport and network.type.\"},changelog:[{version:\"0.1.0\",prs:[61,127]},{version:\"0.0.0\"}]},\"net.sock.host.addr\":{brief:\"Local address of the network connection mapping to Unix domain socket name.\",type:\"string\",keys:[\"network.local.address\",\"net.host.ip\",\"net.sock.host.addr\"],applyScrubbing:{key:\"manual\"},isInOtel:!0,visibility:\"public\",example:\"/var/my.sock\",deprecation:{replacement:\"network.local.address\",status:\"backfill\"},aliases:[\"network.local.address\",\"net.host.ip\"],changelog:[{version:\"0.1.0\",prs:[61,108,127]},{version:\"0.0.0\"}]},\"net.sock.host.port\":{brief:\"Local port number of the network connection.\",type:\"integer\",keys:[\"network.local.port\",\"net.sock.host.port\"],applyScrubbing:{key:\"manual\"},isInOtel:!0,visibility:\"public\",example:8080,deprecation:{replacement:\"network.local.port\",status:\"backfill\"},aliases:[\"network.local.port\"],changelog:[{version:\"0.4.0\",prs:[228]},{version:\"0.1.0\",prs:[61]},{version:\"0.0.0\"}]},\"net.sock.peer.addr\":{brief:\"Peer address of the network connection - IP address\",type:\"string\",keys:[\"network.peer.address\",\"net.peer.ip\",\"net.sock.peer.addr\"],applyScrubbing:{key:\"auto\"},isInOtel:!0,visibility:\"public\",example:\"192.168.0.1\",deprecation:{replacement:\"network.peer.address\",status:\"backfill\"},aliases:[\"network.peer.address\",\"net.peer.ip\"],changelog:[{version:\"0.1.0\",prs:[61,108,127]},{version:\"0.0.0\"}]},\"net.sock.peer.name\":{brief:\"Peer address of the network connection - Unix domain socket name\",type:\"string\",keys:[\"net.sock.peer.name\"],applyScrubbing:{key:\"auto\"},isInOtel:!0,visibility:\"public\",example:\"/var/my.sock\",deprecation:{reason:\"Deprecated from OTEL, no replacement at this time\"},changelog:[{version:\"0.1.0\",prs:[61,119,127]},{version:\"0.0.0\"}]},\"net.sock.peer.port\":{brief:\"Peer port number of the network connection.\",type:\"integer\",keys:[\"network.peer.port\",\"net.sock.peer.port\"],applyScrubbing:{key:\"manual\"},isInOtel:!0,visibility:\"public\",example:8080,deprecation:{replacement:\"network.peer.port\",status:\"backfill\"},aliases:[\"network.peer.port\"],changelog:[{version:\"0.21.0\",prs:[588],description:\"Added network.peer.port as an alias\"},{version:\"0.4.0\",prs:[228]},{version:\"0.1.0\",prs:[61]},{version:\"0.0.0\"}]},\"net.transport\":{brief:\"OSI transport layer or inter-process communication method.\",type:\"string\",keys:[\"net.transport\"],applyScrubbing:{key:\"manual\"},isInOtel:!0,visibility:\"public\",example:\"tcp\",examples:[\"tcp\"],deprecation:{replacement:\"network.transport\",reason:\"This attribute is being deprecated in favor of network.transport. The values change from ip_tcp and ip_udp to tcp and udp, so the old value cannot be copied over.\"},aliases:[\"network.transport\"],changelog:[{version:\"0.27.0\",prs:[671],description:\"Removed the semantically distinct mcp.transport alias\"},{version:\"0.21.0\",prs:[588],description:\"Set net.transport to _status null, because its values change on the replacement\"},{version:\"0.1.0\",prs:[61,127]},{version:\"0.0.0\"}]},\"os.build\":{brief:\"The build ID of the operating system.\",type:\"string\",keys:[\"os.build_id\",\"os.build\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:\"1234567890\",deprecation:{replacement:\"os.build_id\",status:\"backfill\"},aliases:[\"os.build_id\"],changelog:[{version:\"0.5.0\",prs:[301],description:\"Added os.build attribute, deprecated in favor of os.build_id\"}]},\"os.build_id\":{brief:\"The build ID of the operating system.\",type:\"string\",keys:[\"os.build_id\",\"os.build\"],applyScrubbing:{key:\"manual\"},isInOtel:!0,visibility:\"public\",example:\"1234567890\",aliases:[\"os.build\"],changelog:[{version:\"0.5.0\",prs:[301],description:\"Added os.build as alias\"},{version:\"0.1.0\",prs:[127]},{version:\"0.0.0\"}]},\"os.description\":{brief:\"Human readable (not intended to be parsed) OS version information, like e.g. reported by ver or lsb_release -a commands.\",type:\"string\",keys:[\"os.description\"],applyScrubbing:{key:\"manual\"},isInOtel:!0,visibility:\"public\",example:\"Ubuntu 18.04.1 LTS\",changelog:[{version:\"0.1.0\",prs:[127]},{version:\"0.0.0\"}]},\"os.kernel_version\":{brief:\"An independent kernel version string. Typically the entire output of the `uname` syscall.\",type:\"string\",keys:[\"os.kernel_version\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:\"20.2.0\",changelog:[{version:\"0.5.0\",prs:[301],description:\"Added os.kernel_version attribute\"}]},\"os.name\":{brief:\"Human readable operating system name.\",type:\"string\",keys:[\"os.name\"],applyScrubbing:{key:\"manual\"},isInOtel:!0,visibility:\"public\",example:\"Ubuntu\",changelog:[{version:\"0.1.0\",prs:[127]},{version:\"0.0.0\"}]},\"os.raw_description\":{brief:\"An unprocessed description string obtained by the operating system. For some well-known runtimes, Sentry will attempt to parse `name` and `version` from this string, if they are not explicitly given.\",type:\"string\",keys:[\"os.raw_description\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:\"Ubuntu 22.04.4 LTS (Jammy Jellyfish)\",changelog:[{version:\"0.5.0\",prs:[301],description:\"Added os.raw_description attribute\"}]},\"os.rooted\":{brief:\"Whether the operating system has been jailbroken or rooted.\",type:\"boolean\",keys:[\"os.rooted\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:!0,changelog:[{version:\"0.5.0\",prs:[301],description:\"Added os.rooted attribute\"}]},\"os.theme\":{brief:\"Whether the OS runs in dark mode or light mode.\",type:\"string\",keys:[\"os.theme\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:\"dark\",changelog:[{version:\"0.5.0\",prs:[301],description:\"Added os.theme attribute\"}]},\"os.type\":{brief:\"The operating system type.\",type:\"string\",keys:[\"os.type\"],applyScrubbing:{key:\"manual\"},isInOtel:!0,visibility:\"public\",example:\"linux\",changelog:[{version:\"0.1.0\",prs:[127]},{version:\"0.0.0\"}]},\"os.version\":{brief:\"The version of the operating system.\",type:\"string\",keys:[\"os.version\"],applyScrubbing:{key:\"manual\"},isInOtel:!0,visibility:\"public\",example:\"18.04.2\",changelog:[{version:\"0.1.0\",prs:[127]},{version:\"0.0.0\"}]},\"otel.kind\":{brief:\"The span kind (https://opentelemetry.io/docs/concepts/signals/traces/#span-kind). Deprecated, use `sentry.kind` instead.\",type:\"string\",keys:[\"sentry.kind\",\"span.kind\",\"otel.kind\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:\"SERVER\",deprecation:{replacement:\"sentry.kind\",reason:\"Deprecated in favor of sentry.kind\",status:\"backfill\"},aliases:[\"sentry.kind\"],changelog:[{version:\"0.13.0\",prs:[440],description:\"Added otel.kind attribute\"}]},\"otel.scope.name\":{brief:\"The name of the instrumentation scope - (InstrumentationScope.Name in OTLP).\",type:\"string\",keys:[\"otel.scope.name\"],applyScrubbing:{key:\"manual\"},isInOtel:!0,visibility:\"public\",example:\"io.opentelemetry.contrib.mongodb\",changelog:[{version:\"0.1.0\",prs:[127]},{version:\"0.0.0\"}]},\"otel.scope.version\":{brief:\"The version of the instrumentation scope - (InstrumentationScope.Version in OTLP).\",type:\"string\",keys:[\"otel.scope.version\"],applyScrubbing:{key:\"manual\"},isInOtel:!0,visibility:\"public\",example:\"2.4.5\",changelog:[{version:\"0.1.0\",prs:[127]},{version:\"0.0.0\"}]},\"otel.status_code\":{brief:\"Name of the code, either \\u201COK\\u201D or \\u201CERROR\\u201D. MUST NOT be set if the status code is UNSET.\",type:\"string\",keys:[\"otel.status_code\"],applyScrubbing:{key:\"manual\"},isInOtel:!0,visibility:\"public\",example:\"OK\",changelog:[{version:\"0.1.0\",prs:[127]},{version:\"0.0.0\"}]},\"otel.status_description\":{brief:\"Description of the Status if it has a value, otherwise not set.\",type:\"string\",keys:[\"otel.status_description\"],applyScrubbing:{key:\"auto\"},isInOtel:!0,visibility:\"public\",example:\"resource not found\",changelog:[{version:\"0.1.0\",prs:[127]},{version:\"0.0.0\"}]},\"params.<key>\":{brief:\"Decoded parameters extracted from a URL path. Usually added by client-side routing frameworks like vue-router.\",type:\"string\",keys:[\"params.<key>\",\"url.path.parameter.<key>\",\"url.path.params.<key>\"],applyScrubbing:{key:\"auto\"},isInOtel:!1,visibility:\"public\",hasDynamicSuffix:!0,example:\"params.id='123'\",aliases:[\"url.path.parameter.<key>\",\"url.path.params.<key>\"],changelog:[{version:\"0.21.0\",prs:[586],description:\"Added url.path.params.<key> as an alias\"},{version:\"0.1.0\",prs:[103]}]},\"performance.activationStart\":{brief:\"The time between initiating a navigation to a page and the browser activating the page\",type:\"double\",keys:[\"browser.performance.navigation.activation_start\",\"performance.activationStart\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:1.983,deprecation:{replacement:\"browser.performance.navigation.activation_start\",reason:\"The activationStart is now recorded as the browser.performance.navigation.activation_start attribute.\",status:\"backfill\"},aliases:[\"browser.performance.navigation.activation_start\"],changelog:[{version:\"0.5.0\",prs:[321],description:\"Added performance.activationStart attribute\"}]},\"performance.timeOrigin\":{brief:\"The browser's performance.timeOrigin timestamp representing the time when the pageload was initiated\",type:\"double\",keys:[\"browser.performance.time_origin\",\"performance.timeOrigin\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:1776185678886e-3,deprecation:{replacement:\"browser.performance.time_origin\",reason:\"The timeOrigin is now recorded as the browser.performance.time_origin attribute.\",status:\"backfill\"},aliases:[\"browser.performance.time_origin\"],changelog:[{version:\"0.5.0\",prs:[321],description:\"Added performance.timeOrigin attribute\"}]},port:{brief:\"The destination port for a TCP connection.\",type:\"integer\",keys:[\"server.port\",\"net.host.port\",\"port\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:1337,examples:[1337],deprecation:{replacement:\"server.port\",reason:\"Old namespace-less attribute, to be replaced with server.port for span-first future\",status:\"backfill\"},aliases:[\"server.port\",\"net.host.port\"],changelog:[{version:\"0.19.0\",prs:[532],description:\"Added port attribute\"}]},previous_route:{brief:\"Also used by mobile SDKs to indicate the previous route in the application.\",type:\"string\",keys:[\"previous_route\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:\"HomeScreen\",changelog:[{version:\"0.1.0\",prs:[74]},{version:\"0.0.0\"}]},\"process.command_args\":{brief:\"All the command arguments (including the command/executable itself) as received by the process.\",type:\"string[]\",keys:[\"process.command_args\"],applyScrubbing:{key:\"auto\"},isInOtel:!0,visibility:\"public\",example:[\"cmd/otecol\",\"--config=config.yaml\"],changelog:[{version:\"0.6.0\",prs:[327],description:\"Added process.command_args attribute\"}]},\"process.executable.name\":{brief:\"The name of the executable that started the process.\",type:\"string\",keys:[\"process.executable.name\"],applyScrubbing:{key:\"manual\"},isInOtel:!0,visibility:\"public\",example:\"getsentry\",changelog:[{version:\"0.1.0\",prs:[127]},{version:\"0.0.0\"}]},\"process.pid\":{brief:\"The process ID of the running process.\",type:\"integer\",keys:[\"process.pid\",\"subprocess.pid\"],applyScrubbing:{key:\"manual\"},isInOtel:!0,visibility:\"public\",example:12345,aliases:[\"subprocess.pid\"],changelog:[{version:\"0.19.0\",prs:[487],description:\"Added subprocess.pid as an alias\"},{version:\"0.4.0\",prs:[228]},{version:\"0.0.0\"}]},\"process.runtime.description\":{brief:\"An additional description about the runtime of the process, for example a specific vendor customization of the runtime environment. Equivalent to `raw_description` in the Sentry runtime context.\",type:\"string\",keys:[\"process.runtime.description\",\"runtime.raw_description\"],applyScrubbing:{key:\"manual\"},isInOtel:!0,visibility:\"public\",example:\"Eclipse OpenJ9 VM openj9-0.21.0\",aliases:[\"runtime.raw_description\"],changelog:[{version:\"0.1.0\",prs:[127]},{version:\"0.0.0\"}]},\"process.runtime.engine.name\":{brief:\"The name of the runtime engine.\",type:\"string\",keys:[\"process.runtime.engine.name\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:\"v8\",changelog:[{version:\"0.0.0\"}]},\"process.runtime.engine.version\":{brief:\"The version of the runtime engine.\",type:\"string\",keys:[\"process.runtime.engine.version\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:\"12.9.202.13-rusty\",changelog:[{version:\"0.0.0\"}]},\"process.runtime.name\":{brief:\"The name of the runtime. Equivalent to `name` in the Sentry runtime context.\",type:\"string\",keys:[\"process.runtime.name\",\"runtime.name\"],applyScrubbing:{key:\"manual\"},isInOtel:!0,visibility:\"public\",example:\"node\",aliases:[\"runtime.name\"],changelog:[{version:\"0.1.0\",prs:[127]},{version:\"0.0.0\"}]},\"process.runtime.version\":{brief:\"The version of the runtime of this process, as returned by the runtime without modification. Equivalent to `version` in the Sentry runtime context.\",type:\"string\",keys:[\"process.runtime.version\",\"runtime.version\"],applyScrubbing:{key:\"manual\"},isInOtel:!0,visibility:\"public\",example:\"18.04.2\",aliases:[\"runtime.version\"],changelog:[{version:\"0.1.0\",prs:[127]},{version:\"0.0.0\"}]},profile_id:{brief:\"The ID of the Sentry profile the span is associated with. This is only meaningful for transaction-based profiling.\",type:\"string\",keys:[\"sentry.profile_id\",\"profile.id\",\"profile_id\"],applyScrubbing:{key:\"never\"},isInOtel:!1,visibility:\"public\",example:\"123e4567e89b12d3a456426614174000\",deprecation:{replacement:\"sentry.profile_id\",status:\"normalize\"},aliases:[\"sentry.profile_id\"],changelog:[{version:\"0.19.0\",prs:[497],description:\"Added profile_id attribute\"}]},query:{brief:\"The database query being executed.\",type:\"string\",keys:[\"db.query.text\",\"db.statement\",\"query\"],applyScrubbing:{key:\"auto\"},isInOtel:!1,visibility:\"public\",example:\"SELECT * FROM users WHERE id = $1\",examples:[\"SELECT * FROM users WHERE id = $1\"],deprecation:{replacement:\"db.query.text\",reason:\"While this attribute never specifically required parameterization, the replacement, db.query.text, does.\",status:\"backfill\"},aliases:[\"db.query.text\",\"db.statement\"],changelog:[{version:\"0.19.0\",prs:[530],description:\"Added query attribute\"}]},\"query.<key>\":{brief:\"An item in a query string. Usually added by client-side routing frameworks like vue-router.\",type:\"string\",keys:[\"query.<key>\"],applyScrubbing:{key:\"auto\"},isInOtel:!1,visibility:\"public\",hasDynamicSuffix:!0,example:\"query.id='123'\",deprecation:{replacement:\"url.query\",reason:\"Instead of sending items individually in query.<key>, they should be sent all together with url.query.\"},changelog:[{version:\"0.1.0\",prs:[103]}]},\"react_native.architecture\":{brief:\"The React Native architecture the app is running on. `new` for the New Architecture, where native modules are resolved as TurboModules through `TurboModuleRegistry`, `legacy` for the Old Architecture bridge.\",type:\"string\",keys:[\"react_native.architecture\",\"turbo_module.arch\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:\"new\",examples:[\"new\",\"legacy\"],aliases:[\"turbo_module.arch\"],changelog:[{version:\"0.24.0\",prs:[564],description:\"Added react_native.architecture attribute\"}]},\"react_native.module.call.count\":{brief:\"The number of native module calls observed during the lifetime of the span.\",type:\"integer\",keys:[\"react_native.module.call.count\",\"turbo_module.total_call_count\",\"turbo_modules.total_call_count\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:42,examples:[42],aliases:[\"turbo_module.total_call_count\",\"turbo_modules.total_call_count\"],changelog:[{version:\"0.24.0\",prs:[564],description:\"Added react_native.module.call.count attribute\"}]},\"react_native.module.call.distinct_count\":{brief:\"The number of distinct native module and method pairs called during the lifetime of the span. Useful as a cardinality signal when the per-method breakdown has been truncated.\",type:\"integer\",keys:[\"react_native.module.call.distinct_count\",\"turbo_module.unique_methods\",\"turbo_modules.unique_methods\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:7,examples:[7],aliases:[\"turbo_module.unique_methods\",\"turbo_modules.unique_methods\"],changelog:[{version:\"0.24.0\",prs:[564],description:\"Added react_native.module.call.distinct_count attribute\"}]},\"react_native.module.duration.max\":{brief:\"The duration of the slowest single native module call observed during the lifetime of the span, in milliseconds.\",type:\"double\",keys:[\"react_native.module.duration.max\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:512.5,examples:[512.5],changelog:[{version:\"0.24.0\",prs:[564],description:\"Added react_native.module.duration.max attribute\"}]},\"react_native.module.duration.total\":{brief:\"The combined wall-clock duration of all native module calls observed during the lifetime of the span, in milliseconds. Calls overlap, so this can exceed the span duration.\",type:\"double\",keys:[\"react_native.module.duration.total\",\"turbo_module.total_duration_ms\",\"turbo_modules.total_duration_ms\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:128.45,examples:[128.45],aliases:[\"turbo_module.total_duration_ms\",\"turbo_modules.total_duration_ms\"],changelog:[{version:\"0.24.0\",prs:[564],description:\"Added react_native.module.duration.total attribute\"}]},\"react_native.module.error.count\":{brief:\"The number of native module calls that failed during the lifetime of the span. A call counts as failed when it threw, rejected, or \\u2014 on the Old Architecture bridge only \\u2014 invoked its failure callback.\",type:\"integer\",keys:[\"react_native.module.error.count\",\"turbo_module.total_error_count\",\"turbo_modules.total_error_count\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:2,examples:[2],aliases:[\"turbo_module.total_error_count\",\"turbo_modules.total_error_count\"],changelog:[{version:\"0.24.0\",prs:[564],description:\"Added react_native.module.error.count attribute\"}]},\"react_native.module.kind\":{brief:\"Whether the native module call completed synchronously or reported completion later through a Promise or a callback. One of `sync` or `async`.\",type:\"string\",keys:[\"react_native.module.kind\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:\"sync\",examples:[\"sync\",\"async\"],changelog:[{version:\"0.24.0\",prs:[564],description:\"Added react_native.module.kind attribute\"}]},\"react_native.module.method\":{brief:\"The name of the native module method that was called.\",type:\"string\",keys:[\"react_native.module.method\",\"turbo_module.method\"],applyScrubbing:{key:\"manual\",reason:\"Native module and method names are app-defined identifiers, but scrubbing them would make the call attribution unusable\"},isInOtel:!1,visibility:\"public\",example:\"getUniqueId\",examples:[\"getUniqueId\"],aliases:[\"turbo_module.method\"],changelog:[{version:\"0.24.0\",prs:[564],description:\"Added react_native.module.method attribute\"}]},\"react_native.module.name\":{brief:\"The name of the native module the call was dispatched to. On the New Architecture this is the TurboModule name, on the Old Architecture the `NativeModules` key.\",type:\"string\",keys:[\"react_native.module.name\",\"turbo_module.name\"],applyScrubbing:{key:\"manual\",reason:\"Native module and method names are app-defined identifiers, but scrubbing them would make the call attribution unusable\"},isInOtel:!1,visibility:\"public\",example:\"RNDeviceInfo\",examples:[\"RNDeviceInfo\"],aliases:[\"turbo_module.name\"],changelog:[{version:\"0.24.0\",prs:[564],description:\"Added react_native.module.name attribute\"}]},\"react_native.module.top.duration\":{brief:\"The total duration attributed to `react_native.module.top.name`, in milliseconds.\",type:\"double\",keys:[\"react_native.module.top.duration\",\"turbo_module.top_module_duration_ms\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:87.25,examples:[87.25],aliases:[\"turbo_module.top_module_duration_ms\"],changelog:[{version:\"0.24.0\",prs:[564],description:\"Added react_native.module.top.duration attribute\"}]},\"react_native.module.top.name\":{brief:\"The native module and method that accounted for the most total duration during the lifetime of the span, formatted as `<module>.<method>`.\",type:\"string\",keys:[\"react_native.module.top.name\",\"turbo_module.top_module\"],applyScrubbing:{key:\"manual\",reason:\"Native module and method names are app-defined identifiers, but scrubbing them would make the call attribution unusable\"},isInOtel:!1,visibility:\"public\",example:\"RNDeviceInfo.getUniqueId\",examples:[\"RNDeviceInfo.getUniqueId\"],aliases:[\"turbo_module.top_module\"],changelog:[{version:\"0.24.0\",prs:[564],description:\"Added react_native.module.top.name attribute\"}]},\"react.version\":{brief:\"The version of the React framework\",type:\"string\",keys:[\"react.version\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:\"18.2.0\",changelog:[{version:\"0.7.0\",prs:[368],description:\"Added react.version attribute\"}]},\"redis.command\":{brief:\"The name of the Redis operation being executed.\",type:\"string\",keys:[\"db.operation.name\",\"cloudflare.d1.query_type\",\"db.operation\",\"redis.command\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:\"SELECT\",examples:[\"SELECT\"],deprecation:{replacement:\"db.operation.name\",status:\"backfill\"},aliases:[\"cloudflare.d1.query_type\",\"db.operation.name\",\"db.operation\"],changelog:[{version:\"0.19.0\",prs:[531],description:\"Added redis.command attribute\"}]},\"redis.key\":{brief:\"The key the Redis command is operating on.\",type:\"string\",keys:[\"db.redis.key\",\"redis.key\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:\"user:2047:city\",deprecation:{replacement:\"db.redis.key\",reason:\"This attribute is being deprecated in favor of db.redis.key, which is the preferred replacement.\",status:\"backfill\"},aliases:[\"db.redis.key\"],changelog:[{version:\"0.19.0\",prs:[484],description:\"Added redis.key attribute, deprecated in favor of db.redis.key\"}]},release:{brief:\"The sentry release.\",type:\"string\",keys:[\"sentry.release\",\"release\",\"service.version\"],applyScrubbing:{key:\"never\"},isInOtel:!1,visibility:\"public\",example:\"production\",deprecation:{replacement:\"sentry.release\",status:\"normalize\"},aliases:[\"sentry.release\"],changelog:[{version:\"0.19.0\",prs:[497],description:\"Configured normalization\"},{version:\"0.1.0\",prs:[61,127]},{version:\"0.0.0\"}]},\"remix.action_form_data.<key>\":{brief:\"Remix form data, <key> being the form data key, the value being the form data value.\",type:\"string\",keys:[\"remix.action_form_data.<key>\"],applyScrubbing:{key:\"auto\"},isInOtel:!1,visibility:\"public\",hasDynamicSuffix:!0,example:\"http.response.header.text='test'\",changelog:[{version:\"0.1.0\",prs:[103]}]},replayId:{brief:\"The id of the sentry replay.\",type:\"string\",keys:[\"replayId\"],applyScrubbing:{key:\"never\"},isInOtel:!1,visibility:\"public\",example:\"123e4567e89b12d3a456426614174000\",deprecation:{replacement:\"sentry.replay_id\"},aliases:[\"sentry.replay_id\"],changelog:[{version:\"0.24.0\",prs:[401]}]},replay_id:{brief:\"The id of the sentry replay.\",type:\"string\",keys:[\"sentry.replay_id\",\"replay.id\",\"replay_id\"],applyScrubbing:{key:\"never\"},isInOtel:!1,visibility:\"public\",example:\"123e4567e89b12d3a456426614174000\",deprecation:{replacement:\"sentry.replay_id\",status:\"normalize\"},aliases:[\"sentry.replay_id\"],changelog:[{version:\"0.19.0\",prs:[497],description:\"Configured normalization\"},{version:\"0.1.0\",prs:[61]},{version:\"0.0.0\"}]},\"resource.deployment.environment\":{brief:\"The software deployment environment name.\",type:\"string\",keys:[\"sentry.environment\",\"environment\",\"resource.deployment.environment\",\"resource.deployment.environment.name\"],applyScrubbing:{key:\"never\"},isInOtel:!0,visibility:\"public\",example:\"production\",deprecation:{replacement:\"sentry.environment\",status:\"backfill\"},changelog:[{version:\"0.5.0\",prs:[266]}]},\"resource.deployment.environment.name\":{brief:\"The software deployment environment name.\",type:\"string\",keys:[\"sentry.environment\",\"environment\",\"resource.deployment.environment\",\"resource.deployment.environment.name\"],applyScrubbing:{key:\"never\"},isInOtel:!0,visibility:\"public\",example:\"production\",deprecation:{replacement:\"sentry.environment\",status:\"backfill\"},changelog:[{version:\"0.3.1\",prs:[196]}]},\"resource.render_blocking_status\":{brief:\"The render blocking status of the resource.\",type:\"string\",keys:[\"resource.render_blocking_status\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:\"non-blocking\",changelog:[{version:\"0.1.0\",prs:[127]},{version:\"0.0.0\"}]},route:{brief:\"The matched route, that is, the path template in the format used by the respective server framework. Also used by mobile SDKs to indicate the current route in the application.\",type:\"string\",keys:[\"route\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:\"App\\\\Controller::indexAction\",deprecation:{replacement:\"http.route\"},aliases:[\"http.route\"],changelog:[{version:\"0.1.0\",prs:[61,74]},{version:\"0.0.0\"}]},\"router.navigation.origin\":{brief:\"The origin of the navigation (usually client side router navigations). Should preferably be a parameterized template (like url.template) or a URL path otherwise.\",type:\"string\",keys:[\"router.navigation.origin\",\"navigation.origin\",\"sentry.sveltekit.navigation.from\"],applyScrubbing:{key:\"auto\"},isInOtel:!1,visibility:\"public\",example:\"/users/:id\",aliases:[\"navigation.origin\",\"sentry.sveltekit.navigation.from\"],changelog:[{version:\"0.22.0\",prs:[600],description:\"Added router.navigation.origin attribute, replacing navigation.origin\"}]},\"router.navigation.route.id\":{brief:\"The identifier of the matched client-side route, as assigned by the routing framework (e.g., vue-router name, react-router id).\",type:\"string\",keys:[\"router.navigation.route.id\",\"navigation.route.id\"],applyScrubbing:{key:\"auto\"},isInOtel:!1,visibility:\"public\",example:\"AboutView\",aliases:[\"navigation.route.id\"],changelog:[{version:\"0.22.0\",prs:[600],description:\"Added router.navigation.route.id attribute, replacing navigation.route.id\"}]},\"router.navigation.type\":{brief:\"The type of navigation done by a client-side router.\",type:\"string\",keys:[\"router.navigation.type\",\"navigation.type\",\"sentry.sveltekit.navigation.type\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:\"router.push\",aliases:[\"navigation.type\",\"sentry.sveltekit.navigation.type\"],changelog:[{version:\"0.22.0\",prs:[600],description:\"Added router.navigation.type attribute, replacing navigation.type\"}]},\"rpc.grpc.status_code\":{brief:\"The numeric status code of the gRPC request.\",type:\"integer\",keys:[\"rpc.grpc.status_code\"],applyScrubbing:{key:\"manual\"},isInOtel:!0,visibility:\"public\",example:2,deprecation:{replacement:\"rpc.response.status_code\",reason:\"Cannot be automatically backfilled due to type mismatch (integer vs string); rpc.grpc.status_code is a numeric gRPC status code while rpc.response.status_code is the string status name.\"},aliases:[\"code\",\"rpc.response.status_code\"],changelog:[{version:\"0.19.0\",prs:[494,533],description:\"Deprecated rpc.grpc.status_code in favor of rpc.response.status_code\"},{version:\"0.4.0\",prs:[228]},{version:\"0.0.0\"}]},\"rpc.method\":{brief:\"The fully-qualified logical name of the method from the RPC interface perspective.\",type:\"string\",keys:[\"rpc.method\",\"aws.operation_name\"],applyScrubbing:{key:\"manual\"},isInOtel:!0,visibility:\"public\",example:\"com.example.ExampleService/exampleMethod\",examples:[\"com.example.ExampleService/exampleMethod\",\"GetObject\"],aliases:[\"aws.operation_name\"],changelog:[{version:\"0.29.0\",prs:[707],description:\"Added AWS SDK example and additional context\"},{version:\"0.19.0\",prs:[536],description:\"Added aws.operation_name as an alias\"},{version:\"0.7.0\",prs:[351],description:\"Added rpc.method attribute\"}],additionalContext:[\"For AWS SDK calls, this is the operation name only, as the SDK reports it, e.g. `GetObject`.\"]},\"rpc.response.status_code\":{brief:\"Status code of the RPC returned by the RPC server or generated by the client.\",type:\"string\",keys:[\"rpc.response.status_code\",\"code\"],applyScrubbing:{key:\"manual\"},isInOtel:!0,visibility:\"public\",example:\"DEADLINE_EXCEEDED\",aliases:[\"code\",\"rpc.grpc.status_code\"],changelog:[{version:\"0.19.0\",prs:[494,533],description:\"Added code and rpc.grpc.status_code as aliases\"},{version:\"0.7.0\",prs:[352],description:\"Added rpc.response.status_code attribute\"}]},\"rpc.service\":{brief:\"The full (logical) name of the service being called, including its package name, if applicable.\",type:\"string\",keys:[\"rpc.service\"],applyScrubbing:{key:\"manual\"},isInOtel:!0,visibility:\"public\",example:\"myService.BestService\",examples:[\"myService.BestService\",\"S3\",\"APIGateway\"],changelog:[{version:\"0.29.0\",prs:[707],description:\"Added AWS SDK examples\"},{version:\"0.28.0\",prs:[714],description:\"Added additional context about the OpenTelemetry deprecation\"},{version:\"0.1.0\",prs:[127]},{version:\"0.0.0\"}],additionalContext:[\"Deprecated in OpenTelemetry for generic RPC spans. The value should be included in `rpc.method`, which is expected to be the fully-qualified name.\",\"Still set on AWS SDK spans, where it holds the AWS service ID with all whitespace removed (e.g. `S3`, `APIGateway` for `API Gateway`) and `rpc.method` is set to the operation (e.g. `GetObject`).\"]},\"rpc.system\":{brief:\"A string identifying the remoting system.\",type:\"string\",keys:[\"rpc.system.name\",\"rpc.system\"],applyScrubbing:{key:\"manual\"},isInOtel:!0,visibility:\"public\",example:\"aws-api\",deprecation:{replacement:\"rpc.system.name\",reason:\"This attribute is being deprecated in favor of rpc.system.name, which is the OTel-aligned replacement.\",status:\"backfill\"},aliases:[\"rpc.system.name\"],changelog:[{version:\"0.16.0\",prs:[482],description:\"Added rpc.system attribute, deprecated in favor of rpc.system.name\"}]},\"rpc.system.name\":{brief:\"A string identifying the remoting system.\",type:\"string\",keys:[\"rpc.system.name\",\"rpc.system\"],applyScrubbing:{key:\"manual\"},isInOtel:!0,visibility:\"public\",example:\"aws-api\",aliases:[\"rpc.system\"],changelog:[{version:\"0.16.0\",prs:[482],description:\"Added rpc.system.name attribute\"}]},\"runtime.build\":{brief:\"The application build string, when it is separate from the version.\",type:\"string\",keys:[\"runtime.build\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:\"stable\",deprecation:{reason:\"The runtime.* namespace is deprecated in favor of process.runtime.*. No direct OTel equivalent exists for this attribute.\"},changelog:[{version:\"0.11.0\",prs:[383],description:\"Added and deprecated runtime.build attribute\"}]},\"runtime.name\":{brief:\"The name of the runtime. For example node, CPython, or rustc.\",type:\"string\",keys:[\"process.runtime.name\",\"runtime.name\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:\"node\",deprecation:{replacement:\"process.runtime.name\",reason:\"Prefer OTel-aligned process.runtime.name\",status:\"backfill\"},aliases:[\"process.runtime.name\"],changelog:[{version:\"0.11.0\",prs:[383],description:\"Added and deprecated runtime.name attribute in favor of process.runtime.name\"}]},\"runtime.raw_description\":{brief:\"Unprocessed description string as obtained from the runtime. Used to extract name and version for well-known runtimes.\",type:\"string\",keys:[\"process.runtime.description\",\"runtime.raw_description\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:\"Eclipse OpenJ9 VM openj9-0.21.0\",deprecation:{replacement:\"process.runtime.description\",reason:\"Prefer OTel-aligned process.runtime.description\",status:\"backfill\"},aliases:[\"process.runtime.description\"],changelog:[{version:\"0.11.0\",prs:[383],description:\"Added and deprecated runtime.raw_description attribute in favor of process.runtime.description\"}]},\"runtime.version\":{brief:\"The version of the runtime.\",type:\"string\",keys:[\"process.runtime.version\",\"runtime.version\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:\"18.04.2\",deprecation:{replacement:\"process.runtime.version\",reason:\"Prefer OTel-aligned process.runtime.version\",status:\"backfill\"},aliases:[\"process.runtime.version\"],changelog:[{version:\"0.11.0\",prs:[383],description:\"Added and deprecated runtime.version attribute in favor of process.runtime.version\"}]},\"score.<key>\":{brief:\"The weighted performance score for a web vital. This is defined as `score.weight.<key>` * `score.ratio.<key>`.\",type:\"double\",keys:[\"score.<key>\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",hasDynamicSuffix:!0,example:\"score.cls=0.1723\",changelog:[{version:\"0.7.0\",prs:[355],description:\"Added score.<key> attribute\"}]},\"score.ratio.<key>\":{brief:\"The score for a web vital, normalized to a number between 0 and 1.\",type:\"double\",keys:[\"score.ratio.<key>\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",hasDynamicSuffix:!0,example:\"score.ratio.inp=0.7748\",changelog:[{version:\"0.7.0\",prs:[355],description:\"Added score.ratio.<key> attribute\"}]},\"score.total\":{brief:\"The total performance score of a span. This is the sum of individual weighted web vital scores (see `score.<key>`).\",type:\"double\",keys:[\"score.total\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",changelog:[{version:\"0.7.0\",prs:[355],description:\"Added score.total attribute\"}]},\"score.weight.<key>\":{brief:\"The relative weight of a web vital in a span's performance score.\",type:\"double\",keys:[\"score.weight.<key>\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",hasDynamicSuffix:!0,example:\"score.weight.fcp=0.25\",changelog:[{version:\"0.7.0\",prs:[355],description:\"Added score.weight.<key> attribute\"}]},\"sentry.action\":{brief:\"Used as a generic attribute representing the action depending on the type of span. For instance, this is the database query operation for DB spans, and the request method for HTTP spans.\",type:\"string\",keys:[\"sentry.action\",\"span.action\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:\"SELECT\",changelog:[{version:\"0.4.0\",prs:[212]}],searchAlias:{name:\"span.action\"}},\"sentry.browser.name\":{brief:\"The name of the browser.\",type:\"string\",keys:[\"browser.name\",\"sentry.browser.name\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:\"Chrome\",deprecation:{replacement:\"browser.name\",status:\"backfill\"},aliases:[\"browser.name\"],changelog:[{version:\"0.1.0\",prs:[139]}],searchAlias:{name:\"browser.name\"}},\"sentry.browser.version\":{brief:\"The version of the browser.\",type:\"string\",keys:[\"browser.version\",\"sentry.browser.version\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:\"120.0.6099.130\",deprecation:{replacement:\"browser.version\",status:\"backfill\"},aliases:[\"browser.version\"],changelog:[{version:\"0.1.0\",prs:[139]}]},\"sentry.cancellation_reason\":{brief:\"The reason why a span ended early.\",type:\"string\",keys:[\"sentry.cancellation_reason\"],applyScrubbing:{key:\"never\"},isInOtel:!1,visibility:\"public\",example:\"document.hidden\",changelog:[{version:\"0.0.0\"}]},\"sentry.category\":{brief:\"The high-level category of a span, derived from the span operation or span attributes. This categorizes spans by their general purpose (e.g., database, HTTP, UI).\",type:\"string\",keys:[\"sentry.category\",\"span.category\"],applyScrubbing:{key:\"never\"},isInOtel:!1,visibility:\"public\",example:\"db\",changelog:[{version:\"0.28.0\",prs:[721],description:\"Added object to the enum values\"},{version:\"0.4.0\",prs:[218]}],searchAlias:{name:\"span.category\"}},\"sentry.client_sample_rate\":{brief:\"Rate at which a span was sampled in the SDK.\",type:\"double\",keys:[\"sentry.client_sample_rate\",\"client_sample_rate\"],applyScrubbing:{key:\"never\"},isInOtel:!1,visibility:\"public\",example:.5,changelog:[{version:\"0.1.0\",prs:[102]}],searchAlias:{name:\"client_sample_rate\"}},\"sentry.description\":{brief:\"The human-readable description of a span.\",type:\"string\",keys:[\"sentry.description\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:\"index view query\",changelog:[{version:\"0.1.0\",prs:[135]}]},\"sentry.dist\":{brief:\"The sentry dist.\",type:\"string\",keys:[\"sentry.dist\",\"dist\"],applyScrubbing:{key:\"never\"},isInOtel:!1,visibility:\"public\",example:\"1.0\",aliases:[\"dist\"],changelog:[{version:\"0.16.0\",prs:[489],description:\"Added dist as an alias\"},{version:\"0.0.0\"}]},\"sentry.domain\":{brief:\"Used as a generic attribute representing the domain depending on the type of span. For instance, this is the collection/table name for database spans, and the server address for HTTP spans.\",type:\"string\",keys:[\"sentry.domain\",\"span.domain\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:\"example.com\",changelog:[{version:\"0.4.0\",prs:[212]}],searchAlias:{name:\"span.domain\"}},\"sentry.dsc.environment\":{brief:\"The environment from the dynamic sampling context.\",type:\"string\",keys:[\"sentry.dsc.environment\"],applyScrubbing:{key:\"never\"},isInOtel:!1,visibility:\"internal\",example:\"prod\",changelog:[{version:\"0.3.0\",prs:[185]}]},\"sentry.dsc.project_id\":{brief:\"The ID of the project where the trace originated (i.e. the project of the SDK that started the trace). Propagated through the dynamic sampling context and set by Relay during ingestion.\",type:\"string\",keys:[\"sentry.dsc.project_id\"],applyScrubbing:{key:\"never\"},isInOtel:!1,visibility:\"internal\",example:\"12345\",changelog:[{version:\"0.7.0\",prs:[358],description:\"Add sentry.dsc.project_id as an attribute\"}]},\"sentry.dsc.public_key\":{brief:\"The public key from the dynamic sampling context.\",type:\"string\",keys:[\"sentry.dsc.public_key\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"internal\",example:\"c51734c603c4430eb57cb0a5728a479d\",changelog:[{version:\"0.3.0\",prs:[185]}]},\"sentry.dsc.release\":{brief:\"The release identifier from the dynamic sampling context.\",type:\"string\",keys:[\"sentry.dsc.release\"],applyScrubbing:{key:\"never\"},isInOtel:!1,visibility:\"internal\",example:\"frontend@e8211be71b214afab5b85de4b4c54be3714952bb\",changelog:[{version:\"0.3.0\",prs:[185]}]},\"sentry.dsc.sampled\":{brief:\"Whether the event was sampled according to the dynamic sampling context.\",type:\"boolean\",keys:[\"sentry.dsc.sampled\"],applyScrubbing:{key:\"never\"},isInOtel:!1,visibility:\"internal\",example:!0,changelog:[{version:\"0.3.0\",prs:[185]}]},\"sentry.dsc.sample_rate\":{brief:\"The sample rate from the dynamic sampling context.\",type:\"string\",keys:[\"sentry.dsc.sample_rate\"],applyScrubbing:{key:\"never\"},isInOtel:!1,visibility:\"internal\",example:\"1.0\",changelog:[{version:\"0.3.0\",prs:[185]}]},\"sentry.dsc.trace_id\":{brief:\"The trace ID from the dynamic sampling context.\",type:\"string\",keys:[\"sentry.dsc.trace_id\"],applyScrubbing:{key:\"never\"},isInOtel:!1,visibility:\"internal\",example:\"047372980460430cbc78d9779df33a46\",changelog:[{version:\"0.3.0\",prs:[185]}]},\"sentry.dsc.transaction\":{brief:\"The transaction name from the dynamic sampling context.\",type:\"string\",keys:[\"sentry.dsc.transaction\"],applyScrubbing:{key:\"never\"},isInOtel:!1,visibility:\"internal\",example:\"/issues/errors-outages/\",changelog:[{version:\"0.3.0\",prs:[185]}]},\"sentry.environment\":{brief:\"The sentry environment.\",type:\"string\",keys:[\"sentry.environment\",\"environment\",\"resource.deployment.environment\",\"resource.deployment.environment.name\"],applyScrubbing:{key:\"never\"},isInOtel:!1,visibility:\"public\",example:\"production\",aliases:[\"environment\"],changelog:[{version:\"0.0.0\"}],searchAlias:{name:\"environment\"}},\"sentry.event.serialized_breadcrumbs\":{brief:\"JSON-serialized `breadcrumbs` property from a Sentry event.\",type:\"string\",keys:[\"sentry.event.serialized_breadcrumbs\"],applyScrubbing:{key:\"never\"},isInOtel:!1,visibility:\"internal\",changelog:[{version:\"0.19.0\",prs:[556]}]},\"sentry.event.serialized_contexts\":{brief:\"JSON-serialized `contexts` property from a Sentry event.\",type:\"string\",keys:[\"sentry.event.serialized_contexts\"],applyScrubbing:{key:\"never\"},isInOtel:!1,visibility:\"internal\",changelog:[{version:\"0.19.0\",prs:[556]}]},\"sentry.event.serialized_extra\":{brief:\"JSON-serialized `extra` property from a Sentry event.\",type:\"string\",keys:[\"sentry.event.serialized_extra\"],applyScrubbing:{key:\"never\"},isInOtel:!1,visibility:\"internal\",changelog:[{version:\"0.19.0\",prs:[556]}]},\"sentry.event.serialized_meta\":{brief:\"JSON-serialized `_meta` for the `sentry.event.serialized_*` properties from a Sentry event.\",type:\"string\",keys:[\"sentry.event.serialized_meta\"],applyScrubbing:{key:\"never\"},isInOtel:!1,visibility:\"internal\",changelog:[{version:\"0.20.0\",prs:[566]}]},\"sentry.exclusive_time\":{brief:\"The exclusive time duration of the span in milliseconds.\",type:\"double\",keys:[\"sentry.exclusive_time\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:1234,changelog:[{version:\"0.4.0\",prs:[228]},{version:\"0.3.0\",prs:[160]},{version:\"0.0.0\"}]},\"sentry.frames.frozen\":{brief:\"The number of frozen frames rendered during the lifetime of the span.\",type:\"integer\",keys:[\"app.vitals.frames.frozen.count\",\"frames.frozen\",\"mobile.frozen_frames\",\"sentry.frames.frozen\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:3,deprecation:{replacement:\"app.vitals.frames.frozen.count\",reason:\"Replaced by app.vitals.frames.frozen.count to align with the app.vitals.* namespace for mobile performance attributes\",status:\"backfill\"},aliases:[\"app.vitals.frames.frozen.count\",\"frames.frozen\"],changelog:[{version:\"0.19.0\",prs:[500],description:\"Added sentry.frames.frozen attribute\"}]},\"sentry.frames.slow\":{brief:\"The number of slow frames rendered during the lifetime of the span.\",type:\"integer\",keys:[\"app.vitals.frames.slow.count\",\"frames.slow\",\"mobile.slow_frames\",\"sentry.frames.slow\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:1,deprecation:{replacement:\"app.vitals.frames.slow.count\",reason:\"Replaced by app.vitals.frames.slow.count to align with the app.vitals.* namespace for mobile performance attributes\",status:\"backfill\"},aliases:[\"app.vitals.frames.slow.count\",\"frames.slow\"],changelog:[{version:\"0.19.0\",prs:[500],description:\"Added sentry.frames.slow attribute\"}]},\"sentry.frames.total\":{brief:\"The number of total frames rendered during the lifetime of the span.\",type:\"integer\",keys:[\"app.vitals.frames.total.count\",\"frames.total\",\"mobile.total_frames\",\"sentry.frames.total\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:60,deprecation:{replacement:\"app.vitals.frames.total.count\",reason:\"Replaced by app.vitals.frames.total.count to align with the app.vitals.* namespace for mobile performance attributes\",status:\"backfill\"},aliases:[\"app.vitals.frames.total.count\",\"frames.total\"],changelog:[{version:\"0.19.0\",prs:[500],description:\"Added sentry.frames.total attribute\"}]},\"sentry.graphql.operation\":{brief:\"Indicates the type of graphql operation, emitted by the Javascript SDK.\",type:\"string\",keys:[\"sentry.graphql.operation\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:\"getUserById\",changelog:[{version:\"0.3.1\",prs:[190]}]},\"sentry.group\":{brief:\"Stores the hash of `sentry.normalized_description`. This is primarily used for grouping spans in the product end.\",type:\"string\",keys:[\"sentry.group\",\"span.group\"],applyScrubbing:{key:\"never\"},isInOtel:!1,visibility:\"public\",changelog:[{version:\"0.4.0\",prs:[212]}],searchAlias:{name:\"span.group\"}},\"sentry.http.prefetch\":{brief:\"If an http request was a prefetch request.\",type:\"boolean\",keys:[\"sentry.http.prefetch\"],applyScrubbing:{key:\"never\"},isInOtel:!1,visibility:\"public\",example:!0,changelog:[{version:\"0.0.0\"}]},\"sentry.idle_span_finish_reason\":{brief:\"The reason why an idle span ended early.\",type:\"string\",keys:[\"sentry.idle_span_finish_reason\"],applyScrubbing:{key:\"never\"},isInOtel:!1,visibility:\"public\",example:\"idleTimeout\",changelog:[{version:\"0.0.0\"}]},\"sentry.is_localhost\":{brief:\"Indicates whether a telemetry item was sent on a host, device or browser on a localhost URL or IP address.\",type:\"boolean\",keys:[\"sentry.is_localhost\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"internal\",example:!0,examples:[!0,!1],changelog:[{version:\"0.24.0\",prs:[646],description:\"Added sentry.is_localhost attribute\"}],additionalContext:['This attribute is used for the Sentry \"Filter telemetry from localhost\" inbound filter feature.',\"SDKs must set this attribute on every span, as well as every other telemetry item supporting attribuztes.\"]},\"sentry.is_remote\":{brief:\"Indicates whether a span's parent is remote.\",type:\"boolean\",keys:[\"sentry.is_remote\"],applyScrubbing:{key:\"never\"},isInOtel:!1,visibility:\"public\",example:!0,changelog:[{version:\"0.3.1\",prs:[190]}]},\"sentry.kind\":{brief:\"Used to clarify the relationship between parents and children, or to distinguish between spans, e.g. a `server` and `client` span with the same name.\",type:\"string\",keys:[\"sentry.kind\",\"span.kind\",\"otel.kind\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:\"client\",examples:[\"client\",\"server\",\"producer\",\"consumer\",\"internal\"],aliases:[\"otel.kind\"],changelog:[{version:\"0.19.0\",prs:[517],description:\"Added more examples and additional_context to the attribute\"},{version:\"0.3.1\",prs:[190]}],additionalContext:['Valid attribute values are: \"client\", \"server\", \"producer\", \"consumer\" and \"internal\"'],searchAlias:{name:\"span.kind\"}},\"sentry.link.type\":{brief:\"Set on a span link. Describes the relationship between the span and the linked span.\",type:\"string\",keys:[\"sentry.link.type\",\"link.type\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:\"previous_trace\",examples:[\"previous_trace\",\"cache_origin\",\"message_origin\",\"server_request\"],changelog:[{version:\"0.28.0\",prs:[724,738,739],description:\"Removed next_trace from the examples and enum_values, because no SDK sets it\"},{version:\"0.27.0\",prs:[687],description:\"Added search alias link.type\"},{version:\"0.25.0\",prs:[656],description:\"Added sentry.link.type attribute\"}],additionalContext:[\"This attribute is exclusively set on span links.\",\"Sentry instrumentation setting span links, sets it to describe the relationship between the span and the linked span.\",\"Add each new link type to `enum_values`, with a brief that says what the linked span is.\"],searchAlias:{name:\"link.type\"}},\"sentry.main_thread\":{brief:\"Whether the span or event occurred on the main thread. Computed by Relay and should not be set by SDKs.\",type:\"boolean\",keys:[\"sentry.main_thread\"],applyScrubbing:{key:\"never\"},isInOtel:!1,visibility:\"public\",example:!0,changelog:[{version:\"0.5.0\"}]},\"sentry.message.parameter.<key>\":{brief:\"A parameter used in the message template. <key> can either be the number that represent the parameter's position in the template string (sentry.message.parameter.0, sentry.message.parameter.1, etc) or the parameter's name (sentry.message.parameter.item_id, sentry.message.parameter.user_id, etc)\",type:\"string\",keys:[\"sentry.message.parameter.<key>\"],applyScrubbing:{key:\"auto\"},isInOtel:!1,visibility:\"public\",example:\"sentry.message.parameter.0='123'\",changelog:[{version:\"0.1.0\",prs:[116]}]},\"sentry.message.template\":{brief:\"The parameterized template string.\",type:\"string\",keys:[\"sentry.message.template\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:\"Hello, {name}!\",changelog:[{version:\"0.1.0\",prs:[116]}]},\"sentry.metric.source\":{brief:\"The provenance of a metric.  For example, this can be set to indicate if a metric was generated by Relay from a span.\",type:\"string\",keys:[\"sentry.metric.source\"],applyScrubbing:{key:\"never\"},isInOtel:!1,visibility:\"public\",example:\"span\",changelog:[{version:\"0.16.0\",prs:[476],description:\"Added sentry.metric.source attribute\"}]},\"sentry.mobile\":{brief:\"Whether the application is using a mobile SDK. Computed by Relay and should not be set by SDKs.\",type:\"boolean\",keys:[\"sentry.mobile\"],applyScrubbing:{key:\"never\"},isInOtel:!1,visibility:\"public\",example:!0,changelog:[{version:\"0.5.0\"}]},\"sentry.module.<key>\":{brief:\"A module that was loaded in the process. The key is the name of the module.\",type:\"string\",keys:[\"sentry.module.<key>\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",hasDynamicSuffix:!0,example:\"sentry.module.brianium/paratest='v7.7.0'\",changelog:[{version:\"0.1.0\",prs:[103]}]},\"sentry.nextjs.ssr.function.route\":{brief:\"A parameterized route for a function in Next.js that contributes to Server-Side Rendering. Should be present on spans that track such functions when the file location of the function is known.\",type:\"string\",keys:[\"sentry.nextjs.ssr.function.route\"],applyScrubbing:{key:\"never\"},isInOtel:!1,visibility:\"public\",example:\"/posts/[id]/layout\",changelog:[{version:\"0.1.0\",prs:[54,106]}]},\"sentry.nextjs.ssr.function.type\":{brief:\"A descriptor for a for a function in Next.js that contributes to Server-Side Rendering. Should be present on spans that track such functions.\",type:\"string\",keys:[\"sentry.nextjs.ssr.function.type\"],applyScrubbing:{key:\"never\"},isInOtel:!1,visibility:\"public\",example:\"generateMetadata\",changelog:[{version:\"0.1.0\",prs:[54,106]}]},\"sentry.normalized_db_query\":{brief:\"The normalized version of `db.query.text`.\",type:\"string\",keys:[\"sentry.normalized_db_query\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:\"SELECT .. FROM sentry_project WHERE (project_id = %s)\",changelog:[{version:\"0.3.1\",prs:[194]}]},\"sentry.normalized_db_query.hash\":{brief:\"The hash of `sentry.normalized_db_query`.\",type:\"string\",keys:[\"sentry.normalized_db_query.hash\"],applyScrubbing:{key:\"never\"},isInOtel:!1,visibility:\"public\",changelog:[{version:\"0.4.0\",prs:[200]}]},\"sentry.normalized_description\":{brief:\"Used as a generic attribute representing the normalized `sentry.description`. This refers to the legacy use case of `sentry.description` where it holds relevant data depending on the type of span (e.g. database query, resource url, http request description, etc).\",type:\"string\",keys:[\"sentry.normalized_description\"],applyScrubbing:{key:\"auto\"},isInOtel:!1,visibility:\"public\",example:\"SELECT .. FROM sentry_project WHERE (project_id = %s)\",changelog:[{version:\"0.4.0\",prs:[212]}]},\"sentry.observed_timestamp_nanos\":{brief:\"The timestamp at which an envelope was received by Relay, in nanoseconds.\",type:\"string\",keys:[\"sentry.observed_timestamp_nanos\"],applyScrubbing:{key:\"never\"},isInOtel:!1,visibility:\"public\",example:\"1544712660300000000\",changelog:[{version:\"0.3.0\",prs:[174]},{version:\"0.2.0\",prs:[137]}]},\"sentry.op\":{brief:\"The operation of a span.\",type:\"string\",keys:[\"sentry.op\",\"span.op\"],applyScrubbing:{key:\"never\"},isInOtel:!1,visibility:\"public\",example:\"http.client\",changelog:[{version:\"0.0.0\"}],searchAlias:{name:\"span.op\"}},\"sentry.origin\":{brief:\"The origin of the instrumentation (e.g. span, log, etc.)\",type:\"string\",keys:[\"sentry.origin\",\"origin\"],applyScrubbing:{key:\"never\"},isInOtel:!1,visibility:\"public\",example:\"auto.http.otel.fastify\",changelog:[{version:\"0.1.0\",prs:[68]},{version:\"0.0.0\"}],searchAlias:{name:\"origin\"}},\"sentry.pageload.span_id\":{brief:\"The id of the pageload span, set by web vital spans and metrics\",type:\"string\",keys:[\"sentry.pageload.span_id\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:\"bf2c8d3df84524de\",changelog:[{version:\"0.17.0\",prs:[495],description:\"Added sentry.pageload.span_id attribute\"}]},\"sentry.platform\":{brief:\"The sdk platform that generated the event.\",type:\"string\",keys:[\"sentry.platform\",\"platform\"],applyScrubbing:{key:\"never\"},isInOtel:!1,visibility:\"public\",example:\"php\",changelog:[{version:\"0.0.0\"}],searchAlias:{name:\"platform\"}},\"sentry.profiler_id\":{brief:\"The id of the currently running profiler (continuous profiling)\",type:\"string\",keys:[\"sentry.profiler_id\",\"profiler.id\"],applyScrubbing:{key:\"never\"},isInOtel:!1,visibility:\"public\",example:\"18779b64dd35d1a538e7ce2dd2d3fad3\",changelog:[{version:\"0.4.0\",prs:[242]}],searchAlias:{name:\"profiler.id\"}},\"sentry.profile_id\":{brief:\"The ID of the Sentry profile the span is associated with. This is only meaningful for transaction-based profiling.\",type:\"string\",keys:[\"sentry.profile_id\",\"profile.id\",\"profile_id\"],applyScrubbing:{key:\"never\"},isInOtel:!1,visibility:\"public\",example:\"123e4567e89b12d3a456426614174000\",aliases:[\"profile_id\"],changelog:[{version:\"0.19.0\",prs:[497],description:\"Added profile_id as an alias\"},{version:\"0.6.0\",prs:[344],description:\"Added sentry.profile_id attribute\"}],searchAlias:{name:\"profile.id\"}},\"sentry.relay.ingress\":{brief:\"How an item (span, log, &c.) entered Relay.\",type:\"string\",keys:[\"sentry.relay.ingress\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"internal\",example:\"OTEL\",changelog:[{version:\"0.17.0\",prs:[491],description:\"Added sentry.relay.ingress attribute\"}]},\"sentry.relay.pipeline\":{brief:\"An internal descriptor of which processing pipeline an item went through in Relay.\",type:\"string\",keys:[\"sentry.relay.pipeline\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"internal\",example:\"span v2\",changelog:[{version:\"0.17.0\",prs:[491],description:\"Added sentry.relay.pipeline attribute\"}]},\"sentry.release\":{brief:\"The sentry release.\",type:\"string\",keys:[\"sentry.release\",\"release\",\"service.version\"],applyScrubbing:{key:\"never\"},isInOtel:!1,visibility:\"public\",example:\"7.0.0\",aliases:[\"service.version\",\"release\"],changelog:[{version:\"0.0.0\"}],searchAlias:{name:\"release\"}},\"sentry.replay_id\":{brief:\"The id of the sentry replay.\",type:\"string\",keys:[\"sentry.replay_id\",\"replay.id\",\"replay_id\"],applyScrubbing:{key:\"never\"},isInOtel:!1,visibility:\"public\",example:\"123e4567e89b12d3a456426614174000\",aliases:[\"replay_id\",\"replayId\"],changelog:[{version:\"0.0.0\"}],searchAlias:{name:\"replay.id\",deprecatedAliases:[\"replay_id\"]}},\"sentry.replay_is_buffering\":{brief:\"A sentinel attribute on log events indicating whether the current Session Replay is being buffered (onErrorSampleRate).\",type:\"boolean\",keys:[\"sentry.replay_is_buffering\"],applyScrubbing:{key:\"never\"},isInOtel:!1,visibility:\"public\",example:!0,changelog:[{version:\"0.3.0\",prs:[185]}]},\"sentry.report_event\":{brief:\"(Deprecated) The event that caused the SDK to report CLS or LCP (pagehide or navigation)\",type:\"string\",keys:[\"sentry.report_event\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:\"pagehide\",deprecation:{reason:\"The report event moved to browser.web_vital.lcp.report_event and browser.web_vital.cls.report_event, which are themselves deprecated without a replacement. No backfill required.\"},changelog:[{version:\"0.24.0\",prs:[642],description:\"Updated the deprecation reason now that the browser.web_vital.*.report_event attributes are deprecated\"},{version:\"0.5.0\",prs:[320],description:\"Added sentry.report_event attribute\"}]},\"sentry.sdk.integrations\":{brief:\"A list of names identifying enabled integrations. The list shouldhave all enabled integrations, including default integrations. Defaultintegrations are included because different SDK releases may contain differentdefault integrations.\",type:\"string[]\",keys:[\"sentry.sdk.integrations\"],applyScrubbing:{key:\"never\"},isInOtel:!1,visibility:\"public\",example:[\"InboundFilters\",\"FunctionToString\",\"BrowserApiErrors\",\"Breadcrumbs\"],changelog:[{version:\"0.0.0\",prs:[42]}]},\"sentry.sdk.name\":{brief:\"The sentry sdk name.\",type:\"string\",keys:[\"sentry.sdk.name\",\"sdk.name\"],applyScrubbing:{key:\"never\"},isInOtel:!1,visibility:\"public\",example:\"@sentry/react\",changelog:[{version:\"0.0.0\"}],searchAlias:{name:\"sdk.name\"}},\"sentry.sdk.version\":{brief:\"The sentry sdk version.\",type:\"string\",keys:[\"sentry.sdk.version\",\"sdk.version\"],applyScrubbing:{key:\"never\"},isInOtel:!1,visibility:\"public\",example:\"7.0.0\",changelog:[{version:\"0.0.0\"}],searchAlias:{name:\"sdk.version\"}},\"sentry.segment.id\":{brief:\"The segment ID of a span\",type:\"string\",keys:[\"sentry.segment.id\",\"sentry.segment_id\",\"transaction.span_id\"],applyScrubbing:{key:\"never\"},isInOtel:!1,visibility:\"public\",example:\"051581bf3cb55c13\",aliases:[\"sentry.segment_id\"],changelog:[{version:\"0.1.0\",prs:[107,124]}]},\"sentry.segment_id\":{brief:\"The segment ID of a span\",type:\"string\",keys:[\"sentry.segment.id\",\"sentry.segment_id\",\"transaction.span_id\"],applyScrubbing:{key:\"never\"},isInOtel:!1,visibility:\"public\",example:\"051581bf3cb55c13\",deprecation:{replacement:\"sentry.segment.id\",status:\"backfill\"},aliases:[\"sentry.segment.id\"],changelog:[{version:\"0.1.0\",prs:[124]}],searchAlias:{name:\"transaction.span_id\"}},\"sentry.segment.name\":{brief:\"The segment name of a span\",type:\"string\",keys:[\"sentry.segment.name\",\"transaction\",\"sentry.transaction\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:\"GET /user\",aliases:[\"sentry.transaction\",\"transaction\"],changelog:[{version:\"0.6.0\",prs:[345],description:\"Added sentry.transaction and transaction aliases\"},{version:\"0.1.0\",prs:[104]}],searchAlias:{name:\"transaction\"}},\"sentry.segment.name.source\":{brief:\"The source of the segment span name. Should only be set on segment spans.\",type:\"string\",keys:[\"sentry.segment.name.source\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"internal\",example:\"route\",examples:[\"route\",\"component\",\"view\",\"task\",\"custom\",\"url\"],changelog:[{version:\"0.19.0\",prs:[466],description:\"Added sentry.segment.name.source\"}],additionalContext:[\"This attribute is the replacement for `transaction_info.source` on transactions.\",\"Should we bring back clustering for segment names (like we do for transaction names), this attribute will be used to determine if a segment name should be clustered.\"]},\"sentry.server_sample_rate\":{brief:\"Rate at which a span was sampled in Relay.\",type:\"double\",keys:[\"sentry.server_sample_rate\",\"server_sample_rate\"],applyScrubbing:{key:\"never\"},isInOtel:!1,visibility:\"public\",example:.5,changelog:[{version:\"0.1.0\",prs:[102]}],searchAlias:{name:\"server_sample_rate\"}},\"sentry.source\":{brief:\"The source of a span, also referred to as transaction source.\",type:\"string\",keys:[\"sentry.source\"],applyScrubbing:{key:\"never\"},isInOtel:!1,visibility:\"public\",example:\"route\",deprecation:{reason:\"This attribute is superseded by sentry.segment.name.source, which only needs to be set on segment spans.\"},changelog:[{version:\"0.19.0\",prs:[510],description:\"Removed the sentry.span.source replacement\"},{version:\"0.5.0\"}]},\"sentry.span.source\":{brief:\"The source of a span, also referred to as transaction source.\",type:\"string\",keys:[\"sentry.span.source\"],applyScrubbing:{key:\"never\"},isInOtel:!1,visibility:\"public\",example:\"route\",deprecation:{reason:\"This attribute is superseded by sentry.segment.name.source, which only needs to be set on segment spans.\"},changelog:[{version:\"0.19.0\",prs:[510],description:\"Deprecated; superseded by sentry.segment.name.source on segment spans\"},{version:\"0.4.0\",prs:[214]},{version:\"0.0.0\"}]},\"sentry.status\":{brief:`The span's status (either \"ok\" or \"error\"). Older SDKs may set this to a more specific error, but this behaviour is deprecated.`,type:\"string\",keys:[\"sentry.status\",\"span.status\"],applyScrubbing:{key:\"never\"},isInOtel:!1,visibility:\"public\",example:\"ok\",changelog:[{version:\"0.14.0\",prs:[453]}],searchAlias:{name:\"span.status\"}},\"sentry.status_code\":{brief:\"The HTTP status code used in Sentry Insights. Typically set by Sentry during ingestion, rather than by clients.\",type:\"integer\",keys:[\"sentry.status_code\",\"span.status_code\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:200,changelog:[{version:\"0.4.0\",prs:[223,228]}],searchAlias:{name:\"span.status_code\"}},\"sentry.status.message\":{brief:\"The from OTLP extracted status message.\",type:\"string\",keys:[\"sentry.status.message\",\"span.status.message\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:\"foobar\",changelog:[{version:\"0.3.1\",prs:[190]}],searchAlias:{name:\"span.status.message\"}},\"sentry.sveltekit.navigation.from\":{brief:\"the navigation origin (sveltekit router)\",type:\"string\",keys:[\"router.navigation.origin\",\"navigation.origin\",\"sentry.sveltekit.navigation.from\"],applyScrubbing:{key:\"auto\"},isInOtel:!1,visibility:\"public\",example:\"/home\",deprecation:{replacement:\"router.navigation.origin\",reason:\"Use the more generic attribute instead\",status:\"backfill\"},aliases:[\"navigation.origin\",\"router.navigation.origin\"],changelog:[{version:\"0.22.0\",prs:[600],description:\"Re-pointed deprecation from navigation.origin to router.navigation.origin\"},{version:\"0.16.0\",prs:[467],description:\"Added sentry.sveltekit.navigation.from attribute\"}]},\"sentry.sveltekit.navigation.to\":{brief:\"the navigation destination\",type:\"string\",keys:[\"sentry.sveltekit.navigation.to\"],applyScrubbing:{key:\"auto\"},isInOtel:!1,visibility:\"public\",example:\"/users/:id\",deprecation:{reason:\"the navigation destination is already covered by url.* attributes\"},changelog:[{version:\"0.16.0\",prs:[467],description:\"Added sentry.sveltekit.navigation.to attribute\"}]},\"sentry.sveltekit.navigation.type\":{brief:\"The type of navigation event emitted from the sveltekit client router\",type:\"string\",keys:[\"router.navigation.type\",\"navigation.type\",\"sentry.sveltekit.navigation.type\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:\"link\",deprecation:{replacement:\"router.navigation.type\",reason:\"Use the more generic attribute instead\",status:\"backfill\"},aliases:[\"navigation.type\",\"router.navigation.type\"],changelog:[{version:\"0.22.0\",prs:[600],description:\"Re-pointed deprecation from navigation.type to router.navigation.type\"},{version:\"0.16.0\",prs:[467],description:\"Added sentry.sveltekit.navigation.type attribute\"}]},\"sentry.thread.id\":{brief:'Current \"managed\" thread ID.',type:\"integer\",keys:[\"thread.id\",\"sentry.thread.id\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:56,deprecation:{replacement:\"thread.id\",reason:\"This attribute is being deprecated in favor of the OTel-standard thread.id\",status:\"backfill\"},changelog:[{version:\"0.13.0\",prs:[451]}],searchAlias:{name:\"thread.id\"}},\"sentry.timestamp.sequence\":{brief:\"A sequencing counter for deterministic ordering of logs or metrics when timestamps share the same integer millisecond. Starts at 0 on SDK initialization, increments by 1 for each captured item, and resets to 0 when the integer millisecond of the current item differs from the previous one.\",type:\"integer\",keys:[\"sentry.timestamp.sequence\"],applyScrubbing:{key:\"never\"},isInOtel:!1,visibility:\"public\",example:0,changelog:[{version:\"0.5.0\",prs:[262]}]},\"sentry.trace_lifecycle\":{brief:\"Indicates the chosen trace lifecycle mode of the SDK (stream or static)\",type:\"string\",keys:[\"sentry.trace_lifecycle\",\"trace_lifecycle\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:\"stream\",changelog:[{version:\"0.13.0\",prs:[442],description:\"Added sentry.trace_lifecycle attribute\"}],searchAlias:{name:\"trace_lifecycle\"}},\"sentry.trace.parent_span_id\":{brief:\"The span id of the span that was active when the log was collected. This should not be set if there was no active span.\",type:\"string\",keys:[\"sentry.trace.parent_span_id\"],applyScrubbing:{key:\"never\"},isInOtel:!1,visibility:\"public\",example:\"b0e6f15b45c36b12\",deprecation:{},changelog:[{version:\"0.5.0\",prs:[287],description:\"Deprecate `sentry.trace.parent_span_id`\"},{version:\"0.1.0\",prs:[116]}]},\"sentry.trace.status\":{brief:`The segment's status (either \"ok\" or \"error\"). Older SDKs may set this to a more specific error, but this behaviour is deprecated.`,type:\"string\",keys:[\"sentry.trace.status\",\"trace.status\"],applyScrubbing:{key:\"never\"},isInOtel:!1,visibility:\"public\",example:\"ok\",changelog:[{version:\"0.14.0\",prs:[453]}],searchAlias:{name:\"trace.status\"}},\"sentry.transaction\":{brief:\"The sentry transaction (segment name).\",type:\"string\",keys:[\"sentry.segment.name\",\"transaction\",\"sentry.transaction\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:\"GET /\",deprecation:{replacement:\"sentry.segment.name\",reason:\"This attribute is being deprecated in favor of sentry.segment.name\",status:\"backfill\"},aliases:[\"sentry.segment.name\",\"transaction\"],changelog:[{version:\"0.6.0\",prs:[345],description:\"Deprecated sentry.transaction in favor of sentry.segment.name\"},{version:\"0.0.0\"}]},\"sentry.user.email\":{brief:\"User email address.\",type:\"string\",keys:[\"user.email\",\"sentry.user.email\"],applyScrubbing:{key:\"auto\"},isInOtel:!1,visibility:\"public\",deprecation:{replacement:\"user.email\",status:\"backfill\"},aliases:[\"user.email\"],changelog:[{version:\"0.10.0\",prs:[406]}],searchAlias:{name:\"user.email\"}},\"sentry.user.geo.city\":{brief:\"Human readable city name.\",type:\"string\",keys:[\"user.geo.city\",\"sentry.user.geo.city\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",deprecation:{replacement:\"user.geo.city\",status:\"backfill\"},aliases:[\"user.geo.city\"],changelog:[{version:\"0.10.0\",prs:[406]}],searchAlias:{name:\"user.geo.city\"}},\"sentry.user.geo.country_code\":{brief:\"Two-letter country code (ISO 3166-1 alpha-2).\",type:\"string\",keys:[\"user.geo.country_code\",\"sentry.user.geo.country_code\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",deprecation:{replacement:\"user.geo.country_code\",status:\"backfill\"},aliases:[\"user.geo.country_code\"],changelog:[{version:\"0.10.0\",prs:[406]}],searchAlias:{name:\"user.geo.country_code\"}},\"sentry.user.geo.region\":{brief:\"Human readable region name or code.\",type:\"string\",keys:[\"user.geo.region\",\"sentry.user.geo.region\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",deprecation:{replacement:\"user.geo.region\",status:\"backfill\"},aliases:[\"user.geo.region\"],changelog:[{version:\"0.10.0\",prs:[406]}],searchAlias:{name:\"user.geo.region\"}},\"sentry.user.geo.subdivision\":{brief:\"Human readable subdivision name.\",type:\"string\",keys:[\"user.geo.subdivision\",\"sentry.user.geo.subdivision\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",deprecation:{replacement:\"user.geo.subdivision\",status:\"backfill\"},aliases:[\"user.geo.subdivision\"],changelog:[{version:\"0.10.0\",prs:[406]}],searchAlias:{name:\"user.geo.subdivision\"}},\"sentry.user.id\":{brief:\"Unique identifier of the user.\",type:\"string\",keys:[\"user.id\",\"sentry.user.id\"],applyScrubbing:{key:\"auto\"},isInOtel:!1,visibility:\"public\",deprecation:{replacement:\"user.id\",status:\"backfill\"},aliases:[\"user.id\"],changelog:[{version:\"0.10.0\",prs:[406]}],searchAlias:{name:\"user.id\"}},\"sentry.user.ip\":{brief:\"The IP address of the user.\",type:\"string\",keys:[\"user.ip_address\",\"sentry.user.ip\",\"user.ip\"],applyScrubbing:{key:\"auto\"},isInOtel:!1,visibility:\"public\",deprecation:{replacement:\"user.ip_address\",status:\"backfill\"},aliases:[\"user.ip_address\"],changelog:[{version:\"0.10.0\",prs:[406]}],searchAlias:{name:\"user.ip\"}},\"sentry.user.username\":{brief:\"Short name or login/username of the user.\",type:\"string\",keys:[\"user.name\",\"sentry.user.username\",\"user.username\"],applyScrubbing:{key:\"auto\"},isInOtel:!1,visibility:\"public\",deprecation:{replacement:\"user.name\",status:\"backfill\"},aliases:[\"user.name\"],changelog:[{version:\"0.10.0\",prs:[406]}],searchAlias:{name:\"user.username\"}},\"server.address\":{brief:\"Preferably the server domain name if available without reverse DNS lookup, or an IP address or Unix domain socket name. For compatibility, it may contain what the hostname command returns on UNIX systems, the fully qualified hostname, or another name specified by the user.\",type:\"string\",keys:[\"server.address\",\"address\",\"http.server_name\",\"net.host.name\",\"server_name\"],applyScrubbing:{key:\"manual\"},isInOtel:!0,visibility:\"public\",example:\"example.com\",aliases:[\"address\",\"http.server_name\",\"net.host.name\",\"http.host\",\"server_name\",\"net.peer.name\"],changelog:[{version:\"0.24.0\",prs:[645,647],description:\"Broaden brief to allow hostnames\"},{version:\"0.21.0\",prs:[588,602],description:\"Added net.peer.name as an alias\"},{version:\"0.19.0\",prs:[534],description:\"Added address as an alias\"},{version:\"0.1.0\",prs:[108,127]},{version:\"0.0.0\"}]},\"server.ext.type\":{brief:\"The request lifecycle extension point where the Hapi extension function runs.\",type:\"string\",keys:[\"hapi.ext.type\",\"server.ext.type\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:\"onRequest\",examples:[\"onRequest\",\"onPreResponse\"],deprecation:{replacement:\"hapi.ext.type\",reason:\"Name from the OpenTelemetry Hapi instrumentation. The `server` namespace describes the network endpoint of the server, so the attribute moves to the `hapi` namespace.\",status:\"backfill\"},aliases:[\"hapi.ext.type\"],changelog:[{version:\"0.28.0\",prs:[741],description:\"Added server.ext.type attribute, deprecated in favor of hapi.ext.type\"}]},server_name:{brief:\"The name of the device. On servers and desktops, this is typically the hostname.\",type:\"string\",keys:[\"server.address\",\"address\",\"http.server_name\",\"net.host.name\",\"server_name\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:\"example.com\",deprecation:{replacement:\"server.address\",reason:\"This attribute is being deprecated in favor of server.address.\",status:\"backfill\"},aliases:[\"address\",\"server.address\",\"http.server_name\",\"net.host.name\",\"http.host\",\"net.peer.name\"],changelog:[{version:\"0.24.0\",prs:[647],description:\"Alias the server.address alias group\"},{version:\"0.21.0\",prs:[588,602],description:\"Alias device.name instead of the server.address alias group\"},{version:\"0.19.0\",prs:[534],description:\"Added address as an alias\"},{version:\"0.16.0\",prs:[477],description:\"Added server_name attribute, deprecated in favor of server.address\"}]},\"server.port\":{brief:\"Server port number.\",type:\"integer\",keys:[\"server.port\",\"net.host.port\",\"port\"],applyScrubbing:{key:\"manual\"},isInOtel:!0,visibility:\"public\",example:1337,aliases:[\"net.host.port\",\"port\"],changelog:[{version:\"0.19.0\",prs:[532],description:\"Added port as an alias\"},{version:\"0.4.0\",prs:[228]},{version:\"0.0.0\"}]},\"service.name\":{brief:\"Logical name of the service.\",type:\"string\",keys:[\"service.name\"],applyScrubbing:{key:\"manual\"},isInOtel:!0,visibility:\"public\",example:\"omegastar\",changelog:[{version:\"0.1.0\",prs:[127]},{version:\"0.0.0\"}]},\"service.version\":{brief:\"The version string of the service API or implementation. The format is not defined by these conventions.\",type:\"string\",keys:[\"service.version\",\"sentry.release\",\"release\"],applyScrubbing:{key:\"manual\"},isInOtel:!0,visibility:\"public\",example:\"5.0.0\",aliases:[\"sentry.release\"],changelog:[{version:\"0.1.0\",prs:[127]},{version:\"0.0.0\"}]},\"session.id\":{brief:\"A unique id identifying the active session at the time of setting this attribute\",type:\"string\",keys:[\"session.id\"],applyScrubbing:{key:\"manual\"},isInOtel:!0,visibility:\"public\",example:\"00112233-4455-6677-8899-aabbccddeeff\",changelog:[{version:\"0.11.0\",prs:[412],description:\"Added session.id attribute\"}]},stall_percentage:{brief:\"The fraction of time the app was stalled. Only applies to React Native. This is computed by Relay.\",type:\"double\",keys:[\"app.vitals.stall.percentage\",\"stall_percentage\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",deprecation:{replacement:\"app.vitals.stall.percentage\",reason:\"Replaced by app.vitals.stall.percentage to align with the app.vitals.* namespace for mobile performance attributes\",status:\"backfill\"},aliases:[\"app.vitals.stall.percentage\"],changelog:[{version:\"0.19.0\",prs:[493],description:\"Deprecated in favor of app.vitals.stall.percentage\"},{version:\"0.7.0\",prs:[362],description:\"Added stall_percentage attribute\"}]},stall_total_time:{brief:\"The combined duration of all stalls in milliseconds. Only applies to React Native. This is computed by Relay.\",type:\"double\",keys:[\"app.vitals.stall.duration\",\"stall_total_time\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",deprecation:{replacement:\"app.vitals.stall.duration\",reason:\"Replaced by app.vitals.stall.duration to align with the app.vitals.* namespace for mobile performance attributes\",status:\"backfill\"},aliases:[\"app.vitals.stall.duration\"],changelog:[{version:\"0.19.0\",prs:[493],description:\"Deprecated in favor of app.vitals.stall.duration\"},{version:\"0.7.0\",prs:[362],description:\"Added stall_total_time attribute\"}]},\"starlette.middleware_name\":{brief:\"The name of the Starlette middleware.\",type:\"string\",keys:[\"middleware.name\",\"django.middleware_name\",\"litestar.middleware_name\",\"starlette.middleware_name\",\"starlite.middleware_name\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:\"AuthenticationMiddleware\",deprecation:{replacement:\"middleware.name\",reason:\"This attribute is being deprecated in favor of middleware.name, which is the framework-agnostic replacement.\",status:\"backfill\"},aliases:[\"middleware.name\"],changelog:[{version:\"0.19.0\",prs:[485],description:\"Added starlette.middleware_name attribute, deprecated in favor of middleware.name\"}]},\"starlite.middleware_name\":{brief:\"The name of the Starlite middleware.\",type:\"string\",keys:[\"middleware.name\",\"django.middleware_name\",\"litestar.middleware_name\",\"starlette.middleware_name\",\"starlite.middleware_name\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:\"AuthenticationMiddleware\",examples:[\"AuthenticationMiddleware\"],deprecation:{replacement:\"middleware.name\",reason:\"This attribute is being deprecated in favor of middleware.name, which is the framework-agnostic replacement.\",status:\"backfill\"},aliases:[\"middleware.name\"],changelog:[{version:\"0.19.0\",prs:[519],description:\"Added starlite.middleware_name attribute\"}]},\"state.type\":{brief:\"The type of state management library\",type:\"string\",keys:[\"state.type\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:\"redux\",changelog:[{version:\"0.7.0\",prs:[365],description:\"Added state.type attribute\"}]},\"subprocess.pid\":{brief:\"The process ID of a subprocess.\",type:\"integer\",keys:[\"process.pid\",\"subprocess.pid\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:12345,deprecation:{replacement:\"process.pid\",reason:\"This attribute is being deprecated in favor of process.pid, which is the OTel-aligned replacement.\",status:\"backfill\"},aliases:[\"process.pid\"],changelog:[{version:\"0.19.0\",prs:[487],description:\"Added subprocess.pid attribute, deprecated in favor of process.pid\"}]},\"sveltekit.load.environment\":{brief:\"The runtime environment in which the SvelteKit load function was executed. Known values are `'server'` and `'client'`.\",type:\"string\",keys:[\"sveltekit.load.environment\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:\"server\",examples:[\"server\",\"client\"],changelog:[{version:\"0.22.0\",prs:[611],description:\"Added sveltekit.load.environment attribute\"}],additionalContext:[\"Added by the SvelteKit framework itself. The Sentry SDK only forwards the attribute to Sentry.\"]},\"sveltekit.load.node_id\":{brief:\"The path to the SvelteKit load function.\",type:\"string\",keys:[\"sveltekit.load.node_id\",\"code.file.path\",\"code.filepath\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:\"src/routes/users/:id/+page.server.ts\",examples:[\"src/routes/users/:id/+page.server.ts\"],aliases:[\"code.file.path\",\"code.filepath\"],changelog:[{version:\"0.22.0\",prs:[611],description:\"Added sveltekit.load.node_id attribute\"}],additionalContext:[\"Added by the SvelteKit framework itself. The Sentry SDK only forwards the attribute to Sentry.\"]},\"sveltekit.load.node_type\":{brief:\"The kind of SvelteKit load function that was executed, distinguishing page from layout and universal from server load functions.\",type:\"string\",keys:[\"sveltekit.load.node_type\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:\"+page.server\",examples:[\"+page.server\",\"+layout\",\"+layout.server\"],changelog:[{version:\"0.22.0\",prs:[611],description:\"Added sveltekit.load.node_type attribute\"}],additionalContext:[\"Added by the SvelteKit framework itself. The Sentry SDK only forwards the attribute to Sentry.\"]},\"sveltekit.tracing.original_name\":{brief:\"The original span name as emitted by SvelteKit.\",type:\"string\",keys:[\"sveltekit.tracing.original_name\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:\"sveltekit.handle.root\",examples:[\"sveltekit.handle.root\"],changelog:[{version:\"0.22.0\",prs:[611],description:\"Added sveltekit.tracing.original_name attribute\"}],additionalContext:[\"The Sentry SDK renames SvelteKit-emitted spans to match Sentry's span name semantics, and preserves the name SvelteKit originally set in this attribute.\"]},\"thread.id\":{brief:\"Current \\u201Cmanaged\\u201D thread ID.\",type:\"integer\",keys:[\"thread.id\",\"sentry.thread.id\"],applyScrubbing:{key:\"manual\"},isInOtel:!0,visibility:\"public\",example:56,changelog:[{version:\"0.0.0\"}]},\"thread.name\":{brief:\"Current thread name.\",type:\"string\",keys:[\"thread.name\"],applyScrubbing:{key:\"manual\"},isInOtel:!0,visibility:\"public\",example:\"main\",changelog:[{version:\"0.1.0\",prs:[127]},{version:\"0.0.0\"}]},\"timber.tag\":{brief:\"The log tag provided by the timber logging framework.\",type:\"string\",keys:[\"timber.tag\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:\"MyTag\",changelog:[{version:\"0.3.0\",prs:[183]}]},time_to_full_display:{brief:\"The duration of time to full display in milliseconds\",type:\"double\",keys:[\"app.vitals.ttfd.value\",\"time_to_full_display\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:1234.56,deprecation:{replacement:\"app.vitals.ttfd.value\",reason:\"Replaced by app.vitals.ttfd.value to align with the app.vitals.* namespace for mobile performance attributes\",status:\"backfill\"},aliases:[\"app.vitals.ttfd.value\"],changelog:[{version:\"0.5.0\",prs:[313],description:\"Added and deprecated in favor of app.vitals.ttfd.value\"}]},time_to_initial_display:{brief:\"The duration of time to initial display in milliseconds\",type:\"double\",keys:[\"app.vitals.ttid.value\",\"time_to_initial_display\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:1234.56,deprecation:{replacement:\"app.vitals.ttid.value\",reason:\"Replaced by app.vitals.ttid.value to align with the app.vitals.* namespace for mobile performance attributes\",status:\"backfill\"},aliases:[\"app.vitals.ttid.value\"],changelog:[{version:\"0.5.0\",prs:[313],description:\"Added and deprecated in favor of app.vitals.ttid.value\"}]},transaction:{brief:\"The sentry transaction (segment name).\",type:\"string\",keys:[\"sentry.segment.name\",\"transaction\",\"sentry.transaction\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:\"GET /\",deprecation:{replacement:\"sentry.segment.name\",status:\"normalize\"},aliases:[\"sentry.segment.name\",\"sentry.transaction\"],changelog:[{version:\"0.19.0\",prs:[497],description:\"Change deprecation from backfill to normalize\"},{version:\"0.6.0\",prs:[345],description:\"Updated transaction deprecation replacement to sentry.segment.name\"},{version:\"0.1.0\",prs:[61,127]},{version:\"0.0.0\"}]},\"trpc.procedure_path\":{brief:\"The path of the tRPC procedure being called\",type:\"string\",keys:[\"trpc.procedure_path\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:\"user.getById\",changelog:[{version:\"0.7.0\",prs:[370],description:\"Added trpc.procedure_path attribute\"}]},\"trpc.procedure_type\":{brief:\"The type of the tRPC procedure\",type:\"string\",keys:[\"trpc.procedure_type\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:\"query\",changelog:[{version:\"0.7.0\",prs:[370],description:\"Added trpc.procedure_type attribute\"}]},ttfb:{brief:\"The value of the recorded Time To First Byte (TTFB) web vital in milliseconds\",type:\"double\",keys:[\"browser.web_vital.ttfb.value\",\"ttfb\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:194,deprecation:{replacement:\"browser.web_vital.ttfb.value\",reason:\"This attribute is being deprecated in favor of browser.web_vital.ttfb.value\",status:\"backfill\"},aliases:[\"browser.web_vital.ttfb.value\"],changelog:[{version:\"0.5.0\",prs:[235]}]},\"ttfb.requestTime\":{brief:\"The time it takes for the server to process the initial request and send the first byte of a response to the user's browser\",type:\"double\",keys:[\"browser.web_vital.ttfb.request_time\",\"ttfb.requestTime\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:1554.5814,deprecation:{replacement:\"browser.web_vital.ttfb.request_time\",reason:\"This attribute is being deprecated in favor of browser.web_vital.ttfb.request_time\",status:\"backfill\"},aliases:[\"browser.web_vital.ttfb.request_time\"],changelog:[{version:\"0.5.0\",prs:[235]}]},\"turbo_modules.total_call_count\":{brief:\"The number of native module calls in the flushed call aggregate. Only applies to React Native.\",type:\"integer\",keys:[\"react_native.module.call.count\",\"turbo_module.total_call_count\",\"turbo_modules.total_call_count\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:42,examples:[42],deprecation:{replacement:\"react_native.module.call.count\",reason:\"Replaced by the `react_native.module.*` namespace; the SDK emitted the same values under both a singular `turbo_module.*` and a plural `turbo_modules.*` prefix\",status:\"backfill\"},aliases:[\"react_native.module.call.count\",\"turbo_module.total_call_count\"],changelog:[{version:\"0.24.0\",prs:[564],description:\"Added turbo_modules.total_call_count and deprecated it in favor of react_native.module.call.count\"}]},\"turbo_modules.total_duration_ms\":{brief:\"The combined duration of all native module calls in the flushed call aggregate, in milliseconds. Only applies to React Native.\",type:\"double\",keys:[\"react_native.module.duration.total\",\"turbo_module.total_duration_ms\",\"turbo_modules.total_duration_ms\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:128.45,examples:[128.45],deprecation:{replacement:\"react_native.module.duration.total\",reason:\"Replaced by the `react_native.module.*` namespace; the SDK emitted the same values under both a singular `turbo_module.*` and a plural `turbo_modules.*` prefix\",status:\"backfill\"},aliases:[\"react_native.module.duration.total\",\"turbo_module.total_duration_ms\"],changelog:[{version:\"0.24.0\",prs:[564],description:\"Added turbo_modules.total_duration_ms and deprecated it in favor of react_native.module.duration.total\"}]},\"turbo_modules.total_error_count\":{brief:\"The number of failed native module calls in the flushed call aggregate. Only applies to React Native.\",type:\"integer\",keys:[\"react_native.module.error.count\",\"turbo_module.total_error_count\",\"turbo_modules.total_error_count\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:2,examples:[2],deprecation:{replacement:\"react_native.module.error.count\",reason:\"Replaced by the `react_native.module.*` namespace; the SDK emitted the same values under both a singular `turbo_module.*` and a plural `turbo_modules.*` prefix\",status:\"backfill\"},aliases:[\"react_native.module.error.count\",\"turbo_module.total_error_count\"],changelog:[{version:\"0.24.0\",prs:[564],description:\"Added turbo_modules.total_error_count and deprecated it in favor of react_native.module.error.count\"}]},\"turbo_modules.unique_methods\":{brief:\"The number of distinct native module and method pairs in the flushed call aggregate. Only applies to React Native.\",type:\"integer\",keys:[\"react_native.module.call.distinct_count\",\"turbo_module.unique_methods\",\"turbo_modules.unique_methods\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:7,examples:[7],deprecation:{replacement:\"react_native.module.call.distinct_count\",reason:\"Replaced by the `react_native.module.*` namespace; the SDK emitted the same values under both a singular `turbo_module.*` and a plural `turbo_modules.*` prefix\",status:\"backfill\"},aliases:[\"react_native.module.call.distinct_count\",\"turbo_module.unique_methods\"],changelog:[{version:\"0.24.0\",prs:[564],description:\"Added turbo_modules.unique_methods and deprecated it in favor of react_native.module.call.distinct_count\"}]},\"turbo_module.arch\":{brief:\"The React Native architecture the call was observed on. `new` for a TurboModule resolved through `TurboModuleRegistry`, `legacy` for a module reached over the Old Architecture bridge. Only applies to React Native.\",type:\"string\",keys:[\"react_native.architecture\",\"turbo_module.arch\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:\"new\",examples:[\"new\",\"legacy\"],deprecation:{replacement:\"react_native.architecture\",reason:\"Replaced by the `react_native.*` namespace, which also covers native module calls made over the Old Architecture bridge, which are not TurboModules\",status:\"backfill\"},aliases:[\"react_native.architecture\"],changelog:[{version:\"0.24.0\",prs:[564],description:\"Added turbo_module.arch and deprecated it in favor of react_native.architecture\"}]},\"turbo_module.method\":{brief:\"The name of the native module method that was called. Only applies to React Native.\",type:\"string\",keys:[\"react_native.module.method\",\"turbo_module.method\"],applyScrubbing:{key:\"manual\",reason:\"Native module and method names are app-defined identifiers, but scrubbing them would make the call attribution unusable\"},isInOtel:!1,visibility:\"public\",example:\"getUniqueId\",examples:[\"getUniqueId\"],deprecation:{replacement:\"react_native.module.method\",reason:\"Replaced by the `react_native.*` namespace, which also covers native module calls made over the Old Architecture bridge, which are not TurboModules\",status:\"backfill\"},aliases:[\"react_native.module.method\"],changelog:[{version:\"0.24.0\",prs:[564],description:\"Added turbo_module.method and deprecated it in favor of react_native.module.method\"}]},\"turbo_module.name\":{brief:\"The name of the native module the call was dispatched to. On the New Architecture this is the TurboModule name, on the Old Architecture the `NativeModules` key. Only applies to React Native.\",type:\"string\",keys:[\"react_native.module.name\",\"turbo_module.name\"],applyScrubbing:{key:\"manual\",reason:\"Native module and method names are app-defined identifiers, but scrubbing them would make the call attribution unusable\"},isInOtel:!1,visibility:\"public\",example:\"RNDeviceInfo\",examples:[\"RNDeviceInfo\"],deprecation:{replacement:\"react_native.module.name\",reason:\"Replaced by the `react_native.*` namespace, which also covers native module calls made over the Old Architecture bridge, which are not TurboModules\",status:\"backfill\"},aliases:[\"react_native.module.name\"],changelog:[{version:\"0.24.0\",prs:[564],description:\"Added turbo_module.name and deprecated it in favor of react_native.module.name\"}]},\"turbo_module.top_module\":{brief:\"The native module and method that accounted for the most total duration during the lifetime of the span. Only applies to React Native.\",type:\"string\",keys:[\"react_native.module.top.name\",\"turbo_module.top_module\"],applyScrubbing:{key:\"manual\",reason:\"Native module and method names are app-defined identifiers, but scrubbing them would make the call attribution unusable\"},isInOtel:!1,visibility:\"public\",example:\"RNDeviceInfo.getUniqueId\",examples:[\"RNDeviceInfo.getUniqueId\"],deprecation:{replacement:\"react_native.module.top.name\",reason:\"Replaced by the `react_native.module.*` namespace, which also covers native module calls made over the Old Architecture bridge, and which drops the `total_` prefix and `_ms` suffix in favor of dot-separated logical grouping\",status:\"backfill\"},aliases:[\"react_native.module.top.name\"],changelog:[{version:\"0.24.0\",prs:[564],description:\"Added turbo_module.top_module and deprecated it in favor of react_native.module.top.name\"}]},\"turbo_module.top_module_duration_ms\":{brief:\"The total duration attributed to the top native module method, in milliseconds. Only applies to React Native.\",type:\"double\",keys:[\"react_native.module.top.duration\",\"turbo_module.top_module_duration_ms\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:87.25,examples:[87.25],deprecation:{replacement:\"react_native.module.top.duration\",reason:\"Replaced by the `react_native.module.*` namespace, which also covers native module calls made over the Old Architecture bridge, and which drops the `total_` prefix and `_ms` suffix in favor of dot-separated logical grouping\",status:\"backfill\"},aliases:[\"react_native.module.top.duration\"],changelog:[{version:\"0.24.0\",prs:[564],description:\"Added turbo_module.top_module_duration_ms and deprecated it in favor of react_native.module.top.duration\"}]},\"turbo_module.total_call_count\":{brief:\"The number of native module calls observed during the lifetime of the span. Only applies to React Native.\",type:\"integer\",keys:[\"react_native.module.call.count\",\"turbo_module.total_call_count\",\"turbo_modules.total_call_count\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:42,examples:[42],deprecation:{replacement:\"react_native.module.call.count\",reason:\"Replaced by the `react_native.module.*` namespace, which also covers native module calls made over the Old Architecture bridge, and which drops the `total_` prefix and `_ms` suffix in favor of dot-separated logical grouping\",status:\"backfill\"},aliases:[\"react_native.module.call.count\",\"turbo_modules.total_call_count\"],changelog:[{version:\"0.24.0\",prs:[564],description:\"Added turbo_module.total_call_count and deprecated it in favor of react_native.module.call.count\"}]},\"turbo_module.total_duration_ms\":{brief:\"The combined duration of all native module calls observed during the lifetime of the span, in milliseconds. Only applies to React Native.\",type:\"double\",keys:[\"react_native.module.duration.total\",\"turbo_module.total_duration_ms\",\"turbo_modules.total_duration_ms\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:128.45,examples:[128.45],deprecation:{replacement:\"react_native.module.duration.total\",reason:\"Replaced by the `react_native.module.*` namespace, which also covers native module calls made over the Old Architecture bridge, and which drops the `total_` prefix and `_ms` suffix in favor of dot-separated logical grouping\",status:\"backfill\"},aliases:[\"react_native.module.duration.total\",\"turbo_modules.total_duration_ms\"],changelog:[{version:\"0.24.0\",prs:[564],description:\"Added turbo_module.total_duration_ms and deprecated it in favor of react_native.module.duration.total\"}]},\"turbo_module.total_error_count\":{brief:\"The number of native module calls that failed during the lifetime of the span. Only applies to React Native.\",type:\"integer\",keys:[\"react_native.module.error.count\",\"turbo_module.total_error_count\",\"turbo_modules.total_error_count\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:2,examples:[2],deprecation:{replacement:\"react_native.module.error.count\",reason:\"Replaced by the `react_native.module.*` namespace, which also covers native module calls made over the Old Architecture bridge, and which drops the `total_` prefix and `_ms` suffix in favor of dot-separated logical grouping\",status:\"backfill\"},aliases:[\"react_native.module.error.count\",\"turbo_modules.total_error_count\"],changelog:[{version:\"0.24.0\",prs:[564],description:\"Added turbo_module.total_error_count and deprecated it in favor of react_native.module.error.count\"}]},\"turbo_module.unique_methods\":{brief:\"The number of distinct native module and method pairs called during the lifetime of the span. Only applies to React Native.\",type:\"integer\",keys:[\"react_native.module.call.distinct_count\",\"turbo_module.unique_methods\",\"turbo_modules.unique_methods\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:7,examples:[7],deprecation:{replacement:\"react_native.module.call.distinct_count\",reason:\"Replaced by the `react_native.module.*` namespace, which also covers native module calls made over the Old Architecture bridge, and which drops the `total_` prefix and `_ms` suffix in favor of dot-separated logical grouping\",status:\"backfill\"},aliases:[\"react_native.module.call.distinct_count\",\"turbo_modules.unique_methods\"],changelog:[{version:\"0.24.0\",prs:[564],description:\"Added turbo_module.unique_methods and deprecated it in favor of react_native.module.call.distinct_count\"}]},type:{brief:\"More granular type of the operation happening.\",type:\"string\",keys:[\"type\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:\"fetch\",changelog:[{version:\"0.0.0\"}]},\"ui.component_name\":{brief:\"The name of the associated component.\",type:\"string\",keys:[\"ui.component_name\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:\"HomeButton\",changelog:[{version:\"0.1.0\",prs:[127]},{version:\"0.0.0\"}]},\"ui.contributes_to_ttfd\":{brief:\"Whether the span execution contributed to the TTFD (time to fully drawn) metric.\",type:\"boolean\",keys:[\"ui.contributes_to_ttfd\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:!0,changelog:[{version:\"0.0.0\"}]},\"ui.contributes_to_ttid\":{brief:\"Whether the span execution contributed to the TTID (time to initial display) metric.\",type:\"boolean\",keys:[\"ui.contributes_to_ttid\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:!0,changelog:[{version:\"0.0.0\"}]},\"ui.element.height\":{brief:\"The height of the UI element (for Html in pixels)\",type:\"integer\",keys:[\"ui.element.height\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:256,changelog:[{version:\"0.5.0\",prs:[284],description:\"Added ui.element.height attribute\"}]},\"ui.element.id\":{brief:\"The id of the UI element\",type:\"string\",keys:[\"ui.element.id\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:\"btn-login\",changelog:[{version:\"0.5.0\",prs:[284],description:\"Added ui.element.id attribute\"}]},\"ui.element.identifier\":{brief:\"The identifier used to measure the UI element timing\",type:\"string\",keys:[\"ui.element.identifier\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:\"heroImage\",changelog:[{version:\"0.5.0\",prs:[284],description:\"Added ui.element.identifier attribute\"}]},\"ui.element.load_time\":{brief:\"The loading time of a UI element (from time origin to finished loading)\",type:\"double\",keys:[\"ui.element.load_time\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:998.2234,changelog:[{version:\"0.5.0\",prs:[284],description:\"Added ui.element.load_time attribute\"}]},\"ui.element.paint_type\":{brief:\"The type of element paint. Can either be 'image-paint' or 'text-paint'\",type:\"string\",keys:[\"ui.element.paint_type\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:\"image-paint\",changelog:[{version:\"0.5.0\",prs:[284],description:\"Added ui.element.paint_type attribute\"}]},\"ui.element.render_time\":{brief:\"The rendering time of the UI element (from time origin to finished rendering)\",type:\"double\",keys:[\"ui.element.render_time\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:1023.1124,changelog:[{version:\"0.5.0\",prs:[284],description:\"Added ui.element.render_time attribute\"}]},\"ui.element.type\":{brief:\"type of the UI element\",type:\"string\",keys:[\"ui.element.type\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:\"img\",changelog:[{version:\"0.5.0\",prs:[284],description:\"Added ui.element.type attribute\"}]},\"ui.element.url\":{brief:\"The URL of the UI element (e.g. an img src)\",type:\"string\",keys:[\"ui.element.url\"],applyScrubbing:{key:\"auto\"},isInOtel:!1,visibility:\"public\",example:\"https://assets.myapp.com/hero.png\",changelog:[{version:\"0.5.0\",prs:[284],description:\"Added ui.element.url attribute\"}]},\"ui.element.width\":{brief:\"The width of the UI element (for HTML in pixels)\",type:\"integer\",keys:[\"ui.element.width\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:512,changelog:[{version:\"0.5.0\",prs:[284],description:\"Added ui.element.width attribute\"}]},url:{brief:\"The URL of the resource that was fetched.\",type:\"string\",keys:[\"url.full\",\"aws.request.url\",\"http.url\",\"messaging.url\",\"url\"],applyScrubbing:{key:\"auto\"},isInOtel:!1,visibility:\"public\",example:\"https://example.com/test?foo=bar#buzz\",deprecation:{replacement:\"url.full\",status:\"backfill\"},aliases:[\"url.full\",\"http.url\",\"aws.request.url\",\"messaging.url\"],changelog:[{version:\"0.21.0\",prs:[581],description:\"Added messaging.url as an alias\"},{version:\"0.1.0\",prs:[61]},{version:\"0.0.0\"}]},\"url.domain\":{brief:\"Server domain name if available without reverse DNS lookup; otherwise, IP address or Unix domain socket name.\",type:\"string\",keys:[\"url.domain\"],applyScrubbing:{key:\"manual\"},isInOtel:!0,visibility:\"public\",example:\"example.com\",changelog:[{version:\"0.1.0\",prs:[127]},{version:\"0.0.0\"}]},\"url.fragment\":{brief:\"The fragments present in the URI. Note that this does not contain the leading # character, while the `http.fragment` attribute does.\",type:\"string\",keys:[\"url.fragment\"],applyScrubbing:{key:\"auto\"},isInOtel:!0,visibility:\"public\",example:\"details\",changelog:[{version:\"0.0.0\"}]},\"url.full\":{brief:\"The URL of the resource that was fetched.\",type:\"string\",keys:[\"url.full\",\"aws.request.url\",\"http.url\",\"messaging.url\",\"url\"],applyScrubbing:{key:\"auto\"},isInOtel:!0,visibility:\"public\",example:\"https://example.com/test?foo=bar#buzz\",aliases:[\"http.url\",\"url\",\"aws.request.url\",\"messaging.url\"],changelog:[{version:\"0.21.0\",prs:[581],description:\"Added messaging.url as an alias\"},{version:\"0.19.0\",prs:[488],description:\"Added aws.request.url as an alias\"},{version:\"0.1.0\",prs:[108]},{version:\"0.0.0\"}]},\"url.path\":{brief:\"The URI path component.\",type:\"string\",keys:[\"url.path\"],applyScrubbing:{key:\"auto\"},isInOtel:!0,visibility:\"public\",example:\"/foo\",changelog:[{version:\"0.0.0\"}]},\"url.path.parameter.<key>\":{brief:\"Decoded parameters extracted from a URL path. Usually added by client-side routing frameworks like vue-router.\",type:\"string\",keys:[\"url.path.parameter.<key>\",\"params.<key>\",\"url.path.params.<key>\"],applyScrubbing:{key:\"auto\"},isInOtel:!1,visibility:\"public\",hasDynamicSuffix:!0,example:\"url.path.parameter.id='123'\",aliases:[\"params.<key>\",\"url.path.params.<key>\"],changelog:[{version:\"0.21.0\",prs:[586],description:\"Added url.path.params.<key> as an alias\"},{version:\"0.1.0\",prs:[103]}]},\"url.path.params.<key>\":{brief:\"Decoded parameters extracted from a URL path. Usually added by client-side routing frameworks like vue-router.\",type:\"string\",keys:[\"url.path.parameter.<key>\",\"params.<key>\",\"url.path.params.<key>\"],applyScrubbing:{key:\"auto\"},isInOtel:!1,visibility:\"public\",hasDynamicSuffix:!0,example:\"url.path.params.id='123'\",examples:[\"url.path.params.id='123'\"],deprecation:{replacement:\"url.path.parameter.<key>\",reason:\"This attribute is being deprecated in favor of url.path.parameter.<key>.\",status:\"backfill\"},aliases:[\"url.path.parameter.<key>\",\"params.<key>\"],changelog:[{version:\"0.21.0\",prs:[586],description:\"Added url.path.params.<key> attribute\"}]},\"url.port\":{brief:\"Server port number.\",type:\"integer\",keys:[\"url.port\"],applyScrubbing:{key:\"manual\"},isInOtel:!0,visibility:\"public\",example:1337,changelog:[{version:\"0.4.0\",prs:[228]},{version:\"0.0.0\"}]},\"url.query\":{brief:\"The query string present in the URL. Note that this does not contain the leading ? character, while the `http.query` attribute does.\",type:\"string\",keys:[\"url.query\"],applyScrubbing:{key:\"auto\",reason:\"Query string values can contain sensitive information. Clients should attempt to scrub parameters that might contain sensitive information.\"},isInOtel:!0,visibility:\"public\",example:\"foo=bar&bar=baz\",changelog:[{version:\"0.0.0\"}]},\"url.same_origin\":{brief:\"Indicates that a URL has the same origin as the current page's origin in the browser.\",type:\"boolean\",keys:[\"http.request.same_origin\",\"url.same_origin\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:!0,deprecation:{replacement:\"http.request.same_origin\",reason:\"This attribute is being deprecated in favor of http.request.same_origin.\",status:\"backfill\"},aliases:[\"http.request.same_origin\"],changelog:[{version:\"0.16.0\",prs:[456],description:\"Added url.same_origin attribute, deprecated in favor of http.request.same_origin\"}]},\"url.scheme\":{brief:\"The URI scheme component identifying the used protocol.\",type:\"string\",keys:[\"url.scheme\",\"http.scheme\"],applyScrubbing:{key:\"manual\"},isInOtel:!0,visibility:\"public\",example:\"https\",aliases:[\"http.scheme\"],changelog:[{version:\"0.1.0\",prs:[127]},{version:\"0.0.0\"}]},\"url.template\":{brief:\"The low-cardinality template of an absolute URL path reference.\",type:\"string\",keys:[\"url.template\"],applyScrubbing:{key:\"manual\"},isInOtel:!0,visibility:\"public\",example:\"/users/{id}\",examples:[\"/users/{id}\",\"/users/:id\",\"/about\"],changelog:[{version:\"0.19.0\",prs:[505,521],description:\"Added multiple examples, removed alias to `http.route`, added additional context\"},{version:\"0.1.0\",prs:[127]},{version:\"0.0.0\"}],additionalContext:[\"This attribute should primarily be set by client-side routing instrumentation, or `http.client` spans (if applicable).\",\"Use `http.route` for server-side instrumentation that captures the framework route of an incoming request.\"]},\"user_agent.original\":{brief:\"Value of the HTTP User-Agent header sent by the client.\",type:\"string\",keys:[\"user_agent.original\",\"http.user_agent\"],applyScrubbing:{key:\"manual\"},isInOtel:!0,visibility:\"public\",example:\"Mozilla/5.0 (iPhone; CPU iPhone OS 14_7_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.1.2 Mobile/15E148 Safari/604.1\",aliases:[\"http.user_agent\"],changelog:[{version:\"0.1.0\",prs:[127]},{version:\"0.0.0\"}]},\"user.email\":{brief:\"User email address.\",type:\"string\",keys:[\"user.email\",\"sentry.user.email\"],applyScrubbing:{key:\"auto\"},isInOtel:!0,visibility:\"public\",example:\"test@example.com\",aliases:[\"sentry.user.email\"],changelog:[{version:\"0.0.0\"}]},\"user.full_name\":{brief:\"User's full name.\",type:\"string\",keys:[\"user.full_name\"],applyScrubbing:{key:\"auto\"},isInOtel:!0,visibility:\"public\",example:\"John Smith\",changelog:[{version:\"0.0.0\"}]},\"user.geo.city\":{brief:\"Human readable city name.\",type:\"string\",keys:[\"user.geo.city\",\"sentry.user.geo.city\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:\"Toronto\",aliases:[\"sentry.user.geo.city\"],changelog:[{version:\"0.0.0\"}]},\"user.geo.country_code\":{brief:\"Two-letter country code (ISO 3166-1 alpha-2).\",type:\"string\",keys:[\"user.geo.country_code\",\"sentry.user.geo.country_code\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:\"CA\",aliases:[\"sentry.user.geo.country_code\"],changelog:[{version:\"0.0.0\"}]},\"user.geo.region\":{brief:\"Human readable region name or code.\",type:\"string\",keys:[\"user.geo.region\",\"sentry.user.geo.region\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:\"Canada\",aliases:[\"sentry.user.geo.region\"],changelog:[{version:\"0.0.0\"}]},\"user.geo.subdivision\":{brief:\"Human readable subdivision name.\",type:\"string\",keys:[\"user.geo.subdivision\",\"sentry.user.geo.subdivision\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:\"Ontario\",aliases:[\"sentry.user.geo.subdivision\"],changelog:[{version:\"0.0.0\"}]},\"user.hash\":{brief:\"Unique user hash to correlate information for a user in anonymized form.\",type:\"string\",keys:[\"user.hash\"],applyScrubbing:{key:\"auto\"},isInOtel:!0,visibility:\"public\",example:\"8ae4c2993e0f4f3b8b2d1b1f3b5e8f4d\",changelog:[{version:\"0.0.0\"}]},\"user.id\":{brief:\"Unique identifier of the user.\",type:\"string\",keys:[\"user.id\",\"sentry.user.id\"],applyScrubbing:{key:\"auto\"},isInOtel:!0,visibility:\"public\",example:\"S-1-5-21-202424912787-2692429404-2351956786-1000\",aliases:[\"sentry.user.id\"],changelog:[{version:\"0.0.0\"}]},\"user.ip_address\":{brief:\"The IP address of the user.\",type:\"string\",keys:[\"user.ip_address\",\"sentry.user.ip\",\"user.ip\"],applyScrubbing:{key:\"auto\"},isInOtel:!1,visibility:\"public\",example:\"192.168.1.1\",aliases:[\"sentry.user.ip\"],changelog:[{version:\"0.1.0\",prs:[75]}]},\"user.name\":{brief:\"Short name or login/username of the user.\",type:\"string\",keys:[\"user.name\",\"sentry.user.username\",\"user.username\"],applyScrubbing:{key:\"auto\"},isInOtel:!0,visibility:\"public\",example:\"j.smith\",aliases:[\"sentry.user.username\"],changelog:[{version:\"0.0.0\"}]},\"user.roles\":{brief:\"Array of user roles at the time of the event.\",type:\"string[]\",keys:[\"user.roles\"],applyScrubbing:{key:\"auto\"},isInOtel:!0,visibility:\"public\",example:[\"admin\",\"editor\"],changelog:[{version:\"0.0.0\"}]},\"vercel.ai.telemetry.metadata.<key>\":{brief:\"Metadata passed to a Vercel AI SDK call through `experimental_telemetry.metadata`, with <key> being the metadata key name.\",type:\"string\",keys:[\"vercel.ai.telemetry.metadata.<key>\"],applyScrubbing:{key:\"auto\",reason:\"Metadata is user-defined and can contain user data\"},isInOtel:!1,visibility:\"public\",hasDynamicSuffix:!0,example:\"vercel.ai.telemetry.metadata.tenantId='acme'\",examples:[\"vercel.ai.telemetry.metadata.tenantId='acme'\"],changelog:[{version:\"0.26.0\",prs:[662],description:\"Added vercel.ai.telemetry.metadata.<key> attribute\"}],additionalContext:[\"Set on `gen_ai` spans for `invoke_agent`, `generate_content` and `embeddings` operations. Not set on `execute_tool` spans.\",\"The Vercel AI SDK's own OpenTelemetry spans emit the same data as `ai.telemetry.metadata.<key>`.\",\"The Vercel AI SDK also allows numbers, booleans and arrays as metadata values. SDKs MUST convert these values to strings.\",\"This attribute is open-ended on purpose. The Vercel AI SDK does not define the metadata keys. If Vercel defines a stricter spec for this metadata, consider moving it into `gen_ai.*` attributes.\"]},\"vercel.branch\":{brief:\"Git branch name for Vercel project\",type:\"string\",keys:[\"vercel.branch\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:\"main\",changelog:[{version:\"0.2.0\",prs:[163]}]},\"vercel.build_id\":{brief:\"Identifier for the Vercel build (only present on build logs)\",type:\"string\",keys:[\"vercel.build_id\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:\"bld_cotnkcr76\",changelog:[{version:\"0.2.0\",prs:[163]}]},\"vercel.deployment_id\":{brief:\"Identifier for the Vercel deployment\",type:\"string\",keys:[\"vercel.deployment_id\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:\"dpl_233NRGRjVZX1caZrXWtz5g1TAksD\",changelog:[{version:\"0.2.0\",prs:[163]}]},\"vercel.destination\":{brief:\"Origin of the external content in Vercel (only on external logs)\",type:\"string\",keys:[\"vercel.destination\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:\"https://vitals.vercel-insights.com/v1\",changelog:[{version:\"0.2.0\",prs:[163]}]},\"vercel.edge_type\":{brief:\"Type of edge runtime in Vercel\",type:\"string\",keys:[\"vercel.edge_type\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:\"edge-function\",changelog:[{version:\"0.2.0\",prs:[163]}]},\"vercel.entrypoint\":{brief:\"Entrypoint for the request in Vercel\",type:\"string\",keys:[\"vercel.entrypoint\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:\"api/index.js\",changelog:[{version:\"0.2.0\",prs:[163]}]},\"vercel.execution_region\":{brief:\"Region where the request is executed\",type:\"string\",keys:[\"vercel.execution_region\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:\"sfo1\",changelog:[{version:\"0.2.0\",prs:[163]}]},\"vercel.id\":{brief:\"Unique identifier for the log entry in Vercel\",type:\"string\",keys:[\"vercel.id\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:\"1573817187330377061717300000\",changelog:[{version:\"0.2.0\",prs:[163]}]},\"vercel.ja3_digest\":{brief:\"JA3 fingerprint digest of Vercel request\",type:\"string\",keys:[\"vercel.ja3_digest\"],applyScrubbing:{key:\"auto\"},isInOtel:!1,visibility:\"public\",example:\"769,47-53-5-10-49161-49162-49171-49172-50-56-19-4,0-10-11,23-24-25,0\",changelog:[{version:\"0.2.0\",prs:[163]}]},\"vercel.ja4_digest\":{brief:\"JA4 fingerprint digest\",type:\"string\",keys:[\"vercel.ja4_digest\"],applyScrubbing:{key:\"auto\"},isInOtel:!1,visibility:\"public\",example:\"t13d1516h2_8daaf6152771_02713d6af862\",changelog:[{version:\"0.2.0\",prs:[163]}]},\"vercel.log_type\":{brief:\"Vercel log output type\",type:\"string\",keys:[\"vercel.log_type\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:\"stdout\",changelog:[{version:\"0.2.0\",prs:[163]}]},\"vercel.path\":{brief:\"Function or dynamic path of the request in Vercel.\",type:\"string\",keys:[\"vercel.path\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:\"/dynamic/[route].json\",changelog:[{version:\"0.6.0\",prs:[349],description:\"Added vercel.path attribute\"}]},\"vercel.project_id\":{brief:\"Identifier for the Vercel project\",type:\"string\",keys:[\"vercel.project_id\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:\"gdufoJxB6b9b1fEqr1jUtFkyavUU\",changelog:[{version:\"0.2.0\",prs:[163]}]},\"vercel.project_name\":{brief:\"Name of the Vercel project\",type:\"string\",keys:[\"vercel.project_name\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:\"my-app\",changelog:[{version:\"0.2.0\",prs:[163]}]},\"vercel.proxy.cache_id\":{brief:\"Original request ID when request is served from cache\",type:\"string\",keys:[\"vercel.proxy.cache_id\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:\"pdx1::v8g4b-1744143786684-93dafbc0f70d\",changelog:[{version:\"0.2.0\",prs:[163]}]},\"vercel.proxy.client_ip\":{brief:\"Client IP address\",type:\"string\",keys:[\"vercel.proxy.client_ip\"],applyScrubbing:{key:\"auto\"},isInOtel:!1,visibility:\"public\",example:\"120.75.16.101\",changelog:[{version:\"0.2.0\",prs:[163]}]},\"vercel.proxy.host\":{brief:\"Hostname of the request\",type:\"string\",keys:[\"vercel.proxy.host\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:\"test.vercel.app\",changelog:[{version:\"0.2.0\",prs:[163]}]},\"vercel.proxy.lambda_region\":{brief:\"Region where lambda function executed\",type:\"string\",keys:[\"vercel.proxy.lambda_region\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:\"sfo1\",changelog:[{version:\"0.2.0\",prs:[163]}]},\"vercel.proxy.method\":{brief:\"HTTP method of the request\",type:\"string\",keys:[\"vercel.proxy.method\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:\"GET\",changelog:[{version:\"0.2.0\",prs:[163]}]},\"vercel.proxy.path\":{brief:\"Request path with query parameters\",type:\"string\",keys:[\"vercel.proxy.path\"],applyScrubbing:{key:\"auto\"},isInOtel:!1,visibility:\"public\",example:\"/dynamic/some-value.json?route=some-value\",changelog:[{version:\"0.2.0\",prs:[163]}]},\"vercel.proxy.path_type\":{brief:\"How the request was served based on its path and project configuration\",type:\"string\",keys:[\"vercel.proxy.path_type\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:\"func\",changelog:[{version:\"0.2.0\",prs:[163]}]},\"vercel.proxy.path_type_variant\":{brief:\"Variant of the path type\",type:\"string\",keys:[\"vercel.proxy.path_type_variant\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:\"api\",changelog:[{version:\"0.2.0\",prs:[163]}]},\"vercel.proxy.referer\":{brief:\"Referer of the request\",type:\"string\",keys:[\"vercel.proxy.referer\"],applyScrubbing:{key:\"auto\"},isInOtel:!1,visibility:\"public\",example:\"*.vercel.app\",changelog:[{version:\"0.2.0\",prs:[163]}]},\"vercel.proxy.region\":{brief:\"Region where the request is processed\",type:\"string\",keys:[\"vercel.proxy.region\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:\"sfo1\",changelog:[{version:\"0.2.0\",prs:[163]}]},\"vercel.proxy.response_byte_size\":{brief:\"Size of the response in bytes\",type:\"integer\",keys:[\"vercel.proxy.response_byte_size\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:1024,changelog:[{version:\"0.4.0\",prs:[228]},{version:\"0.2.0\",prs:[163]}]},\"vercel.proxy.scheme\":{brief:\"Protocol of the request\",type:\"string\",keys:[\"vercel.proxy.scheme\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:\"https\",changelog:[{version:\"0.2.0\",prs:[163]}]},\"vercel.proxy.status_code\":{brief:\"HTTP status code of the proxy request\",type:\"integer\",keys:[\"vercel.proxy.status_code\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:200,changelog:[{version:\"0.4.0\",prs:[228]},{version:\"0.2.0\",prs:[163]}]},\"vercel.proxy.timestamp\":{brief:\"Unix timestamp when the proxy request was made\",type:\"integer\",keys:[\"vercel.proxy.timestamp\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:1573817250172,changelog:[{version:\"0.4.0\",prs:[228]},{version:\"0.2.0\",prs:[163]}]},\"vercel.proxy.user_agent\":{brief:\"User agent strings of the request\",type:\"string[]\",keys:[\"vercel.proxy.user_agent\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:[\"Mozilla/5.0...\"],changelog:[{version:\"0.2.0\",prs:[163]}]},\"vercel.proxy.vercel_cache\":{brief:\"Cache status sent to the browser\",type:\"string\",keys:[\"vercel.proxy.vercel_cache\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:\"REVALIDATED\",changelog:[{version:\"0.2.0\",prs:[163]}]},\"vercel.proxy.vercel_id\":{brief:\"Vercel-specific identifier\",type:\"string\",keys:[\"vercel.proxy.vercel_id\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:\"sfo1::abc123\",changelog:[{version:\"0.2.0\",prs:[163]}]},\"vercel.proxy.waf_action\":{brief:\"Action taken by firewall rules\",type:\"string\",keys:[\"vercel.proxy.waf_action\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:\"deny\",changelog:[{version:\"0.2.0\",prs:[163]}]},\"vercel.proxy.waf_rule_id\":{brief:\"ID of the firewall rule that matched\",type:\"string\",keys:[\"vercel.proxy.waf_rule_id\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:\"rule_gAHz8jtSB1Gy\",changelog:[{version:\"0.2.0\",prs:[163]}]},\"vercel.request_id\":{brief:\"Identifier of the Vercel request\",type:\"string\",keys:[\"vercel.request_id\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:\"643af4e3-975a-4cc7-9e7a-1eda11539d90\",changelog:[{version:\"0.2.0\",prs:[163]}]},\"vercel.source\":{brief:\"Origin of the Vercel log (build, edge, lambda, static, external, or firewall)\",type:\"string\",keys:[\"vercel.source\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:\"build\",changelog:[{version:\"0.2.0\",prs:[163]}]},\"vercel.status_code\":{brief:\"HTTP status code of the request (-1 means no response returned and the lambda crashed)\",type:\"integer\",keys:[\"vercel.status_code\"],applyScrubbing:{key:\"manual\"},isInOtel:!1,visibility:\"public\",example:200,changelog:[{version:\"0.4.0\",prs:[228]},{version:\"0.2.0\",prs:[163]}]}};export{e as ADDRESS,t as AI_CITATIONS,i as AI_COMPLETION_TOKENS_USED,a as AI_DOCUMENTS,s as AI_FINISH_REASON,r as AI_FREQUENCY_PENALTY,n as AI_FUNCTION_CALL,o as AI_GENERATION_ID,l as AI_INPUT_MESSAGES,p as AI_IS_SEARCH_REQUIRED,c as AI_METADATA,u as AI_MODEL_ID,m as AI_MODEL_PROVIDER,b as AI_PIPELINE_NAME,g as AI_PREAMBLE,y as AI_PRESENCE_PENALTY,_ as AI_PROMPT,h as AI_PROMPT_MESSAGES,f as AI_PROMPT_TOKENS_USED,v as AI_PROMPT_TOOLS,k as AI_RAW_PROMPTING,S as AI_RESPONSES,T as AI_RESPONSE_FORMAT,E as AI_RESPONSE_ID,I as AI_RESPONSE_MODEL,O as AI_RESPONSE_OBJECT,w as AI_RESPONSE_TEXT,A as AI_RESPONSE_TIMESTAMP,x as AI_RESPONSE_TOOLCALLS,R as AI_SCHEMA,N as AI_SEARCH_QUERIES,C as AI_SEARCH_RESULTS,P as AI_SEED,q as AI_STREAMING,D as AI_TAGS,L as AI_TEMPERATURE,M as AI_TEXTS,U as AI_TOOLCALL_ARGS,G as AI_TOOLCALL_RESULT,B as AI_TOOLS,z as AI_TOOL_CALLS,Y as AI_TOP_K,j as AI_TOP_P,W as AI_TOTAL_COST,K as AI_TOTAL_TOKENS_USED,V as AI_USAGE_TOKENS,F as AI_VALUES,H as AI_WARNINGS,Q as ANGULAR_VERSION,J as ANTHROPIC_TOOL_RESULT_CONTENT,X as APP_APP_BUILD,Z as APP_APP_IDENTIFIER,$ as APP_APP_NAME,ee as APP_APP_START_TIME,te as APP_APP_VERSION,ie as APP_BUILD,ae as APP_IDENTIFIER,se as APP_IN_FOREGROUND,re as APP_NAME,ne as APP_START_COLD,oe as APP_START_TIME,le as APP_START_TYPE,pe as APP_START_WARM,ce as APP_VERSION,ue as APP_VITALS_FRAMES_DELAY_VALUE,de as APP_VITALS_FRAMES_FROZEN_COUNT,me as APP_VITALS_FRAMES_FROZEN_RATE,be as APP_VITALS_FRAMES_SLOW_COUNT,ge as APP_VITALS_FRAMES_SLOW_RATE,ye as APP_VITALS_FRAMES_TOTAL_COUNT,_e as APP_VITALS_STALL_DURATION,he as APP_VITALS_STALL_PERCENTAGE,fe as APP_VITALS_START_COLD_VALUE,ve as APP_VITALS_START_PREWARMED,ke as APP_VITALS_START_REASON,Se as APP_VITALS_START_SCREEN,Te as APP_VITALS_START_TYPE,Ee as APP_VITALS_START_WARM_VALUE,Ie as APP_VITALS_TTFD_VALUE,Oe as APP_VITALS_TTID_VALUE,we as ART_GC_BLOCKING_COUNT,Ae as ART_GC_BLOCKING_TIME,xe as ART_GC_PRE_OOME_COUNT,Re as ART_GC_TOTAL_COUNT,Ne as ART_GC_TOTAL_TIME,Ce as ART_GC_WAITING_TIME,Pe as ART_MEMORY_FREE,qe as ART_MEMORY_FREE_UNTIL_GC,De as ART_MEMORY_FREE_UNTIL_OOME,Le as ART_MEMORY_MAX,Me as ART_MEMORY_TOTAL,t_ as ATTRIBUTE_METADATA,e_ as ATTRIBUTE_TYPE,Ue as AWS_CLOUDWATCH_LOGS_LOG_GROUP,Ge as AWS_CLOUDWATCH_LOGS_LOG_STREAM,Be as AWS_CLOUDWATCH_LOGS_URL,ze as AWS_DYNAMODB_ATTRIBUTES_TO_GET,Ye as AWS_DYNAMODB_ATTRIBUTE_DEFINITIONS,je as AWS_DYNAMODB_CONSISTENT_READ,We as AWS_DYNAMODB_CONSUMED_CAPACITY,Ke as AWS_DYNAMODB_COUNT,Ve as AWS_DYNAMODB_EXCLUSIVE_START_TABLE,Fe as AWS_DYNAMODB_GLOBAL_SECONDARY_INDEXES,He as AWS_DYNAMODB_GLOBAL_SECONDARY_INDEX_UPDATES,Qe as AWS_DYNAMODB_INDEX_NAME,Je as AWS_DYNAMODB_ITEM_COLLECTION_METRICS,Xe as AWS_DYNAMODB_LIMIT,Ze as AWS_DYNAMODB_LOCAL_SECONDARY_INDEXES,$e as AWS_DYNAMODB_PROJECTION,et as AWS_DYNAMODB_PROVISIONED_READ_CAPACITY,tt as AWS_DYNAMODB_PROVISIONED_WRITE_CAPACITY,it as AWS_DYNAMODB_SCANNED_COUNT,at as AWS_DYNAMODB_SCAN_FORWARD,st as AWS_DYNAMODB_SEGMENT,rt as AWS_DYNAMODB_SELECT,nt as AWS_DYNAMODB_TABLE_COUNT,ot as AWS_DYNAMODB_TABLE_NAMES,lt as AWS_DYNAMODB_TOTAL_SEGMENTS,pt as AWS_EXTENDED_REQUEST_ID,ct as AWS_KINESIS_STREAM_NAME,dt as AWS_LAMBDA_AWS_REQUEST_ID,mt as AWS_LAMBDA_EXECUTION_DURATION_IN_MILLIS,bt as AWS_LAMBDA_FUNCTION_NAME,gt as AWS_LAMBDA_FUNCTION_VERSION,yt as AWS_LAMBDA_INITIALIZATION_TYPE,_t as AWS_LAMBDA_INVOKED_ARN,ht as AWS_LAMBDA_INVOKED_FUNCTION_ARN,ft as AWS_LAMBDA_REMAINING_TIME_IN_MILLIS,vt as AWS_LAMBDA_RESOURCE_MAPPING_ID,kt as AWS_LAMBDA_TARGET_FUNCTION_NAME,St as AWS_LAMBDA_WEB_ENDPOINT_NAME,Tt as AWS_LOG_GROUP_NAMES,Et as AWS_LOG_STREAM_NAMES,It as AWS_OPERATION_NAME,Ot as AWS_REGION,wt as AWS_REQUEST_EXTENDED_ID,At as AWS_REQUEST_ID,Rt as AWS_REQUEST_URL,Nt as AWS_S3_BUCKET,Ct as AWS_S3_COPY_SOURCE,Pt as AWS_S3_DELETE,qt as AWS_S3_KEY,Dt as AWS_S3_PART_NUMBER,Lt as AWS_S3_UPLOAD_ID,Mt as AWS_SECRETSMANAGER_SECRET_ARN,Ut as AWS_SECRETSMANAGER_SECRET_NAME,Gt as AWS_SNS_TOPIC_ARN,Bt as AWS_SQS_QUEUE_URL,zt as AWS_STEP_FUNCTIONS_ACTIVITY_ARN,Yt as AWS_STEP_FUNCTIONS_ACTIVITY_NAME,jt as AWS_STEP_FUNCTIONS_EXECUTION_ARN,Wt as AWS_STEP_FUNCTIONS_STATE_MACHINE_ARN,Kt as AWS_STEP_FUNCTIONS_STATE_MACHINE_NAME,Vt as BLOCKED_MAIN_THREAD,Ft as BROWSER_BFCACHE_FRAME,Ht as BROWSER_BFCACHE_NOT_RESTORED_REASON_COUNT,Qt as BROWSER_BFCACHE_OUTCOME,Jt as BROWSER_BFCACHE_REASON,Xt as BROWSER_NAME,Zt as BROWSER_NAVIGATION_ID,$t as BROWSER_NAVIGATION_TYPE,ei as BROWSER_PAINT_TYPE,ti as BROWSER_PERFORMANCE_NAVIGATION_ACTIVATION_START,ii as BROWSER_PERFORMANCE_TIME_ORIGIN,ai as BROWSER_REPORT_TYPE,si as BROWSER_SCRIPT_INVOKER,ri as BROWSER_SCRIPT_INVOKER_TYPE,ni as BROWSER_SCRIPT_SOURCE_CHAR_POSITION,oi as BROWSER_VERSION,li as BROWSER_WEB_VITAL_CLS_REPORT_EVENT,pi as BROWSER_WEB_VITAL_CLS_SOURCE_KEY,ci as BROWSER_WEB_VITAL_CLS_SOURCE_KEY_BASE,ui as BROWSER_WEB_VITAL_CLS_VALUE,di as BROWSER_WEB_VITAL_FCP_VALUE,mi as BROWSER_WEB_VITAL_FP_VALUE,bi as BROWSER_WEB_VITAL_INP_INPUT_DELAY,gi as BROWSER_WEB_VITAL_INP_INTERACTION_TYPE,yi as BROWSER_WEB_VITAL_INP_PRESENTATION_DELAY,_i as BROWSER_WEB_VITAL_INP_PROCESSING_DURATION,hi as BROWSER_WEB_VITAL_INP_TARGET,fi as BROWSER_WEB_VITAL_INP_VALUE,vi as BROWSER_WEB_VITAL_LCP_ELEMENT,ki as BROWSER_WEB_VITAL_LCP_ELEMENT_RENDER_DELAY,Si as BROWSER_WEB_VITAL_LCP_ID,Ti as BROWSER_WEB_VITAL_LCP_LOAD_TIME,Ei as BROWSER_WEB_VITAL_LCP_RENDER_TIME,Ii as BROWSER_WEB_VITAL_LCP_REPORT_EVENT,Oi as BROWSER_WEB_VITAL_LCP_RESOURCE_LOAD_DELAY,wi as BROWSER_WEB_VITAL_LCP_RESOURCE_LOAD_DURATION,Ai as BROWSER_WEB_VITAL_LCP_SIZE,xi as BROWSER_WEB_VITAL_LCP_URL,Ri as BROWSER_WEB_VITAL_LCP_VALUE,Ni as BROWSER_WEB_VITAL_TTFB_REQUEST_TIME,Ci as BROWSER_WEB_VITAL_TTFB_VALUE,Pi as CACHE_HIT,qi as CACHE_ITEM_AGE,Di as CACHE_ITEM_SIZE,Li as CACHE_KEY,Mi as CACHE_OPERATION,Ui as CACHE_TAGS,Gi as CACHE_TTL,Bi as CACHE_WRITE,zi as CHANNEL,Yi as CLIENT_ADDRESS,ji as CLIENT_PORT,Wi as CLOUDFLARE_D1_DURATION,Ki as CLOUDFLARE_D1_QUERY_TYPE,Vi as CLOUDFLARE_D1_ROWS_READ,Fi as CLOUDFLARE_D1_ROWS_WRITTEN,Hi as CLOUDFLARE_DURABLE_OBJECT_QUERY_BINDINGS,Qi as CLOUDFLARE_DURABLE_OBJECT_RESPONSE_ROWS_READ,Ji as CLOUDFLARE_DURABLE_OBJECT_RESPONSE_ROWS_WRITTEN,Xi as CLOUDFLARE_R2_BUCKET,Zi as CLOUDFLARE_R2_OPERATION,$i as CLOUDFLARE_R2_REQUEST_DELIMITER,ea as CLOUDFLARE_R2_REQUEST_KEY,ta as CLOUDFLARE_R2_REQUEST_PART_NUMBER,ia as CLOUDFLARE_R2_REQUEST_PREFIX,aa as CLOUDFLARE_WORKFLOW_ATTEMPT,sa as CLOUDFLARE_WORKFLOW_RETRIES_BACKOFF,ra as CLOUDFLARE_WORKFLOW_RETRIES_DELAY,na as CLOUDFLARE_WORKFLOW_RETRIES_LIMIT,oa as CLOUDFLARE_WORKFLOW_TIMEOUT,la as CLOUD_ACCOUNT_ID,pa as CLOUD_AVAILABILITY_ZONE,ca as CLOUD_PLATFORM,ua as CLOUD_PROVIDER,da as CLOUD_REGION,ma as CLOUD_RESOURCE_ID,ba as CLS,ga as CLS_SOURCE_KEY,ya as CLS_SOURCE_KEY_BASE,_a as CODE,ha as CODE_FILEPATH,fa as CODE_FILE_PATH,va as CODE_FUNCTION,ka as CODE_FUNCTION_NAME,Sa as CODE_LINENO,Ta as CODE_LINE_NUMBER,Ea as CODE_NAMESPACE,Ia as CONNECTIONTYPE,Oa as CONNECTION_RTT,wa as CULTURE_CALENDAR,Aa as CULTURE_DISPLAY_NAME,xa as CULTURE_IS_24_HOUR_FORMAT,Ra as CULTURE_LOCALE,Na as CULTURE_TIMEZONE,Ca as DB_COLLECTION_NAME,Pa as DB_CONNECTION_STRING,qa as DB_DRIVER_NAME,Da as DB_MONGODB_COLLECTION,La as DB_NAME,Ma as DB_NAMESPACE,Ua as DB_OPERATION,Ga as DB_OPERATION_BATCH_SIZE,Ba as DB_OPERATION_NAME,za as DB_PARAMS,Ya as DB_QUERY_PARAMETER_KEY,ja as DB_QUERY_PARAMETER_KEY_BASE,Wa as DB_QUERY_SUMMARY,Ka as DB_QUERY_TEXT,Va as DB_REDIS_CONNECTION,Fa as DB_REDIS_KEY,Ha as DB_REDIS_PARAMETERS,Qa as DB_RESPONSE_STATUS_CODE,Ja as DB_SQL_BINDINGS,Xa as DB_STATEMENT,Za as DB_STORED_PROCEDURE_NAME,$a as DB_SYSTEM,es as DB_SYSTEM_NAME,ts as DB_USER,is as DEVICEMEMORY,as as DEVICE_ARCHS,ss as DEVICE_BATTERY_LEVEL,rs as DEVICE_BATTERY_TEMPERATURE,ns as DEVICE_BOOT_TIME,os as DEVICE_BRAND,ls as DEVICE_CHARGING,ps as DEVICE_CHIPSET,cs as DEVICE_CLASS,us as DEVICE_CONNECTION_TYPE,ds as DEVICE_CPU_DESCRIPTION,ms as DEVICE_EXTERNAL_FREE_STORAGE,bs as DEVICE_EXTERNAL_STORAGE_SIZE,gs as DEVICE_FAMILY,ys as DEVICE_FREE_MEMORY,_s as DEVICE_FREE_STORAGE,hs as DEVICE_ID,fs as DEVICE_LOCALE,vs as DEVICE_LOW_MEMORY,ks as DEVICE_LOW_POWER_MODE,Ss as DEVICE_MANUFACTURER,Ts as DEVICE_MEMORY_ESTIMATED_CAPACITY,Es as DEVICE_MEMORY_SIZE,Is as DEVICE_MODEL,Os as DEVICE_MODEL_ID,ws as DEVICE_NAME,As as DEVICE_ONLINE,xs as DEVICE_ORIENTATION,Rs as DEVICE_PROCESSOR_COUNT,Ns as DEVICE_PROCESSOR_FREQUENCY,Cs as DEVICE_SCREEN_DENSITY,Ps as DEVICE_SCREEN_DPI,qs as DEVICE_SCREEN_HEIGHT_PIXELS,Ds as DEVICE_SCREEN_WIDTH_PIXELS,Ls as DEVICE_SIMULATOR,Ms as DEVICE_STORAGE_SIZE,Us as DEVICE_THERMAL_STATE,Gs as DEVICE_TIMEZONE,Bs as DEVICE_USABLE_MEMORY,zs as DIST,Ys as DJANGO_FUNCTION_NAME,js as DJANGO_MIDDLEWARE_NAME,Ws as EFFECTIVECONNECTIONTYPE,Ks as ENVIRONMENT,Vs as ERROR_TYPE,Fs as EVENT_ID,Hs as EVENT_NAME,Qs as EXCEPTION_ESCAPED,Js as EXCEPTION_MESSAGE,Xs as EXCEPTION_STACKTRACE,Zs as EXCEPTION_TYPE,$s as FAAS_COLDSTART,er as FAAS_CRON,tr as FAAS_DURATION_IN_MS,ir as FAAS_ENTRY_POINT,ar as FAAS_EXECUTION,sr as FAAS_ID,rr as FAAS_IDENTITY,nr as FAAS_INVOCATION_ID,or as FAAS_INVOKED_NAME,lr as FAAS_INVOKED_PROVIDER,pr as FAAS_INVOKED_REGION,cr as FAAS_MAX_MEMORY,ur as FAAS_NAME,dr as FAAS_TIME,mr as FAAS_TRIGGER,br as FAAS_VERSION,gr as FCP,yr as FILE_PATH,_r as FILE_SIZE,hr as FLAG_EVALUATION_KEY,fr as FLAG_EVALUATION_KEY_BASE,vr as FP,kr as FRAMES_DELAY,Sr as FRAMES_FROZEN,Tr as FRAMES_FROZEN_RATE,Er as FRAMES_SLOW,Ir as FRAMES_SLOW_RATE,Or as FRAMES_TOTAL,wr as FS_ERROR,Ar as GCP_FUNCTION_CONTEXT_EVENT_ID,xr as GCP_FUNCTION_CONTEXT_EVENT_TYPE,Rr as GCP_FUNCTION_CONTEXT_ID,Nr as GCP_FUNCTION_CONTEXT_RESOURCE,Cr as GCP_FUNCTION_CONTEXT_SOURCE,Pr as GCP_FUNCTION_CONTEXT_SPECVERSION,qr as GCP_FUNCTION_CONTEXT_TIME,Dr as GCP_FUNCTION_CONTEXT_TIMESTAMP,Lr as GCP_FUNCTION_CONTEXT_TYPE,Mr as GCP_PROJECT_ID,Ur as GCP_REGION,Gr as GEN_AI_AGENT_NAME,Br as GEN_AI_CONTEXT_UTILIZATION,zr as GEN_AI_CONTEXT_WINDOW_SIZE,Yr as GEN_AI_CONVERSATION_ID,jr as GEN_AI_COST_CACHE_CREATION_INPUT_TOKENS,Wr as GEN_AI_COST_CACHE_READ_INPUT_TOKENS,Kr as GEN_AI_COST_INPUT_TOKENS,Vr as GEN_AI_COST_OUTPUT_TOKENS,Fr as GEN_AI_COST_REASONING_OUTPUT_TOKENS,Hr as GEN_AI_COST_TOTAL_TOKENS,Qr as GEN_AI_EMBEDDINGS_INPUT,Jr as GEN_AI_FUNCTION_ID,Xr as GEN_AI_INPUT_MESSAGES,Zr as GEN_AI_MEMORY_QUERY_TEXT,$r as GEN_AI_MEMORY_RECORDS,en as GEN_AI_MEMORY_RECORD_COUNT,tn as GEN_AI_MEMORY_RECORD_ID,an as GEN_AI_MEMORY_STORE_ID,sn as GEN_AI_OPERATION_NAME,rn as GEN_AI_OPERATION_TYPE,nn as GEN_AI_OUTPUT_MESSAGES,on as GEN_AI_PIPELINE_NAME,ln as GEN_AI_PROMPT,pn as GEN_AI_PROMPT_NAME,cn as GEN_AI_PROMPT_VARIABLE_KEY,un as GEN_AI_PROMPT_VARIABLE_KEY_BASE,dn as GEN_AI_PROVIDER_NAME,mn as GEN_AI_REQUEST_AVAILABLE_TOOLS,bn as GEN_AI_REQUEST_FREQUENCY_PENALTY,gn as GEN_AI_REQUEST_MAX_TOKENS,yn as GEN_AI_REQUEST_MESSAGES,_n as GEN_AI_REQUEST_MODEL,hn as GEN_AI_REQUEST_PRESENCE_PENALTY,fn as GEN_AI_REQUEST_REASONING_LEVEL,vn as GEN_AI_REQUEST_SCHEMA,kn as GEN_AI_REQUEST_SEED,Sn as GEN_AI_REQUEST_STOP_SEQUENCES,Tn as GEN_AI_REQUEST_TEMPERATURE,En as GEN_AI_REQUEST_TOP_K,In as GEN_AI_REQUEST_TOP_P,On as GEN_AI_RESPONSE_FINISH_REASON,wn as GEN_AI_RESPONSE_FINISH_REASONS,An as GEN_AI_RESPONSE_ID,xn as GEN_AI_RESPONSE_MODEL,Rn as GEN_AI_RESPONSE_OBJECT,Nn as GEN_AI_RESPONSE_STREAMING,Cn as GEN_AI_RESPONSE_TEXT,Pn as GEN_AI_RESPONSE_TIME_TO_FIRST_CHUNK,qn as GEN_AI_RESPONSE_TIME_TO_FIRST_TOKEN,Dn as GEN_AI_RESPONSE_TOKENS_PER_SECOND,Ln as GEN_AI_RESPONSE_TOOL_CALLS,Mn as GEN_AI_SYSTEM,Un as GEN_AI_SYSTEM_INSTRUCTIONS,Gn as GEN_AI_SYSTEM_MESSAGE,Bn as GEN_AI_TOOL_CALL_ARGUMENTS,zn as GEN_AI_TOOL_CALL_RESULT,Yn as GEN_AI_TOOL_CALL_RESULT_SIZE,jn as GEN_AI_TOOL_DEFINITIONS,Wn as GEN_AI_TOOL_DESCRIPTION,Kn as GEN_AI_TOOL_INPUT,Vn as GEN_AI_TOOL_MESSAGE,Fn as GEN_AI_TOOL_NAME,Hn as GEN_AI_TOOL_OUTPUT,Qn as GEN_AI_TOOL_TYPE,Jn as GEN_AI_USAGE_CACHE_CREATION_INPUT_TOKENS,Zn as GEN_AI_USAGE_CACHE_READ_INPUT_TOKENS,eo as GEN_AI_USAGE_COMPLETION_TOKENS,to as GEN_AI_USAGE_INPUT_TOKENS,io as GEN_AI_USAGE_INPUT_TOKENS_CACHED,ao as GEN_AI_USAGE_INPUT_TOKENS_CACHE_WRITE,so as GEN_AI_USAGE_OUTPUT_TOKENS,ro as GEN_AI_USAGE_OUTPUT_TOKENS_REASONING,no as GEN_AI_USAGE_PROMPT_TOKENS,oo as GEN_AI_USAGE_REASONING_OUTPUT_TOKENS,lo as GEN_AI_USAGE_TOTAL_TOKENS,po as GRAPHQL_DOCUMENT,co as GRAPHQL_OPERATION_NAME,uo as GRAPHQL_OPERATION_TYPE,mo as GRAPHQL_PROCESSING_TYPE,bo as GRAPHQL_SOURCE,go as GRPC_ERROR_BAD_REQUEST_FIELD_VIOLATIONS,yo as GRPC_ERROR_DEBUG_INFO_DETAIL,_o as GRPC_ERROR_DEBUG_INFO_STACK_ENTRIES,ho as GRPC_ERROR_ERROR_INFO_DOMAIN,fo as GRPC_ERROR_ERROR_INFO_METADATA_KEY,vo as GRPC_ERROR_ERROR_INFO_METADATA_KEY_BASE,ko as GRPC_ERROR_ERROR_INFO_REASON,So as GRPC_ERROR_PRECONDITION_FAILURE_VIOLATIONS,To as GRPC_ERROR_QUOTA_FAILURE_VIOLATIONS,Eo as GRPC_ERROR_RESOURCE_INFO_DESCRIPTION,Io as GRPC_ERROR_RESOURCE_INFO_OWNER,Oo as GRPC_ERROR_RESOURCE_INFO_RESOURCE_NAME,wo as GRPC_ERROR_RESOURCE_INFO_RESOURCE_TYPE,Ao as GRPC_ERROR_RETRY_INFO_RETRY_DELAY_MS,xo as HAPI_EXT_TYPE,Ro as HAPI_PLUGIN_NAME,No as HAPI_TYPE,Co as HARDWARECONCURRENCY,Po as HTTP_CLIENT_IP,qo as HTTP_DECODED_RESPONSE_CONTENT_LENGTH,Do as HTTP_FLAVOR,Lo as HTTP_FRAGMENT,Mo as HTTP_HOST,Uo as HTTP_METHOD,Go as HTTP_QUERY,Bo as HTTP_REQUEST_BODY_DATA,zo as HTTP_REQUEST_BODY_DECODED_SIZE,Yo as HTTP_REQUEST_BODY_SIZE,jo as HTTP_REQUEST_CONNECTION_END,Wo as HTTP_REQUEST_CONNECT_START,Ko as HTTP_REQUEST_CONTENT_LENGTH,Vo as HTTP_REQUEST_CONTENT_LENGTH_UNCOMPRESSED,Fo as HTTP_REQUEST_DOMAIN_LOOKUP_END,Ho as HTTP_REQUEST_DOMAIN_LOOKUP_START,Qo as HTTP_REQUEST_DURATION,Jo as HTTP_REQUEST_FETCH_START,Xo as HTTP_REQUEST_HEADER_KEY,Zo as HTTP_REQUEST_HEADER_KEY_BASE,$o as HTTP_REQUEST_METHOD,tl as HTTP_REQUEST_REDIRECT_END,il as HTTP_REQUEST_REDIRECT_START,al as HTTP_REQUEST_REQUEST_START,sl as HTTP_REQUEST_RESEND_COUNT,rl as HTTP_REQUEST_RESPONSE_END,nl as HTTP_REQUEST_RESPONSE_START,ol as HTTP_REQUEST_SAME_ORIGIN,ll as HTTP_REQUEST_SECURE_CONNECTION_START,pl as HTTP_REQUEST_TIME_TO_FIRST_BYTE,cl as HTTP_REQUEST_WORKER_START,ul as HTTP_RESPONSE_BODY_DECODED_SIZE,dl as HTTP_RESPONSE_BODY_SIZE,ml as HTTP_RESPONSE_CONTENT_LENGTH,bl as HTTP_RESPONSE_CONTENT_LENGTH_UNCOMPRESSED,gl as HTTP_RESPONSE_HEADER_CONTENT_LENGTH,yl as HTTP_RESPONSE_HEADER_KEY,_l as HTTP_RESPONSE_HEADER_KEY_BASE,hl as HTTP_RESPONSE_SIZE,fl as HTTP_RESPONSE_STATUS_CODE,vl as HTTP_RESPONSE_STATUS_TEXT,kl as HTTP_RESPONSE_TRANSFER_SIZE,Sl as HTTP_ROUTE,Tl as HTTP_SCHEME,El as HTTP_SERVER_NAME,Il as HTTP_SERVER_REQUEST_TIME_IN_QUEUE,Ol as HTTP_STATUS_CODE,wl as HTTP_STATUS_TEXT,Al as HTTP_TARGET,xl as HTTP_URL,Rl as HTTP_USER_AGENT,Nl as ID,Cl as INP,Pl as INTEGRITY_BLOCKED_URL,ql as INTEGRITY_DESTINATION,Dl as INTEGRITY_DOCUMENT_URL,Ll as INTEGRITY_REPORT_ONLY,Ml as JSONRPC_PROTOCOL_VERSION,Ul as JSONRPC_REQUEST_ID,Gl as JVM_GC_ACTION,Bl as JVM_GC_NAME,zl as JVM_MEMORY_POOL_NAME,Yl as JVM_MEMORY_TYPE,jl as JVM_THREAD_DAEMON,Wl as JVM_THREAD_STATE,Kl as KOA_NAME,Vl as KOA_TYPE,Fl as LANGCHAIN_CHAIN_NAME,Hl as LCP,Ql as LCP_ELEMENT,Jl as LCP_ID,Xl as LCP_LOADTIME,Zl as LCP_RENDERTIME,$l as LCP_SIZE,ep as LCP_URL,tp as LITESTAR_MIDDLEWARE_NAME,ip as LOGGER_NAME,ap as MCP_AUTH_CLIENT_NAME,sp as MCP_CANCELLED_REASON,rp as MCP_CANCELLED_REQUEST_ID,np as MCP_CLIENT_NAME,op as MCP_CLIENT_TITLE,lp as MCP_CLIENT_VERSION,pp as MCP_LIFECYCLE_PHASE,cp as MCP_LOGGING_DATA_TYPE,up as MCP_LOGGING_LEVEL,dp as MCP_LOGGING_LOGGER,mp as MCP_LOGGING_MESSAGE,bp as MCP_METHOD_NAME,gp as MCP_PROGRESS_CURRENT,yp as MCP_PROGRESS_MESSAGE,_p as MCP_PROGRESS_PERCENTAGE,hp as MCP_PROGRESS_TOKEN,fp as MCP_PROGRESS_TOTAL,vp as MCP_PROMPT_NAME,kp as MCP_PROMPT_RESULT_DESCRIPTION,Sp as MCP_PROMPT_RESULT_KEY_CONTENT,Tp as MCP_PROMPT_RESULT_KEY_ROLE,Ep as MCP_PROMPT_RESULT_MESSAGE_CONTENT,Ip as MCP_PROMPT_RESULT_MESSAGE_COUNT,Op as MCP_PROMPT_RESULT_MESSAGE_ROLE,wp as MCP_PROTOCOL_READY,Ap as MCP_PROTOCOL_VERSION,xp as MCP_REQUEST_ARGUMENT_KEY,Rp as MCP_REQUEST_ARGUMENT_KEY_BASE,Np as MCP_REQUEST_ARGUMENT_NAME,Cp as MCP_REQUEST_ARGUMENT_URI,Pp as MCP_REQUEST_ID,qp as MCP_RESOURCE_PROTOCOL,Dp as MCP_RESOURCE_URI,Lp as MCP_SERVER_NAME,Mp as MCP_SERVER_TITLE,Up as MCP_SERVER_VERSION,Gp as MCP_SESSION_ID,Bp as MCP_TOOL_NAME,zp as MCP_TOOL_RESULT_CONTENT,Yp as MCP_TOOL_RESULT_CONTENT_COUNT,jp as MCP_TOOL_RESULT_CONTENT_TYPE,Wp as MCP_TOOL_RESULT_DATA_SIZE,Kp as MCP_TOOL_RESULT_IS_ERROR,Vp as MCP_TOOL_RESULT_KEY_CONTENT,Fp as MCP_TOOL_RESULT_KEY_CONTENT_TYPE,Hp as MCP_TOOL_RESULT_KEY_DATA_SIZE,Qp as MCP_TOOL_RESULT_KEY_MIME_TYPE,Jp as MCP_TOOL_RESULT_KEY_NAME,Xp as MCP_TOOL_RESULT_KEY_RESOURCE_MIME_TYPE,Zp as MCP_TOOL_RESULT_KEY_RESOURCE_URI,$p as MCP_TOOL_RESULT_KEY_URI,ec as MCP_TOOL_RESULT_MIME_TYPE,tc as MCP_TOOL_RESULT_NAME,ic as MCP_TOOL_RESULT_RESOURCE_MIME_TYPE,ac as MCP_TOOL_RESULT_RESOURCE_URI,sc as MCP_TOOL_RESULT_URI,rc as MCP_TRANSPORT,nc as MDC_KEY,oc as MDC_KEY_BASE,lc as MESSAGING_BATCH_MESSAGE_COUNT,pc as MESSAGING_BULLMQ_FLOW_NAME,cc as MESSAGING_BULLMQ_JOB_ATTEMPT_FINISHED_TIMESTAMP,uc as MESSAGING_BULLMQ_JOB_BULK_NAMES,dc as MESSAGING_BULLMQ_JOB_DEDUPLICATION_KEY,mc as MESSAGING_BULLMQ_JOB_IDS,bc as MESSAGING_BULLMQ_JOB_KEY,gc as MESSAGING_BULLMQ_JOB_NAME,yc as MESSAGING_BULLMQ_JOB_PROCESSED_TIMESTAMP,_c as MESSAGING_BULLMQ_JOB_SCHEDULER_ID,hc as MESSAGING_BULLMQ_JOB_STATE,fc as MESSAGING_BULLMQ_JOB_TYPE,vc as MESSAGING_BULLMQ_QUEUE_CLEAN_COUNT,kc as MESSAGING_BULLMQ_QUEUE_CLEAN_LIMIT,Sc as MESSAGING_BULLMQ_QUEUE_DRAIN_DELAY,Tc as MESSAGING_BULLMQ_QUEUE_EVENT_MAX_LENGTH,Ec as MESSAGING_BULLMQ_QUEUE_GRACE,Ic as MESSAGING_BULLMQ_QUEUE_JOBS_STATE,Oc as MESSAGING_BULLMQ_QUEUE_RATE_LIMIT,wc as MESSAGING_BULLMQ_WORKER_DO_NOT_WAIT_ACTIVE,Ac as MESSAGING_BULLMQ_WORKER_FORCE_CLOSE,xc as MESSAGING_BULLMQ_WORKER_JOBS_TO_EXTEND_LOCKS,Rc as MESSAGING_BULLMQ_WORKER_NAME,Nc as MESSAGING_BULLMQ_WORKER_RATE_LIMIT,Cc as MESSAGING_BULLMQ_WORKER_STALLED_JOBS,Pc as MESSAGING_CLIENT_ID,qc as MESSAGING_CONVERSATION_ID,Dc as MESSAGING_DESTINATION,Lc as MESSAGING_DESTINATION_CONNECTION,Mc as MESSAGING_DESTINATION_KIND,Uc as MESSAGING_DESTINATION_NAME,Gc as MESSAGING_DESTINATION_PARTITION_ID,Bc as MESSAGING_KAFKA_MESSAGE_KEY,zc as MESSAGING_KAFKA_MESSAGE_TOMBSTONE,Yc as MESSAGING_KAFKA_OFFSET,jc as MESSAGING_MESSAGE_BODY_SIZE,Wc as MESSAGING_MESSAGE_CONVERSATION_ID,Kc as MESSAGING_MESSAGE_ENVELOPE_SIZE,Vc as MESSAGING_MESSAGE_ID,Hc as MESSAGING_MESSAGE_RECEIVE_LATENCY,Qc as MESSAGING_MESSAGE_RETRY_COUNT,Jc as MESSAGING_OPERATION,Xc as MESSAGING_OPERATION_NAME,Zc as MESSAGING_OPERATION_TYPE,$c as MESSAGING_PROTOCOL,eu as MESSAGING_PROTOCOL_VERSION,tu as MESSAGING_RABBITMQ_DESTINATION_ROUTING_KEY,iu as MESSAGING_RABBITMQ_ROUTING_KEY,au as MESSAGING_SYSTEM,su as MESSAGING_URL,ru as METHOD,nu as MIDDLEWARE_NAME,ou as NAVIGATION_ORIGIN,lu as NAVIGATION_ROUTE_ID,pu as NAVIGATION_TYPE,cu as NEL_ELAPSED_TIME,uu as NEL_PHASE,du as NEL_REFERRER,mu as NEL_SAMPLING_FRACTION,bu as NEL_SAMPLING_FUNCTION,gu as NEL_TYPE,yu as NETWORK_CONNECTION_EFFECTIVE_TYPE,_u as NETWORK_CONNECTION_RTT,hu as NETWORK_CONNECTION_TYPE,fu as NETWORK_LOCAL_ADDRESS,vu as NETWORK_LOCAL_PORT,ku as NETWORK_PEER_ADDRESS,Su as NETWORK_PEER_PORT,Tu as NETWORK_PROTOCOL_NAME,Eu as NETWORK_PROTOCOL_VERSION,Iu as NETWORK_TRANSPORT,Ou as NETWORK_TYPE,wu as NET_HOST_IP,Au as NET_HOST_NAME,xu as NET_HOST_PORT,Ru as NET_PEER_IP,Nu as NET_PEER_NAME,Cu as NET_PEER_PORT,Pu as NET_PROTOCOL_NAME,qu as NET_PROTOCOL_VERSION,Du as NET_SOCK_FAMILY,Lu as NET_SOCK_HOST_ADDR,Mu as NET_SOCK_HOST_PORT,Uu as NET_SOCK_PEER_ADDR,Gu as NET_SOCK_PEER_NAME,Bu as NET_SOCK_PEER_PORT,zu as NET_TRANSPORT,Yu as OS_BUILD,ju as OS_BUILD_ID,Wu as OS_DESCRIPTION,Ku as OS_KERNEL_VERSION,Vu as OS_NAME,Fu as OS_RAW_DESCRIPTION,Hu as OS_ROOTED,Qu as OS_THEME,Ju as OS_TYPE,Xu as OS_VERSION,Zu as OTEL_KIND,$u as OTEL_SCOPE_NAME,ed as OTEL_SCOPE_VERSION,td as OTEL_STATUS_CODE,id as OTEL_STATUS_DESCRIPTION,ad as PARAMS_KEY,sd as PARAMS_KEY_BASE,rd as PERFORMANCE_ACTIVATIONSTART,nd as PERFORMANCE_TIMEORIGIN,od as PORT,ld as PREVIOUS_ROUTE,pd as PROCESS_COMMAND_ARGS,cd as PROCESS_EXECUTABLE_NAME,ud as PROCESS_PID,dd as PROCESS_RUNTIME_DESCRIPTION,md as PROCESS_RUNTIME_ENGINE_NAME,bd as PROCESS_RUNTIME_ENGINE_VERSION,gd as PROCESS_RUNTIME_NAME,yd as PROCESS_RUNTIME_VERSION,_d as PROFILE_ID,hd as QUERY,fd as QUERY_KEY,vd as QUERY_KEY_BASE,kd as REACT_NATIVE_ARCHITECTURE,Sd as REACT_NATIVE_MODULE_CALL_COUNT,Td as REACT_NATIVE_MODULE_CALL_DISTINCT_COUNT,Ed as REACT_NATIVE_MODULE_DURATION_MAX,Id as REACT_NATIVE_MODULE_DURATION_TOTAL,Od as REACT_NATIVE_MODULE_ERROR_COUNT,wd as REACT_NATIVE_MODULE_KIND,Ad as REACT_NATIVE_MODULE_METHOD,xd as REACT_NATIVE_MODULE_NAME,Rd as REACT_NATIVE_MODULE_TOP_DURATION,Nd as REACT_NATIVE_MODULE_TOP_NAME,Cd as REACT_VERSION,Pd as REDIS_COMMAND,qd as REDIS_KEY,Dd as RELEASE,Ld as REMIX_ACTION_FORM_DATA_KEY,Md as REMIX_ACTION_FORM_DATA_KEY_BASE,Ud as REPLAYID,Gd as REPLAY_ID,Bd as RESOURCE_DEPLOYMENT_ENVIRONMENT,zd as RESOURCE_DEPLOYMENT_ENVIRONMENT_NAME,Yd as RESOURCE_RENDER_BLOCKING_STATUS,jd as ROUTE,Wd as ROUTER_NAVIGATION_ORIGIN,Kd as ROUTER_NAVIGATION_ROUTE_ID,Vd as ROUTER_NAVIGATION_TYPE,Fd as RPC_GRPC_STATUS_CODE,Hd as RPC_METHOD,Qd as RPC_RESPONSE_STATUS_CODE,Jd as RPC_SERVICE,Xd as RPC_SYSTEM,Zd as RPC_SYSTEM_NAME,$d as RUNTIME_BUILD,em as RUNTIME_NAME,tm as RUNTIME_RAW_DESCRIPTION,im as RUNTIME_VERSION,am as SCORE_KEY,sm as SCORE_KEY_BASE,rm as SCORE_RATIO_KEY,nm as SCORE_RATIO_KEY_BASE,om as SCORE_TOTAL,lm as SCORE_WEIGHT_KEY,pm as SCORE_WEIGHT_KEY_BASE,cm as SENTRY_ACTION,um as SENTRY_BROWSER_NAME,dm as SENTRY_BROWSER_VERSION,mm as SENTRY_CANCELLATION_REASON,bm as SENTRY_CATEGORY,gm as SENTRY_CLIENT_SAMPLE_RATE,ym as SENTRY_DESCRIPTION,_m as SENTRY_DIST,hm as SENTRY_DOMAIN,fm as SENTRY_DSC_ENVIRONMENT,vm as SENTRY_DSC_PROJECT_ID,km as SENTRY_DSC_PUBLIC_KEY,Sm as SENTRY_DSC_RELEASE,Tm as SENTRY_DSC_SAMPLED,Em as SENTRY_DSC_SAMPLE_RATE,Im as SENTRY_DSC_TRACE_ID,Om as SENTRY_DSC_TRANSACTION,wm as SENTRY_ENVIRONMENT,Am as SENTRY_EVENT_SERIALIZED_BREADCRUMBS,xm as SENTRY_EVENT_SERIALIZED_CONTEXTS,Rm as SENTRY_EVENT_SERIALIZED_EXTRA,Nm as SENTRY_EVENT_SERIALIZED_META,Cm as SENTRY_EXCLUSIVE_TIME,Pm as SENTRY_FRAMES_FROZEN,qm as SENTRY_FRAMES_SLOW,Dm as SENTRY_FRAMES_TOTAL,Lm as SENTRY_GRAPHQL_OPERATION,Mm as SENTRY_GROUP,Um as SENTRY_HTTP_PREFETCH,Gm as SENTRY_IDLE_SPAN_FINISH_REASON,Bm as SENTRY_IS_LOCALHOST,zm as SENTRY_IS_REMOTE,Ym as SENTRY_KIND,jm as SENTRY_LINK_TYPE,Wm as SENTRY_MAIN_THREAD,Km as SENTRY_MESSAGE_PARAMETER_KEY,Vm as SENTRY_MESSAGE_TEMPLATE,Fm as SENTRY_METRIC_SOURCE,Hm as SENTRY_MOBILE,Qm as SENTRY_MODULE_KEY,Jm as SENTRY_MODULE_KEY_BASE,Xm as SENTRY_NEXTJS_SSR_FUNCTION_ROUTE,Zm as SENTRY_NEXTJS_SSR_FUNCTION_TYPE,$m as SENTRY_NORMALIZED_DB_QUERY,eb as SENTRY_NORMALIZED_DB_QUERY_HASH,tb as SENTRY_NORMALIZED_DESCRIPTION,ib as SENTRY_OBSERVED_TIMESTAMP_NANOS,ab as SENTRY_OP,sb as SENTRY_ORIGIN,rb as SENTRY_PAGELOAD_SPAN_ID,nb as SENTRY_PLATFORM,ob as SENTRY_PROFILER_ID,lb as SENTRY_PROFILE_ID,pb as SENTRY_RELAY_INGRESS,cb as SENTRY_RELAY_PIPELINE,ub as SENTRY_RELEASE,db as SENTRY_REPLAY_ID,mb as SENTRY_REPLAY_IS_BUFFERING,bb as SENTRY_REPORT_EVENT,gb as SENTRY_SDK_INTEGRATIONS,yb as SENTRY_SDK_NAME,_b as SENTRY_SDK_VERSION,hb as SENTRY_SEGMENT_ID,vb as SENTRY_SEGMENT_NAME,kb as SENTRY_SEGMENT_NAME_SOURCE,Sb as SENTRY_SERVER_SAMPLE_RATE,Tb as SENTRY_SOURCE,Eb as SENTRY_SPAN_SOURCE,Ib as SENTRY_STATUS,Ob as SENTRY_STATUS_CODE,wb as SENTRY_STATUS_MESSAGE,Ab as SENTRY_SVELTEKIT_NAVIGATION_FROM,xb as SENTRY_SVELTEKIT_NAVIGATION_TO,Rb as SENTRY_SVELTEKIT_NAVIGATION_TYPE,Nb as SENTRY_THREAD_ID,Cb as SENTRY_TIMESTAMP_SEQUENCE,Pb as SENTRY_TRACE_LIFECYCLE,qb as SENTRY_TRACE_PARENT_SPAN_ID,Db as SENTRY_TRACE_STATUS,Lb as SENTRY_TRANSACTION,Mb as SENTRY_USER_EMAIL,Ub as SENTRY_USER_GEO_CITY,Gb as SENTRY_USER_GEO_COUNTRY_CODE,Bb as SENTRY_USER_GEO_REGION,zb as SENTRY_USER_GEO_SUBDIVISION,Yb as SENTRY_USER_ID,jb as SENTRY_USER_IP,Wb as SENTRY_USER_USERNAME,Kb as SERVER_ADDRESS,Vb as SERVER_EXT_TYPE,Fb as SERVER_NAME,Hb as SERVER_PORT,Qb as SERVICE_NAME,Jb as SERVICE_VERSION,Xb as SESSION_ID,Zb as STALL_PERCENTAGE,$b as STALL_TOTAL_TIME,eg as STARLETTE_MIDDLEWARE_NAME,tg as STARLITE_MIDDLEWARE_NAME,ig as STATE_TYPE,ag as SUBPROCESS_PID,sg as SVELTEKIT_LOAD_ENVIRONMENT,rg as SVELTEKIT_LOAD_NODE_ID,ng as SVELTEKIT_LOAD_NODE_TYPE,og as SVELTEKIT_TRACING_ORIGINAL_NAME,lg as THREAD_ID,pg as THREAD_NAME,cg as TIMBER_TAG,ug as TIME_TO_FULL_DISPLAY,dg as TIME_TO_INITIAL_DISPLAY,mg as TRANSACTION,bg as TRPC_PROCEDURE_PATH,gg as TRPC_PROCEDURE_TYPE,yg as TTFB,_g as TTFB_REQUESTTIME,hg as TURBO_MODULES_TOTAL_CALL_COUNT,fg as TURBO_MODULES_TOTAL_DURATION_MS,vg as TURBO_MODULES_TOTAL_ERROR_COUNT,kg as TURBO_MODULES_UNIQUE_METHODS,Sg as TURBO_MODULE_ARCH,Tg as TURBO_MODULE_METHOD,Eg as TURBO_MODULE_NAME,Ig as TURBO_MODULE_TOP_MODULE,Og as TURBO_MODULE_TOP_MODULE_DURATION_MS,wg as TURBO_MODULE_TOTAL_CALL_COUNT,Ag as TURBO_MODULE_TOTAL_DURATION_MS,xg as TURBO_MODULE_TOTAL_ERROR_COUNT,Rg as TURBO_MODULE_UNIQUE_METHODS,Ng as TYPE,Cg as UI_COMPONENT_NAME,Pg as UI_CONTRIBUTES_TO_TTFD,qg as UI_CONTRIBUTES_TO_TTID,Dg as UI_ELEMENT_HEIGHT,Lg as UI_ELEMENT_ID,Mg as UI_ELEMENT_IDENTIFIER,Ug as UI_ELEMENT_LOAD_TIME,Gg as UI_ELEMENT_PAINT_TYPE,Bg as UI_ELEMENT_RENDER_TIME,zg as UI_ELEMENT_TYPE,Yg as UI_ELEMENT_URL,jg as UI_ELEMENT_WIDTH,Wg as URL,Kg as URL_DOMAIN,Vg as URL_FRAGMENT,Fg as URL_FULL,Hg as URL_PATH,Qg as URL_PATH_PARAMETER_KEY,Jg as URL_PATH_PARAMETER_KEY_BASE,Xg as URL_PATH_PARAMS_KEY,Zg as URL_PATH_PARAMS_KEY_BASE,$g as URL_PORT,ey as URL_QUERY,ty as URL_SAME_ORIGIN,iy as URL_SCHEME,ay as URL_TEMPLATE,sy as USER_AGENT_ORIGINAL,ry as USER_EMAIL,ny as USER_FULL_NAME,oy as USER_GEO_CITY,ly as USER_GEO_COUNTRY_CODE,py as USER_GEO_REGION,cy as USER_GEO_SUBDIVISION,uy as USER_HASH,dy as USER_ID,my as USER_IP_ADDRESS,by as USER_NAME,gy as USER_ROLES,yy as VERCEL_AI_TELEMETRY_METADATA_KEY,_y as VERCEL_AI_TELEMETRY_METADATA_KEY_BASE,hy as VERCEL_BRANCH,fy as VERCEL_BUILD_ID,vy as VERCEL_DEPLOYMENT_ID,ky as VERCEL_DESTINATION,Sy as VERCEL_EDGE_TYPE,Ty as VERCEL_ENTRYPOINT,Ey as VERCEL_EXECUTION_REGION,Iy as VERCEL_ID,Oy as VERCEL_JA3_DIGEST,wy as VERCEL_JA4_DIGEST,Ay as VERCEL_LOG_TYPE,xy as VERCEL_PATH,Ry as VERCEL_PROJECT_ID,Ny as VERCEL_PROJECT_NAME,Cy as VERCEL_PROXY_CACHE_ID,Py as VERCEL_PROXY_CLIENT_IP,qy as VERCEL_PROXY_HOST,Dy as VERCEL_PROXY_LAMBDA_REGION,Ly as VERCEL_PROXY_METHOD,My as VERCEL_PROXY_PATH,Uy as VERCEL_PROXY_PATH_TYPE,Gy as VERCEL_PROXY_PATH_TYPE_VARIANT,By as VERCEL_PROXY_REFERER,zy as VERCEL_PROXY_REGION,Yy as VERCEL_PROXY_RESPONSE_BYTE_SIZE,jy as VERCEL_PROXY_SCHEME,Wy as VERCEL_PROXY_STATUS_CODE,Ky as VERCEL_PROXY_TIMESTAMP,Vy as VERCEL_PROXY_USER_AGENT,Fy as VERCEL_PROXY_VERCEL_CACHE,Hy as VERCEL_PROXY_VERCEL_ID,Qy as VERCEL_PROXY_WAF_ACTION,Jy as VERCEL_PROXY_WAF_RULE_ID,Xy as VERCEL_REQUEST_ID,Zy as VERCEL_SOURCE,$y as VERCEL_STATUS_CODE,d as _AI_MODEL_ID,ut as _AWS_KINESIS_STREAM_NAME,xt as _AWS_REQUEST_ID,Xn as _GEN_AI_USAGE_CACHE_CREATION_INPUT_TOKENS,$n as _GEN_AI_USAGE_CACHE_READ_INPUT_TOKENS,el as _HTTP_REQUEST_METHOD,Fc as _MESSAGING_MESSAGE_ID,fb as _SENTRY_SEGMENT_ID};\n//# sourceMappingURL=attributes.mjs.map\n","import { isPrimitive } from './utils/is.js';\n\nfunction isAttributeObject(maybeObj) {\n  return typeof maybeObj === \"object\" && maybeObj != null && !Array.isArray(maybeObj) && Object.keys(maybeObj).includes(\"value\");\n}\nfunction attributeValueToTypedAttributeValue(rawValue, useFallback) {\n  const { value, unit } = isAttributeObject(rawValue) ? rawValue : { value: rawValue, unit: void 0 };\n  const attributeValue = getTypedAttributeValue(value);\n  const checkedUnit = unit && typeof unit === \"string\" ? { unit } : {};\n  if (attributeValue) {\n    return { ...attributeValue, ...checkedUnit };\n  }\n  if (!useFallback || useFallback === \"skip-undefined\" && value === void 0) {\n    return;\n  }\n  let stringValue = \"\";\n  try {\n    stringValue = JSON.stringify(value) ?? \"\";\n  } catch {\n  }\n  return {\n    value: stringValue,\n    type: \"string\",\n    ...checkedUnit\n  };\n}\nfunction serializeAttributes(attributes, fallback = false) {\n  const serializedAttributes = {};\n  for (const [key, value] of Object.entries(attributes ?? {})) {\n    const typedValue = attributeValueToTypedAttributeValue(value, fallback);\n    if (typedValue) {\n      serializedAttributes[key] = typedValue;\n    }\n  }\n  return serializedAttributes;\n}\nfunction estimateTypedAttributesSizeInBytes(attributes) {\n  if (!attributes) {\n    return 0;\n  }\n  let weight = 0;\n  for (const [key, attr] of Object.entries(attributes)) {\n    weight += key.length * 2;\n    weight += attr.type.length * 2;\n    weight += (attr.unit?.length ?? 0) * 2;\n    const val = attr.value;\n    if (Array.isArray(val)) {\n      weight += estimatePrimitiveSizeInBytes(val[0]) * val.length;\n    } else if (isPrimitive(val)) {\n      weight += estimatePrimitiveSizeInBytes(val);\n    } else {\n      weight += 100;\n    }\n  }\n  return weight;\n}\nfunction estimatePrimitiveSizeInBytes(value) {\n  if (typeof value === \"string\") {\n    return value.length * 2;\n  } else if (typeof value === \"boolean\") {\n    return 4;\n  } else if (typeof value === \"number\") {\n    return 8;\n  }\n  return 0;\n}\nfunction getTypedAttributeValue(value) {\n  if (Array.isArray(value)) {\n    return { value, type: \"array\" };\n  }\n  const primitiveType = typeof value === \"string\" ? \"string\" : typeof value === \"boolean\" ? \"boolean\" : typeof value === \"number\" && !Number.isNaN(value) ? Number.isInteger(value) ? \"integer\" : \"double\" : null;\n  if (primitiveType) {\n    return { value, type: primitiveType };\n  }\n}\n\nexport { attributeValueToTypedAttributeValue, estimateTypedAttributesSizeInBytes, isAttributeObject, serializeAttributes };\n//# sourceMappingURL=attributes.js.map\n","const SPAN_STATUS_TYPES = [\n  /** The operation completed successfully. */\n  \"ok\",\n  /** Deadline expired before operation could complete. */\n  \"deadline_exceeded\",\n  /** 401 Unauthorized (actually does mean unauthenticated according to RFC 7235) */\n  \"unauthenticated\",\n  /** 403 Forbidden */\n  \"permission_denied\",\n  /** 404 Not Found. Some requested entity (file or directory) was not found. */\n  \"not_found\",\n  /** 429 Too Many Requests */\n  \"resource_exhausted\",\n  /** Client specified an invalid argument. 4xx. */\n  \"invalid_argument\",\n  /** 501 Not Implemented */\n  \"unimplemented\",\n  /** 503 Service Unavailable */\n  \"unavailable\",\n  /** Other/generic 5xx. */\n  \"internal_error\",\n  /** Unknown. Any non-standard HTTP status code. */\n  \"unknown_error\",\n  /** The operation was cancelled (typically by the user). */\n  \"cancelled\",\n  /** Already exists (409) */\n  \"already_exists\",\n  /** Operation was rejected because the system is not in a state required for the operation's */\n  \"failed_precondition\",\n  /** The operation was aborted, typically due to a concurrency issue. */\n  \"aborted\",\n  /** Operation was attempted past the valid range. */\n  \"out_of_range\",\n  /** Unrecoverable data loss or corruption */\n  \"data_loss\"\n];\n\nexport { SPAN_STATUS_TYPES };\n//# sourceMappingURL=spanStatus.js.map\n","import { HTTP_RESPONSE_STATUS_CODE } from '@sentry/conventions/attributes';\nimport { SPAN_STATUS_TYPES } from '../types/spanStatus.js';\n\nconst SPAN_STATUS_UNSET = 0;\nconst SPAN_STATUS_OK = 1;\nconst SPAN_STATUS_ERROR = 2;\nfunction isStatusErrorMessageValid(message) {\n  return message !== \"ok\" && SPAN_STATUS_TYPES.includes(message);\n}\nfunction getSpanStatusFromHttpCode(httpStatus) {\n  if (httpStatus < 400 && httpStatus >= 100) {\n    return { code: SPAN_STATUS_OK };\n  }\n  if (httpStatus >= 400 && httpStatus < 500) {\n    switch (httpStatus) {\n      case 401:\n        return { code: SPAN_STATUS_ERROR, message: \"unauthenticated\" };\n      case 403:\n        return { code: SPAN_STATUS_ERROR, message: \"permission_denied\" };\n      case 404:\n        return { code: SPAN_STATUS_ERROR, message: \"not_found\" };\n      case 409:\n        return { code: SPAN_STATUS_ERROR, message: \"already_exists\" };\n      case 413:\n        return { code: SPAN_STATUS_ERROR, message: \"failed_precondition\" };\n      case 429:\n        return { code: SPAN_STATUS_ERROR, message: \"resource_exhausted\" };\n      case 499:\n        return { code: SPAN_STATUS_ERROR, message: \"cancelled\" };\n      default:\n        return { code: SPAN_STATUS_ERROR, message: \"invalid_argument\" };\n    }\n  }\n  if (httpStatus >= 500 && httpStatus < 600) {\n    switch (httpStatus) {\n      case 501:\n        return { code: SPAN_STATUS_ERROR, message: \"unimplemented\" };\n      case 503:\n        return { code: SPAN_STATUS_ERROR, message: \"unavailable\" };\n      case 504:\n        return { code: SPAN_STATUS_ERROR, message: \"deadline_exceeded\" };\n      default:\n        return { code: SPAN_STATUS_ERROR, message: \"internal_error\" };\n    }\n  }\n  return { code: SPAN_STATUS_ERROR, message: \"internal_error\" };\n}\nfunction setHttpStatus(span, httpStatus) {\n  span.setAttribute(HTTP_RESPONSE_STATUS_CODE, httpStatus);\n  const spanStatus = getSpanStatusFromHttpCode(httpStatus);\n  if (spanStatus.message !== \"unknown_error\") {\n    span.setStatus(spanStatus);\n  }\n}\n\nexport { SPAN_STATUS_ERROR, SPAN_STATUS_OK, SPAN_STATUS_UNSET, getSpanStatusFromHttpCode, isStatusErrorMessageValid, setHttpStatus };\n//# sourceMappingURL=spanstatus.js.map\n","import { GLOBAL_OBJ } from './worldwide.js';\n\nfunction makeWeakRef(value) {\n  try {\n    const WeakRefImpl = GLOBAL_OBJ.WeakRef;\n    if (typeof WeakRefImpl === \"function\") {\n      return new WeakRefImpl(value);\n    }\n  } catch {\n  }\n  return value;\n}\nfunction derefWeakRef(ref) {\n  if (!ref) {\n    return void 0;\n  }\n  if (typeof ref === \"object\" && \"deref\" in ref && typeof ref.deref === \"function\") {\n    try {\n      return ref.deref();\n    } catch {\n      return void 0;\n    }\n  }\n  return ref;\n}\n\nexport { derefWeakRef, makeWeakRef };\n//# sourceMappingURL=weakRef.js.map\n","import { addNonEnumerableProperty } from '../utils/object.js';\nimport { derefWeakRef, makeWeakRef } from '../utils/weakRef.js';\n\nconst SCOPE_ON_START_SPAN_FIELD = \"_sentryScope\";\nconst ISOLATION_SCOPE_ON_START_SPAN_FIELD = \"_sentryIsolationScope\";\nconst TRACER_PROVIDER_SPAN_FIELD = /* @__PURE__ */ Symbol.for(\"sentry.tracerProviderSpan\");\nfunction setCapturedScopesOnSpan(span, scope, isolationScope) {\n  if (span) {\n    addNonEnumerableProperty(span, ISOLATION_SCOPE_ON_START_SPAN_FIELD, makeWeakRef(isolationScope));\n    addNonEnumerableProperty(span, SCOPE_ON_START_SPAN_FIELD, scope);\n  }\n}\nfunction getCapturedScopesOnSpan(span) {\n  const spanWithScopes = span;\n  return {\n    scope: spanWithScopes[SCOPE_ON_START_SPAN_FIELD],\n    isolationScope: derefWeakRef(spanWithScopes[ISOLATION_SCOPE_ON_START_SPAN_FIELD])\n  };\n}\nfunction markSpanAsTracerProviderSpan(span) {\n  addNonEnumerableProperty(span, TRACER_PROVIDER_SPAN_FIELD, true);\n}\nfunction spanIsTracerProviderSpan(span) {\n  return span[TRACER_PROVIDER_SPAN_FIELD] === true;\n}\n\nexport { getCapturedScopesOnSpan, markSpanAsTracerProviderSpan, setCapturedScopesOnSpan, spanIsTracerProviderSpan };\n//# sourceMappingURL=utils.js.map\n","import { DEBUG_BUILD } from '../debug-build.js';\nimport { debug } from './debug-logger.js';\nimport { isString } from './is.js';\n\nconst SENTRY_BAGGAGE_KEY_PREFIX = \"sentry-\";\nconst SENTRY_BAGGAGE_KEY_PREFIX_REGEX = /^sentry-/;\nconst MAX_BAGGAGE_STRING_LENGTH = 8192;\nfunction baggageHeaderToDynamicSamplingContext(baggageHeader) {\n  const baggageObject = parseBaggageHeader(baggageHeader);\n  if (!baggageObject) {\n    return void 0;\n  }\n  const dynamicSamplingContext = Object.entries(baggageObject).reduce((acc, [key, value]) => {\n    if (key.startsWith(SENTRY_BAGGAGE_KEY_PREFIX)) {\n      const nonPrefixedKey = key.slice(SENTRY_BAGGAGE_KEY_PREFIX.length);\n      acc[nonPrefixedKey] = value;\n    }\n    return acc;\n  }, {});\n  if (Object.keys(dynamicSamplingContext).length > 0) {\n    return dynamicSamplingContext;\n  } else {\n    return void 0;\n  }\n}\nfunction dynamicSamplingContextToSentryBaggageHeader(dynamicSamplingContext) {\n  if (!dynamicSamplingContext) {\n    return void 0;\n  }\n  const sentryPrefixedDSC = Object.entries(dynamicSamplingContext).reduce(\n    (acc, [dscKey, dscValue]) => {\n      if (dscValue) {\n        acc[`${SENTRY_BAGGAGE_KEY_PREFIX}${dscKey}`] = dscValue;\n      }\n      return acc;\n    },\n    {}\n  );\n  return objectToBaggageHeader(sentryPrefixedDSC);\n}\nfunction parseBaggageHeader(baggageHeader) {\n  if (!baggageHeader || !isString(baggageHeader) && !Array.isArray(baggageHeader)) {\n    return void 0;\n  }\n  if (Array.isArray(baggageHeader)) {\n    return baggageHeader.reduce((acc, curr) => {\n      const currBaggageObject = baggageHeaderToObject(curr);\n      Object.entries(currBaggageObject).forEach(([key, value]) => {\n        acc[key] = value;\n      });\n      return acc;\n    }, {});\n  }\n  return baggageHeaderToObject(baggageHeader);\n}\nfunction baggageHeaderToObject(baggageHeader) {\n  return baggageHeader.split(\",\").map((baggageEntry) => {\n    const eqIdx = baggageEntry.indexOf(\"=\");\n    if (eqIdx === -1) {\n      return [];\n    }\n    const key = baggageEntry.slice(0, eqIdx);\n    const value = baggageEntry.slice(eqIdx + 1);\n    return [key, value].map((keyOrValue) => {\n      try {\n        return decodeURIComponent(keyOrValue.trim());\n      } catch {\n        return;\n      }\n    });\n  }).reduce((acc, [key, value]) => {\n    if (key && value) {\n      acc[key] = value;\n    }\n    return acc;\n  }, {});\n}\nfunction objectToBaggageHeader(object) {\n  if (Object.keys(object).length === 0) {\n    return void 0;\n  }\n  return Object.entries(object).reduce((baggageHeader, [objectKey, objectValue], currentIndex) => {\n    const baggageEntry = `${encodeURIComponent(objectKey)}=${encodeURIComponent(objectValue)}`;\n    const newBaggageHeader = currentIndex === 0 ? baggageEntry : `${baggageHeader},${baggageEntry}`;\n    if (newBaggageHeader.length > MAX_BAGGAGE_STRING_LENGTH) {\n      DEBUG_BUILD && debug.warn(\n        `Not adding key: ${objectKey} with val: ${objectValue} to baggage header due to exceeding baggage size limits.`\n      );\n      return baggageHeader;\n    } else {\n      return newBaggageHeader;\n    }\n  }, \"\");\n}\nfunction mergeBaggageHeaders(existing, incoming) {\n  if (!existing) {\n    return incoming;\n  }\n  const existingEntries = parseBaggageHeader(existing);\n  const incomingEntries = parseBaggageHeader(incoming);\n  if (!incomingEntries) {\n    return existing;\n  }\n  const merged = {};\n  let hasNewSentryEntries = false;\n  const newSentryEntries = {};\n  const newNonSentryEntries = {};\n  for (const [key, value] of Object.entries(incomingEntries)) {\n    if (key.startsWith(SENTRY_BAGGAGE_KEY_PREFIX)) {\n      newSentryEntries[key] = value;\n      hasNewSentryEntries = true;\n    } else {\n      newNonSentryEntries[key] = value;\n    }\n  }\n  if (existingEntries) {\n    for (const [key, value] of Object.entries(existingEntries)) {\n      if (!hasNewSentryEntries || !key.startsWith(SENTRY_BAGGAGE_KEY_PREFIX)) {\n        merged[key] = value;\n      }\n    }\n  }\n  if (hasNewSentryEntries) {\n    Object.assign(merged, newSentryEntries);\n  }\n  for (const [key, value] of Object.entries(newNonSentryEntries)) {\n    merged[key] ?? (merged[key] = value);\n  }\n  return objectToBaggageHeader(merged);\n}\n\nexport { MAX_BAGGAGE_STRING_LENGTH, SENTRY_BAGGAGE_KEY_PREFIX, SENTRY_BAGGAGE_KEY_PREFIX_REGEX, baggageHeaderToDynamicSamplingContext, dynamicSamplingContextToSentryBaggageHeader, mergeBaggageHeaders, objectToBaggageHeader, parseBaggageHeader };\n//# sourceMappingURL=baggage.js.map\n","function parseSampleRate(sampleRate) {\n  if (typeof sampleRate === \"boolean\") {\n    return Number(sampleRate);\n  }\n  const rate = typeof sampleRate === \"string\" ? parseFloat(sampleRate) : sampleRate;\n  if (typeof rate !== \"number\" || isNaN(rate) || rate < 0 || rate > 1) {\n    return void 0;\n  }\n  return rate;\n}\n\nexport { parseSampleRate };\n//# sourceMappingURL=parseSampleRate.js.map\n","import { debug } from './debug-logger.js';\nimport { baggageHeaderToDynamicSamplingContext } from './baggage.js';\nimport { extractOrgIdFromClient } from './dsn.js';\nimport { parseSampleRate } from './parseSampleRate.js';\nimport { generateTraceId, generateSpanId } from './propagationContext.js';\nimport { safeMathRandom } from './randomSafeContext.js';\n\nconst TRACEPARENT_REGEXP = new RegExp(\n  \"^[ \\\\t]*([0-9a-f]{32})?-?([0-9a-f]{16})?-?([01])?[ \\\\t]*$\"\n  // whitespace\n);\nfunction extractTraceparentData(traceparent) {\n  if (!traceparent) {\n    return void 0;\n  }\n  const matches = traceparent.match(TRACEPARENT_REGEXP);\n  if (!matches) {\n    return void 0;\n  }\n  let parentSampled;\n  if (matches[3] === \"1\") {\n    parentSampled = true;\n  } else if (matches[3] === \"0\") {\n    parentSampled = false;\n  }\n  return {\n    traceId: matches[1],\n    parentSampled,\n    parentSpanId: matches[2]\n  };\n}\nfunction isContinuingTrace(propagationContext) {\n  return !!propagationContext.parentSpanId || !!propagationContext.dsc;\n}\nfunction propagationContextFromHeaders(sentryTrace, baggage) {\n  const traceparentData = extractTraceparentData(sentryTrace);\n  const dynamicSamplingContext = baggageHeaderToDynamicSamplingContext(baggage);\n  if (!traceparentData?.traceId) {\n    return {\n      traceId: generateTraceId(),\n      sampleRand: safeMathRandom()\n    };\n  }\n  const sampleRand = getSampleRandFromTraceparentAndDsc(traceparentData, dynamicSamplingContext);\n  if (dynamicSamplingContext) {\n    dynamicSamplingContext.sample_rand = sampleRand.toString();\n  }\n  const { traceId, parentSpanId, parentSampled } = traceparentData;\n  return {\n    traceId,\n    parentSpanId,\n    sampled: parentSampled,\n    dsc: dynamicSamplingContext || {},\n    // If we have traceparent data but no DSC it means we are not head of trace and we must freeze it\n    sampleRand\n  };\n}\nfunction generateSentryTraceHeader(traceId = generateTraceId(), spanId = generateSpanId(), sampled) {\n  let sampledString = \"\";\n  if (sampled !== void 0) {\n    sampledString = sampled ? \"-1\" : \"-0\";\n  }\n  return `${traceId}-${spanId}${sampledString}`;\n}\nfunction generateTraceparentHeader(traceId = generateTraceId(), spanId = generateSpanId(), sampled) {\n  return `00-${traceId}-${spanId}-${sampled ? \"01\" : \"00\"}`;\n}\nfunction getSampleRandFromTraceparentAndDsc(traceparentData, dsc) {\n  const parsedSampleRand = parseSampleRate(dsc?.sample_rand);\n  if (parsedSampleRand !== void 0) {\n    return parsedSampleRand;\n  }\n  const parsedSampleRate = parseSampleRate(dsc?.sample_rate);\n  if (parsedSampleRate && traceparentData?.parentSampled !== void 0) {\n    return traceparentData.parentSampled ? (\n      // Returns a sample rand with positive sampling decision [0, sampleRate)\n      safeMathRandom() * parsedSampleRate\n    ) : (\n      // Returns a sample rand with negative sampling decision [sampleRate, 1)\n      parsedSampleRate + safeMathRandom() * (1 - parsedSampleRate)\n    );\n  } else {\n    return safeMathRandom();\n  }\n}\nfunction shouldContinueTrace(client, baggageOrgId) {\n  const clientOrgId = extractOrgIdFromClient(client);\n  if (baggageOrgId && clientOrgId && baggageOrgId !== clientOrgId) {\n    debug.log(\n      `Won't continue trace because org IDs don't match (incoming baggage: ${baggageOrgId}, SDK options: ${clientOrgId})`\n    );\n    return false;\n  }\n  const strictTraceContinuation = client.getOptions().strictTraceContinuation || false;\n  if (strictTraceContinuation) {\n    if (baggageOrgId && !clientOrgId || !baggageOrgId && clientOrgId) {\n      debug.log(\n        `Starting a new trace because strict trace continuation is enabled but one org ID is missing (incoming baggage: ${baggageOrgId}, Sentry client: ${clientOrgId})`\n      );\n      return false;\n    }\n  }\n  return true;\n}\n\nexport { TRACEPARENT_REGEXP, extractTraceparentData, generateSentryTraceHeader, generateTraceparentHeader, isContinuingTrace, propagationContextFromHeaders, shouldContinueTrace };\n//# sourceMappingURL=tracing.js.map\n","import { makeWeakRef, derefWeakRef } from './weakRef.js';\n\nconst SCOPE_SPAN_FIELD = \"span\";\nfunction _setSpanForScope(scope, span) {\n  if (span) {\n    scope.refs[SCOPE_SPAN_FIELD] = makeWeakRef(span);\n  } else {\n    delete scope.refs[SCOPE_SPAN_FIELD];\n  }\n}\nfunction _getSpanForScope(scope) {\n  return derefWeakRef(scope.refs[SCOPE_SPAN_FIELD]);\n}\n\nexport { _getSpanForScope, _setSpanForScope };\n//# sourceMappingURL=spanOnScope.js.map\n","import { getAsyncContextStrategy } from '../asyncContext/index.js';\nimport { serializeAttributes } from '../attributes.js';\nimport { getMainCarrier } from '../carrier.js';\nimport { getCurrentScope } from '../currentScopes.js';\nimport { SENTRY_SEGMENT_NAME_SOURCE, SENTRY_ORIGIN, SENTRY_OP, SENTRY_STATUS_MESSAGE } from '@sentry/conventions/attributes';\nimport { SEMANTIC_ATTRIBUTE_SENTRY_CUSTOM_SPAN_NAME } from '../semanticAttributes.js';\nimport { SPAN_STATUS_UNSET, SPAN_STATUS_OK, isStatusErrorMessageValid } from '../tracing/spanstatus.js';\nimport { getCapturedScopesOnSpan } from '../tracing/utils.js';\nimport { addNonEnumerableProperty } from './object.js';\nimport { generateSpanId } from './propagationContext.js';\nimport { performanceTimeToSeconds, timestampInSeconds } from './time.js';\nimport { generateSentryTraceHeader, generateTraceparentHeader } from './tracing.js';\nimport { _getSpanForScope } from './spanOnScope.js';\n\nconst TRACE_FLAG_NONE = 0;\nconst TRACE_FLAG_SAMPLED = 1;\nfunction spanToTransactionTraceContext(span) {\n  const { spanId: span_id, traceId: trace_id } = span.spanContext();\n  const { data, op, parent_span_id, status, origin, links } = spanToStaticSpanJSON(span);\n  return {\n    parent_span_id,\n    span_id,\n    trace_id,\n    data,\n    op,\n    status,\n    origin,\n    links\n  };\n}\nfunction spanToTraceContext(span) {\n  const { spanId, traceId: trace_id, isRemote } = span.spanContext();\n  const parent_span_id = isRemote ? spanId : spanToStaticSpanJSON(span).parent_span_id;\n  const scope = getCapturedScopesOnSpan(span).scope;\n  const span_id = isRemote ? scope?.getPropagationContext().propagationSpanId || generateSpanId() : spanId;\n  return {\n    parent_span_id,\n    span_id,\n    trace_id\n  };\n}\nfunction spanToTraceHeader(span) {\n  const { traceId, spanId } = span.spanContext();\n  const sampled = spanIsSampled(span);\n  return generateSentryTraceHeader(traceId, spanId, sampled);\n}\nfunction spanToTraceparentHeader(span) {\n  const { traceId, spanId } = span.spanContext();\n  const sampled = spanIsSampled(span);\n  return generateTraceparentHeader(traceId, spanId, sampled);\n}\nfunction convertSpanLinksForEnvelope(links) {\n  if (links && links.length > 0) {\n    return links.map(({ context: { spanId, traceId, traceFlags, ...restContext }, attributes }) => ({\n      span_id: spanId,\n      trace_id: traceId,\n      sampled: traceFlags === TRACE_FLAG_SAMPLED,\n      attributes,\n      ...restContext\n    }));\n  } else {\n    return void 0;\n  }\n}\nfunction getStreamedSpanLinks(links) {\n  if (links?.length) {\n    return links.map(({ context: { spanId, traceId, traceFlags }, attributes }) => ({\n      span_id: spanId,\n      trace_id: traceId,\n      sampled: traceFlags === TRACE_FLAG_SAMPLED,\n      attributes\n    }));\n  } else {\n    return void 0;\n  }\n}\nfunction spanTimeInputToSeconds(input) {\n  if (typeof input === \"number\") {\n    return ensureTimestampInSeconds(input);\n  }\n  if (Array.isArray(input)) {\n    return input[0] + input[1] / 1e9;\n  }\n  if (input instanceof Date) {\n    return ensureTimestampInSeconds(input.getTime());\n  }\n  return timestampInSeconds();\n}\nfunction ensureTimestampInSeconds(timestamp) {\n  const isMs = timestamp > 9999999999;\n  return isMs ? timestamp / 1e3 : timestamp;\n}\nfunction otelTimeInputToSeconds(input) {\n  if (typeof input !== \"number\") {\n    return spanTimeInputToSeconds(input);\n  }\n  if (input < 1e12) {\n    return performanceTimeToSeconds(input) ?? timestampInSeconds();\n  }\n  return input / 1e3;\n}\nfunction spanToStaticSpanJSON(span) {\n  if (spanIsSentrySpan(span)) {\n    return span.getStaticSpanJSON();\n  }\n  const { spanId: span_id, traceId: trace_id } = span.spanContext();\n  if (spanIsOpenTelemetrySdkTraceBaseSpan(span)) {\n    const { attributes, startTime, name, endTime, status, links } = span;\n    return {\n      span_id,\n      trace_id,\n      data: attributes,\n      description: name,\n      parent_span_id: getOtelParentSpanId(span),\n      start_timestamp: spanTimeInputToSeconds(startTime),\n      // This is [0,0] by default in OTEL, in which case we want to interpret this as no end time\n      timestamp: spanTimeInputToSeconds(endTime) || void 0,\n      status: getStatusMessage(status),\n      op: attributes[SENTRY_OP],\n      origin: attributes[SENTRY_ORIGIN],\n      links: convertSpanLinksForEnvelope(links)\n    };\n  }\n  return {\n    span_id,\n    trace_id,\n    start_timestamp: 0,\n    status: \"ok\",\n    data: {}\n  };\n}\nfunction spanToJSON(span) {\n  if (spanIsSentrySpan(span)) {\n    return span.getSpanJSON();\n  }\n  const { spanId: span_id, traceId: trace_id } = span.spanContext();\n  if (spanIsOpenTelemetrySdkTraceBaseSpan(span)) {\n    const { attributes, startTime, name, endTime, status, links } = span;\n    return {\n      name,\n      span_id,\n      trace_id,\n      parent_span_id: getOtelParentSpanId(span),\n      start_timestamp: spanTimeInputToSeconds(startTime),\n      // This is [0,0] by default in OTEL, in which case we want to interpret this as no end time\n      end_timestamp: spanTimeInputToSeconds(endTime) || void 0,\n      is_segment: spanIsSegment(span),\n      status: getSimpleStatus(status),\n      attributes: addStatusMessageAttribute(attributes, status),\n      links: getStreamedSpanLinks(links)\n    };\n  }\n  return {\n    span_id,\n    trace_id,\n    start_timestamp: 0,\n    name: \"\",\n    status: \"ok\",\n    is_segment: spanIsSegment(span),\n    attributes: {}\n  };\n}\nfunction getOtelParentSpanId(span) {\n  return \"parentSpanId\" in span ? span.parentSpanId : \"parentSpanContext\" in span ? span.parentSpanContext?.spanId : void 0;\n}\nfunction streamedSpanJsonToSerializedSpan(spanJson) {\n  return {\n    ...spanJson,\n    // We only ever send ended spans, but fall back to the start time (i.e. duration 0) so that\n    // sent spans always carry an end timestamp.\n    end_timestamp: spanJson.end_timestamp ?? spanJson.start_timestamp,\n    attributes: serializeAttributes(spanJson.attributes),\n    links: spanJson.links?.map((link) => ({\n      ...link,\n      attributes: serializeAttributes(link.attributes)\n    }))\n  };\n}\nfunction spanIsOpenTelemetrySdkTraceBaseSpan(span) {\n  const castSpan = span;\n  return !!castSpan.attributes && !!castSpan.startTime && !!castSpan.name && !!castSpan.endTime && !!castSpan.status;\n}\nfunction spanIsSentrySpan(span) {\n  return typeof span.getSpanJSON === \"function\";\n}\nfunction spanIsSampled(span) {\n  const { traceFlags } = span.spanContext();\n  return traceFlags === TRACE_FLAG_SAMPLED;\n}\nfunction getStatusMessage(status) {\n  if (!status || status.code === SPAN_STATUS_UNSET) {\n    return \"ok\";\n  }\n  if (status.code === SPAN_STATUS_OK) {\n    return \"ok\";\n  }\n  return status.message && isStatusErrorMessageValid(status.message) ? status.message : \"internal_error\";\n}\nfunction getSimpleStatus(status) {\n  return !status || status.code === SPAN_STATUS_OK || status.code === SPAN_STATUS_UNSET || status.message === \"cancelled\" ? \"ok\" : \"error\";\n}\nfunction addStatusMessageAttribute(attributes, status) {\n  const statusMessage = getSimpleStatus(status) === \"error\" ? status?.message : void 0;\n  return {\n    ...statusMessage && { [SENTRY_STATUS_MESSAGE]: statusMessage },\n    ...attributes\n  };\n}\nconst CHILD_SPANS_FIELD = \"_sentryChildSpans\";\nconst ROOT_SPAN_FIELD = \"_sentryRootSpan\";\nfunction addChildSpanToSpan(span, childSpan) {\n  const rootSpan = span[ROOT_SPAN_FIELD] || span;\n  addNonEnumerableProperty(childSpan, ROOT_SPAN_FIELD, rootSpan);\n  childSpan.setAttribute(SENTRY_SEGMENT_NAME_SOURCE, void 0);\n  if (!spanIsSampled(span)) {\n    return;\n  }\n  if (!span.isRecording() && !rootSpan.isRecording()) {\n    return;\n  }\n  if (span[CHILD_SPANS_FIELD]) {\n    span[CHILD_SPANS_FIELD].add(childSpan);\n  } else {\n    addNonEnumerableProperty(span, CHILD_SPANS_FIELD, /* @__PURE__ */ new Set([childSpan]));\n  }\n}\nfunction removeChildSpanFromSpan(span, childSpan) {\n  if (span[CHILD_SPANS_FIELD]) {\n    span[CHILD_SPANS_FIELD].delete(childSpan);\n  }\n}\nfunction getSpanDescendants(span) {\n  const resultSet = /* @__PURE__ */ new Set();\n  function addSpanChildren(span2) {\n    if (resultSet.has(span2)) {\n      return;\n    } else if (spanIsSampled(span2)) {\n      resultSet.add(span2);\n      const childSpans = span2[CHILD_SPANS_FIELD] ? Array.from(span2[CHILD_SPANS_FIELD]) : [];\n      for (const childSpan of childSpans) {\n        addSpanChildren(childSpan);\n      }\n    }\n  }\n  addSpanChildren(span);\n  return Array.from(resultSet);\n}\nconst getRootSpan = INTERNAL_getSegmentSpan;\nfunction INTERNAL_getSegmentSpan(span) {\n  return span[ROOT_SPAN_FIELD] || span;\n}\nfunction spanIsSegment(span) {\n  return span === INTERNAL_getSegmentSpan(span);\n}\nfunction getActiveSpan(scope) {\n  const carrier = getMainCarrier();\n  const acs = getAsyncContextStrategy(carrier);\n  if (acs.getActiveSpan) {\n    return acs.getActiveSpan(scope);\n  }\n  return _getSpanForScope(scope || getCurrentScope());\n}\nfunction updateSpanName(span, name) {\n  span.updateName(name);\n  span.setAttributes({\n    [SEMANTIC_ATTRIBUTE_SENTRY_CUSTOM_SPAN_NAME]: name\n  });\n  INTERNAL_setSegmentNameSourceIfSegment(span, \"custom\");\n}\nfunction INTERNAL_setSegmentNameSourceIfSegment(span, source) {\n  if (spanIsSegment(span)) {\n    span.setAttribute(SENTRY_SEGMENT_NAME_SOURCE, source);\n  }\n}\n\nexport { INTERNAL_getSegmentSpan, INTERNAL_setSegmentNameSourceIfSegment, TRACE_FLAG_NONE, TRACE_FLAG_SAMPLED, addChildSpanToSpan, addStatusMessageAttribute, convertSpanLinksForEnvelope, getActiveSpan, getRootSpan, getSimpleStatus, getSpanDescendants, getStatusMessage, getStreamedSpanLinks, otelTimeInputToSeconds, removeChildSpanFromSpan, spanIsSampled, spanIsSegment, spanIsSentrySpan, spanTimeInputToSeconds, spanToJSON, spanToStaticSpanJSON, spanToTraceContext, spanToTraceHeader, spanToTraceparentHeader, spanToTransactionTraceContext, streamedSpanJsonToSerializedSpan, updateSpanName };\n//# sourceMappingURL=spanUtils.js.map\n","import { DEBUG_BUILD } from '../debug-build.js';\nimport { debug } from './debug-logger.js';\nimport { isThenable } from './is.js';\n\nconst CALLBACK_ERROR = /* @__PURE__ */ Symbol.for(\"SentryCallbackError\");\nfunction safeCallback(message, fn, fallback) {\n  let result;\n  try {\n    result = fn();\n  } catch (error) {\n    return recover(message, error, fallback);\n  }\n  if (isThenable(result)) {\n    return result.then(void 0, (error) => recover(message, error, fallback));\n  }\n  return result;\n}\nfunction recover(message, error, fallback) {\n  DEBUG_BUILD && debug.error(message, error);\n  return fallback(error);\n}\n\nexport { CALLBACK_ERROR, safeCallback };\n//# sourceMappingURL=safeCallback.js.map\n","import { getClient, getIsolationScope } from './currentScopes.js';\nimport { DEBUG_BUILD } from './debug-build.js';\nimport { consoleSandbox } from './utils/debug-logger.js';\nimport { safeCallback } from './utils/safeCallback.js';\nimport { dateTimestampInSeconds } from './utils/time.js';\n\nconst DEFAULT_BREADCRUMBS = 100;\nfunction addBreadcrumb(breadcrumb, hint) {\n  const client = getClient();\n  const isolationScope = getIsolationScope();\n  if (!client) return;\n  const { beforeBreadcrumb = null, maxBreadcrumbs = DEFAULT_BREADCRUMBS } = client.getOptions();\n  if (maxBreadcrumbs <= 0) return;\n  const timestamp = dateTimestampInSeconds();\n  const mergedBreadcrumb = { timestamp, ...breadcrumb };\n  const finalBreadcrumb = beforeBreadcrumb ? safeCallback(\n    DEBUG_BUILD ? \"The `beforeBreadcrumb` callback threw an error, dropping the breadcrumb:\" : \"\",\n    () => consoleSandbox(() => beforeBreadcrumb(mergedBreadcrumb, hint)),\n    () => null\n  ) : mergedBreadcrumb;\n  if (finalBreadcrumb === null) return;\n  if (client.emit) {\n    client.emit(\"beforeAddBreadcrumb\", finalBreadcrumb, hint);\n  }\n  isolationScope.addBreadcrumb(finalBreadcrumb, maxBreadcrumbs);\n}\n\nexport { addBreadcrumb };\n//# sourceMappingURL=breadcrumbs.js.map\n","import { DEBUG_BUILD } from '../debug-build.js';\nimport { debug } from '../utils/debug-logger.js';\nimport { getFunctionName } from '../utils/stacktrace.js';\n\nconst handlers = {};\nconst instrumented = {};\nfunction addHandler(type, handler) {\n  handlers[type] = handlers[type] || [];\n  handlers[type].push(handler);\n  return () => {\n    const typeHandlers = handlers[type];\n    if (typeHandlers) {\n      const index = typeHandlers.indexOf(handler);\n      if (index !== -1) {\n        typeHandlers.splice(index, 1);\n      }\n    }\n  };\n}\nfunction resetInstrumentationHandlers() {\n  Object.keys(handlers).forEach((key) => {\n    handlers[key] = void 0;\n  });\n}\nfunction maybeInstrument(type, instrumentFn) {\n  if (!instrumented[type]) {\n    instrumented[type] = true;\n    try {\n      instrumentFn();\n    } catch (e) {\n      DEBUG_BUILD && debug.error(`Error while instrumenting ${type}`, e);\n    }\n  }\n}\nfunction triggerHandlers(type, data) {\n  const typeHandlers = type && handlers[type];\n  if (!typeHandlers) {\n    return;\n  }\n  for (const handler of typeHandlers) {\n    try {\n      handler(data);\n    } catch (e) {\n      DEBUG_BUILD && debug.error(\n        `Error while triggering instrumentation handler.\nType: ${type}\nName: ${getFunctionName(handler)}\nError:`,\n        e\n      );\n    }\n  }\n}\n\nexport { addHandler, maybeInstrument, resetInstrumentationHandlers, triggerHandlers };\n//# sourceMappingURL=handlers.js.map\n","import { DEBUG_BUILD } from '../debug-build.js';\nimport { CONSOLE_LEVELS, originalConsoleMethods, debug } from '../utils/debug-logger.js';\nimport { fill } from '../utils/object.js';\nimport { stringMatchesSomePattern } from '../utils/string.js';\nimport { GLOBAL_OBJ } from '../utils/worldwide.js';\nimport { addHandler, maybeInstrument, triggerHandlers } from './handlers.js';\n\nconst _filter = /* @__PURE__ */ new Set([]);\nfunction addConsoleInstrumentationHandler(handler) {\n  const type = \"console\";\n  const removeHandler = addHandler(type, handler);\n  maybeInstrument(type, instrumentConsole);\n  return removeHandler;\n}\nfunction addConsoleInstrumentationFilter(filter) {\n  for (const f of filter) {\n    _filter.add(f);\n  }\n  return () => {\n    for (const f of filter) {\n      _filter.delete(f);\n    }\n  };\n}\nconst instrumentedLevels = /* @__PURE__ */ new Set();\nfunction instrumentConsole() {\n  if (!(\"console\" in GLOBAL_OBJ)) {\n    return;\n  }\n  CONSOLE_LEVELS.forEach(function(level) {\n    if (instrumentedLevels.has(level) || !(level in GLOBAL_OBJ.console)) {\n      return;\n    }\n    instrumentedLevels.add(level);\n    fill(GLOBAL_OBJ.console, level, function(originalConsoleMethod) {\n      originalConsoleMethods[level] = originalConsoleMethod;\n      return function(...args) {\n        const firstArg = args[0];\n        const log = originalConsoleMethods[level];\n        const isFiltered = _filter.size && typeof firstArg === \"string\" && stringMatchesSomePattern(firstArg, _filter);\n        if (!isFiltered) {\n          triggerHandlers(\"console\", { args, level });\n        }\n        if (!isFiltered || DEBUG_BUILD && debug.isEnabled()) {\n          log?.apply(GLOBAL_OBJ.console, args);\n        }\n      };\n    });\n  });\n}\n\nexport { addConsoleInstrumentationFilter, addConsoleInstrumentationHandler, instrumentConsole };\n//# sourceMappingURL=console.js.map\n","function severityLevelFromString(level) {\n  return level === \"warn\" ? \"warning\" : [\"fatal\", \"error\", \"warning\", \"log\", \"info\", \"debug\"].includes(level) ? level : \"log\";\n}\n\nexport { severityLevelFromString };\n//# sourceMappingURL=severity.js.map\n","import { addBreadcrumb } from '../breadcrumbs.js';\nimport { getClient } from '../currentScopes.js';\nimport { addConsoleInstrumentationHandler, addConsoleInstrumentationFilter } from '../instrument/console.js';\nimport { defineIntegration } from '../integration.js';\nimport { CONSOLE_LEVELS } from '../utils/debug-logger.js';\nimport { severityLevelFromString } from '../utils/severity.js';\nimport { safeJoin } from '../utils/string.js';\nimport { GLOBAL_OBJ } from '../utils/worldwide.js';\n\nconst INTEGRATION_NAME = \"Console\";\nconst consoleIntegration = defineIntegration((options = {}) => {\n  const levels = new Set(options.levels || CONSOLE_LEVELS);\n  return {\n    name: INTEGRATION_NAME,\n    setup(client) {\n      const unsubscribe = addConsoleInstrumentationHandler(({ args, level }) => {\n        if (getClient() !== client || !levels.has(level)) {\n          return;\n        }\n        addConsoleBreadcrumb(level, args);\n      });\n      client.registerCleanup(unsubscribe);\n      if (options.filter) {\n        const unsubscribe2 = addConsoleInstrumentationFilter(options.filter);\n        client.registerCleanup(unsubscribe2);\n      }\n    }\n  };\n});\nfunction addConsoleBreadcrumb(level, args) {\n  const breadcrumb = {\n    category: \"console\",\n    data: {\n      arguments: args,\n      logger: \"console\"\n    },\n    level: severityLevelFromString(level),\n    message: formatConsoleArgs(args)\n  };\n  if (level === \"assert\") {\n    if (args[0] === false) {\n      const assertionArgs = args.slice(1);\n      breadcrumb.message = assertionArgs.length > 0 ? `Assertion failed: ${formatConsoleArgs(assertionArgs)}` : \"Assertion failed\";\n      breadcrumb.data.arguments = assertionArgs;\n    } else {\n      return;\n    }\n  }\n  addBreadcrumb(breadcrumb, {\n    input: args,\n    level\n  });\n}\nfunction formatConsoleArgs(values) {\n  return \"util\" in GLOBAL_OBJ && typeof GLOBAL_OBJ.util.format === \"function\" ? GLOBAL_OBJ.util.format(...values) : safeJoin(values, \" \");\n}\n\nexport { addConsoleBreadcrumb, consoleIntegration };\n//# sourceMappingURL=console.js.map\n","import { DEBUG_BUILD } from '../debug-build.js';\nimport { defineIntegration } from '../integration.js';\nimport { debug } from '../utils/debug-logger.js';\nimport { getFramesFromEvent } from '../utils/stacktrace.js';\n\nconst INTEGRATION_NAME = \"Dedupe\";\nconst _dedupeIntegration = (() => {\n  let previousEvent;\n  return {\n    name: INTEGRATION_NAME,\n    processEvent(currentEvent) {\n      if (currentEvent.type) {\n        return currentEvent;\n      }\n      try {\n        if (_shouldDropEvent(currentEvent, previousEvent)) {\n          DEBUG_BUILD && debug.warn(\"Event dropped due to being a duplicate of previously captured event.\");\n          return null;\n        }\n      } catch {\n      }\n      return previousEvent = currentEvent;\n    }\n  };\n});\nconst dedupeIntegration = defineIntegration(_dedupeIntegration);\nfunction _shouldDropEvent(currentEvent, previousEvent) {\n  if (!previousEvent) {\n    return false;\n  }\n  if (_isSameMessageEvent(currentEvent, previousEvent)) {\n    return true;\n  }\n  if (_isSameExceptionEvent(currentEvent, previousEvent)) {\n    return true;\n  }\n  return false;\n}\nfunction _isSameMessageEvent(currentEvent, previousEvent) {\n  const currentMessage = currentEvent.message;\n  const previousMessage = previousEvent.message;\n  if (!currentMessage && !previousMessage) {\n    return false;\n  }\n  if (currentMessage && !previousMessage || !currentMessage && previousMessage) {\n    return false;\n  }\n  if (currentMessage !== previousMessage) {\n    return false;\n  }\n  if (!_isSameFingerprint(currentEvent, previousEvent)) {\n    return false;\n  }\n  if (!_isSameStacktrace(currentEvent, previousEvent)) {\n    return false;\n  }\n  return true;\n}\nfunction _isSameExceptionEvent(currentEvent, previousEvent) {\n  const previousException = _getExceptionFromEvent(previousEvent);\n  const currentException = _getExceptionFromEvent(currentEvent);\n  if (!previousException || !currentException) {\n    return false;\n  }\n  if (previousException.type !== currentException.type || previousException.value !== currentException.value) {\n    return false;\n  }\n  if (!_isSameFingerprint(currentEvent, previousEvent)) {\n    return false;\n  }\n  if (!_isSameStacktrace(currentEvent, previousEvent)) {\n    return false;\n  }\n  return true;\n}\nfunction _isSameStacktrace(currentEvent, previousEvent) {\n  const currentFrames = getFramesFromEvent(currentEvent);\n  const previousFrames = getFramesFromEvent(previousEvent);\n  if (!currentFrames || !previousFrames) {\n    return !currentFrames && !previousFrames;\n  }\n  if (previousFrames.length !== currentFrames.length) {\n    return false;\n  }\n  for (let i = 0; i < previousFrames.length; i++) {\n    const frameA = previousFrames[i];\n    const frameB = currentFrames[i];\n    if (frameA.filename !== frameB.filename || frameA.lineno !== frameB.lineno || frameA.colno !== frameB.colno || frameA.function !== frameB.function) {\n      return false;\n    }\n  }\n  return true;\n}\nfunction _isSameFingerprint(currentEvent, previousEvent) {\n  const currentFingerprint = currentEvent.fingerprint;\n  const previousFingerprint = previousEvent.fingerprint;\n  if (!currentFingerprint || !previousFingerprint) {\n    return !currentFingerprint && !previousFingerprint;\n  }\n  try {\n    return !!(currentFingerprint.join(\"\") === previousFingerprint.join(\"\"));\n  } catch {\n    return false;\n  }\n}\nfunction _getExceptionFromEvent(event) {\n  return event.exception?.values?.[0];\n}\n\nexport { _shouldDropEvent, dedupeIntegration };\n//# sourceMappingURL=dedupe.js.map\n","const DEFAULT_ENVIRONMENT = \"production\";\nconst DEV_ENVIRONMENT = \"development\";\n\nexport { DEFAULT_ENVIRONMENT, DEV_ENVIRONMENT };\n//# sourceMappingURL=constants.js.map\n","import { isNodeEnv } from './node.js';\nimport { GLOBAL_OBJ } from './worldwide.js';\n\nfunction isBrowser() {\n  return typeof window !== \"undefined\" && (!isNodeEnv() || isElectronNodeRenderer());\n}\nfunction isElectronNodeRenderer() {\n  const process = GLOBAL_OBJ.process;\n  return process?.type === \"renderer\";\n}\n\nexport { isBrowser };\n//# sourceMappingURL=isBrowser.js.map\n","function isBrowserBundle() {\n  return typeof __SENTRY_BROWSER_BUNDLE__ !== \"undefined\" && !!__SENTRY_BROWSER_BUNDLE__;\n}\nfunction getSDKSource() {\n  /*! __SENTRY_SDK_SOURCE__ */\n  return \"npm\";\n}\n\nexport { getSDKSource, isBrowserBundle };\n//# sourceMappingURL=env.js.map\n","import { isBrowserBundle } from './env.js';\n\nfunction isNodeEnv() {\n  return !isBrowserBundle() && Object.prototype.toString.call(typeof process !== \"undefined\" ? process : 0) === \"[object process]\";\n}\nfunction dynamicRequire(mod, request) {\n  return mod.require(request);\n}\nfunction loadModule(moduleName, existingModule = typeof module !== \"undefined\" ? module : void 0) {\n  let mod;\n  try {\n    mod = dynamicRequire(existingModule, moduleName);\n  } catch {\n  }\n  if (!mod) {\n    try {\n      const { cwd } = dynamicRequire(existingModule, \"process\");\n      mod = dynamicRequire(existingModule, `${cwd()}/node_modules/${moduleName}`);\n    } catch {\n    }\n  }\n  return mod;\n}\n\nexport { isNodeEnv, loadModule };\n//# sourceMappingURL=node.js.map\n","import { dsnToString } from '../utils/dsn.js';\nimport { createEnvelope } from '../utils/envelope.js';\nimport { isBrowser } from '../utils/isBrowser.js';\n\nfunction createLogContainerEnvelopeItem(items, inferUserData) {\n  const inferSetting = inferUserData ? \"auto\" : \"never\";\n  return [\n    {\n      type: \"log\",\n      item_count: items.length,\n      content_type: \"application/vnd.sentry.items.log+json\"\n    },\n    {\n      version: 2,\n      ...isBrowser() && {\n        ingest_settings: { infer_ip: inferSetting, infer_user_agent: inferSetting }\n      },\n      items\n    }\n  ];\n}\nfunction createLogEnvelope(logs, metadata, tunnel, dsn, inferUserData) {\n  const headers = {};\n  if (metadata?.sdk) {\n    headers.sdk = {\n      name: metadata.sdk.name,\n      version: metadata.sdk.version\n    };\n  }\n  if (!!tunnel && !!dsn) {\n    headers.dsn = dsnToString(dsn);\n  }\n  return createEnvelope(headers, [createLogContainerEnvelopeItem(logs, inferUserData)]);\n}\n\nexport { createLogContainerEnvelopeItem, createLogEnvelope };\n//# sourceMappingURL=envelope.js.map\n","import { SENTRY_MESSAGE_TEMPLATE, SENTRY_TRACE_PARENT_SPAN_ID, USER_ID, USER_EMAIL, USER_NAME, SENTRY_RELEASE, SENTRY_ENVIRONMENT, SENTRY_SDK_NAME, SENTRY_SDK_VERSION, SENTRY_REPLAY_ID } from '@sentry/conventions/attributes';\nimport { serializeAttributes } from '../attributes.js';\nimport { getGlobalSingleton } from '../carrier.js';\nimport { getClient, getIsolationScope, getCurrentScope } from '../currentScopes.js';\nimport { DEBUG_BUILD } from '../debug-build.js';\nimport { debug, consoleSandbox } from '../utils/debug-logger.js';\nimport { isParameterizedString } from '../utils/is.js';\nimport { safeCallback, CALLBACK_ERROR } from '../utils/safeCallback.js';\nimport { getCombinedScopeData } from '../utils/scopeData.js';\nimport { getActiveSpan } from '../utils/spanUtils.js';\nimport { timestampInSeconds } from '../utils/time.js';\nimport { getSequenceAttribute } from '../utils/timestampSequence.js';\nimport { _getTraceInfoFromScope } from '../utils/trace-info.js';\nimport { SEVERITY_TEXT_TO_SEVERITY_NUMBER } from './constants.js';\nimport { createLogEnvelope } from './envelope.js';\n\nconst MAX_LOG_BUFFER_SIZE = 100;\nfunction setLogAttribute(logAttributes, key, value, setEvenIfPresent = true) {\n  if (value && (!logAttributes[key] || setEvenIfPresent)) {\n    logAttributes[key] = value;\n  }\n}\nfunction _INTERNAL_captureSerializedLog(client, serializedLog) {\n  const bufferMap = _getBufferMap();\n  const logBuffer = _INTERNAL_getLogBuffer(client);\n  if (logBuffer === void 0) {\n    bufferMap.set(client, [serializedLog]);\n  } else {\n    if (logBuffer.length >= MAX_LOG_BUFFER_SIZE) {\n      _INTERNAL_flushLogsBuffer(client, logBuffer);\n      bufferMap.set(client, [serializedLog]);\n    } else {\n      bufferMap.set(client, [...logBuffer, serializedLog]);\n    }\n  }\n}\nfunction _INTERNAL_captureLog(beforeLog, currentScope = getCurrentScope(), captureSerializedLog = _INTERNAL_captureSerializedLog) {\n  const client = currentScope?.getClient() ?? getClient();\n  if (!client) {\n    DEBUG_BUILD && debug.warn(\"No client available to capture log.\");\n    return;\n  }\n  const { release, environment, beforeSendLog } = client.getOptions();\n  const [, traceContext] = _getTraceInfoFromScope(client, currentScope);\n  const processedLogAttributes = {\n    ...beforeLog.attributes\n  };\n  const {\n    user: { id, email, username },\n    attributes: scopeAttributes\n  } = getCombinedScopeData(getIsolationScope(), currentScope);\n  setLogAttribute(processedLogAttributes, USER_ID, id, false);\n  setLogAttribute(processedLogAttributes, USER_EMAIL, email, false);\n  setLogAttribute(processedLogAttributes, USER_NAME, username, false);\n  setLogAttribute(processedLogAttributes, SENTRY_RELEASE, release);\n  setLogAttribute(processedLogAttributes, SENTRY_ENVIRONMENT, environment);\n  const { name, version } = client.getSdkMetadata()?.sdk ?? {};\n  setLogAttribute(processedLogAttributes, SENTRY_SDK_NAME, name);\n  setLogAttribute(processedLogAttributes, SENTRY_SDK_VERSION, version);\n  const replay = client.getIntegrationByName(\"Replay\");\n  const replayId = replay?.getReplayId(true);\n  setLogAttribute(processedLogAttributes, SENTRY_REPLAY_ID, replayId);\n  if (replayId && replay?.getRecordingMode() === \"buffer\") {\n    setLogAttribute(processedLogAttributes, \"sentry._internal.replay_is_buffering\", true);\n  }\n  const beforeLogMessage = beforeLog.message;\n  if (isParameterizedString(beforeLogMessage)) {\n    const { __sentry_template_string__, __sentry_template_values__ = [] } = beforeLogMessage;\n    if (__sentry_template_values__?.length) {\n      processedLogAttributes[SENTRY_MESSAGE_TEMPLATE] = __sentry_template_string__;\n    }\n    __sentry_template_values__.forEach((param, index) => {\n      processedLogAttributes[`sentry.message.parameter.${index}`] = param;\n    });\n  }\n  const span = getActiveSpan(currentScope);\n  setLogAttribute(processedLogAttributes, SENTRY_TRACE_PARENT_SPAN_ID, span?.spanContext().spanId);\n  const processedLog = { ...beforeLog, attributes: processedLogAttributes };\n  client.emit(\"beforeCaptureLog\", processedLog);\n  const log = beforeSendLog ? safeCallback(\n    DEBUG_BUILD ? \"The `beforeSendLog` callback threw an error, dropping the log:\" : \"\",\n    // We need to wrap this in `consoleSandbox` to avoid recursive calls to `beforeSendLog`\n    () => consoleSandbox(() => beforeSendLog(processedLog)),\n    () => CALLBACK_ERROR\n  ) : processedLog;\n  if (log === CALLBACK_ERROR) {\n    client.recordDroppedEvent(\"callback_error\", \"log_item\", 1);\n    return;\n  }\n  if (!log) {\n    client.recordDroppedEvent(\"before_send\", \"log_item\", 1);\n    DEBUG_BUILD && debug.warn(\"beforeSendLog returned null, log will not be captured.\");\n    return;\n  }\n  const { level, message, attributes: logAttributes = {}, severityNumber } = log;\n  const timestamp = timestampInSeconds();\n  const sequenceAttr = getSequenceAttribute(timestamp);\n  const serializedLog = {\n    timestamp,\n    level,\n    body: _removeLoneSurrogates(String(message)),\n    trace_id: traceContext?.trace_id,\n    severity_number: severityNumber ?? SEVERITY_TEXT_TO_SEVERITY_NUMBER[level],\n    attributes: sanitizeLogAttributes({\n      ...serializeAttributes(scopeAttributes),\n      ...serializeAttributes(logAttributes, true),\n      [sequenceAttr.key]: sequenceAttr.value\n    })\n  };\n  captureSerializedLog(client, serializedLog);\n  client.emit(\"afterCaptureLog\", log);\n}\nfunction _INTERNAL_flushLogsBuffer(client, maybeLogBuffer) {\n  const logBuffer = maybeLogBuffer ?? _INTERNAL_getLogBuffer(client) ?? [];\n  if (logBuffer.length === 0) {\n    return;\n  }\n  const clientOptions = client.getOptions();\n  const envelope = createLogEnvelope(\n    logBuffer,\n    clientOptions._metadata,\n    clientOptions.tunnel,\n    client.getDsn(),\n    client.getDataCollectionOptions().userInfo\n  );\n  _getBufferMap().set(client, []);\n  client.emit(\"flushLogs\");\n  client.sendEnvelope(envelope);\n}\nfunction _INTERNAL_getLogBuffer(client) {\n  return _getBufferMap().get(client);\n}\nfunction _getBufferMap() {\n  return getGlobalSingleton(\"clientToLogBufferMap\", () => /* @__PURE__ */ new WeakMap());\n}\nfunction sanitizeLogAttributes(attributes) {\n  const sanitized = {};\n  for (const [key, attr] of Object.entries(attributes)) {\n    const sanitizedKey = _removeLoneSurrogates(key);\n    if (attr.type === \"string\") {\n      sanitized[sanitizedKey] = { ...attr, value: _removeLoneSurrogates(attr.value) };\n    } else {\n      sanitized[sanitizedKey] = attr;\n    }\n  }\n  return sanitized;\n}\nfunction _removeLoneSurrogates(str) {\n  const strObj = Object(str);\n  const isWellFormed = strObj[\"isWellFormed\"];\n  const toWellFormed = strObj[\"toWellFormed\"];\n  if (typeof isWellFormed === \"function\" && typeof toWellFormed === \"function\") {\n    return isWellFormed.call(str) ? str : toWellFormed.call(str);\n  }\n  return str;\n}\n\nexport { _INTERNAL_captureLog, _INTERNAL_captureSerializedLog, _INTERNAL_flushLogsBuffer, _INTERNAL_getLogBuffer, _removeLoneSurrogates };\n//# sourceMappingURL=internal.js.map\n","import { dsnToString } from '../utils/dsn.js';\nimport { createEnvelope } from '../utils/envelope.js';\nimport { isBrowser } from '../utils/isBrowser.js';\n\nfunction createMetricContainerEnvelopeItem(items, inferUserData) {\n  const inferSetting = inferUserData ? \"auto\" : \"never\";\n  return [\n    {\n      type: \"trace_metric\",\n      item_count: items.length,\n      content_type: \"application/vnd.sentry.items.trace-metric+json\"\n    },\n    {\n      version: 2,\n      ...isBrowser() && {\n        ingest_settings: { infer_ip: inferSetting, infer_user_agent: inferSetting }\n      },\n      items\n    }\n  ];\n}\nfunction createMetricEnvelope(metrics, metadata, tunnel, dsn, inferUserData) {\n  const headers = {};\n  if (metadata?.sdk) {\n    headers.sdk = {\n      name: metadata.sdk.name,\n      version: metadata.sdk.version\n    };\n  }\n  if (!!tunnel && !!dsn) {\n    headers.dsn = dsnToString(dsn);\n  }\n  return createEnvelope(headers, [createMetricContainerEnvelopeItem(metrics, inferUserData)]);\n}\n\nexport { createMetricContainerEnvelopeItem, createMetricEnvelope };\n//# sourceMappingURL=envelope.js.map\n","import { USER_ID, USER_EMAIL, USER_NAME, SENTRY_RELEASE, SENTRY_ENVIRONMENT, SENTRY_SDK_NAME, SENTRY_SDK_VERSION, SENTRY_REPLAY_ID } from '@sentry/conventions/attributes';\nimport { serializeAttributes } from '../attributes.js';\nimport { getGlobalSingleton } from '../carrier.js';\nimport { getCurrentScope, getClient, getIsolationScope } from '../currentScopes.js';\nimport { DEBUG_BUILD } from '../debug-build.js';\nimport { debug } from '../utils/debug-logger.js';\nimport { safeCallback, CALLBACK_ERROR } from '../utils/safeCallback.js';\nimport { getCombinedScopeData } from '../utils/scopeData.js';\nimport { getActiveSpan } from '../utils/spanUtils.js';\nimport { timestampInSeconds } from '../utils/time.js';\nimport { getSequenceAttribute } from '../utils/timestampSequence.js';\nimport { _getTraceInfoFromScope } from '../utils/trace-info.js';\nimport { createMetricEnvelope } from './envelope.js';\n\nconst MAX_METRIC_BUFFER_SIZE = 1e3;\nfunction setMetricAttribute(metricAttributes, key, value, setEvenIfPresent = true) {\n  if (value && (setEvenIfPresent || !(key in metricAttributes))) {\n    metricAttributes[key] = value;\n  }\n}\nfunction _INTERNAL_captureSerializedMetric(client, serializedMetric) {\n  const bufferMap = _getBufferMap();\n  const metricBuffer = _INTERNAL_getMetricBuffer(client);\n  if (metricBuffer === void 0) {\n    bufferMap.set(client, [serializedMetric]);\n  } else {\n    if (metricBuffer.length >= MAX_METRIC_BUFFER_SIZE) {\n      _INTERNAL_flushMetricsBuffer(client, metricBuffer);\n      bufferMap.set(client, [serializedMetric]);\n    } else {\n      bufferMap.set(client, [...metricBuffer, serializedMetric]);\n    }\n  }\n}\nfunction _enrichMetricAttributes(beforeMetric, client, user) {\n  const { release, environment } = client.getOptions();\n  const processedMetricAttributes = {\n    ...beforeMetric.attributes\n  };\n  setMetricAttribute(processedMetricAttributes, USER_ID, user.id, false);\n  setMetricAttribute(processedMetricAttributes, USER_EMAIL, user.email, false);\n  setMetricAttribute(processedMetricAttributes, USER_NAME, user.username, false);\n  setMetricAttribute(processedMetricAttributes, SENTRY_RELEASE, release);\n  setMetricAttribute(processedMetricAttributes, SENTRY_ENVIRONMENT, environment);\n  const { name, version } = client.getSdkMetadata()?.sdk ?? {};\n  setMetricAttribute(processedMetricAttributes, SENTRY_SDK_NAME, name);\n  setMetricAttribute(processedMetricAttributes, SENTRY_SDK_VERSION, version);\n  const replay = client.getIntegrationByName(\"Replay\");\n  const replayId = replay?.getReplayId(true);\n  setMetricAttribute(processedMetricAttributes, SENTRY_REPLAY_ID, replayId);\n  if (replayId && replay?.getRecordingMode() === \"buffer\") {\n    setMetricAttribute(processedMetricAttributes, \"sentry._internal.replay_is_buffering\", true);\n  }\n  return {\n    ...beforeMetric,\n    attributes: processedMetricAttributes\n  };\n}\nfunction _buildSerializedMetric(metric, client, currentScope, scopeAttributes) {\n  const [, traceContext] = _getTraceInfoFromScope(client, currentScope);\n  const span = getActiveSpan(currentScope);\n  const traceId = span ? span.spanContext().traceId : traceContext?.trace_id;\n  const spanId = span ? span.spanContext().spanId : void 0;\n  const timestamp = timestampInSeconds();\n  const sequenceAttr = getSequenceAttribute(timestamp);\n  return {\n    timestamp,\n    trace_id: traceId ?? \"\",\n    span_id: spanId,\n    name: metric.name,\n    type: metric.type,\n    unit: metric.unit,\n    value: metric.value,\n    attributes: {\n      ...serializeAttributes(scopeAttributes),\n      ...serializeAttributes(metric.attributes, \"skip-undefined\"),\n      [sequenceAttr.key]: sequenceAttr.value\n    }\n  };\n}\nfunction _INTERNAL_captureMetric(beforeMetric, options) {\n  const currentScope = options?.scope ?? getCurrentScope();\n  const captureSerializedMetric = options?.captureSerializedMetric ?? _INTERNAL_captureSerializedMetric;\n  const client = currentScope?.getClient() ?? getClient();\n  if (!client) {\n    DEBUG_BUILD && debug.warn(\"No client available to capture metric.\");\n    return;\n  }\n  const { beforeSendMetric } = client.getOptions();\n  const { user, attributes: scopeAttributes } = getCombinedScopeData(getIsolationScope(), currentScope);\n  const enrichedMetric = _enrichMetricAttributes(beforeMetric, client, user);\n  client.emit(\"processMetric\", enrichedMetric);\n  const processedMetric = beforeSendMetric ? safeCallback(\n    DEBUG_BUILD ? \"The `beforeSendMetric` callback threw an error, dropping the metric:\" : \"\",\n    () => beforeSendMetric(enrichedMetric),\n    () => CALLBACK_ERROR\n  ) : enrichedMetric;\n  if (processedMetric === CALLBACK_ERROR) {\n    client.recordDroppedEvent(\"callback_error\", \"trace_metric\", 1);\n    return;\n  }\n  if (!processedMetric) {\n    client.recordDroppedEvent(\"before_send\", \"trace_metric\", 1);\n    DEBUG_BUILD && debug.log(\"`beforeSendMetric` returned `null`, will not send metric.\");\n    return;\n  }\n  const serializedMetric = _buildSerializedMetric(processedMetric, client, currentScope, scopeAttributes);\n  DEBUG_BUILD && debug.log(\"[Metric]\", serializedMetric);\n  captureSerializedMetric(client, serializedMetric);\n  client.emit(\"afterCaptureMetric\", processedMetric);\n}\nfunction _INTERNAL_flushMetricsBuffer(client, maybeMetricBuffer) {\n  const metricBuffer = maybeMetricBuffer ?? _INTERNAL_getMetricBuffer(client) ?? [];\n  if (metricBuffer.length === 0) {\n    return;\n  }\n  const clientOptions = client.getOptions();\n  const envelope = createMetricEnvelope(\n    metricBuffer,\n    clientOptions._metadata,\n    clientOptions.tunnel,\n    client.getDsn(),\n    client.getDataCollectionOptions().userInfo\n  );\n  _getBufferMap().set(client, []);\n  client.emit(\"flushMetrics\");\n  client.sendEnvelope(envelope);\n}\nfunction _INTERNAL_getMetricBuffer(client) {\n  return _getBufferMap().get(client);\n}\nfunction _getBufferMap() {\n  return getGlobalSingleton(\"clientToMetricBufferMap\", () => /* @__PURE__ */ new WeakMap());\n}\n\nexport { _INTERNAL_captureMetric, _INTERNAL_captureSerializedMetric, _INTERNAL_flushMetricsBuffer, _INTERNAL_getMetricBuffer };\n//# sourceMappingURL=internal.js.map\n","const SEMANTIC_ATTRIBUTE_SENTRY_SAMPLE_RATE = \"sentry.sample_rate\";\nconst SEMANTIC_ATTRIBUTE_SENTRY_PREVIOUS_TRACE_SAMPLE_RATE = \"sentry.previous_trace_sample_rate\";\nconst SEMANTIC_ATTRIBUTE_SENTRY_OP = \"sentry.op\";\nconst SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN = \"sentry.origin\";\nconst SEMANTIC_ATTRIBUTE_SENTRY_STATUS_MESSAGE = \"sentry.status.message\";\nconst SEMANTIC_ATTRIBUTE_SENTRY_IDLE_SPAN_FINISH_REASON = \"sentry.idle_span_finish_reason\";\nconst SEMANTIC_ATTRIBUTE_SENTRY_MEASUREMENT_UNIT = \"sentry.measurement_unit\";\nconst SEMANTIC_ATTRIBUTE_SENTRY_MEASUREMENT_VALUE = \"sentry.measurement_value\";\nconst SEMANTIC_ATTRIBUTE_SENTRY_RELEASE = \"sentry.release\";\nconst SEMANTIC_ATTRIBUTE_SENTRY_ENVIRONMENT = \"sentry.environment\";\nconst SEMANTIC_ATTRIBUTE_SENTRY_SEGMENT_NAME = \"sentry.segment.name\";\nconst SEMANTIC_ATTRIBUTE_SENTRY_SEGMENT_ID = \"sentry.segment.id\";\nconst SEMANTIC_ATTRIBUTE_SENTRY_SDK_NAME = \"sentry.sdk.name\";\nconst SEMANTIC_ATTRIBUTE_SENTRY_SDK_VERSION = \"sentry.sdk.version\";\nconst SEMANTIC_ATTRIBUTE_SENTRY_SDK_INTEGRATIONS = \"sentry.sdk.integrations\";\nconst SEMANTIC_ATTRIBUTE_USER_ID = \"user.id\";\nconst SEMANTIC_ATTRIBUTE_USER_EMAIL = \"user.email\";\nconst SEMANTIC_ATTRIBUTE_USER_IP_ADDRESS = \"user.ip_address\";\nconst SEMANTIC_ATTRIBUTE_USER_USERNAME = \"user.name\";\nconst SEMANTIC_ATTRIBUTE_SENTRY_CUSTOM_SPAN_NAME = \"sentry.custom_span_name\";\nconst SEMANTIC_ATTRIBUTE_PROFILE_ID = \"sentry.profile_id\";\nconst SEMANTIC_ATTRIBUTE_EXCLUSIVE_TIME = \"sentry.exclusive_time\";\nconst SEMANTIC_ATTRIBUTE_CACHE_HIT = \"cache.hit\";\nconst SEMANTIC_ATTRIBUTE_CACHE_KEY = \"cache.key\";\nconst SEMANTIC_ATTRIBUTE_CACHE_ITEM_SIZE = \"cache.item_size\";\nconst SEMANTIC_ATTRIBUTE_HTTP_REQUEST_METHOD = \"http.request.method\";\nconst SEMANTIC_ATTRIBUTE_URL_FULL = \"url.full\";\nconst SEMANTIC_LINK_ATTRIBUTE_LINK_TYPE = \"sentry.link.type\";\nconst GEN_AI_CONVERSATION_ID_ATTRIBUTE = \"gen_ai.conversation.id\";\n\nexport { GEN_AI_CONVERSATION_ID_ATTRIBUTE, SEMANTIC_ATTRIBUTE_CACHE_HIT, SEMANTIC_ATTRIBUTE_CACHE_ITEM_SIZE, SEMANTIC_ATTRIBUTE_CACHE_KEY, SEMANTIC_ATTRIBUTE_EXCLUSIVE_TIME, SEMANTIC_ATTRIBUTE_HTTP_REQUEST_METHOD, SEMANTIC_ATTRIBUTE_PROFILE_ID, SEMANTIC_ATTRIBUTE_SENTRY_CUSTOM_SPAN_NAME, SEMANTIC_ATTRIBUTE_SENTRY_ENVIRONMENT, SEMANTIC_ATTRIBUTE_SENTRY_IDLE_SPAN_FINISH_REASON, SEMANTIC_ATTRIBUTE_SENTRY_MEASUREMENT_UNIT, SEMANTIC_ATTRIBUTE_SENTRY_MEASUREMENT_VALUE, SEMANTIC_ATTRIBUTE_SENTRY_OP, SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN, SEMANTIC_ATTRIBUTE_SENTRY_PREVIOUS_TRACE_SAMPLE_RATE, SEMANTIC_ATTRIBUTE_SENTRY_RELEASE, SEMANTIC_ATTRIBUTE_SENTRY_SAMPLE_RATE, SEMANTIC_ATTRIBUTE_SENTRY_SDK_INTEGRATIONS, SEMANTIC_ATTRIBUTE_SENTRY_SDK_NAME, SEMANTIC_ATTRIBUTE_SENTRY_SDK_VERSION, SEMANTIC_ATTRIBUTE_SENTRY_SEGMENT_ID, SEMANTIC_ATTRIBUTE_SENTRY_SEGMENT_NAME, SEMANTIC_ATTRIBUTE_SENTRY_STATUS_MESSAGE, SEMANTIC_ATTRIBUTE_URL_FULL, SEMANTIC_ATTRIBUTE_USER_EMAIL, SEMANTIC_ATTRIBUTE_USER_ID, SEMANTIC_ATTRIBUTE_USER_IP_ADDRESS, SEMANTIC_ATTRIBUTE_USER_USERNAME, SEMANTIC_LINK_ATTRIBUTE_LINK_TYPE };\n//# sourceMappingURL=semanticAttributes.js.map\n","import { getClient } from '../currentScopes.js';\n\nfunction hasSpansEnabled(maybeOptions) {\n  if (typeof __SENTRY_TRACING__ === \"boolean\" && !__SENTRY_TRACING__) {\n    return false;\n  }\n  const options = maybeOptions || getClient()?.getOptions();\n  return !!options && // Note: This check is `!= null`, meaning \"nullish\". `0` is not \"nullish\", `undefined` and `null` are. (This comment was brought to you by 15 minutes of questioning life)\n  (options.tracesSampleRate != null || !!options.tracesSampler);\n}\n\nexport { hasSpansEnabled };\n//# sourceMappingURL=hasSpansEnabled.js.map\n","import { addNonEnumerableProperty } from '../utils/object.js';\nimport { generateTraceId, generateSpanId } from '../utils/propagationContext.js';\nimport { TRACE_FLAG_NONE } from '../utils/spanUtils.js';\n\nconst NON_RECORDING_SPAN_FIELD = /* @__PURE__ */ Symbol.for(\"sentry.nonRecordingSpan\");\nclass SentryNonRecordingSpan {\n  constructor(spanContext = {}) {\n    this._traceId = spanContext.traceId || generateTraceId();\n    this._spanId = spanContext.spanId || generateSpanId();\n    this.dropReason = spanContext.dropReason;\n    addNonEnumerableProperty(this, NON_RECORDING_SPAN_FIELD, true);\n  }\n  /** @inheritdoc */\n  spanContext() {\n    return {\n      spanId: this._spanId,\n      traceId: this._traceId,\n      traceFlags: TRACE_FLAG_NONE\n    };\n  }\n  /** @inheritdoc */\n  end(_timestamp) {\n  }\n  /** @inheritdoc */\n  setAttribute(_key, _value) {\n    return this;\n  }\n  /** @inheritdoc */\n  setAttributes(_values) {\n    return this;\n  }\n  /** @inheritdoc */\n  setStatus(_status) {\n    return this;\n  }\n  /** @inheritdoc */\n  updateName(_name) {\n    return this;\n  }\n  /** @inheritdoc */\n  isRecording() {\n    return false;\n  }\n  /** @inheritdoc */\n  addEvent(_name, _attributesOrStartTime, _startTime) {\n    return this;\n  }\n  /** @inheritDoc */\n  addLink(_link) {\n    return this;\n  }\n  /** @inheritDoc */\n  addLinks(_links) {\n    return this;\n  }\n  /**\n   * This should generally not be used,\n   * but we need it for being compliant with the OTEL Span interface.\n   *\n   * @hidden\n   * @internal\n   */\n  recordException(_exception, _time) {\n  }\n}\nfunction spanIsNonRecordingSpan(span) {\n  return !!span && span[NON_RECORDING_SPAN_FIELD] === true;\n}\n\nexport { SentryNonRecordingSpan, spanIsNonRecordingSpan };\n//# sourceMappingURL=sentryNonRecordingSpan.js.map\n","import { DEFAULT_ENVIRONMENT } from '../constants.js';\nimport { getExternalPropagationContext, getClient } from '../currentScopes.js';\nimport { SENTRY_SEGMENT_NAME_SOURCE } from '@sentry/conventions/attributes';\nimport { SEMANTIC_ATTRIBUTE_SENTRY_SAMPLE_RATE, SEMANTIC_ATTRIBUTE_SENTRY_PREVIOUS_TRACE_SAMPLE_RATE } from '../semanticAttributes.js';\nimport { baggageHeaderToDynamicSamplingContext, dynamicSamplingContextToSentryBaggageHeader } from '../utils/baggage.js';\nimport { extractOrgIdFromClient } from '../utils/dsn.js';\nimport { hasSpansEnabled } from '../utils/hasSpansEnabled.js';\nimport { addNonEnumerableProperty } from '../utils/object.js';\nimport { getRootSpan, spanToStaticSpanJSON, spanIsSampled } from '../utils/spanUtils.js';\nimport { spanIsNonRecordingSpan } from './sentryNonRecordingSpan.js';\nimport { getCapturedScopesOnSpan } from './utils.js';\n\nconst FROZEN_DSC_FIELD = \"_frozenDsc\";\nfunction freezeDscOnSpan(span, dsc) {\n  const spanWithMaybeDsc = span;\n  addNonEnumerableProperty(spanWithMaybeDsc, FROZEN_DSC_FIELD, dsc);\n}\nfunction getDynamicSamplingContextFromClient(trace_id, client) {\n  const options = client.getOptions();\n  const { publicKey: public_key } = client.getDsn() || {};\n  const dsc = {\n    environment: options.environment || DEFAULT_ENVIRONMENT,\n    release: options.release,\n    public_key,\n    trace_id,\n    org_id: extractOrgIdFromClient(client)\n  };\n  client.emit(\"createDsc\", dsc);\n  return dsc;\n}\nfunction getDynamicSamplingContextFromScope(client, scope) {\n  if (getExternalPropagationContext()) {\n    return void 0;\n  }\n  const propagationContext = scope.getPropagationContext();\n  return propagationContext.dsc || getDynamicSamplingContextFromClient(propagationContext.traceId, client);\n}\nfunction getDynamicSamplingContextFromSpan(span) {\n  const client = getClient();\n  if (!client) {\n    return {};\n  }\n  const rootSpan = getRootSpan(span);\n  const rootSpanJson = spanToStaticSpanJSON(rootSpan);\n  const rootSpanAttributes = rootSpanJson.data;\n  const traceState = rootSpan.spanContext().traceState;\n  const rootSpanSampleRate = traceState?.get(\"sentry.sample_rate\") ?? rootSpanAttributes[SEMANTIC_ATTRIBUTE_SENTRY_SAMPLE_RATE] ?? rootSpanAttributes[SEMANTIC_ATTRIBUTE_SENTRY_PREVIOUS_TRACE_SAMPLE_RATE];\n  function applyLocalSampleRateToDsc(dsc2) {\n    if (typeof rootSpanSampleRate === \"number\" || typeof rootSpanSampleRate === \"string\") {\n      dsc2.sample_rate = `${rootSpanSampleRate}`;\n    }\n    return dsc2;\n  }\n  const frozenDsc = rootSpan[FROZEN_DSC_FIELD];\n  if (frozenDsc) {\n    return applyLocalSampleRateToDsc(frozenDsc);\n  }\n  const isNonRecordingRoot = spanIsNonRecordingSpan(rootSpan);\n  const isIgnoredRoot = isNonRecordingRoot && rootSpan.dropReason === \"ignored\";\n  if (isNonRecordingRoot && (!hasSpansEnabled(client.getOptions()) || isIgnoredRoot)) {\n    const capturedScope = getCapturedScopesOnSpan(rootSpan).scope;\n    const scopeDsc = capturedScope && getDynamicSamplingContextFromScope(client, capturedScope);\n    if (scopeDsc) {\n      const dsc2 = { ...scopeDsc };\n      if (isIgnoredRoot) {\n        dsc2.sampled = \"false\";\n      }\n      return applyLocalSampleRateToDsc(dsc2);\n    }\n  }\n  const traceStateDsc = traceState?.get(\"sentry.dsc\");\n  const dscOnTraceState = traceStateDsc && baggageHeaderToDynamicSamplingContext(traceStateDsc);\n  if (dscOnTraceState) {\n    return applyLocalSampleRateToDsc(dscOnTraceState);\n  }\n  const dsc = getDynamicSamplingContextFromClient(span.spanContext().traceId, client);\n  const source = rootSpanAttributes[SENTRY_SEGMENT_NAME_SOURCE];\n  const name = rootSpanJson.description;\n  if (source !== \"url\" && name) {\n    dsc.transaction = name;\n  }\n  if (hasSpansEnabled()) {\n    dsc.sampled = String(spanIsSampled(rootSpan));\n    dsc.sample_rand = // In OTEL we store the sample rand on the trace state because we cannot access scopes for NonRecordingSpans\n    // The Sentry OTEL SpanSampler takes care of writing the sample rand on the root span\n    traceState?.get(\"sentry.sample_rand\") ?? // On all other platforms we can actually get the scopes from a root span (we use this as a fallback)\n    getCapturedScopesOnSpan(rootSpan).scope?.getPropagationContext().sampleRand.toString();\n  }\n  applyLocalSampleRateToDsc(dsc);\n  client.emit(\"createDsc\", dsc, rootSpan);\n  return dsc;\n}\nfunction spanToBaggageHeader(span) {\n  const dsc = getDynamicSamplingContextFromSpan(span);\n  return dynamicSamplingContextToSentryBaggageHeader(dsc);\n}\n\nexport { freezeDscOnSpan, getDynamicSamplingContextFromClient, getDynamicSamplingContextFromScope, getDynamicSamplingContextFromSpan, spanToBaggageHeader };\n//# sourceMappingURL=dynamicSamplingContext.js.map\n","import { DEBUG_BUILD } from '../../debug-build.js';\nimport { addNonEnumerableProperty } from '../../utils/object.js';\nimport { safeCallback } from '../../utils/safeCallback.js';\n\nfunction withStaticSpan(callback) {\n  addNonEnumerableProperty(callback, \"_static\", true);\n  return callback;\n}\nfunction withStreamedSpan(callback) {\n  return callback;\n}\nfunction isStaticBeforeSendSpanCallback(callback) {\n  return !!callback && typeof callback === \"function\" && \"_static\" in callback && !!callback._static;\n}\nfunction applyBeforeSendSpanCallback(span, beforeSendSpan) {\n  const modifiedSpan = safeCallback(\n    DEBUG_BUILD ? \"The `beforeSendSpan` callback threw an error, sending the span unmodified:\" : \"\",\n    () => beforeSendSpan(span),\n    () => span\n  );\n  return modifiedSpan || span;\n}\n\nexport { applyBeforeSendSpanCallback, isStaticBeforeSendSpanCallback, withStaticSpan, withStreamedSpan };\n//# sourceMappingURL=beforeSendSpan.js.map\n","import { dsnToString } from '../../utils/dsn.js';\nimport { getSdkMetadataForEnvelopeHeader, createEnvelope } from '../../utils/envelope.js';\nimport { isBrowser } from '../../utils/isBrowser.js';\nimport { safeDateNow } from '../../utils/randomSafeContext.js';\n\nfunction createStreamedSpanEnvelope(serializedSpans, dsc, client) {\n  const options = client.getOptions();\n  const dsn = client.getDsn();\n  const tunnel = options.tunnel;\n  const sdk = getSdkMetadataForEnvelopeHeader(options._metadata);\n  const headers = {\n    sent_at: new Date(safeDateNow()).toISOString(),\n    ...dscHasRequiredProps(dsc) && { trace: dsc },\n    ...sdk && { sdk },\n    ...!!tunnel && dsn && { dsn: dsnToString(dsn) }\n  };\n  return createEnvelope(headers, [createSpanContainerItem(serializedSpans, client)]);\n}\nfunction createSpanContainerItem(serializedSpans, client) {\n  const inferSetting = client.getDataCollectionOptions().userInfo ? \"auto\" : \"never\";\n  return [\n    { type: \"span\", item_count: serializedSpans.length, content_type: \"application/vnd.sentry.items.span.v2+json\" },\n    {\n      version: 2,\n      ingest_settings: isBrowser() ? { infer_ip: inferSetting, infer_user_agent: inferSetting } : void 0,\n      items: serializedSpans\n    }\n  ];\n}\nfunction dscHasRequiredProps(dsc) {\n  return !!dsc.trace_id && !!dsc.public_key;\n}\n\nexport { createSpanContainerItem, createStreamedSpanEnvelope };\n//# sourceMappingURL=envelope.js.map\n","function hasSpanStreamingEnabled(client) {\n  return client.getOptions().traceLifecycle === \"stream\";\n}\n\nexport { hasSpanStreamingEnabled };\n//# sourceMappingURL=hasSpanStreamingEnabled.js.map\n","import { streamedSpanJsonToSerializedSpan } from '../../utils/spanUtils.js';\n\nfunction spanJsonToSerializedStreamedSpan(span) {\n  const streamedSpan = {\n    trace_id: span.trace_id,\n    span_id: span.span_id,\n    parent_span_id: span.parent_span_id,\n    name: span.description || \"\",\n    start_timestamp: span.start_timestamp,\n    end_timestamp: span.timestamp,\n    status: !span.status || span.status === \"ok\" || span.status === \"cancelled\" ? \"ok\" : \"error\",\n    is_segment: false,\n    attributes: { ...span.data },\n    links: span.links\n  };\n  return streamedSpanJsonToSerializedSpan(streamedSpan);\n}\n\nexport { spanJsonToSerializedStreamedSpan };\n//# sourceMappingURL=spanJsonToStreamedSpan.js.map\n","import { DEBUG_BUILD } from './debug-build.js';\nimport { debug } from './utils/debug-logger.js';\nimport { isThenable } from './utils/is.js';\nimport { safeCallback } from './utils/safeCallback.js';\nimport { resolvedSyncPromise, rejectedSyncPromise } from './utils/syncpromise.js';\n\nfunction notifyEventProcessors(processors, event, hint, index = 0, onDrop) {\n  try {\n    const result = _notifyEventProcessors(event, hint, processors, index, onDrop);\n    return isThenable(result) ? result : resolvedSyncPromise(result);\n  } catch (error) {\n    return rejectedSyncPromise(error);\n  }\n}\nfunction _notifyEventProcessors(event, hint, processors, index, onDrop) {\n  const processor = processors[index];\n  if (!event || !processor) {\n    return event;\n  }\n  const processorName = `Event processor \"${processor.id || \"?\"}\"`;\n  let callbackError = false;\n  const result = safeCallback(\n    DEBUG_BUILD ? `${processorName} threw an error, dropping event:` : \"\",\n    () => processor({ ...event }, hint),\n    () => {\n      callbackError = true;\n      return null;\n    }\n  );\n  DEBUG_BUILD && result === null && debug.log(`${processorName} dropped event`);\n  if (isThenable(result)) {\n    return result.then((final) => {\n      if (!final) {\n        onDrop?.(callbackError ? \"callback_error\" : \"event_processor\");\n        return null;\n      }\n      return _notifyEventProcessors(final, hint, processors, index + 1, onDrop);\n    });\n  }\n  if (!result) {\n    onDrop?.(callbackError ? \"callback_error\" : \"event_processor\");\n    return null;\n  }\n  return _notifyEventProcessors(result, hint, processors, index + 1, onDrop);\n}\n\nexport { notifyEventProcessors };\n//# sourceMappingURL=eventProcessors.js.map\n","import { normalizeStackTracePath } from './stacktrace.js';\nimport { GLOBAL_OBJ } from './worldwide.js';\n\nlet parsedStackResults;\nlet lastSentryKeysCount;\nlet lastNativeKeysCount;\nlet cachedFilenameDebugIds;\nfunction getFilenameToDebugIdMap(stackParser) {\n  const sentryDebugIdMap = GLOBAL_OBJ._sentryDebugIds;\n  const nativeDebugIdMap = GLOBAL_OBJ._debugIds;\n  if (!sentryDebugIdMap && !nativeDebugIdMap) {\n    return {};\n  }\n  const sentryDebugIdKeys = sentryDebugIdMap ? Object.keys(sentryDebugIdMap) : [];\n  const nativeDebugIdKeys = nativeDebugIdMap ? Object.keys(nativeDebugIdMap) : [];\n  if (cachedFilenameDebugIds && sentryDebugIdKeys.length === lastSentryKeysCount && nativeDebugIdKeys.length === lastNativeKeysCount) {\n    return cachedFilenameDebugIds;\n  }\n  lastSentryKeysCount = sentryDebugIdKeys.length;\n  lastNativeKeysCount = nativeDebugIdKeys.length;\n  cachedFilenameDebugIds = {};\n  if (!parsedStackResults) {\n    parsedStackResults = {};\n  }\n  const processDebugIds = (debugIdKeys, debugIdMap) => {\n    for (const key of debugIdKeys) {\n      const debugId = debugIdMap[key];\n      const result = parsedStackResults?.[key];\n      if (result && cachedFilenameDebugIds && debugId) {\n        cachedFilenameDebugIds[result[0]] = debugId;\n        if (parsedStackResults) {\n          parsedStackResults[key] = [result[0], debugId];\n        }\n      } else if (debugId) {\n        const parsedStack = stackParser(key);\n        for (let i = parsedStack.length - 1; i >= 0; i--) {\n          const stackFrame = parsedStack[i];\n          const filename = stackFrame?.filename;\n          if (filename && cachedFilenameDebugIds && parsedStackResults) {\n            cachedFilenameDebugIds[filename] = debugId;\n            parsedStackResults[key] = [filename, debugId];\n            break;\n          }\n        }\n      }\n    }\n  };\n  if (sentryDebugIdMap) {\n    processDebugIds(sentryDebugIdKeys, sentryDebugIdMap);\n  }\n  if (nativeDebugIdMap) {\n    processDebugIds(nativeDebugIdKeys, nativeDebugIdMap);\n  }\n  return cachedFilenameDebugIds;\n}\nfunction getDebugImagesForResources(stackParser, resource_paths) {\n  const filenameDebugIdMap = getFilenameToDebugIdMap(stackParser);\n  if (!filenameDebugIdMap) {\n    return [];\n  }\n  const images = [];\n  for (const path of resource_paths) {\n    const normalizedPath = normalizeStackTracePath(path);\n    if (normalizedPath && filenameDebugIdMap[normalizedPath]) {\n      images.push({\n        type: \"sourcemap\",\n        code_file: path,\n        debug_id: filenameDebugIdMap[normalizedPath]\n      });\n    }\n  }\n  return images;\n}\n\nexport { getDebugImagesForResources, getFilenameToDebugIdMap };\n//# sourceMappingURL=debug-ids.js.map\n","import { getTraceContextFromScope } from '../currentScopes.js';\nimport { isPrimitive } from './is.js';\nimport { spanIsSampled, spanToTraceContext } from './spanUtils.js';\n\nconst escapedSpanTraceContexts = /* @__PURE__ */ new WeakMap();\nfunction toWeakMapKey(error) {\n  return isPrimitive(error) ? void 0 : error;\n}\nfunction recordEscapedErrorSpan(error, span) {\n  const key = toWeakMapKey(error);\n  if (!key || !spanIsSampled(span) || escapedSpanTraceContexts.has(key)) {\n    return;\n  }\n  escapedSpanTraceContexts.set(key, spanToTraceContext(span));\n}\nfunction applyEscapedErrorSpanToEvent(event, hint, scope) {\n  const key = toWeakMapKey(hint.originalException);\n  const traceContext = key && escapedSpanTraceContexts.get(key);\n  if (!traceContext) {\n    return;\n  }\n  const eventTraceContext = event.contexts?.trace;\n  const eventTraceId = eventTraceContext?.trace_id ?? (scope && getTraceContextFromScope(scope).trace_id);\n  if (eventTraceId !== traceContext.trace_id) {\n    return;\n  }\n  event.contexts = {\n    ...event.contexts,\n    trace: {\n      ...eventTraceContext,\n      ...traceContext\n    }\n  };\n}\n\nexport { applyEscapedErrorSpanToEvent, recordEscapedErrorSpan };\n//# sourceMappingURL=errorSpanAttribution.js.map\n","import { getGlobalScope } from '../currentScopes.js';\nimport { getDynamicSamplingContextFromSpan } from '../tracing/dynamicSamplingContext.js';\nimport { merge } from './merge.js';\nimport { spanToTraceContext, getRootSpan, spanToStaticSpanJSON } from './spanUtils.js';\n\nfunction applyScopeDataToEvent(event, data) {\n  const { fingerprint, breadcrumbs, sdkProcessingMetadata } = data;\n  applyDataToEvent(event, data);\n  applyFingerprintToEvent(event, fingerprint);\n  applyBreadcrumbsToEvent(event, breadcrumbs);\n  applySdkMetadataToEvent(event, sdkProcessingMetadata);\n}\nfunction mergeScopeData(data, mergeData) {\n  const {\n    extra,\n    tags,\n    attributes,\n    user,\n    contexts,\n    level,\n    sdkProcessingMetadata,\n    breadcrumbs,\n    fingerprint,\n    eventProcessors,\n    attachments,\n    propagationContext,\n    transactionName\n  } = mergeData;\n  mergeAndOverwriteScopeData(data, \"extra\", extra);\n  mergeAndOverwriteScopeData(data, \"tags\", tags);\n  mergeAndOverwriteScopeData(data, \"attributes\", attributes);\n  mergeAndOverwriteScopeData(data, \"user\", user);\n  mergeAndOverwriteScopeData(data, \"contexts\", contexts);\n  data.sdkProcessingMetadata = merge(data.sdkProcessingMetadata, sdkProcessingMetadata, 2);\n  if (level) {\n    data.level = level;\n  }\n  if (transactionName) {\n    data.transactionName = transactionName;\n  }\n  if (breadcrumbs.length) {\n    data.breadcrumbs = [...data.breadcrumbs, ...breadcrumbs];\n  }\n  if (fingerprint.length) {\n    data.fingerprint = [...data.fingerprint, ...fingerprint];\n  }\n  if (eventProcessors.length) {\n    data.eventProcessors = [...data.eventProcessors, ...eventProcessors];\n  }\n  if (attachments.length) {\n    data.attachments = [...data.attachments, ...attachments];\n  }\n  data.propagationContext = { ...data.propagationContext, ...propagationContext };\n}\nfunction mergeAndOverwriteScopeData(data, prop, mergeVal) {\n  data[prop] = merge(data[prop], mergeVal, 1);\n}\nfunction getCombinedScopeData(isolationScope, currentScope) {\n  const scopeData = getGlobalScope().getScopeData();\n  isolationScope && mergeScopeData(scopeData, isolationScope.getScopeData());\n  currentScope && mergeScopeData(scopeData, currentScope.getScopeData());\n  return scopeData;\n}\nfunction applyDataToEvent(event, data) {\n  const { extra, tags, user, contexts, level, transactionName } = data;\n  if (Object.keys(extra).length) {\n    event.extra = { ...extra, ...event.extra };\n  }\n  if (Object.keys(tags).length) {\n    event.tags = { ...tags, ...event.tags };\n  }\n  if (Object.keys(user).length) {\n    event.user = { ...user, ...event.user };\n  }\n  if (Object.keys(contexts).length) {\n    event.contexts = { ...contexts, ...event.contexts };\n  }\n  if (level) {\n    event.level = level;\n  }\n  if (transactionName && event.type !== \"transaction\") {\n    event.transaction = transactionName;\n  }\n}\nfunction applyBreadcrumbsToEvent(event, breadcrumbs) {\n  const mergedBreadcrumbs = [...event.breadcrumbs || [], ...breadcrumbs];\n  event.breadcrumbs = mergedBreadcrumbs.length ? mergedBreadcrumbs : void 0;\n}\nfunction applySdkMetadataToEvent(event, sdkProcessingMetadata) {\n  event.sdkProcessingMetadata = {\n    ...event.sdkProcessingMetadata,\n    ...sdkProcessingMetadata\n  };\n}\nfunction applySpanToEvent(event, span) {\n  event.contexts = {\n    trace: spanToTraceContext(span),\n    ...event.contexts\n  };\n  event.sdkProcessingMetadata = {\n    dynamicSamplingContext: getDynamicSamplingContextFromSpan(span),\n    ...event.sdkProcessingMetadata\n  };\n  const rootSpan = getRootSpan(span);\n  const transactionName = spanToStaticSpanJSON(rootSpan).description;\n  if (transactionName && !event.transaction && event.type === \"transaction\") {\n    event.transaction = transactionName;\n  }\n}\nfunction applyFingerprintToEvent(event, fingerprint) {\n  event.fingerprint = event.fingerprint ? Array.isArray(event.fingerprint) ? event.fingerprint : [event.fingerprint] : [];\n  if (fingerprint) {\n    event.fingerprint = event.fingerprint.concat(fingerprint);\n  }\n  if (!event.fingerprint.length) {\n    delete event.fingerprint;\n  }\n}\n\nexport { applyScopeDataToEvent, applySpanToEvent, getCombinedScopeData, mergeAndOverwriteScopeData, mergeScopeData };\n//# sourceMappingURL=scopeData.js.map\n","import { DEFAULT_ENVIRONMENT } from '../constants.js';\nimport { notifyEventProcessors } from '../eventProcessors.js';\nimport { Scope } from '../scope.js';\nimport { getFilenameToDebugIdMap } from './debug-ids.js';\nimport { getDataCategoryByType } from './envelope.js';\nimport { applyEscapedErrorSpanToEvent } from './errorSpanAttribution.js';\nimport { isInternalException } from './eventUtils.js';\nimport { uuid4, addExceptionMechanismToCapturedException } from './misc.js';\nimport { normalize } from './normalize.js';\nimport { getCombinedScopeData, applyScopeDataToEvent, applySpanToEvent } from './scopeData.js';\nimport { getActiveSpan } from './spanUtils.js';\nimport { truncate } from './string.js';\nimport { resolvedSyncPromise } from './syncpromise.js';\nimport { dateTimestampInSeconds } from './time.js';\n\nfunction prepareEvent(options, event, hint, scope, client, isolationScope) {\n  const { normalizeDepth = 3, normalizeMaxBreadth = 1e3 } = options;\n  const prepared = {\n    ...event,\n    event_id: event.event_id || hint.event_id || uuid4(),\n    timestamp: event.timestamp || dateTimestampInSeconds()\n  };\n  const integrations = hint.integrations || options.integrations.map((i) => i.name);\n  applyClientOptions(prepared, options);\n  applyIntegrationsMetadata(prepared, integrations);\n  if (client) {\n    client.emit(\"applyFrameMetadata\", event);\n  }\n  if (event.type === void 0) {\n    applyDebugIds(prepared, options.stackParser);\n  }\n  const finalScope = getFinalScope(scope, hint.captureContext);\n  if (hint.mechanism) {\n    addExceptionMechanismToCapturedException(prepared, hint.mechanism);\n  }\n  const clientEventProcessors = client ? client.getEventProcessors() : [];\n  const data = getCombinedScopeData(isolationScope, finalScope);\n  const attachments = [...hint.attachments || [], ...data.attachments];\n  if (attachments.length) {\n    hint.attachments = attachments;\n  }\n  applyScopeDataToEvent(prepared, data);\n  const span = getActiveSpan(finalScope);\n  if (span) {\n    applySpanToEvent(prepared, span);\n  }\n  applyEscapedErrorSpanToEvent(prepared, hint, finalScope);\n  const eventProcessors = [\n    ...clientEventProcessors,\n    // Run scope event processors _after_ all other processors\n    ...data.eventProcessors\n  ];\n  const isTransaction = event.type === \"transaction\";\n  const spanCountBeforeProcessing = event.spans?.length || 0;\n  const result = isInternalException(hint) ? resolvedSyncPromise(prepared) : notifyEventProcessors(eventProcessors, prepared, hint, 0, (reason) => {\n    if (!client) {\n      return;\n    }\n    client.recordDroppedEvent(reason, getDataCategoryByType(event.type));\n    if (isTransaction) {\n      client.recordDroppedEvent(reason, \"span\", 1 + spanCountBeforeProcessing);\n    }\n  });\n  return result.then((evt) => {\n    if (!evt) {\n      return null;\n    }\n    if (isTransaction && client) {\n      const droppedSpanCount = spanCountBeforeProcessing - (evt.spans?.length || 0);\n      if (droppedSpanCount > 0) {\n        client.recordDroppedEvent(\"event_processor\", \"span\", droppedSpanCount);\n      }\n    }\n    applyDebugMeta(evt);\n    if (typeof normalizeDepth === \"number\" && normalizeDepth > 0) {\n      return normalizeEvent(evt, normalizeDepth, normalizeMaxBreadth);\n    }\n    return evt;\n  });\n}\nfunction applyClientOptions(event, options) {\n  const { environment, release, dist, maxValueLength } = options;\n  event.environment = event.environment || environment || DEFAULT_ENVIRONMENT;\n  if (!event.release && release) {\n    event.release = release;\n  }\n  if (!event.dist && dist) {\n    event.dist = dist;\n  }\n  const request = event.request;\n  if (request?.url && maxValueLength) {\n    request.url = truncate(request.url, maxValueLength);\n  }\n  if (maxValueLength) {\n    event.exception?.values?.forEach((exception) => {\n      if (exception.value) {\n        exception.value = truncate(exception.value, maxValueLength);\n      }\n    });\n  }\n}\nfunction applyDebugIds(event, stackParser) {\n  const filenameDebugIdMap = getFilenameToDebugIdMap(stackParser);\n  event.exception?.values?.forEach((exception) => {\n    exception.stacktrace?.frames?.forEach((frame) => {\n      if (frame.filename) {\n        frame.debug_id = filenameDebugIdMap[frame.filename];\n      }\n    });\n  });\n}\nfunction applyDebugMeta(event) {\n  const filenameDebugIdMap = {};\n  event.exception?.values?.forEach((exception) => {\n    exception.stacktrace?.frames?.forEach((frame) => {\n      if (frame.debug_id) {\n        if (frame.abs_path) {\n          filenameDebugIdMap[frame.abs_path] = frame.debug_id;\n        } else if (frame.filename) {\n          filenameDebugIdMap[frame.filename] = frame.debug_id;\n        }\n        delete frame.debug_id;\n      }\n    });\n  });\n  if (Object.keys(filenameDebugIdMap).length === 0) {\n    return;\n  }\n  event.debug_meta = event.debug_meta || {};\n  event.debug_meta.images = event.debug_meta.images || [];\n  const images = event.debug_meta.images;\n  Object.entries(filenameDebugIdMap).forEach(([filename, debug_id]) => {\n    images.push({\n      type: \"sourcemap\",\n      code_file: filename,\n      debug_id\n    });\n  });\n}\nfunction applyIntegrationsMetadata(event, integrationNames) {\n  if (integrationNames.length > 0) {\n    event.sdk = event.sdk || {};\n    event.sdk.integrations = [...event.sdk.integrations || [], ...integrationNames];\n  }\n}\nfunction normalizeEvent(event, depth, maxBreadth) {\n  if (!event) {\n    return null;\n  }\n  const normalized = {\n    ...event,\n    ...event.breadcrumbs && {\n      breadcrumbs: event.breadcrumbs.map((b) => ({\n        ...b,\n        ...b.data && {\n          data: normalize(b.data, depth, maxBreadth)\n        }\n      }))\n    },\n    ...event.user && {\n      user: normalize(event.user, depth, maxBreadth)\n    },\n    ...event.contexts && {\n      contexts: normalize(event.contexts, depth, maxBreadth)\n    },\n    ...event.extra && {\n      extra: normalize(event.extra, depth, maxBreadth)\n    }\n  };\n  if (event.contexts?.trace && normalized.contexts) {\n    normalized.contexts.trace = event.contexts.trace;\n    if (event.contexts.trace.data) {\n      normalized.contexts.trace.data = normalize(event.contexts.trace.data, depth, maxBreadth);\n    }\n  }\n  if (event.spans) {\n    normalized.spans = event.spans.map((span) => {\n      return {\n        ...span,\n        ...span.data && {\n          data: normalize(span.data, depth, maxBreadth)\n        }\n      };\n    });\n  }\n  if (event.contexts?.flags && normalized.contexts) {\n    normalized.contexts.flags = normalize(event.contexts.flags, 3, maxBreadth);\n  }\n  return normalized;\n}\nfunction getFinalScope(scope, captureContext) {\n  if (!captureContext) {\n    return scope;\n  }\n  const finalScope = scope ? scope.clone() : new Scope();\n  finalScope.update(captureContext);\n  return finalScope;\n}\nfunction parseEventHintOrCaptureContext(hint) {\n  if (!hint) {\n    return void 0;\n  }\n  if (hintIsScopeOrFunction(hint)) {\n    return { captureContext: hint };\n  }\n  if (hintIsScopeContext(hint)) {\n    return {\n      captureContext: hint\n    };\n  }\n  return hint;\n}\nfunction hintIsScopeOrFunction(hint) {\n  return hint instanceof Scope || typeof hint === \"function\";\n}\nconst captureContextKeys = [\n  \"user\",\n  \"level\",\n  \"extra\",\n  \"contexts\",\n  \"tags\",\n  \"fingerprint\",\n  \"propagationContext\"\n];\nfunction hintIsScopeContext(hint) {\n  return Object.keys(hint).some((key) => captureContextKeys.includes(key));\n}\n\nexport { applyClientOptions, applyDebugIds, applyDebugMeta, parseEventHintOrCaptureContext, prepareEvent };\n//# sourceMappingURL=prepareEvent.js.map\n","import { DEBUG_BUILD } from '../debug-build.js';\nimport { debug } from './debug-logger.js';\nimport { isMatchingPattern } from './string.js';\n\nfunction logIgnoredSpan(droppedSpan) {\n  debug.log(`Ignoring span ${droppedSpan.op} - ${droppedSpan.description} because it matches \\`ignoreSpans\\`.`);\n}\nfunction shouldIgnoreSpan(span, ignoreSpans) {\n  if (!ignoreSpans?.length) {\n    return false;\n  }\n  for (const pattern of ignoreSpans) {\n    if (isStringOrRegExp(pattern)) {\n      if (span.description && isMatchingPattern(span.description, pattern)) {\n        DEBUG_BUILD && logIgnoredSpan(span);\n        return true;\n      }\n      continue;\n    }\n    const hasAttributes = !!pattern.attributes && Object.keys(pattern.attributes).length > 0;\n    if (!pattern.name && !pattern.op && !hasAttributes) {\n      continue;\n    }\n    const nameMatches = pattern.name ? span.description && isMatchingPattern(span.description, pattern.name) : true;\n    const opMatches = pattern.op ? span.op && isMatchingPattern(span.op, pattern.op) : true;\n    const attrsMatch = pattern.attributes ? Object.entries(pattern.attributes).every(\n      ([key, valuePattern]) => _matchesAttributeValue(span.attributes?.[key], valuePattern)\n    ) : true;\n    if (nameMatches && opMatches && attrsMatch) {\n      DEBUG_BUILD && logIgnoredSpan(span);\n      return true;\n    }\n  }\n  return false;\n}\nfunction _matchesAttributeValue(actual, pat) {\n  if (typeof actual === \"string\" && (typeof pat === \"string\" || pat instanceof RegExp)) {\n    return isMatchingPattern(actual, pat);\n  }\n  if (Array.isArray(actual) && Array.isArray(pat)) {\n    return actual.length === pat.length && actual.every((v, i) => v === pat[i]);\n  }\n  return actual === pat;\n}\nfunction reparentChildSpans(spans, dropSpan) {\n  const droppedSpanParentId = dropSpan.parent_span_id;\n  const droppedSpanId = dropSpan.span_id;\n  if (!droppedSpanParentId) {\n    return;\n  }\n  for (const span of spans) {\n    if (span.parent_span_id === droppedSpanId) {\n      span.parent_span_id = droppedSpanParentId;\n    }\n  }\n}\nfunction isStringOrRegExp(value) {\n  return typeof value === \"string\" || value instanceof RegExp;\n}\n\nexport { reparentChildSpans, shouldIgnoreSpan };\n//# sourceMappingURL=should-ignore-span.js.map\n","const DEFAULTS = {\n  userInfo: true,\n  cookies: true,\n  httpHeaders: { request: true, response: true },\n  httpBodies: [\"incomingRequest\", \"outgoingRequest\", \"incomingResponse\", \"outgoingResponse\"],\n  urlQueryParams: true,\n  graphQL: { document: true, variables: true },\n  genAI: { inputs: true, outputs: true },\n  mcp: { inputs: true, outputs: true },\n  databaseQueryData: true,\n  queues: true,\n  stackFrameVariables: true,\n  frameContextLines: 5\n};\nfunction isCollectBehavior(value) {\n  return typeof value === \"boolean\" || \"allow\" in value || \"deny\" in value;\n}\nfunction resolveHttpHeaders(httpHeaders) {\n  if (httpHeaders === void 0) {\n    return { ...DEFAULTS.httpHeaders };\n  }\n  if (isCollectBehavior(httpHeaders)) {\n    return { request: httpHeaders, response: httpHeaders };\n  }\n  return {\n    request: httpHeaders.request ?? DEFAULTS.httpHeaders.request,\n    response: httpHeaders.response ?? DEFAULTS.httpHeaders.response\n  };\n}\nfunction resolveDataCollectionOptions(options) {\n  const dc = options.dataCollection ?? {};\n  return {\n    userInfo: dc.userInfo ?? DEFAULTS.userInfo,\n    cookies: dc.cookies ?? DEFAULTS.cookies,\n    httpHeaders: resolveHttpHeaders(dc.httpHeaders),\n    httpBodies: dc.httpBodies ?? DEFAULTS.httpBodies,\n    urlQueryParams: dc.urlQueryParams ?? DEFAULTS.urlQueryParams,\n    graphQL: {\n      document: dc.graphQL?.document ?? DEFAULTS.graphQL.document,\n      variables: dc.graphQL?.variables ?? DEFAULTS.graphQL.variables\n    },\n    genAI: {\n      inputs: dc.genAI?.inputs ?? DEFAULTS.genAI.inputs,\n      outputs: dc.genAI?.outputs ?? DEFAULTS.genAI.outputs\n    },\n    mcp: {\n      inputs: dc.mcp?.inputs ?? DEFAULTS.mcp.inputs,\n      outputs: dc.mcp?.outputs ?? DEFAULTS.mcp.outputs\n    },\n    databaseQueryData: dc.databaseQueryData ?? DEFAULTS.databaseQueryData,\n    queues: dc.queues ?? DEFAULTS.queues,\n    stackFrameVariables: dc.stackFrameVariables ?? DEFAULTS.stackFrameVariables,\n    frameContextLines: dc.frameContextLines ?? DEFAULTS.frameContextLines\n  };\n}\n\nexport { resolveDataCollectionOptions };\n//# sourceMappingURL=resolveDataCollectionOptions.js.map\n","import { getEnvelopeEndpointWithUrlEncodedAuth } from './api.js';\nimport { DEFAULT_ENVIRONMENT } from './constants.js';\nimport { getTraceContextFromScope, getCurrentScope, getIsolationScope } from './currentScopes.js';\nimport { DEBUG_BUILD } from './debug-build.js';\nimport { createEventEnvelope, createSessionEnvelope } from './envelope.js';\nimport { setupIntegration, afterSetupIntegrations, setupIntegrations } from './integration.js';\nimport { _INTERNAL_flushLogsBuffer } from './logs/internal.js';\nimport { _INTERNAL_flushMetricsBuffer } from './metrics/internal.js';\nimport { updateSession } from './session.js';\nimport { getDynamicSamplingContextFromScope } from './tracing/dynamicSamplingContext.js';\nimport { isStaticBeforeSendSpanCallback, applyBeforeSendSpanCallback } from './tracing/spans/beforeSendSpan.js';\nimport { extractGenAiSpansFromEvent } from './tracing/spans/extractGenAiSpans.js';\nimport { DEFAULT_TRANSPORT_BUFFER_SIZE } from './transports/base.js';\nimport { createClientReportEnvelope } from './utils/clientreport.js';\nimport { debug, consoleSandbox } from './utils/debug-logger.js';\nimport { makeDsn, dsnToString } from './utils/dsn.js';\nimport { getDataCategoryByType, addItemToEnvelope, createAttachmentEnvelopeItem } from './utils/envelope.js';\nimport { isInternalException, getPossibleEventMessages } from './utils/eventUtils.js';\nimport { isPlainObject, isParameterizedString, isPrimitive, isObjectLike } from './utils/is.js';\nimport { merge } from './utils/merge.js';\nimport { uuid4, checkOrSetAlreadyCaught } from './utils/misc.js';\nimport { parseSampleRate } from './utils/parseSampleRate.js';\nimport { prepareEvent } from './utils/prepareEvent.js';\nimport { makePromiseBuffer, SENTRY_BUFFER_FULL_ERROR } from './utils/promisebuffer.js';\nimport { safeMathRandom } from './utils/randomSafeContext.js';\nimport { safeCallback } from './utils/safeCallback.js';\nimport { shouldIgnoreSpan, reparentChildSpans } from './utils/should-ignore-span.js';\nimport { rejectedSyncPromise } from './utils/syncpromise.js';\nimport { safeUnref } from './utils/timer.js';\nimport { convertTransactionEventToSpanJson, convertSpanJsonToTransactionEvent } from './utils/transactionEvent.js';\nimport { maybeWarnAboutIgnoredTransactionOptions } from './utils/warnAboutIgnoredTransactionOptions.js';\nimport { resolveDataCollectionOptions } from './utils/data-collection/resolveDataCollectionOptions.js';\n\nconst ALREADY_SEEN_ERROR = \"Not capturing exception because it's already been captured.\";\nconst MISSING_RELEASE_FOR_SESSION_ERROR = \"Discarded session because of missing or non-string release\";\nconst INTERNAL_ERROR_SYMBOL = /* @__PURE__ */ Symbol.for(\"SentryInternalError\");\nconst DO_NOT_SEND_EVENT_SYMBOL = /* @__PURE__ */ Symbol.for(\"SentryDoNotSendEventError\");\nconst DEFAULT_FLUSH_INTERVAL = 5e3;\nconst CLOSED_CLIENT_SYMBOL = /* @__PURE__ */ Symbol.for(\"SentryClosedClient\");\nfunction isClientClosed(client) {\n  return CLOSED_CLIENT_SYMBOL in client;\n}\nfunction _makeInternalError(message) {\n  return {\n    message,\n    [INTERNAL_ERROR_SYMBOL]: true\n  };\n}\nfunction _makeDoNotSendEventError(message) {\n  return {\n    message,\n    [DO_NOT_SEND_EVENT_SYMBOL]: true\n  };\n}\nfunction _makeSampledOutError(sampleRate) {\n  return _makeDoNotSendEventError(\n    `Discarding event because it's not included in the random sample (sampling rate = ${sampleRate})`\n  );\n}\nfunction _isInternalError(error) {\n  return isObjectLike(error) && INTERNAL_ERROR_SYMBOL in error;\n}\nfunction _isDoNotSendEventError(error) {\n  return isObjectLike(error) && DO_NOT_SEND_EVENT_SYMBOL in error;\n}\nfunction setupWeightBasedFlushing(client, afterCaptureHook, flushHook, estimateSizeFn, flushFn) {\n  let weight = 0;\n  let flushTimeout;\n  let isTimerActive = false;\n  client.on(flushHook, () => {\n    weight = 0;\n    clearTimeout(flushTimeout);\n    isTimerActive = false;\n  });\n  client.on(afterCaptureHook, (item) => {\n    weight += estimateSizeFn(item);\n    if (weight >= 8e5) {\n      flushFn(client);\n    } else if (!isTimerActive) {\n      const flushInterval = client.getOptions()._flushInterval ?? DEFAULT_FLUSH_INTERVAL;\n      if (flushInterval > 0) {\n        isTimerActive = true;\n        flushTimeout = safeUnref(\n          setTimeout(() => {\n            flushFn(client);\n          }, flushInterval)\n        );\n      }\n    }\n  });\n  client.on(\"flush\", () => {\n    flushFn(client);\n  });\n}\nclass Client {\n  /**\n   * Initializes this client instance.\n   *\n   * @param options Options for the client.\n   */\n  constructor(options) {\n    this._options = {\n      attachStacktrace: true,\n      ...options,\n      traceLifecycle: options.traceLifecycle === \"static\" ? \"static\" : \"stream\"\n    };\n    this._integrations = {};\n    this._numProcessing = 0;\n    this._outcomes = {};\n    this._hooks = {};\n    this._eventProcessors = [];\n    this._promiseBuffer = makePromiseBuffer(options.transportOptions?.bufferSize ?? DEFAULT_TRANSPORT_BUFFER_SIZE);\n    this._dataCollection = resolveDataCollectionOptions(options);\n    this._unhandledSessionStatus = \"crashed\";\n    this._attachStacktraceIsDefault = options.attachStacktrace === void 0;\n    if (options.dsn) {\n      this._dsn = makeDsn(options.dsn);\n    } else {\n      DEBUG_BUILD && debug.warn(\"No DSN provided, client will not send events.\");\n    }\n    const { beforeSendSpan, traceLifecycle } = this._options;\n    if (DEBUG_BUILD && beforeSendSpan && isStaticBeforeSendSpanCallback(beforeSendSpan) !== (traceLifecycle === \"static\")) {\n      consoleSandbox(() => {\n        console.warn(\n          `Ignoring \\`beforeSendSpan\\`: ${traceLifecycle === \"static\" ? \"wrap it with\" : \"remove\"} \\`Sentry.withStaticSpan\\` to use it with \\`traceLifecycle: \"${traceLifecycle}\"\\`.`\n        );\n      });\n    }\n    if (this._dsn) {\n      const url = getEnvelopeEndpointWithUrlEncodedAuth(\n        this._dsn,\n        options.tunnel,\n        options._metadata ? options._metadata.sdk : void 0\n      );\n      this._transport = options.transport({\n        tunnel: this._options.tunnel,\n        recordDroppedEvent: this.recordDroppedEvent.bind(this),\n        ...options.transportOptions,\n        url\n      });\n    }\n    setupWeightBasedFlushing(this, \"afterCaptureLog\", \"flushLogs\", estimateLogSizeInBytes, _INTERNAL_flushLogsBuffer);\n    setupWeightBasedFlushing(\n      this,\n      \"afterCaptureMetric\",\n      \"flushMetrics\",\n      estimateMetricSizeInBytes,\n      _INTERNAL_flushMetricsBuffer\n    );\n  }\n  /**\n   * Captures an exception event and sends it to Sentry.\n   *\n   * Unlike `captureException` exported from every SDK, this method requires that you pass it the current scope.\n   */\n  captureException(exception, hint, scope) {\n    const eventId = uuid4();\n    if (checkOrSetAlreadyCaught(exception)) {\n      DEBUG_BUILD && debug.log(ALREADY_SEEN_ERROR);\n      return eventId;\n    }\n    const hintWithEventId = {\n      event_id: eventId,\n      ...hint\n    };\n    this._process(\n      () => this.eventFromException(exception, hintWithEventId).then((event) => this._captureEvent(event, hintWithEventId, scope)).then((res) => res),\n      \"error\"\n    );\n    return hintWithEventId.event_id;\n  }\n  /**\n   * Captures a message event and sends it to Sentry.\n   *\n   * Unlike `captureMessage` exported from every SDK, this method requires that you pass it the current scope.\n   */\n  captureMessage(message, level, hint, currentScope) {\n    const hintWithEventId = {\n      event_id: uuid4(),\n      ...hint\n    };\n    const eventMessage = isParameterizedString(message) ? message : String(message);\n    const isMessage = isPrimitive(message);\n    const promisedEvent = isMessage ? this.eventFromMessage(eventMessage, level, hintWithEventId).then((event) => {\n      if (event.exception && this._attachStacktraceIsDefault) {\n        event.sdkProcessingMetadata = { ...event.sdkProcessingMetadata, hasDefaultSyntheticStacktrace: true };\n      }\n      return event;\n    }) : this.eventFromException(message, hintWithEventId);\n    this._process(\n      () => promisedEvent.then((event) => this._captureEvent(event, hintWithEventId, currentScope)),\n      isMessage ? \"unknown\" : \"error\"\n    );\n    return hintWithEventId.event_id;\n  }\n  /**\n   * Captures a manually created event and sends it to Sentry.\n   *\n   * Unlike `captureEvent` exported from every SDK, this method requires that you pass it the current scope.\n   */\n  captureEvent(event, hint, currentScope) {\n    const eventId = uuid4();\n    if (hint?.originalException && checkOrSetAlreadyCaught(hint.originalException)) {\n      DEBUG_BUILD && debug.log(ALREADY_SEEN_ERROR);\n      return eventId;\n    }\n    const hintWithEventId = {\n      event_id: eventId,\n      ...hint\n    };\n    const sdkProcessingMetadata = event.sdkProcessingMetadata || {};\n    const capturedSpanScope = sdkProcessingMetadata.capturedSpanScope;\n    const capturedSpanIsolationScope = sdkProcessingMetadata.capturedSpanIsolationScope;\n    const dataCategory = getDataCategoryByType(event.type);\n    this._process(\n      () => this._captureEvent(event, hintWithEventId, capturedSpanScope || currentScope, capturedSpanIsolationScope),\n      dataCategory\n    );\n    return hintWithEventId.event_id;\n  }\n  /**\n   * Captures a session.\n   */\n  captureSession(session) {\n    this.sendSession(session);\n    updateSession(session, { init: false });\n  }\n  /**\n   * Get the current Dsn.\n   */\n  getDsn() {\n    return this._dsn;\n  }\n  /**\n   * Get the current options.\n   */\n  getOptions() {\n    return this._options;\n  }\n  /**\n   * Get the resolved data collection configuration.\n   */\n  getDataCollectionOptions() {\n    return this._dataCollection;\n  }\n  /**\n   * Get the SDK metadata.\n   * @see SdkMetadata\n   */\n  getSdkMetadata() {\n    return this._options._metadata;\n  }\n  /**\n   * Returns the transport that is used by the client.\n   * Please note that the transport gets lazy initialized so it will only be there once the first event has been sent.\n   */\n  getTransport() {\n    return this._transport;\n  }\n  /**\n   * Wait for all events to be sent or the timeout to expire, whichever comes first.\n   *\n   * @param timeout Maximum time in ms the client should wait for events to be flushed. Omitting this parameter will\n   *   cause the client to wait until all events are sent before resolving the promise.\n   * @returns A promise that will resolve with `true` if all events are sent before the timeout, or `false` if there are\n   * still events in the queue when the timeout is reached.\n   */\n  // @ts-expect-error - PromiseLike is a subset of Promise\n  async flush(timeout) {\n    const transport = this._transport;\n    this.emit(\"flush\");\n    if (!transport) {\n      return true;\n    }\n    const clientFinished = await this._isClientDoneProcessing(timeout);\n    const transportFlushed = await transport.flush(timeout);\n    return clientFinished && transportFlushed;\n  }\n  /**\n   * Flush the event queue and set the client to `enabled = false`. See {@link Client.flush}.\n   *\n   * @param {number} timeout Maximum time in ms the client should wait before shutting down. Omitting this parameter will cause\n   *   the client to wait until all events are sent before disabling itself.\n   * @returns {Promise<boolean>} A promise which resolves to `true` if the flush completes successfully before the timeout, or `false` if\n   * it doesn't.\n   */\n  // @ts-expect-error - PromiseLike is a subset of Promise\n  async close(timeout) {\n    Object.defineProperty(this, CLOSED_CLIENT_SYMBOL, { value: true });\n    const result = await this.flush(timeout);\n    this.getOptions().enabled = false;\n    this.emit(\"close\");\n    return result;\n  }\n  /**\n   * Get all installed event processors.\n   */\n  getEventProcessors() {\n    return this._eventProcessors;\n  }\n  /**\n   * Adds an event processor that applies to any event processed by this client.\n   */\n  addEventProcessor(eventProcessor) {\n    this._eventProcessors.push(eventProcessor);\n  }\n  /**\n   * Initialize this client.\n   * Call this after the client was set on a scope.\n   */\n  init() {\n    if (this._isEnabled() || // Force integrations to be setup even if no DSN was set when we have\n    // Spotlight enabled. This is particularly important for browser as we\n    // don't support the `spotlight` option there and rely on the users\n    // adding the `spotlightBrowserIntegration()` to their integrations which\n    // wouldn't get initialized with the check below when there's no DSN set.\n    this._options.integrations.some(({ name }) => name.startsWith(\"Spotlight\"))) {\n      this._setupIntegrations();\n      maybeWarnAboutIgnoredTransactionOptions(this._options);\n    }\n  }\n  /**\n   * Gets an installed integration by its name.\n   *\n   * @returns {Integration|undefined} The installed integration or `undefined` if no integration with that `name` was installed.\n   */\n  getIntegrationByName(integrationName) {\n    return this._integrations[integrationName];\n  }\n  /**\n   * Returns the names of all installed integrations.\n   */\n  getIntegrationNames() {\n    return Object.keys(this._integrations);\n  }\n  /**\n   * Add an integration to the client.\n   * This can be used to e.g. lazy load integrations.\n   * In most cases, this should not be necessary,\n   * and you're better off just passing the integrations via `integrations: []` at initialization time.\n   * However, if you find the need to conditionally load & add an integration, you can use `addIntegration` to do so.\n   */\n  addIntegration(integration) {\n    const isAlreadyInstalled = this._integrations[integration.name];\n    if (!isAlreadyInstalled && integration.beforeSetup) {\n      integration.beforeSetup(this);\n    }\n    setupIntegration(this, integration, this._integrations);\n    if (!isAlreadyInstalled) {\n      afterSetupIntegrations(this, [integration]);\n    }\n  }\n  /**\n   * Send a fully prepared event to Sentry.\n   */\n  sendEvent(event, hint = {}) {\n    this.emit(\"beforeSendEvent\", event, hint);\n    const genAiSpanItem = extractGenAiSpansFromEvent(event, this);\n    let env = createEventEnvelope(event, this._dsn, this._options._metadata, this._options.tunnel);\n    if (!isInternalException(hint)) {\n      for (const attachment of hint.attachments || []) {\n        env = addItemToEnvelope(env, createAttachmentEnvelopeItem(attachment));\n      }\n    }\n    if (genAiSpanItem) {\n      env = addItemToEnvelope(env, genAiSpanItem);\n    }\n    this.sendEnvelope(env).then((sendResponse) => this.emit(\"afterSendEvent\", event, sendResponse));\n  }\n  /**\n   * Send a session or session aggregrates to Sentry.\n   */\n  sendSession(session) {\n    const { release: clientReleaseOption, environment: clientEnvironmentOption = DEFAULT_ENVIRONMENT } = this._options;\n    if (\"aggregates\" in session) {\n      const sessionAttrs = session.attrs || {};\n      if (!sessionAttrs.release && !clientReleaseOption) {\n        DEBUG_BUILD && debug.warn(MISSING_RELEASE_FOR_SESSION_ERROR);\n        return;\n      }\n      sessionAttrs.release = sessionAttrs.release || clientReleaseOption;\n      sessionAttrs.environment = sessionAttrs.environment || clientEnvironmentOption;\n      session.attrs = sessionAttrs;\n    } else {\n      if (!session.release && !clientReleaseOption) {\n        DEBUG_BUILD && debug.warn(MISSING_RELEASE_FOR_SESSION_ERROR);\n        return;\n      }\n      session.release = session.release || clientReleaseOption;\n      session.environment = session.environment || clientEnvironmentOption;\n    }\n    this.emit(\"beforeSendSession\", session);\n    const env = createSessionEnvelope(session, this._dsn, this._options._metadata, this._options.tunnel);\n    this.sendEnvelope(env);\n  }\n  /**\n   * Record on the client that an event got dropped (ie, an event that will not be sent to Sentry).\n   */\n  recordDroppedEvent(reason, category, count = 1) {\n    if (this._options.sendClientReports) {\n      const key = `${reason}:${category}`;\n      DEBUG_BUILD && debug.log(`Recording outcome: \"${key}\"${count > 1 ? ` (${count} times)` : \"\"}`);\n      this._outcomes[key] = (this._outcomes[key] || 0) + count;\n    }\n  }\n  /**\n   * Register a hook on this client.\n   */\n  on(hook, callback) {\n    const hookCallbacks = this._hooks[hook] = this._hooks[hook] || /* @__PURE__ */ new Set();\n    const uniqueCallback = (...args) => callback(...args);\n    hookCallbacks.add(uniqueCallback);\n    return () => {\n      hookCallbacks.delete(uniqueCallback);\n    };\n  }\n  /**\n   * Emit a hook that was previously registered via `on()`.\n   */\n  emit(hook, ...rest) {\n    const callbacks = this._hooks[hook];\n    if (callbacks) {\n      callbacks.forEach((callback) => callback(...rest));\n    }\n  }\n  /**\n   * Send an envelope to Sentry.\n   */\n  // @ts-expect-error - PromiseLike is a subset of Promise\n  async sendEnvelope(envelope) {\n    this.emit(\"beforeEnvelope\", envelope);\n    if (this._isEnabled() && this._transport) {\n      try {\n        const result = await this._transport.send(envelope);\n        this.emit(\"afterEnvelope\", envelope);\n        return result;\n      } catch (reason) {\n        DEBUG_BUILD && debug.error(\"Error while sending envelope:\", reason);\n        return {};\n      }\n    }\n    DEBUG_BUILD && debug.error(\"Transport disabled\");\n    return {};\n  }\n  /**\n   * Register a cleanup function to be called when the client is disposed.\n   * This is useful for integrations that need to clean up global state.\n   *\n   * NOTE: This is a no-op in the base `Client` class. Subclasses like `ServerRuntimeClient`\n   * override this method to actually register and execute cleanup callbacks.\n   */\n  // eslint-disable-next-line @typescript-eslint/no-unused-vars\n  registerCleanup(callback) {\n  }\n  /**\n   * Disposes of the client and releases all resources.\n   *\n   * Subclasses should override this method to clean up their own resources, including invoking\n   * any callbacks registered via {@link Client.registerCleanup}. The base implementation is a\n   * no-op and does NOT execute registered cleanup callbacks.\n   *\n   * After calling dispose(), the client should not be used anymore.\n   */\n  dispose() {\n  }\n  /* eslint-enable @typescript-eslint/unified-signatures */\n  /** Setup integrations for this client. */\n  _setupIntegrations() {\n    const { integrations } = this._options;\n    this._integrations = setupIntegrations(this, integrations);\n    afterSetupIntegrations(this, integrations);\n  }\n  /** Updates existing session based on the provided event */\n  _updateSessionFromEvent(session, event) {\n    let unhandled = event.level === \"fatal\";\n    let errored = false;\n    const exceptions = event.exception?.values;\n    if (exceptions) {\n      errored = true;\n      unhandled = false;\n      for (const ex of exceptions) {\n        if (ex.mechanism?.handled === false) {\n          unhandled = true;\n          break;\n        }\n      }\n    }\n    const sessionNonTerminal = session.status === \"ok\";\n    const shouldUpdateAndSend = sessionNonTerminal && session.errors === 0 || sessionNonTerminal && unhandled;\n    if (shouldUpdateAndSend) {\n      updateSession(session, {\n        ...unhandled && { status: this._unhandledSessionStatus },\n        errors: session.errors || Number(errored || unhandled)\n      });\n      this.captureSession(session);\n    }\n  }\n  /**\n   * Determine if the client is finished processing. Returns a promise because it will wait `timeout` ms before saying\n   * \"no\" (resolving to `false`) in order to give the client a chance to potentially finish first.\n   *\n   * @param timeout The time, in ms, after which to resolve to `false` if the client is still busy. Passing `0` (or not\n   * passing anything) will make the promise wait as long as it takes for processing to finish before resolving to\n   * `true`.\n   * @returns A promise which will resolve to `true` if processing is already done or finishes before the timeout, and\n   * `false` otherwise\n   */\n  async _isClientDoneProcessing(timeout) {\n    let ticked = 0;\n    while (!timeout || ticked < timeout) {\n      await new Promise((resolve) => setTimeout(resolve, 1));\n      if (!this._numProcessing) {\n        return true;\n      }\n      ticked++;\n    }\n    return false;\n  }\n  /** Determines whether this SDK is enabled and a transport is present. */\n  _isEnabled() {\n    return this.getOptions().enabled !== false && this._transport !== void 0;\n  }\n  /**\n   * Adds common information to events.\n   *\n   * The information includes release and environment from `options`,\n   * breadcrumbs and context (extra, tags and user) from the scope.\n   *\n   * Information that is already present in the event is never overwritten. For\n   * nested objects, such as the context, keys are merged.\n   *\n   * @param event The original event.\n   * @param hint May contain additional information about the original exception.\n   * @param currentScope A scope containing event metadata.\n   * @returns A new event with more information.\n   */\n  _prepareEvent(event, hint, currentScope, isolationScope) {\n    const options = this.getOptions();\n    const integrations = this.getIntegrationNames();\n    if (!hint.integrations && integrations.length) {\n      hint.integrations = integrations;\n    }\n    this.emit(\"preprocessEvent\", event, hint);\n    if (!event.type) {\n      isolationScope.setLastEventId(event.event_id || hint.event_id);\n    }\n    return prepareEvent(options, event, hint, currentScope, this, isolationScope).then((evt) => {\n      if (evt === null) {\n        return evt;\n      }\n      this.emit(\"postprocessEvent\", evt, hint);\n      evt.contexts = {\n        trace: { ...evt.contexts?.trace, ...getTraceContextFromScope(currentScope) },\n        ...evt.contexts\n      };\n      const dynamicSamplingContext = getDynamicSamplingContextFromScope(this, currentScope);\n      evt.sdkProcessingMetadata = {\n        dynamicSamplingContext,\n        ...evt.sdkProcessingMetadata\n      };\n      return evt;\n    });\n  }\n  /**\n   * Processes the event and logs an error in case of rejection\n   * @param event\n   * @param hint\n   * @param scope\n   */\n  _captureEvent(event, hint = {}, currentScope = getCurrentScope(), isolationScope = getIsolationScope()) {\n    if (DEBUG_BUILD && isErrorEvent(event)) {\n      debug.log(`Captured error event \\`${getPossibleEventMessages(event)[0] || \"<unknown>\"}\\``);\n    }\n    return this._processEvent(event, hint, currentScope, isolationScope).then(\n      (finalEvent) => {\n        return finalEvent.event_id;\n      },\n      (reason) => {\n        if (DEBUG_BUILD) {\n          if (_isDoNotSendEventError(reason)) {\n            debug.log(reason.message);\n          } else if (_isInternalError(reason)) {\n            debug.warn(reason.message);\n          } else {\n            debug.warn(reason);\n          }\n        }\n        return void 0;\n      }\n    );\n  }\n  /**\n   * Processes an event (either error or message) and sends it to Sentry.\n   *\n   * This also adds breadcrumbs and context information to the event. However,\n   * platform specific meta data (such as the User's IP address) must be added\n   * by the SDK implementor.\n   *\n   *\n   * @param event The event to send to Sentry.\n   * @param hint May contain additional information about the original exception.\n   * @param currentScope A scope containing event metadata.\n   * @returns A SyncPromise that resolves with the event or rejects in case event was/will not be send.\n   */\n  _processEvent(event, hint, currentScope, isolationScope) {\n    const options = this.getOptions();\n    const { sampleRate } = options;\n    const isTransaction = isTransactionEvent(event);\n    const isError = isErrorEvent(event);\n    const eventType = event.type || \"error\";\n    const beforeSendLabel = `before send for type \\`${eventType}\\``;\n    let beforeSendDropReason = \"before_send\";\n    let ignoredSpanCount = 0;\n    const parsedSampleRate = typeof sampleRate === \"undefined\" ? void 0 : parseSampleRate(sampleRate);\n    const isSampledOut = isError && typeof parsedSampleRate === \"number\" && safeMathRandom() > parsedSampleRate;\n    const dataCategory = getDataCategoryByType(event.type);\n    let preparedSpanCount = 0;\n    const session = currentScope.getSession() || isolationScope.getSession();\n    if (isSampledOut && session?.status !== \"ok\") {\n      this.recordDroppedEvent(\"sample_rate\", \"error\");\n      return rejectedSyncPromise(_makeSampledOutError(sampleRate));\n    }\n    return this._prepareEvent(event, hint, currentScope, isolationScope).then((prepared) => {\n      if (prepared === null) {\n        throw _makeDoNotSendEventError(\"An event processor returned `null`, will not send event.\");\n      }\n      preparedSpanCount = prepared.spans?.length || 0;\n      if (isInternalException(hint)) {\n        return prepared;\n      }\n      return processBeforeSend(\n        options,\n        prepared,\n        hint,\n        (reason) => {\n          beforeSendDropReason = reason;\n        },\n        (count) => {\n          ignoredSpanCount = count;\n        }\n      );\n    }).then((processedEvent) => {\n      if (ignoredSpanCount) {\n        this.recordDroppedEvent(\"ignored\", \"span\", ignoredSpanCount);\n      }\n      const isValidEvent = isPlainObject(processedEvent);\n      if (!isValidEvent || processedEvent === null) {\n        this.recordDroppedEvent(beforeSendDropReason, dataCategory);\n        if (isTransaction) {\n          this.recordDroppedEvent(beforeSendDropReason, \"span\", 1 + preparedSpanCount - ignoredSpanCount);\n        }\n        if (processedEvent !== null) {\n          throw _makeInternalError(`${beforeSendLabel} must return \\`null\\` or a valid event.`);\n        }\n        const dropMessage = beforeSendDropReason === \"ignored\" ? \"Transaction matched `ignoreSpans`\" : `${beforeSendLabel} ${beforeSendDropReason === \"callback_error\" ? \"threw an error\" : \"returned `null`\"}`;\n        throw _makeDoNotSendEventError(`${dropMessage}, will not send event.`);\n      }\n      if (isError && session) {\n        this._updateSessionFromEvent(session, processedEvent);\n      }\n      if (isSampledOut) {\n        this.recordDroppedEvent(\"sample_rate\", \"error\");\n        throw _makeSampledOutError(sampleRate);\n      }\n      if (isTransaction) {\n        const droppedSpanCount = preparedSpanCount - ignoredSpanCount - (processedEvent.spans?.length || 0);\n        if (droppedSpanCount > 0) {\n          this.recordDroppedEvent(\"before_send\", \"span\", droppedSpanCount);\n        }\n      }\n      const transactionInfo = processedEvent.transaction_info;\n      if (isTransaction && transactionInfo && processedEvent.transaction !== event.transaction) {\n        const source = \"custom\";\n        processedEvent.transaction_info = {\n          ...transactionInfo,\n          source\n        };\n      }\n      this.sendEvent(processedEvent, hint);\n      return processedEvent;\n    }).then(null, (reason) => {\n      if (_isDoNotSendEventError(reason) || _isInternalError(reason)) {\n        throw reason;\n      }\n      this.captureException(reason, {\n        mechanism: {\n          handled: false,\n          type: \"internal\"\n        },\n        data: {\n          __sentry__: true\n        },\n        originalException: reason\n      });\n      throw _makeInternalError(\n        `Event processing pipeline threw an error, original event will not be sent. Details have been sent as a new event.\nReason: ${reason}`\n      );\n    });\n  }\n  /**\n   * Occupies the client with processing and event\n   */\n  _process(taskProducer, dataCategory) {\n    this._numProcessing++;\n    void this._promiseBuffer.add(taskProducer).then(\n      (value) => {\n        this._numProcessing--;\n        return value;\n      },\n      (reason) => {\n        this._numProcessing--;\n        if (reason === SENTRY_BUFFER_FULL_ERROR) {\n          this.recordDroppedEvent(\"queue_overflow\", dataCategory);\n        }\n        return reason;\n      }\n    );\n  }\n  /**\n   * Clears outcomes on this client and returns them.\n   */\n  _clearOutcomes() {\n    const outcomes = this._outcomes;\n    this._outcomes = {};\n    return Object.entries(outcomes).map(([key, quantity]) => {\n      const [reason, category] = key.split(\":\");\n      return {\n        reason,\n        category,\n        quantity\n      };\n    });\n  }\n  /**\n   * Sends client reports as an envelope.\n   */\n  _flushOutcomes() {\n    DEBUG_BUILD && debug.log(\"Flushing outcomes...\");\n    const outcomes = this._clearOutcomes();\n    if (outcomes.length === 0) {\n      DEBUG_BUILD && debug.log(\"No outcomes to send\");\n      return;\n    }\n    if (!this._dsn) {\n      DEBUG_BUILD && debug.log(\"No dsn provided, will not send outcomes\");\n      return;\n    }\n    DEBUG_BUILD && debug.log(\"Sending outcomes:\", outcomes);\n    const envelope = createClientReportEnvelope(outcomes, this._options.tunnel && dsnToString(this._dsn));\n    this.sendEnvelope(envelope);\n  }\n}\nfunction processBeforeSend(options, event, hint, onDrop, onIgnoredSpans) {\n  const {\n    beforeSend,\n    ignoreSpans,\n    // oxlint-disable-next-line typescript/no-deprecated\n    beforeSendTransaction\n  } = options;\n  const beforeSendSpan = isStaticBeforeSendSpanCallback(options.beforeSendSpan) && options.beforeSendSpan;\n  let processedEvent = event;\n  if (isErrorEvent(processedEvent) && beforeSend) {\n    const errorEvent = processedEvent;\n    return safeCallback(\n      DEBUG_BUILD ? \"The `beforeSend` callback threw an error, dropping the event:\" : \"\",\n      () => beforeSend(errorEvent, hint),\n      () => {\n        onDrop(\"callback_error\");\n        return null;\n      }\n    );\n  }\n  if (isTransactionEvent(processedEvent)) {\n    if (beforeSendSpan || ignoreSpans) {\n      const rootSpanJson = convertTransactionEventToSpanJson(processedEvent);\n      if (ignoreSpans?.length && shouldIgnoreSpan(\n        { description: rootSpanJson.description, op: rootSpanJson.op, attributes: rootSpanJson.data },\n        ignoreSpans\n      )) {\n        onDrop(\"ignored\");\n        return null;\n      }\n      if (beforeSendSpan) {\n        const processedRootSpanJson = applyBeforeSendSpanCallback(rootSpanJson, beforeSendSpan);\n        processedEvent = merge(event, convertSpanJsonToTransactionEvent(processedRootSpanJson));\n      }\n      if (processedEvent.spans) {\n        const processedSpans = [];\n        const initialSpans = processedEvent.spans;\n        for (const span of initialSpans) {\n          if (ignoreSpans?.length && shouldIgnoreSpan({ description: span.description, op: span.op, attributes: span.data }, ignoreSpans)) {\n            reparentChildSpans(initialSpans, span);\n            continue;\n          }\n          if (beforeSendSpan) {\n            processedSpans.push(applyBeforeSendSpanCallback(span, beforeSendSpan));\n          } else {\n            processedSpans.push(span);\n          }\n        }\n        onIgnoredSpans(initialSpans.length - processedSpans.length);\n        processedEvent.spans = processedSpans;\n      }\n    }\n    if (beforeSendTransaction) {\n      return safeCallback(\n        DEBUG_BUILD ? \"The `beforeSendTransaction` callback threw an error, dropping the event:\" : \"\",\n        () => beforeSendTransaction(processedEvent, hint),\n        () => {\n          onDrop(\"callback_error\");\n          return null;\n        }\n      );\n    }\n  }\n  return processedEvent;\n}\nfunction isErrorEvent(event) {\n  return event.type === void 0;\n}\nfunction isTransactionEvent(event) {\n  return event.type === \"transaction\";\n}\nfunction estimateMetricSizeInBytes(metric) {\n  let weight = 0;\n  if (metric.name) {\n    weight += metric.name.length * 2;\n  }\n  weight += 8;\n  return weight + estimateAttributesSizeInBytes(metric.attributes);\n}\nfunction estimateLogSizeInBytes(log) {\n  let weight = 0;\n  if (log.message) {\n    weight += log.message.length * 2;\n  }\n  return weight + estimateAttributesSizeInBytes(log.attributes);\n}\nfunction estimateAttributesSizeInBytes(attributes) {\n  if (!attributes) {\n    return 0;\n  }\n  let weight = 0;\n  Object.values(attributes).forEach((value) => {\n    if (Array.isArray(value)) {\n      weight += value.length * estimatePrimitiveSizeInBytes(value[0]);\n    } else if (isPrimitive(value)) {\n      weight += estimatePrimitiveSizeInBytes(value);\n    } else {\n      weight += 100;\n    }\n  });\n  return weight;\n}\nfunction estimatePrimitiveSizeInBytes(value) {\n  if (typeof value === \"string\") {\n    return value.length * 2;\n  } else if (typeof value === \"number\") {\n    return 8;\n  } else if (typeof value === \"boolean\") {\n    return 4;\n  }\n  return 0;\n}\n\nexport { Client, isClientClosed };\n//# sourceMappingURL=client.js.map\n","import { consoleSandbox } from './debug-logger.js';\n\nfunction maybeWarnAboutIgnoredTransactionOptions(options) {\n  if (options.traceLifecycle !== \"stream\" || // oxlint-disable-next-line typescript/no-deprecated\n  !(options.beforeSendTransaction || options.ignoreTransactions?.length)) {\n    return;\n  }\n  consoleSandbox(() => {\n    console.warn(\n      \"[Sentry] `beforeSendTransaction` and `ignoreTransactions` are ignored with `traceLifecycle: 'stream'` (enabled by default). Use `beforeSendSpan` and `ignoreSpans` instead, or set `traceLifecycle: 'static'`.\"\n    );\n  });\n}\n\nexport { maybeWarnAboutIgnoredTransactionOptions };\n//# sourceMappingURL=warnAboutIgnoredTransactionOptions.js.map\n","import { createSpanContainerItem } from './envelope.js';\nimport { hasSpanStreamingEnabled } from './hasSpanStreamingEnabled.js';\nimport { spanJsonToSerializedStreamedSpan } from './spanJsonToStreamedSpan.js';\n\nfunction extractGenAiSpansFromEvent(event, client) {\n  if (event.type !== \"transaction\" || !event.spans?.length || !event.sdkProcessingMetadata?.hasGenAiSpans || hasSpanStreamingEnabled(client)) {\n    return void 0;\n  }\n  const genAiSpans = [];\n  const remainingSpans = [];\n  for (const span of event.spans) {\n    if (span.op?.startsWith(\"gen_ai.\")) {\n      genAiSpans.push(spanJsonToSerializedStreamedSpan(span));\n    } else {\n      remainingSpans.push(span);\n    }\n  }\n  if (genAiSpans.length === 0) {\n    return void 0;\n  }\n  event.spans = remainingSpans;\n  return createSpanContainerItem(genAiSpans, client);\n}\n\nexport { extractGenAiSpansFromEvent };\n//# sourceMappingURL=extractGenAiSpans.js.map\n","import { dsnToString } from './utils/dsn.js';\nimport { getSdkMetadataForEnvelopeHeader, createEventEnvelopeHeaders, createEnvelope } from './utils/envelope.js';\nimport { safeDateNow } from './utils/randomSafeContext.js';\n\nfunction _enhanceEventWithSdkInfo(event, newSdkInfo) {\n  if (!newSdkInfo) {\n    return event;\n  }\n  const eventSdkInfo = event.sdk || {};\n  event.sdk = {\n    ...eventSdkInfo,\n    name: eventSdkInfo.name || newSdkInfo.name,\n    version: eventSdkInfo.version || newSdkInfo.version,\n    integrations: [...event.sdk?.integrations || [], ...newSdkInfo.integrations || []],\n    packages: [...event.sdk?.packages || [], ...newSdkInfo.packages || []],\n    settings: event.sdk?.settings || newSdkInfo.settings ? {\n      ...event.sdk?.settings,\n      ...newSdkInfo.settings\n    } : void 0\n  };\n  return event;\n}\nfunction createSessionEnvelope(session, dsn, metadata, tunnel) {\n  const sdkInfo = getSdkMetadataForEnvelopeHeader(metadata);\n  const envelopeHeaders = {\n    sent_at: new Date(safeDateNow()).toISOString(),\n    ...sdkInfo && { sdk: sdkInfo },\n    ...!!tunnel && dsn && { dsn: dsnToString(dsn) }\n  };\n  const envelopeItem = \"aggregates\" in session ? [{ type: \"sessions\" }, session] : [{ type: \"session\" }, session.toJSON()];\n  return createEnvelope(envelopeHeaders, [envelopeItem]);\n}\nfunction createEventEnvelope(event, dsn, metadata, tunnel) {\n  const sdkInfo = getSdkMetadataForEnvelopeHeader(metadata);\n  const eventType = event.type && event.type !== \"replay_event\" ? event.type : \"event\";\n  _enhanceEventWithSdkInfo(event, metadata?.sdk);\n  const envelopeHeaders = createEventEnvelopeHeaders(event, sdkInfo, tunnel, dsn);\n  delete event.sdkProcessingMetadata;\n  const eventItem = [{ type: eventType }, event];\n  return createEnvelope(envelopeHeaders, [eventItem]);\n}\n\nexport { _enhanceEventWithSdkInfo, createEventEnvelope, createSessionEnvelope };\n//# sourceMappingURL=envelope.js.map\n","import { SENTRY_EXCLUSIVE_TIME, SENTRY_PROFILE_ID } from '@sentry/conventions/attributes';\n\nfunction convertTransactionEventToSpanJson(event) {\n  const { trace_id, parent_span_id, span_id, status, origin, data, op, links } = event.contexts?.trace ?? {};\n  return {\n    data: data ?? {},\n    description: event.transaction,\n    op,\n    parent_span_id,\n    span_id: span_id ?? \"\",\n    start_timestamp: event.start_timestamp ?? 0,\n    status: status ?? \"ok\",\n    timestamp: event.timestamp,\n    trace_id: trace_id ?? \"\",\n    origin,\n    links,\n    profile_id: data?.[SENTRY_PROFILE_ID],\n    exclusive_time: data?.[SENTRY_EXCLUSIVE_TIME],\n    measurements: event.measurements,\n    is_segment: true\n  };\n}\nfunction convertSpanJsonToTransactionEvent(span) {\n  return {\n    type: \"transaction\",\n    timestamp: span.timestamp,\n    start_timestamp: span.start_timestamp,\n    transaction: span.description,\n    contexts: {\n      trace: {\n        trace_id: span.trace_id,\n        span_id: span.span_id,\n        parent_span_id: span.parent_span_id,\n        op: span.op,\n        status: span.status,\n        origin: span.origin,\n        links: span.links,\n        data: {\n          ...span.data,\n          ...span.profile_id && { [SENTRY_PROFILE_ID]: span.profile_id },\n          ...span.exclusive_time && { [SENTRY_EXCLUSIVE_TIME]: span.exclusive_time }\n        }\n      }\n    },\n    measurements: span.measurements\n  };\n}\n\nexport { convertSpanJsonToTransactionEvent, convertTransactionEventToSpanJson };\n//# sourceMappingURL=transactionEvent.js.map\n","import { createEnvelope } from './envelope.js';\nimport { dateTimestampInSeconds } from './time.js';\n\nfunction createClientReportEnvelope(discarded_events, dsn, timestamp) {\n  const clientReportItem = [\n    { type: \"client_report\" },\n    {\n      timestamp: timestamp || dateTimestampInSeconds(),\n      discarded_events\n    }\n  ];\n  return createEnvelope(dsn ? { dsn } : {}, [clientReportItem]);\n}\n\nexport { createClientReportEnvelope };\n//# sourceMappingURL=clientreport.js.map\n","import { LRUMap, getClient, safeCallback, debug, parseStringToURLObject } from '@sentry/core';\nimport { DEBUG_BUILD } from './debug-build.js';\nimport { getLocationHref } from './getLocationHref.js';\n\nconst CLIENT_ROUTE_PROVIDERS = /* @__PURE__ */ new WeakMap();\nfunction setRouteProvider(provider, client = getClient()) {\n  if (!client) {\n    DEBUG_BUILD && debug.warn(\"Cannot set a route provider without a client.\");\n    return;\n  }\n  if (DEBUG_BUILD && getRouteProvider(client)) {\n    debug.warn(\n      \"A route provider is already registered for this client and will be replaced. Routes only the previous provider knows about will no longer resolve.\"\n    );\n  }\n  CLIENT_ROUTE_PROVIDERS.set(client, provider);\n}\nfunction getRouteProvider(client = getClient()) {\n  return client && CLIENT_ROUTE_PROVIDERS.get(client);\n}\nfunction resolveRoute(url, client = getClient()) {\n  const provider = getRouteProvider(client);\n  if (!provider) {\n    return void 0;\n  }\n  const urlObject = typeof url === \"string\" ? parseLocation(url) : url;\n  if (!urlObject) {\n    return void 0;\n  }\n  return safeCallback(\n    DEBUG_BUILD ? \"Route provider threw while resolving a route:\" : \"\",\n    () => provider.resolveRoute(urlObject) || void 0,\n    () => void 0\n  );\n}\nfunction resolveCurrentRoute(client = getClient()) {\n  const provider = getRouteProvider(client);\n  return safeCallback(\n    DEBUG_BUILD ? \"Route provider threw while resolving a route:\" : \"\",\n    () => provider?.resolveCurrentRoute() || void 0,\n    () => void 0\n  );\n}\nfunction createUrlRouteProvider(resolveRouteFromUrl) {\n  return {\n    resolveRoute: resolveRouteFromUrl,\n    resolveCurrentRoute: () => {\n      const urlObject = parseLocation(getLocationHref());\n      return urlObject && resolveRouteFromUrl(urlObject);\n    }\n  };\n}\nfunction createCachedRouteProvider(maxEntries = 50) {\n  const routeNames = new LRUMap(maxEntries);\n  return {\n    ...createUrlRouteProvider((url) => routeNames.get(url.pathname)),\n    record(pathname, routeName) {\n      if (pathname && routeName) {\n        routeNames.set(pathname, routeName);\n      }\n    }\n  };\n}\nfunction parseLocation(url) {\n  return url ? parseStringToURLObject(url, getLocationHref() || void 0) : void 0;\n}\n\nexport { createCachedRouteProvider, createUrlRouteProvider, getRouteProvider, resolveCurrentRoute, resolveRoute, setRouteProvider };\n//# sourceMappingURL=routing.js.map\n","function addAutoIpAddressToSession(session) {\n  if (\"aggregates\" in session) {\n    if (session.attrs?.[\"ip_address\"] === void 0) {\n      session.attrs = {\n        ...session.attrs,\n        ip_address: \"{{auto}}\"\n      };\n    }\n  } else {\n    if (session.ipAddress === void 0) {\n      session.ipAddress = \"{{auto}}\";\n    }\n  }\n}\n\nexport { addAutoIpAddressToSession };\n//# sourceMappingURL=ipAddress.js.map\n","import { isParameterizedString, isError, isPlainObject, isErrorEvent } from './is.js';\nimport { addExceptionMechanism, addExceptionTypeValue } from './misc.js';\nimport { normalizeToSize } from './normalize.js';\nimport { extractExceptionKeysForMessage } from './object.js';\n\nfunction parseStackFrames(stackParser, error) {\n  return stackParser(error.stack || \"\", 1);\n}\nfunction hasSentryFetchUrlHost(error) {\n  return isError(error) && \"__sentry_fetch_url_host__\" in error && typeof error.__sentry_fetch_url_host__ === \"string\";\n}\nfunction _enhanceErrorWithSentryInfo(error) {\n  if (hasSentryFetchUrlHost(error)) {\n    return `${error.message} (${error.__sentry_fetch_url_host__})`;\n  }\n  return error.message;\n}\nfunction exceptionFromError(stackParser, error) {\n  const exception = {\n    type: error.name || error.constructor.name,\n    value: _enhanceErrorWithSentryInfo(error)\n  };\n  const frames = parseStackFrames(stackParser, error);\n  if (frames.length) {\n    exception.stacktrace = { frames };\n  }\n  return exception;\n}\nfunction getErrorPropertyFromObject(obj) {\n  for (const prop in obj) {\n    if (Object.prototype.hasOwnProperty.call(obj, prop)) {\n      const value = obj[prop];\n      if (isError(value)) {\n        return value;\n      }\n    }\n  }\n  return void 0;\n}\nfunction getMessageForObject(exception) {\n  if (\"name\" in exception && typeof exception.name === \"string\") {\n    let message = `'${exception.name}' captured as exception`;\n    if (\"message\" in exception && typeof exception.message === \"string\") {\n      message += ` with message '${exception.message}'`;\n    }\n    return message;\n  } else if (\"message\" in exception && typeof exception.message === \"string\") {\n    return exception.message;\n  }\n  const keys = extractExceptionKeysForMessage(exception);\n  if (isErrorEvent(exception)) {\n    return `Event \\`ErrorEvent\\` captured as exception with message \\`${exception.message}\\``;\n  }\n  const className = getObjectClassName(exception);\n  return `${className && className !== \"Object\" ? `'${className}'` : \"Object\"} captured as exception with keys: ${keys}`;\n}\nfunction getObjectClassName(obj) {\n  try {\n    const prototype = Object.getPrototypeOf(obj);\n    return prototype ? prototype.constructor.name : void 0;\n  } catch {\n  }\n}\nfunction getException(client, mechanism, exception, hint) {\n  if (isError(exception)) {\n    return [exception, void 0];\n  }\n  mechanism.synthetic = true;\n  if (isPlainObject(exception)) {\n    const normalizeDepth = client?.getOptions().normalizeDepth;\n    const extras = { [\"__serialized__\"]: normalizeToSize(exception, normalizeDepth) };\n    const errorFromProp = getErrorPropertyFromObject(exception);\n    if (errorFromProp) {\n      return [errorFromProp, extras];\n    }\n    const message = getMessageForObject(exception);\n    const ex2 = hint?.syntheticException || new Error(message);\n    ex2.message = message;\n    return [ex2, extras];\n  }\n  const ex = hint?.syntheticException || new Error(exception);\n  ex.message = `${exception}`;\n  return [ex, void 0];\n}\nfunction eventFromUnknownInput(client, stackParser, exception, hint) {\n  const providedMechanism = hint?.data && hint.data.mechanism;\n  const mechanism = providedMechanism || {\n    handled: true,\n    type: \"generic\"\n  };\n  const [ex, extras] = getException(client, mechanism, exception, hint);\n  const event = {\n    exception: {\n      values: [exceptionFromError(stackParser, ex)]\n    }\n  };\n  if (extras) {\n    event.extra = extras;\n  }\n  addExceptionTypeValue(event, void 0, void 0);\n  addExceptionMechanism(event, mechanism);\n  return {\n    ...event,\n    event_id: hint?.event_id\n  };\n}\nfunction eventFromMessage(stackParser, message, level = \"info\", hint, attachStacktrace) {\n  const event = {\n    event_id: hint?.event_id,\n    level\n  };\n  if (attachStacktrace && hint?.syntheticException) {\n    const frames = parseStackFrames(stackParser, hint.syntheticException);\n    if (frames.length) {\n      event.exception = {\n        values: [\n          {\n            value: message,\n            stacktrace: { frames }\n          }\n        ]\n      };\n      addExceptionMechanism(event, { synthetic: true });\n    }\n  }\n  if (isParameterizedString(message)) {\n    const { __sentry_template_string__, __sentry_template_values__ } = message;\n    event.logentry = {\n      message: __sentry_template_string__,\n      params: __sentry_template_values__\n    };\n    return event;\n  }\n  event.message = message;\n  return event;\n}\n\nexport { _enhanceErrorWithSentryInfo, eventFromMessage, eventFromUnknownInput, exceptionFromError, parseStackFrames };\n//# sourceMappingURL=eventbuilder.js.map\n","import { isErrorEvent, isDOMError, isDOMException, addExceptionTypeValue, isError, isPlainObject, isEvent, addExceptionMechanism, isParameterizedString, getClient, normalizeToSize, extractExceptionKeysForMessage, _INTERNAL_enhanceErrorWithSentryInfo, resolvedSyncPromise } from '@sentry/core';\n\nfunction exceptionFromError(stackParser, ex) {\n  const frames = parseStackFrames(stackParser, ex);\n  const exception = {\n    type: extractType(ex),\n    value: extractMessage(ex)\n  };\n  if (frames.length) {\n    exception.stacktrace = { frames };\n  }\n  if (exception.type === void 0 && exception.value === \"\") {\n    exception.value = \"Unrecoverable error caught\";\n  }\n  return exception;\n}\nfunction eventFromPlainObject(stackParser, exception, syntheticException, isUnhandledRejection) {\n  const client = getClient();\n  const normalizeDepth = client?.getOptions().normalizeDepth;\n  const errorFromProp = getErrorPropertyFromObject(exception);\n  const extra = {\n    __serialized__: normalizeToSize(exception, normalizeDepth)\n  };\n  if (errorFromProp) {\n    return {\n      exception: {\n        values: [exceptionFromError(stackParser, errorFromProp)]\n      },\n      extra\n    };\n  }\n  const exceptionValue = {\n    type: isEvent(exception) ? exception.constructor.name : isUnhandledRejection ? \"UnhandledRejection\" : \"Error\",\n    value: getNonErrorObjectExceptionValue(exception, { isUnhandledRejection })\n  };\n  const event = {\n    exception: {\n      values: [exceptionValue]\n    },\n    extra\n  };\n  if (syntheticException) {\n    const frames = parseStackFrames(stackParser, syntheticException);\n    if (frames.length) {\n      event.exception.values[0].stacktrace = { frames };\n    }\n  }\n  return event;\n}\nfunction eventFromError(stackParser, ex) {\n  return {\n    exception: {\n      values: [exceptionFromError(stackParser, ex)]\n    }\n  };\n}\nfunction parseStackFrames(stackParser, ex) {\n  const stacktrace = ex.stacktrace || ex.stack || \"\";\n  const skipLines = getSkipFirstStackStringLines(ex);\n  const framesToPop = getPopFirstTopFrames(ex);\n  try {\n    return stackParser(stacktrace, skipLines, framesToPop);\n  } catch {\n  }\n  return [];\n}\nconst reactMinifiedRegexp = /Minified React error #\\d+;/i;\nfunction getSkipFirstStackStringLines(ex) {\n  if (ex && reactMinifiedRegexp.test(ex.message)) {\n    return 1;\n  }\n  return 0;\n}\nfunction getPopFirstTopFrames(ex) {\n  if (typeof ex.framesToPop === \"number\") {\n    return ex.framesToPop;\n  }\n  return 0;\n}\nfunction isWebAssemblyException(exception) {\n  if (typeof WebAssembly !== \"undefined\" && typeof WebAssembly.Exception !== \"undefined\") {\n    return exception instanceof WebAssembly.Exception;\n  } else {\n    return false;\n  }\n}\nfunction extractType(ex) {\n  const name = ex?.name;\n  if (!name && isWebAssemblyException(ex)) {\n    const hasTypeInMessage = ex.message && Array.isArray(ex.message) && ex.message.length == 2;\n    return hasTypeInMessage ? ex.message[0] : \"WebAssembly.Exception\";\n  }\n  return name;\n}\nfunction extractMessage(ex) {\n  const message = ex?.message;\n  if (isWebAssemblyException(ex)) {\n    if (Array.isArray(ex.message) && ex.message.length == 2) {\n      return ex.message[1];\n    }\n    return \"wasm exception\";\n  }\n  if (!message) {\n    return \"No error message\";\n  }\n  if (message.error && typeof message.error.message === \"string\") {\n    return _INTERNAL_enhanceErrorWithSentryInfo(message.error);\n  }\n  return _INTERNAL_enhanceErrorWithSentryInfo(ex);\n}\nfunction eventFromException(stackParser, exception, hint, attachStacktrace) {\n  const syntheticException = hint?.syntheticException || void 0;\n  const event = eventFromUnknownInput(stackParser, exception, syntheticException, attachStacktrace);\n  addExceptionMechanism(event);\n  event.level = \"error\";\n  if (hint?.event_id) {\n    event.event_id = hint.event_id;\n  }\n  return resolvedSyncPromise(event);\n}\nfunction eventFromMessage(stackParser, message, level = \"info\", hint, attachStacktrace) {\n  const syntheticException = hint?.syntheticException || void 0;\n  const event = eventFromString(stackParser, message, syntheticException, attachStacktrace);\n  event.level = level;\n  if (hint?.event_id) {\n    event.event_id = hint.event_id;\n  }\n  return resolvedSyncPromise(event);\n}\nfunction eventFromUnknownInput(stackParser, exception, syntheticException, attachStacktrace, isUnhandledRejection) {\n  let event;\n  if (isErrorEvent(exception) && exception.error) {\n    const errorEvent = exception;\n    return eventFromError(stackParser, errorEvent.error);\n  }\n  if (isDOMError(exception) || isDOMException(exception)) {\n    const domException = exception;\n    if (\"stack\" in exception) {\n      event = eventFromError(stackParser, exception);\n      const firstException = event.exception?.values?.[0];\n      if (attachStacktrace && syntheticException && firstException && !firstException.stacktrace) {\n        const frames = parseStackFrames(stackParser, syntheticException);\n        if (frames.length) {\n          firstException.stacktrace = { frames };\n          addExceptionMechanism(event, { synthetic: true });\n        }\n      }\n    } else {\n      const name = domException.name || (isDOMError(domException) ? \"DOMError\" : \"DOMException\");\n      const message = domException.message ? `${name}: ${domException.message}` : name;\n      event = eventFromString(stackParser, message, syntheticException, attachStacktrace);\n      addExceptionTypeValue(event, message);\n    }\n    return event;\n  }\n  if (isError(exception)) {\n    return eventFromError(stackParser, exception);\n  }\n  if (isPlainObject(exception) || isEvent(exception)) {\n    const objectException = exception;\n    event = eventFromPlainObject(stackParser, objectException, syntheticException, isUnhandledRejection);\n    addExceptionMechanism(event, {\n      synthetic: true\n    });\n    return event;\n  }\n  const stringifiedException = String(exception);\n  event = eventFromString(stackParser, stringifiedException, syntheticException, attachStacktrace);\n  addExceptionTypeValue(event, stringifiedException, void 0);\n  addExceptionMechanism(event, {\n    synthetic: true\n  });\n  return event;\n}\nfunction eventFromString(stackParser, message, syntheticException, attachStacktrace) {\n  const event = {};\n  if (attachStacktrace && syntheticException) {\n    const frames = parseStackFrames(stackParser, syntheticException);\n    if (frames.length) {\n      event.exception = {\n        values: [{ value: message, stacktrace: { frames } }]\n      };\n    }\n    addExceptionMechanism(event, { synthetic: true });\n  }\n  if (isParameterizedString(message)) {\n    const { __sentry_template_string__, __sentry_template_values__ } = message;\n    event.logentry = {\n      message: __sentry_template_string__,\n      params: __sentry_template_values__\n    };\n    return event;\n  }\n  event.message = message;\n  return event;\n}\nfunction getNonErrorObjectExceptionValue(exception, { isUnhandledRejection }) {\n  const keys = extractExceptionKeysForMessage(exception);\n  const captureType = isUnhandledRejection ? \"promise rejection\" : \"exception\";\n  if (isErrorEvent(exception)) {\n    return `Event \\`ErrorEvent\\` captured as ${captureType} with message \\`${exception.message}\\``;\n  }\n  if (isEvent(exception)) {\n    const className = getObjectClassName(exception);\n    return `Event \\`${className}\\` (type=${exception.type}) captured as ${captureType}`;\n  }\n  return `Object captured as ${captureType} with keys: ${keys}`;\n}\nfunction getObjectClassName(obj) {\n  try {\n    const prototype = Object.getPrototypeOf(obj);\n    return prototype ? prototype.constructor.name : void 0;\n  } catch {\n  }\n}\nfunction getErrorPropertyFromObject(obj) {\n  return Object.values(obj).find(isError);\n}\n\nexport { eventFromException, eventFromMessage, eventFromUnknownInput, exceptionFromError, extractMessage, extractType };\n//# sourceMappingURL=eventbuilder.js.map\n","const FILTERED_VALUE = \"[Filtered]\";\nconst SENSITIVE_KEY_SNIPPETS = [\n  \"auth\",\n  \"token\",\n  \"secret\",\n  \"session\",\n  // for the user_session cookie\n  \"password\",\n  \"passwd\",\n  \"pwd\",\n  \"key\",\n  \"jwt\",\n  \"bearer\",\n  \"sso\",\n  \"saml\",\n  \"csrf\",\n  \"xsrf\",\n  \"credentials\",\n  \"sid\",\n  \"identity\",\n  // Always treat cookie headers as sensitive in case individual key-value cookie pairs cannot properly be extracted\n  \"set-cookie\",\n  \"cookie\"\n];\nconst SENSITIVE_COOKIE_NAME_SNIPPETS = [\n  // Express / Connect default session cookie\n  \".sid\",\n  // Opaque session ids (PHPSESSID, ASPSESSIONID*, BIGipServer*, *sessid*, …)\n  \"sessid\",\n  // Laravel etc. \"remember me\" tokens\n  \"remember\",\n  // OIDC / OAuth auxiliary (`oauth*` covered by header snippet `auth`)\n  \"oidc\",\n  \"pkce\",\n  \"nonce\",\n  // RFC 6265bis high-security cookie name prefixes\n  \"__secure-\",\n  \"__host-\",\n  // Load balancer / CDN sticky-session cookies (opaque routing tokens)\n  \"awsalb\",\n  \"awselb\",\n  \"akamai\",\n  // BaaS / IdP session cookies (names often omit \"session\")\n  \"__stripe\",\n  \"cognito\",\n  \"firebase\",\n  \"supabase\",\n  \"sb-\",\n  // Step-up / MFA cookies\n  \"mfa\",\n  \"2fa\"\n];\n\nexport { FILTERED_VALUE, SENSITIVE_COOKIE_NAME_SNIPPETS, SENSITIVE_KEY_SNIPPETS };\n//# sourceMappingURL=filtering-snippets.js.map\n","import { FILTERED_VALUE, SENSITIVE_KEY_SNIPPETS } from './filtering-snippets.js';\n\nfunction isSensitiveKey(lower, denySnippets) {\n  return denySnippets.some((snippet) => lower.includes(snippet));\n}\nfunction shouldFilterDataKey(key, behavior, additionalDenyTerms) {\n  if (behavior === false) {\n    return true;\n  }\n  const lowerKey = key.toLowerCase();\n  const denySnippets = additionalDenyTerms != null ? [...SENSITIVE_KEY_SNIPPETS, ...additionalDenyTerms] : SENSITIVE_KEY_SNIPPETS;\n  if (isSensitiveKey(lowerKey, denySnippets)) {\n    return true;\n  }\n  if (behavior === true) {\n    return false;\n  }\n  const terms = \"deny\" in behavior ? behavior.deny : behavior.allow;\n  const matchesConfiguredTerm = terms.some((term) => lowerKey.includes(term.toLowerCase()));\n  return \"deny\" in behavior ? matchesConfiguredTerm : !matchesConfiguredTerm;\n}\nfunction filterKeyValueData(data, behavior, additionalDenyTerms) {\n  if (behavior === false) {\n    return {};\n  }\n  const result = {};\n  for (const key of Object.keys(data)) {\n    result[key] = shouldFilterDataKey(key, behavior, additionalDenyTerms) ? FILTERED_VALUE : data[key];\n  }\n  return result;\n}\n\nexport { filterKeyValueData, shouldFilterDataKey };\n//# sourceMappingURL=filterKeyValueData.js.map\n","import { getIsolationScope, getCurrentScope, getClient } from './currentScopes.js';\nimport { DEBUG_BUILD } from './debug-build.js';\nimport { closeSession, makeSession, updateSession } from './session.js';\nimport { filterKeyValueData } from './utils/data-collection/filterKeyValueData.js';\nimport { debug } from './utils/debug-logger.js';\nimport { parseEventHintOrCaptureContext } from './utils/prepareEvent.js';\nimport { getCombinedScopeData } from './utils/scopeData.js';\nimport { GLOBAL_OBJ } from './utils/worldwide.js';\n\nfunction captureException(exception, hint) {\n  return getCurrentScope().captureException(exception, parseEventHintOrCaptureContext(hint));\n}\nfunction captureMessage(message, captureContext) {\n  const level = typeof captureContext === \"string\" ? captureContext : void 0;\n  const hint = typeof captureContext !== \"string\" ? { captureContext } : void 0;\n  return getCurrentScope().captureMessage(message, level, hint);\n}\nfunction captureEvent(event, hint) {\n  return getCurrentScope().captureEvent(event, hint);\n}\nfunction setContext(name, context) {\n  getIsolationScope().setContext(name, context);\n}\nfunction setExtras(extras) {\n  getIsolationScope().setExtras(extras);\n}\nfunction setExtra(key, extra) {\n  getIsolationScope().setExtra(key, extra);\n}\nfunction setTags(tags) {\n  getIsolationScope().setTags(tags);\n}\nfunction setTag(key, value) {\n  getIsolationScope().setTag(key, value);\n}\nfunction setAttributes(attributes) {\n  getIsolationScope().setAttributes(attributes);\n}\nfunction setAttribute(key, value) {\n  getIsolationScope().setAttribute(key, value);\n}\nfunction setUser(user) {\n  getIsolationScope().setUser(user);\n}\nfunction setConversationId(conversationId) {\n  getIsolationScope().setConversationId(conversationId);\n}\nfunction lastEventId() {\n  return getIsolationScope().lastEventId();\n}\nasync function flush(timeout) {\n  const client = getClient();\n  if (client) {\n    return client.flush(timeout);\n  }\n  DEBUG_BUILD && debug.warn(\"Cannot flush events. No client defined.\");\n  return Promise.resolve(false);\n}\nasync function close(timeout) {\n  const scope = getCurrentScope();\n  const client = scope.getClient();\n  if (client) {\n    const result = await client.close(timeout);\n    if (scope.getClient() === client) {\n      scope.setClient(void 0);\n    }\n    return result;\n  }\n  DEBUG_BUILD && debug.warn(\"Cannot flush events and disable SDK. No client defined.\");\n  return Promise.resolve(false);\n}\nfunction isInitialized() {\n  return !!getClient();\n}\nfunction isEnabled() {\n  const client = getClient();\n  return client?.getOptions().enabled !== false && !!client?.getTransport();\n}\nfunction addEventProcessor(callback) {\n  getIsolationScope().addEventProcessor(callback);\n}\nfunction startSession(context) {\n  const isolationScope = getIsolationScope();\n  const { user } = getCombinedScopeData(isolationScope, getCurrentScope());\n  let userAgent = GLOBAL_OBJ.navigator?.userAgent;\n  if (userAgent) {\n    const headerCollection = getClient()?.getDataCollectionOptions().httpHeaders.request ?? true;\n    userAgent = filterKeyValueData({ \"User-Agent\": userAgent }, headerCollection)[\"User-Agent\"];\n  }\n  const session = makeSession({\n    user,\n    userAgent,\n    ...context\n  });\n  const currentSession = isolationScope.getSession();\n  if (currentSession?.status === \"ok\") {\n    updateSession(currentSession, { status: \"exited\" });\n  }\n  endSession();\n  isolationScope.setSession(session);\n  return session;\n}\nfunction endSession() {\n  const isolationScope = getIsolationScope();\n  const currentScope = getCurrentScope();\n  const session = currentScope.getSession() || isolationScope.getSession();\n  if (session) {\n    closeSession(session);\n  }\n  _sendSessionUpdate();\n  isolationScope.setSession();\n}\nfunction _sendSessionUpdate() {\n  const isolationScope = getIsolationScope();\n  const client = getClient();\n  const session = isolationScope.getSession();\n  if (session && client) {\n    client.captureSession(session);\n  }\n}\nfunction captureSession(end = false) {\n  if (end) {\n    endSession();\n    return;\n  }\n  _sendSessionUpdate();\n}\n\nexport { addEventProcessor, captureEvent, captureException, captureMessage, captureSession, close, endSession, flush, isEnabled, isInitialized, lastEventId, setAttribute, setAttributes, setContext, setConversationId, setExtra, setExtras, setTag, setTags, setUser, startSession };\n//# sourceMappingURL=exports.js.map\n","import { FILTERED_VALUE } from './filtering-snippets.js';\nimport { shouldFilterDataKey } from './filterKeyValueData.js';\n\nfunction filterQueryParams(queryString, behavior) {\n  if (!queryString || behavior === false) {\n    return void 0;\n  }\n  return queryString.split(\"&\").map((pair) => {\n    const separatorIndex = pair.indexOf(\"=\");\n    const encodedKey = separatorIndex === -1 ? pair : pair.slice(0, separatorIndex);\n    const key = new URLSearchParams(`${encodedKey}=`).keys().next().value;\n    return key !== void 0 && shouldFilterDataKey(key, behavior) ? `${encodedKey}=${FILTERED_VALUE}` : pair;\n  }).join(\"&\");\n}\n\nexport { filterQueryParams };\n//# sourceMappingURL=filterQueryParams.js.map\n","import { getClient } from '../../currentScopes.js';\nimport { filterQueryParams } from './filterQueryParams.js';\nimport { filterUrlQuery } from './filterUrlQuery.js';\n\nfunction urlQueryParamsBehavior(client) {\n  return (client ?? getClient())?.getDataCollectionOptions().urlQueryParams ?? true;\n}\nfunction filterCollectedUrl(url, client) {\n  return url === void 0 ? void 0 : filterUrlQuery(url, urlQueryParamsBehavior(client));\n}\nfunction filterCollectedUrlQuery(query, client) {\n  return query ? filterQueryParams(query, urlQueryParamsBehavior(client)) : void 0;\n}\n\nexport { filterCollectedUrl, filterCollectedUrlQuery };\n//# sourceMappingURL=filterCollectedUrl.js.map\n","import { filterQueryParams } from './filterQueryParams.js';\n\nfunction filterUrlQuery(url, behavior) {\n  const fragmentStart = url.indexOf(\"#\");\n  const queryEnd = fragmentStart === -1 ? url.length : fragmentStart;\n  const queryStart = url.indexOf(\"?\");\n  if (queryStart === -1 || queryStart > queryEnd) {\n    return url;\n  }\n  const prefix = url.slice(0, queryStart);\n  const query = url.slice(queryStart + 1, queryEnd);\n  const suffix = url.slice(queryEnd);\n  const filtered = filterQueryParams(query, behavior);\n  return filtered ? `${prefix}?${filtered}${suffix}` : `${prefix}${suffix}`;\n}\n\nexport { filterUrlQuery };\n//# sourceMappingURL=filterUrlQuery.js.map\n","import { WINDOW } from './types.js';\n\nfunction getLocationHref() {\n  try {\n    return WINDOW.document?.location.href ?? \"\";\n  } catch {\n    return \"\";\n  }\n}\n\nexport { getLocationHref };\n//# sourceMappingURL=getLocationHref.js.map\n","import { GLOBAL_OBJ, getOriginalFunction, markFunctionWrapped, addNonEnumerableProperty, withScope, addExceptionTypeValue, addExceptionMechanism, captureException, filterCollectedUrl } from '@sentry/core';\nimport { getLocationHref } from '@sentry/browser-utils';\n\nconst WINDOW = GLOBAL_OBJ;\nlet ignoreOnError = 0;\nconst ignoredErrorReports = [];\nfunction shouldIgnoreOnError(data) {\n  if (ignoreOnError > 0) {\n    return true;\n  }\n  const index = data ? ignoredErrorReports.findIndex((report) => isSameErrorReport(report, data)) : -1;\n  if (index === -1) {\n    return false;\n  }\n  ignoredErrorReports.splice(index, 1);\n  return true;\n}\nfunction ignoreNextOnErrorMatching(report) {\n  ignoredErrorReports.push(report);\n  setTimeout(() => {\n    const index = ignoredErrorReports.indexOf(report);\n    if (index !== -1) {\n      ignoredErrorReports.splice(index, 1);\n    }\n  });\n}\nfunction isSameErrorReport(a, b) {\n  return a.msg === b.msg && a.url === b.url && a.line === b.line && a.column === b.column;\n}\nfunction ignoreNextOnError() {\n  ignoreOnError++;\n  setTimeout(() => {\n    ignoreOnError--;\n  });\n}\nfunction wrap(fn, options = {}) {\n  function isFunction(fn2) {\n    return typeof fn2 === \"function\";\n  }\n  if (!isFunction(fn)) {\n    return fn;\n  }\n  try {\n    const hasOwnWrapper = Object.prototype.hasOwnProperty.call(fn, \"__sentry_wrapped__\");\n    if (hasOwnWrapper) {\n      const wrapper = fn.__sentry_wrapped__;\n      if (typeof wrapper === \"function\") {\n        return wrapper;\n      } else {\n        return fn;\n      }\n    }\n    if (getOriginalFunction(fn)) {\n      return fn;\n    }\n  } catch {\n    return fn;\n  }\n  const sentryWrapped = function(...args) {\n    GLOBAL_OBJ._sentryWrappedDepth = (GLOBAL_OBJ._sentryWrappedDepth || 0) + 1;\n    try {\n      const wrappedArguments = args.map((arg) => wrap(arg, options));\n      return fn.apply(this, wrappedArguments);\n    } catch (ex) {\n      ignoreNextOnError();\n      withScope((scope) => {\n        scope.addEventProcessor((event) => {\n          if (options.mechanism) {\n            addExceptionTypeValue(event, void 0, void 0);\n            addExceptionMechanism(event, options.mechanism);\n          }\n          event.extra = {\n            ...event.extra,\n            arguments: args\n          };\n          return event;\n        });\n        captureException(ex);\n      });\n      throw ex;\n    } finally {\n      GLOBAL_OBJ._sentryWrappedDepth = (GLOBAL_OBJ._sentryWrappedDepth || 0) - 1;\n    }\n  };\n  try {\n    for (const property in fn) {\n      if (Object.prototype.hasOwnProperty.call(fn, property)) {\n        sentryWrapped[property] = fn[property];\n      }\n    }\n  } catch {\n  }\n  markFunctionWrapped(sentryWrapped, fn);\n  addNonEnumerableProperty(fn, \"__sentry_wrapped__\", sentryWrapped);\n  try {\n    const descriptor = Object.getOwnPropertyDescriptor(sentryWrapped, \"name\");\n    if (descriptor.configurable) {\n      Object.defineProperty(sentryWrapped, \"name\", {\n        get() {\n          return fn.name;\n        }\n      });\n    }\n  } catch {\n  }\n  return sentryWrapped;\n}\nfunction getHttpRequestData(client) {\n  const url = getLocationHref();\n  const { referrer } = WINDOW.document || {};\n  const { userAgent } = WINDOW.navigator || {};\n  const headers = {\n    ...referrer && { Referer: filterCollectedUrl(referrer, client) },\n    ...userAgent && { \"User-Agent\": userAgent }\n  };\n  const request = {\n    url,\n    headers\n  };\n  return request;\n}\n\nexport { WINDOW, getHttpRequestData, ignoreNextOnError, ignoreNextOnErrorMatching, shouldIgnoreOnError, wrap };\n//# sourceMappingURL=helpers.js.map\n","import { setRouteProvider } from '@sentry/browser-utils';\nimport { Client, getSDKSource, applySdkMetadata, addAutoIpAddressToSession, timestampInSeconds } from '@sentry/core';\nimport { eventFromException, eventFromMessage } from './eventbuilder.js';\nimport { WINDOW } from './helpers.js';\n\nclass BrowserClient extends Client {\n  /**\n   * Creates a new Browser SDK instance.\n   *\n   * @param options Configuration options for this SDK.\n   */\n  constructor(options) {\n    const opts = applyDefaultOptions(options);\n    const sdkSource = WINDOW.SENTRY_SDK_SOURCE || getSDKSource();\n    applySdkMetadata(opts, \"browser\", [\"browser\"], sdkSource);\n    super(opts);\n    if (opts.routeProvider) {\n      setRouteProvider(opts.routeProvider, this);\n    }\n    this._unhandledSessionStatus = \"unhandled\";\n    const { userInfo } = this.getDataCollectionOptions();\n    if (opts._metadata?.sdk) {\n      opts._metadata.sdk.settings = {\n        // Only allow IP inferral by Relay if the user opted in via dataCollection\n        infer_ip: userInfo ? \"auto\" : \"never\",\n        // purposefully allowing already passed settings to override the default\n        ...opts._metadata.sdk.settings\n      };\n    }\n    const { sendClientReports } = this._options;\n    const checkDrift = () => {\n      timestampInSeconds();\n    };\n    const listeners = [\n      // Flush buffered data when the page becomes hidden (e.g. tab switch, navigation, or the page\n      // being discarded). `flush()` emits the `flush` hook, which drains the span (streaming), log and\n      // metric buffers and hands the resulting envelopes to the transport (which uses `keepalive`).\n      // Client report outcomes don't listen to the `flush` hook, so we flush them separately.\n      [\n        WINDOW.document,\n        \"visibilitychange\",\n        () => {\n          checkDrift();\n          if (WINDOW.document.visibilityState === \"hidden\") {\n            if (sendClientReports) {\n              this._flushOutcomes();\n            }\n            queueMicrotask(() => {\n              void this.flush();\n            });\n          }\n        }\n      ],\n      // `freeze` and `resume` are only fired by Chromium browsers. Other browsers never fire them, so these listeners\n      // are no-ops there.\n      [WINDOW.document, \"freeze\", checkDrift],\n      [WINDOW.document, \"resume\", checkDrift],\n      // Pages restored from the back/forward cache were paused while they were cached.\n      [WINDOW, \"pagehide\", checkDrift],\n      [WINDOW, \"pageshow\", checkDrift]\n    ];\n    listeners.forEach(([target, name, listener]) => target?.addEventListener?.(name, listener));\n    this.on(\n      \"close\",\n      () => listeners.forEach(([target, name, listener]) => target?.removeEventListener?.(name, listener))\n    );\n    if (userInfo) {\n      this.on(\"beforeSendSession\", addAutoIpAddressToSession);\n    }\n  }\n  /**\n   * @inheritDoc\n   */\n  eventFromException(exception, hint) {\n    return eventFromException(this._options.stackParser, exception, hint, this._options.attachStacktrace);\n  }\n  /**\n   * @inheritDoc\n   */\n  eventFromMessage(message, level = \"info\", hint) {\n    return eventFromMessage(this._options.stackParser, message, level, hint, this._options.attachStacktrace);\n  }\n  /**\n   * @inheritDoc\n   */\n  _prepareEvent(event, hint, currentScope, isolationScope) {\n    event.platform = event.platform || \"javascript\";\n    return super._prepareEvent(event, hint, currentScope, isolationScope);\n  }\n}\nfunction applyDefaultOptions(optionsArg) {\n  return {\n    release: typeof __SENTRY_RELEASE__ === \"string\" ? __SENTRY_RELEASE__ : WINDOW.SENTRY_RELEASE?.id,\n    // This supports the variable that sentry-webpack-plugin injects\n    sendClientReports: true,\n    // We default this to true, as it is the safer scenario\n    parentSpanIsAlwaysRootSpan: true,\n    ...optionsArg\n  };\n}\n\nexport { BrowserClient, applyDefaultOptions };\n//# sourceMappingURL=client.js.map\n","import { SDK_VERSION } from './version.js';\n\nfunction applySdkMetadata(options, name, names = [name], source = \"npm\") {\n  const sdk = (options._metadata = options._metadata || {}).sdk = options._metadata.sdk || {};\n  if (!sdk.name) {\n    sdk.name = `sentry.javascript.${name}`;\n    sdk.packages = names.map((name2) => ({\n      name: `${source}:@sentry/${name2}`,\n      version: SDK_VERSION\n    }));\n    sdk.version = SDK_VERSION;\n  }\n}\n\nexport { applySdkMetadata };\n//# sourceMappingURL=sdkMetadata.js.map\n","import { getClient } from '../currentScopes.js';\nimport { isError, isRequest, isObjectLike } from '../utils/is.js';\nimport { isBrowser } from '../utils/isBrowser.js';\nimport { fill, addNonEnumerableProperty } from '../utils/object.js';\nimport { supportsNativeFetch } from '../utils/supports.js';\nimport { timestampInSeconds } from '../utils/time.js';\nimport { GLOBAL_OBJ } from '../utils/worldwide.js';\nimport { addHandler, maybeInstrument, triggerHandlers } from './handlers.js';\n\nfunction addFetchInstrumentationHandler(handler) {\n  const type = \"fetch\";\n  const removeHandler = addHandler(type, handler);\n  maybeInstrument(type, () => instrumentFetch());\n  return removeHandler;\n}\nfunction addFetchEndInstrumentationHandler(handler) {\n  const type = \"fetch-body-resolved\";\n  const removeHandler = addHandler(type, handler);\n  maybeInstrument(type, () => instrumentFetch(streamHandler));\n  return removeHandler;\n}\nfunction instrumentFetch(onFetchResolved) {\n  if (isBrowser() && !supportsNativeFetch()) {\n    return;\n  }\n  fill(GLOBAL_OBJ, \"fetch\", function(originalFetch) {\n    return new Proxy(originalFetch, {\n      apply(target, _thisArg, args) {\n        const virtualError = new Error();\n        const { method, url } = parseFetchArgs(args);\n        const handlerData = {\n          args,\n          fetchData: {\n            method,\n            url\n          },\n          startTimestamp: timestampInSeconds() * 1e3,\n          // // Adding the error to be able to fingerprint the failed fetch event in HttpClient instrumentation\n          virtualError,\n          headers: getHeadersFromFetchArgs(args)\n        };\n        if (!onFetchResolved) {\n          triggerHandlers(\"fetch\", {\n            ...handlerData\n          });\n        }\n        return Reflect.apply(target, GLOBAL_OBJ, args).then(\n          async (response) => {\n            if (onFetchResolved) {\n              onFetchResolved(response);\n            } else {\n              triggerHandlers(\"fetch\", {\n                ...handlerData,\n                endTimestamp: timestampInSeconds() * 1e3,\n                response\n              });\n            }\n            return response;\n          },\n          (error) => {\n            triggerHandlers(\"fetch\", {\n              ...handlerData,\n              endTimestamp: timestampInSeconds() * 1e3,\n              error\n            });\n            if (isError(error) && error.stack === void 0) {\n              error.stack = virtualError.stack;\n              addNonEnumerableProperty(error, \"framesToPop\", 1);\n            }\n            const client = getClient();\n            const enhanceOption = client?.getOptions().enhanceFetchErrorMessages ?? \"always\";\n            const shouldEnhance = enhanceOption !== false;\n            if (shouldEnhance && isError(error) && error.name === \"TypeError\" && (error.message === \"Failed to fetch\" || error.message === \"Load failed\" || error.message === \"NetworkError when attempting to fetch resource.\")) {\n              try {\n                const url2 = new URL(handlerData.fetchData.url, GLOBAL_OBJ.location?.href);\n                const hostname = url2.host;\n                if (hostname) {\n                  if (enhanceOption === \"always\") {\n                    error.message = `${error.message} (${hostname})`;\n                  } else {\n                    addNonEnumerableProperty(error, \"__sentry_fetch_url_host__\", hostname);\n                  }\n                }\n              } catch {\n              }\n            }\n            throw error;\n          }\n        );\n      }\n    });\n  });\n}\nasync function resolveResponse(res, onFinishedResolving) {\n  if (res?.body) {\n    const body = res.body;\n    const responseReader = body.getReader();\n    const maxFetchDurationTimeout = setTimeout(\n      () => {\n        body.cancel().then(null, () => {\n        });\n      },\n      90 * 1e3\n      // 90s\n    );\n    let readingActive = true;\n    while (readingActive) {\n      let chunkTimeout;\n      try {\n        chunkTimeout = setTimeout(() => {\n          body.cancel().then(null, () => {\n          });\n        }, 5e3);\n        const { done } = await responseReader.read();\n        clearTimeout(chunkTimeout);\n        if (done) {\n          onFinishedResolving();\n          readingActive = false;\n        }\n      } catch {\n        readingActive = false;\n      } finally {\n        clearTimeout(chunkTimeout);\n      }\n    }\n    clearTimeout(maxFetchDurationTimeout);\n    responseReader.releaseLock();\n    body.cancel().then(null, () => {\n    });\n  }\n}\nfunction streamHandler(response) {\n  let clonedResponseForResolving;\n  try {\n    clonedResponseForResolving = response.clone();\n  } catch {\n    return;\n  }\n  resolveResponse(clonedResponseForResolving, () => {\n    triggerHandlers(\"fetch-body-resolved\", {\n      endTimestamp: timestampInSeconds() * 1e3,\n      response\n    });\n  });\n}\nfunction hasProp(obj, prop) {\n  return isObjectLike(obj) && !!obj[prop];\n}\nfunction getUrlFromResource(resource) {\n  if (typeof resource === \"string\") {\n    return resource;\n  }\n  if (!resource) {\n    return \"\";\n  }\n  if (hasProp(resource, \"url\")) {\n    return resource.url;\n  }\n  if (resource.toString) {\n    return resource.toString();\n  }\n  return \"\";\n}\nfunction parseFetchArgs(fetchArgs) {\n  if (fetchArgs.length === 0) {\n    return { method: \"GET\", url: \"\" };\n  }\n  if (fetchArgs.length === 2) {\n    const [resource, options] = fetchArgs;\n    return {\n      url: getUrlFromResource(resource),\n      method: hasProp(options, \"method\") ? String(options.method).toUpperCase() : (\n        // Request object as first argument\n        isRequest(resource) && hasProp(resource, \"method\") ? String(resource.method).toUpperCase() : \"GET\"\n      )\n    };\n  }\n  const arg = fetchArgs[0];\n  return {\n    url: getUrlFromResource(arg),\n    method: hasProp(arg, \"method\") ? String(arg.method).toUpperCase() : \"GET\"\n  };\n}\nfunction getHeadersFromFetchArgs(fetchArgs) {\n  const [requestArgument, optionsArgument] = fetchArgs;\n  try {\n    if (typeof optionsArgument === \"object\" && optionsArgument !== null && \"headers\" in optionsArgument && optionsArgument.headers) {\n      return new Headers(optionsArgument.headers);\n    }\n    if (isRequest(requestArgument)) {\n      return new Headers(requestArgument.headers);\n    }\n  } catch {\n  }\n  return;\n}\n\nexport { addFetchEndInstrumentationHandler, addFetchInstrumentationHandler, parseFetchArgs };\n//# sourceMappingURL=fetch.js.map\n","function getBreadcrumbLogLevelFromHttpStatusCode(statusCode) {\n  if (statusCode === void 0) {\n    return void 0;\n  } else if (statusCode >= 400 && statusCode < 500) {\n    return \"warning\";\n  } else if (statusCode >= 500) {\n    return \"error\";\n  } else {\n    return void 0;\n  }\n}\n\nexport { getBreadcrumbLogLevelFromHttpStatusCode };\n//# sourceMappingURL=breadcrumb-log-level.js.map\n","import { HTTP_ROUTE, URL_TEMPLATE, HTTP_REQUEST_METHOD, URL_FULL, URL_QUERY, URL_FRAGMENT, URL_PATH, URL_PORT, URL_SCHEME, SERVER_ADDRESS, URL_DOMAIN, SENTRY_SEGMENT_NAME_SOURCE, SENTRY_ORIGIN } from '@sentry/conventions/attributes';\nimport { filterCollectedUrl, filterCollectedUrlQuery } from './data-collection/filterCollectedUrl.js';\n\nconst DEFAULT_BASE_URL = \"thismessage:/\";\nfunction isURLObjectRelative(url) {\n  return \"isRelative\" in url;\n}\nfunction parseStringToURLObject(url, urlBase) {\n  const isRelative = url.indexOf(\"://\") <= 0 && url.indexOf(\"//\") !== 0;\n  const base = urlBase ?? (isRelative ? DEFAULT_BASE_URL : void 0);\n  try {\n    if (\"canParse\" in URL && !URL.canParse(url, base)) {\n      return void 0;\n    }\n    const fullUrlObject = new URL(url, base);\n    if (isRelative) {\n      return {\n        isRelative,\n        pathname: fullUrlObject.pathname,\n        search: fullUrlObject.search,\n        hash: fullUrlObject.hash\n      };\n    }\n    return fullUrlObject;\n  } catch {\n  }\n  return void 0;\n}\nfunction getSanitizedUrlStringFromUrlObject(url) {\n  if (isURLObjectRelative(url)) {\n    return url.pathname;\n  }\n  const newUrl = new URL(url);\n  newUrl.search = \"\";\n  newUrl.hash = \"\";\n  if ([\"80\", \"443\"].includes(newUrl.port)) {\n    newUrl.port = \"\";\n  }\n  if (newUrl.password) {\n    newUrl.password = \"%filtered%\";\n  }\n  if (newUrl.username) {\n    newUrl.username = \"%filtered%\";\n  }\n  return newUrl.toString();\n}\nfunction getUrlQuery(query) {\n  return query?.replace(/^\\?/, \"\") || void 0;\n}\nfunction getUrlFragment(fragment) {\n  return fragment?.replace(/^#/, \"\") || void 0;\n}\nfunction getUrlDomain(url, base) {\n  try {\n    return new URL(url, base).hostname || void 0;\n  } catch {\n    return void 0;\n  }\n}\nfunction getHttpSpanNameFromUrlObject(urlObject, kind, request, routeName) {\n  const method = request?.method?.toUpperCase() ?? \"GET\";\n  const route = routeName ? routeName : urlObject ? kind === \"client\" ? getSanitizedUrlStringFromUrlObject(urlObject) : urlObject.pathname : \"/\";\n  return `${method} ${route}`;\n}\nfunction getHttpSpanDetailsFromUrlObject(urlObject, kind, spanOrigin, request, routeName, client) {\n  const attributes = {\n    [SENTRY_ORIGIN]: spanOrigin\n  };\n  let nameSource = \"url\";\n  if (routeName) {\n    attributes[kind === \"server\" ? HTTP_ROUTE : URL_TEMPLATE] = routeName;\n    nameSource = \"route\";\n  }\n  if (request?.method) {\n    attributes[HTTP_REQUEST_METHOD] = request.method.toUpperCase();\n  }\n  if (urlObject) {\n    attributes[URL_FULL] = filterCollectedUrl(\n      isURLObjectRelative(urlObject) ? getSanitizedUrlStringFromUrlObject(urlObject) : urlObject.href,\n      client\n    );\n    attributes[URL_QUERY] = filterCollectedUrlQuery(getUrlQuery(urlObject.search), client);\n    attributes[URL_FRAGMENT] = getUrlFragment(urlObject.hash);\n    if (urlObject.pathname) {\n      attributes[URL_PATH] = urlObject.pathname;\n      if (urlObject.pathname === \"/\") {\n        nameSource = \"route\";\n      }\n    }\n    if (!isURLObjectRelative(urlObject)) {\n      if (urlObject.port) {\n        attributes[URL_PORT] = urlObject.port;\n      }\n      if (urlObject.protocol) {\n        attributes[URL_SCHEME] = urlObject.protocol;\n      }\n      if (urlObject.hostname) {\n        attributes[kind === \"server\" ? SERVER_ADDRESS : URL_DOMAIN] = urlObject.hostname;\n      }\n    }\n  }\n  if (kind === \"server\") {\n    attributes[SENTRY_SEGMENT_NAME_SOURCE] = nameSource;\n  }\n  return [getHttpSpanNameFromUrlObject(urlObject, kind, request, routeName), attributes];\n}\nfunction parseUrl(url) {\n  if (!url) {\n    return {};\n  }\n  const match = url.match(/^(([^:/?#]+):)?(\\/\\/([^/?#]*))?([^?#]*)(\\?([^#]*))?(#(.*))?$/);\n  if (!match) {\n    return {};\n  }\n  const query = match[6] || \"\";\n  const fragment = match[8] || \"\";\n  return {\n    host: match[4],\n    path: match[5],\n    protocol: match[2],\n    search: query,\n    hash: fragment,\n    relative: match[5] + query + fragment\n    // everything minus origin\n  };\n}\nfunction stripUrlQueryAndFragment(urlPath) {\n  return urlPath.split(/[?#]/, 1)[0];\n}\nfunction getSanitizedUrlString(url) {\n  const { protocol, host, path } = url;\n  const filteredHost = host?.replace(/^.*@/, \"[filtered]:[filtered]@\").replace(/(:80)$/, \"\").replace(/(:443)$/, \"\") || \"\";\n  return `${protocol ? `${protocol}://` : \"\"}${filteredHost}${path || \"\"}`;\n}\nfunction stripDataUrlContent(url, includeDataPrefix = true) {\n  if (url.startsWith(\"data:\")) {\n    const match = url.match(/^data:([^;,]+)/);\n    const mimeType = match ? match[1] : \"text/plain\";\n    const isBase64 = url.includes(\";base64,\");\n    const dataStart = url.indexOf(\",\");\n    let dataPrefix = \"\";\n    if (includeDataPrefix && dataStart !== -1) {\n      const data = url.slice(dataStart + 1);\n      dataPrefix = data.length > 10 ? `${data.slice(0, 10)}... [truncated]` : data;\n    }\n    return `data:${mimeType}${isBase64 ? \",base64\" : \"\"}${dataPrefix ? `,${dataPrefix}` : \"\"}`;\n  }\n  return url;\n}\n\nexport { getHttpSpanDetailsFromUrlObject, getSanitizedUrlString, getSanitizedUrlStringFromUrlObject, getUrlDomain, getUrlFragment, getUrlQuery, isURLObjectRelative, parseStringToURLObject, parseUrl, stripDataUrlContent, stripUrlQueryAndFragment };\n//# sourceMappingURL=url.js.map\n","import { addHandler, maybeInstrument, triggerHandlers, fill, addNonEnumerableProperty, uuid4 } from '@sentry/core';\nimport { WINDOW } from '../types.js';\n\nconst DEBOUNCE_DURATION = 1e3;\nlet debounceTimerID;\nlet lastCapturedEventType;\nlet lastCapturedEventTargetId;\nfunction getCapture(options) {\n  return typeof options === \"boolean\" ? options : !!options?.capture;\n}\nfunction addClickKeypressInstrumentationHandler(handler) {\n  const type = \"dom\";\n  addHandler(type, handler);\n  maybeInstrument(type, instrumentDOM);\n}\nfunction instrumentDOM() {\n  if (!WINDOW.document) {\n    return;\n  }\n  const triggerDOMHandler = triggerHandlers.bind(null, \"dom\");\n  const globalDOMEventHandler = makeDOMEventHandler(triggerDOMHandler, true);\n  WINDOW.document.addEventListener(\"click\", globalDOMEventHandler, false);\n  WINDOW.document.addEventListener(\"keypress\", globalDOMEventHandler, false);\n  [\"EventTarget\", \"Node\"].forEach((target) => {\n    const globalObject = WINDOW;\n    const proto = globalObject[target]?.prototype;\n    if (!proto?.hasOwnProperty?.(\"addEventListener\")) {\n      return;\n    }\n    fill(proto, \"addEventListener\", function(originalAddEventListener) {\n      return function(type, listener, options) {\n        if ((type === \"click\" || type == \"keypress\") && listener) {\n          try {\n            const handlers = this.__sentry_instrumentation_handlers__ = this.__sentry_instrumentation_handlers__ || {};\n            const handlerForType = handlers[type] = handlers[type] || {\n              captureListeners: /* @__PURE__ */ new WeakSet(),\n              bubbleListeners: /* @__PURE__ */ new WeakSet(),\n              listenerCount: 0\n            };\n            const capture = getCapture(options);\n            if (!handlerForType.handler) {\n              const handler = makeDOMEventHandler(triggerDOMHandler);\n              handlerForType.handler = handler;\n              handlerForType.capture = capture;\n              originalAddEventListener.call(this, type, handler, handlerForType.capture);\n            }\n            const listeners = handlerForType[capture ? \"captureListeners\" : \"bubbleListeners\"];\n            if (!listeners.has(listener)) {\n              if (typeof options === \"object\" && (options?.once || options?.signal)) {\n                handlerForType.sticky = true;\n              } else {\n                listeners.add(listener);\n                handlerForType.listenerCount++;\n              }\n            }\n          } catch {\n          }\n        }\n        return originalAddEventListener.call(this, type, listener, options);\n      };\n    });\n    fill(\n      proto,\n      \"removeEventListener\",\n      function(originalRemoveEventListener) {\n        return function(type, listener, options) {\n          if ((type === \"click\" || type == \"keypress\") && listener) {\n            try {\n              const handlers = this.__sentry_instrumentation_handlers__ || {};\n              const handlerForType = handlers[type];\n              if (handlerForType?.[getCapture(options) ? \"captureListeners\" : \"bubbleListeners\"].delete(listener)) {\n                if (!--handlerForType.listenerCount && !handlerForType.sticky) {\n                  originalRemoveEventListener.call(this, type, handlerForType.handler, handlerForType.capture);\n                  handlerForType.handler = void 0;\n                  delete handlers[type];\n                }\n                if (Object.keys(handlers).length === 0) {\n                  delete this.__sentry_instrumentation_handlers__;\n                }\n              }\n            } catch {\n            }\n          }\n          return originalRemoveEventListener.call(this, type, listener, options);\n        };\n      }\n    );\n  });\n}\nfunction isSimilarToLastCapturedEvent(event) {\n  if (event.type !== lastCapturedEventType) {\n    return false;\n  }\n  try {\n    if (!event.target || event.target._sentryId !== lastCapturedEventTargetId) {\n      return false;\n    }\n  } catch {\n  }\n  return true;\n}\nfunction shouldSkipDOMEvent(eventType, target) {\n  if (eventType !== \"keypress\") {\n    return false;\n  }\n  if (!target?.tagName) {\n    return true;\n  }\n  if (target.tagName === \"INPUT\" || target.tagName === \"TEXTAREA\" || target.isContentEditable) {\n    return false;\n  }\n  return true;\n}\nfunction makeDOMEventHandler(handler, globalListener = false) {\n  return (event) => {\n    if (!event || event[\"_sentryCaptured\"]) {\n      return;\n    }\n    const target = getEventTarget(event);\n    if (shouldSkipDOMEvent(event.type, target)) {\n      return;\n    }\n    addNonEnumerableProperty(event, \"_sentryCaptured\", true);\n    if (target && !target._sentryId) {\n      addNonEnumerableProperty(target, \"_sentryId\", uuid4());\n    }\n    const name = event.type === \"keypress\" ? \"input\" : event.type;\n    if (!isSimilarToLastCapturedEvent(event)) {\n      const handlerData = { event, name, global: globalListener };\n      handler(handlerData);\n      lastCapturedEventType = event.type;\n      lastCapturedEventTargetId = target ? target._sentryId : void 0;\n    }\n    clearTimeout(debounceTimerID);\n    debounceTimerID = WINDOW.setTimeout(() => {\n      lastCapturedEventTargetId = void 0;\n      lastCapturedEventType = void 0;\n    }, DEBOUNCE_DURATION);\n  };\n}\nfunction getEventTarget(event) {\n  try {\n    return event.target;\n  } catch {\n    return null;\n  }\n}\n\nexport { addClickKeypressInstrumentationHandler, instrumentDOM };\n//# sourceMappingURL=dom.js.map\n","import { addHandler, maybeInstrument, timestampInSeconds, isString, triggerHandlers } from '@sentry/core';\nimport { WINDOW } from '../types.js';\n\nconst SENTRY_XHR_DATA_KEY = \"__sentry_xhr_v3__\";\nfunction addXhrInstrumentationHandler(handler) {\n  const type = \"xhr\";\n  addHandler(type, handler);\n  maybeInstrument(type, instrumentXHR);\n}\nfunction instrumentXHR() {\n  if (!WINDOW.XMLHttpRequest) {\n    return;\n  }\n  const xhrproto = XMLHttpRequest.prototype;\n  xhrproto.open = new Proxy(xhrproto.open, {\n    apply(originalOpen, xhrOpenThisArg, xhrOpenArgArray) {\n      let virtualError = new Error();\n      const startTimestamp = timestampInSeconds() * 1e3;\n      const method = isString(xhrOpenArgArray[0]) ? xhrOpenArgArray[0].toUpperCase() : void 0;\n      const url = parseXhrUrlArg(xhrOpenArgArray[1]);\n      if (!method || !url) {\n        return originalOpen.apply(xhrOpenThisArg, xhrOpenArgArray);\n      }\n      xhrOpenThisArg[SENTRY_XHR_DATA_KEY] = {\n        method,\n        url,\n        request_headers: {}\n      };\n      if (method === \"POST\" && url.match(/sentry_key/)) {\n        xhrOpenThisArg.__sentry_own_request__ = true;\n      }\n      const onreadystatechangeHandler = () => {\n        const xhrInfo = xhrOpenThisArg[SENTRY_XHR_DATA_KEY];\n        if (!xhrInfo) {\n          return;\n        }\n        if (xhrOpenThisArg.readyState === 4) {\n          try {\n            xhrInfo.status_code = xhrOpenThisArg.status;\n          } catch {\n          }\n          const handlerData = {\n            endTimestamp: timestampInSeconds() * 1e3,\n            startTimestamp,\n            xhr: xhrOpenThisArg,\n            virtualError\n          };\n          triggerHandlers(\"xhr\", handlerData);\n          virtualError = void 0;\n          xhrOpenThisArg.removeEventListener(\"readystatechange\", onreadystatechangeHandler);\n        }\n      };\n      if (\"onreadystatechange\" in xhrOpenThisArg && typeof xhrOpenThisArg.onreadystatechange === \"function\") {\n        xhrOpenThisArg.onreadystatechange = new Proxy(xhrOpenThisArg.onreadystatechange, {\n          apply(originalOnreadystatechange, onreadystatechangeThisArg, onreadystatechangeArgArray) {\n            onreadystatechangeHandler();\n            return originalOnreadystatechange.apply(onreadystatechangeThisArg, onreadystatechangeArgArray);\n          }\n        });\n      } else {\n        xhrOpenThisArg.addEventListener(\"readystatechange\", onreadystatechangeHandler);\n      }\n      xhrOpenThisArg.setRequestHeader = new Proxy(xhrOpenThisArg.setRequestHeader, {\n        apply(originalSetRequestHeader, setRequestHeaderThisArg, setRequestHeaderArgArray) {\n          const [header, value] = setRequestHeaderArgArray;\n          const xhrInfo = setRequestHeaderThisArg[SENTRY_XHR_DATA_KEY];\n          if (xhrInfo && isString(header) && isString(value)) {\n            xhrInfo.request_headers[header.toLowerCase()] = value;\n          }\n          return originalSetRequestHeader.apply(setRequestHeaderThisArg, setRequestHeaderArgArray);\n        }\n      });\n      return originalOpen.apply(xhrOpenThisArg, xhrOpenArgArray);\n    }\n  });\n  xhrproto.send = new Proxy(xhrproto.send, {\n    apply(originalSend, sendThisArg, sendArgArray) {\n      const sentryXhrData = sendThisArg[SENTRY_XHR_DATA_KEY];\n      if (!sentryXhrData) {\n        return originalSend.apply(sendThisArg, sendArgArray);\n      }\n      if (sendArgArray[0] !== void 0) {\n        sentryXhrData.body = sendArgArray[0];\n      }\n      const handlerData = {\n        startTimestamp: timestampInSeconds() * 1e3,\n        xhr: sendThisArg\n      };\n      triggerHandlers(\"xhr\", handlerData);\n      return originalSend.apply(sendThisArg, sendArgArray);\n    }\n  });\n}\nfunction parseXhrUrlArg(url) {\n  if (isString(url)) {\n    return url;\n  }\n  try {\n    return url.toString();\n  } catch {\n  }\n  return void 0;\n}\n\nexport { SENTRY_XHR_DATA_KEY, addXhrInstrumentationHandler, instrumentXHR };\n//# sourceMappingURL=xhr.js.map\n","import { addHandler, maybeInstrument, triggerHandlers, fill } from '@sentry/core';\nimport { WINDOW } from '../types.js';\n\nlet lastHref;\nfunction supportsHistory() {\n  return \"history\" in WINDOW && !!WINDOW.history;\n}\nfunction addHistoryInstrumentationHandler(handler) {\n  const type = \"history\";\n  addHandler(type, handler);\n  maybeInstrument(type, instrumentHistory);\n}\nfunction instrumentHistory() {\n  WINDOW.addEventListener(\"popstate\", () => {\n    const to = WINDOW.location.href;\n    const from = lastHref;\n    lastHref = to;\n    if (from === to) {\n      return;\n    }\n    const handlerData = { from, to };\n    triggerHandlers(\"history\", handlerData);\n  });\n  if (!supportsHistory()) {\n    return;\n  }\n  function historyReplacementFunction(originalHistoryFunction) {\n    return function(...args) {\n      const url = args.length > 2 ? args[2] : void 0;\n      if (url) {\n        const from = lastHref;\n        const to = getAbsoluteUrl(String(url));\n        lastHref = to;\n        if (from === to) {\n          return originalHistoryFunction.apply(this, args);\n        }\n        const handlerData = { from, to };\n        triggerHandlers(\"history\", handlerData);\n      }\n      return originalHistoryFunction.apply(this, args);\n    };\n  }\n  fill(WINDOW.history, \"pushState\", historyReplacementFunction);\n  fill(WINDOW.history, \"replaceState\", historyReplacementFunction);\n}\nfunction getAbsoluteUrl(urlOrPath) {\n  try {\n    const url = new URL(urlOrPath, WINDOW.location.origin);\n    return url.toString();\n  } catch {\n    return urlOrPath;\n  }\n}\n\nexport { addHistoryInstrumentationHandler, instrumentHistory, supportsHistory };\n//# sourceMappingURL=history.js.map\n","import { isString } from '@sentry/core';\n\nconst DEFAULT_MAX_STRING_LENGTH = 80;\nconst accessors = {};\ntry {\n  if (typeof Node !== \"undefined\") {\n    accessors.parentNode = Object.getOwnPropertyDescriptor(Node.prototype, \"parentNode\").get;\n  }\n  if (typeof Element !== \"undefined\") {\n    accessors.tagName = Object.getOwnPropertyDescriptor(Element.prototype, \"tagName\").get;\n    accessors.id = Object.getOwnPropertyDescriptor(Element.prototype, \"id\").get;\n    accessors.className = Object.getOwnPropertyDescriptor(Element.prototype, \"className\").get;\n    accessors.getAttribute = Element.prototype.getAttribute;\n  }\n  if (typeof HTMLElement !== \"undefined\") {\n    accessors.dataset = Object.getOwnPropertyDescriptor(HTMLElement.prototype, \"dataset\").get;\n  }\n} catch {\n}\nfunction _safeRead(el, prop, arg) {\n  const fn = accessors[prop];\n  if (fn) {\n    try {\n      return fn.call(el, arg);\n    } catch {\n    }\n  }\n  const val = el[prop];\n  return typeof val === \"function\" ? val.call(el, arg) : val;\n}\nfunction htmlTreeAsString(elem, options = {}) {\n  if (!elem) {\n    return \"<unknown>\";\n  }\n  try {\n    let currentElem = elem;\n    const MAX_TRAVERSE_HEIGHT = 5;\n    const out = [];\n    let height = 0;\n    let len = 0;\n    const separator = \" > \";\n    const sepLength = separator.length;\n    let nextStr;\n    const keyAttrs = Array.isArray(options) ? options : options.keyAttrs;\n    const maskAttributeFn = Array.isArray(options) ? void 0 : options.maskAttributeFn;\n    const maxStringLength = !Array.isArray(options) && options.maxStringLength || DEFAULT_MAX_STRING_LENGTH;\n    while (currentElem && height++ < MAX_TRAVERSE_HEIGHT) {\n      nextStr = _htmlElementAsString(currentElem, keyAttrs, maskAttributeFn);\n      if (nextStr === \"html\" || height > 1 && len + out.length * sepLength + nextStr.length >= maxStringLength) {\n        break;\n      }\n      out.push(nextStr);\n      len += nextStr.length;\n      currentElem = _safeRead(currentElem, \"parentNode\");\n    }\n    return out.reverse().join(separator);\n  } catch {\n    return \"<unknown>\";\n  }\n}\nfunction _htmlElementAsString(el, keyAttrs, maskAttributeFn) {\n  const out = [];\n  const tagName = _safeRead(el, \"tagName\");\n  if (!tagName) {\n    return \"\";\n  }\n  if (typeof HTMLElement !== \"undefined\") {\n    if (el instanceof HTMLElement) {\n      const dataset = _safeRead(el, \"dataset\");\n      if (dataset) {\n        if (dataset[\"sentryComponent\"]) {\n          return maskAttributeFn ? maskAttributeFn(\"data-sentry-component\", dataset[\"sentryComponent\"], el) : dataset[\"sentryComponent\"];\n        }\n        if (dataset[\"sentryElement\"]) {\n          return maskAttributeFn ? maskAttributeFn(\"data-sentry-element\", dataset[\"sentryElement\"], el) : dataset[\"sentryElement\"];\n        }\n      }\n    }\n  }\n  out.push(tagName.toLowerCase());\n  const keyAttrPairs = keyAttrs?.length ? keyAttrs.filter((keyAttr) => _safeRead(el, \"getAttribute\", keyAttr)).map((keyAttr) => [keyAttr, _safeRead(el, \"getAttribute\", keyAttr)]) : null;\n  if (keyAttrPairs?.length) {\n    keyAttrPairs.forEach(([key, value]) => {\n      out.push(`[${key}=\"${maskAttributeFn && value ? maskAttributeFn(key, value, el) : value}\"]`);\n    });\n  } else {\n    const id = _safeRead(el, \"id\");\n    if (id) {\n      out.push(`#${maskAttributeFn ? maskAttributeFn(\"id\", id, el) : id}`);\n    }\n    const className = _safeRead(el, \"className\");\n    if (className && isString(className)) {\n      const classes = (maskAttributeFn ? maskAttributeFn(\"class\", className, el) : className).split(\n        /\\s+/\n      );\n      for (const c of classes) {\n        out.push(`.${c}`);\n      }\n    }\n  }\n  for (const k of [\"aria-label\", \"type\", \"name\", \"title\", \"alt\"]) {\n    const attr = _safeRead(el, \"getAttribute\", k);\n    if (attr) {\n      out.push(`[${k}=\"${maskAttributeFn ? maskAttributeFn(k, attr, el) : attr}\"]`);\n    }\n  }\n  return out.join(\"\");\n}\n\nexport { htmlTreeAsString };\n//# sourceMappingURL=htmlTreeAsString.js.map\n","import { GLOBAL_OBJ } from '@sentry/core';\n\nfunction getComponentName(elem, maxTraverseHeight = 5) {\n  if (!GLOBAL_OBJ.HTMLElement) {\n    return null;\n  }\n  let currentElem = elem;\n  for (let i = 0; i < maxTraverseHeight; i++) {\n    if (!currentElem) {\n      return null;\n    }\n    if (currentElem instanceof HTMLElement) {\n      if (currentElem.dataset[\"sentryComponent\"]) {\n        return currentElem.dataset[\"sentryComponent\"];\n      }\n      if (currentElem.dataset[\"sentryElement\"]) {\n        return currentElem.dataset[\"sentryElement\"];\n      }\n    }\n    currentElem = currentElem.parentNode;\n  }\n  return null;\n}\n\nexport { getComponentName };\n//# sourceMappingURL=component-name.js.map\n","const DEBUG_BUILD = (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__);\n\nexport { DEBUG_BUILD };\n//# sourceMappingURL=debug-build.js.map\n","import { defineIntegration, addFetchInstrumentationHandler, getClient, debug, addBreadcrumb, filterCollectedUrl, getBreadcrumbLogLevelFromHttpStatusCode, parseUrl, getEventDescription } from '@sentry/core';\nimport { addClickKeypressInstrumentationHandler, addXhrInstrumentationHandler, addHistoryInstrumentationHandler, htmlTreeAsString, getComponentName, SENTRY_XHR_DATA_KEY } from '@sentry/browser-utils';\nimport { DEBUG_BUILD } from '../debug-build.js';\nimport { WINDOW } from '../helpers.js';\n\nconst MAX_ALLOWED_STRING_LENGTH = 1024;\nconst INTEGRATION_NAME = \"Breadcrumbs\";\nconst _breadcrumbsIntegration = ((options = {}) => {\n  const _options = {\n    dom: true,\n    fetch: true,\n    history: true,\n    sentry: true,\n    xhr: true,\n    ...options\n  };\n  return {\n    name: INTEGRATION_NAME,\n    setup(client) {\n      if (_options.dom) {\n        addClickKeypressInstrumentationHandler(_getDomBreadcrumbHandler(client, _options.dom));\n      }\n      if (_options.xhr) {\n        addXhrInstrumentationHandler(_getXhrBreadcrumbHandler(client));\n      }\n      if (_options.fetch) {\n        addFetchInstrumentationHandler(_getFetchBreadcrumbHandler(client));\n      }\n      if (_options.history) {\n        addHistoryInstrumentationHandler(_getHistoryBreadcrumbHandler(client));\n      }\n      if (_options.sentry) {\n        client.on(\"beforeSendEvent\", _getSentryBreadcrumbHandler(client));\n      }\n    }\n  };\n});\nconst breadcrumbsIntegration = defineIntegration(_breadcrumbsIntegration);\nfunction _getSentryBreadcrumbHandler(client) {\n  return function addSentryBreadcrumb(event) {\n    if (getClient() !== client) {\n      return;\n    }\n    addBreadcrumb(\n      {\n        category: `sentry.${event.type === \"transaction\" ? \"transaction\" : \"event\"}`,\n        event_id: event.event_id,\n        level: event.level,\n        message: getEventDescription(event)\n      },\n      {\n        event\n      }\n    );\n  };\n}\nfunction _getDomBreadcrumbHandler(client, dom) {\n  return function _innerDomBreadcrumb(handlerData) {\n    if (getClient() !== client) {\n      return;\n    }\n    let target;\n    let componentName;\n    let keyAttrs = typeof dom === \"object\" ? dom.serializeAttribute : void 0;\n    let maxStringLength = typeof dom === \"object\" && typeof dom.maxStringLength === \"number\" ? dom.maxStringLength : void 0;\n    if (maxStringLength && maxStringLength > MAX_ALLOWED_STRING_LENGTH) {\n      DEBUG_BUILD && debug.warn(\n        `\\`dom.maxStringLength\\` cannot exceed ${MAX_ALLOWED_STRING_LENGTH}, but a value of ${maxStringLength} was configured. Sentry will use ${MAX_ALLOWED_STRING_LENGTH} instead.`\n      );\n      maxStringLength = MAX_ALLOWED_STRING_LENGTH;\n    }\n    if (typeof keyAttrs === \"string\") {\n      keyAttrs = [keyAttrs];\n    }\n    try {\n      const event = handlerData.event;\n      const element = _isEvent(event) ? event.target : event;\n      target = htmlTreeAsString(element, { keyAttrs, maxStringLength });\n      componentName = getComponentName(element);\n    } catch {\n      target = \"<unknown>\";\n    }\n    if (target.length === 0) {\n      return;\n    }\n    const breadcrumb = {\n      category: `ui.${handlerData.name}`,\n      message: target\n    };\n    if (componentName) {\n      breadcrumb.data = { \"ui.component_name\": componentName };\n    }\n    addBreadcrumb(breadcrumb, {\n      event: handlerData.event,\n      name: handlerData.name,\n      global: handlerData.global\n    });\n  };\n}\nfunction _getXhrBreadcrumbHandler(client) {\n  return function _xhrBreadcrumb(handlerData) {\n    if (getClient() !== client) {\n      return;\n    }\n    const { startTimestamp, endTimestamp } = handlerData;\n    const sentryXhrData = handlerData.xhr[SENTRY_XHR_DATA_KEY];\n    if (!startTimestamp || !endTimestamp || !sentryXhrData) {\n      return;\n    }\n    const { method, url, status_code, body } = sentryXhrData;\n    const data = {\n      method,\n      url: filterCollectedUrl(url),\n      status_code\n    };\n    const hint = {\n      xhr: handlerData.xhr,\n      input: body,\n      startTimestamp,\n      endTimestamp\n    };\n    const breadcrumb = {\n      category: \"xhr\",\n      data,\n      type: \"http\",\n      level: getBreadcrumbLogLevelFromHttpStatusCode(status_code)\n    };\n    client.emit(\"beforeOutgoingRequestBreadcrumb\", breadcrumb, hint);\n    addBreadcrumb(breadcrumb, hint);\n  };\n}\nfunction _getFetchBreadcrumbHandler(client) {\n  return function _fetchBreadcrumb(handlerData) {\n    if (getClient() !== client) {\n      return;\n    }\n    const { startTimestamp, endTimestamp } = handlerData;\n    if (!endTimestamp) {\n      return;\n    }\n    if (handlerData.fetchData.url.match(/sentry_key/) && handlerData.fetchData.method === \"POST\") {\n      return;\n    }\n    if (handlerData.error) {\n      const hint = {\n        data: handlerData.error,\n        input: handlerData.args,\n        startTimestamp,\n        endTimestamp\n      };\n      const breadcrumb = {\n        category: \"fetch\",\n        data: { ...handlerData.fetchData, url: filterCollectedUrl(handlerData.fetchData.url) },\n        level: \"error\",\n        type: \"http\"\n      };\n      client.emit(\"beforeOutgoingRequestBreadcrumb\", breadcrumb, hint);\n      addBreadcrumb(breadcrumb, hint);\n    } else {\n      const response = handlerData.response;\n      const data = {\n        ...handlerData.fetchData,\n        url: filterCollectedUrl(handlerData.fetchData.url),\n        status_code: response?.status\n      };\n      const hint = {\n        input: handlerData.args,\n        response,\n        startTimestamp,\n        endTimestamp\n      };\n      const breadcrumb = {\n        category: \"fetch\",\n        data,\n        type: \"http\",\n        level: getBreadcrumbLogLevelFromHttpStatusCode(data.status_code)\n      };\n      client.emit(\"beforeOutgoingRequestBreadcrumb\", breadcrumb, hint);\n      addBreadcrumb(breadcrumb, hint);\n    }\n  };\n}\nfunction _getHistoryBreadcrumbHandler(client) {\n  return function _historyBreadcrumb(handlerData) {\n    if (getClient() !== client) {\n      return;\n    }\n    let from = handlerData.from;\n    let to = handlerData.to;\n    const parsedLoc = parseUrl(WINDOW.location.href);\n    let parsedFrom = from ? parseUrl(from) : void 0;\n    const parsedTo = parseUrl(to);\n    if (!parsedFrom?.path) {\n      parsedFrom = parsedLoc;\n    }\n    if (parsedLoc.protocol === parsedTo.protocol && parsedLoc.host === parsedTo.host) {\n      to = parsedTo.relative;\n    }\n    if (parsedLoc.protocol === parsedFrom.protocol && parsedLoc.host === parsedFrom.host) {\n      from = parsedFrom.relative;\n    }\n    addBreadcrumb({\n      category: \"navigation\",\n      data: {\n        from: filterCollectedUrl(from),\n        to: filterCollectedUrl(to)\n      }\n    });\n  };\n}\nfunction _isEvent(event) {\n  return !!event && !!event.target;\n}\n\nexport { breadcrumbsIntegration };\n//# sourceMappingURL=breadcrumbs.js.map\n","import { defineIntegration, fill, getFunctionName, getOriginalFunction } from '@sentry/core';\nimport { WINDOW, wrap } from '../helpers.js';\n\nconst DEFAULT_EVENT_TARGET = \"EventTarget,Window,Node,ApplicationCache,AudioTrackList,BroadcastChannel,ChannelMergerNode,CryptoOperation,EventSource,FileReader,HTMLUnknownElement,IDBDatabase,IDBRequest,IDBTransaction,KeyOperation,MediaController,MessagePort,ModalWindow,Notification,SVGElementInstance,Screen,SharedWorker,TextTrack,TextTrackCue,TextTrackList,WebSocket,WebSocketWorker,Worker,XMLHttpRequest,XMLHttpRequestEventTarget,XMLHttpRequestUpload\".split(\n  \",\"\n);\nconst INTEGRATION_NAME = \"BrowserApiErrors\";\nconst _browserApiErrorsIntegration = ((options = {}) => {\n  const _options = {\n    XMLHttpRequest: true,\n    eventTarget: true,\n    requestAnimationFrame: true,\n    setInterval: true,\n    setTimeout: true,\n    unregisterOriginalCallbacks: false,\n    ...options\n  };\n  return {\n    name: INTEGRATION_NAME,\n    // TODO: This currently only works for the first client this is setup\n    // We may want to adjust this to check for client etc.\n    setupOnce() {\n      if (_options.setTimeout) {\n        fill(WINDOW, \"setTimeout\", _wrapTimeFunction);\n      }\n      if (_options.setInterval) {\n        fill(WINDOW, \"setInterval\", _wrapTimeFunction);\n      }\n      if (_options.requestAnimationFrame) {\n        fill(WINDOW, \"requestAnimationFrame\", _wrapRAF);\n      }\n      if (_options.XMLHttpRequest && \"XMLHttpRequest\" in WINDOW) {\n        fill(XMLHttpRequest.prototype, \"send\", _wrapXHR);\n      }\n      const eventTargetOption = _options.eventTarget;\n      if (eventTargetOption) {\n        const eventTarget = Array.isArray(eventTargetOption) ? eventTargetOption : DEFAULT_EVENT_TARGET;\n        eventTarget.forEach((target) => _wrapEventTarget(target, _options));\n      }\n    }\n  };\n});\nconst browserApiErrorsIntegration = defineIntegration(_browserApiErrorsIntegration);\nfunction _wrapTimeFunction(original) {\n  return function(...args) {\n    const originalCallback = args[0];\n    args[0] = wrap(originalCallback, {\n      mechanism: {\n        handled: false,\n        type: `auto.browser.browserapierrors.${getFunctionName(original)}`\n      }\n    });\n    return original.apply(this, args);\n  };\n}\nfunction _wrapRAF(original) {\n  return function(callback) {\n    return original.apply(this, [\n      wrap(callback, {\n        mechanism: {\n          data: {\n            handler: getFunctionName(original)\n          },\n          handled: false,\n          type: \"auto.browser.browserapierrors.requestAnimationFrame\"\n        }\n      })\n    ]);\n  };\n}\nfunction _wrapXHR(originalSend) {\n  return function(...args) {\n    const xhr = this;\n    const xmlHttpRequestProps = [\"onload\", \"onerror\", \"onprogress\", \"onreadystatechange\"];\n    xmlHttpRequestProps.forEach((prop) => {\n      if (prop in xhr && typeof xhr[prop] === \"function\") {\n        fill(xhr, prop, function(original) {\n          const wrapOptions = {\n            mechanism: {\n              data: {\n                handler: getFunctionName(original)\n              },\n              handled: false,\n              type: `auto.browser.browserapierrors.xhr.${prop}`\n            }\n          };\n          const originalFunction = getOriginalFunction(original);\n          if (originalFunction) {\n            wrapOptions.mechanism.data.handler = getFunctionName(originalFunction);\n          }\n          return wrap(original, wrapOptions);\n        });\n      }\n    });\n    return originalSend.apply(this, args);\n  };\n}\nfunction _wrapEventTarget(target, integrationOptions) {\n  const globalObject = WINDOW;\n  const proto = globalObject[target]?.prototype;\n  if (!proto?.hasOwnProperty?.(\"addEventListener\")) {\n    return;\n  }\n  fill(proto, \"addEventListener\", function(original) {\n    return function(eventName, fn, options) {\n      try {\n        if (isEventListenerObject(fn)) {\n          fn.handleEvent = wrap(fn.handleEvent, {\n            mechanism: {\n              data: {\n                handler: getFunctionName(fn),\n                target\n              },\n              handled: false,\n              type: \"auto.browser.browserapierrors.handleEvent\"\n            }\n          });\n        }\n      } catch {\n      }\n      if (integrationOptions.unregisterOriginalCallbacks) {\n        unregisterOriginalCallback(this, eventName, fn);\n      }\n      return original.apply(this, [\n        eventName,\n        wrap(fn, {\n          mechanism: {\n            data: {\n              handler: getFunctionName(fn),\n              target\n            },\n            handled: false,\n            type: \"auto.browser.browserapierrors.addEventListener\"\n          }\n        }),\n        options\n      ]);\n    };\n  });\n  fill(proto, \"removeEventListener\", function(originalRemoveEventListener) {\n    return function(eventName, fn, options) {\n      try {\n        if (Object.prototype.hasOwnProperty.call(fn, \"__sentry_wrapped__\")) {\n          const originalEventHandler = fn.__sentry_wrapped__;\n          if (originalEventHandler) {\n            originalRemoveEventListener.call(this, eventName, originalEventHandler, options);\n          }\n        }\n      } catch {\n      }\n      return originalRemoveEventListener.call(this, eventName, fn, options);\n    };\n  });\n}\nfunction isEventListenerObject(obj) {\n  return typeof obj.handleEvent === \"function\";\n}\nfunction unregisterOriginalCallback(target, eventName, fn) {\n  if (target && typeof target === \"object\" && \"removeEventListener\" in target && typeof target.removeEventListener === \"function\") {\n    target.removeEventListener(eventName, fn);\n  }\n}\n\nexport { browserApiErrorsIntegration };\n//# sourceMappingURL=browserapierrors.js.map\n","import { WINDOW } from '../types.js';\n\nfunction addPageListener(type, listener, options) {\n  if (WINDOW.document) {\n    WINDOW.addEventListener(type, listener, options);\n  }\n}\nfunction removePageListener(type, listener, options) {\n  if (WINDOW.document) {\n    WINDOW.removeEventListener(type, listener, options);\n  }\n}\nconst getNavigationEntry = (checkResponseStart = true) => {\n  const navigationEntry = WINDOW.performance?.getEntriesByType?.(\"navigation\")[0];\n  if (\n    // sentry-specific change:\n    // We don't want to check for responseStart for our own use of `getNavigationEntry`\n    !checkResponseStart || navigationEntry && navigationEntry.responseStart > 0 && navigationEntry.responseStart < performance.now()\n  ) {\n    return navigationEntry;\n  }\n};\nconst getActivationStart = () => {\n  const navEntry = getNavigationEntry();\n  return navEntry?.activationStart ?? 0;\n};\nconst onHidden = (cb) => {\n  const onHiddenCallback = (event) => {\n    if (WINDOW.document?.visibilityState === \"hidden\") {\n      cb(event);\n    }\n  };\n  addPageListener(\"visibilitychange\", onHiddenCallback, { capture: true });\n};\nlet firstHiddenTime = -1;\nconst onHiddenFunctions = /* @__PURE__ */ new Set();\nconst initHiddenTime = () => {\n  return WINDOW.document?.visibilityState === \"hidden\" && !WINDOW.document?.prerendering ? 0 : Infinity;\n};\nconst onVisibilityUpdate = (event) => {\n  if (WINDOW.document?.visibilityState === \"hidden\" && firstHiddenTime > -1) {\n    if (event.type === \"visibilitychange\") {\n      for (const onHiddenFunction of onHiddenFunctions) {\n        onHiddenFunction();\n      }\n    }\n    if (!isFinite(firstHiddenTime)) {\n      firstHiddenTime = event.type === \"visibilitychange\" ? event.timeStamp : 0;\n      removePageListener(\"prerenderingchange\", onVisibilityUpdate, true);\n    }\n  }\n};\nconst getVisibilityWatcher = () => {\n  if (WINDOW.document && firstHiddenTime < 0) {\n    const activationStart = getActivationStart();\n    const firstVisibilityStateHiddenTime = !WINDOW.document.prerendering ? globalThis.performance.getEntriesByType(\"visibility-state\").filter((e) => e.name === \"hidden\" && e.startTime > activationStart)[0]?.startTime : void 0;\n    firstHiddenTime = firstVisibilityStateHiddenTime ?? initHiddenTime();\n    addPageListener(\"visibilitychange\", onVisibilityUpdate, true);\n    addPageListener(\"prerenderingchange\", onVisibilityUpdate, true);\n  }\n  return {\n    get firstHiddenTime() {\n      return firstHiddenTime;\n    },\n    onHidden(cb) {\n      onHiddenFunctions.add(cb);\n    }\n  };\n};\nconst whenIdleOrHidden = (cb) => {\n  const rIC = WINDOW.requestIdleCallback || WINDOW.setTimeout;\n  if (WINDOW.document?.visibilityState === \"hidden\") {\n    cb();\n  } else {\n    let called = false;\n    const runOnce = () => {\n      if (!called) {\n        cb();\n        called = true;\n      }\n    };\n    addPageListener(\"visibilitychange\", runOnce, { once: true, capture: true });\n    rIC(() => {\n      runOnce();\n      removePageListener(\"visibilitychange\", runOnce, { capture: true });\n    });\n  }\n};\n\nexport { addPageListener, getActivationStart, getNavigationEntry, getVisibilityWatcher, onHidden, removePageListener, whenIdleOrHidden };\n//# sourceMappingURL=utils.js.map\n","import { defineIntegration, debug, startSession, captureSession, getIsolationScope } from '@sentry/core';\nimport { whenIdleOrHidden, addHistoryInstrumentationHandler } from '@sentry/browser-utils';\nimport { DEBUG_BUILD } from '../debug-build.js';\nimport { WINDOW } from '../helpers.js';\n\nconst browserSessionIntegration = defineIntegration((options = {}) => {\n  const lifecycle = options.lifecycle ?? \"page\";\n  return {\n    name: \"BrowserSession\",\n    setupOnce() {\n      if (typeof WINDOW.document === \"undefined\") {\n        DEBUG_BUILD && debug.warn(\"Using the `browserSessionIntegration` in non-browser environments is not supported.\");\n        return;\n      }\n      startSession({ ignoreDuration: true });\n      let initialSessionSent = false;\n      whenIdleOrHidden(() => {\n        if (!initialSessionSent) {\n          captureSession();\n          initialSessionSent = true;\n        }\n      });\n      const isolationScope = getIsolationScope();\n      let previousUser = isolationScope.getUser();\n      isolationScope.addScopeListener((scope) => {\n        const maybeNewUser = scope.getUser();\n        if (previousUser?.id !== maybeNewUser?.id || previousUser?.ip_address !== maybeNewUser?.ip_address) {\n          previousUser = maybeNewUser;\n          if (initialSessionSent) {\n            captureSession();\n          }\n        }\n      });\n      if (lifecycle === \"route\") {\n        addHistoryInstrumentationHandler(({ from, to }) => {\n          if (from !== to) {\n            startSession({ ignoreDuration: true });\n            captureSession();\n            initialSessionSent = true;\n          }\n        });\n      }\n    }\n  };\n});\n\nexport { browserSessionIntegration };\n//# sourceMappingURL=browsersession.js.map\n","import { SEMANTIC_ATTRIBUTE_SENTRY_CUSTOM_SPAN_NAME } from '../../semanticAttributes.js';\nimport { getCombinedScopeData } from '../../utils/scopeData.js';\nimport { spanToJSON, INTERNAL_getSegmentSpan, streamedSpanJsonToSerializedSpan, spanToStaticSpanJSON } from '../../utils/spanUtils.js';\nimport { getCapturedScopesOnSpan } from '../utils.js';\nimport { isStaticBeforeSendSpanCallback, applyBeforeSendSpanCallback } from './beforeSendSpan.js';\nimport { spanJsonToSerializedStreamedSpan } from './spanJsonToStreamedSpan.js';\nimport { scopeContextsToSpanAttributes } from './scopeContextAttributes.js';\nimport { DEFAULT_ENVIRONMENT } from '../../constants.js';\nimport { SENTRY_SDK_INTEGRATIONS, USER_NAME, USER_IP_ADDRESS, USER_EMAIL, USER_ID, SENTRY_ENVIRONMENT, SENTRY_RELEASE, SENTRY_SDK_VERSION, SENTRY_SDK_NAME, SENTRY_SEGMENT_ID, SENTRY_SEGMENT_NAME, SENTRY_TRACE_LIFECYCLE } from '@sentry/conventions/attributes';\n\nfunction captureSpan(span, client) {\n  const spanJSON = spanToJSON(span);\n  if (spanJSON.attributes) {\n    delete spanJSON.attributes[SEMANTIC_ATTRIBUTE_SENTRY_CUSTOM_SPAN_NAME];\n  }\n  const segmentSpan = INTERNAL_getSegmentSpan(span);\n  const serializedSegmentSpan = spanToJSON(segmentSpan);\n  const { isolationScope: spanIsolationScope, scope: spanScope } = getCapturedScopesOnSpan(span);\n  const finalScopeData = getCombinedScopeData(spanIsolationScope, spanScope);\n  applyCommonSpanAttributes(spanJSON, serializedSegmentSpan, client, finalScopeData);\n  client.emit(\"preprocessSpan\", spanJSON);\n  if (spanJSON.is_segment) {\n    applyScopeToSegmentSpan(spanJSON, finalScopeData);\n    applySdkMetadataToSegmentSpan(spanJSON, client);\n    client.emit(\"processSegmentSpan\", spanJSON);\n  }\n  client.emit(\"processSpan\", spanJSON);\n  const { beforeSendSpan, traceLifecycle } = client.getOptions();\n  const processedSpan = (\n    // check for traceLifecycle here because in static lifecycle,\n    // captureSpan is called for INP spans. If an unmigrated beforeSendSpan\n    // callback is run on these spans, it will throw an error.\n    traceLifecycle !== \"static\" && beforeSendSpan && !isStaticBeforeSendSpanCallback(beforeSendSpan) ? applyBeforeSendSpanCallback(spanJSON, beforeSendSpan) : spanJSON\n  );\n  return {\n    ...streamedSpanJsonToSerializedSpan(processedSpan),\n    _segmentSpan: segmentSpan\n  };\n}\nfunction applyScopeToSegmentSpan(segmentSpanJSON, scopeData) {\n  const contextAttributes = scopeContextsToSpanAttributes(scopeData.contexts);\n  safeSetSpanJSONAttributes(segmentSpanJSON, contextAttributes);\n}\nfunction safeSetSpanJSONAttributes(spanJSON, newAttributes) {\n  const originalAttributes = spanJSON.attributes ?? (spanJSON.attributes = {});\n  Object.entries(newAttributes).forEach(([key, value]) => {\n    if (value != null && !(key in originalAttributes)) {\n      originalAttributes[key] = value;\n    }\n  });\n}\nfunction applySdkMetadataToSegmentSpan(segmentSpanJSON, client) {\n  const integrationNames = client.getIntegrationNames();\n  if (!integrationNames.length) return;\n  safeSetSpanJSONAttributes(segmentSpanJSON, {\n    [SENTRY_SDK_INTEGRATIONS]: integrationNames\n  });\n}\nfunction commonSpanAttributes(serializedSegmentSpan, client, scopeData, includeScopeAttributes = true) {\n  const sdk = client.getSdkMetadata();\n  const { release, environment } = client.getOptions();\n  return {\n    [SENTRY_TRACE_LIFECYCLE]: \"stream\",\n    [SENTRY_SEGMENT_NAME]: serializedSegmentSpan.name,\n    [SENTRY_SEGMENT_ID]: serializedSegmentSpan.span_id,\n    [SENTRY_SDK_NAME]: sdk?.sdk?.name,\n    [SENTRY_SDK_VERSION]: sdk?.sdk?.version,\n    [SENTRY_RELEASE]: release,\n    [SENTRY_ENVIRONMENT]: environment || DEFAULT_ENVIRONMENT,\n    [USER_ID]: scopeData.user?.id,\n    [USER_EMAIL]: scopeData.user?.email,\n    [USER_IP_ADDRESS]: scopeData.user?.ip_address,\n    [USER_NAME]: scopeData.user?.username,\n    ...includeScopeAttributes ? scopeData.attributes : void 0\n  };\n}\nfunction applyCommonSpanAttributes(spanJSON, serializedSegmentSpan, client, scopeData) {\n  safeSetSpanJSONAttributes(spanJSON, commonSpanAttributes(serializedSegmentSpan, client, scopeData));\n}\nfunction captureStandaloneSpanWithStaticCallback(span, client, beforeSendSpan) {\n  const spanJSON = spanToStaticSpanJSON(span);\n  const segmentSpan = INTERNAL_getSegmentSpan(span);\n  const serializedSegmentSpan = spanToJSON(segmentSpan);\n  const { isolationScope: spanIsolationScope, scope: spanScope } = getCapturedScopesOnSpan(span);\n  const finalScopeData = getCombinedScopeData(spanIsolationScope, spanScope);\n  const commonAttributes = commonSpanAttributes(serializedSegmentSpan, client, finalScopeData, false);\n  Object.entries(commonAttributes).forEach(([key, value]) => {\n    if (value != null && !(key in spanJSON.data)) {\n      spanJSON.data[key] = value;\n    }\n  });\n  const processedSpan = applyBeforeSendSpanCallback(spanJSON, beforeSendSpan);\n  return spanJsonToSerializedStreamedSpan(processedSpan);\n}\n\nexport { captureSpan, captureStandaloneSpanWithStaticCallback, safeSetSpanJSONAttributes };\n//# sourceMappingURL=captureSpan.js.map\n","import { HTTP_RESPONSE_STATUS_CODE, HTTP_RESPONSE_BODY_SIZE, SENTRY_PROFILE_ID, SENTRY_PROFILER_ID, CULTURE_LOCALE, CULTURE_TIMEZONE, STATE_TYPE, ANGULAR_VERSION, REACT_VERSION } from '@sentry/conventions/attributes';\n\nfunction scopeContextsToSpanAttributes(contexts) {\n  const attrs = {};\n  const { response, profile, cloud_resource, culture, state } = contexts;\n  if (response) {\n    if (response.status_code != null) {\n      attrs[HTTP_RESPONSE_STATUS_CODE] = response.status_code;\n    }\n    if (response.body_size != null) {\n      attrs[HTTP_RESPONSE_BODY_SIZE] = response.body_size;\n    }\n  }\n  if (profile) {\n    if (profile.profile_id) {\n      attrs[SENTRY_PROFILE_ID] = profile.profile_id;\n    }\n    if (profile.profiler_id) {\n      attrs[SENTRY_PROFILER_ID] = profile.profiler_id;\n    }\n  }\n  if (cloud_resource) {\n    for (const [key, value] of Object.entries(cloud_resource)) {\n      if (value != null) {\n        attrs[key] = value;\n      }\n    }\n  }\n  if (culture) {\n    if (culture.locale) {\n      attrs[CULTURE_LOCALE] = culture.locale;\n    }\n    if (culture.timezone) {\n      attrs[CULTURE_TIMEZONE] = culture.timezone;\n    }\n  }\n  if (state?.state && typeof state.state.type === \"string\") {\n    attrs[STATE_TYPE] = state.state.type;\n  }\n  const angular = contexts[\"angular\"];\n  if (angular) {\n    const version = angular[\"version\"];\n    if (typeof version === \"string\" || typeof version === \"number\") {\n      attrs[ANGULAR_VERSION] = version;\n    }\n  }\n  const react = contexts[\"react\"];\n  if (react) {\n    const version = react[\"version\"];\n    if (typeof version === \"string\" || typeof version === \"number\") {\n      attrs[REACT_VERSION] = version;\n    }\n  }\n  return attrs;\n}\n\nexport { scopeContextsToSpanAttributes };\n//# sourceMappingURL=scopeContextAttributes.js.map\n","import { CULTURE_CALENDAR, CULTURE_TIMEZONE, CULTURE_LOCALE } from '@sentry/conventions/attributes';\nimport { defineIntegration, safeSetSpanJSONAttributes } from '@sentry/core';\nimport { WINDOW } from '../helpers.js';\n\nconst INTEGRATION_NAME = \"CultureContext\";\nconst _cultureContextIntegration = (() => {\n  return {\n    name: INTEGRATION_NAME,\n    preprocessEvent(event) {\n      const culture = getCultureContext();\n      if (culture) {\n        event.contexts = {\n          ...event.contexts,\n          culture: { ...culture, ...event.contexts?.culture }\n        };\n      }\n    },\n    processSegmentSpan(span) {\n      const culture = getCultureContext();\n      if (culture) {\n        safeSetSpanJSONAttributes(span, {\n          [CULTURE_LOCALE]: culture.locale,\n          [CULTURE_TIMEZONE]: culture.timezone,\n          [CULTURE_CALENDAR]: culture.calendar\n        });\n      }\n    }\n  };\n});\nconst cultureContextIntegration = defineIntegration(_cultureContextIntegration);\nfunction getCultureContext() {\n  try {\n    const intl = WINDOW.Intl;\n    if (!intl) {\n      return void 0;\n    }\n    const options = intl.DateTimeFormat().resolvedOptions();\n    return {\n      locale: options.locale,\n      timezone: options.timeZone,\n      calendar: options.calendar\n    };\n  } catch {\n    return void 0;\n  }\n}\n\nexport { cultureContextIntegration };\n//# sourceMappingURL=culturecontext.js.map\n","import { GLOBAL_OBJ } from '../utils/worldwide.js';\nimport { addHandler, maybeInstrument, triggerHandlers } from './handlers.js';\n\nlet _oldOnErrorHandler = null;\nfunction addGlobalErrorInstrumentationHandler(handler) {\n  const type = \"error\";\n  addHandler(type, handler);\n  maybeInstrument(type, instrumentError);\n}\nfunction instrumentError() {\n  _oldOnErrorHandler = GLOBAL_OBJ.onerror;\n  GLOBAL_OBJ.onerror = function(msg, url, line, column, error) {\n    const handlerData = {\n      column,\n      error,\n      line,\n      msg,\n      url\n    };\n    triggerHandlers(\"error\", handlerData);\n    if (_oldOnErrorHandler) {\n      return _oldOnErrorHandler.apply(this, arguments);\n    }\n    return false;\n  };\n  GLOBAL_OBJ.onerror.__SENTRY_INSTRUMENTED__ = true;\n}\n\nexport { addGlobalErrorInstrumentationHandler };\n//# sourceMappingURL=globalError.js.map\n","import { GLOBAL_OBJ } from '../utils/worldwide.js';\nimport { addHandler, maybeInstrument, triggerHandlers } from './handlers.js';\n\nlet _oldOnUnhandledRejectionHandler = null;\nfunction addGlobalUnhandledRejectionInstrumentationHandler(handler) {\n  const type = \"unhandledrejection\";\n  addHandler(type, handler);\n  maybeInstrument(type, instrumentUnhandledRejection);\n}\nfunction instrumentUnhandledRejection() {\n  _oldOnUnhandledRejectionHandler = GLOBAL_OBJ.onunhandledrejection;\n  GLOBAL_OBJ.onunhandledrejection = function(e) {\n    const handlerData = e;\n    triggerHandlers(\"unhandledrejection\", handlerData);\n    if (_oldOnUnhandledRejectionHandler) {\n      return _oldOnUnhandledRejectionHandler.apply(this, arguments);\n    }\n    return true;\n  };\n  GLOBAL_OBJ.onunhandledrejection.__SENTRY_INSTRUMENTED__ = true;\n}\n\nexport { addGlobalUnhandledRejectionInstrumentationHandler };\n//# sourceMappingURL=globalUnhandledRejection.js.map\n","import { defineIntegration, addGlobalErrorInstrumentationHandler, getClient, captureEvent, debug, addGlobalUnhandledRejectionInstrumentationHandler, isPrimitive, UNKNOWN_FUNCTION, isString, stripDataUrlContent } from '@sentry/core';\nimport { DEBUG_BUILD } from '../debug-build.js';\nimport { getLocationHref } from '@sentry/browser-utils';\nimport { eventFromUnknownInput } from '../eventbuilder.js';\nimport { shouldIgnoreOnError } from '../helpers.js';\n\nconst INTEGRATION_NAME = \"GlobalHandlers\";\nconst _globalHandlersIntegration = ((options = {}) => {\n  const _options = {\n    onerror: true,\n    onunhandledrejection: true,\n    ...options\n  };\n  return {\n    name: INTEGRATION_NAME,\n    setupOnce() {\n      Error.stackTraceLimit = 50;\n    },\n    setup(client) {\n      if (_options.onerror) {\n        _installGlobalOnErrorHandler(client);\n        globalHandlerLog(\"onerror\");\n      }\n      if (_options.onunhandledrejection) {\n        _installGlobalOnUnhandledRejectionHandler(client);\n        globalHandlerLog(\"onunhandledrejection\");\n      }\n    }\n  };\n});\nconst globalHandlersIntegration = defineIntegration(_globalHandlersIntegration);\nfunction _installGlobalOnErrorHandler(client) {\n  addGlobalErrorInstrumentationHandler((data) => {\n    const { stackParser, attachStacktrace } = getOptions();\n    if (getClient() !== client || shouldIgnoreOnError(data)) {\n      return;\n    }\n    const { msg, url, line, column, error } = data;\n    const event = _enhanceEventWithInitialFrame(\n      eventFromUnknownInput(stackParser, error || msg, void 0, attachStacktrace, false),\n      url,\n      line,\n      column\n    );\n    event.level = \"error\";\n    captureEvent(event, {\n      originalException: error,\n      mechanism: {\n        handled: false,\n        type: \"auto.browser.global_handlers.onerror\"\n      }\n    });\n  });\n}\nfunction _installGlobalOnUnhandledRejectionHandler(client) {\n  addGlobalUnhandledRejectionInstrumentationHandler((e) => {\n    const { stackParser, attachStacktrace } = getOptions();\n    if (getClient() !== client || shouldIgnoreOnError()) {\n      return;\n    }\n    const error = _getUnhandledRejectionError(e);\n    const event = isPrimitive(error) ? _eventFromRejectionWithPrimitive(error) : eventFromUnknownInput(stackParser, error, void 0, attachStacktrace, true);\n    event.level = \"error\";\n    captureEvent(event, {\n      originalException: error,\n      mechanism: {\n        handled: false,\n        type: \"auto.browser.global_handlers.onunhandledrejection\"\n      }\n    });\n  });\n}\nfunction _getUnhandledRejectionError(error) {\n  if (isPrimitive(error)) {\n    return error;\n  }\n  try {\n    if (\"reason\" in error) {\n      return error.reason;\n    }\n    if (\"detail\" in error && \"reason\" in error.detail) {\n      return error.detail.reason;\n    }\n  } catch {\n  }\n  return error;\n}\nfunction _eventFromRejectionWithPrimitive(reason) {\n  return {\n    exception: {\n      values: [\n        {\n          type: \"UnhandledRejection\",\n          // String() is needed because the Primitive type includes symbols (which can't be automatically stringified)\n          value: `Non-Error promise rejection captured with value: ${String(reason)}`\n        }\n      ]\n    }\n  };\n}\nfunction _enhanceEventWithInitialFrame(event, url, lineno, colno) {\n  const e = event.exception = event.exception || {};\n  const ev = e.values = e.values || [];\n  const ev0 = ev[0] = ev[0] || {};\n  const ev0s = ev0.stacktrace = ev0.stacktrace || {};\n  const ev0sf = ev0s.frames = ev0s.frames || [];\n  if (ev0sf.length === 0) {\n    ev0sf.push({\n      colno,\n      lineno,\n      filename: getFilenameFromUrl(url) ?? getLocationHref(),\n      function: UNKNOWN_FUNCTION,\n      in_app: true\n    });\n  }\n  return event;\n}\nfunction globalHandlerLog(type) {\n  DEBUG_BUILD && debug.log(`Global Handler attached: ${type}`);\n}\nfunction getOptions() {\n  const client = getClient();\n  const options = client?.getOptions() || {\n    stackParser: () => [],\n    attachStacktrace: false\n  };\n  return options;\n}\nfunction getFilenameFromUrl(url) {\n  if (!isString(url) || url.length === 0) {\n    return void 0;\n  }\n  if (url.startsWith(\"data:\")) {\n    return `<${stripDataUrlContent(url, false)}>`;\n  }\n  return url;\n}\n\nexport { _enhanceEventWithInitialFrame, _eventFromRejectionWithPrimitive, _getUnhandledRejectionError, globalHandlersIntegration };\n//# sourceMappingURL=globalhandlers.js.map\n","import { isError } from './is.js';\n\nfunction applyAggregateErrorsToEvent(exceptionFromErrorImplementation, parser, key, limit, event, hint) {\n  if (!event.exception?.values || !hint || !isError(hint.originalException)) {\n    return;\n  }\n  const originalException = event.exception.values.length > 0 ? event.exception.values[event.exception.values.length - 1] : void 0;\n  if (originalException) {\n    event.exception.values = aggregateExceptionsFromError(\n      exceptionFromErrorImplementation,\n      parser,\n      limit,\n      hint.originalException,\n      key,\n      event.exception.values,\n      originalException,\n      0\n    );\n  }\n}\nfunction aggregateExceptionsFromError(exceptionFromErrorImplementation, parser, limit, error, key, prevExceptions, exception, exceptionId) {\n  if (prevExceptions.length >= limit + 1) {\n    return prevExceptions;\n  }\n  let newExceptions = [...prevExceptions];\n  if (isError(error[key])) {\n    applyExceptionGroupFieldsForParentException(exception, exceptionId, error);\n    const newException = exceptionFromErrorImplementation(parser, error[key]);\n    const newExceptionId = newExceptions.length;\n    applyExceptionGroupFieldsForChildException(newException, key, newExceptionId, exceptionId);\n    newExceptions = aggregateExceptionsFromError(\n      exceptionFromErrorImplementation,\n      parser,\n      limit,\n      error[key],\n      key,\n      [newException, ...newExceptions],\n      newException,\n      newExceptionId\n    );\n  }\n  if (isExceptionGroup(error)) {\n    error.errors.forEach((childError, i) => {\n      if (newExceptions.length < limit + 1 && isError(childError)) {\n        applyExceptionGroupFieldsForParentException(exception, exceptionId, error);\n        const newException = exceptionFromErrorImplementation(parser, childError);\n        const newExceptionId = newExceptions.length;\n        applyExceptionGroupFieldsForChildException(newException, `errors[${i}]`, newExceptionId, exceptionId);\n        newExceptions = aggregateExceptionsFromError(\n          exceptionFromErrorImplementation,\n          parser,\n          limit,\n          childError,\n          key,\n          [newException, ...newExceptions],\n          newException,\n          newExceptionId\n        );\n      }\n    });\n  }\n  if (isSuppressedError(error)) {\n    [\"error\", \"suppressed\"].forEach((property) => {\n      const childError = error[property];\n      if (newExceptions.length < limit + 1 && isError(childError)) {\n        applyExceptionGroupFieldsForParentException(exception, exceptionId, error);\n        const newException = exceptionFromErrorImplementation(parser, childError);\n        const newExceptionId = newExceptions.length;\n        applyExceptionGroupFieldsForChildException(newException, property, newExceptionId, exceptionId);\n        newExceptions = aggregateExceptionsFromError(\n          exceptionFromErrorImplementation,\n          parser,\n          limit,\n          childError,\n          key,\n          [newException, ...newExceptions],\n          newException,\n          newExceptionId\n        );\n      }\n    });\n  }\n  return newExceptions;\n}\nfunction isExceptionGroup(error) {\n  return Array.isArray(error.errors);\n}\nfunction isSuppressedError(error) {\n  return \"error\" in error && \"suppressed\" in error;\n}\nfunction applyExceptionGroupFieldsForParentException(exception, exceptionId, error) {\n  exception.mechanism = {\n    handled: true,\n    type: \"auto.core.linked_errors\",\n    ...isExceptionGroup(error) && { is_exception_group: true },\n    ...exception.mechanism,\n    exception_id: exceptionId\n  };\n}\nfunction applyExceptionGroupFieldsForChildException(exception, source, exceptionId, parentId) {\n  exception.mechanism = {\n    handled: true,\n    ...exception.mechanism,\n    type: \"chained\",\n    source,\n    exception_id: exceptionId,\n    parent_id: parentId\n  };\n}\n\nexport { applyAggregateErrorsToEvent };\n//# sourceMappingURL=aggregate-errors.js.map\n","import { defineIntegration, applyAggregateErrorsToEvent } from '@sentry/core';\nimport { exceptionFromError } from '../eventbuilder.js';\n\nconst DEFAULT_KEY = \"cause\";\nconst DEFAULT_LIMIT = 5;\nconst INTEGRATION_NAME = \"LinkedErrors\";\nconst _linkedErrorsIntegration = ((options = {}) => {\n  const limit = options.limit || DEFAULT_LIMIT;\n  const key = options.key || DEFAULT_KEY;\n  return {\n    name: INTEGRATION_NAME,\n    preprocessEvent(event, hint, client) {\n      const options2 = client.getOptions();\n      applyAggregateErrorsToEvent(\n        // This differs from the LinkedErrors integration in core by using a different exceptionFromError function\n        exceptionFromError,\n        options2.stackParser,\n        key,\n        limit,\n        event,\n        hint\n      );\n    }\n  };\n});\nconst linkedErrorsIntegration = defineIntegration(_linkedErrorsIntegration);\n\nexport { linkedErrorsIntegration };\n//# sourceMappingURL=linkederrors.js.map\n","import { createStackParser, UNKNOWN_FUNCTION } from '@sentry/core';\n\nconst OPERA10_PRIORITY = 10;\nconst OPERA11_PRIORITY = 20;\nconst CHROME_PRIORITY = 30;\nconst WINJS_PRIORITY = 40;\nconst GECKO_PRIORITY = 50;\nfunction createFrame(filename, func, lineno, colno) {\n  const frame = {\n    filename,\n    function: func === \"<anonymous>\" ? UNKNOWN_FUNCTION : func,\n    in_app: true\n    // All browser frames are considered in_app\n  };\n  if (lineno !== void 0) {\n    frame.lineno = lineno;\n  }\n  if (colno !== void 0) {\n    frame.colno = colno;\n  }\n  return frame;\n}\nconst chromeRegexNoFnName = /^\\s*at (\\S+?)(?::(\\d+))(?::(\\d+))\\s*$/i;\nconst chromeRegex = /^\\s*at (?:(.+?\\)(?: \\[.+\\])?|.*?) ?\\((?:address at )?)?(?:async )?((?:<anonymous>|[-a-z]+:|.*bundle|\\/)?.*?)(?::(\\d+))?(?::(\\d+))?\\)?\\s*$/i;\nconst chromeEvalRegex = /\\((\\S*)(?::(\\d+))(?::(\\d+))\\)/;\nconst chromeDataUriRegex = /at (.+?) ?\\(data:(.+?),/;\nconst chromeStackParserFn = (line) => {\n  const dataUriMatch = line.match(chromeDataUriRegex);\n  if (dataUriMatch) {\n    return {\n      filename: `<data:${dataUriMatch[2]}>`,\n      function: dataUriMatch[1]\n    };\n  }\n  const noFnParts = chromeRegexNoFnName.exec(line);\n  if (noFnParts) {\n    const [, filename, line2, col] = noFnParts;\n    return createFrame(filename, UNKNOWN_FUNCTION, +line2, +col);\n  }\n  const parts = chromeRegex.exec(line);\n  if (parts) {\n    const isEval = parts[2]?.indexOf(\"eval\") === 0;\n    if (isEval) {\n      const subMatch = chromeEvalRegex.exec(parts[2]);\n      if (subMatch) {\n        parts[2] = subMatch[1];\n        parts[3] = subMatch[2];\n        parts[4] = subMatch[3];\n      }\n    }\n    const [func, filename] = extractSafariExtensionDetails(parts[1] || UNKNOWN_FUNCTION, parts[2]);\n    return createFrame(filename, func, parts[3] ? +parts[3] : void 0, parts[4] ? +parts[4] : void 0);\n  }\n  return;\n};\nconst chromeStackLineParser = [CHROME_PRIORITY, chromeStackParserFn];\nconst geckoREgex = /^\\s*(.*?)(?:\\((.*?)\\))?(?:^|@)?((?:[-a-z]+)?:\\/.*?|\\[native code\\]|[^@]*(?:bundle|\\d+\\.js)|\\/[\\w\\-. /=]+)(?::(\\d+))?(?::(\\d+))?\\s*$/i;\nconst geckoEvalRegex = /(\\S+) line (\\d+)(?: > eval line \\d+)* > eval/i;\nconst gecko = (line) => {\n  const parts = geckoREgex.exec(line);\n  if (parts) {\n    const isEval = parts[3] && parts[3].indexOf(\" > eval\") > -1;\n    if (isEval) {\n      const subMatch = geckoEvalRegex.exec(parts[3]);\n      if (subMatch) {\n        parts[1] = parts[1] || \"eval\";\n        parts[3] = subMatch[1];\n        parts[4] = subMatch[2];\n        parts[5] = \"\";\n      }\n    }\n    let filename = parts[3];\n    let func = parts[1] || UNKNOWN_FUNCTION;\n    [func, filename] = extractSafariExtensionDetails(func, filename);\n    return createFrame(filename, func, parts[4] ? +parts[4] : void 0, parts[5] ? +parts[5] : void 0);\n  }\n  return;\n};\nconst geckoStackLineParser = [GECKO_PRIORITY, gecko];\nconst winjsRegex = /^\\s*at (?:((?:\\[object object\\])?.+) )?\\(?((?:[-a-z]+):.*?):(\\d+)(?::(\\d+))?\\)?\\s*$/i;\nconst winjs = (line) => {\n  const parts = winjsRegex.exec(line);\n  return parts ? createFrame(parts[2], parts[1] || UNKNOWN_FUNCTION, +parts[3], parts[4] ? +parts[4] : void 0) : void 0;\n};\nconst winjsStackLineParser = [WINJS_PRIORITY, winjs];\nconst opera10Regex = / line (\\d+).*script (?:in )?(\\S+)(?:: in function (\\S+))?$/i;\nconst opera10 = (line) => {\n  const parts = opera10Regex.exec(line);\n  return parts ? createFrame(parts[2], parts[3] || UNKNOWN_FUNCTION, +parts[1]) : void 0;\n};\nconst opera10StackLineParser = [OPERA10_PRIORITY, opera10];\nconst opera11Regex = / line (\\d+), column (\\d+)\\s*(?:in (?:<anonymous function: ([^>]+)>|([^)]+))\\(.*\\))? in (.*):\\s*$/i;\nconst opera11 = (line) => {\n  const parts = opera11Regex.exec(line);\n  return parts ? createFrame(parts[5], parts[3] || parts[4] || UNKNOWN_FUNCTION, +parts[1], +parts[2]) : void 0;\n};\nconst opera11StackLineParser = [OPERA11_PRIORITY, opera11];\nconst defaultStackLineParsers = [chromeStackLineParser, geckoStackLineParser];\nconst defaultStackParser = createStackParser(...defaultStackLineParsers);\nconst extractSafariExtensionDetails = (func, filename) => {\n  const isSafariExtension = func.indexOf(\"safari-extension\") !== -1;\n  const isSafariWebExtension = func.indexOf(\"safari-web-extension\") !== -1;\n  return isSafariExtension || isSafariWebExtension ? [\n    func.indexOf(\"@\") !== -1 ? func.split(\"@\")[0] : UNKNOWN_FUNCTION,\n    isSafariExtension ? `safari-extension:${filename}` : `safari-web-extension:${filename}`\n  ] : [func, filename];\n};\n\nexport { chromeStackLineParser, defaultStackLineParsers, defaultStackParser, geckoStackLineParser, opera10StackLineParser, opera11StackLineParser, winjsStackLineParser };\n//# sourceMappingURL=stack-parsers.js.map\n","import { isElement, htmlTreeAsString } from '@sentry/browser-utils';\n\nconst HTML_ELEMENT_CONSTRUCTOR_NAME_REGEX = /^HTML(\\w*)Element$/;\nfunction normalizeStringifyValue(value) {\n  if (typeof window !== \"undefined\" && value === window) {\n    return \"[Window]\";\n  }\n  if (typeof document !== \"undefined\" && value === document) {\n    return \"[Document]\";\n  }\n  if (isElement(value)) {\n    const objName = getConstructorName(value);\n    if (HTML_ELEMENT_CONSTRUCTOR_NAME_REGEX.test(objName)) {\n      return `[HTMLElement: ${htmlTreeAsString(value)}]`;\n    }\n  }\n  return void 0;\n}\nfunction getConstructorName(value) {\n  const prototype = Object.getPrototypeOf(value);\n  return prototype?.constructor ? prototype.constructor.name : \"null prototype\";\n}\n\nexport { normalizeStringifyValue };\n//# sourceMappingURL=normalizeStringifyValue.js.map\n","function isElement(wat) {\n  if (typeof Element === \"undefined\") {\n    return false;\n  }\n  try {\n    return wat instanceof Element;\n  } catch {\n    return false;\n  }\n}\n\nexport { isElement };\n//# sourceMappingURL=is.js.map\n","import { makeDsn, getTunnelPath, _INTERNAL_normalizeTunnelBasePath, debug } from '@sentry/core';\nimport { DEBUG_BUILD } from '../debug-build.js';\n\nfunction resolveBrowserTunnelOption(options) {\n  const { tunnel, dsn, transportOptions } = options;\n  if (!tunnel || typeof tunnel === \"string\") {\n    return { tunnel, transportOptions };\n  }\n  const tunnelOptions = tunnel === true ? {} : tunnel;\n  const dsnComponents = dsn && makeDsn(dsn);\n  const tunnelPath = tunnelOptions.path ?? (dsnComponents && getTunnelPath(dsnComponents));\n  if (!tunnelPath) {\n    return { tunnel: void 0, transportOptions };\n  }\n  const basePath = _INTERNAL_normalizeTunnelBasePath(tunnelOptions.basePath);\n  const resolvedTunnel = `${basePath}${tunnelPath}${tunnelOptions.trailingSlash ? \"/\" : \"\"}`;\n  DEBUG_BUILD && debug.log(`Tunneling events to \"${resolvedTunnel}\"`);\n  return {\n    tunnel: resolvedTunnel,\n    transportOptions: {\n      ...transportOptions,\n      // CSRF protection (SvelteKit, Astro) rejects the default `text/plain` POST to the tunnel as a form submission.\n      headers: { \"Content-Type\": \"application/x-sentry-envelope\", ...transportOptions?.headers }\n    }\n  };\n}\n\nexport { resolveBrowserTunnelOption };\n//# sourceMappingURL=managedTunnel.js.map\n","import { getClient } from '../currentScopes.js';\nimport { URL_PATH } from '@sentry/conventions/attributes';\nimport { escapeStringForRegex } from '../vendor/escapeStringForRegex.js';\nimport { makeDsn, dsnToString } from './dsn.js';\nimport { parseUrl } from './url.js';\n\nconst servedTunnels = /* @__PURE__ */ new WeakMap();\nconst SERVE_TUNNEL_INTEGRATION_NAME = \"ServeTunnel\";\nfunction setServedTunnel(client, tunnelOptions, forward) {\n  const allowedDsns = resolveAllowedDsns(tunnelOptions.allowedDsns, client.getDsn());\n  const servedTunnel = {\n    paths: resolveTunnelPaths(tunnelOptions, allowedDsns),\n    basePath: tunnelOptions.basePath,\n    allowedDsns,\n    forward\n  };\n  servedTunnels.set(client, servedTunnel);\n  return servedTunnel;\n}\nfunction getServeTunnelForwarder(client) {\n  return client.getIntegrationByName?.(SERVE_TUNNEL_INTEGRATION_NAME)?.forward;\n}\nfunction getServedTunnel() {\n  const client = getClient();\n  if (!client) {\n    return void 0;\n  }\n  const servedTunnel = servedTunnels.get(client);\n  if (servedTunnel) {\n    return servedTunnel;\n  }\n  const tunnelOptions = client.getOptions()._managedTunnel;\n  const forward = getServeTunnelForwarder(client);\n  return tunnelOptions && forward ? setServedTunnel(client, tunnelOptions, forward) : void 0;\n}\nfunction applyTunnelDefaults(tunnel, defaults) {\n  if (!tunnel || typeof tunnel === \"string\" || tunnel !== true && tunnel.path) {\n    return tunnel;\n  }\n  const { basePath, ...rest } = defaults ?? {};\n  const normalizedBasePath = normalizeTunnelBasePath(basePath);\n  const resolvedDefaults = normalizedBasePath ? { ...rest, basePath: normalizedBasePath } : rest;\n  if (!Object.keys(resolvedDefaults).length) {\n    return tunnel;\n  }\n  return { ...resolvedDefaults, ...tunnel === true ? {} : tunnel };\n}\nfunction getTunnelPath(dsn) {\n  const components = dsn ? makeDsn(dsn) : getClient()?.getDsn();\n  return components ? `/${fnv1a32(dsnToString(components)).toString(36)}` : void 0;\n}\nfunction getTunnelPaths() {\n  return getServedTunnel()?.paths ?? [];\n}\nfunction resolveTunnelPaths(tunnelOptions, allowedDsns) {\n  const fixedPath = tunnelOptions.path?.replace(/\\/$/, \"\");\n  if (fixedPath) {\n    return [fixedPath];\n  }\n  const paths = allowedDsns.map((dsn) => getTunnelPath(dsn));\n  return [...new Set(paths.filter((path) => !!path))];\n}\nfunction getTunnelIgnoreSpanFilters(tunnelOptions, paths) {\n  if (!paths.length) {\n    return [];\n  }\n  const basePath = escapeStringForRegex(normalizeTunnelBasePath(tunnelOptions.basePath));\n  const pathPattern = `${basePath}(?:${paths.map(escapeStringForRegex).join(\"|\")})/?`;\n  return [\n    // oxlint-disable-next-line sdk/no-regexp-constructor -- built from escaped config values, not end user input\n    { attributes: { [URL_PATH]: new RegExp(`^${pathPattern}$`) } },\n    // oxlint-disable-next-line sdk/no-regexp-constructor -- built from escaped config values, not end user input\n    { attributes: { \"http.url\": new RegExp(`^[a-z][a-z\\\\d+.-]*://[^/]+${pathPattern}(?:[?#].*)?$`) } }\n  ];\n}\nfunction normalizeTunnelBasePath(basePath) {\n  const path = (basePath?.startsWith(\"./\") ? basePath.slice(1) : basePath ?? \"\").replace(/\\/$/, \"\");\n  return !path || path.startsWith(\"/\") ? path : `/${path}`;\n}\nfunction resolveTunnelMatch(options) {\n  const servedTunnel = !options && getServedTunnel();\n  if (servedTunnel) {\n    return servedTunnel;\n  }\n  const allowedDsns = resolveAllowedDsns(options?.allowedDsns, getClient()?.getDsn());\n  return { paths: resolveTunnelPaths(options ?? {}, allowedDsns), basePath: options?.basePath, allowedDsns };\n}\nfunction matchesTunnel(request, tunnel) {\n  if (request.method !== \"POST\" || !request.url) {\n    return false;\n  }\n  const path = stripBasePath(parseUrl(request.url).path || \"/\", tunnel.basePath);\n  return path !== void 0 && tunnel.paths.includes(path.replace(/\\/$/, \"\"));\n}\nfunction isTunnelRequest(request, options) {\n  return matchesTunnel(request, resolveTunnelMatch(options));\n}\nfunction isServedTunnelRequest(request) {\n  const servedTunnel = getServedTunnel();\n  return !!servedTunnel && matchesTunnel(request, servedTunnel);\n}\nfunction handleServedTunnelRequest(request) {\n  const servedTunnel = getServedTunnel();\n  if (!servedTunnel?.allowedDsns.length || !matchesTunnel(request, servedTunnel)) {\n    return void 0;\n  }\n  return servedTunnel.forward(request, servedTunnel.allowedDsns);\n}\nfunction resolveAllowedDsns(allowedDsns, ownDsn) {\n  const dsns = /* @__PURE__ */ new Set();\n  for (const components of [...(allowedDsns ?? []).map((dsn) => makeDsn(dsn)), ownDsn]) {\n    if (components) {\n      dsns.add(dsnToString(components));\n    }\n  }\n  return [...dsns];\n}\nfunction stripBasePath(pathname, basePath) {\n  const base = normalizeTunnelBasePath(basePath);\n  if (!base) {\n    return pathname;\n  }\n  return pathname === base || pathname.startsWith(`${base}/`) ? pathname.slice(base.length) : void 0;\n}\nfunction fnv1a32(input) {\n  let hash = 2166136261;\n  for (let i = 0; i < input.length; i++) {\n    hash ^= input.charCodeAt(i);\n    hash = Math.imul(hash, 16777619);\n  }\n  return hash >>> 0;\n}\n\nexport { SERVE_TUNNEL_INTEGRATION_NAME, applyTunnelDefaults, getServeTunnelForwarder, getTunnelIgnoreSpanFilters, getTunnelPath, getTunnelPaths, handleServedTunnelRequest, isServedTunnelRequest, isTunnelRequest, matchesTunnel, normalizeTunnelBasePath, resolveAllowedDsns, resolveTunnelMatch, resolveTunnelPaths, setServedTunnel };\n//# sourceMappingURL=tunnel.js.map\n","import { DEBUG_BUILD } from '../../debug-build.js';\nimport { debug } from '../../utils/debug-logger.js';\nimport { safeUnref } from '../../utils/timer.js';\nimport { getDynamicSamplingContextFromSpan } from '../dynamicSamplingContext.js';\nimport { createStreamedSpanEnvelope } from './envelope.js';\nimport { estimateSerializedSpanSizeInBytes } from './estimateSize.js';\n\nconst MAX_SPANS_PER_ENVELOPE = 1e3;\nconst MAX_TRACE_WEIGHT_IN_BYTES = 5e6;\nclass SpanBuffer {\n  constructor(client, options) {\n    this._traceBuckets = /* @__PURE__ */ new Map();\n    this._client = client;\n    const { maxSpanLimit, flushInterval, maxTraceWeightInBytes } = options ?? {};\n    this._maxSpanLimit = maxSpanLimit && maxSpanLimit > 0 && maxSpanLimit <= MAX_SPANS_PER_ENVELOPE ? maxSpanLimit : MAX_SPANS_PER_ENVELOPE;\n    this._flushInterval = flushInterval && flushInterval > 0 ? flushInterval : 5e3;\n    this._maxTraceWeight = maxTraceWeightInBytes && maxTraceWeightInBytes > 0 ? maxTraceWeightInBytes : MAX_TRACE_WEIGHT_IN_BYTES;\n    this._client.on(\"flush\", () => {\n      this.drain();\n    });\n    this._client.on(\"close\", () => {\n      this._traceBuckets.forEach((bucket) => {\n        clearTimeout(bucket.timeout);\n      });\n      this._traceBuckets.clear();\n    });\n  }\n  /**\n   * Add a span to the buffer.\n   */\n  add(spanJSON) {\n    const traceId = spanJSON.trace_id;\n    let bucket = this._traceBuckets.get(traceId);\n    if (!bucket) {\n      bucket = {\n        spans: /* @__PURE__ */ new Set(),\n        size: 0,\n        timeout: safeUnref(\n          setTimeout(() => {\n            this.flush(traceId);\n          }, this._flushInterval)\n        )\n      };\n      this._traceBuckets.set(traceId, bucket);\n    }\n    bucket.spans.add(spanJSON);\n    bucket.size += estimateSerializedSpanSizeInBytes(spanJSON);\n    if (bucket.spans.size >= this._maxSpanLimit || bucket.size >= this._maxTraceWeight) {\n      this.flush(traceId);\n    }\n  }\n  /**\n   * Drain and flush all buffered traces.\n   */\n  drain() {\n    if (!this._traceBuckets.size) {\n      return;\n    }\n    DEBUG_BUILD && debug.log(`Flushing span tree map with ${this._traceBuckets.size} traces`);\n    this._traceBuckets.forEach((_, traceId) => {\n      this.flush(traceId);\n    });\n  }\n  /**\n   * Flush spans of a specific trace.\n   * In contrast to {@link SpanBuffer.drain}, this method does not flush all traces, but only the one with the given traceId.\n   */\n  flush(traceId) {\n    const bucket = this._traceBuckets.get(traceId);\n    if (!bucket) {\n      return;\n    }\n    if (!bucket.spans.size) {\n      this._removeTrace(traceId);\n      return;\n    }\n    const spans = Array.from(bucket.spans);\n    const segmentSpan = spans[0]?._segmentSpan;\n    if (!segmentSpan) {\n      DEBUG_BUILD && debug.warn(\"No segment span reference found on span JSON, cannot compute DSC\");\n      this._removeTrace(traceId);\n      return;\n    }\n    const dsc = getDynamicSamplingContextFromSpan(segmentSpan);\n    const cleanedSpans = spans.map((spanJSON) => {\n      const { _segmentSpan, ...cleanSpanJSON } = spanJSON;\n      return cleanSpanJSON;\n    });\n    const envelope = createStreamedSpanEnvelope(cleanedSpans, dsc, this._client);\n    DEBUG_BUILD && debug.log(`Sending span envelope for trace ${traceId} with ${cleanedSpans.length} spans`);\n    this._client.sendEnvelope(envelope).then(null, (reason) => {\n      DEBUG_BUILD && debug.error(\"Error while sending streamed span envelope:\", reason);\n    });\n    this._removeTrace(traceId);\n  }\n  _removeTrace(traceId) {\n    const bucket = this._traceBuckets.get(traceId);\n    if (bucket) {\n      clearTimeout(bucket.timeout);\n    }\n    this._traceBuckets.delete(traceId);\n  }\n}\n\nexport { SpanBuffer };\n//# sourceMappingURL=spanBuffer.js.map\n","import { estimateTypedAttributesSizeInBytes } from '../../attributes.js';\n\nfunction estimateSerializedSpanSizeInBytes(span) {\n  let weight = 156;\n  weight += span.name.length * 2;\n  weight += estimateTypedAttributesSizeInBytes(span.attributes);\n  if (span.links && span.links.length > 0) {\n    const firstLink = span.links[0];\n    const attributes = firstLink?.attributes;\n    const linkWeight = 100 + (attributes ? estimateTypedAttributesSizeInBytes(attributes) : 0);\n    weight += linkWeight * span.links.length;\n  }\n  return weight;\n}\n\nexport { estimateSerializedSpanSizeInBytes };\n//# sourceMappingURL=estimateSize.js.map\n","import { DEBUG_BUILD } from '../debug-build.js';\nimport { defineIntegration } from '../integration.js';\nimport { captureSpan } from '../tracing/spans/captureSpan.js';\nimport { hasSpanStreamingEnabled } from '../tracing/spans/hasSpanStreamingEnabled.js';\nimport { SpanBuffer } from '../tracing/spans/spanBuffer.js';\nimport { debug } from '../utils/debug-logger.js';\nimport { spanIsSampled } from '../utils/spanUtils.js';\nimport { safeUnref } from '../utils/timer.js';\n\nconst INTEGRATION_NAME = \"SpanStreaming\";\nconst spanStreamingIntegration = defineIntegration((options = {}) => {\n  const flushOnSegmentEnd = options.flushOnSegmentEnd ?? true;\n  return {\n    name: INTEGRATION_NAME,\n    setup(client) {\n      if (!hasSpanStreamingEnabled(client)) {\n        DEBUG_BUILD && debug.log(`[${INTEGRATION_NAME}] \\`traceLifecycle\\` is \"static\", skipping setup.`);\n        return;\n      }\n      const buffer = new SpanBuffer(client);\n      client.on(\"afterSpanEnd\", (span) => {\n        if (!spanIsSampled(span)) {\n          return;\n        }\n        buffer.add(captureSpan(span, client));\n      });\n      client.on(\"flushTraceSpans\", (traceId) => {\n        buffer.flush(traceId);\n      });\n      if (flushOnSegmentEnd) {\n        client.on(\"afterSegmentSpanEnd\", (segmentSpan) => {\n          const traceId = segmentSpan.spanContext().traceId;\n          safeUnref(\n            setTimeout(() => {\n              buffer.flush(traceId);\n            }, 500)\n          );\n        });\n      }\n    }\n  };\n});\n\nexport { INTEGRATION_NAME, spanStreamingIntegration };\n//# sourceMappingURL=spanStreaming.js.map\n","import { DEBUG_BUILD } from '../debug-build.js';\nimport { SEMANTIC_ATTRIBUTE_SENTRY_MEASUREMENT_UNIT, SEMANTIC_ATTRIBUTE_SENTRY_MEASUREMENT_VALUE } from '../semanticAttributes.js';\nimport { debug } from '../utils/debug-logger.js';\nimport { getRootSpan, getActiveSpan } from '../utils/spanUtils.js';\n\nfunction setMeasurement(name, value, unit, activeSpan = getActiveSpan()) {\n  const rootSpan = activeSpan && getRootSpan(activeSpan);\n  if (rootSpan) {\n    DEBUG_BUILD && debug.log(`[Measurement] Setting measurement on root span: ${name} = ${value} ${unit}`);\n    rootSpan.addEvent(name, {\n      [SEMANTIC_ATTRIBUTE_SENTRY_MEASUREMENT_VALUE]: value,\n      [SEMANTIC_ATTRIBUTE_SENTRY_MEASUREMENT_UNIT]: unit\n    });\n  }\n}\nfunction timedEventsToMeasurements(events) {\n  if (!events || events.length === 0) {\n    return void 0;\n  }\n  const measurements = {};\n  events.forEach((event) => {\n    const attributes = event.attributes || {};\n    const unit = attributes[SEMANTIC_ATTRIBUTE_SENTRY_MEASUREMENT_UNIT];\n    const value = attributes[SEMANTIC_ATTRIBUTE_SENTRY_MEASUREMENT_VALUE];\n    if (typeof unit === \"string\" && typeof value === \"number\") {\n      measurements[event.name] = { value, unit };\n    }\n  });\n  return measurements;\n}\n\nexport { setMeasurement, timedEventsToMeasurements };\n//# sourceMappingURL=measurement.js.map\n","import { getSentryCarrier, getMainCarrier } from '../carrier.js';\n\nfunction setSegmentSpanCaptureStrategy(strategy) {\n  getSentryCarrier(getMainCarrier()).segmentSpanCaptureStrategy = strategy;\n}\nfunction getSegmentSpanCaptureStrategy() {\n  return getSentryCarrier(getMainCarrier()).segmentSpanCaptureStrategy;\n}\n\nexport { getSegmentSpanCaptureStrategy, setSegmentSpanCaptureStrategy };\n//# sourceMappingURL=segmentSpanCaptureStrategy.js.map\n","import { getClient, getCurrentScope } from '../currentScopes.js';\nimport { DEBUG_BUILD } from '../debug-build.js';\nimport { SENTRY_OP, SENTRY_ORIGIN, SENTRY_SEGMENT_NAME_SOURCE, SENTRY_EXCLUSIVE_TIME, SENTRY_PROFILE_ID } from '@sentry/conventions/attributes';\nimport { SEMANTIC_ATTRIBUTE_SENTRY_CUSTOM_SPAN_NAME } from '../semanticAttributes.js';\nimport { debug } from '../utils/debug-logger.js';\nimport { generateTraceId, generateSpanId } from '../utils/propagationContext.js';\nimport { TRACE_FLAG_SAMPLED, TRACE_FLAG_NONE, spanIsSegment, INTERNAL_setSegmentNameSourceIfSegment, convertSpanLinksForEnvelope, getStatusMessage, getStreamedSpanLinks, addStatusMessageAttribute, getSimpleStatus, getRootSpan, spanToStaticSpanJSON, getSpanDescendants, spanToTransactionTraceContext, otelTimeInputToSeconds, spanTimeInputToSeconds } from '../utils/spanUtils.js';\nimport { timestampInSeconds, safePerformanceNow } from '../utils/time.js';\nimport { getDynamicSamplingContextFromSpan } from './dynamicSamplingContext.js';\nimport { logSpanEnd } from './logSpans.js';\nimport { timedEventsToMeasurements } from './measurement.js';\nimport { getSegmentSpanCaptureStrategy } from './segmentSpanCaptureStrategy.js';\nimport { isStaticBeforeSendSpanCallback } from './spans/beforeSendSpan.js';\nimport { captureStandaloneSpanWithStaticCallback, captureSpan } from './spans/captureSpan.js';\nimport { createStreamedSpanEnvelope } from './spans/envelope.js';\nimport { hasSpanStreamingEnabled } from './spans/hasSpanStreamingEnabled.js';\nimport { spanIsTracerProviderSpan, getCapturedScopesOnSpan } from './utils.js';\n\nconst MAX_SPAN_COUNT = 1e3;\nclass SentrySpan {\n  /**\n   * You should never call the constructor manually, always use `Sentry.startSpan()`\n   * or other span methods.\n   * @internal\n   * @hideconstructor\n   * @hidden\n   */\n  constructor(spanContext = {}) {\n    this._traceId = spanContext.traceId || generateTraceId();\n    this._spanId = spanContext.spanId || generateSpanId();\n    if (spanContext.startTimestamp) {\n      this._startTime = spanContext.startTimestamp;\n    } else {\n      this._startTime = timestampInSeconds();\n      this._startPerformanceNow = safePerformanceNow();\n    }\n    this._links = spanContext.links;\n    this._attributes = {};\n    this.setAttributes({\n      [SENTRY_ORIGIN]: \"manual\",\n      [SENTRY_OP]: spanContext.op,\n      ...spanContext.attributes\n    });\n    this._name = spanContext.name;\n    if (spanContext.parentSpanId) {\n      this._parentSpanId = spanContext.parentSpanId;\n    }\n    if (\"sampled\" in spanContext) {\n      this._sampled = spanContext.sampled;\n    }\n    this._events = [];\n    this._isStandaloneSpan = spanContext.isStandalone;\n  }\n  /** @inheritDoc */\n  addLink(link) {\n    if (this._frozen) {\n      return this;\n    }\n    if (this._links) {\n      this._links.push(link);\n    } else {\n      this._links = [link];\n    }\n    return this;\n  }\n  /** @inheritDoc */\n  addLinks(links) {\n    if (this._frozen) {\n      return this;\n    }\n    if (this._links) {\n      this._links.push(...links);\n    } else {\n      this._links = links;\n    }\n    return this;\n  }\n  /**\n   * This should generally not be used,\n   * but it is needed for being compliant with the OTEL Span interface.\n   *\n   * @hidden\n   * @internal\n   */\n  recordException(_exception, _time) {\n  }\n  /** @inheritdoc */\n  spanContext() {\n    const { _spanId: spanId, _traceId: traceId, _sampled: sampled } = this;\n    return {\n      spanId,\n      traceId,\n      traceFlags: sampled ? TRACE_FLAG_SAMPLED : TRACE_FLAG_NONE\n    };\n  }\n  /** @inheritdoc */\n  setAttribute(key, value) {\n    if (this._frozen) {\n      return this;\n    }\n    if (key === SENTRY_SEGMENT_NAME_SOURCE && value !== void 0 && !spanIsSegment(this)) {\n      DEBUG_BUILD && debug.warn(\"[Tracing] Ignoring name source on a child span: this attribute is only valid on the root span.\");\n      return this;\n    }\n    if (value === void 0) {\n      delete this._attributes[key];\n    } else {\n      this._attributes[key] = value;\n    }\n    return this;\n  }\n  /** @inheritdoc */\n  setAttributes(attributes) {\n    Object.keys(attributes).forEach((key) => this.setAttribute(key, attributes[key]));\n    return this;\n  }\n  /**\n   * This should generally not be used,\n   * but we need it for browser tracing where we want to adjust the start time afterwards.\n   * USE THIS WITH CAUTION!\n   *\n   * @hidden\n   * @internal\n   */\n  updateStartTime(timeInput) {\n    if (this._frozen) {\n      return;\n    }\n    this._startTime = timeInputToSeconds(this, timeInput);\n    this._startPerformanceNow = void 0;\n  }\n  /**\n   * @inheritDoc\n   */\n  setStatus(value) {\n    if (this._frozen) {\n      return this;\n    }\n    this._status = value;\n    return this;\n  }\n  /**\n   * @inheritDoc\n   */\n  updateName(name) {\n    if (this._frozen) {\n      return this;\n    }\n    this._name = name;\n    INTERNAL_setSegmentNameSourceIfSegment(this, \"custom\");\n    return this;\n  }\n  /** @inheritdoc */\n  end(endTimestamp) {\n    if (this._endTime) {\n      return;\n    }\n    this._endTime = endTimestamp == null ? this._getEndTimeFromDuration() : timeInputToSeconds(this, endTimestamp);\n    logSpanEnd(this);\n    this._onSpanEnded();\n    this._frozen = spanIsTracerProviderSpan(this);\n  }\n  /**\n   * Get JSON representation of this span.\n   *\n   * @hidden\n   * @internal This method is purely for internal purposes and should not be used outside\n   * of SDK code. If you need to get a JSON representation of a span,\n   * use `spanToJSON(span)` instead.\n   */\n  getStaticSpanJSON() {\n    return {\n      data: this._attributes,\n      description: this._name,\n      op: this._attributes[SENTRY_OP],\n      parent_span_id: this._parentSpanId,\n      span_id: this._spanId,\n      start_timestamp: this._startTime,\n      status: getStatusMessage(this._status),\n      timestamp: this._endTime,\n      trace_id: this._traceId,\n      origin: this._attributes[SENTRY_ORIGIN],\n      profile_id: this._attributes[SENTRY_PROFILE_ID],\n      exclusive_time: this._attributes[SENTRY_EXCLUSIVE_TIME],\n      measurements: timedEventsToMeasurements(this._events),\n      links: convertSpanLinksForEnvelope(this._links)\n    };\n  }\n  /**\n   * Get {@link StreamedSpanJSON} representation of this span.\n   *\n   * @hidden\n   * @internal This method is purely for internal purposes and should not be used outside\n   * of SDK code. If you need to get a JSON representation of a span,\n   * use `spanToJSON(span)` instead.\n   */\n  getSpanJSON() {\n    return {\n      name: this._name ?? \"\",\n      span_id: this._spanId,\n      trace_id: this._traceId,\n      parent_span_id: this._parentSpanId,\n      start_timestamp: this._startTime,\n      end_timestamp: this._endTime,\n      is_segment: spanIsSegment(this),\n      status: getSimpleStatus(this._status),\n      attributes: addStatusMessageAttribute(this._attributes, this._status),\n      links: getStreamedSpanLinks(this._links)\n    };\n  }\n  /** @inheritdoc */\n  isRecording() {\n    return !this._endTime && !!this._sampled;\n  }\n  /**\n   * @inheritdoc\n   */\n  addEvent(name, attributesOrStartTime, startTime) {\n    if (this._frozen) {\n      return this;\n    }\n    DEBUG_BUILD && debug.log(\"[Tracing] Adding an event to span:\", name);\n    const time = isSpanTimeInput(attributesOrStartTime) ? attributesOrStartTime : startTime || void 0;\n    const attributes = isSpanTimeInput(attributesOrStartTime) ? {} : attributesOrStartTime || {};\n    const event = {\n      name,\n      time: timeInputToSeconds(this, time),\n      attributes\n    };\n    this._events.push(event);\n    return this;\n  }\n  /**\n   * Whether this span is sent on its own (as a v2 streamed span) rather than as part of a\n   * transaction. Used internally; see `_isStandaloneSpan`.\n   * @internal\n   */\n  isStandaloneSpan() {\n    return !!this._isStandaloneSpan;\n  }\n  /**\n   * Returns the start time plus the `performance.now()` time since the span started.\n   *\n   * This way, the duration is correct even if the time origin was corrected while the span was running (e.g. after the\n   * device slept), and it can never be negative.\n   */\n  _getEndTimeFromDuration() {\n    const performanceNow = safePerformanceNow();\n    if (this._startPerformanceNow == null || performanceNow == null) {\n      return timestampInSeconds();\n    }\n    return this._startTime + (performanceNow - this._startPerformanceNow) / 1e3;\n  }\n  /** Emit `spanEnd` when the span is ended. */\n  _onSpanEnded() {\n    const client = getClient();\n    client?.emit(\"spanEnd\", this);\n    if (this._isStandaloneSpan) {\n      if (!client) return;\n      if (this._sampled) {\n        sendStandaloneSpan(this, client);\n        return;\n      }\n      DEBUG_BUILD && debug.log(\"[Tracing] Discarding standalone span because its trace was not chosen to be sampled.\");\n      return;\n    }\n    client?.emit(\"afterSpanEnd\", this);\n    const rootSpan = getRootSpan(this);\n    if (rootSpan !== this) {\n      const strategy2 = getSegmentSpanCaptureStrategy();\n      if (strategy2) {\n        const scope2 = getCapturedScopesOnSpan(this).scope || getCurrentScope();\n        strategy2.onChildSpanEnded(this, rootSpan, (options) => this._convertSpanToTransaction(options), scope2);\n      }\n      return;\n    }\n    if (client && hasSpanStreamingEnabled(client)) {\n      client.emit(\"afterSegmentSpanEnd\", this);\n      return;\n    }\n    const scope = getCapturedScopesOnSpan(this).scope || getCurrentScope();\n    const strategy = getSegmentSpanCaptureStrategy();\n    if (strategy) {\n      strategy.onSegmentSpanEnded((options) => this._convertSpanToTransaction(options), scope);\n    } else {\n      const transactionEvent = this._convertSpanToTransaction();\n      if (transactionEvent) {\n        scope.captureEvent(transactionEvent);\n      }\n    }\n  }\n  /**\n   * Finish the transaction & prepare the event to send to Sentry.\n   */\n  _convertSpanToTransaction(options = {}) {\n    if (!isFullFinishedSpan(spanToStaticSpanJSON(this))) {\n      return void 0;\n    }\n    if (!this._name) {\n      DEBUG_BUILD && debug.warn(\"Transaction has no name, falling back to `<unlabeled transaction>`.\");\n      this._name = \"<unlabeled transaction>\";\n    }\n    const { scope: capturedSpanScope, isolationScope: capturedSpanIsolationScope } = getCapturedScopesOnSpan(this);\n    const normalizedRequest = capturedSpanScope?.getScopeData().sdkProcessingMetadata?.normalizedRequest;\n    if (this._sampled !== true) {\n      return void 0;\n    }\n    options.onSpanCaptured?.(this);\n    const spans = [];\n    let droppedUnfinishedSpanCount = 0;\n    for (const descendant of getSpanDescendants(this)) {\n      if (descendant === this || isStandaloneSpan(descendant) || options.isSpanAlreadyCaptured?.(descendant)) {\n        continue;\n      }\n      const spanJSON = spanToStaticSpanJSON(descendant);\n      if (!isFullFinishedSpan(spanJSON)) {\n        if (!options.onSpanCaptured) {\n          droppedUnfinishedSpanCount++;\n        }\n        continue;\n      }\n      options.onSpanCaptured?.(descendant);\n      spans.push(spanJSON);\n    }\n    const client = capturedSpanScope?.getClient() || getClient();\n    if (droppedUnfinishedSpanCount) {\n      client?.recordDroppedEvent(\"invalid\", \"span\", droppedUnfinishedSpanCount);\n    }\n    if (spans.length > MAX_SPAN_COUNT) {\n      client?.recordDroppedEvent(\"buffer_overflow\", \"span\", spans.length - MAX_SPAN_COUNT);\n    }\n    const source = this._attributes[SENTRY_SEGMENT_NAME_SOURCE];\n    delete this._attributes[SEMANTIC_ATTRIBUTE_SENTRY_CUSTOM_SPAN_NAME];\n    let hasGenAiSpans = false;\n    spans.forEach((span) => {\n      delete span.data[SEMANTIC_ATTRIBUTE_SENTRY_CUSTOM_SPAN_NAME];\n      if (span.op?.startsWith(\"gen_ai.\")) {\n        hasGenAiSpans = true;\n      }\n    });\n    const transaction = {\n      contexts: {\n        trace: spanToTransactionTraceContext(this)\n      },\n      spans: (\n        // spans.sort() mutates the array, but `spans` is already a copy so we can safely do this here\n        // we do not use spans anymore after this point\n        spans.length > MAX_SPAN_COUNT ? spans.sort((a, b) => a.start_timestamp - b.start_timestamp).slice(0, MAX_SPAN_COUNT) : spans\n      ),\n      start_timestamp: this._startTime,\n      timestamp: this._endTime,\n      transaction: this._name,\n      type: \"transaction\",\n      sdkProcessingMetadata: {\n        capturedSpanScope,\n        capturedSpanIsolationScope,\n        dynamicSamplingContext: getDynamicSamplingContextFromSpan(this),\n        hasGenAiSpans\n      },\n      request: normalizedRequest,\n      ...source && {\n        transaction_info: {\n          source\n        }\n      }\n    };\n    const measurements = timedEventsToMeasurements(this._events);\n    const hasMeasurements = measurements && Object.keys(measurements).length;\n    if (hasMeasurements) {\n      DEBUG_BUILD && debug.log(\n        \"[Measurements] Adding measurements to transaction event\",\n        JSON.stringify(measurements, void 0, 2)\n      );\n      transaction.measurements = measurements;\n    }\n    return transaction;\n  }\n}\nfunction timeInputToSeconds(span, input) {\n  return spanIsTracerProviderSpan(span) ? otelTimeInputToSeconds(input) : spanTimeInputToSeconds(input);\n}\nfunction isSpanTimeInput(value) {\n  return value && typeof value === \"number\" || value instanceof Date || Array.isArray(value);\n}\nfunction isFullFinishedSpan(input) {\n  return !!input.start_timestamp && !!input.timestamp && !!input.span_id && !!input.trace_id;\n}\nfunction isStandaloneSpan(span) {\n  return span instanceof SentrySpan && span.isStandaloneSpan();\n}\nfunction sendStandaloneSpan(span, client) {\n  const { beforeSendSpan, traceLifecycle } = client.getOptions();\n  if (traceLifecycle === \"static\" && isStaticBeforeSendSpanCallback(beforeSendSpan)) {\n    const serializedSpan2 = captureStandaloneSpanWithStaticCallback(span, client, beforeSendSpan);\n    const dsc2 = getDynamicSamplingContextFromSpan(span);\n    client.sendEnvelope(createStreamedSpanEnvelope([serializedSpan2], dsc2, client));\n    return;\n  }\n  const { _segmentSpan, ...serializedSpan } = captureSpan(span, client);\n  const dsc = getDynamicSamplingContextFromSpan(_segmentSpan);\n  client.sendEnvelope(createStreamedSpanEnvelope([serializedSpan], dsc, client));\n}\n\nexport { SentrySpan };\n//# sourceMappingURL=sentrySpan.js.map\n","import { DEBUG_BUILD } from '../debug-build.js';\nimport { debug } from '../utils/debug-logger.js';\nimport { spanToStaticSpanJSON, getRootSpan, spanIsSampled } from '../utils/spanUtils.js';\n\nfunction logSpanStart(span) {\n  if (!DEBUG_BUILD) return;\n  const {\n    description = \"< unknown name >\",\n    op = \"< unknown op >\",\n    parent_span_id: parentSpanId\n  } = spanToStaticSpanJSON(span);\n  const { spanId } = span.spanContext();\n  const sampled = spanIsSampled(span);\n  const rootSpan = getRootSpan(span);\n  const isRootSpan = rootSpan === span;\n  const header = `[Tracing] Starting ${sampled ? \"sampled\" : \"unsampled\"} ${isRootSpan ? \"root \" : \"\"}span`;\n  const infoParts = [`op: ${op}`, `name: ${description}`, `ID: ${spanId}`];\n  if (parentSpanId) {\n    infoParts.push(`parent ID: ${parentSpanId}`);\n  }\n  if (!isRootSpan) {\n    const { op: op2, description: description2 } = spanToStaticSpanJSON(rootSpan);\n    infoParts.push(`root ID: ${rootSpan.spanContext().spanId}`);\n    if (op2) {\n      infoParts.push(`root op: ${op2}`);\n    }\n    if (description2) {\n      infoParts.push(`root description: ${description2}`);\n    }\n  }\n  debug.log(`${header}\n  ${infoParts.join(\"\\n  \")}`);\n}\nfunction logSpanEnd(span) {\n  if (!DEBUG_BUILD) return;\n  const { description = \"< unknown name >\", op = \"< unknown op >\" } = spanToStaticSpanJSON(span);\n  const { spanId } = span.spanContext();\n  const rootSpan = getRootSpan(span);\n  const isRootSpan = rootSpan === span;\n  const msg = `[Tracing] Finishing \"${op}\" ${isRootSpan ? \"root \" : \"\"}span \"${description}\" with ID ${spanId}`;\n  debug.log(msg);\n}\n\nexport { logSpanEnd, logSpanStart };\n//# sourceMappingURL=logSpans.js.map\n","import { getAsyncContextStrategy } from '../asyncContext/index.js';\nimport { getMainCarrier } from '../carrier.js';\nimport { getClient, withScope, getCurrentScope, getIsolationScope } from '../currentScopes.js';\nimport { DEBUG_BUILD } from '../debug-build.js';\nimport { SENTRY_OP, SENTRY_SEGMENT_NAME_SOURCE } from '@sentry/conventions/attributes';\nimport { SEMANTIC_ATTRIBUTE_SENTRY_SAMPLE_RATE } from '../semanticAttributes.js';\nimport { baggageHeaderToDynamicSamplingContext } from '../utils/baggage.js';\nimport { debug } from '../utils/debug-logger.js';\nimport { handleCallbackErrors } from '../utils/handleCallbackErrors.js';\nimport { recordEscapedErrorSpan } from '../utils/errorSpanAttribution.js';\nimport { hasSpansEnabled } from '../utils/hasSpansEnabled.js';\nimport { shouldIgnoreSpan } from '../utils/should-ignore-span.js';\nimport { hasSpanStreamingEnabled } from './spans/hasSpanStreamingEnabled.js';\nimport { parseSampleRate } from '../utils/parseSampleRate.js';\nimport { generateTraceId } from '../utils/propagationContext.js';\nimport { safeMathRandom } from '../utils/randomSafeContext.js';\nimport { _setSpanForScope } from '../utils/spanOnScope.js';\nimport { spanTimeInputToSeconds, addChildSpanToSpan, spanIsSampled, getActiveSpan, getRootSpan, spanToStaticSpanJSON } from '../utils/spanUtils.js';\nimport { shouldContinueTrace, propagationContextFromHeaders } from '../utils/tracing.js';\nimport { getDynamicSamplingContextFromSpan, freezeDscOnSpan } from './dynamicSamplingContext.js';\nimport { logSpanStart } from './logSpans.js';\nimport { sampleSpan } from './sampling.js';\nimport { spanIsNonRecordingSpan, SentryNonRecordingSpan } from './sentryNonRecordingSpan.js';\nimport { SentrySpan } from './sentrySpan.js';\nimport { SPAN_STATUS_ERROR } from './spanstatus.js';\nimport { setCapturedScopesOnSpan, getCapturedScopesOnSpan } from './utils.js';\nimport { SUPPRESS_TRACING_KEY } from './constants.js';\n\nfunction startSpan(options, callback) {\n  const spanArguments = parseSentrySpanArguments(options);\n  const { forceTransaction, parentSpan: customParentSpan, scope: customScope } = options;\n  const customForkedScope = customScope?.clone();\n  return withScope(customForkedScope, () => {\n    const wrapper = getActiveSpanWrapper(customParentSpan);\n    return wrapper(() => {\n      const scope = getCurrentScope();\n      const parentSpan = getParentSpan(customScope ?? scope, customParentSpan);\n      const client = getClient();\n      const missingRequiredParent = options.onlyIfParent && !parentSpan;\n      const activeSpan = missingRequiredParent ? startMissingRequiredParentSpan(scope, client) : createChildOrRootSpan({\n        parentSpan,\n        spanArguments,\n        forceTransaction,\n        scope\n      });\n      const makeSpanActive = !spanIsIgnored(activeSpan) || !parentSpan;\n      return runCallback(\n        activeSpan,\n        makeSpanActive,\n        () => callback(activeSpan),\n        () => activeSpan.end()\n      );\n    });\n  });\n}\nfunction startSpanManual(options, callback) {\n  const spanArguments = parseSentrySpanArguments(options);\n  const { forceTransaction, parentSpan: customParentSpan, scope: customScope } = options;\n  const customForkedScope = customScope?.clone();\n  return withScope(customForkedScope, () => {\n    const wrapper = getActiveSpanWrapper(customParentSpan);\n    return wrapper(() => {\n      const scope = getCurrentScope();\n      const parentSpan = getParentSpan(customScope ?? scope, customParentSpan);\n      const missingRequiredParent = options.onlyIfParent && !parentSpan;\n      const activeSpan = missingRequiredParent ? startMissingRequiredParentSpan(scope, getClient()) : createChildOrRootSpan({\n        parentSpan,\n        spanArguments,\n        forceTransaction,\n        scope\n      });\n      const makeSpanActive = !spanIsIgnored(activeSpan) || !parentSpan;\n      return runCallback(activeSpan, makeSpanActive, () => callback(activeSpan, () => activeSpan.end()));\n    });\n  });\n}\nfunction startInactiveSpan(options) {\n  const spanArguments = parseSentrySpanArguments(options);\n  const { forceTransaction, parentSpan: customParentSpan, scope: customScope } = options;\n  const wrapper = customScope ? (callback) => withScope(customScope, callback) : customParentSpan !== void 0 ? (callback) => withActiveSpan(customParentSpan, callback) : (callback) => callback();\n  return wrapper(() => {\n    const scope = getCurrentScope();\n    const parentSpan = getParentSpan(customScope ?? scope, customParentSpan);\n    const client = getClient();\n    const missingRequiredParent = options.onlyIfParent && !parentSpan;\n    if (missingRequiredParent) {\n      return startMissingRequiredParentSpan(scope, client);\n    }\n    return createChildOrRootSpan({\n      parentSpan,\n      spanArguments,\n      forceTransaction,\n      scope\n    });\n  });\n}\nconst continueTrace = (options, callback) => {\n  const carrier = getMainCarrier();\n  const acs = getAsyncContextStrategy(carrier);\n  if (acs.continueTrace) {\n    return acs.continueTrace(options, callback);\n  }\n  const { sentryTrace, baggage } = options;\n  const client = getClient();\n  const incomingDsc = baggageHeaderToDynamicSamplingContext(baggage);\n  if (client && !shouldContinueTrace(client, incomingDsc?.org_id)) {\n    return startNewTrace(callback);\n  }\n  return withScope((scope) => {\n    const propagationContext = propagationContextFromHeaders(sentryTrace, baggage);\n    scope.setPropagationContext(propagationContext);\n    return withActiveSpan(null, callback);\n  });\n};\nfunction withActiveSpan(span, callback) {\n  const acs = getAcs();\n  if (acs.withActiveSpan) {\n    return acs.withActiveSpan(span, callback);\n  }\n  return withScope((scope) => {\n    _setSpanForScope(scope, span || void 0);\n    return callback(scope);\n  });\n}\nfunction suppressTracing(callback) {\n  const acs = getAcs();\n  if (acs.suppressTracing) {\n    return acs.suppressTracing(callback);\n  }\n  return withScope((scope) => {\n    scope.setSDKProcessingMetadata({ [SUPPRESS_TRACING_KEY]: true });\n    return callback();\n  });\n}\nfunction isTracingSuppressed(scope = getCurrentScope()) {\n  const acs = getAcs();\n  if (acs.isTracingSuppressed) {\n    return acs.isTracingSuppressed(scope);\n  }\n  return scope.getScopeData().sdkProcessingMetadata[SUPPRESS_TRACING_KEY] === true;\n}\nfunction startNewTrace(callback) {\n  const acs = getAcs();\n  if (acs.startNewTrace) {\n    return acs.startNewTrace(callback);\n  }\n  return withActiveSpan(null, () => {\n    return withScope((scope) => {\n      scope.setPropagationContext({\n        traceId: generateTraceId(),\n        sampleRand: safeMathRandom()\n      });\n      DEBUG_BUILD && debug.log(`Starting a new trace with id ${scope.getPropagationContext().traceId}`);\n      return callback();\n    });\n  });\n}\nfunction startMissingRequiredParentSpan(scope, client) {\n  client?.recordDroppedEvent(\"no_parent_span\", \"span\");\n  const span = new SentryNonRecordingSpan({\n    dropReason: \"no_parent_span\",\n    traceId: scope.getPropagationContext().traceId\n  });\n  setCapturedScopesOnSpan(span, scope, getIsolationScope());\n  return span;\n}\nfunction createChildOrRootSpan({\n  parentSpan: resolvedParentSpan,\n  spanArguments,\n  forceTransaction,\n  scope: currentScope\n}) {\n  const isolationScope = getIsolationScope();\n  const spanScope = {\n    scope: currentScope,\n    parentSpan: resolvedParentSpan\n  };\n  getClient()?.emit(\"prepareSpanScope\", spanScope);\n  const { scope, parentSpan } = spanScope;\n  if (!hasSpansEnabled()) {\n    const scopePropagationContext = scope.getPropagationContext();\n    const traceId = parentSpan ? parentSpan.spanContext().traceId : scopePropagationContext.traceId;\n    const span2 = new SentryNonRecordingSpan({ traceId });\n    if (parentSpan && !forceTransaction) {\n      addChildSpanToSpan(parentSpan, span2);\n    }\n    setCapturedScopesOnSpan(span2, scope, isolationScope);\n    return span2;\n  }\n  const client = getClient();\n  if (_shouldIgnoreStreamedSpan(client, spanArguments)) {\n    if (!isTracingSuppressed(scope)) {\n      client?.recordDroppedEvent(\"ignored\", \"span\");\n    }\n    const ignoredSpan = new SentryNonRecordingSpan({\n      dropReason: \"ignored\",\n      traceId: parentSpan?.spanContext().traceId ?? scope.getPropagationContext().traceId\n    });\n    if (parentSpan && !forceTransaction) {\n      addChildSpanToSpan(parentSpan, ignoredSpan);\n    }\n    setCapturedScopesOnSpan(ignoredSpan, scope, isolationScope);\n    return ignoredSpan;\n  }\n  let span;\n  if (parentSpan && !forceTransaction) {\n    span = _startChildSpan(parentSpan, scope, spanArguments, isolationScope);\n    addChildSpanToSpan(parentSpan, span);\n  } else if (parentSpan) {\n    const dsc = getDynamicSamplingContextFromSpan(parentSpan);\n    const { traceId, spanId: parentSpanId } = parentSpan.spanContext();\n    const parentSampled = spanIsSampled(parentSpan);\n    span = _startRootSpan(\n      {\n        traceId,\n        parentSpanId,\n        ...spanArguments\n      },\n      scope,\n      isolationScope,\n      parentSampled\n    );\n    freezeDscOnSpan(span, dsc);\n  } else {\n    const { traceId, dsc, parentSpanId, sampled: parentSampled, sampleRand } = scope.getPropagationContext();\n    span = _startRootSpan(\n      {\n        traceId,\n        parentSpanId,\n        ...spanArguments\n      },\n      scope,\n      isolationScope,\n      parentSampled\n    );\n    if (dsc) {\n      const dscWithSampleRand = Object.keys(dsc).length === 0 && sampleRand !== void 0 ? { sample_rand: sampleRand.toString() } : dsc;\n      freezeDscOnSpan(span, dscWithSampleRand);\n    }\n  }\n  logSpanStart(span);\n  return span;\n}\nfunction parseSentrySpanArguments(options) {\n  const initialCtx = {\n    // TODO(standalone): remove once the static (transaction) trace lifecycle is dropped.\n    // oxlint-disable-next-line typescript/no-deprecated\n    isStandalone: options.experimental?.standalone,\n    ...options\n  };\n  if (options.op) {\n    initialCtx.attributes = {\n      [SENTRY_OP]: options.op,\n      ...options.attributes\n    };\n  }\n  if (options.startTime) {\n    const ctx = { ...initialCtx };\n    ctx.startTimestamp = spanTimeInputToSeconds(options.startTime);\n    delete ctx.startTime;\n    return ctx;\n  }\n  return initialCtx;\n}\nfunction getAcs() {\n  const carrier = getMainCarrier();\n  return getAsyncContextStrategy(carrier);\n}\nfunction _startRootSpan(spanArguments, scope, isolationScope, parentSampled) {\n  const client = getClient();\n  const options = client?.getOptions() || {};\n  const { name = \"\" } = spanArguments;\n  const mutableSpanSamplingData = { spanAttributes: { ...spanArguments.attributes }, spanName: name, parentSampled };\n  client?.emit(\"beforeSampling\", mutableSpanSamplingData, { decision: false });\n  const finalParentSampled = mutableSpanSamplingData.parentSampled ?? parentSampled;\n  const finalAttributes = mutableSpanSamplingData.spanAttributes;\n  const currentPropagationContext = scope.getPropagationContext();\n  const _isTracingSuppressed = isTracingSuppressed(scope);\n  const [sampled, sampleRate, localSampleRateWasApplied, dropReason] = _isTracingSuppressed ? [false] : sampleSpan(\n    options,\n    {\n      name,\n      parentSampled: finalParentSampled,\n      attributes: finalAttributes,\n      normalizedRequest: isolationScope.getScopeData().sdkProcessingMetadata.normalizedRequest,\n      parentSampleRate: parseSampleRate(currentPropagationContext.dsc?.sample_rate)\n    },\n    currentPropagationContext.sampleRand\n  );\n  const rootSpan = new SentrySpan({\n    ...spanArguments,\n    attributes: {\n      [SENTRY_SEGMENT_NAME_SOURCE]: \"custom\",\n      [SEMANTIC_ATTRIBUTE_SENTRY_SAMPLE_RATE]: sampleRate !== void 0 && localSampleRateWasApplied ? sampleRate : void 0,\n      ...finalAttributes\n    },\n    sampled\n  });\n  if (!sampled && client && !_isTracingSuppressed) {\n    DEBUG_BUILD && debug.log(\"[Tracing] Discarding root span because its trace was not chosen to be sampled.\");\n    const outcomeReason = dropReason || \"sample_rate\";\n    if (!hasSpanStreamingEnabled(client) && !spanArguments.isStandalone) {\n      client.recordDroppedEvent(outcomeReason, \"transaction\");\n    }\n    client.recordDroppedEvent(outcomeReason, \"span\");\n  }\n  setCapturedScopesOnSpan(rootSpan, scope, isolationScope);\n  if (client) {\n    client.emit(\"spanStart\", rootSpan);\n  }\n  return rootSpan;\n}\nfunction _startChildSpan(parentSpan, scope, spanArguments, isolationScope) {\n  const { spanId, traceId } = parentSpan.spanContext();\n  const _isTracingSuppressed = isTracingSuppressed(scope);\n  const sampled = _isTracingSuppressed ? false : spanIsSampled(parentSpan);\n  const childSpan = sampled ? new SentrySpan({\n    ...spanArguments,\n    parentSpanId: spanId,\n    traceId,\n    sampled\n  }) : new SentryNonRecordingSpan({ traceId });\n  addChildSpanToSpan(parentSpan, childSpan);\n  setCapturedScopesOnSpan(childSpan, scope, isolationScope);\n  const client = getClient();\n  if (!client) {\n    return childSpan;\n  }\n  if (spanIsNonRecordingSpan(childSpan)) {\n    if (spanIsNonRecordingSpan(parentSpan) && parentSpan.dropReason) {\n      childSpan.dropReason = parentSpan.dropReason;\n      client.recordDroppedEvent(parentSpan.dropReason, \"span\");\n    } else if (!_isTracingSuppressed) {\n      childSpan.dropReason = \"sample_rate\";\n      client.recordDroppedEvent(\"sample_rate\", \"span\");\n    }\n  }\n  client.emit(\"spanStart\", childSpan);\n  return childSpan;\n}\nfunction getParentSpan(scope, customParentSpan) {\n  if (customParentSpan) {\n    return customParentSpan;\n  }\n  if (customParentSpan === null) {\n    return void 0;\n  }\n  const span = getActiveSpan(scope);\n  if (!span) {\n    return void 0;\n  }\n  const client = getClient();\n  const options = client ? client.getOptions() : {};\n  if (options.parentSpanIsAlwaysRootSpan) {\n    return getRootSpan(span);\n  }\n  return span;\n}\nfunction getActiveSpanWrapper(parentSpan) {\n  return parentSpan !== void 0 ? (callback) => {\n    return withActiveSpan(parentSpan, callback);\n  } : (callback) => callback();\n}\nfunction _shouldIgnoreStreamedSpan(client, spanArguments) {\n  const ignoreSpans = client?.getOptions().ignoreSpans;\n  if (!client || !hasSpanStreamingEnabled(client) || !ignoreSpans?.length) {\n    return false;\n  }\n  return shouldIgnoreSpan(\n    {\n      description: spanArguments.name || \"\",\n      op: spanArguments.attributes?.[SENTRY_OP] || spanArguments.op,\n      attributes: spanArguments.attributes\n    },\n    ignoreSpans\n  );\n}\nfunction spanIsIgnored(span) {\n  return spanIsNonRecordingSpan(span) && span.dropReason === \"ignored\";\n}\nfunction runCallback(span, makeSpanActive, callback, finallyCallback) {\n  const wrapper = makeSpanActive ? (callback2) => {\n    return withActiveSpan(span, () => {\n      const scope = getCurrentScope();\n      const creationScope = getCapturedScopesOnSpan(span).scope;\n      if (creationScope) {\n        scope.setPropagationContext(creationScope.getPropagationContext());\n      }\n      setCapturedScopesOnSpan(span, scope, getIsolationScope());\n      return callback2();\n    });\n  } : (callback2) => callback2();\n  return wrapper(\n    () => handleCallbackErrors(\n      () => callback(),\n      (error) => {\n        recordEscapedErrorSpan(error, span);\n        const { status } = spanToStaticSpanJSON(span);\n        if (span.isRecording() && status === \"ok\") {\n          span.setStatus({ code: SPAN_STATUS_ERROR, message: \"internal_error\" });\n        }\n      },\n      finallyCallback\n    )\n  );\n}\n\nexport { continueTrace, isTracingSuppressed, spanIsIgnored, startInactiveSpan, startNewTrace, startSpan, startSpanManual, suppressTracing, withActiveSpan };\n//# sourceMappingURL=trace.js.map\n","import { DEBUG_BUILD } from '../debug-build.js';\nimport { debug } from '../utils/debug-logger.js';\nimport { hasSpansEnabled } from '../utils/hasSpansEnabled.js';\nimport { parseSampleRate } from '../utils/parseSampleRate.js';\nimport { safeCallback } from '../utils/safeCallback.js';\n\nfunction sampleSpan(options, samplingContext, sampleRand) {\n  if (!hasSpansEnabled(options)) {\n    return [false];\n  }\n  const resolved = resolveSampleRate(options, samplingContext);\n  if (!resolved) {\n    return [false, void 0, void 0, \"callback_error\"];\n  }\n  const [sampleRate, localSampleRateWasApplied] = resolved;\n  const parsedSampleRate = parseSampleRate(sampleRate);\n  if (parsedSampleRate === void 0) {\n    DEBUG_BUILD && debug.warn(\n      `[Tracing] Discarding root span because of invalid sample rate. Sample rate must be a boolean or a number between 0 and 1. Got ${JSON.stringify(\n        sampleRate\n      )} of type ${JSON.stringify(typeof sampleRate)}.`\n    );\n    return [false];\n  }\n  if (!parsedSampleRate) {\n    DEBUG_BUILD && debug.log(\n      `[Tracing] Discarding transaction because ${typeof options.tracesSampler === \"function\" ? \"tracesSampler returned 0 or false\" : \"a negative sampling decision was inherited or tracesSampleRate is set to 0\"}`\n    );\n    return [false, parsedSampleRate, localSampleRateWasApplied];\n  }\n  const shouldSample = sampleRand < parsedSampleRate;\n  if (!shouldSample) {\n    DEBUG_BUILD && debug.log(\n      `[Tracing] Discarding transaction because it's not included in the random sample (sampling rate = ${Number(\n        sampleRate\n      )})`\n    );\n  }\n  return [shouldSample, parsedSampleRate, localSampleRateWasApplied];\n}\nfunction resolveSampleRate(options, samplingContext) {\n  const { tracesSampler, tracesSampleRate } = options;\n  if (typeof tracesSampler === \"function\") {\n    const samplerResult = safeCallback(\n      DEBUG_BUILD ? \"The `tracesSampler` callback threw an error, falling back to the parent sampling decision or `tracesSampleRate`:\" : \"\",\n      () => [\n        tracesSampler({\n          ...samplingContext,\n          inheritOrSampleWith: (fallbackSampleRate) => {\n            if (typeof samplingContext.parentSampleRate === \"number\") {\n              return samplingContext.parentSampleRate;\n            }\n            if (typeof samplingContext.parentSampled === \"boolean\") {\n              return Number(samplingContext.parentSampled);\n            }\n            return fallbackSampleRate;\n          }\n        }),\n        true\n      ],\n      () => void 0\n    );\n    if (samplerResult) {\n      return samplerResult;\n    }\n  }\n  if (samplingContext.parentSampled !== void 0) {\n    return [samplingContext.parentSampled];\n  }\n  if (typeof tracesSampleRate !== \"undefined\") {\n    return [tracesSampleRate, true];\n  }\n  return void 0;\n}\n\nexport { sampleSpan };\n//# sourceMappingURL=sampling.js.map\n","import { getClient } from '../currentScopes.js';\nimport { spanStreamingIntegration } from '../integrations/spanStreaming.js';\nimport { hasSpanStreamingEnabled } from './spans/hasSpanStreamingEnabled.js';\nimport { startInactiveSpan as startInactiveSpan$1, startSpan as startSpan$1, startSpanManual as startSpanManual$1 } from './trace.js';\n\nconst clientsWithIntegration = /* @__PURE__ */ new WeakSet();\nfunction _INTERNAL_ensureBrowserSpanStreaming(client = getClient()) {\n  if (!client || clientsWithIntegration.has(client) || !hasSpanStreamingEnabled(client)) {\n    return;\n  }\n  clientsWithIntegration.add(client);\n  client.addIntegration(spanStreamingIntegration());\n}\nfunction startSpan(options, callback) {\n  _INTERNAL_ensureBrowserSpanStreaming();\n  return startSpan$1(options, callback);\n}\nfunction startSpanManual(options, callback) {\n  _INTERNAL_ensureBrowserSpanStreaming();\n  return startSpanManual$1(options, callback);\n}\nfunction startInactiveSpan(options) {\n  _INTERNAL_ensureBrowserSpanStreaming();\n  return startInactiveSpan$1(options);\n}\n\nexport { _INTERNAL_ensureBrowserSpanStreaming, startInactiveSpan, startSpan, startSpanManual };\n//# sourceMappingURL=browserSpanApi.js.map\n","import { SENTRY_IDLE_SPAN_FINISH_REASON } from '@sentry/conventions/attributes';\nimport { getClient, getCurrentScope, getIsolationScope } from '../currentScopes.js';\nimport { DEBUG_BUILD } from '../debug-build.js';\nimport { debug } from '../utils/debug-logger.js';\nimport { hasSpansEnabled } from '../utils/hasSpansEnabled.js';\nimport { shouldIgnoreSpan } from '../utils/should-ignore-span.js';\nimport { _setSpanForScope } from '../utils/spanOnScope.js';\nimport { getActiveSpan, spanTimeInputToSeconds, getSpanDescendants, spanToStaticSpanJSON, removeChildSpanFromSpan, spanToJSON } from '../utils/spanUtils.js';\nimport { timestampInSeconds } from '../utils/time.js';\nimport { _INTERNAL_ensureBrowserSpanStreaming } from './browserSpanApi.js';\nimport { SentryNonRecordingSpan, spanIsNonRecordingSpan } from './sentryNonRecordingSpan.js';\nimport { SentrySpan } from './sentrySpan.js';\nimport { SPAN_STATUS_OK, SPAN_STATUS_ERROR } from './spanstatus.js';\nimport { startInactiveSpan } from './trace.js';\nimport { setCapturedScopesOnSpan } from './utils.js';\n\nconst TRACING_DEFAULTS = {\n  idleTimeout: 1e3,\n  finalTimeout: 3e4,\n  childSpanTimeout: 15e3\n};\nconst FINISH_REASON_HEARTBEAT_FAILED = \"heartbeatFailed\";\nconst FINISH_REASON_IDLE_TIMEOUT = \"idleTimeout\";\nconst FINISH_REASON_FINAL_TIMEOUT = \"finalTimeout\";\nconst FINISH_REASON_EXTERNAL_FINISH = \"externalFinish\";\nfunction startIdleSpan(startSpanOptions, options = {}) {\n  const client = getClient();\n  _INTERNAL_ensureBrowserSpanStreaming(client);\n  const activities = /* @__PURE__ */ new Map();\n  let _finished = false;\n  let _idleTimeoutID;\n  let _childSpanTimeoutID;\n  let _finishReason = FINISH_REASON_EXTERNAL_FINISH;\n  let _autoFinishAllowed = !options.disableAutoFinish;\n  const _cleanupHooks = [];\n  const {\n    idleTimeout = TRACING_DEFAULTS.idleTimeout,\n    finalTimeout = TRACING_DEFAULTS.finalTimeout,\n    childSpanTimeout = TRACING_DEFAULTS.childSpanTimeout,\n    trimIdleSpanEndTimestamp = true\n  } = options;\n  const scope = getCurrentScope();\n  if (!client || !hasSpansEnabled()) {\n    const span2 = new SentryNonRecordingSpan({ traceId: scope.getPropagationContext().traceId });\n    setCapturedScopesOnSpan(span2, scope, getIsolationScope());\n    return span2;\n  }\n  const previousActiveSpan = getActiveSpan();\n  const span = startInactiveSpan(startSpanOptions);\n  _setSpanForScope(getCurrentScope(), span);\n  DEBUG_BUILD && debug.log(\"[Tracing] Started span is an idle span\");\n  span.end = new Proxy(span.end, {\n    apply(target, thisArg, args) {\n      client.emit(\"beforeIdleSpanEnd\", span);\n      if (spanIsNonRecordingSpan(thisArg)) {\n        return;\n      }\n      const [definedEndTimestamp, ...rest] = args;\n      const timestamp = definedEndTimestamp || timestampInSeconds();\n      const spanEndTimestamp = spanTimeInputToSeconds(timestamp);\n      const spans = getSpanDescendants(span).filter((child) => child !== span);\n      const spanJson = spanToStaticSpanJSON(span);\n      if (!spans.length || !trimIdleSpanEndTimestamp) {\n        onIdleSpanEnded(spanEndTimestamp);\n        return Reflect.apply(target, thisArg, [spanEndTimestamp, ...rest]);\n      }\n      const ignoreSpans = client.getOptions().ignoreSpans;\n      const latestSpanEndTimestamp = spans?.reduce((acc, current) => {\n        const currentSpanJson = spanToStaticSpanJSON(current);\n        if (!currentSpanJson.timestamp) {\n          return acc;\n        }\n        if (ignoreSpans && shouldIgnoreSpan(\n          { description: currentSpanJson.description, op: currentSpanJson.op, attributes: currentSpanJson.data },\n          ignoreSpans\n        )) {\n          return acc;\n        }\n        return acc ? Math.max(acc, currentSpanJson.timestamp) : currentSpanJson.timestamp;\n      }, void 0);\n      const spanStartTimestamp = spanJson.start_timestamp;\n      const endTimestamp = Math.min(\n        spanStartTimestamp ? spanStartTimestamp + finalTimeout / 1e3 : Infinity,\n        Math.max(spanStartTimestamp || -Infinity, Math.min(spanEndTimestamp, latestSpanEndTimestamp || Infinity))\n      );\n      onIdleSpanEnded(endTimestamp);\n      return Reflect.apply(target, thisArg, [endTimestamp, ...rest]);\n    }\n  });\n  function _cancelIdleTimeout() {\n    if (_idleTimeoutID) {\n      clearTimeout(_idleTimeoutID);\n      _idleTimeoutID = void 0;\n    }\n  }\n  function _cancelChildSpanTimeout() {\n    if (_childSpanTimeoutID) {\n      clearTimeout(_childSpanTimeoutID);\n      _childSpanTimeoutID = void 0;\n    }\n  }\n  function _restartIdleTimeout(endTimestamp) {\n    _cancelIdleTimeout();\n    _idleTimeoutID = setTimeout(() => {\n      if (!_finished && activities.size === 0 && _autoFinishAllowed) {\n        _finishReason = FINISH_REASON_IDLE_TIMEOUT;\n        span.end(endTimestamp);\n      }\n    }, idleTimeout);\n  }\n  function _restartChildSpanTimeout(endTimestamp) {\n    _cancelChildSpanTimeout();\n    _childSpanTimeoutID = setTimeout(() => {\n      if (!_finished && _autoFinishAllowed) {\n        _finishReason = FINISH_REASON_HEARTBEAT_FAILED;\n        span.end(endTimestamp);\n      }\n    }, childSpanTimeout);\n  }\n  function _pushActivity(spanId) {\n    _cancelIdleTimeout();\n    activities.set(spanId, true);\n    const endTimestamp = timestampInSeconds();\n    _restartChildSpanTimeout(endTimestamp + childSpanTimeout / 1e3);\n  }\n  function _popActivity(spanId) {\n    if (activities.has(spanId)) {\n      activities.delete(spanId);\n    }\n    if (activities.size === 0) {\n      const endTimestamp = timestampInSeconds();\n      _restartIdleTimeout(endTimestamp + idleTimeout / 1e3);\n      _cancelChildSpanTimeout();\n    }\n  }\n  function onIdleSpanEnded(endTimestamp) {\n    _finished = true;\n    activities.clear();\n    _cleanupHooks.forEach((cleanup) => cleanup());\n    _setSpanForScope(scope, previousActiveSpan);\n    const spanJSON = spanToStaticSpanJSON(span);\n    const { start_timestamp: startTimestamp } = spanJSON;\n    if (!startTimestamp) {\n      return;\n    }\n    const attributes = spanJSON.data;\n    if (!attributes[SENTRY_IDLE_SPAN_FINISH_REASON]) {\n      span.setAttribute(SENTRY_IDLE_SPAN_FINISH_REASON, _finishReason);\n    }\n    const currentStatus = spanJSON.status;\n    if (!currentStatus || currentStatus === \"unknown\") {\n      span.setStatus({ code: SPAN_STATUS_OK });\n    }\n    debug.log(`[Tracing] Idle span \"${spanJSON.op}\" finished`);\n    const childSpans = getSpanDescendants(span).filter((child) => child !== span);\n    let discardedSpans = 0;\n    childSpans.forEach((childSpan) => {\n      if (childSpan.isRecording()) {\n        childSpan.setStatus({ code: SPAN_STATUS_ERROR, message: \"cancelled\" });\n        childSpan.end(endTimestamp);\n        DEBUG_BUILD && debug.log(\"[Tracing] Cancelling span since span ended early\", JSON.stringify(childSpan, void 0, 2));\n      }\n      const childSpanJSON = spanToStaticSpanJSON(childSpan);\n      const { timestamp: childEndTimestamp = 0, start_timestamp: childStartTimestamp = 0 } = childSpanJSON;\n      const spanStartedBeforeIdleSpanEnd = childStartTimestamp <= endTimestamp;\n      const timeoutWithMarginOfError = (finalTimeout + idleTimeout) / 1e3;\n      const spanEndedBeforeFinalTimeout = childEndTimestamp - childStartTimestamp <= timeoutWithMarginOfError;\n      if (DEBUG_BUILD) {\n        const stringifiedSpan = JSON.stringify(childSpan, void 0, 2);\n        if (!spanStartedBeforeIdleSpanEnd) {\n          debug.log(\"[Tracing] Discarding span since it happened after idle span was finished\", stringifiedSpan);\n        } else if (!spanEndedBeforeFinalTimeout) {\n          debug.log(\"[Tracing] Discarding span since it finished after idle span final timeout\", stringifiedSpan);\n        }\n      }\n      if (!spanEndedBeforeFinalTimeout || !spanStartedBeforeIdleSpanEnd) {\n        removeChildSpanFromSpan(span, childSpan);\n        discardedSpans++;\n      }\n    });\n    if (discardedSpans > 0) {\n      span.setAttribute(\"sentry.idle_span_discarded_spans\", discardedSpans);\n    }\n  }\n  _cleanupHooks.push(\n    client.on(\"spanStart\", (startedSpan) => {\n      if (_finished || startedSpan === span || !!spanToJSON(startedSpan).end_timestamp || startedSpan instanceof SentrySpan && startedSpan.isStandaloneSpan()) {\n        return;\n      }\n      const allSpans = getSpanDescendants(span);\n      if (allSpans.includes(startedSpan)) {\n        _pushActivity(startedSpan.spanContext().spanId);\n      }\n    })\n  );\n  _cleanupHooks.push(\n    client.on(\"spanEnd\", (endedSpan) => {\n      if (_finished) {\n        return;\n      }\n      _popActivity(endedSpan.spanContext().spanId);\n    })\n  );\n  _cleanupHooks.push(\n    client.on(\"idleSpanEnableAutoFinish\", (spanToAllowAutoFinish) => {\n      if (spanToAllowAutoFinish === span) {\n        _autoFinishAllowed = true;\n        _restartIdleTimeout();\n        if (activities.size) {\n          _restartChildSpanTimeout();\n        }\n      }\n    })\n  );\n  if (!options.disableAutoFinish) {\n    _restartIdleTimeout();\n  }\n  setTimeout(() => {\n    if (!_finished) {\n      span.setStatus({ code: SPAN_STATUS_ERROR, message: \"deadline_exceeded\" });\n      _finishReason = FINISH_REASON_FINAL_TIMEOUT;\n      span.end();\n    }\n  }, finalTimeout);\n  return span;\n}\n\nexport { TRACING_DEFAULTS, startIdleSpan };\n//# sourceMappingURL=idleSpan.js.map\n","import { DEBUG_BUILD } from '../debug-build.js';\nimport { addGlobalErrorInstrumentationHandler } from '../instrument/globalError.js';\nimport { addGlobalUnhandledRejectionInstrumentationHandler } from '../instrument/globalUnhandledRejection.js';\nimport { debug } from '../utils/debug-logger.js';\nimport { getActiveSpan, getRootSpan } from '../utils/spanUtils.js';\nimport { SPAN_STATUS_ERROR } from './spanstatus.js';\n\nlet errorsInstrumented = false;\nfunction registerSpanErrorInstrumentation() {\n  if (errorsInstrumented) {\n    return;\n  }\n  function errorCallback() {\n    const activeSpan = getActiveSpan();\n    const rootSpan = activeSpan && getRootSpan(activeSpan);\n    if (rootSpan) {\n      const message = \"internal_error\";\n      DEBUG_BUILD && debug.log(`[Tracing] Root span: ${message} -> Global error occurred`);\n      rootSpan.setStatus({ code: SPAN_STATUS_ERROR, message });\n    }\n  }\n  errorsInstrumented = true;\n  addGlobalErrorInstrumentationHandler(errorCallback);\n  addGlobalUnhandledRejectionInstrumentationHandler(errorCallback);\n}\n\nexport { registerSpanErrorInstrumentation };\n//# sourceMappingURL=errors.js.map\n","const e=\"pageload\",E=\"navigation\",_=\"navigation.redirect\",r=\"resource\",R=\"resource.script\",t=\"resource.link\",T=\"resource.img\",i=\"resource.css\",I=\"resource.audio\",a=\"resource.video\",A=\"resource.iframe\",u=\"resource.other\",U=\"resource.worker\",o=\"resource.icon\",O=\"resource.frame\",c=\"resource.object\",C=\"resource.ping\",n=\"resource.track\",N=\"browser\",s=\"browser.paint\",S=\"browser.unload_event\",d=\"browser.redirect\",l=\"browser.dom_content_loaded_event\",D=\"browser.load_event\",L=\"browser.connect\",p=\"browser.tls_ssl\",P=\"browser.cache\",m=\"browser.dns\",M=\"browser.request\",b=\"browser.response\",B=\"ui\",g=\"ui.task\",G=\"ui.resolve\",w=\"ui.render\",W=\"ui.mount\",v=\"ui.update\",V=\"ui.unmount\",h=\"ui.long_task\",q=\"ui.long_animation_frame\",H=\"ui.interaction.click\",Q=\"ui.interaction.hover\",k=\"ui.interaction.drag\",K=\"ui.interaction.press\",j=\"ui.webvital.lcp\",J=\"ui.webvital.cls\",f=\"ui.action\",F=\"ui.action.click\",y=\"ui.react\",Y=\"ui.react.mount\",x=\"ui.react.render\",X=\"ui.react.update\",z=\"ui.vue\",Z=\"ui.svelte\",$=\"ui.angular\",ee=\"ui.ember\",Ee=\"ui.livewire\",_e=\"db\",re=\"db.query\",Re=\"db.redis\",te=\"cache\",Te=\"cache.get\",ie=\"cache.put\",Ie=\"cache.remove\",ae=\"grpc\",Ae=\"function.gcp\",ue=\"function.aws\",Ue=\"function.azure\",oe=\"gen_ai.chat\",Oe=\"ai.chat_completions.create.cohere\",ce=\"ai.embeddings.create.cohere\",Ce=\"gen_ai.execute_tool\",ne=\"gen_ai.handoff\",Ne=\"gen_ai.invoke_agent\",se=\"gen_ai.embeddings\",Se=\"gen_ai.generate_content\",de=\"gen_ai.rerank\",le=\"gen_ai.decide\",De=\"gen_ai.extract\",Le=\"gen_ai.evaluate\",pe=\"gen_ai.create_agent\",Pe=\"gen_ai.responses\",me=\"gen_ai.text_completion\",Me=\"gen_ai.memory.client\",be=\"mark\",Be=\"function\",ge=\"measure\",Ge=\"mcp.server\",we=\"mcp.notification.client_to_server\",We=\"mcp.notification.server_to_client\",ve=\"queue\",Ve=\"queue.publish\",he=\"queue.create\",qe=\"queue.receive\",He=\"queue.process\",Qe=\"queue.settle\",ke=\"queue.submit.arq\",Ke=\"queue.submit.celery\",je=\"queue.submit.django\",Je=\"queue.submit.huey\",fe=\"queue.submit.ray\",Fe=\"queue.task.arq\",ye=\"queue.task.celery\",Ye=\"queue.task.dramatiq\",xe=\"queue.task.huey\",Xe=\"queue.task.ray\",ze=\"queue.task.rq\",Ze=\"app\",$e=\"app.update.check\",eE=\"app.update.download\",EE=\"file\",_E=\"serialize\",rE=\"turbo_module\",RE=\"object.get\",tE=\"object.head\",TE=\"object.put\",iE=\"object.copy\",IE=\"object.delete\",aE=\"object.list\",AE=\"object.upload_part\",uE=\"object.multipart_upload.abort\",UE=\"object.multipart_upload.create\",oE=\"object.multipart_upload.complete\",OE=\"router\",cE=\"http\",CE=\"http.client\",nE=\"http.client.stream\",NE=\"http.server\",sE=\"websocket\",SE=\"rpc\",dE=\"graphql\",lE=\"subprocess\",DE=\"middleware\",LE=\"middleware.django\",pE=\"middleware.litestar\",PE=\"middleware.litestar.receive\",mE=\"middleware.litestar.send\",ME=\"middleware.starlette\",bE=\"middleware.starlette.receive\",BE=\"middleware.starlette.send\",gE=\"middleware.starlite\",GE=\"middleware.starlite.receive\",wE=\"middleware.starlite.send\",WE=\"handler\",vE=\"view\",VE=\"view.authenticate\",hE=\"view.render\",qE=\"view.response.render\",HE=\"template\",QE=\"function.remix\",kE=\"function.nextjs\",KE=\"event.django\",jE=\"console\";export{Oe as AI_CHAT_COMPLETIONS_CREATE_COHERE,ce as AI_EMBEDDINGS_CREATE_COHERE,Ze as APP,$e as APP_UPDATE_CHECK,eE as APP_UPDATE_DOWNLOAD,N as BROWSER,P as BROWSER_CACHE,L as BROWSER_CONNECT,m as BROWSER_DNS,l as BROWSER_DOM_CONTENT_LOADED_EVENT,D as BROWSER_LOAD_EVENT,s as BROWSER_PAINT,d as BROWSER_REDIRECT,M as BROWSER_REQUEST,b as BROWSER_RESPONSE,p as BROWSER_TLS_SSL,S as BROWSER_UNLOAD_EVENT,te as CACHE,Te as CACHE_GET,ie as CACHE_PUT,Ie as CACHE_REMOVE,jE as CONSOLE,_e as DB,re as DB_QUERY,Re as DB_REDIS,KE as EVENT_DJANGO,EE as FILE,Be as FUNCTION,ue as FUNCTION_AWS,Ue as FUNCTION_AZURE,Ae as FUNCTION_GCP,kE as FUNCTION_NEXTJS,QE as FUNCTION_REMIX,oe as GEN_AI_CHAT,pe as GEN_AI_CREATE_AGENT,le as GEN_AI_DECIDE,se as GEN_AI_EMBEDDINGS,Le as GEN_AI_EVALUATE,Ce as GEN_AI_EXECUTE_TOOL,De as GEN_AI_EXTRACT,Se as GEN_AI_GENERATE_CONTENT,ne as GEN_AI_HANDOFF,Ne as GEN_AI_INVOKE_AGENT,Me as GEN_AI_MEMORY_CLIENT,de as GEN_AI_RERANK,Pe as GEN_AI_RESPONSES,me as GEN_AI_TEXT_COMPLETION,dE as GRAPHQL,ae as GRPC,WE as HANDLER,cE as HTTP,CE as HTTP_CLIENT,nE as HTTP_CLIENT_STREAM,NE as HTTP_SERVER,be as MARK,we as MCP_NOTIFICATION_CLIENT_TO_SERVER,We as MCP_NOTIFICATION_SERVER_TO_CLIENT,Ge as MCP_SERVER,ge as MEASURE,DE as MIDDLEWARE,LE as MIDDLEWARE_DJANGO,pE as MIDDLEWARE_LITESTAR,PE as MIDDLEWARE_LITESTAR_RECEIVE,mE as MIDDLEWARE_LITESTAR_SEND,ME as MIDDLEWARE_STARLETTE,bE as MIDDLEWARE_STARLETTE_RECEIVE,BE as MIDDLEWARE_STARLETTE_SEND,gE as MIDDLEWARE_STARLITE,GE as MIDDLEWARE_STARLITE_RECEIVE,wE as MIDDLEWARE_STARLITE_SEND,E as NAVIGATION,_ as NAVIGATION_REDIRECT,iE as OBJECT_COPY,IE as OBJECT_DELETE,RE as OBJECT_GET,tE as OBJECT_HEAD,aE as OBJECT_LIST,uE as OBJECT_MULTIPART_UPLOAD_ABORT,oE as OBJECT_MULTIPART_UPLOAD_COMPLETE,UE as OBJECT_MULTIPART_UPLOAD_CREATE,TE as OBJECT_PUT,AE as OBJECT_UPLOAD_PART,e as PAGELOAD,ve as QUEUE,he as QUEUE_CREATE,He as QUEUE_PROCESS,Ve as QUEUE_PUBLISH,qe as QUEUE_RECEIVE,Qe as QUEUE_SETTLE,ke as QUEUE_SUBMIT_ARQ,Ke as QUEUE_SUBMIT_CELERY,je as QUEUE_SUBMIT_DJANGO,Je as QUEUE_SUBMIT_HUEY,fe as QUEUE_SUBMIT_RAY,Fe as QUEUE_TASK_ARQ,ye as QUEUE_TASK_CELERY,Ye as QUEUE_TASK_DRAMATIQ,xe as QUEUE_TASK_HUEY,Xe as QUEUE_TASK_RAY,ze as QUEUE_TASK_RQ,r as RESOURCE,I as RESOURCE_AUDIO,i as RESOURCE_CSS,O as RESOURCE_FRAME,o as RESOURCE_ICON,A as RESOURCE_IFRAME,T as RESOURCE_IMG,t as RESOURCE_LINK,c as RESOURCE_OBJECT,u as RESOURCE_OTHER,C as RESOURCE_PING,R as RESOURCE_SCRIPT,n as RESOURCE_TRACK,a as RESOURCE_VIDEO,U as RESOURCE_WORKER,OE as ROUTER,SE as RPC,_E as SERIALIZE,lE as SUBPROCESS,HE as TEMPLATE,rE as TURBO_MODULE,B as UI,f as UI_ACTION,F as UI_ACTION_CLICK,$ as UI_ANGULAR,ee as UI_EMBER,H as UI_INTERACTION_CLICK,k as UI_INTERACTION_DRAG,Q as UI_INTERACTION_HOVER,K as UI_INTERACTION_PRESS,Ee as UI_LIVEWIRE,q as UI_LONG_ANIMATION_FRAME,h as UI_LONG_TASK,W as UI_MOUNT,y as UI_REACT,Y as UI_REACT_MOUNT,x as UI_REACT_RENDER,X as UI_REACT_UPDATE,w as UI_RENDER,G as UI_RESOLVE,Z as UI_SVELTE,g as UI_TASK,V as UI_UNMOUNT,v as UI_UPDATE,z as UI_VUE,J as UI_WEBVITAL_CLS,j as UI_WEBVITAL_LCP,vE as VIEW,VE as VIEW_AUTHENTICATE,hE as VIEW_RENDER,qE as VIEW_RESPONSE_RENDER,sE as WEBSOCKET};\n//# sourceMappingURL=op.mjs.map\n","import { BROWSER_LOAD_EVENT, BROWSER_DOM_CONTENT_LOADED_EVENT, BROWSER_UNLOAD_EVENT, BROWSER_RESPONSE, BROWSER_REQUEST, BROWSER_REDIRECT, BROWSER_TLS_SSL, BROWSER_CONNECT, BROWSER_DNS, BROWSER_CACHE, CACHE_REMOVE, CACHE_PUT, CACHE_GET } from '@sentry/conventions/op';\n\nconst PAGELOAD_SPAN_NAME_FALLBACK = \"Pageload\";\nconst NAVIGATION_SPAN_NAME_FALLBACK = \"Navigation\";\nconst DB_SPAN_NAME_FALLBACK = \"Database operation\";\nconst GEN_AI_AGENT_SPAN_NAME_FALLBACK = \"Generative AI agent operation\";\nconst GEN_AI_INFERENCE_SPAN_NAME_FALLBACK = \"Generative AI model operation\";\nconst GRAPHQL_SPAN_NAME_FALLBACK = \"GraphQL Operation\";\nconst HTTP_SPAN_NAME_FALLBACK = \"HTTP\";\nconst MESSAGING_SPAN_NAME_FALLBACK = \"Messaging\";\nconst MCP_SERVER_SPAN_NAME_FALLBACK = \"MCP server operation\";\nconst MCP_NOTIFICATION_SPAN_NAME_FALLBACK = \"MCP notification\";\nconst RESOURCE_SPAN_NAME_FALLBACK = \"Resource\";\nconst ROUTER_SPAN_NAME_FALLBACK = \"Router\";\nconst REQUEST_HANDLER_SPAN_NAME_FALLBACK = \"Request handler\";\nconst SERVERLESS_FUNCTION_SPAN_NAME_FALLBACK = \"Serverless function execution\";\nconst FUNCTION_SPAN_NAME_FALLBACK = \"Function execution\";\nconst UI_MOUNT_SPAN_NAME_FALLBACK = \"Component mount\";\nconst UI_UPDATE_SPAN_NAME_FALLBACK = \"Component update\";\nconst UI_RENDER_SPAN_NAME_FALLBACK = \"Component render\";\nconst UI_UNMOUNT_SPAN_NAME_FALLBACK = \"Component unmount\";\nconst UI_RESOLVE_SPAN_NAME_FALLBACK = \"Component resolve\";\nconst UI_TASK_SPAN_NAME_FALLBACK = \"UI task\";\nconst UI_LONG_TASK_SPAN_NAME_FALLBACK = \"Main UI thread blocked\";\nconst UI_ACTION_SPAN_NAME_FALLBACK = \"UI action\";\nconst UI_ACTION_CLICK_SPAN_NAME_FALLBACK = \"Click\";\nconst UI_INTERACTION_CLICK_SPAN_NAME_FALLBACK = \"Click\";\nconst UI_INTERACTION_HOVER_SPAN_NAME_FALLBACK = \"Hover\";\nconst UI_INTERACTION_DRAG_SPAN_NAME_FALLBACK = \"Drag\";\nconst UI_INTERACTION_PRESS_SPAN_NAME_FALLBACK = \"Key press\";\nconst UI_WEBVITAL_LCP_SPAN_NAME_FALLBACK = \"Largest contentful paint\";\nconst UI_WEBVITAL_CLS_SPAN_NAME_FALLBACK = \"Layout shift\";\nconst UI_SPAN_NAME_FALLBACK = \"UI\";\nconst CACHE_OPERATION_NAMES = {\n  [CACHE_GET]: \"get\",\n  [CACHE_PUT]: \"put\",\n  [CACHE_REMOVE]: \"remove\"\n};\nconst BROWSER_NAVIGATION_TIMING_SPAN_NAMES = {\n  [BROWSER_CACHE]: \"Cache lookup\",\n  [BROWSER_DNS]: \"DNS lookup\",\n  [BROWSER_CONNECT]: \"Connect\",\n  [BROWSER_TLS_SSL]: \"TLS handshake\",\n  [BROWSER_REDIRECT]: \"Redirect\",\n  [BROWSER_REQUEST]: \"Request\",\n  [BROWSER_RESPONSE]: \"Response\",\n  [BROWSER_UNLOAD_EVENT]: \"Unload event\",\n  [BROWSER_DOM_CONTENT_LOADED_EVENT]: \"DOMContentLoaded event\",\n  [BROWSER_LOAD_EVENT]: \"Load event\"\n};\n\nexport { BROWSER_NAVIGATION_TIMING_SPAN_NAMES, CACHE_OPERATION_NAMES, DB_SPAN_NAME_FALLBACK, FUNCTION_SPAN_NAME_FALLBACK, GEN_AI_AGENT_SPAN_NAME_FALLBACK, GEN_AI_INFERENCE_SPAN_NAME_FALLBACK, GRAPHQL_SPAN_NAME_FALLBACK, HTTP_SPAN_NAME_FALLBACK, MCP_NOTIFICATION_SPAN_NAME_FALLBACK, MCP_SERVER_SPAN_NAME_FALLBACK, MESSAGING_SPAN_NAME_FALLBACK, NAVIGATION_SPAN_NAME_FALLBACK, PAGELOAD_SPAN_NAME_FALLBACK, REQUEST_HANDLER_SPAN_NAME_FALLBACK, RESOURCE_SPAN_NAME_FALLBACK, ROUTER_SPAN_NAME_FALLBACK, SERVERLESS_FUNCTION_SPAN_NAME_FALLBACK, UI_ACTION_CLICK_SPAN_NAME_FALLBACK, UI_ACTION_SPAN_NAME_FALLBACK, UI_INTERACTION_CLICK_SPAN_NAME_FALLBACK, UI_INTERACTION_DRAG_SPAN_NAME_FALLBACK, UI_INTERACTION_HOVER_SPAN_NAME_FALLBACK, UI_INTERACTION_PRESS_SPAN_NAME_FALLBACK, UI_LONG_TASK_SPAN_NAME_FALLBACK, UI_MOUNT_SPAN_NAME_FALLBACK, UI_RENDER_SPAN_NAME_FALLBACK, UI_RESOLVE_SPAN_NAME_FALLBACK, UI_SPAN_NAME_FALLBACK, UI_TASK_SPAN_NAME_FALLBACK, UI_UNMOUNT_SPAN_NAME_FALLBACK, UI_UPDATE_SPAN_NAME_FALLBACK, UI_WEBVITAL_CLS_SPAN_NAME_FALLBACK, UI_WEBVITAL_LCP_SPAN_NAME_FALLBACK };\n//# sourceMappingURL=spanNames.js.map\n","import { WINDOW } from './types.js';\n\nconst BOT_USER_AGENT_RE = /Googlebot|Google-InspectionTool|Storebot-Google|Bingbot|Slurp|DuckDuckBot|Baiduspider|YandexBot|Facebot|facebookexternalhit|LinkedInBot|Twitterbot|Applebot/i;\nfunction isBotUserAgent() {\n  const nav = WINDOW.navigator;\n  if (!nav?.userAgent) {\n    return false;\n  }\n  return BOT_USER_AGENT_RE.test(nav.userAgent);\n}\n\nexport { isBotUserAgent };\n//# sourceMappingURL=isBotUserAgent.js.map\n","let t=-1;const n=()=>t,e=n=>{addEventListener(\"pageshow\",e=>{e.persisted&&(t=e.timeStamp,n(e))},!0)},i=(t,n,e,i)=>{let o,s;return a=>{n.value>=0&&(a||i)&&(s=n.value-(o??0),(s||void 0===o)&&(o=n.value,n.delta=s,n.rating=((t,n)=>t>n[1]?\"poor\":t>n[0]?\"needs-improvement\":\"good\")(n.value,e),t(n)))}},o=t=>{requestAnimationFrame(()=>requestAnimationFrame(()=>t()))},s=()=>{const t=performance.getEntriesByType(\"navigation\")[0];if(t&&t.responseStart>0&&t.responseStart<performance.now())return t},a=()=>s()?.activationStart??0;let r=-1;const c=new Set,f=()=>\"hidden\"!==document.visibilityState||document.prerendering?1/0:0,h=t=>{if(\"hidden\"===document.visibilityState){if(\"visibilitychange\"===t.type)for(const t of c)t();isFinite(r)||(r=\"visibilitychange\"===t.type?t.timeStamp:0,removeEventListener(\"prerenderingchange\",h,!0))}},d=(t=!1)=>{if(t&&(r=1/0),r<0){const t=a(),n=document.prerendering?void 0:globalThis.performance.getEntriesByType(\"visibility-state\").find(n=>\"hidden\"===n.name&&n.startTime>=t)?.startTime;r=n??f(),addEventListener(\"visibilitychange\",h,!0),addEventListener(\"prerenderingchange\",h,!0),e(()=>{setTimeout(()=>{r=f()})})}return{get firstHiddenTime(){return r},onHidden(t){c.add(t)}}},l=(t,e=-1,i,o=0,r,c,f)=>{const h=s(),d=h?.navigationId||0;let l=\"navigate\";i?l=i:n()>=0?l=\"back-forward-cache\":h&&(document.prerendering||a()>0?l=\"prerender\":document.wasDiscarded?l=\"restore\":h.type&&(l=h.type.replace(/_/g,\"-\")));return{name:t,value:e,rating:\"good\",delta:0,entries:[],id:`v6-${Date.now()}-${Math.floor(8999999999999*Math.random())+1e12}`,navigationType:l,navigationId:o||d,navigationInteractionId:r,navigationURL:c||h?.name,navigationStartTime:f||0}},g=new WeakMap;function u(t,n){let e=g.get(n);return e||(e=new WeakMap,g.set(n,e)),e.get(t)||e.set(t,new n),e.get(t)}class v{t;i=0;o=[];h(t){if(t.hadRecentInput)return;const n=this.o[0],e=this.o.at(-1);this.i&&n&&e&&t.startTime-e.startTime<1e3&&t.startTime-n.startTime<5e3?(this.i+=t.value,this.o.push(t)):(this.i=t.value,this.o=[t]),this.t?.(t)}}const m=(t,n,e={})=>{try{const i=t.filter(t=>PerformanceObserver.supportedEntryTypes.includes(t));if(i.length>0){const t=new PerformanceObserver(t=>{queueMicrotask(()=>{const e=t.getEntries();i.length>1&&e.sort((t,n)=>t.startTime+t.duration-(n.startTime+n.duration)),n(e)})});for(const n of i)t.observe({type:n,buffered:!0,...e});return t}}catch{}},p=t=>globalThis.PerformanceObserver?.supportedEntryTypes?.includes(\"soft-navigation\")&&\"function\"==typeof globalThis.PerformanceSoftNavigation?.prototype?.getLargestInteractionContentfulPaint&&t&&t.reportSoftNavs,b=(t,n)=>{if(t.set(n.navigationId,n),t.size>2){const n=t.keys().next().value;void 0!==n&&t.delete(n)}},T=t=>{let n=!1;return()=>{n||(t(),n=!0)}};class y{l}const _=t=>{document.prerendering?addEventListener(\"prerenderingchange\",t,!0):t()},E=[1800,3e3],M=(t,s={})=>{const r=p(s);_(()=>{const c=u(s,y),f=d();let h,g=l(\"FCP\");const v=m([\"paint\"],t=>{for(const n of t)\"first-contentful-paint\"===n.name&&(v.disconnect(),n.startTime<f.firstHiddenTime&&(g.value=Math.max(n.startTime-a(),0),g.entries.push(n),g.navigationId=n.navigationId||g.navigationId,h(!0)))});if(v&&(h=i(t,g,E,s.reportAllChanges),e(e=>{g=l(\"FCP\",-1,\"back-forward-cache\",g.navigationId,g.navigationInteractionId,g.navigationURL,n()),h=i(t,g,E,s.reportAllChanges),o(()=>{g.value=performance.now()-e.timeStamp,h(!0)})})),r){m([\"soft-navigation\"],n=>{n.forEach(n=>{c.l&&n.navigationId&&b(c.l,n);const e=Math.max((n.presentationTime||n.paintTime||0)-n.startTime,0);g=l(\"FCP\",e,\"soft-navigation\",n.navigationId,n.interactionId,n.name,n.startTime),h=i(t,g,E,s.reportAllChanges),h(!0)})},s)}})},L=[.1,.25],P=(t,s={})=>{const a=d();M(T(()=>{let r,c=l(\"CLS\",0);const f=u(s,v),h=(n,e,o,a,h)=>{c=l(\"CLS\",0,n,e,o,a,h),f.i=0,r=i(t,c,L,s.reportAllChanges)},d=(t=!1)=>{f.i>c.value&&(c.value=f.i,c.entries=f.o),r(t)},g=t=>{d(!0),h(\"soft-navigation\",t.navigationId,t.interactionId,t.name,t.startTime)},b=t=>{for(const n of t)\"soft-navigation\"!==n.entryType?f.h(n):g(n);d()},T=[\"layout-shift\"];p(s)&&T.push(\"soft-navigation\");const y=m(T,b);y&&(r=i(t,c,L,s.reportAllChanges),a.onHidden(()=>{b(y.takeRecords()),r(!0)}),e(()=>{h(\"back-forward-cache\",c.navigationId,c.navigationInteractionId,c.navigationURL,n()),o(r)}),setTimeout(r))}))};let w=0,I=1/0,k=0;const C=t=>{for(const n of t)n.interactionId&&(I=Math.min(I,n.interactionId),k=Math.max(k,n.interactionId),w=k?(k-I)/7+1:0)};let F;const N=()=>F?w:performance.interactionCount??0,B=()=>{\"interactionCount\"in performance||F||(F=m([\"event\"],C,{durationThreshold:0}))};class S{u=0;v=[];m=new Map;p;T;_(){return N()-this.u}M(){this.u=N(),this.v.length=0,this.m.clear()}L(t){const n=this._(),e=Math.min(this.v.length-1,Math.floor(n/50));return!n||-1!==e||\"soft-navigation\"!==t&&\"back-forward-cache\"!==t?this.v[e]:{P:8,id:-1,entries:[]}}h(t){if(this.p?.(t),!t.interactionId)return;const n=this.v.at(-1);let e=this.m.get(t.interactionId);if(e||this.v.length<10||t.duration>n.P){if(e?t.duration>e.P?(e.entries=[t],e.P=t.duration):t.duration===e.P&&t.startTime===e.entries[0].startTime&&e.entries.push(t):(e={id:t.interactionId,entries:[t],P:t.duration},this.m.set(e.id,e),this.v.push(e)),this.v.sort((t,n)=>n.P-t.P),this.v.length>10){const t=this.v.splice(10);for(const n of t)this.m.delete(n.id)}this.T?.(e)}}}const q=t=>{const n=\"requestIdleCallback\"in globalThis?1e3:0,e=globalThis.requestIdleCallback||setTimeout,i=globalThis.cancelIdleCallback||clearTimeout;if(\"hidden\"===document.visibilityState)t();else{const o=T(t);let s=-1;const a=()=>{i(s),o()};addEventListener(\"visibilitychange\",a,{once:!0,capture:!0}),s=e(()=>{removeEventListener(\"visibilitychange\",a,{capture:!0}),o()},{timeout:n})}},A=[200,500],x=(t,o={})=>{if(!globalThis.PerformanceEventTiming||!(\"interactionId\"in PerformanceEventTiming.prototype))return;const s=d();_(()=>{B();let a,r=l(\"INP\");const c=u(o,S),f=(n,e,s,f,h)=>{c.M(),r=l(\"INP\",-1,n,e,s,f,h),a=i(t,r,A,o.reportAllChanges)},h=()=>{const t=c.L(r.navigationType);t&&t.P!==r.value&&(r.value=t.P,r.entries=t.entries,a())},d=t=>{h(),a(!0),f(\"soft-navigation\",t.navigationId,t.interactionId,t.name,t.startTime)},g=(t,n=!1)=>{q(()=>{for(const n of t)\"soft-navigation\"!==n.entryType?c.h(n):d(n);h(),n&&a(!0)})},v=[\"event\",\"first-input\"];p(o)&&v.push(\"soft-navigation\");const b=m(v,g,{...o,durationThreshold:o.durationThreshold??40});a=i(t,r,A,o.reportAllChanges),b&&(s.onHidden(()=>{g(b.takeRecords(),!0)}),e(()=>{f(\"back-forward-cache\",r.navigationId,r.navigationInteractionId,r.navigationURL,n())}))})};class H{p;l;h(t){this.p?.(t)}}const O=[2500,4e3],U=(t,s={})=>{let r=!1;const c=p(s);_(()=>{let f,h=d(),g=l(\"LCP\");const v=u(s,H),p=(n,e,o,a,c)=>{g=l(\"LCP\",-1,n,e,o,a,c),f=i(t,g,O,s.reportAllChanges),r=!1,\"soft-navigation\"===n&&(h=d(!0))},T=t=>{v.l&&t.navigationId&&b(v.l,t),r||f(!0),p(\"soft-navigation\",t.navigationId,t.interactionId,t.name,t.startTime);const n=t.getLargestInteractionContentfulPaint?.();n&&y([n])},y=t=>{s.reportAllChanges||c||(t=t.slice(-1));for(const n of t){if(!n)continue;if(\"soft-navigation\"===n.entryType){T(n);continue}let t=0,e=[],i=n.startTime;if(\"largest-contentful-paint\"===n.entryType)t=Math.max(n.startTime-a(),0),v.h(n),e=[n];else if(\"interaction-contentful-paint\"===n.entryType){const o=n;if(!g.navigationId)continue;if(\"interactionId\"in o&&o.interactionId!=g.navigationInteractionId)continue;i=o.largestContentfulPaint?.renderTime||0,t=Math.max(i-n.startTime,0),o.largestContentfulPaint&&(v.h(o.largestContentfulPaint),e=[o.largestContentfulPaint])}i<h.firstHiddenTime&&(g.value=t,g.entries=e,f())}},_=[\"largest-contentful-paint\"];c&&_.push(\"interaction-contentful-paint\",\"soft-navigation\");const E=m(_,y);if(E){f=i(t,g,O,s.reportAllChanges);const a=[\"keydown\",\"click\",\"visibilitychange\"],h=t=>{if(t.isTrusted&&!r){const t=g.id;q(()=>{if(!r){if(!c){E.disconnect();for(const t of a)removeEventListener(t,h,{capture:!0})}t===g.id&&(r=!0,f(!0))}})}};for(const t of a)addEventListener(t,h,{capture:!0});e(e=>{p(\"back-forward-cache\",g.navigationId,g.navigationInteractionId,g.navigationURL,n()),f=i(t,g,O,s.reportAllChanges),o(()=>{g.value=performance.now()-e.timeStamp,r=!0,f(!0)})})}})},W=[800,1800],$=t=>{document.prerendering?_(()=>$(t)):\"complete\"!==document.readyState?addEventListener(\"load\",()=>$(t),!0):setTimeout(t)},D=(t,o={})=>{const r=p(o);let c=l(\"TTFB\"),f=i(t,c,W,o.reportAllChanges);$(()=>{const h=s();if(h){const s=h.responseStart;if(c.value=Math.max(s-a(),0),c.entries=[h],f(!0),e(()=>{c=l(\"TTFB\",0,\"back-forward-cache\",c.navigationId,c.navigationInteractionId,c.navigationURL,n()),f=i(t,c,W,o.reportAllChanges),f(!0)}),r){m([\"soft-navigation\"],n=>{n.forEach(n=>{n.navigationId&&(c=l(\"TTFB\",0,\"soft-navigation\",n.navigationId,n.interactionId,n.name,n.startTime),c.entries=[n],f=i(t,c,W,o.reportAllChanges),f(!0))})},o)}}})};export{L as CLSThresholds,E as FCPThresholds,A as INPThresholds,O as LCPThresholds,W as TTFBThresholds,P as onCLS,M as onFCP,x as onINP,U as onLCP,D as onTTFB};\n//# sourceMappingURL=web-vitals.js.map\n","import { debug, getFunctionName } from '@sentry/core';\nimport { onCLS, onLCP, onTTFB, onFCP, onINP } from 'web-vitals';\nimport { DEBUG_BUILD } from '../debug-build.js';\n\nconst handlers = {};\nconst instrumented = {};\nlet _previousCls;\nlet _previousLcp;\nlet _previousTtfb;\nlet _previousInp;\nlet _previousFcp;\nconst stopListeners = {};\nlet _reportSoftNavs = false;\nlet _reportBfcache = false;\nfunction enableSoftNavigationReporting() {\n  _reportSoftNavs = true;\n}\nfunction enableBfcacheReporting() {\n  _reportBfcache = true;\n}\nfunction addClsInstrumentationHandler(callback, stopOnCallback = false) {\n  return addMetricObserver(\"cls\", callback, instrumentCls, _previousCls, stopOnCallback);\n}\nfunction addLcpInstrumentationHandler(callback, stopOnCallback = false) {\n  return addMetricObserver(\"lcp\", callback, instrumentLcp, _previousLcp, stopOnCallback);\n}\nfunction addTtfbInstrumentationHandler(callback) {\n  return addMetricObserver(\"ttfb\", callback, instrumentTtfb, _previousTtfb);\n}\nfunction addFcpInstrumentationHandler(callback) {\n  return addMetricObserver(\"fcp\", callback, instrumentFcp, _previousFcp);\n}\nfunction addInpInstrumentationHandler(callback) {\n  return addMetricObserver(\"inp\", callback, instrumentInp, _previousInp);\n}\nfunction addPerformanceInstrumentationHandler(type, callback) {\n  addHandler(type, callback);\n  if (!instrumented[type]) {\n    instrumentPerformanceObserver(type);\n    instrumented[type] = true;\n  }\n  return getCleanupCallback(type, callback);\n}\nfunction triggerHandlers(type, data) {\n  const typeHandlers = handlers[type];\n  if (!typeHandlers?.length) {\n    return;\n  }\n  for (const handler of typeHandlers) {\n    try {\n      handler(data);\n    } catch (e) {\n      DEBUG_BUILD && debug.error(\n        `Error while triggering instrumentation handler.\nType: ${type}\nName: ${getFunctionName(handler)}\nError:`,\n        e\n      );\n    }\n  }\n}\nfunction unlessBfcacheDisabled(callback) {\n  return (metric) => {\n    if (!_reportBfcache && metric.navigationType === \"back-forward-cache\") {\n      return;\n    }\n    callback(metric);\n  };\n}\nfunction instrumentCls() {\n  return onCLS(\n    unlessBfcacheDisabled((metric) => {\n      triggerHandlers(\"cls\", {\n        metric\n      });\n      _previousCls = metric;\n    }),\n    // We want the callback to be called whenever the CLS value updates.\n    // By default, the callback is only called when the tab goes to the background.\n    { reportAllChanges: !_reportSoftNavs && !_reportBfcache, reportSoftNavs: _reportSoftNavs }\n  );\n}\nfunction instrumentLcp() {\n  return onLCP(\n    unlessBfcacheDisabled((metric) => {\n      triggerHandlers(\"lcp\", {\n        metric\n      });\n      _previousLcp = metric;\n    }),\n    // We want the callback to be called whenever the LCP value updates.\n    // By default, the callback is only called when the tab goes to the background.\n    { reportAllChanges: !_reportSoftNavs && !_reportBfcache, reportSoftNavs: _reportSoftNavs }\n  );\n}\nfunction instrumentTtfb() {\n  return onTTFB(\n    unlessBfcacheDisabled((metric) => {\n      triggerHandlers(\"ttfb\", {\n        metric\n      });\n      _previousTtfb = metric;\n    })\n  );\n}\nfunction instrumentFcp() {\n  return onFCP(\n    unlessBfcacheDisabled((metric) => {\n      triggerHandlers(\"fcp\", {\n        metric\n      });\n      _previousFcp = metric;\n    })\n  );\n}\nfunction instrumentInp() {\n  return onINP(\n    unlessBfcacheDisabled((metric) => {\n      triggerHandlers(\"inp\", {\n        metric\n      });\n      _previousInp = metric;\n    }),\n    { reportSoftNavs: _reportSoftNavs }\n  );\n}\nfunction addMetricObserver(type, callback, instrumentFn, previousValue, stopOnCallback = false) {\n  addHandler(type, callback);\n  if (!instrumented[type]) {\n    instrumented[type] = true;\n    void Promise.resolve().then(() => {\n      stopListeners[type] = instrumentFn();\n    });\n  }\n  if (previousValue) {\n    callback({ metric: previousValue });\n  }\n  return getCleanupCallback(type, callback, stopOnCallback);\n}\nfunction instrumentPerformanceObserver(type) {\n  const options = { type, buffered: true };\n  if (type === \"event\") {\n    options.durationThreshold = 0;\n  }\n  try {\n    if (PerformanceObserver.supportedEntryTypes.includes(type)) {\n      const po = new PerformanceObserver((list) => {\n        void Promise.resolve().then(() => {\n          triggerHandlers(type, { entries: list.getEntries() });\n        });\n      });\n      po.observe(options);\n    }\n  } catch {\n  }\n}\nfunction addHandler(type, handler) {\n  handlers[type] = handlers[type] || [];\n  handlers[type].push(handler);\n}\nfunction getCleanupCallback(type, callback, stopOnCleanup = false) {\n  return () => {\n    if (stopOnCleanup) {\n      stopListeners[type]?.();\n    }\n    const typeHandlers = handlers[type];\n    if (!typeHandlers) {\n      return;\n    }\n    const index = typeHandlers.indexOf(callback);\n    if (index !== -1) {\n      typeHandlers.splice(index, 1);\n    }\n  };\n}\nfunction isPerformanceEventTiming(entry) {\n  return \"duration\" in entry;\n}\n\nexport { addClsInstrumentationHandler, addFcpInstrumentationHandler, addInpInstrumentationHandler, addLcpInstrumentationHandler, addPerformanceInstrumentationHandler, addTtfbInstrumentationHandler, enableBfcacheReporting, enableSoftNavigationReporting, isPerformanceEventTiming };\n//# sourceMappingURL=performanceObserver.js.map\n","import { spanToStaticSpanJSON, withActiveSpan } from '@sentry/core';\nimport { startInactiveSpan } from '@sentry/core/browser';\nimport { WINDOW } from '../types.js';\n\nfunction isMeasurementValue(value) {\n  return typeof value === \"number\" && isFinite(value);\n}\nfunction startAndEndSpan(parentSpan, startTimeInSeconds, endTime, { ...ctx }) {\n  const parentStartTime = spanToStaticSpanJSON(parentSpan).start_timestamp;\n  if (parentStartTime && parentStartTime > startTimeInSeconds) {\n    if (typeof parentSpan.updateStartTime === \"function\") {\n      parentSpan.updateStartTime(startTimeInSeconds);\n    }\n  }\n  return withActiveSpan(parentSpan, () => {\n    const span = startInactiveSpan({\n      startTime: startTimeInSeconds,\n      ...ctx\n    });\n    if (span) {\n      span.end(endTime);\n    }\n    return span;\n  });\n}\nfunction getBrowserPerformanceAPI() {\n  return WINDOW.addEventListener && WINDOW.performance;\n}\nfunction msToSec(time) {\n  return time / 1e3;\n}\nfunction extractNetworkProtocol(nextHopProtocol) {\n  let name = \"unknown\";\n  let version = \"unknown\";\n  let _name = \"\";\n  for (const char of nextHopProtocol) {\n    if (char === \"/\") {\n      [name, version] = nextHopProtocol.split(\"/\");\n      break;\n    }\n    if (!isNaN(Number(char))) {\n      name = _name === \"h\" ? \"http\" : _name;\n      version = nextHopProtocol.split(_name)[1];\n      break;\n    }\n    _name += char;\n  }\n  if (_name === nextHopProtocol) {\n    name = _name;\n  }\n  return { name, version };\n}\nfunction supportsWebVital(entryType) {\n  try {\n    return PerformanceObserver.supportedEntryTypes.includes(entryType);\n  } catch {\n    return false;\n  }\n}\n\nexport { extractNetworkProtocol, getBrowserPerformanceAPI, isMeasurementValue, msToSec, startAndEndSpan, supportsWebVital };\n//# sourceMappingURL=utils.js.map\n","import { NETWORK_PROTOCOL_VERSION, NETWORK_PROTOCOL_NAME, HTTP_REQUEST_TIME_TO_FIRST_BYTE, HTTP_REQUEST_RESPONSE_END, HTTP_REQUEST_RESPONSE_START, HTTP_REQUEST_REQUEST_START, HTTP_REQUEST_CONNECTION_END, HTTP_REQUEST_SECURE_CONNECTION_START, HTTP_REQUEST_CONNECT_START, HTTP_REQUEST_DOMAIN_LOOKUP_END, HTTP_REQUEST_DOMAIN_LOOKUP_START, HTTP_REQUEST_FETCH_START, HTTP_REQUEST_WORKER_START, HTTP_REQUEST_REDIRECT_END, HTTP_REQUEST_REDIRECT_START } from '@sentry/conventions/attributes';\nimport { _INTERNAL_performanceTimeToSeconds } from '@sentry/core';\nimport { extractNetworkProtocol, msToSec } from './utils.js';\n\nfunction resourceTimingToSpanAttributes(resourceTiming) {\n  const timingSpanData = {};\n  if (resourceTiming.nextHopProtocol != void 0) {\n    const { name, version } = extractNetworkProtocol(resourceTiming.nextHopProtocol);\n    timingSpanData[NETWORK_PROTOCOL_VERSION] = version;\n    timingSpanData[NETWORK_PROTOCOL_NAME] = name;\n  }\n  if (_INTERNAL_performanceTimeToSeconds(resourceTiming.startTime) === void 0) {\n    return timingSpanData;\n  }\n  const getAbsoluteTime = (time) => (\n    // falsy values should be preserved so that we can later on drop undefined values and\n    // preserve 0 vals for cross-origin resources without proper `Timing-Allow-Origin` header.\n    time ? _INTERNAL_performanceTimeToSeconds(time, resourceTiming.startTime) : time\n  );\n  return dropUndefinedKeysFromObject({\n    ...timingSpanData,\n    [HTTP_REQUEST_REDIRECT_START]: getAbsoluteTime(resourceTiming.redirectStart),\n    [HTTP_REQUEST_REDIRECT_END]: getAbsoluteTime(resourceTiming.redirectEnd),\n    [HTTP_REQUEST_WORKER_START]: getAbsoluteTime(resourceTiming.workerStart),\n    [HTTP_REQUEST_FETCH_START]: getAbsoluteTime(resourceTiming.fetchStart),\n    [HTTP_REQUEST_DOMAIN_LOOKUP_START]: getAbsoluteTime(resourceTiming.domainLookupStart),\n    [HTTP_REQUEST_DOMAIN_LOOKUP_END]: getAbsoluteTime(resourceTiming.domainLookupEnd),\n    [HTTP_REQUEST_CONNECT_START]: getAbsoluteTime(resourceTiming.connectStart),\n    [HTTP_REQUEST_SECURE_CONNECTION_START]: getAbsoluteTime(resourceTiming.secureConnectionStart),\n    [HTTP_REQUEST_CONNECTION_END]: getAbsoluteTime(resourceTiming.connectEnd),\n    [HTTP_REQUEST_REQUEST_START]: getAbsoluteTime(resourceTiming.requestStart),\n    [HTTP_REQUEST_RESPONSE_START]: getAbsoluteTime(resourceTiming.responseStart),\n    [HTTP_REQUEST_RESPONSE_END]: getAbsoluteTime(resourceTiming.responseEnd),\n    // For TTFB we actually want the relative time from timeOrigin to responseStart\n    // This way, TTFB always measures the \"first page load\" experience.\n    // see: https://web.dev/articles/ttfb#measure-resource-requests\n    [HTTP_REQUEST_TIME_TO_FIRST_BYTE]: resourceTiming.responseStart != null ? msToSec(resourceTiming.responseStart) : void 0\n  });\n}\nfunction dropUndefinedKeysFromObject(attrs) {\n  return Object.fromEntries(Object.entries(attrs).filter(([, value]) => value != null));\n}\n\nexport { resourceTimingToSpanAttributes };\n//# sourceMappingURL=resourceTiming.js.map\n","import { spanToJSON, _INTERNAL_performanceTimeToSeconds, getActiveSpan, UI_LONG_TASK_SPAN_NAME_FALLBACK, parseUrl, filterCollectedUrl, RESOURCE_SPAN_NAME_FALLBACK, setMeasurement, BROWSER_NAVIGATION_TIMING_SPAN_NAMES } from '@sentry/core';\nimport { SENTRY_OP, BROWSER_PAINT_TYPE, SENTRY_ORIGIN, NETWORK_CONNECTION_EFFECTIVE_TYPE, EFFECTIVECONNECTIONTYPE, NETWORK_CONNECTION_TYPE, CONNECTIONTYPE, NETWORK_CONNECTION_RTT, DEVICE_MEMORY_ESTIMATED_CAPACITY, DEVICEMEMORY, DEVICE_PROCESSOR_COUNT, HARDWARECONCURRENCY, BROWSER_SCRIPT_INVOKER, BROWSER_SCRIPT_INVOKER_TYPE, CODE_FILE_PATH, CODE_FUNCTION_NAME, BROWSER_SCRIPT_SOURCE_CHAR_POSITION, URL_FULL, URL_SCHEME, SERVER_ADDRESS, URL_DOMAIN, HTTP_REQUEST_SAME_ORIGIN, HTTP_RESPONSE_STATUS_CODE, HTTP_RESPONSE_SIZE, HTTP_RESPONSE_BODY_SIZE, HTTP_RESPONSE_BODY_DECODED_SIZE, RESOURCE_RENDER_BLOCKING_STATUS } from '@sentry/conventions/attributes';\nimport { UI_LONG_ANIMATION_FRAME, RESOURCE_OTHER, BROWSER_PAINT, BROWSER_LOAD_EVENT, BROWSER_DOM_CONTENT_LOADED_EVENT, BROWSER_CONNECT, BROWSER_REDIRECT, BROWSER_UNLOAD_EVENT, BROWSER_DNS, BROWSER_CACHE, BROWSER_TLS_SSL, BROWSER_REQUEST, BROWSER_RESPONSE, UI_LONG_TASK } from '@sentry/conventions/op';\nimport { addPerformanceInstrumentationHandler } from '../instrumentation/performanceObserver.js';\nimport { WINDOW } from '../types.js';\nimport { resourceTimingToSpanAttributes } from './resourceTiming.js';\nimport { getBrowserPerformanceAPI, msToSec, startAndEndSpan, isMeasurementValue } from './utils.js';\n\nconst MAX_INT_AS_BYTES = 2147483647;\nlet _performanceCursor = 0;\nfunction startTrackingLongTasks() {\n  addPerformanceInstrumentationHandler(\"longtask\", ({ entries }) => {\n    const parent = getActiveSpan();\n    if (!parent) {\n      return;\n    }\n    const { attributes: parentAttributes, start_timestamp: parentStartTimestamp } = spanToJSON(parent);\n    for (const entry of entries) {\n      const startTime = _INTERNAL_performanceTimeToSeconds(entry.startTime);\n      if (!startTime) {\n        continue;\n      }\n      const duration = msToSec(entry.duration);\n      if (parentAttributes[SENTRY_OP] === \"navigation\" && parentStartTimestamp && startTime < parentStartTimestamp) {\n        continue;\n      }\n      startAndEndSpan(parent, startTime, startTime + duration, {\n        name: UI_LONG_TASK_SPAN_NAME_FALLBACK,\n        op: UI_LONG_TASK,\n        attributes: {\n          [SENTRY_ORIGIN]: \"auto.ui.browser.metrics\"\n        }\n      });\n    }\n  });\n}\nfunction startTrackingLongAnimationFrames() {\n  const observer = new PerformanceObserver((list) => {\n    const parent = getActiveSpan();\n    if (!parent) {\n      return;\n    }\n    for (const entry of list.getEntries()) {\n      const startTime = _INTERNAL_performanceTimeToSeconds(entry.startTime);\n      if (!startTime || !entry.scripts[0]) {\n        continue;\n      }\n      const {\n        start_timestamp: parentStartTimestamp,\n        attributes: { [SENTRY_OP]: parentOp }\n      } = spanToJSON(parent);\n      if (parentOp === \"navigation\" && parentStartTimestamp && startTime < parentStartTimestamp) {\n        continue;\n      }\n      const duration = msToSec(entry.duration);\n      const attributes = {\n        [SENTRY_ORIGIN]: \"auto.ui.browser.metrics\"\n      };\n      const longestScript = entry.scripts.reduce(\n        (longest, script) => script.duration > longest.duration ? script : longest\n      );\n      const { invoker, invokerType, sourceURL, sourceFunctionName, sourceCharPosition } = longestScript;\n      attributes[BROWSER_SCRIPT_INVOKER] = invoker;\n      attributes[BROWSER_SCRIPT_INVOKER_TYPE] = invokerType;\n      if (sourceURL) {\n        attributes[CODE_FILE_PATH] = sourceURL;\n      }\n      if (sourceFunctionName) {\n        attributes[CODE_FUNCTION_NAME] = sourceFunctionName;\n      }\n      if (sourceCharPosition !== -1) {\n        attributes[BROWSER_SCRIPT_SOURCE_CHAR_POSITION] = sourceCharPosition;\n      }\n      startAndEndSpan(parent, startTime, startTime + duration, {\n        name: UI_LONG_TASK_SPAN_NAME_FALLBACK,\n        op: UI_LONG_ANIMATION_FRAME,\n        attributes\n      });\n    }\n  });\n  observer.observe({ type: \"long-animation-frame\", buffered: true });\n}\nfunction addPerformanceEntries(span, options) {\n  const performance = getBrowserPerformanceAPI();\n  if (!performance?.getEntries) {\n    return;\n  }\n  const { spanStreamingEnabled, ignoreResourceSpans } = options;\n  const performanceEntries = performance.getEntries();\n  const { attributes, start_timestamp: transactionStartTime } = spanToJSON(span);\n  performanceEntries.slice(_performanceCursor).forEach((entry) => {\n    const startTimestamp = _INTERNAL_performanceTimeToSeconds(entry.startTime);\n    if (!startTimestamp) {\n      return;\n    }\n    const duration = msToSec(\n      // Inexplicably, Chrome sometimes emits a negative duration. We need to work around this.\n      // There is a SO post attempting to explain this, but it leaves one with open questions: https://stackoverflow.com/questions/23191918/peformance-getentries-and-negative-duration-display\n      // The way we clamp the value is probably not accurate, since we have observed this happen for things that may take a while to load, like for example the replay worker.\n      // TODO: Investigate why this happens and how to properly mitigate. For now, this is a workaround to prevent transactions being dropped due to negative duration spans.\n      Math.max(0, entry.duration)\n    );\n    if (attributes[SENTRY_OP] === \"navigation\" && transactionStartTime && startTimestamp < transactionStartTime) {\n      return;\n    }\n    switch (entry.entryType) {\n      case \"navigation\": {\n        _addNavigationSpans(span, entry, spanStreamingEnabled);\n        break;\n      }\n      case \"paint\": {\n        _addPaintSpan(span, entry, startTimestamp, duration);\n        break;\n      }\n      case \"resource\": {\n        _addResourceSpans(\n          span,\n          entry,\n          entry.name,\n          startTimestamp,\n          duration,\n          ignoreResourceSpans,\n          spanStreamingEnabled\n        );\n        break;\n      }\n    }\n  });\n  _performanceCursor = Math.max(performanceEntries.length - 1, 0);\n  _trackNavigator(span, spanStreamingEnabled);\n}\nfunction _addPaintSpan(span, entry, startTimestamp, duration) {\n  startAndEndSpan(span, startTimestamp, startTimestamp + duration, {\n    // The entry name (`first-paint`, `first-contentful-paint`) is already the low-cardinality name\n    // the conventions ask for, so only the attribute backing it has to be added.\n    name: entry.name,\n    attributes: {\n      [SENTRY_OP]: BROWSER_PAINT,\n      [SENTRY_ORIGIN]: \"auto.resource.browser.metrics\",\n      [BROWSER_PAINT_TYPE]: entry.name\n    }\n  });\n}\nfunction _addNavigationSpans(span, entry, spanStreamingEnabled) {\n  _addPerformanceNavigationTiming(span, entry, \"unloadEvent\", spanStreamingEnabled);\n  _addPerformanceNavigationTiming(span, entry, \"redirect\", spanStreamingEnabled);\n  _addPerformanceNavigationTiming(span, entry, \"domContentLoadedEvent\", spanStreamingEnabled);\n  _addPerformanceNavigationTiming(span, entry, \"loadEvent\", spanStreamingEnabled);\n  _addPerformanceNavigationTiming(span, entry, \"connect\", spanStreamingEnabled);\n  _addPerformanceNavigationTiming(span, entry, \"secureConnection\", spanStreamingEnabled);\n  _addPerformanceNavigationTiming(span, entry, \"fetch\", spanStreamingEnabled);\n  _addPerformanceNavigationTiming(span, entry, \"domainLookup\", spanStreamingEnabled);\n  _addRequest(span, entry, spanStreamingEnabled);\n}\nfunction _navigationTimeToSeconds(entry, time) {\n  return _INTERNAL_performanceTimeToSeconds(time, entry.startTime);\n}\nconst NAVIGATION_TIMING_SPAN_OPS = {\n  secureConnection: BROWSER_TLS_SSL,\n  fetch: BROWSER_CACHE,\n  domainLookup: BROWSER_DNS,\n  unloadEvent: BROWSER_UNLOAD_EVENT,\n  redirect: BROWSER_REDIRECT,\n  connect: BROWSER_CONNECT,\n  domContentLoadedEvent: BROWSER_DOM_CONTENT_LOADED_EVENT,\n  loadEvent: BROWSER_LOAD_EVENT\n};\nfunction _addPerformanceNavigationTiming(span, entry, event, spanStreamingEnabled) {\n  const eventEnd = _getEndPropertyNameForNavigationTiming(event);\n  const end = entry[eventEnd];\n  const start = entry[`${event}Start`];\n  if (!start || !end) {\n    return;\n  }\n  const op = NAVIGATION_TIMING_SPAN_OPS[event];\n  const filteredUrl = filterCollectedUrl(entry.name);\n  startAndEndSpan(span, _navigationTimeToSeconds(entry, start), _navigationTimeToSeconds(entry, end), {\n    // With span streaming, span names have to be low cardinality, so we can't fall back to the\n    // document URL. `url.full` keeps it, and is what Relay derives the description from.\n    name: spanStreamingEnabled ? BROWSER_NAVIGATION_TIMING_SPAN_NAMES[op] : filteredUrl,\n    attributes: {\n      [SENTRY_OP]: op,\n      [SENTRY_ORIGIN]: \"auto.ui.browser.metrics\",\n      [URL_FULL]: filteredUrl,\n      ...event === \"redirect\" && entry.redirectCount != null ? { \"http.redirect_count\": entry.redirectCount } : {}\n    }\n  });\n}\nfunction _getEndPropertyNameForNavigationTiming(event) {\n  if (event === \"secureConnection\") {\n    return \"connectEnd\";\n  }\n  if (event === \"fetch\") {\n    return \"domainLookupStart\";\n  }\n  return `${event}End`;\n}\nfunction _addRequest(span, entry, spanStreamingEnabled) {\n  const requestStartTimestamp = _navigationTimeToSeconds(entry, entry.requestStart);\n  const responseEndTimestamp = _navigationTimeToSeconds(entry, entry.responseEnd);\n  const responseStartTimestamp = _navigationTimeToSeconds(entry, entry.responseStart);\n  if (entry.responseEnd) {\n    const filteredUrl = filterCollectedUrl(entry.name);\n    startAndEndSpan(span, requestStartTimestamp, responseEndTimestamp, {\n      name: spanStreamingEnabled ? BROWSER_NAVIGATION_TIMING_SPAN_NAMES[BROWSER_REQUEST] : filteredUrl,\n      attributes: {\n        [SENTRY_OP]: BROWSER_REQUEST,\n        [SENTRY_ORIGIN]: \"auto.ui.browser.metrics\",\n        [URL_FULL]: filteredUrl\n      }\n    });\n    startAndEndSpan(span, responseStartTimestamp, responseEndTimestamp, {\n      name: spanStreamingEnabled ? BROWSER_NAVIGATION_TIMING_SPAN_NAMES[BROWSER_RESPONSE] : filteredUrl,\n      attributes: {\n        [SENTRY_OP]: BROWSER_RESPONSE,\n        [SENTRY_ORIGIN]: \"auto.ui.browser.metrics\",\n        [URL_FULL]: filteredUrl\n      }\n    });\n  }\n}\nfunction _addResourceSpans(span, entry, resourceUrl, startTimestamp, duration, ignoredResourceSpanOps, spanStreamingEnabled) {\n  if (entry.initiatorType === \"xmlhttprequest\" || entry.initiatorType === \"fetch\") {\n    return;\n  }\n  const op = entry.initiatorType ? `resource.${entry.initiatorType}` : RESOURCE_OTHER;\n  if (ignoredResourceSpanOps?.includes(op)) {\n    return;\n  }\n  const attributes = {\n    [SENTRY_ORIGIN]: \"auto.resource.browser.metrics\"\n  };\n  const parsedUrl = parseUrl(resourceUrl);\n  if (parsedUrl.protocol) {\n    attributes[URL_SCHEME] = parsedUrl.protocol.split(\":\").pop();\n  }\n  const host = parsedUrl.host?.replace(/^.*@/, \"\");\n  if (host) {\n    attributes[SERVER_ADDRESS] = host;\n  }\n  const domain = host?.replace(/:\\d+$/, \"\");\n  if (domain) {\n    attributes[URL_DOMAIN] = domain;\n  }\n  attributes[HTTP_REQUEST_SAME_ORIGIN] = resourceUrl.includes(WINDOW.location.origin);\n  const filteredUrl = filterCollectedUrl(resourceUrl);\n  attributes[URL_FULL] = filteredUrl;\n  _setResourceRequestAttributes(entry, attributes, [\n    // https://developer.mozilla.org/en-US/docs/Web/API/PerformanceResourceTiming/responseStatus\n    [\"responseStatus\", HTTP_RESPONSE_STATUS_CODE],\n    [\"transferSize\", HTTP_RESPONSE_SIZE],\n    [\"encodedBodySize\", HTTP_RESPONSE_BODY_SIZE],\n    [\"decodedBodySize\", HTTP_RESPONSE_BODY_DECODED_SIZE],\n    // https://developer.mozilla.org/en-US/docs/Web/API/PerformanceResourceTiming/renderBlockingStatus\n    [\"renderBlockingStatus\", RESOURCE_RENDER_BLOCKING_STATUS],\n    // https://developer.mozilla.org/en-US/docs/Web/API/PerformanceResourceTiming/deliveryType\n    [\"deliveryType\", \"http.response_delivery_type\"]\n  ]);\n  const attributesWithResourceTiming = { ...attributes, ...resourceTimingToSpanAttributes(entry) };\n  const endTimestamp = startTimestamp + duration;\n  startAndEndSpan(span, startTimestamp, endTimestamp, {\n    // With span streaming, span names have to be low cardinality, so we can't fall back to the URL.\n    name: spanStreamingEnabled ? domain || RESOURCE_SPAN_NAME_FALLBACK : filteredUrl.replace(WINDOW.location.origin, \"\"),\n    op,\n    attributes: attributesWithResourceTiming\n  });\n}\nfunction _trackNavigator(span, spanStreamingEnabled) {\n  const navigator = WINDOW.navigator;\n  if (!navigator) {\n    return;\n  }\n  const connection = navigator.connection;\n  if (connection) {\n    if (connection.effectiveType) {\n      span.setAttribute(\n        // oxlint-disable-next-line typescript/no-deprecated -- Preserve the existing attribute name.\n        spanStreamingEnabled ? NETWORK_CONNECTION_EFFECTIVE_TYPE : EFFECTIVECONNECTIONTYPE,\n        connection.effectiveType\n      );\n    }\n    if (connection.type) {\n      span.setAttribute(spanStreamingEnabled ? NETWORK_CONNECTION_TYPE : CONNECTIONTYPE, connection.type);\n    }\n    if (isMeasurementValue(connection.rtt)) {\n      if (spanStreamingEnabled) {\n        span.setAttribute(NETWORK_CONNECTION_RTT, connection.rtt);\n      } else if (spanToJSON(span).attributes[SENTRY_OP] === \"pageload\") {\n        setMeasurement(\"connection.rtt\", connection.rtt, \"millisecond\");\n      }\n    }\n  }\n  if (isMeasurementValue(navigator.deviceMemory)) {\n    if (spanStreamingEnabled) {\n      span.setAttribute(DEVICE_MEMORY_ESTIMATED_CAPACITY, navigator.deviceMemory);\n    } else {\n      span.setAttribute(DEVICEMEMORY, `${navigator.deviceMemory} GB`);\n    }\n  }\n  if (isMeasurementValue(navigator.hardwareConcurrency)) {\n    if (spanStreamingEnabled) {\n      span.setAttribute(DEVICE_PROCESSOR_COUNT, navigator.hardwareConcurrency);\n    } else {\n      span.setAttribute(HARDWARECONCURRENCY, String(navigator.hardwareConcurrency));\n    }\n  }\n}\nfunction _setResourceRequestAttributes(entry, attributes, properties) {\n  properties.forEach(([entryKey, attributeKey]) => {\n    const entryVal = entry[entryKey];\n    if (entryVal != null && (typeof entryVal === \"number\" && entryVal < MAX_INT_AS_BYTES || typeof entryVal === \"string\")) {\n      attributes[attributeKey] = entryVal;\n    }\n  });\n}\n\nexport { _addNavigationSpans, _addPaintSpan, _addResourceSpans, _setResourceRequestAttributes, addPerformanceEntries, startTrackingLongAnimationFrames, startTrackingLongTasks };\n//# sourceMappingURL=entries.js.map\n","class LRUMap {\n  constructor(_maxSize) {\n    this._maxSize = _maxSize;\n    this._cache = /* @__PURE__ */ new Map();\n  }\n  /** Get the current size of the cache */\n  get size() {\n    return this._cache.size;\n  }\n  /** Get an entry or undefined if it was not in the cache. Re-inserts to update the recently used order */\n  get(key) {\n    const value = this._cache.get(key);\n    if (value === void 0) {\n      return void 0;\n    }\n    this._cache.delete(key);\n    this._cache.set(key, value);\n    return value;\n  }\n  /** Insert an entry and evict an older entry if we've reached maxSize */\n  set(key, value) {\n    this._cache.delete(key);\n    if (this._cache.size >= this._maxSize) {\n      const nextKey = this._cache.keys().next().value;\n      this._cache.delete(nextKey);\n    }\n    this._cache.set(key, value);\n  }\n  /** Remove an entry and return the entry if it was in the cache */\n  remove(key) {\n    const value = this._cache.get(key);\n    if (value) {\n      this._cache.delete(key);\n    }\n    return value;\n  }\n  /** Clear all entries */\n  clear() {\n    this._cache.clear();\n  }\n  /** Get all the keys */\n  keys() {\n    return Array.from(this._cache.keys());\n  }\n  /** Get all the values */\n  values() {\n    const values = [];\n    this._cache.forEach((value) => values.push(value));\n    return values;\n  }\n}\n\nexport { LRUMap };\n//# sourceMappingURL=lru.js.map\n","import { LRUMap, spanToJSON, debug } from '@sentry/core';\nimport { SENTRY_OP, BROWSER_NAVIGATION_ID } from '@sentry/conventions/attributes';\nimport { DEBUG_BUILD } from '../debug-build.js';\nimport { addPerformanceInstrumentationHandler, isPerformanceEventTiming } from '../instrumentation/performanceObserver.js';\nimport { WINDOW } from '../types.js';\n\nconst MAX_TRACKED_NAVIGATIONS = 5;\nconst INTERACTION_MATCH_TOLERANCE_MS = 5;\nlet _pendingNavigation;\nlet _pendingInteraction;\nlet _lastInteractionTimestamp;\nconst _interactionIdToNavigationSpan = new LRUMap(MAX_TRACKED_NAVIGATIONS);\nconst _navigationIdToNavigationSpan = new LRUMap(MAX_TRACKED_NAVIGATIONS);\nlet _correlationStarted = false;\nfunction interactionMatches(entryStartTime, interactionTimestamp) {\n  return Math.abs(entryStartTime - interactionTimestamp) <= INTERACTION_MATCH_TOLERANCE_MS;\n}\nfunction supportsSoftNavigations() {\n  try {\n    return PerformanceObserver.supportedEntryTypes.includes(\"soft-navigation\") && // Older implementations exposed this as an attribute rather than a method. Only the method\n    // form shipped unflagged, so it's what web-vitals gates on.\n    typeof WINDOW.PerformanceSoftNavigation?.prototype?.getLargestInteractionContentfulPaint === \"function\";\n  } catch {\n    return false;\n  }\n}\nfunction startSoftNavigationCorrelation(client) {\n  if (_correlationStarted || !supportsSoftNavigations()) {\n    return;\n  }\n  _correlationStarted = true;\n  const onInteraction = (event) => {\n    if (event.isTrusted) {\n      _lastInteractionTimestamp = event.timeStamp;\n    }\n  };\n  WINDOW.addEventListener(\"click\", onInteraction, { capture: true, passive: true });\n  WINDOW.addEventListener(\"keydown\", onInteraction, { capture: true, passive: true });\n  client.on(\"spanStart\", (span) => {\n    if (spanToJSON(span).attributes?.[SENTRY_OP] !== \"navigation\") {\n      return;\n    }\n    _pendingNavigation = void 0;\n    const interactionTimestamp = _lastInteractionTimestamp;\n    if (interactionTimestamp == null) {\n      return;\n    }\n    if (_pendingInteraction?.interactionTimestamp === interactionTimestamp) {\n      _interactionIdToNavigationSpan.set(_pendingInteraction.interactionId, span);\n      _pendingInteraction = void 0;\n      return;\n    }\n    _pendingNavigation = { span, interactionTimestamp };\n  });\n  const bindInteractionToNavigationSpan = ({ entries }) => {\n    for (const entry of entries) {\n      if (!isPerformanceEventTiming(entry) || !entry.interactionId) {\n        continue;\n      }\n      const pending = _pendingNavigation;\n      if (pending && interactionMatches(entry.startTime, pending.interactionTimestamp)) {\n        _interactionIdToNavigationSpan.set(entry.interactionId, pending.span);\n        _pendingNavigation = void 0;\n        continue;\n      }\n      if (_interactionIdToNavigationSpan.get(entry.interactionId)) {\n        continue;\n      }\n      if (_lastInteractionTimestamp != null && interactionMatches(entry.startTime, _lastInteractionTimestamp)) {\n        _pendingInteraction = { interactionId: entry.interactionId, interactionTimestamp: _lastInteractionTimestamp };\n      }\n    }\n  };\n  addPerformanceInstrumentationHandler(\"event\", bindInteractionToNavigationSpan);\n  addPerformanceInstrumentationHandler(\"first-input\", bindInteractionToNavigationSpan);\n  addPerformanceInstrumentationHandler(\"soft-navigation\", ({ entries }) => {\n    for (const entry of entries) {\n      const span = _interactionIdToNavigationSpan.get(entry.interactionId);\n      if (!span) {\n        DEBUG_BUILD && debug.log(`[SoftNav] No navigation span found for soft navigation ${entry.navigationId}`, entry);\n        continue;\n      }\n      _navigationIdToNavigationSpan.set(entry.navigationId, span);\n      span.setAttribute(BROWSER_NAVIGATION_ID, entry.navigationId);\n    }\n  });\n}\nfunction getNavigationSpanForMetric(metric) {\n  if (metric.navigationType !== \"soft-navigation\") {\n    return void 0;\n  }\n  const span = _navigationIdToNavigationSpan.get(metric.navigationId);\n  if (span) {\n    return span;\n  }\n  return metric.navigationInteractionId != null ? _interactionIdToNavigationSpan.get(metric.navigationInteractionId) : void 0;\n}\n\nexport { getNavigationSpanForMetric, startSoftNavigationCorrelation, supportsSoftNavigations };\n//# sourceMappingURL=softNavs.js.map\n","const MAX_PLAUSIBLE_LCP_DURATION = 6e4;\nfunction isValidLcpMetric(lcpValue) {\n  return lcpValue != null && lcpValue > 0 && lcpValue <= MAX_PLAUSIBLE_LCP_DURATION;\n}\n\nexport { MAX_PLAUSIBLE_LCP_DURATION, isValidLcpMetric };\n//# sourceMappingURL=lcp.js.map\n","import { browserPerformanceTimeOrigin, spanToJSON, setMeasurement, debug, filterCollectedUrl } from '@sentry/core';\nimport { SENTRY_OP, BROWSER_NAVIGATION_TYPE, BROWSER_PERFORMANCE_TIME_ORIGIN, PERFORMANCE_TIMEORIGIN, BROWSER_PERFORMANCE_NAVIGATION_ACTIVATION_START, PERFORMANCE_ACTIVATIONSTART, LCP_ELEMENT, LCP_ID, LCP_URL, LCP_LOADTIME, LCP_RENDERTIME, LCP_SIZE, BROWSER_WEB_VITAL_TTFB_REQUEST_TIME } from '@sentry/conventions/attributes';\nimport { DEBUG_BUILD } from '../debug-build.js';\nimport { htmlTreeAsString } from '../htmlTreeAsString.js';\nimport { addLcpInstrumentationHandler, addClsInstrumentationHandler, addTtfbInstrumentationHandler, addFcpInstrumentationHandler, addPerformanceInstrumentationHandler } from '../instrumentation/performanceObserver.js';\nimport { getBrowserPerformanceAPI, msToSec } from '../performance/utils.js';\nimport { isValidLcpMetric } from './lcp.js';\nimport { getActivationStart, getNavigationEntry, getVisibilityWatcher } from './utils.js';\n\nlet _measurements = {};\nlet _lcpEntry;\nlet _clsEntry;\nlet _navigationType;\nfunction startTrackingWebVitals({ trackCls, trackLcp }) {\n  const performance = getBrowserPerformanceAPI();\n  if (performance && browserPerformanceTimeOrigin()) {\n    const lcpCleanupCallback = trackLcp ? _trackLCP() : void 0;\n    const clsCleanupCallback = trackCls ? _trackCLS() : void 0;\n    const ttfbCleanupCallback = _trackTtfb();\n    const fcpCleanupCallback = _trackFcp();\n    const fpCleanupCallback = _trackFp();\n    return () => {\n      ttfbCleanupCallback();\n      fcpCleanupCallback();\n      fpCleanupCallback();\n      lcpCleanupCallback?.();\n      clsCleanupCallback?.();\n    };\n  }\n  return () => void 0;\n}\nfunction _trackCLS() {\n  return addClsInstrumentationHandler(({ metric }) => {\n    const entry = metric.entries[metric.entries.length - 1];\n    if (!entry) {\n      return;\n    }\n    _measurements[\"cls\"] = { value: metric.value, unit: \"\" };\n    _clsEntry = entry;\n  }, true);\n}\nfunction _trackLCP() {\n  return addLcpInstrumentationHandler(({ metric }) => {\n    const entry = metric.entries[metric.entries.length - 1];\n    if (!entry || !isValidLcpMetric(metric.value)) {\n      return;\n    }\n    _measurements[\"lcp\"] = { value: metric.value, unit: \"millisecond\" };\n    _lcpEntry = entry;\n  }, true);\n}\nfunction _trackTtfb() {\n  return addTtfbInstrumentationHandler(({ metric }) => {\n    _navigationType = metric.navigationType;\n    const entry = metric.entries[metric.entries.length - 1];\n    if (!entry) {\n      return;\n    }\n    _measurements[\"ttfb\"] = { value: metric.value, unit: \"millisecond\" };\n  });\n}\nfunction _trackFcp() {\n  return addFcpInstrumentationHandler(({ metric }) => {\n    _navigationType = metric.navigationType;\n    _measurements[\"fcp\"] = { value: metric.value, unit: \"millisecond\" };\n  });\n}\nfunction _trackFp() {\n  return addPerformanceInstrumentationHandler(\"paint\", ({ entries }) => {\n    const firstHidden = getVisibilityWatcher();\n    for (const entry of entries) {\n      if (entry.name === \"first-paint\" && entry.startTime < firstHidden.firstHiddenTime) {\n        _measurements[\"fp\"] = { value: entry.startTime, unit: \"millisecond\" };\n      }\n    }\n  });\n}\nfunction addWebVitalsToSpan(span, options) {\n  const origin = browserPerformanceTimeOrigin();\n  if (!getBrowserPerformanceAPI()?.getEntries || !origin) {\n    resetWebVitalState();\n    return;\n  }\n  const { spanStreamingEnabled, recordClsOnPageloadSpan, recordLcpOnPageloadSpan } = options;\n  const timeOrigin = msToSec(origin);\n  if (spanToJSON(span).attributes[SENTRY_OP] === \"pageload\") {\n    _addTtfbRequestTimeToMeasurements(_measurements);\n    _rebaseFpAgainstActivationStart(_measurements);\n    if (spanStreamingEnabled) {\n      const setAttr = (shortWebVitalName, value, customAttrName) => {\n        const attrKey = customAttrName ?? `browser.web_vital.${shortWebVitalName}.value`;\n        span.setAttribute(attrKey, value);\n        DEBUG_BUILD && debug.log(\"Setting web vital attribute\", { [attrKey]: value }, \"on pageload span\");\n      };\n      [\"ttfb\", \"fp\", \"fcp\"].forEach((measurementName) => {\n        if (_measurements[measurementName]) {\n          setAttr(measurementName, _measurements[measurementName].value);\n        }\n      });\n      if (_measurements[\"ttfb.requestTime\"]) {\n        setAttr(\"ttfb.requestTime\", _measurements[\"ttfb.requestTime\"].value, BROWSER_WEB_VITAL_TTFB_REQUEST_TIME);\n      }\n    } else {\n      if (!recordClsOnPageloadSpan) {\n        delete _measurements.cls;\n      }\n      if (!recordLcpOnPageloadSpan) {\n        delete _measurements.lcp;\n      }\n      Object.entries(_measurements).forEach(([measurementName, measurement]) => {\n        setMeasurement(measurementName, measurement.value, measurement.unit, span);\n      });\n      _setWebVitalAttributes(span, options);\n    }\n    if (_navigationType) {\n      span.setAttribute(BROWSER_NAVIGATION_TYPE, _navigationType);\n    }\n    span.setAttribute(spanStreamingEnabled ? BROWSER_PERFORMANCE_TIME_ORIGIN : PERFORMANCE_TIMEORIGIN, timeOrigin);\n    span.setAttribute(\n      // oxlint-disable-next-line typescript/no-deprecated -- Preserve the existing attribute name.\n      spanStreamingEnabled ? BROWSER_PERFORMANCE_NAVIGATION_ACTIVATION_START : PERFORMANCE_ACTIVATIONSTART,\n      getActivationStart()\n    );\n  }\n  resetWebVitalState();\n}\nfunction resetWebVitalState() {\n  _lcpEntry = void 0;\n  _clsEntry = void 0;\n  _navigationType = void 0;\n  _measurements = {};\n}\nfunction _setWebVitalAttributes(span, options) {\n  if (_lcpEntry && options.recordLcpOnPageloadSpan) {\n    if (_lcpEntry.element) {\n      span.setAttribute(LCP_ELEMENT, htmlTreeAsString(_lcpEntry.element));\n    }\n    if (_lcpEntry.id) {\n      span.setAttribute(LCP_ID, _lcpEntry.id);\n    }\n    if (_lcpEntry.url) {\n      span.setAttribute(LCP_URL, filterCollectedUrl(_lcpEntry.url.trim()).slice(0, 200));\n    }\n    if (_lcpEntry.loadTime != null) {\n      span.setAttribute(LCP_LOADTIME, _lcpEntry.loadTime);\n    }\n    if (_lcpEntry.renderTime != null) {\n      span.setAttribute(LCP_RENDERTIME, _lcpEntry.renderTime);\n    }\n    span.setAttribute(LCP_SIZE, _lcpEntry.size);\n  }\n  if (_clsEntry?.sources && options.recordClsOnPageloadSpan) {\n    _clsEntry.sources.forEach(\n      (source, index) => span.setAttribute(`cls.source.${index + 1}`, htmlTreeAsString(source.node))\n    );\n  }\n}\nfunction _rebaseFpAgainstActivationStart(measurements) {\n  const fp = measurements[\"fp\"];\n  if (fp) {\n    fp.value = Math.max(fp.value - getActivationStart(), 0);\n  }\n}\nfunction _addTtfbRequestTimeToMeasurements(_measurements2) {\n  const navEntry = getNavigationEntry(false);\n  if (!navEntry) {\n    return;\n  }\n  const { responseStart, requestStart } = navEntry;\n  if (requestStart <= responseStart) {\n    _measurements2[\"ttfb.requestTime\"] = {\n      value: responseStart - requestStart,\n      unit: \"millisecond\"\n    };\n  }\n}\n\nexport { addWebVitalsToSpan, startTrackingWebVitals };\n//# sourceMappingURL=tracking.js.map\n","import { isBrowser, getActiveSpan, getRootSpan } from '@sentry/core';\nimport { htmlTreeAsString } from '../htmlTreeAsString.js';\nimport { WINDOW } from '../types.js';\nimport { addPerformanceInstrumentationHandler, isPerformanceEventTiming } from '../instrumentation/performanceObserver.js';\n\nconst LAST_INTERACTIONS = [];\nconst INTERACTIONS_SPAN_MAP = /* @__PURE__ */ new Map();\nconst UNKNOWN_ELEMENT_NAME = \"<unknown>\";\nconst ELEMENT_NAME_TIMESTAMP_MAP = /* @__PURE__ */ new Map();\nconst MAX_PLAUSIBLE_INP_DURATION = 60;\nconst INP_ENTRY_MAP = {\n  click: \"click\",\n  pointerdown: \"click\",\n  pointerup: \"click\",\n  mousedown: \"click\",\n  mouseup: \"click\",\n  touchstart: \"click\",\n  touchend: \"click\",\n  mouseover: \"hover\",\n  mouseout: \"hover\",\n  mouseenter: \"hover\",\n  mouseleave: \"hover\",\n  pointerover: \"hover\",\n  pointerout: \"hover\",\n  pointerenter: \"hover\",\n  pointerleave: \"hover\",\n  dragstart: \"drag\",\n  dragend: \"drag\",\n  drag: \"drag\",\n  dragenter: \"drag\",\n  dragleave: \"drag\",\n  dragover: \"drag\",\n  drop: \"drag\",\n  keydown: \"press\",\n  keyup: \"press\",\n  keypress: \"press\",\n  input: \"press\"\n};\nfunction getCachedInteractionContext(interactionId) {\n  return interactionId != null ? INTERACTIONS_SPAN_MAP.get(interactionId) : void 0;\n}\nfunction registerInpInteractionListener() {\n  const interactionEvents = Object.keys(INP_ENTRY_MAP);\n  if (isBrowser()) {\n    interactionEvents.forEach((eventType) => {\n      WINDOW.addEventListener(eventType, captureElementFromEvent, { capture: true, passive: true });\n    });\n  }\n  function captureElementFromEvent(event) {\n    const target = event.target;\n    if (!target) {\n      return;\n    }\n    const elementName = htmlTreeAsString(target);\n    const timestamp = Math.round(event.timeStamp);\n    if (!elementName || elementName === UNKNOWN_ELEMENT_NAME) {\n      return;\n    }\n    if (ELEMENT_NAME_TIMESTAMP_MAP.has(timestamp)) {\n      return;\n    }\n    ELEMENT_NAME_TIMESTAMP_MAP.set(timestamp, elementName);\n    if (ELEMENT_NAME_TIMESTAMP_MAP.size > 50) {\n      const firstKey = ELEMENT_NAME_TIMESTAMP_MAP.keys().next().value;\n      if (firstKey !== void 0) {\n        ELEMENT_NAME_TIMESTAMP_MAP.delete(firstKey);\n      }\n    }\n  }\n  function resolveElementNameFromEntry(entry) {\n    const timestamp = Math.round(entry.startTime);\n    let elementName = ELEMENT_NAME_TIMESTAMP_MAP.get(timestamp);\n    if (!elementName) {\n      for (let offset = -5; offset <= 5; offset++) {\n        const nearbyName = ELEMENT_NAME_TIMESTAMP_MAP.get(timestamp + offset);\n        if (nearbyName) {\n          elementName = nearbyName;\n          break;\n        }\n      }\n    }\n    return elementName || UNKNOWN_ELEMENT_NAME;\n  }\n  const handleEntries = ({ entries }) => {\n    const activeSpan = getActiveSpan();\n    const activeRootSpan = activeSpan && getRootSpan(activeSpan);\n    entries.forEach((entry) => {\n      if (!isPerformanceEventTiming(entry)) {\n        return;\n      }\n      const interactionId = entry.interactionId;\n      if (interactionId == null) {\n        return;\n      }\n      if (INTERACTIONS_SPAN_MAP.has(interactionId)) {\n        return;\n      }\n      const elementName = entry.target ? htmlTreeAsString(entry.target) : resolveElementNameFromEntry(entry);\n      if (LAST_INTERACTIONS.length > 10) {\n        const last = LAST_INTERACTIONS.shift();\n        INTERACTIONS_SPAN_MAP.delete(last);\n      }\n      LAST_INTERACTIONS.push(interactionId);\n      INTERACTIONS_SPAN_MAP.set(interactionId, {\n        span: activeRootSpan,\n        elementName\n      });\n    });\n  };\n  addPerformanceInstrumentationHandler(\"event\", handleEntries);\n  addPerformanceInstrumentationHandler(\"first-input\", handleEntries);\n}\n\nexport { INP_ENTRY_MAP, MAX_PLAUSIBLE_INP_DURATION, UNKNOWN_ELEMENT_NAME, getCachedInteractionContext, registerInpInteractionListener };\n//# sourceMappingURL=inp.js.map\n","import { getRootSpan, spanToJSON, getCurrentScope, getClient } from '@sentry/core';\nimport { startInactiveSpan } from '@sentry/core/browser';\nimport { USER_AGENT_ORIGINAL, SENTRY_OP, SENTRY_SEGMENT_NAME, SENTRY_TRANSACTION, SENTRY_EXCLUSIVE_TIME, SENTRY_ORIGIN, SENTRY_REPLAY_ID, SENTRY_PAGELOAD_SPAN_ID, BROWSER_NAVIGATION_ID, BROWSER_NAVIGATION_TYPE } from '@sentry/conventions/attributes';\nimport { WINDOW } from '../types.js';\n\nfunction _emitWebVitalSpan(options) {\n  const {\n    name,\n    op,\n    origin,\n    metricName,\n    value,\n    attributes: passedAttributes,\n    parentSpan,\n    startTime,\n    endTime,\n    standalone,\n    softNavigationId,\n    navigationType\n  } = options;\n  const segmentSpan = parentSpan && getRootSpan(parentSpan);\n  const segmentName = segmentSpan ? spanToJSON(segmentSpan).name : getCurrentScope().getScopeData().transactionName;\n  const attributes = {\n    [SENTRY_ORIGIN]: origin,\n    [SENTRY_OP]: op,\n    [SENTRY_EXCLUSIVE_TIME]: 0,\n    [`browser.web_vital.${metricName}.value`]: value,\n    // oxlint-disable-next-line typescript-eslint/no-deprecated\n    [SENTRY_TRANSACTION]: segmentName,\n    [SENTRY_SEGMENT_NAME]: segmentName,\n    // Web vital score calculation relies on the user agent\n    [USER_AGENT_ORIGINAL]: WINDOW.navigator?.userAgent,\n    ...passedAttributes\n  };\n  if (parentSpan && spanToJSON(parentSpan).attributes[SENTRY_OP] === \"pageload\") {\n    attributes[SENTRY_PAGELOAD_SPAN_ID] = parentSpan.spanContext().spanId;\n  }\n  if (softNavigationId != null) {\n    attributes[BROWSER_NAVIGATION_ID] = softNavigationId;\n  }\n  if (navigationType) {\n    attributes[BROWSER_NAVIGATION_TYPE] = navigationType;\n  }\n  if (standalone) {\n    Object.assign(attributes, getReplayAttributes());\n  }\n  const span = startInactiveSpan({\n    name,\n    attributes,\n    startTime,\n    parentSpan,\n    // oxlint-disable-next-line typescript/no-deprecated -- intentional during the v1/v2 transition; see the TODO(standalone) above\n    experimental: standalone ? { standalone: true } : void 0\n  });\n  if (span) {\n    span.end(endTime ?? startTime);\n  }\n}\nfunction getReplayAttributes() {\n  const replay = getClient()?.getIntegrationByName(\"Replay\");\n  const replayId = replay?.getReplayId(true);\n  if (!replayId) {\n    return {};\n  }\n  return {\n    [SENTRY_REPLAY_ID]: replayId,\n    // Not the `SENTRY_REPLAY_IS_BUFFERING` convention: that one has no `sentry._internal.` prefix, and\n    // the rest of the SDK sets the prefixed key (see `logs/internal.ts`, `metrics/internal.ts`).\n    \"sentry._internal.replay_is_buffering\": replay.getRecordingMode() === \"buffer\" ? true : void 0\n  };\n}\n\nexport { _emitWebVitalSpan };\n//# sourceMappingURL=emitSpan.js.map\n","import { onHidden } from './utils.js';\n\nfunction listenForWebVitalReportEvents(client, collectorCallback) {\n  let pageloadSpan;\n  let collected = false;\n  function _runCollectorCallbackOnce() {\n    if (!collected && pageloadSpan) {\n      collectorCallback(pageloadSpan);\n    }\n    collected = true;\n  }\n  onHidden(() => {\n    _runCollectorCallbackOnce();\n  });\n  const unsubscribeStartNavigation = client.on(\"beforeStartNavigationSpan\", (_, options) => {\n    if (!options?.isRedirect) {\n      _runCollectorCallbackOnce();\n      unsubscribeStartNavigation();\n      unsubscribeAfterStartPageLoadSpan();\n    }\n  });\n  const unsubscribeAfterStartPageLoadSpan = client.on(\"afterStartPageLoadSpan\", (span) => {\n    pageloadSpan = span;\n    unsubscribeAfterStartPageLoadSpan();\n  });\n}\n\nexport { listenForWebVitalReportEvents };\n//# sourceMappingURL=reportEvents.js.map\n","import { browserPerformanceTimeOrigin, hasSpanStreamingEnabled, spanToJSON, debug, _INTERNAL_performanceTimeToSeconds, getClient, filterCollectedUrl, timestampInSeconds, getActiveSpan, getRootSpan, UI_WEBVITAL_CLS_SPAN_NAME_FALLBACK, UI_INTERACTION_PRESS_SPAN_NAME_FALLBACK, UI_INTERACTION_DRAG_SPAN_NAME_FALLBACK, UI_INTERACTION_HOVER_SPAN_NAME_FALLBACK, UI_INTERACTION_CLICK_SPAN_NAME_FALLBACK, UI_WEBVITAL_LCP_SPAN_NAME_FALLBACK } from '@sentry/core';\nimport { DEBUG_BUILD } from '../debug-build.js';\nimport { htmlTreeAsString } from '../htmlTreeAsString.js';\nimport { getComponentName } from '../component-name.js';\nimport { MAX_PLAUSIBLE_INP_DURATION, INP_ENTRY_MAP, getCachedInteractionContext, UNKNOWN_ELEMENT_NAME } from './inp.js';\nimport { addClsInstrumentationHandler, addInpInstrumentationHandler, addLcpInstrumentationHandler } from '../instrumentation/performanceObserver.js';\nimport { SENTRY_OP, BROWSER_NAVIGATION_TYPE, SENTRY_EXCLUSIVE_TIME, UI_COMPONENT_NAME, BROWSER_WEB_VITAL_INP_TARGET, BROWSER_WEB_VITAL_INP_INTERACTION_TYPE, BROWSER_WEB_VITAL_LCP_ELEMENT, BROWSER_WEB_VITAL_LCP_ID, BROWSER_WEB_VITAL_LCP_URL, BROWSER_WEB_VITAL_LCP_LOAD_TIME, BROWSER_WEB_VITAL_LCP_RENDER_TIME, BROWSER_WEB_VITAL_LCP_SIZE } from '@sentry/conventions/attributes';\nimport { _emitWebVitalSpan } from './emitSpan.js';\nimport { isValidLcpMetric } from './lcp.js';\nimport { listenForWebVitalReportEvents } from './reportEvents.js';\nimport { getNavigationSpanForMetric } from './softNavs.js';\nimport { supportsWebVital, getBrowserPerformanceAPI, msToSec } from '../performance/utils.js';\nimport { NAVIGATION, UI_WEBVITAL_CLS, UI_INTERACTION_PRESS, UI_INTERACTION_DRAG, UI_INTERACTION_HOVER, UI_INTERACTION_CLICK, UI_WEBVITAL_LCP } from '@sentry/conventions/op';\n\nconst INTERACTION_TYPE_TO_SPAN_OP = {\n  click: UI_INTERACTION_CLICK,\n  hover: UI_INTERACTION_HOVER,\n  drag: UI_INTERACTION_DRAG,\n  press: UI_INTERACTION_PRESS\n};\nconst INTERACTION_TYPE_TO_SPAN_NAME_FALLBACK = {\n  click: UI_INTERACTION_CLICK_SPAN_NAME_FALLBACK,\n  hover: UI_INTERACTION_HOVER_SPAN_NAME_FALLBACK,\n  drag: UI_INTERACTION_DRAG_SPAN_NAME_FALLBACK,\n  press: UI_INTERACTION_PRESS_SPAN_NAME_FALLBACK\n};\nfunction trackWebVitalPerNavigation(client, addInstrumentationHandler, send) {\n  let pageloadSpan;\n  client.on(\"afterStartPageLoadSpan\", (span) => {\n    pageloadSpan = span;\n  });\n  let bfcacheNavigationSpan;\n  client.on(\"spanStart\", (span) => {\n    const attributes = spanToJSON(span).attributes;\n    if (attributes?.[SENTRY_OP] === NAVIGATION && attributes[BROWSER_NAVIGATION_TYPE] === \"back-forward-cache\") {\n      bfcacheNavigationSpan = span;\n    }\n  });\n  addInstrumentationHandler(({ metric }) => {\n    const navigationSpan = getNavigationSpanForMetric(metric);\n    if (metric.navigationType === \"soft-navigation\") {\n      if (navigationSpan) {\n        send(metric, navigationSpan, metric.navigationId);\n      } else {\n        DEBUG_BUILD && debug.log(`[SoftNav] Dropping ${metric.name} for uncorrelated soft navigation ${metric.navigationId}`);\n      }\n      return;\n    }\n    if (metric.navigationType === \"back-forward-cache\") {\n      send(metric, bfcacheNavigationSpan, void 0);\n      return;\n    }\n    send(metric, pageloadSpan, void 0);\n  });\n}\nfunction trackLcpAsSpan(client, perNavigation = false) {\n  if (!supportsWebVital(\"largest-contentful-paint\")) {\n    return;\n  }\n  if (perNavigation) {\n    trackWebVitalPerNavigation(client, addLcpInstrumentationHandler, (metric, parentSpan, softNavigationId) => {\n      const entry = metric.entries[metric.entries.length - 1];\n      _sendLcpSpan(\n        metric.value,\n        entry,\n        parentSpan,\n        softNavigationId,\n        metric.navigationType,\n        metric.navigationStartTime\n      );\n    });\n    return;\n  }\n  let lcpValue = 0;\n  let lcpEntry;\n  let lcpNavigationType;\n  const cleanupLcpHandler = addLcpInstrumentationHandler(({ metric }) => {\n    lcpNavigationType = metric.navigationType;\n    const entry = metric.entries[metric.entries.length - 1];\n    if (!entry || !isValidLcpMetric(metric.value)) {\n      return;\n    }\n    lcpValue = metric.value;\n    lcpEntry = entry;\n  }, true);\n  listenForWebVitalReportEvents(client, (pageloadSpan) => {\n    _sendLcpSpan(lcpValue, lcpEntry, pageloadSpan, void 0, lcpNavigationType);\n    cleanupLcpHandler();\n  });\n}\nfunction _sendLcpSpan(lcpValue, entry, pageloadSpan, softNavigationId, navigationType, navigationStartTime) {\n  if (!isValidLcpMetric(lcpValue)) {\n    return;\n  }\n  DEBUG_BUILD && debug.log(`Sending LCP span (${lcpValue})`);\n  const navigationStart = navigationStartTime || 0;\n  const startTime = _INTERNAL_performanceTimeToSeconds(navigationStart) ?? msToSec(navigationStart);\n  const endTime = entry ? _INTERNAL_performanceTimeToSeconds(entry.startTime, navigationStart) ?? msToSec(entry.startTime) : startTime + msToSec(lcpValue);\n  const selector = entry ? htmlTreeAsString(entry.element) : void 0;\n  const componentName = entry?.element ? getComponentName(entry.element) : null;\n  const client = getClient();\n  const hasSpanStreaming = !!client && hasSpanStreamingEnabled(client);\n  const name = hasSpanStreaming ? componentName || UI_WEBVITAL_LCP_SPAN_NAME_FALLBACK : selector ?? UI_WEBVITAL_LCP_SPAN_NAME_FALLBACK;\n  const attributes = {};\n  if (selector) {\n    attributes[BROWSER_WEB_VITAL_LCP_ELEMENT] = selector;\n  }\n  if (componentName) {\n    attributes[UI_COMPONENT_NAME] = componentName;\n  }\n  entry?.id && (attributes[BROWSER_WEB_VITAL_LCP_ID] = entry.id);\n  entry?.url && (attributes[BROWSER_WEB_VITAL_LCP_URL] = filterCollectedUrl(entry.url, client));\n  entry?.loadTime != null && (attributes[BROWSER_WEB_VITAL_LCP_LOAD_TIME] = entry.loadTime);\n  entry?.renderTime != null && (attributes[BROWSER_WEB_VITAL_LCP_RENDER_TIME] = entry.renderTime);\n  entry?.size != null && (attributes[BROWSER_WEB_VITAL_LCP_SIZE] = entry.size);\n  _emitWebVitalSpan({\n    name,\n    op: UI_WEBVITAL_LCP,\n    origin: \"auto.ui.browser.lcp\",\n    metricName: \"lcp\",\n    value: lcpValue,\n    attributes,\n    parentSpan: pageloadSpan,\n    startTime,\n    endTime,\n    softNavigationId,\n    navigationType\n  });\n}\nfunction trackClsAsSpan(client, perNavigation = false) {\n  if (!supportsWebVital(\"layout-shift\")) {\n    return;\n  }\n  if (perNavigation) {\n    trackWebVitalPerNavigation(client, addClsInstrumentationHandler, (metric, parentSpan, softNavigationId) => {\n      const entry = metric.entries[metric.entries.length - 1];\n      _sendClsSpan(\n        metric.value,\n        entry,\n        parentSpan,\n        softNavigationId,\n        metric.navigationType,\n        metric.navigationStartTime\n      );\n    });\n    return;\n  }\n  let clsValue = 0;\n  let clsEntry;\n  let clsNavigationType;\n  const cleanupClsHandler = addClsInstrumentationHandler(({ metric }) => {\n    clsNavigationType = metric.navigationType;\n    const entry = metric.entries[metric.entries.length - 1];\n    if (!entry) {\n      return;\n    }\n    clsValue = metric.value;\n    clsEntry = entry;\n  }, true);\n  listenForWebVitalReportEvents(client, (pageloadSpan) => {\n    _sendClsSpan(clsValue, clsEntry, pageloadSpan, void 0, clsNavigationType);\n    cleanupClsHandler();\n  });\n}\nfunction _sendClsSpan(clsValue, entry, pageloadSpan, softNavigationId, navigationType, navigationStartTime) {\n  DEBUG_BUILD && debug.log(`Sending CLS span (${clsValue})`);\n  const offset = entry?.startTime ?? navigationStartTime ?? 0;\n  const startTime = _INTERNAL_performanceTimeToSeconds(offset) ?? timestampInSeconds();\n  const firstSourceNode = entry?.sources[0]?.node;\n  const selector = entry ? htmlTreeAsString(firstSourceNode) : void 0;\n  const componentName = firstSourceNode ? getComponentName(firstSourceNode) : null;\n  const client = getClient();\n  const hasSpanStreaming = !!client && hasSpanStreamingEnabled(client);\n  const name = hasSpanStreaming ? componentName || UI_WEBVITAL_CLS_SPAN_NAME_FALLBACK : selector ?? UI_WEBVITAL_CLS_SPAN_NAME_FALLBACK;\n  const attributes = {};\n  if (componentName) {\n    attributes[UI_COMPONENT_NAME] = componentName;\n  }\n  if (entry?.sources) {\n    entry.sources.forEach((source, index) => {\n      attributes[`browser.web_vital.cls.source.${index + 1}`] = htmlTreeAsString(source.node);\n    });\n  }\n  _emitWebVitalSpan({\n    name,\n    op: UI_WEBVITAL_CLS,\n    origin: \"auto.ui.browser.cls\",\n    metricName: \"cls\",\n    value: clsValue,\n    attributes,\n    parentSpan: pageloadSpan,\n    startTime,\n    softNavigationId,\n    navigationType\n  });\n}\nfunction trackInpAsSpan(client, perNavigation = false) {\n  const performance = getBrowserPerformanceAPI();\n  if (!performance || !browserPerformanceTimeOrigin()) {\n    return;\n  }\n  const standalone = !hasSpanStreamingEnabled(client);\n  if (perNavigation) {\n    trackWebVitalPerNavigation(client, addInpInstrumentationHandler, (metric, parentSpan, softNavigationId) => {\n      if (isPlausibleInp(metric)) {\n        _sendInpSpan(metric.value, findInpEntry(metric), standalone, parentSpan, softNavigationId, metric);\n      }\n    });\n    return;\n  }\n  const onInp = ({ metric }) => {\n    if (isPlausibleInp(metric)) {\n      _sendInpSpan(metric.value, findInpEntry(metric), standalone, void 0, void 0, metric);\n    }\n  };\n  addInpInstrumentationHandler(onInp);\n}\nfunction isPlausibleInp(metric) {\n  return metric.value != null && msToSec(metric.value) <= MAX_PLAUSIBLE_INP_DURATION;\n}\nfunction findInpEntry(metric) {\n  return metric.entries.find((e) => e.duration === metric.value && INP_ENTRY_MAP[e.name]);\n}\nfunction _sendInpSpan(inpValue, entry, standalone = false, attributedSpan, softNavigationId, metric) {\n  DEBUG_BUILD && debug.log(`Sending INP span (${inpValue})`);\n  const startTime = _INTERNAL_performanceTimeToSeconds(entry?.startTime ?? metric?.navigationStartTime ?? 0);\n  if (!startTime) {\n    return;\n  }\n  const duration = msToSec(inpValue);\n  const entryInteractionType = entry && INP_ENTRY_MAP[entry.name];\n  const interactionType = entryInteractionType || \"click\";\n  const cachedContext = entry && getCachedInteractionContext(entry.interactionId);\n  const activeSpan = getActiveSpan();\n  const rootSpan = activeSpan ? getRootSpan(activeSpan) : void 0;\n  const spanToUse = attributedSpan || cachedContext?.span || rootSpan;\n  const selector = cachedContext?.elementName || (entry ? htmlTreeAsString(entry.target) : void 0);\n  const componentName = entry?.target ? getComponentName(entry.target) : null;\n  const client = getClient();\n  const hasSpanStreaming = !!client && hasSpanStreamingEnabled(client);\n  const fallbackName = INTERACTION_TYPE_TO_SPAN_NAME_FALLBACK[interactionType];\n  const name = hasSpanStreaming ? componentName || fallbackName : selector ?? \"Interaction to next paint\";\n  const attributes = {\n    [SENTRY_EXCLUSIVE_TIME]: entry?.duration ?? inpValue\n  };\n  selector && selector !== UNKNOWN_ELEMENT_NAME && (attributes[BROWSER_WEB_VITAL_INP_TARGET] = selector);\n  entryInteractionType && (attributes[BROWSER_WEB_VITAL_INP_INTERACTION_TYPE] = entryInteractionType);\n  if (componentName) {\n    attributes[UI_COMPONENT_NAME] = componentName;\n  }\n  _emitWebVitalSpan({\n    name,\n    op: INTERACTION_TYPE_TO_SPAN_OP[interactionType],\n    origin: \"auto.ui.browser.inp\",\n    metricName: \"inp\",\n    value: inpValue,\n    attributes,\n    startTime,\n    endTime: startTime + duration,\n    navigationType: metric?.navigationType,\n    parentSpan: spanToUse,\n    standalone,\n    softNavigationId\n  });\n}\n\nexport { _sendClsSpan, _sendInpSpan, _sendLcpSpan, trackClsAsSpan, trackInpAsSpan, trackLcpAsSpan };\n//# sourceMappingURL=spans.js.map\n","import { defineIntegration, hasSpanStreamingEnabled } from '@sentry/core';\nimport { registerInpInteractionListener, supportsSoftNavigations, enableSoftNavigationReporting, startSoftNavigationCorrelation, enableBfcacheReporting, startTrackingWebVitals, addWebVitalsToSpan, trackLcpAsSpan, trackClsAsSpan, trackInpAsSpan } from '@sentry/browser-utils';\n\nconst WEB_VITALS_INTEGRATION_NAME = \"WebVitals\";\nconst webVitalsIntegration = defineIntegration((options = {}) => {\n  const { ignore = [], softNavigations = true, bfcacheNavigations = true } = options;\n  const ignored = new Set(ignore);\n  return {\n    name: WEB_VITALS_INTEGRATION_NAME,\n    setup(client) {\n      const spanStreamingEnabled = hasSpanStreamingEnabled(client);\n      const reportSoftNavs = softNavigations && spanStreamingEnabled && supportsSoftNavigations();\n      const reportBfcache = bfcacheNavigations && spanStreamingEnabled;\n      const perNavigation = reportSoftNavs || reportBfcache;\n      if (reportSoftNavs) {\n        enableSoftNavigationReporting();\n        startSoftNavigationCorrelation(client);\n      }\n      if (reportBfcache) {\n        enableBfcacheReporting();\n      }\n      const trackClsOnPageloadSpan = !spanStreamingEnabled && !ignored.has(\"cls\");\n      const trackLcpOnPageloadSpan = !spanStreamingEnabled && !ignored.has(\"lcp\");\n      const finalizeWebVitals = startTrackingWebVitals({\n        trackCls: trackClsOnPageloadSpan,\n        trackLcp: trackLcpOnPageloadSpan,\n        client\n      });\n      const pageloadSpans = /* @__PURE__ */ new WeakSet();\n      client.on(\"afterStartPageLoadSpan\", (span) => {\n        pageloadSpans.add(span);\n      });\n      client.on(\"spanEnd\", (span) => {\n        if (!pageloadSpans.delete(span)) {\n          return;\n        }\n        finalizeWebVitals();\n        addWebVitalsToSpan(span, {\n          recordClsOnPageloadSpan: trackClsOnPageloadSpan,\n          recordLcpOnPageloadSpan: trackLcpOnPageloadSpan,\n          spanStreamingEnabled\n        });\n      });\n      if (spanStreamingEnabled) {\n        if (!ignored.has(\"lcp\")) {\n          trackLcpAsSpan(client, perNavigation);\n        }\n        if (!ignored.has(\"cls\")) {\n          trackClsAsSpan(client, perNavigation);\n        }\n      }\n      if (!ignored.has(\"inp\")) {\n        trackInpAsSpan(client, perNavigation);\n      }\n    },\n    afterAllSetup() {\n      if (!ignored.has(\"inp\")) {\n        registerInpInteractionListener();\n      }\n    }\n  };\n});\n\nexport { WEB_VITALS_INTEGRATION_NAME, webVitalsIntegration };\n//# sourceMappingURL=webVitals.js.map\n","import { getRootSpan, getCurrentScope, SEMANTIC_ATTRIBUTE_SENTRY_PREVIOUS_TRACE_SAMPLE_RATE, spanToJSON, debug, SEMANTIC_ATTRIBUTE_SENTRY_SAMPLE_RATE } from '@sentry/core';\nimport { DEBUG_BUILD } from '../debug-build.js';\nimport { WINDOW } from '../helpers.js';\nimport '../stack-parsers.js';\nimport '../integrations/breadcrumbs.js';\nimport '../integrations/browserapierrors.js';\nimport '../integrations/browsersession.js';\nimport '../integrations/culturecontext.js';\nimport '../integrations/globalhandlers.js';\nimport '../integrations/httpcontext.js';\nimport '../integrations/linkederrors.js';\nimport { SENTRY_OP, SENTRY_LINK_TYPE } from '@sentry/conventions/attributes';\n\nconst PREVIOUS_TRACE_MAX_DURATION = 3600;\nconst PREVIOUS_TRACE_KEY = \"sentry_previous_trace\";\nconst PREVIOUS_TRACE_TMP_SPAN_ATTRIBUTE = \"sentry.previous_trace\";\nfunction linkTraces(client, {\n  linkPreviousTrace,\n  consistentTraceSampling\n}) {\n  const useSessionStorage = linkPreviousTrace === \"session-storage\";\n  let inMemoryPreviousTraceInfo = useSessionStorage ? getPreviousTraceFromSessionStorage() : void 0;\n  client.on(\"spanStart\", (span) => {\n    if (getRootSpan(span) !== span) {\n      return;\n    }\n    const oldPropagationContext = getCurrentScope().getPropagationContext();\n    inMemoryPreviousTraceInfo = addPreviousTraceSpanLink(inMemoryPreviousTraceInfo, span, oldPropagationContext);\n    if (useSessionStorage) {\n      storePreviousTraceInSessionStorage(inMemoryPreviousTraceInfo);\n    }\n  });\n  let isFirstTraceOnPageload = true;\n  if (consistentTraceSampling) {\n    client.on(\"beforeSampling\", (mutableSamplingContextData) => {\n      if (!inMemoryPreviousTraceInfo) {\n        return;\n      }\n      const scope = getCurrentScope();\n      const currentPropagationContext = scope.getPropagationContext();\n      if (isFirstTraceOnPageload && currentPropagationContext.parentSpanId) {\n        isFirstTraceOnPageload = false;\n        return;\n      }\n      scope.setPropagationContext({\n        ...currentPropagationContext,\n        dsc: {\n          ...currentPropagationContext.dsc,\n          sample_rate: String(inMemoryPreviousTraceInfo.sampleRate),\n          sampled: String(spanContextSampled(inMemoryPreviousTraceInfo.spanContext))\n        },\n        sampleRand: inMemoryPreviousTraceInfo.sampleRand\n      });\n      mutableSamplingContextData.parentSampled = spanContextSampled(inMemoryPreviousTraceInfo.spanContext);\n      mutableSamplingContextData.parentSampleRate = inMemoryPreviousTraceInfo.sampleRate;\n      mutableSamplingContextData.spanAttributes = {\n        ...mutableSamplingContextData.spanAttributes,\n        [SEMANTIC_ATTRIBUTE_SENTRY_PREVIOUS_TRACE_SAMPLE_RATE]: inMemoryPreviousTraceInfo.sampleRate\n      };\n    });\n  }\n}\nfunction addPreviousTraceSpanLink(previousTraceInfo, span, oldPropagationContext) {\n  const spanJson = spanToJSON(span);\n  function getSampleRate() {\n    try {\n      const oldSampleRate = Number(\n        spanJson.attributes[SEMANTIC_ATTRIBUTE_SENTRY_SAMPLE_RATE] ?? oldPropagationContext.dsc?.sample_rate\n      );\n      return Number.isNaN(oldSampleRate) ? 0 : oldSampleRate;\n    } catch {\n      return 0;\n    }\n  }\n  const updatedPreviousTraceInfo = {\n    spanContext: span.spanContext(),\n    startTimestamp: spanJson.start_timestamp,\n    sampleRate: getSampleRate(),\n    sampleRand: oldPropagationContext.sampleRand\n  };\n  if (!previousTraceInfo) {\n    return updatedPreviousTraceInfo;\n  }\n  const previousTraceSpanCtx = previousTraceInfo.spanContext;\n  if (previousTraceSpanCtx.traceId === spanJson.trace_id) {\n    return previousTraceInfo;\n  }\n  if (Date.now() / 1e3 - previousTraceInfo.startTimestamp <= PREVIOUS_TRACE_MAX_DURATION) {\n    if (DEBUG_BUILD) {\n      debug.log(\n        `Adding previous_trace \\`${JSON.stringify(previousTraceSpanCtx)}\\` link to span \\`${JSON.stringify({\n          op: spanJson.attributes[SENTRY_OP],\n          ...span.spanContext()\n        })}\\``\n      );\n    }\n    span.addLink({\n      context: previousTraceSpanCtx,\n      attributes: {\n        [SENTRY_LINK_TYPE]: \"previous_trace\"\n      }\n    });\n    span.setAttribute(\n      PREVIOUS_TRACE_TMP_SPAN_ATTRIBUTE,\n      `${previousTraceSpanCtx.traceId}-${previousTraceSpanCtx.spanId}-${spanContextSampled(previousTraceSpanCtx) ? 1 : 0}`\n    );\n  }\n  return updatedPreviousTraceInfo;\n}\nfunction storePreviousTraceInSessionStorage(previousTraceInfo) {\n  try {\n    WINDOW.sessionStorage.setItem(PREVIOUS_TRACE_KEY, JSON.stringify(previousTraceInfo));\n  } catch (e) {\n    DEBUG_BUILD && debug.warn(\"Could not store previous trace in sessionStorage\", e);\n  }\n}\nfunction getPreviousTraceFromSessionStorage() {\n  try {\n    const previousTraceInfo = WINDOW.sessionStorage?.getItem(PREVIOUS_TRACE_KEY);\n    return JSON.parse(previousTraceInfo);\n  } catch {\n    return void 0;\n  }\n}\nfunction spanContextSampled(ctx) {\n  return ctx.traceFlags === 1;\n}\n\nexport { PREVIOUS_TRACE_KEY, PREVIOUS_TRACE_MAX_DURATION, PREVIOUS_TRACE_TMP_SPAN_ATTRIBUTE, addPreviousTraceSpanLink, getPreviousTraceFromSessionStorage, linkTraces, spanContextSampled, storePreviousTraceInSessionStorage };\n//# sourceMappingURL=linkedTraces.js.map\n","import { getAsyncContextStrategy } from '../asyncContext/index.js';\nimport { getMainCarrier } from '../carrier.js';\nimport { getClient, getCurrentScope, hasExternalPropagationContext } from '../currentScopes.js';\nimport { isEnabled } from '../exports.js';\nimport { debug } from './debug-logger.js';\nimport { getActiveSpan, spanToTraceHeader, spanToTraceparentHeader } from './spanUtils.js';\nimport { hasSpansEnabled } from './hasSpansEnabled.js';\nimport { getDynamicSamplingContextFromSpan, getDynamicSamplingContextFromScope } from '../tracing/dynamicSamplingContext.js';\nimport { dynamicSamplingContextToSentryBaggageHeader } from './baggage.js';\nimport { TRACEPARENT_REGEXP, generateSentryTraceHeader, generateTraceparentHeader } from './tracing.js';\nimport { spanIsNonRecordingSpan } from '../tracing/sentryNonRecordingSpan.js';\n\nfunction getTraceData(options = {}) {\n  const client = options.client || getClient();\n  if (!isEnabled() || !client) {\n    return {};\n  }\n  const carrier = getMainCarrier();\n  const acs = getAsyncContextStrategy(carrier);\n  if (acs.getTraceData) {\n    return acs.getTraceData(options);\n  }\n  const scope = options.scope || getCurrentScope();\n  const span = options.span || getActiveSpan();\n  const isTwpPlaceholder = spanIsNonRecordingSpan(span) && !hasSpansEnabled(client.getOptions());\n  if (!span && hasExternalPropagationContext()) {\n    return {};\n  }\n  const sentryTrace = span && !isTwpPlaceholder ? spanToTraceHeader(span) : scopeToTraceHeader(scope);\n  const dsc = span ? getDynamicSamplingContextFromSpan(span) : getDynamicSamplingContextFromScope(client, scope);\n  const baggage = dynamicSamplingContextToSentryBaggageHeader(dsc);\n  const isValidSentryTraceHeader = TRACEPARENT_REGEXP.test(sentryTrace);\n  if (!isValidSentryTraceHeader) {\n    debug.warn(\"Invalid sentry-trace data. Cannot generate trace data\");\n    return {};\n  }\n  const traceData = {\n    \"sentry-trace\": sentryTrace,\n    baggage\n  };\n  if (options.propagateTraceparent) {\n    traceData.traceparent = span && !isTwpPlaceholder ? spanToTraceparentHeader(span) : scopeToTraceparentHeader(scope);\n  }\n  return traceData;\n}\nfunction scopeToTraceHeader(scope) {\n  const { traceId, sampled, propagationSpanId } = scope.getPropagationContext();\n  return generateSentryTraceHeader(traceId, propagationSpanId, sampled);\n}\nfunction scopeToTraceparentHeader(scope) {\n  const { traceId, sampled, propagationSpanId } = scope.getPropagationContext();\n  return generateTraceparentHeader(traceId, propagationSpanId, sampled);\n}\n\nexport { getTraceData };\n//# sourceMappingURL=traceData.js.map\n","import { HTTP_RESPONSE_BODY_SIZE, URL_FULL, SERVER_ADDRESS, SERVER_PORT, URL_QUERY, URL_FRAGMENT, URL_DOMAIN, SENTRY_OP, SENTRY_ORIGIN, HTTP_REQUEST_METHOD } from '@sentry/conventions/attributes';\nimport { HTTP_CLIENT } from '@sentry/conventions/op';\nimport { getClient } from './currentScopes.js';\nimport { getActiveSpan } from './utils/spanUtils.js';\nimport { setHttpStatus, SPAN_STATUS_ERROR } from './tracing/spanstatus.js';\nimport { isRequest, isInstanceOf } from './utils/is.js';\nimport { hasSpansEnabled } from './utils/hasSpansEnabled.js';\nimport { SENTRY_BAGGAGE_KEY_PREFIX } from './utils/baggage.js';\nimport { SentryNonRecordingSpan } from './tracing/sentryNonRecordingSpan.js';\nimport { hasSpanStreamingEnabled } from './tracing/spans/hasSpanStreamingEnabled.js';\nimport { startInactiveSpan, spanIsIgnored } from './tracing/trace.js';\nimport { filterCollectedUrl, filterCollectedUrlQuery } from './utils/data-collection/filterCollectedUrl.js';\nimport { getTraceData } from './utils/traceData.js';\nimport { getUrlDomain, stripDataUrlContent, parseStringToURLObject, getSanitizedUrlStringFromUrlObject, isURLObjectRelative, getUrlQuery, getUrlFragment } from './utils/url.js';\n\nfunction instrumentFetchRequest(handlerData, shouldCreateSpan, shouldAttachHeaders, spans, instrumentFetchRequestOptions) {\n  if (!handlerData.fetchData) {\n    return void 0;\n  }\n  const { method, url } = handlerData.fetchData;\n  const shouldCreateSpanResult = hasSpansEnabled() && shouldCreateSpan(url);\n  if (handlerData.endTimestamp) {\n    const spanId = handlerData.fetchData.__span;\n    if (!spanId) return;\n    const span2 = spans[spanId];\n    if (span2) {\n      if (shouldCreateSpanResult) {\n        endSpan(span2, handlerData);\n        _callOnRequestSpanEnd(span2, handlerData, instrumentFetchRequestOptions);\n      }\n      delete spans[spanId];\n    }\n    return void 0;\n  }\n  const {\n    spanOrigin = \"auto.http.browser\",\n    propagateTraceparent = false,\n    urlBase\n  } = instrumentFetchRequestOptions ?? {};\n  const client = getClient();\n  const hasParent = !!getActiveSpan();\n  const shouldEmitSpan = hasParent || !!client && hasSpanStreamingEnabled(client);\n  const span = shouldCreateSpanResult && shouldEmitSpan ? startInactiveSpan(getSpanStartOptions(url, method, spanOrigin, client, urlBase)) : new SentryNonRecordingSpan();\n  const spanForTraceHeaders = spanIsIgnored(span) && hasParent ? void 0 : span;\n  if (shouldCreateSpanResult && !shouldEmitSpan) {\n    client?.recordDroppedEvent(\"no_parent_span\", \"span\");\n  }\n  handlerData.fetchData.__span = span.spanContext().spanId;\n  spans[span.spanContext().spanId] = span;\n  if (shouldAttachHeaders(handlerData.fetchData.url)) {\n    const request = handlerData.args[0];\n    const options = { ...handlerData.args[1] || {} };\n    const headers = _INTERNAL_getTracingHeadersForFetchRequest(\n      request,\n      options,\n      // If performance is disabled (TWP) or there's no active root span (pageload/navigation/interaction),\n      // we do not want to use the span as base for the trace headers,\n      // which means that the headers will be generated from the scope and the sampling decision is deferred\n      hasSpansEnabled() && shouldEmitSpan ? spanForTraceHeaders : void 0,\n      propagateTraceparent\n    );\n    if (headers) {\n      handlerData.args[1] = options;\n      options.headers = headers;\n    }\n  }\n  if (client) {\n    const fetchHint = {\n      input: handlerData.args,\n      response: handlerData.response,\n      startTimestamp: handlerData.startTimestamp,\n      endTimestamp: handlerData.endTimestamp\n    };\n    client.emit(\"beforeOutgoingRequestSpan\", span, fetchHint);\n  }\n  return span;\n}\nfunction _callOnRequestSpanEnd(span, handlerData, instrumentFetchRequestOptions) {\n  instrumentFetchRequestOptions?.onRequestSpanEnd?.(span, {\n    headers: handlerData.response?.headers,\n    error: handlerData.error\n  });\n}\nfunction _INTERNAL_getTracingHeadersForFetchRequest(request, fetchOptionsObj, span, propagateTraceparent) {\n  const traceHeaders = getTraceData({ span, propagateTraceparent });\n  const sentryTrace = traceHeaders[\"sentry-trace\"];\n  const baggage = traceHeaders.baggage;\n  const traceparent = traceHeaders.traceparent;\n  if (!sentryTrace) {\n    return void 0;\n  }\n  const originalHeaders = fetchOptionsObj.headers || (isRequest(request) ? request.headers : void 0);\n  if (!originalHeaders) {\n    return {\n      \"sentry-trace\": sentryTrace,\n      ...baggage && { baggage },\n      ...traceparent && { traceparent }\n    };\n  } else if (isHeaders(originalHeaders)) {\n    const newHeaders = new Headers(originalHeaders);\n    if (!newHeaders.get(\"sentry-trace\")) {\n      newHeaders.set(\"sentry-trace\", sentryTrace);\n    }\n    if (propagateTraceparent && traceparent && !newHeaders.get(\"traceparent\")) {\n      newHeaders.set(\"traceparent\", traceparent);\n    }\n    if (baggage) {\n      const prevBaggageHeader = newHeaders.get(\"baggage\");\n      if (!prevBaggageHeader) {\n        newHeaders.set(\"baggage\", baggage);\n      } else if (!baggageHeaderHasSentryBaggageValues(prevBaggageHeader)) {\n        newHeaders.set(\"baggage\", `${prevBaggageHeader},${baggage}`);\n      }\n    }\n    return newHeaders;\n  } else if (isHeadersInitTupleArray(originalHeaders)) {\n    const newHeaders = [...originalHeaders];\n    if (!newHeaders.find((header) => header[0] === \"sentry-trace\")) {\n      newHeaders.push([\"sentry-trace\", sentryTrace]);\n    }\n    if (propagateTraceparent && traceparent && !newHeaders.find((header) => header[0] === \"traceparent\")) {\n      newHeaders.push([\"traceparent\", traceparent]);\n    }\n    const prevBaggageHeaderWithSentryValues = originalHeaders.find(\n      (header) => header[0] === \"baggage\" && typeof header[1] === \"string\" && baggageHeaderHasSentryBaggageValues(header[1])\n    );\n    if (baggage && !prevBaggageHeaderWithSentryValues) {\n      newHeaders.push([\"baggage\", baggage]);\n    }\n    return newHeaders;\n  } else {\n    const existingSentryTraceHeader = \"sentry-trace\" in originalHeaders ? originalHeaders[\"sentry-trace\"] : void 0;\n    const existingTraceparentHeader = \"traceparent\" in originalHeaders ? originalHeaders.traceparent : void 0;\n    const existingBaggageHeader = \"baggage\" in originalHeaders ? originalHeaders.baggage : void 0;\n    const newBaggageHeaders = existingBaggageHeader ? Array.isArray(existingBaggageHeader) ? [...existingBaggageHeader] : [existingBaggageHeader] : [];\n    const prevBaggageHeaderWithSentryValues = existingBaggageHeader && (Array.isArray(existingBaggageHeader) ? existingBaggageHeader.find((headerItem) => baggageHeaderHasSentryBaggageValues(headerItem)) : baggageHeaderHasSentryBaggageValues(existingBaggageHeader));\n    if (baggage && !prevBaggageHeaderWithSentryValues) {\n      newBaggageHeaders.push(baggage);\n    }\n    const newHeaders = Object.assign({}, originalHeaders, {\n      \"sentry-trace\": existingSentryTraceHeader ?? sentryTrace,\n      ...newBaggageHeaders.length > 0 && { baggage: newBaggageHeaders.join(\",\") }\n    });\n    if (propagateTraceparent && traceparent && !existingTraceparentHeader) {\n      newHeaders.traceparent = traceparent;\n    }\n    return newHeaders;\n  }\n}\nfunction endSpan(span, handlerData) {\n  if (handlerData.response) {\n    setHttpStatus(span, handlerData.response.status);\n    const contentLength = handlerData.response?.headers?.get(\"content-length\");\n    if (contentLength) {\n      const contentLengthNum = parseInt(contentLength);\n      if (contentLengthNum > 0) {\n        span.setAttribute(HTTP_RESPONSE_BODY_SIZE, contentLengthNum);\n      }\n    }\n  } else if (handlerData.error) {\n    span.setStatus({ code: SPAN_STATUS_ERROR, message: \"internal_error\" });\n  }\n  span.end();\n}\nfunction baggageHeaderHasSentryBaggageValues(baggageHeader) {\n  if (typeof baggageHeader !== \"string\") {\n    return false;\n  }\n  return baggageHeader.split(\",\").some((baggageEntry) => baggageEntry.trim().startsWith(SENTRY_BAGGAGE_KEY_PREFIX));\n}\nfunction isHeaders(headers) {\n  return typeof Headers !== \"undefined\" && isInstanceOf(headers, Headers);\n}\nfunction isHeadersInitTupleArray(headers) {\n  if (!Array.isArray(headers)) {\n    return false;\n  }\n  return headers.every(\n    (item) => Array.isArray(item) && item.length === 2 && typeof item[0] === \"string\"\n  );\n}\nfunction getSpanStartOptions(url, method, spanOrigin, client, urlBase) {\n  const isStreamed = !!client && hasSpanStreamingEnabled(client);\n  const domain = getUrlDomain(url, urlBase);\n  if (url.startsWith(\"data:\")) {\n    const sanitizedUrl2 = stripDataUrlContent(url);\n    return {\n      name: isStreamed ? method : `${method} ${sanitizedUrl2}`,\n      attributes: getFetchSpanAttributes(url, void 0, method, spanOrigin, client, domain)\n    };\n  }\n  const parsedUrl = parseStringToURLObject(url);\n  const sanitizedUrl = parsedUrl ? getSanitizedUrlStringFromUrlObject(parsedUrl) : url;\n  return {\n    name: isStreamed ? domain ? `${method} ${domain}` : method : `${method} ${sanitizedUrl}`,\n    attributes: getFetchSpanAttributes(url, parsedUrl, method, spanOrigin, client, domain)\n  };\n}\nfunction getFetchSpanAttributes(url, parsedUrl, method, spanOrigin, client, domain) {\n  const attributes = {\n    [URL_FULL]: filterCollectedUrl(stripDataUrlContent(url), client),\n    type: \"fetch\",\n    // oxlint-disable-next-line typescript/no-deprecated\n    [HTTP_REQUEST_METHOD]: method,\n    [SENTRY_ORIGIN]: spanOrigin,\n    [SENTRY_OP]: HTTP_CLIENT,\n    [URL_DOMAIN]: domain\n  };\n  if (parsedUrl) {\n    if (!isURLObjectRelative(parsedUrl)) {\n      attributes[URL_FULL] = filterCollectedUrl(stripDataUrlContent(parsedUrl.href), client);\n      attributes[SERVER_ADDRESS] = parsedUrl.hostname;\n      attributes[SERVER_PORT] = parsedUrl.port ? Number(parsedUrl.port) : void 0;\n    }\n    attributes[URL_QUERY] = filterCollectedUrlQuery(getUrlQuery(parsedUrl.search), client);\n    attributes[URL_FRAGMENT] = getUrlFragment(parsedUrl.hash);\n  }\n  return attributes;\n}\n\nexport { _INTERNAL_getTracingHeadersForFetchRequest, _callOnRequestSpanEnd, instrumentFetchRequest };\n//# sourceMappingURL=fetch.js.map\n","import { DEBUG_BUILD } from '../debug-build.js';\nimport { debug } from './debug-logger.js';\nimport { isString, isRegExp } from './is.js';\n\nconst NOT_PROPAGATED_MESSAGE = \"[Tracing] Not injecting trace data for url because it does not match tracePropagationTargets:\";\nconst NORMALIZED_REGEXP_CACHE = /* @__PURE__ */ new WeakMap();\nfunction normalizeRegExpTarget(pattern) {\n  const flags = `${pattern.flags.replace(/[gy]/g, \"\")}${pattern.ignoreCase ? \"\" : \"i\"}`;\n  if (flags === pattern.flags) {\n    return pattern;\n  }\n  const cached = NORMALIZED_REGEXP_CACHE.get(pattern);\n  if (cached) {\n    return cached;\n  }\n  const normalizedPattern = new RegExp(pattern.source, flags);\n  NORMALIZED_REGEXP_CACHE.set(pattern, normalizedPattern);\n  return normalizedPattern;\n}\nfunction matchesTracePropagationTargets(value, tracePropagationTargets, requireExactStringMatch = false) {\n  const lowerCaseValue = value.toLowerCase();\n  for (const target of tracePropagationTargets) {\n    if (isString(target)) {\n      const lowerCaseTarget = target.toLowerCase();\n      if (requireExactStringMatch ? lowerCaseValue === lowerCaseTarget : lowerCaseValue.includes(lowerCaseTarget)) {\n        return true;\n      }\n    } else if (isRegExp(target) && normalizeRegExpTarget(target).test(value)) {\n      return true;\n    }\n  }\n  return false;\n}\nfunction shouldPropagateTraceForUrl(url, tracePropagationTargets, decisionMap) {\n  if (typeof url !== \"string\" || !tracePropagationTargets) {\n    return true;\n  }\n  const cachedDecision = decisionMap?.get(url);\n  if (cachedDecision !== void 0) {\n    DEBUG_BUILD && !cachedDecision && debug.log(NOT_PROPAGATED_MESSAGE, url);\n    return cachedDecision;\n  }\n  const decision = matchesTracePropagationTargets(url, tracePropagationTargets);\n  decisionMap?.set(url, decision);\n  DEBUG_BUILD && !decision && debug.log(NOT_PROPAGATED_MESSAGE, url);\n  return decision;\n}\n\nexport { matchesTracePropagationTargets, shouldPropagateTraceForUrl };\n//# sourceMappingURL=tracePropagationTargets.js.map\n","import { debug } from '@sentry/core';\nimport { DEBUG_BUILD } from './debug-build.js';\n\nconst ORIGINAL_REQ_BODY = /* @__PURE__ */ Symbol.for(\"sentry__originalRequestBody\");\nfunction serializeFormData(formData) {\n  return new URLSearchParams(formData).toString();\n}\nfunction getBodyString(body, _debug = debug) {\n  try {\n    if (typeof body === \"string\") {\n      return [body];\n    }\n    if (body instanceof URLSearchParams) {\n      return [body.toString()];\n    }\n    if (body instanceof FormData) {\n      return [serializeFormData(body)];\n    }\n    if (!body) {\n      return [void 0];\n    }\n  } catch (error) {\n    DEBUG_BUILD && _debug.error(error, \"Failed to serialize body\", body);\n    return [void 0, \"BODY_PARSE_ERROR\"];\n  }\n  DEBUG_BUILD && _debug.log(\"Skipping network body because of body type\", body);\n  return [void 0, \"UNPARSEABLE_BODY_TYPE\"];\n}\nfunction getFetchRequestArgBody(fetchArgs = []) {\n  if (fetchArgs.length >= 2 && fetchArgs[1] && typeof fetchArgs[1] === \"object\" && \"body\" in fetchArgs[1]) {\n    return fetchArgs[1].body;\n  }\n  if (fetchArgs.length >= 1 && fetchArgs[0] instanceof Request) {\n    const request = fetchArgs[0];\n    const originalBody = request[ORIGINAL_REQ_BODY];\n    if (originalBody !== void 0) {\n      return originalBody;\n    }\n    return void 0;\n  }\n  return void 0;\n}\nfunction parseXhrResponseHeaders(xhr) {\n  let headers;\n  try {\n    headers = xhr.getAllResponseHeaders();\n  } catch (error) {\n    DEBUG_BUILD && debug.error(error, \"Failed to get xhr response headers\", xhr);\n    return {};\n  }\n  if (!headers) {\n    return {};\n  }\n  return headers.split(\"\\r\\n\").reduce((acc, line) => {\n    const [key, value] = line.split(\": \");\n    if (value) {\n      acc[key.toLowerCase()] = value;\n    }\n    return acc;\n  }, {});\n}\n\nexport { ORIGINAL_REQ_BODY, getBodyString, getFetchRequestArgBody, parseXhrResponseHeaders, serializeFormData };\n//# sourceMappingURL=networkUtils.js.map\n","import { WINDOW } from '../helpers.js';\n\nfunction baggageHeaderHasSentryValues(baggageHeader) {\n  return baggageHeader.split(\",\").some((value) => value.trim().startsWith(\"sentry-\"));\n}\nfunction getFullURL(url) {\n  try {\n    const parsed = new URL(url, WINDOW.location?.href);\n    return parsed.href;\n  } catch {\n    return void 0;\n  }\n}\nfunction isPerformanceResourceTiming(entry) {\n  return entry.entryType === \"resource\" && \"initiatorType\" in entry && typeof entry.nextHopProtocol === \"string\" && (entry.initiatorType === \"fetch\" || entry.initiatorType === \"xmlhttprequest\");\n}\nfunction createHeadersSafely(headers) {\n  try {\n    return new Headers(headers);\n  } catch {\n    return void 0;\n  }\n}\n\nexport { baggageHeaderHasSentryValues, createHeadersSafely, getFullURL, isPerformanceResourceTiming };\n//# sourceMappingURL=utils.js.map\n","import { addFetchInstrumentationHandler, instrumentFetchRequest, parseUrl, stripDataUrlContent, filterCollectedUrl, spanToJSON, hasSpanStreamingEnabled, timestampInSeconds, hasSpansEnabled, setHttpStatus, stripUrlQueryAndFragment, getClient, getActiveSpan, getUrlDomain, getUrlFragment, filterCollectedUrlQuery, getUrlQuery, SentryNonRecordingSpan, spanIsIgnored, matchesTracePropagationTargets, getTraceData } from '@sentry/core';\nimport { startInactiveSpan } from '@sentry/core/browser';\nimport { addXhrInstrumentationHandler, addPerformanceInstrumentationHandler, resourceTimingToSpanAttributes, SENTRY_XHR_DATA_KEY, parseXhrResponseHeaders, getLocationHref } from '@sentry/browser-utils';\nimport { WINDOW } from '../helpers.js';\nimport { getFullURL, createHeadersSafely, isPerformanceResourceTiming, baggageHeaderHasSentryValues } from './utils.js';\nimport { SERVER_ADDRESS, URL_FULL, URL_FRAGMENT, URL_QUERY, SENTRY_OP, SENTRY_ORIGIN, URL_DOMAIN, HTTP_REQUEST_METHOD } from '@sentry/conventions/attributes';\nimport { HTTP_CLIENT } from '@sentry/conventions/op';\n\nconst defaultRequestInstrumentationOptions = {\n  traceFetch: true,\n  traceXHR: true,\n  enableHTTPTimings: true\n};\nfunction instrumentOutgoingRequests(client, _options) {\n  const {\n    traceFetch,\n    traceXHR,\n    shouldCreateSpanForRequest,\n    enableHTTPTimings,\n    tracePropagationTargets,\n    onRequestSpanStart,\n    onRequestSpanEnd\n  } = {\n    ...defaultRequestInstrumentationOptions,\n    ..._options\n  };\n  const shouldCreateSpan = typeof shouldCreateSpanForRequest === \"function\" ? shouldCreateSpanForRequest : (_) => true;\n  const shouldAttachHeadersWithTargets = (url) => shouldAttachHeaders(url, tracePropagationTargets);\n  const spans = {};\n  const propagateTraceparent = client.getOptions().propagateTraceparent;\n  if (traceFetch) {\n    addFetchInstrumentationHandler((handlerData) => {\n      const createdSpan = instrumentFetchRequest(handlerData, shouldCreateSpan, shouldAttachHeadersWithTargets, spans, {\n        propagateTraceparent,\n        onRequestSpanEnd,\n        // The generic fetch instrumentation has no page origin to resolve relative URLs against.\n        urlBase: WINDOW.location?.href\n      });\n      if (createdSpan) {\n        const fullUrl = getFullURL(handlerData.fetchData.url);\n        const host = fullUrl ? parseUrl(fullUrl).host?.replace(/^.*@/, \"\") : void 0;\n        const sanitizedFullUrl = fullUrl ? stripDataUrlContent(fullUrl) : void 0;\n        createdSpan.setAttributes({\n          [URL_FULL]: filterCollectedUrl(sanitizedFullUrl),\n          [SERVER_ADDRESS]: host\n        });\n        if (enableHTTPTimings) {\n          addHTTPTimings(createdSpan, client);\n        }\n        onRequestSpanStart?.(createdSpan, { headers: handlerData.headers });\n      }\n    });\n  }\n  if (traceXHR) {\n    addXhrInstrumentationHandler((handlerData) => {\n      const createdSpan = xhrCallback(\n        handlerData,\n        shouldCreateSpan,\n        shouldAttachHeadersWithTargets,\n        spans,\n        propagateTraceparent,\n        onRequestSpanEnd\n      );\n      if (createdSpan) {\n        if (enableHTTPTimings) {\n          addHTTPTimings(createdSpan, client);\n        }\n        onRequestSpanStart?.(createdSpan, {\n          headers: createHeadersSafely(handlerData.xhr.__sentry_xhr_v3__?.request_headers)\n        });\n      }\n    });\n  }\n}\nconst HTTP_TIMING_WAIT_MS = 300;\nfunction addHTTPTimings(span, client) {\n  const url = spanToJSON(span).attributes[URL_FULL];\n  if (!url || typeof url !== \"string\") {\n    return;\n  }\n  let onEntryFound = () => void setTimeout(unsubscribePerformanceObsever);\n  if (hasSpanStreamingEnabled(client)) {\n    const originalEnd = span.end.bind(span);\n    span.end = (endTimestamp) => {\n      const capturedEndTimestamp = endTimestamp ?? timestampInSeconds();\n      let isEnded = false;\n      const endSpanAndCleanup = () => {\n        if (isEnded) {\n          return;\n        }\n        isEnded = true;\n        setTimeout(unsubscribePerformanceObsever);\n        originalEnd(capturedEndTimestamp);\n        clearTimeout(fallbackTimeout);\n      };\n      onEntryFound = endSpanAndCleanup;\n      const fallbackTimeout = setTimeout(endSpanAndCleanup, HTTP_TIMING_WAIT_MS);\n    };\n  }\n  const unsubscribePerformanceObsever = addPerformanceInstrumentationHandler(\"resource\", ({ entries }) => {\n    entries.forEach((entry) => {\n      if (isPerformanceResourceTiming(entry) && entry.name.endsWith(url)) {\n        span.setAttributes(resourceTimingToSpanAttributes(entry));\n        onEntryFound();\n      }\n    });\n  });\n}\nfunction shouldAttachHeaders(targetUrl, tracePropagationTargets) {\n  const href = getLocationHref();\n  if (!href) {\n    const isRelativeSameOriginRequest = !!targetUrl.match(/^\\/(?!\\/)/);\n    if (!tracePropagationTargets) {\n      return isRelativeSameOriginRequest;\n    } else {\n      return matchesTracePropagationTargets(targetUrl, tracePropagationTargets);\n    }\n  } else {\n    let resolvedUrl;\n    let currentOrigin;\n    try {\n      resolvedUrl = new URL(targetUrl, href);\n      currentOrigin = new URL(href).origin;\n    } catch {\n      return false;\n    }\n    const isSameOriginRequest = resolvedUrl.origin === currentOrigin;\n    if (!tracePropagationTargets) {\n      return isSameOriginRequest;\n    } else {\n      return matchesTracePropagationTargets(resolvedUrl.toString(), tracePropagationTargets) || isSameOriginRequest && matchesTracePropagationTargets(resolvedUrl.pathname, tracePropagationTargets);\n    }\n  }\n}\nfunction xhrCallback(handlerData, shouldCreateSpan, shouldAttachHeaders2, spans, propagateTraceparent, onRequestSpanEnd) {\n  const xhr = handlerData.xhr;\n  const sentryXhrData = xhr?.[SENTRY_XHR_DATA_KEY];\n  if (!xhr || xhr.__sentry_own_request__ || !sentryXhrData) {\n    return void 0;\n  }\n  const { url, method } = sentryXhrData;\n  const shouldCreateSpanResult = hasSpansEnabled() && shouldCreateSpan(url);\n  if (handlerData.endTimestamp) {\n    const spanId = xhr.__sentry_xhr_span_id__;\n    if (!spanId) return;\n    const span2 = spans[spanId];\n    if (span2) {\n      if (shouldCreateSpanResult && sentryXhrData.status_code !== void 0) {\n        setHttpStatus(span2, sentryXhrData.status_code);\n        span2.end();\n        onRequestSpanEnd?.(span2, {\n          headers: createHeadersSafely(parseXhrResponseHeaders(xhr)),\n          error: handlerData.error\n        });\n      }\n      delete spans[spanId];\n    }\n    return void 0;\n  }\n  const fullUrl = getFullURL(url);\n  const parsedUrl = fullUrl ? parseUrl(fullUrl) : parseUrl(url);\n  const sanitizedFullUrl = fullUrl ? stripDataUrlContent(fullUrl) : void 0;\n  const urlForSpanName = stripDataUrlContent(stripUrlQueryAndFragment(url));\n  const client = getClient();\n  const hasParent = !!getActiveSpan();\n  const shouldEmitSpan = hasParent || !!client && hasSpanStreamingEnabled(client);\n  const host = parsedUrl?.host?.replace(/^.*@/, \"\");\n  const domain = getUrlDomain(fullUrl || url);\n  const streamedName = domain ? `${method} ${domain}` : method;\n  const span = shouldCreateSpanResult && shouldEmitSpan ? startInactiveSpan({\n    name: !!client && hasSpanStreamingEnabled(client) ? streamedName : `${method} ${urlForSpanName}`,\n    attributes: {\n      type: \"xhr\",\n      // eslint-disable-next-line typescript/no-deprecated\n      [HTTP_REQUEST_METHOD]: method,\n      [URL_FULL]: filterCollectedUrl(sanitizedFullUrl),\n      [SERVER_ADDRESS]: host,\n      [URL_DOMAIN]: domain,\n      [SENTRY_ORIGIN]: \"auto.http.browser\",\n      [SENTRY_OP]: HTTP_CLIENT,\n      [URL_QUERY]: filterCollectedUrlQuery(getUrlQuery(parsedUrl?.search)),\n      [URL_FRAGMENT]: getUrlFragment(parsedUrl?.hash)\n    }\n  }) : new SentryNonRecordingSpan();\n  const spanForTraceHeaders = spanIsIgnored(span) && hasParent ? void 0 : span;\n  if (shouldCreateSpanResult && !shouldEmitSpan) {\n    client?.recordDroppedEvent(\"no_parent_span\", \"span\");\n  }\n  xhr.__sentry_xhr_span_id__ = span.spanContext().spanId;\n  spans[xhr.__sentry_xhr_span_id__] = span;\n  if (shouldAttachHeaders2(url)) {\n    addTracingHeadersToXhrRequest(\n      xhr,\n      // If performance is disabled (TWP) or there's no active root span (pageload/navigation/interaction),\n      // we do not want to use the span as base for the trace headers,\n      // which means that the headers will be generated from the scope and the sampling decision is deferred\n      hasSpansEnabled() && shouldEmitSpan ? spanForTraceHeaders : void 0,\n      propagateTraceparent\n    );\n  }\n  if (client) {\n    client.emit(\"beforeOutgoingRequestSpan\", span, handlerData);\n  }\n  return span;\n}\nfunction addTracingHeadersToXhrRequest(xhr, span, propagateTraceparent) {\n  const { \"sentry-trace\": sentryTrace, baggage, traceparent } = getTraceData({ span, propagateTraceparent });\n  if (sentryTrace) {\n    setHeaderOnXhr(xhr, sentryTrace, baggage, traceparent);\n  }\n}\nfunction setHeaderOnXhr(xhr, sentryTraceHeader, sentryBaggageHeader, traceparentHeader) {\n  const originalHeaders = xhr.__sentry_xhr_v3__?.request_headers;\n  if (originalHeaders?.[\"sentry-trace\"] || !xhr.setRequestHeader) {\n    return;\n  }\n  try {\n    xhr.setRequestHeader(\"sentry-trace\", sentryTraceHeader);\n    if (traceparentHeader && !originalHeaders?.[\"traceparent\"]) {\n      xhr.setRequestHeader(\"traceparent\", traceparentHeader);\n    }\n    if (sentryBaggageHeader) {\n      const originalBaggageHeader = originalHeaders?.[\"baggage\"];\n      if (!originalBaggageHeader || !baggageHeaderHasSentryValues(originalBaggageHeader)) {\n        xhr.setRequestHeader(\"baggage\", sentryBaggageHeader);\n      }\n    }\n  } catch {\n  }\n}\n\nexport { defaultRequestInstrumentationOptions, instrumentOutgoingRequests, shouldAttachHeaders };\n//# sourceMappingURL=request.js.map\n","import { TRACING_DEFAULTS, consoleSandbox, hasSpanStreamingEnabled, PAGELOAD_SPAN_NAME_FALLBACK, parseStringToURLObject, NAVIGATION_SPAN_NAME_FALLBACK, debug, registerSpanErrorInstrumentation, GLOBAL_OBJ, getCurrentScope, getDynamicSamplingContextFromSpan, spanIsSampled, getClient, hasSpansEnabled, generateSpanId, generateTraceId, propagationContextFromHeaders, filterCollectedUrl, spanToJSON, browserPerformanceTimeOrigin, dateTimestampInSeconds, timestampInSeconds, addNonEnumerableProperty, isURLObjectRelative } from '@sentry/core';\nimport { _INTERNAL_ensureBrowserSpanStreaming, startInactiveSpan, startIdleSpan } from '@sentry/core/browser';\nimport { isBotUserAgent, getLocationHref, addHistoryInstrumentationHandler, startTrackingLongAnimationFrames, startTrackingLongTasks, addPerformanceEntries } from '@sentry/browser-utils';\nimport { SENTRY_IDLE_SPAN_FINISH_REASON, URL_FULL, URL_PATH, SENTRY_OP, SENTRY_SEGMENT_NAME_SOURCE, SENTRY_ORIGIN, BROWSER_NAVIGATION_TYPE } from '@sentry/conventions/attributes';\nimport { DEBUG_BUILD } from '../debug-build.js';\nimport { WINDOW, getHttpRequestData } from '../helpers.js';\nimport { WEB_VITALS_INTEGRATION_NAME, webVitalsIntegration } from '../integrations/webVitals.js';\nimport { registerBackgroundTabDetection } from './backgroundtab.js';\nimport { linkTraces } from './linkedTraces.js';\nimport { defaultRequestInstrumentationOptions, instrumentOutgoingRequests } from './request.js';\nimport { NAVIGATION_REDIRECT, NAVIGATION, PAGELOAD } from '@sentry/conventions/op';\n\nconst BROWSER_TRACING_INTEGRATION_ID = \"BrowserTracing\";\nconst DEFAULT_BROWSER_TRACING_OPTIONS = {\n  ...TRACING_DEFAULTS,\n  instrumentNavigation: true,\n  instrumentBfcacheRestore: true,\n  instrumentPageLoad: true,\n  markBackgroundSpan: true,\n  enableLongTask: true,\n  enableLongAnimationFrame: true,\n  // oxlint-disable-next-line typescript/no-deprecated -- still honoured until it is removed\n  enableInp: true,\n  ignoreResourceSpans: [],\n  detectRedirects: true,\n  linkPreviousTrace: \"in-memory\",\n  consistentTraceSampling: false,\n  enableReportPageLoaded: false,\n  ...defaultRequestInstrumentationOptions\n};\nconst browserTracingIntegration = ((options = {}) => {\n  if (\"enableElementTiming\" in options) {\n    consoleSandbox(() => {\n      console.warn(\n        \"[Sentry] `enableElementTiming` is deprecated and no longer has any effect. Use the standalone `elementTimingIntegration` instead.\"\n      );\n    });\n  }\n  const optionalWindowDocument = WINDOW.document;\n  const {\n    // oxlint-disable-next-line typescript/no-deprecated -- still honoured until it is removed\n    enableInp,\n    enableLongTask,\n    enableLongAnimationFrame,\n    webVitals,\n    beforeStartSpan,\n    idleTimeout,\n    finalTimeout,\n    childSpanTimeout,\n    markBackgroundSpan,\n    traceFetch,\n    traceXHR,\n    shouldCreateSpanForRequest,\n    enableHTTPTimings,\n    ignoreResourceSpans,\n    instrumentPageLoad,\n    instrumentNavigation,\n    instrumentBfcacheRestore,\n    detectRedirects,\n    linkPreviousTrace,\n    consistentTraceSampling,\n    enableReportPageLoaded,\n    onRequestSpanStart,\n    onRequestSpanEnd\n  } = {\n    ...DEFAULT_BROWSER_TRACING_OPTIONS,\n    ...options\n  };\n  const _isBot = isBotUserAgent();\n  let lastInteractionTimestamp;\n  let _pageloadSpan;\n  function _createRouteSpan(client, startSpanOptions, makeActive = true, url) {\n    const isPageloadSpan = startSpanOptions.op === \"pageload\";\n    const initialSpanName = startSpanOptions.name;\n    const finalStartSpanOptions = beforeStartSpan ? beforeStartSpan(startSpanOptions) : startSpanOptions;\n    const urlObject = parseStringToURLObject(url || getLocationHref());\n    const attributes = {\n      [URL_PATH]: urlObject?.pathname,\n      ...urlObject && !isURLObjectRelative(urlObject) && { [URL_FULL]: filterCollectedUrl(urlObject.href) },\n      ...finalStartSpanOptions.attributes\n    };\n    if (initialSpanName !== finalStartSpanOptions.name) {\n      attributes[SENTRY_SEGMENT_NAME_SOURCE] = \"custom\";\n    }\n    finalStartSpanOptions.attributes = attributes;\n    if (!makeActive) {\n      const now = dateTimestampInSeconds();\n      startInactiveSpan({\n        ...finalStartSpanOptions,\n        startTime: now\n      }).end(now);\n      return;\n    }\n    const idleSpan = startIdleSpan(finalStartSpanOptions, {\n      idleTimeout,\n      finalTimeout,\n      childSpanTimeout,\n      // should wait for finish signal if it's a pageload transaction\n      disableAutoFinish: isPageloadSpan,\n      trimIdleSpanEndTimestamp: !enableReportPageLoaded\n    });\n    if (isPageloadSpan && enableReportPageLoaded) {\n      _pageloadSpan = idleSpan;\n    }\n    setActiveIdleSpan(client, idleSpan);\n    function emitFinish() {\n      if (optionalWindowDocument && [\"interactive\", \"complete\"].includes(optionalWindowDocument.readyState)) {\n        client.emit(\"idleSpanEnableAutoFinish\", idleSpan);\n        optionalWindowDocument.removeEventListener(\"readystatechange\", emitFinish);\n      }\n    }\n    if (isPageloadSpan && !enableReportPageLoaded && optionalWindowDocument) {\n      optionalWindowDocument.addEventListener(\"readystatechange\", emitFinish);\n      emitFinish();\n    }\n  }\n  return {\n    name: BROWSER_TRACING_INTEGRATION_ID,\n    setup(client) {\n      if (_isBot) {\n        DEBUG_BUILD && debug.log(\"[Tracing] Skipping browserTracingIntegration setup for bot user agent.\");\n        return;\n      }\n      registerSpanErrorInstrumentation();\n      if (enableLongAnimationFrame && GLOBAL_OBJ.PerformanceObserver && PerformanceObserver.supportedEntryTypes?.includes(\"long-animation-frame\")) {\n        startTrackingLongAnimationFrames();\n      } else if (enableLongTask) {\n        startTrackingLongTasks();\n      }\n      if (detectRedirects && optionalWindowDocument) {\n        const interactionHandler = () => {\n          lastInteractionTimestamp = timestampInSeconds();\n        };\n        addEventListener(\"click\", interactionHandler, { capture: true });\n        addEventListener(\"keydown\", interactionHandler, { capture: true, passive: true });\n      }\n      function maybeEndActiveSpan() {\n        const activeSpan = getActiveIdleSpan(client);\n        if (activeSpan && !spanToJSON(activeSpan).end_timestamp) {\n          DEBUG_BUILD && debug.log(\n            `[Tracing] Finishing current active span with op: ${spanToJSON(activeSpan).attributes[SENTRY_OP]}`\n          );\n          activeSpan.setAttribute(SENTRY_IDLE_SPAN_FINISH_REASON, \"cancelled\");\n          activeSpan.end();\n        }\n      }\n      client.on(\"beforeIdleSpanEnd\", (span) => {\n        if (getActiveIdleSpan(client) !== span) {\n          return;\n        }\n        addPerformanceEntries(span, {\n          ignoreResourceSpans,\n          spanStreamingEnabled: hasSpanStreamingEnabled(client)\n        });\n        setActiveIdleSpan(client, void 0);\n        const scope = getCurrentScope();\n        const oldPropagationContext = scope.getPropagationContext();\n        scope.setPropagationContext({\n          ...oldPropagationContext,\n          traceId: span.spanContext().traceId,\n          sampled: spanIsSampled(span),\n          dsc: getDynamicSamplingContextFromSpan(span)\n        });\n        if (_pageloadSpan === span) {\n          _pageloadSpan = void 0;\n        }\n      });\n      client.on(\"startNavigationSpan\", (startSpanOptions, navigationOptions) => {\n        if (getClient() !== client) {\n          return;\n        }\n        if (navigationOptions?.isRedirect) {\n          DEBUG_BUILD && debug.warn(\"[Tracing] Detected redirect, navigation span will not be the root span, but a child span.\");\n          _createRouteSpan(\n            client,\n            {\n              op: NAVIGATION_REDIRECT,\n              ...startSpanOptions\n            },\n            false,\n            navigationOptions.url\n          );\n          return;\n        }\n        lastInteractionTimestamp = void 0;\n        maybeEndActiveSpan();\n        const scope = getCurrentScope();\n        scope.setPropagationContext({\n          traceId: generateTraceId(),\n          sampleRand: Math.random(),\n          propagationSpanId: hasSpansEnabled() ? void 0 : generateSpanId()\n        });\n        scope.setSDKProcessingMetadata({\n          normalizedRequest: void 0\n        });\n        _createRouteSpan(\n          client,\n          {\n            op: NAVIGATION,\n            ...startSpanOptions,\n            // Navigation starts a new trace and is NOT parented under any active interaction (e.g. ui.action.click)\n            parentSpan: null\n          },\n          true,\n          navigationOptions?.url\n        );\n      });\n      client.on(\"startPageLoadSpan\", (startSpanOptions, traceOptions = {}) => {\n        if (getClient() !== client) {\n          return;\n        }\n        maybeEndActiveSpan();\n        const sentryTrace = traceOptions.sentryTrace || getMetaContent(\"sentry-trace\") || getServerTiming(\"sentry-trace\");\n        const baggage = traceOptions.baggage || getMetaContent(\"baggage\") || getServerTiming(\"baggage\");\n        const propagationContext = propagationContextFromHeaders(sentryTrace, baggage);\n        const scope = getCurrentScope();\n        scope.setPropagationContext(propagationContext);\n        if (!hasSpansEnabled()) {\n          scope.getPropagationContext().propagationSpanId = generateSpanId();\n        }\n        const requestData = getHttpRequestData(client);\n        scope.setSDKProcessingMetadata({\n          normalizedRequest: { ...requestData, url: filterCollectedUrl(requestData.url, client) }\n        });\n        _createRouteSpan(client, {\n          op: PAGELOAD,\n          ...startSpanOptions\n        });\n      });\n      client.on(\"endPageloadSpan\", () => {\n        if (enableReportPageLoaded && _pageloadSpan) {\n          _pageloadSpan.setAttribute(SENTRY_IDLE_SPAN_FINISH_REASON, \"reportPageLoaded\");\n          _pageloadSpan.end();\n        }\n      });\n      WINDOW.addEventListener?.(\"pagehide\", () => {\n        const activeSpan = getActiveIdleSpan(client);\n        if (activeSpan && !spanToJSON(activeSpan).end_timestamp) {\n          activeSpan.setAttribute(SENTRY_IDLE_SPAN_FINISH_REASON, \"documentHidden\");\n          activeSpan.end();\n        }\n        void client.flush();\n      });\n    },\n    afterAllSetup(client) {\n      if (_isBot) {\n        return;\n      }\n      _INTERNAL_ensureBrowserSpanStreaming(client);\n      if (client.addIntegration && !client.getIntegrationByName?.(WEB_VITALS_INTEGRATION_NAME)) {\n        const ignore = webVitals?.ignore ?? [];\n        client.addIntegration(\n          webVitalsIntegration({\n            ...webVitals,\n            ignore: enableInp || ignore.includes(\"inp\") ? ignore : [...ignore, \"inp\"]\n          })\n        );\n      }\n      let startingUrl = getLocationHref();\n      if (linkPreviousTrace !== \"off\") {\n        linkTraces(client, { linkPreviousTrace, consistentTraceSampling });\n      }\n      if (WINDOW.location) {\n        if (instrumentPageLoad) {\n          startBrowserTracingPageLoadSpan(client, {\n            // With span streaming, span names have to be low cardinality, and there is no route\n            // information available here.\n            name: hasSpanStreamingEnabled(client) ? PAGELOAD_SPAN_NAME_FALLBACK : WINDOW.location.pathname,\n            attributes: {\n              [SENTRY_SEGMENT_NAME_SOURCE]: \"url\",\n              [SENTRY_ORIGIN]: \"auto.pageload.browser\"\n            }\n          });\n        }\n        if (instrumentNavigation) {\n          addHistoryInstrumentationHandler(({ to, from }) => {\n            if (from === void 0 && startingUrl !== void 0 && startingUrl.indexOf(to) !== -1) {\n              startingUrl = void 0;\n              return;\n            }\n            startingUrl = void 0;\n            const parsed = parseStringToURLObject(to);\n            const activeSpan = getActiveIdleSpan(client);\n            const navigationIsRedirect = activeSpan && detectRedirects && isRedirect(activeSpan, lastInteractionTimestamp);\n            startBrowserTracingNavigationSpan(\n              client,\n              {\n                // With span streaming, span names have to be low cardinality, and there is no route\n                // information available here.\n                name: hasSpanStreamingEnabled(client) ? NAVIGATION_SPAN_NAME_FALLBACK : parsed?.pathname || WINDOW.location.pathname,\n                attributes: {\n                  [SENTRY_SEGMENT_NAME_SOURCE]: \"url\",\n                  [SENTRY_ORIGIN]: \"auto.navigation.browser\"\n                }\n              },\n              { url: to, isRedirect: navigationIsRedirect }\n            );\n          });\n        }\n        if (instrumentBfcacheRestore) {\n          WINDOW.addEventListener?.(\"pageshow\", (event) => {\n            if (!event.persisted) {\n              return;\n            }\n            startingUrl = void 0;\n            startBrowserTracingNavigationSpan(\n              client,\n              {\n                // Deliberately no `startTime`: the span starts now, at the restore. The\n                // `PerformanceNavigationTiming` entry still describes the original document load and\n                // would date the span to before the page was frozen.\n                //\n                // TODO(routing): resolve the parameterized route via the route provider (#23551) and set\n                // the source from it. No router event fires on a restore, so in a framework app this is\n                // the only navigation span still named from a raw pathname.\n                name: hasSpanStreamingEnabled(client) ? NAVIGATION_SPAN_NAME_FALLBACK : WINDOW.location?.pathname || \"/\",\n                attributes: {\n                  [SENTRY_SEGMENT_NAME_SOURCE]: \"url\",\n                  [SENTRY_ORIGIN]: \"auto.navigation.browser.bfcache\",\n                  // A bfcache restore is near-instant, so these spans would otherwise drag\n                  // navigation duration percentiles down with no way to tell them apart.\n                  [BROWSER_NAVIGATION_TYPE]: \"back-forward-cache\"\n                }\n              },\n              { url: WINDOW.location?.href }\n            );\n          });\n        }\n      }\n      if (markBackgroundSpan) {\n        registerBackgroundTabDetection();\n      }\n      instrumentOutgoingRequests(client, {\n        traceFetch,\n        traceXHR,\n        tracePropagationTargets: client.getOptions().tracePropagationTargets,\n        shouldCreateSpanForRequest,\n        enableHTTPTimings,\n        onRequestSpanStart,\n        onRequestSpanEnd\n      });\n    }\n  };\n});\nfunction startBrowserTracingPageLoadSpan(client, spanOptions, traceOptions) {\n  const isFallbackSpanName = spanOptions.name === PAGELOAD_SPAN_NAME_FALLBACK;\n  getCurrentScope().setTransactionName(isFallbackSpanName ? WINDOW.location?.pathname : spanOptions.name);\n  const timeOrigin = browserPerformanceTimeOrigin();\n  const pageloadSpanOptions = {\n    ...spanOptions,\n    // startTime needs to be in seconds, not ms\n    startTime: spanOptions.startTime ?? (timeOrigin ? timeOrigin / 1e3 : void 0)\n  };\n  client.emit(\"startPageLoadSpan\", pageloadSpanOptions, traceOptions);\n  const pageloadSpan = getActiveIdleSpan(client);\n  if (pageloadSpan) {\n    client.emit(\"afterStartPageLoadSpan\", pageloadSpan);\n  }\n  return pageloadSpan;\n}\nfunction startBrowserTracingNavigationSpan(client, spanOptions, options) {\n  const { url, isRedirect: isRedirect2 } = options || {};\n  client.emit(\"beforeStartNavigationSpan\", spanOptions, { isRedirect: isRedirect2, url });\n  client.emit(\"startNavigationSpan\", spanOptions, { isRedirect: isRedirect2, url });\n  const scope = getCurrentScope();\n  const isFallbackSpanName = spanOptions.name === NAVIGATION_SPAN_NAME_FALLBACK;\n  scope.setTransactionName(\n    isFallbackSpanName ? url && parseStringToURLObject(url)?.pathname || WINDOW.location?.pathname : spanOptions.name\n  );\n  if (url && !isRedirect2) {\n    scope.setSDKProcessingMetadata({\n      normalizedRequest: {\n        ...getHttpRequestData(client),\n        url: filterCollectedUrl(url, client)\n      }\n    });\n  }\n  return getActiveIdleSpan(client);\n}\nfunction getMetaContent(metaName) {\n  const optionalWindowDocument = WINDOW.document;\n  const metaTag = optionalWindowDocument?.querySelector(`meta[name=${metaName}]`);\n  return metaTag?.getAttribute(\"content\") || void 0;\n}\nfunction getServerTiming(name) {\n  const navigation = WINDOW.performance?.getEntriesByType?.(\"navigation\")[0];\n  const entry = navigation?.serverTiming?.find((entry2) => entry2.name === name);\n  return entry?.description;\n}\nconst ACTIVE_IDLE_SPAN_PROPERTY = \"_sentry_idleSpan\";\nfunction getActiveIdleSpan(client) {\n  return client[ACTIVE_IDLE_SPAN_PROPERTY];\n}\nfunction setActiveIdleSpan(client, span) {\n  addNonEnumerableProperty(client, ACTIVE_IDLE_SPAN_PROPERTY, span);\n}\nconst REDIRECT_THRESHOLD = 1.5;\nfunction isRedirect(activeSpan, lastInteractionTimestamp) {\n  const spanData = spanToJSON(activeSpan);\n  const now = dateTimestampInSeconds();\n  const startTimestamp = spanData.start_timestamp;\n  if (now - startTimestamp > REDIRECT_THRESHOLD) {\n    return false;\n  }\n  if (lastInteractionTimestamp && now - lastInteractionTimestamp <= REDIRECT_THRESHOLD) {\n    return false;\n  }\n  return true;\n}\n\nexport { BROWSER_TRACING_INTEGRATION_ID, browserTracingIntegration, getMetaContent, getServerTiming, startBrowserTracingNavigationSpan, startBrowserTracingPageLoadSpan };\n//# sourceMappingURL=browserTracingIntegration.js.map\n","import { GLOBAL_OBJ } from './utils/worldwide.js';\n\nconst filenameMetadataMap = /* @__PURE__ */ new Map();\nconst parsedStacks = /* @__PURE__ */ new Set();\nfunction getFilenameToMetadataMap(parser) {\n  if (!GLOBAL_OBJ._sentryModuleMetadata) {\n    return {};\n  }\n  const filenameMap = {};\n  for (const stack of Object.keys(GLOBAL_OBJ._sentryModuleMetadata)) {\n    const metadata = GLOBAL_OBJ._sentryModuleMetadata[stack];\n    const frames = parser(stack);\n    for (const frame of frames.reverse()) {\n      if (frame.filename) {\n        filenameMap[frame.filename] = metadata;\n        break;\n      }\n    }\n  }\n  return filenameMap;\n}\nfunction ensureMetadataStacksAreParsed(parser) {\n  if (!GLOBAL_OBJ._sentryModuleMetadata) {\n    return;\n  }\n  for (const stack of Object.keys(GLOBAL_OBJ._sentryModuleMetadata)) {\n    const metadata = GLOBAL_OBJ._sentryModuleMetadata[stack];\n    if (parsedStacks.has(stack)) {\n      continue;\n    }\n    parsedStacks.add(stack);\n    const frames = parser(stack);\n    for (const frame of frames.reverse()) {\n      if (frame.filename) {\n        filenameMetadataMap.set(frame.filename, metadata);\n        break;\n      }\n    }\n  }\n}\nfunction getMetadataForUrl(parser, filename) {\n  ensureMetadataStacksAreParsed(parser);\n  return filenameMetadataMap.get(filename);\n}\nfunction addMetadataToStackFrames(parser, event) {\n  event.exception?.values?.forEach((exception) => {\n    exception.stacktrace?.frames?.forEach((frame) => {\n      if (!frame.filename || frame.module_metadata) {\n        return;\n      }\n      const metadata = getMetadataForUrl(parser, frame.filename);\n      if (metadata) {\n        frame.module_metadata = metadata;\n      }\n    });\n  });\n}\nfunction stripMetadataFromStackFrames(event) {\n  event.exception?.values?.forEach((exception) => {\n    exception.stacktrace?.frames?.forEach((frame) => {\n      delete frame.module_metadata;\n    });\n  });\n}\n\nexport { addMetadataToStackFrames, getFilenameToMetadataMap, getMetadataForUrl, stripMetadataFromStackFrames };\n//# sourceMappingURL=metadata.js.map\n","export default function () {\n    return process.env.HEROKU_APP_NAME\n        ? process.env.HEROKU_APP_NAME\n            .replace('thermondo-homepage', '')\n            .substr(1)\n        : 'dev';\n}\n","'use strict';\n\n/**\n * Create a bound version of a function with a specified `this` context\n *\n * @param {Function} fn - The function to bind\n * @param {*} thisArg - The value to be passed as the `this` parameter\n * @returns {Function} A new function that will call the original function with the specified `this` context\n */\nexport default function bind(fn, thisArg) {\n  return function wrap() {\n    return fn.apply(thisArg, arguments);\n  };\n}\n","'use strict';\n\nimport bind from './helpers/bind.js';\n\n// utils is a library of generic helper functions non-specific to axios\n\nconst { toString } = Object.prototype;\nconst { getPrototypeOf } = Object;\nconst { iterator, toStringTag } = Symbol;\n\n/* Creating a function that will check if an object has a property. */\nconst hasOwnProperty = (\n  ({ hasOwnProperty }) =>\n  (obj, prop) =>\n    hasOwnProperty.call(obj, prop)\n)(Object.prototype);\n\nconst isUnsafeObjectKey = (prop) =>\n  typeof prop === 'string' &&\n  (prop === '__proto__' || prop === 'constructor' || prop === 'prototype');\n\n/**\n * Determine whether an inherited object must be treated as a shared-prototype\n * boundary. Cross-realm Object.prototype objects cannot be distinguished\n * reliably from application-created null-prototype objects because their\n * properties are mutable, so all inherited terminal prototypes are excluded\n * as a fail-closed boundary. A null-prototype source still keeps its own\n * properties, as produced by mergeConfig and other safe materialization paths.\n *\n * @param {*} obj The object to inspect\n * @param {*} prototype The object's prototype\n * @param {boolean} source Whether obj is the original traversal source\n *\n * @returns {boolean} True when obj is a safe prototype traversal boundary\n */\nconst isPrototypeBoundary = (obj, prototype, source) =>\n  obj === Object.prototype || (!source && prototype === null);\n\n/**\n * Determine whether an object can retain its identity through code paths that\n * add, replace, and remove config properties without bypassing unsafe-key\n * filtering. Immutable objects, unsafe-key-bearing objects, and objects with\n * accessor or restricted data properties must be materialized instead.\n *\n * @param {*} obj The object to inspect\n *\n * @returns {boolean} True when every own property is safe and fully mutable\n */\nconst isSafeAndFullyMutable = (obj) => {\n  if (!Object.isExtensible(obj)) {\n    return false;\n  }\n\n  const props = Object.getOwnPropertyNames(obj);\n\n  if (Object.getOwnPropertySymbols) {\n    props.push(...Object.getOwnPropertySymbols(obj));\n  }\n\n  return props.every((prop) => {\n    if (isUnsafeObjectKey(prop)) {\n      return false;\n    }\n\n    const descriptor = Object.getOwnPropertyDescriptor(obj, prop);\n\n    return !!descriptor && descriptor.configurable && descriptor.writable === true;\n  });\n};\n\n/**\n * Walk the prototype chain (excluding the source realm's Object.prototype)\n * looking for an own `prop`. This distinguishes genuine own/inherited members\n * — including class accessors and template prototypes — from members injected\n * via Object.prototype pollution (e.g. `Object.prototype.username = '...'`),\n * which live on Object.prototype itself and are therefore never matched.\n *\n * @param {*} thing The value whose chain to inspect\n * @param {string|symbol} prop The property key to look for\n *\n * @returns {boolean} True when `prop` is owned below Object.prototype\n */\nconst hasOwnInPrototypeChain = (thing, prop) => {\n  let obj = thing;\n  const seen = [];\n\n  while (obj != null) {\n    if (seen.indexOf(obj) !== -1) {\n      return false;\n    }\n    seen.push(obj);\n\n    const prototype = getPrototypeOf(obj);\n\n    if (isPrototypeBoundary(obj, prototype, obj === thing)) {\n      return false;\n    }\n\n    if (hasOwnProperty(obj, prop)) {\n      return true;\n    }\n    obj = prototype;\n  }\n  return false;\n};\n\n/**\n * Read `obj[prop]` only when it is safe from Object.prototype pollution. Own\n * properties and members inherited from a non-Object.prototype source (a class\n * instance or template object) are honored; a value reachable only through a\n * polluted Object.prototype is ignored and `undefined` is returned.\n *\n * @param {*} obj The source object\n * @param {string|symbol} prop The property key to read\n *\n * @returns {*} The resolved value, or undefined when unsafe/absent\n */\nconst getSafeProp = (obj, prop) =>\n  obj != null && hasOwnInPrototypeChain(obj, prop) ? obj[prop] : undefined;\n\n/**\n * Flatten an object and its application-defined prototype chain into a\n * null-prototype object. Members inherited only from the source realm's\n * Object.prototype are deliberately excluded, while class/template members\n * below that boundary are preserved.\n *\n * @param {*} thing The value to flatten\n *\n * @returns {*} A null-prototype copy, or the original value when it is already\n * structurally safe or is not an object\n */\nconst toSafeFlatObject = (thing) => {\n  if (thing == null || (typeof thing !== 'object' && typeof thing !== 'function')) {\n    return thing;\n  }\n\n  const sourcePrototype = getPrototypeOf(thing);\n\n  if (sourcePrototype === null && isSafeAndFullyMutable(thing)) {\n    return thing;\n  }\n\n  const result = Object.create(null);\n  const merged = Object.create(null);\n  const seen = [];\n  let current = thing;\n\n  while (current != null) {\n    if (seen.indexOf(current) !== -1) {\n      break;\n    }\n\n    seen.push(current);\n\n    const prototype = current === thing ? sourcePrototype : getPrototypeOf(current);\n\n    if (isPrototypeBoundary(current, prototype, current === thing)) {\n      break;\n    }\n\n    const props = Object.getOwnPropertyNames(current);\n\n    if (Object.getOwnPropertySymbols) {\n      props.push(...Object.getOwnPropertySymbols(current));\n    }\n\n    for (const prop of props) {\n      if (isUnsafeObjectKey(prop)) {\n        continue;\n      }\n\n      if (!hasOwnProperty(merged, prop)) {\n        result[prop] = thing[prop];\n        merged[prop] = true;\n      }\n    }\n\n    current = prototype;\n  }\n\n  return result;\n};\n\nconst kindOf = ((cache) => (thing) => {\n  const str = toString.call(thing);\n  return cache[str] || (cache[str] = str.slice(8, -1).toLowerCase());\n})(Object.create(null));\n\nconst kindOfTest = (type) => {\n  type = type.toLowerCase();\n  return (thing) => kindOf(thing) === type;\n};\n\nconst typeOfTest = (type) => (thing) => typeof thing === type;\n\n/**\n * Determine if a value is a non-null object\n *\n * @param {Object} val The value to test\n *\n * @returns {boolean} True if value is an Array, otherwise false\n */\nconst { isArray } = Array;\n\n/**\n * Determine if a value is undefined\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if the value is undefined, otherwise false\n */\nconst isUndefined = typeOfTest('undefined');\n\n/**\n * Determine if a value is a Buffer\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Buffer, otherwise false\n */\nfunction isBuffer(val) {\n  return (\n    val !== null &&\n    !isUndefined(val) &&\n    val.constructor !== null &&\n    !isUndefined(val.constructor) &&\n    isFunction(val.constructor.isBuffer) &&\n    val.constructor.isBuffer(val)\n  );\n}\n\n/**\n * Determine if a value is an ArrayBuffer\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is an ArrayBuffer, otherwise false\n */\nconst isArrayBuffer = kindOfTest('ArrayBuffer');\n\n/**\n * Determine if a value is a view on an ArrayBuffer\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false\n */\nfunction isArrayBufferView(val) {\n  let result;\n  if (typeof ArrayBuffer !== 'undefined' && ArrayBuffer.isView) {\n    result = ArrayBuffer.isView(val);\n  } else {\n    result = val && val.buffer && isArrayBuffer(val.buffer);\n  }\n  return result;\n}\n\n/**\n * Determine if a value is a String\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a String, otherwise false\n */\nconst isString = typeOfTest('string');\n\n/**\n * Determine if a value is a Function\n *\n * @param {*} val The value to test\n * @returns {boolean} True if value is a Function, otherwise false\n */\nconst isFunction = typeOfTest('function');\n\n/**\n * Determine if a value is a Number\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Number, otherwise false\n */\nconst isNumber = typeOfTest('number');\n\n/**\n * Determine if a value is an Object\n *\n * @param {*} thing The value to test\n *\n * @returns {boolean} True if value is an Object, otherwise false\n */\nconst isObject = (thing) => thing !== null && typeof thing === 'object';\n\n/**\n * Determine if a value is a Boolean\n *\n * @param {*} thing The value to test\n * @returns {boolean} True if value is a Boolean, otherwise false\n */\nconst isBoolean = (thing) => thing === true || thing === false;\n\n/**\n * Determine if a value is a plain Object\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a plain Object, otherwise false\n */\nconst isPlainObject = (val) => {\n  if (!isObject(val)) {\n    return false;\n  }\n\n  const prototype = getPrototypeOf(val);\n  return (\n    (prototype === null || prototype === Object.prototype || getPrototypeOf(prototype) === null) &&\n    // Treat own Symbol.toStringTag or Symbol.iterator members as evidence the\n    // value is tagged/iterable, ignoring members reachable only through shared\n    // or terminal prototype boundaries. This is exactly what\n    // hasOwnInPrototypeChain(val, prop) computes here: every prototype admitted\n    // above (null, Object.prototype, or a terminal null-prototype template) is\n    // a boundary, so the walk never inspects anything but `val`'s own members,\n    // and stops before even those when `val` is itself the boundary\n    // Object.prototype. Checking that inline avoids allocating the walker's\n    // `seen` list twice per call on the mergeConfig / merge hot path.\n    (isPrototypeBoundary(val, prototype, true) ||\n      (!hasOwnProperty(val, toStringTag) && !hasOwnProperty(val, iterator)))\n  );\n};\n\n/**\n * Determine if a value is an empty object (safely handles Buffers)\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is an empty object, otherwise false\n */\nconst isEmptyObject = (val) => {\n  // Early return for non-objects or Buffers to prevent RangeError\n  if (!isObject(val) || isBuffer(val)) {\n    return false;\n  }\n\n  try {\n    return Object.keys(val).length === 0 && Object.getPrototypeOf(val) === Object.prototype;\n  } catch (e) {\n    // Fallback for any other objects that might cause RangeError with Object.keys()\n    return false;\n  }\n};\n\n/**\n * Determine if a value is a Date\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Date, otherwise false\n */\nconst isDate = kindOfTest('Date');\n\n/**\n * Determine if a value is a File\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a File, otherwise false\n */\nconst isFile = kindOfTest('File');\n\n/**\n * Determine if a value is a React Native Blob\n * React Native \"blob\": an object with a `uri` attribute. Optionally, it can\n * also have a `name` and `type` attribute to specify filename and content type\n *\n * @see https://github.com/facebook/react-native/blob/26684cf3adf4094eb6c405d345a75bf8c7c0bf88/Libraries/Network/FormData.js#L68-L71\n *\n * @param {*} value The value to test\n *\n * @returns {boolean} True if value is a React Native Blob, otherwise false\n */\nconst isReactNativeBlob = (value) => {\n  return !!(value && typeof value.uri !== 'undefined');\n};\n\n/**\n * Determine if environment is React Native\n * ReactNative `FormData` has a non-standard `getParts()` method\n *\n * @param {*} formData The formData to test\n *\n * @returns {boolean} True if environment is React Native, otherwise false\n */\nconst isReactNative = (formData) => formData && typeof formData.getParts !== 'undefined';\n\n/**\n * Determine if a value is a Blob\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Blob, otherwise false\n */\nconst isBlob = kindOfTest('Blob');\n\n/**\n * Determine if a value is a FileList\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a FileList, otherwise false\n */\nconst isFileList = kindOfTest('FileList');\nconst isSet = kindOfTest('Set');\n\n/**\n * Determine if a value is a Stream\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Stream, otherwise false\n */\nconst isStream = (val) => isObject(val) && isFunction(val.pipe);\n\n/**\n * Determine if a value is a FormData\n *\n * @param {*} thing The value to test\n *\n * @returns {boolean} True if value is an FormData, otherwise false\n */\nfunction getGlobal() {\n  if (typeof globalThis !== 'undefined') return globalThis;\n  if (typeof self !== 'undefined') return self;\n  if (typeof window !== 'undefined') return window;\n  if (typeof global !== 'undefined') return global;\n  return {};\n}\n\nconst G = getGlobal();\nconst FormDataCtor = typeof G.FormData !== 'undefined' ? G.FormData : undefined;\n\nconst isFormData = (thing) => {\n  if (!thing) return false;\n  if (FormDataCtor && thing instanceof FormDataCtor) return true;\n  // Reject plain objects inheriting directly from Object.prototype so prototype-pollution gadgets can't spoof FormData.\n  const proto = getPrototypeOf(thing);\n  if (!proto || proto === Object.prototype) return false;\n  if (!isFunction(thing.append)) return false;\n  const kind = kindOf(thing);\n  return (\n    kind === 'formdata' ||\n    // detect form-data instance\n    (kind === 'object' && isFunction(thing.toString) && thing.toString() === '[object FormData]')\n  );\n};\n\n/**\n * Determine if a value is a URLSearchParams object\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a URLSearchParams object, otherwise false\n */\nconst isURLSearchParams = kindOfTest('URLSearchParams');\n\nconst [isReadableStream, isRequest, isResponse, isHeaders] = [\n  'ReadableStream',\n  'Request',\n  'Response',\n  'Headers',\n].map(kindOfTest);\n\n/**\n * Trim excess whitespace off the beginning and end of a string\n *\n * @param {String} str The String to trim\n *\n * @returns {String} The String freed of excess whitespace\n */\nconst trim = (str) => {\n  return str.trim ? str.trim() : str.replace(/^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g, '');\n};\n/**\n * Iterate over an Array or an Object invoking a function for each item.\n *\n * If `obj` is an Array callback will be called passing\n * the value, index, and complete array for each item.\n *\n * If 'obj' is an Object callback will be called passing\n * the value, key, and complete object for each property.\n *\n * @param {Object|Array<unknown>} obj The object to iterate\n * @param {Function} fn The callback to invoke for each item\n *\n * @param {Object} [options]\n * @param {Boolean} [options.allOwnKeys = false]\n * @returns {any}\n */\nfunction forEach(obj, fn, { allOwnKeys = false } = {}) {\n  // Don't bother if no value provided\n  if (obj === null || typeof obj === 'undefined') {\n    return;\n  }\n\n  let i;\n  let l;\n\n  // Force an array if not already something iterable\n  if (typeof obj !== 'object') {\n    /*eslint no-param-reassign:0*/\n    obj = [obj];\n  }\n\n  if (isArray(obj)) {\n    // Iterate over array values\n    for (i = 0, l = obj.length; i < l; i++) {\n      fn.call(null, obj[i], i, obj);\n    }\n  } else {\n    // Buffer check\n    if (isBuffer(obj)) {\n      return;\n    }\n\n    // Iterate over object keys\n    const keys = allOwnKeys ? Object.getOwnPropertyNames(obj) : Object.keys(obj);\n    const len = keys.length;\n    let key;\n\n    for (i = 0; i < len; i++) {\n      key = keys[i];\n      fn.call(null, obj[key], key, obj);\n    }\n  }\n}\n\n/**\n * Finds a key in an object, case-insensitive, returning the actual key name.\n * Returns null if the object is a Buffer or if no match is found.\n *\n * @param {Object} obj - The object to search.\n * @param {string} key - The key to find (case-insensitive).\n * @returns {?string} The actual key name if found, otherwise null.\n */\nfunction findKey(obj, key) {\n  if (isBuffer(obj)) {\n    return null;\n  }\n\n  key = key.toLowerCase();\n  const keys = Object.keys(obj);\n  let i = keys.length;\n  let _key;\n  while (i-- > 0) {\n    _key = keys[i];\n    if (key === _key.toLowerCase()) {\n      return _key;\n    }\n  }\n  return null;\n}\n\nconst _global = (() => {\n  /*eslint no-undef:0*/\n  if (typeof globalThis !== 'undefined') return globalThis;\n  return typeof self !== 'undefined' ? self : typeof window !== 'undefined' ? window : global;\n})();\n\nconst isContextDefined = (context) => !isUndefined(context) && context !== _global;\n\n/**\n * Accepts varargs expecting each argument to be an object, then\n * immutably merges the properties of each object and returns result.\n *\n * When multiple objects contain the same key the later object in\n * the arguments list will take precedence.\n *\n * Example:\n *\n * ```js\n * const result = merge({foo: 123}, {foo: 456});\n * console.log(result.foo); // outputs 456\n * ```\n *\n * @param {Object} obj1 Object to merge\n *\n * @returns {Object} Result of all merge properties\n */\nfunction merge(...objs) {\n  const { caseless, skipUndefined } = (isContextDefined(this) && this) || {};\n  const result = {};\n  // Caseless lookup only applies to string keys — symbol keys are\n  // identity-matched. Every string key that reaches `result` passes through\n  // this index first, so it can never hold two case variants of one key and a\n  // lowercase -> key map is exactly what findKey(result, key) would rescan\n  // Object.keys(result) for on each assignment.\n  const lowerCaseKeys = caseless ? Object.create(null) : null;\n  const assignValue = (val, key) => {\n    // Skip dangerous property names to prevent prototype pollution\n    if (key === '__proto__' || key === 'constructor' || key === 'prototype') {\n      return;\n    }\n\n    let targetKey = key;\n    if (lowerCaseKeys && typeof key === 'string') {\n      const lowerKey = key.toLowerCase();\n      const knownKey = lowerCaseKeys[lowerKey];\n      // A key recorded but absent from `result` was skipped by skipUndefined;\n      // the later spelling wins then, as it does for findKey.\n      if (knownKey !== undefined && hasOwnProperty(result, knownKey)) {\n        targetKey = knownKey;\n      } else {\n        lowerCaseKeys[lowerKey] = key;\n      }\n    }\n    // Read via own-prop only — a bare `result[targetKey]` walks the prototype\n    // chain, so a polluted Object.prototype value could surface here and get\n    // copied into the merged result.\n    const existing = hasOwnProperty(result, targetKey) ? result[targetKey] : undefined;\n    if (isPlainObject(existing) && isPlainObject(val)) {\n      result[targetKey] = merge(existing, val);\n    } else if (isPlainObject(val)) {\n      result[targetKey] = merge({}, val);\n    } else if (isArray(val)) {\n      result[targetKey] = val.slice();\n    } else if (!skipUndefined || !isUndefined(val)) {\n      result[targetKey] = val;\n    }\n  };\n\n  for (let i = 0, l = objs.length; i < l; i++) {\n    const source = objs[i];\n    if (!source || isBuffer(source)) {\n      continue;\n    }\n\n    forEach(source, assignValue);\n\n    if (typeof source !== 'object' || isArray(source) || !Object.getOwnPropertySymbols) {\n      continue;\n    }\n\n    const symbols = Object.getOwnPropertySymbols(source);\n    for (let j = 0; j < symbols.length; j++) {\n      const symbol = symbols[j];\n      if (propertyIsEnumerable.call(source, symbol)) {\n        assignValue(source[symbol], symbol);\n      }\n    }\n  }\n  return result;\n}\n\n/**\n * Extends object a by mutably adding to it the properties of object b.\n *\n * @param {Object} a The object to be extended\n * @param {Object} b The object to copy properties from\n * @param {Object} thisArg The object to bind function to\n *\n * @param {Object} [options]\n * @param {Boolean} [options.allOwnKeys]\n * @returns {Object} The resulting value of object a\n */\nconst extend = (a, b, thisArg, { allOwnKeys } = {}) => {\n  forEach(\n    b,\n    (val, key) => {\n      if (thisArg && isFunction(val)) {\n        Object.defineProperty(a, key, {\n          // Null-proto descriptor so a polluted Object.prototype.get cannot\n          // hijack defineProperty's accessor-vs-data resolution.\n          __proto__: null,\n          value: bind(val, thisArg),\n          writable: true,\n          enumerable: true,\n          configurable: true,\n        });\n      } else {\n        Object.defineProperty(a, key, {\n          __proto__: null,\n          value: val,\n          writable: true,\n          enumerable: true,\n          configurable: true,\n        });\n      }\n    },\n    { allOwnKeys }\n  );\n  return a;\n};\n\n/**\n * Remove byte order marker. This catches EF BB BF (the UTF-8 BOM)\n *\n * @param {string} content with BOM\n *\n * @returns {string} content value without BOM\n */\nconst stripBOM = (content) => {\n  if (content.charCodeAt(0) === 0xfeff) {\n    content = content.slice(1);\n  }\n  return content;\n};\n\n/**\n * Inherit the prototype methods from one constructor into another\n * @param {function} constructor\n * @param {function} superConstructor\n * @param {object} [props]\n * @param {object} [descriptors]\n *\n * @returns {void}\n */\nconst inherits = (constructor, superConstructor, props, descriptors) => {\n  constructor.prototype = Object.create(superConstructor.prototype, descriptors);\n  Object.defineProperty(constructor.prototype, 'constructor', {\n    __proto__: null,\n    value: constructor,\n    writable: true,\n    enumerable: false,\n    configurable: true,\n  });\n  Object.defineProperty(constructor, 'super', {\n    __proto__: null,\n    value: superConstructor.prototype,\n  });\n  props && Object.assign(constructor.prototype, props);\n};\n\n/**\n * Resolve object with deep prototype chain to a flat object\n * @param {Object} sourceObj source object\n * @param {Object} [destObj]\n * @param {Function|Boolean} [filter]\n * @param {Function} [propFilter]\n *\n * @returns {Object}\n */\nconst toFlatObject = (sourceObj, destObj, filter, propFilter) => {\n  let props;\n  let i;\n  let prop;\n  const merged = {};\n\n  destObj = destObj || {};\n  // eslint-disable-next-line no-eq-null,eqeqeq\n  if (sourceObj == null) return destObj;\n\n  do {\n    props = Object.getOwnPropertyNames(sourceObj);\n    i = props.length;\n    while (i-- > 0) {\n      prop = props[i];\n      if ((!propFilter || propFilter(prop, sourceObj, destObj)) && !merged[prop]) {\n        destObj[prop] = sourceObj[prop];\n        merged[prop] = true;\n      }\n    }\n    sourceObj = filter !== false && getPrototypeOf(sourceObj);\n  } while (sourceObj && (!filter || filter(sourceObj, destObj)) && sourceObj !== Object.prototype);\n\n  return destObj;\n};\n\n/**\n * Determines whether a string ends with the characters of a specified string\n *\n * @param {String} str\n * @param {String} searchString\n * @param {Number} [position= 0]\n *\n * @returns {boolean}\n */\nconst endsWith = (str, searchString, position) => {\n  str = String(str);\n  if (position === undefined || position > str.length) {\n    position = str.length;\n  }\n  position -= searchString.length;\n  const lastIndex = str.indexOf(searchString, position);\n  return lastIndex !== -1 && lastIndex === position;\n};\n\n/**\n * Returns new array from array like object or null if failed\n *\n * @param {*} [thing]\n *\n * @returns {?Array}\n */\nconst toArray = (thing) => {\n  if (!thing) return null;\n  if (isArray(thing)) return thing;\n  let i = thing.length;\n  if (!Number.isSafeInteger(i) || i < 0 || i > 0xffffffff) return null;\n\n  // Bound the copy by actual indexed properties, including hidden and inherited\n  // members of array-like collections, rather than by the declared length alone.\n  const indexes = new Set();\n  const seen = new Set();\n  let source = thing;\n\n  while (source != null && indexes.size < i) {\n    if (seen.has(source)) return null;\n    seen.add(source);\n\n    const prototype = getPrototypeOf(source);\n    if (isPrototypeBoundary(source, prototype, source === thing)) break;\n\n    Object.getOwnPropertyNames(source).forEach((key) => {\n      const index = +key;\n      if (\n        Number.isInteger(index) &&\n        index >= 0 &&\n        index < i &&\n        String(index) === key &&\n        hasOwnProperty(source, key)\n      ) {\n        indexes.add(index);\n      }\n    });\n    source = prototype;\n  }\n\n  if (indexes.size !== i) return null;\n  const arr = new Array(i);\n  while (i-- > 0) {\n    arr[i] = thing[i];\n  }\n  return arr;\n};\n\n/**\n * Checking if the Uint8Array exists and if it does, it returns a function that checks if the\n * thing passed in is an instance of Uint8Array\n *\n * @param {TypedArray}\n *\n * @returns {Array}\n */\n// eslint-disable-next-line func-names\nconst isTypedArray = ((TypedArray) => {\n  // eslint-disable-next-line func-names\n  return (thing) => {\n    return TypedArray && thing instanceof TypedArray;\n  };\n})(typeof Uint8Array !== 'undefined' && getPrototypeOf(Uint8Array));\n\n/**\n * For each entry in the object, call the function with the key and value.\n *\n * @param {Object<any, any>} obj - The object to iterate over.\n * @param {Function} fn - The function to call for each entry.\n *\n * @returns {void}\n */\nconst forEachEntry = (obj, fn) => {\n  const generator = obj && obj[iterator];\n\n  const _iterator = generator.call(obj);\n\n  let result;\n\n  while ((result = _iterator.next()) && !result.done) {\n    const pair = result.value;\n    fn.call(obj, pair[0], pair[1]);\n  }\n};\n\n/**\n * It takes a regular expression and a string, and returns an array of all the matches\n *\n * @param {string} regExp - The regular expression to match against.\n * @param {string} str - The string to search.\n *\n * @returns {Array<boolean>}\n */\nconst matchAll = (regExp, str) => {\n  let matches;\n  const arr = [];\n\n  while ((matches = regExp.exec(str)) !== null) {\n    arr.push(matches);\n  }\n\n  return arr;\n};\n\n/* Checking if the kindOfTest function returns true when passed an HTMLFormElement. */\nconst isHTMLForm = kindOfTest('HTMLFormElement');\n\nconst toCamelCase = (str) => {\n  return str.toLowerCase().replace(/[-_\\s]([a-z\\d])(\\w*)/g, function replacer(m, p1, p2) {\n    return p1.toUpperCase() + p2;\n  });\n};\n\nconst { propertyIsEnumerable } = Object.prototype;\n\n/**\n * Determine if a value is a RegExp object\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a RegExp object, otherwise false\n */\nconst isRegExp = kindOfTest('RegExp');\n\nconst reduceDescriptors = (obj, reducer) => {\n  const descriptors = Object.getOwnPropertyDescriptors(obj);\n  const reducedDescriptors = {};\n\n  forEach(descriptors, (descriptor, name) => {\n    let ret;\n    if ((ret = reducer(descriptor, name, obj)) !== false) {\n      reducedDescriptors[name] = ret || descriptor;\n    }\n  });\n\n  Object.defineProperties(obj, reducedDescriptors);\n};\n\n/**\n * Makes all methods read-only\n * @param {Object} obj\n */\n\nconst freezeMethods = (obj) => {\n  reduceDescriptors(obj, (descriptor, name) => {\n    // skip restricted props in strict mode\n    if (isFunction(obj) && ['arguments', 'caller', 'callee'].includes(name)) {\n      return false;\n    }\n\n    const value = obj[name];\n\n    if (!isFunction(value)) return;\n\n    descriptor.enumerable = false;\n\n    if ('writable' in descriptor) {\n      descriptor.writable = false;\n      return;\n    }\n\n    if (!descriptor.set) {\n      descriptor.set = () => {\n        throw Error(\"Can not rewrite read-only method '\" + name + \"'\");\n      };\n    }\n  });\n};\n\n/**\n * Converts an array or a delimited string into an object set with values as keys and true as values.\n * Useful for fast membership checks.\n *\n * @param {Array|string} arrayOrString - The array or string to convert.\n * @param {string} delimiter - The delimiter to use if input is a string.\n * @returns {Object} An object with keys from the array or string, values set to true.\n */\nconst toObjectSet = (arrayOrString, delimiter) => {\n  const obj = {};\n\n  const define = (arr) => {\n    arr.forEach((value) => {\n      obj[value] = true;\n    });\n  };\n\n  isArray(arrayOrString) ? define(arrayOrString) : define(String(arrayOrString).split(delimiter));\n\n  return obj;\n};\n\nconst noop = () => {};\n\nconst toFiniteNumber = (value, defaultValue) => {\n  return value != null && Number.isFinite((value = +value)) ? value : defaultValue;\n};\n\n/**\n * If the thing is a FormData object, return true, otherwise return false.\n *\n * @param {unknown} thing - The thing to check.\n *\n * @returns {boolean}\n */\nfunction isSpecCompliantForm(thing) {\n  return !!(\n    thing &&\n    isFunction(thing.append) &&\n    thing[toStringTag] === 'FormData' &&\n    thing[iterator]\n  );\n}\n\n/**\n * Recursively converts an object to a JSON-compatible object, handling circular references and Buffers.\n *\n * @param {Object} obj - The object to convert.\n * @returns {Object} The JSON-compatible object.\n */\nconst toJSONObject = (obj) => {\n  const visited = new WeakSet();\n\n  const visit = (source) => {\n    if (isObject(source)) {\n      if (visited.has(source)) {\n        return;\n      }\n\n      //Buffer check\n      if (isBuffer(source)) {\n        return source;\n      }\n\n      if (!('toJSON' in source)) {\n        // add-on descent / delete-on-ascent: preserves path semantics, so DAG nodes serialise at every occurrence (see #7230).\n        visited.add(source);\n\n        let target;\n\n        if (isSet(source)) {\n          target = [];\n          for (const value of source) {\n            const reducedValue = visit(value);\n            !isUndefined(reducedValue) && target.push(reducedValue);\n          }\n        } else {\n          target = isArray(source) ? [] : {};\n\n          forEach(source, (value, key) => {\n            const reducedValue = visit(value);\n            !isUndefined(reducedValue) && (target[key] = reducedValue);\n          });\n        }\n\n        visited.delete(source);\n\n        return target;\n      }\n    }\n\n    return source;\n  };\n\n  return visit(obj);\n};\n\n/**\n * Determines if a value is an async function.\n *\n * @param {*} thing - The value to test.\n * @returns {boolean} True if value is an async function, otherwise false.\n */\nconst isAsyncFn = kindOfTest('AsyncFunction');\n\n/**\n * Determines if a value is thenable (has then and catch methods).\n *\n * @param {*} thing - The value to test.\n * @returns {boolean} True if value is thenable, otherwise false.\n */\nconst isThenable = (thing) =>\n  thing &&\n  (isObject(thing) || isFunction(thing)) &&\n  isFunction(thing.then) &&\n  isFunction(thing.catch);\n\n// original code\n// https://github.com/DigitalBrainJS/AxiosPromise/blob/16deab13710ec09779922131f3fa5954320f83ab/lib/utils.js#L11-L34\n\n/**\n * Provides a cross-platform setImmediate implementation.\n * Uses native setImmediate if available, otherwise falls back to postMessage or setTimeout.\n *\n * @param {boolean} setImmediateSupported - Whether setImmediate is supported.\n * @param {boolean} postMessageSupported - Whether postMessage is supported.\n * @returns {Function} A function to schedule a callback asynchronously.\n */\nconst _setImmediate = ((setImmediateSupported, postMessageSupported) => {\n  if (setImmediateSupported) {\n    return setImmediate;\n  }\n\n  return postMessageSupported\n    ? ((token, callbacks) => {\n        _global.addEventListener(\n          'message',\n          ({ source, data }) => {\n            if (source === _global && data === token) {\n              callbacks.length && callbacks.shift()();\n            }\n          },\n          false\n        );\n\n        return (cb) => {\n          callbacks.push(cb);\n          _global.postMessage(token, '*');\n        };\n      })(`axios@${Math.random()}`, [])\n    : (cb) => setTimeout(cb);\n})(typeof setImmediate === 'function', isFunction(_global.postMessage));\n\n/**\n * Schedules a microtask or asynchronous callback as soon as possible.\n * Uses queueMicrotask if available, otherwise falls back to process.nextTick or _setImmediate.\n *\n * @type {Function}\n */\nconst asap =\n  typeof queueMicrotask !== 'undefined'\n    ? queueMicrotask.bind(_global)\n    : (typeof process !== 'undefined' && process.nextTick) || _setImmediate;\n\n// *********************\n\nconst isIterable = (thing) => thing != null && isFunction(thing[iterator]);\n\n/**\n * Determine if a value is iterable via an iterator that is NOT sourced solely\n * from a polluted Object.prototype. Use this instead of `isIterable` whenever\n * the iterable comes from untrusted input (e.g. user-supplied header sources),\n * so `Object.prototype[Symbol.iterator] = ...` cannot turn an ordinary object\n * into an attacker-controlled entries iterator.\n *\n * @param {*} thing The value to test\n *\n * @returns {boolean} True if value has a non-polluted iterator\n */\nconst isSafeIterable = (thing) =>\n  thing != null && hasOwnInPrototypeChain(thing, iterator) && isIterable(thing);\n\nexport default {\n  isArray,\n  isArrayBuffer,\n  isBuffer,\n  isFormData,\n  isArrayBufferView,\n  isString,\n  isNumber,\n  isBoolean,\n  isObject,\n  isPlainObject,\n  isEmptyObject,\n  isReadableStream,\n  isRequest,\n  isResponse,\n  isHeaders,\n  isUndefined,\n  isDate,\n  isFile,\n  isReactNativeBlob,\n  isReactNative,\n  isBlob,\n  isRegExp,\n  isFunction,\n  isStream,\n  isURLSearchParams,\n  isTypedArray,\n  isFileList,\n  forEach,\n  merge,\n  extend,\n  trim,\n  stripBOM,\n  inherits,\n  toFlatObject,\n  kindOf,\n  kindOfTest,\n  endsWith,\n  toArray,\n  forEachEntry,\n  matchAll,\n  isHTMLForm,\n  hasOwnProperty,\n  hasOwnProp: hasOwnProperty, // an alias to avoid ESLint no-prototype-builtins detection\n  hasOwnInPrototypeChain,\n  getSafeProp,\n  toSafeFlatObject,\n  reduceDescriptors,\n  freezeMethods,\n  toObjectSet,\n  toCamelCase,\n  noop,\n  toFiniteNumber,\n  findKey,\n  global: _global,\n  isContextDefined,\n  isSpecCompliantForm,\n  toJSONObject,\n  isAsyncFn,\n  isThenable,\n  setImmediate: _setImmediate,\n  asap,\n  isIterable,\n  isSafeIterable,\n};\n","'use strict';\n\nimport utils from '../utils.js';\n\n// RawAxiosHeaders whose duplicates are ignored by node\n// c.f. https://nodejs.org/api/http.html#http_message_headers\nconst ignoreDuplicateOf = utils.toObjectSet([\n  'age',\n  'authorization',\n  'content-length',\n  'content-type',\n  'etag',\n  'expires',\n  'from',\n  'host',\n  'if-modified-since',\n  'if-unmodified-since',\n  'last-modified',\n  'location',\n  'max-forwards',\n  'proxy-authorization',\n  'referer',\n  'retry-after',\n  'user-agent',\n]);\n\n/**\n * Parse headers into an object\n *\n * ```\n * Date: Wed, 27 Aug 2014 08:58:49 GMT\n * Content-Type: application/json\n * Connection: keep-alive\n * Transfer-Encoding: chunked\n * ```\n *\n * @param {String} rawHeaders Headers needing to be parsed\n *\n * @returns {Object} Headers parsed into an object\n */\nexport default (rawHeaders) => {\n  // Header names are data, including __proto__; avoid inherited setters.\n  const parsed = Object.create(null);\n  let key;\n  let val;\n  let i;\n\n  rawHeaders &&\n    rawHeaders.split('\\n').forEach(function parser(line) {\n      i = line.indexOf(':');\n      key = line.substring(0, i).trim().toLowerCase();\n      val = line.substring(i + 1).trim();\n\n      const hasKey = utils.hasOwnProp(parsed, key);\n\n      if (!key || (hasKey && utils.hasOwnProp(ignoreDuplicateOf, key))) {\n        return;\n      }\n\n      if (key === 'set-cookie') {\n        if (hasKey) {\n          parsed[key].push(val);\n        } else {\n          parsed[key] = [val];\n        }\n      } else {\n        parsed[key] = hasKey ? parsed[key] + ', ' + val : val;\n      }\n    });\n\n  return parsed;\n};\n","'use strict';\n\nimport utils from '../utils.js';\n\nfunction trimSPorHTAB(str) {\n  let start = 0;\n  let end = str.length;\n\n  while (start < end) {\n    const code = str.charCodeAt(start);\n\n    if (code !== 0x09 && code !== 0x20) {\n      break;\n    }\n\n    start += 1;\n  }\n\n  while (end > start) {\n    const code = str.charCodeAt(end - 1);\n\n    if (code !== 0x09 && code !== 0x20) {\n      break;\n    }\n\n    end -= 1;\n  }\n\n  return start === 0 && end === str.length ? str : str.slice(start, end);\n}\n\n// The control-code ranges are intentional: header sanitization strips C0/DEL bytes.\n// eslint-disable-next-line no-control-regex\nconst INVALID_UNICODE_HEADER_VALUE_CHARS = new RegExp('[\\\\u0000-\\\\u0008\\\\u000a-\\\\u001f\\\\u007f]+', 'g');\n// eslint-disable-next-line no-control-regex\nconst INVALID_BYTE_STRING_HEADER_VALUE_CHARS = new RegExp('[^\\\\u0009\\\\u0020-\\\\u007e\\\\u0080-\\\\u00ff]+', 'g');\n\nfunction sanitizeValue(value, invalidChars) {\n  if (utils.isArray(value)) {\n    return value.map((item) => sanitizeValue(item, invalidChars));\n  }\n\n  return trimSPorHTAB(String(value).replace(invalidChars, ''));\n}\n\nexport const sanitizeHeaderValue = (value) =>\n  sanitizeValue(value, INVALID_UNICODE_HEADER_VALUE_CHARS);\n\nexport const sanitizeByteStringHeaderValue = (value) =>\n  sanitizeValue(value, INVALID_BYTE_STRING_HEADER_VALUE_CHARS);\n\nexport function toByteStringHeaderObject(headers) {\n  const byteStringHeaders = Object.create(null);\n\n  utils.forEach(headers.toJSON(), (value, header) => {\n    byteStringHeaders[header] = sanitizeByteStringHeaderValue(value);\n  });\n\n  return byteStringHeaders;\n}\n","'use strict';\n\nimport utils from '../utils.js';\nimport parseHeaders from '../helpers/parseHeaders.js';\nimport { sanitizeHeaderValue } from '../helpers/sanitizeHeaderValue.js';\n\nconst $internals = Symbol('internals');\n\nfunction normalizeHeader(header) {\n  return header && String(header).trim().toLowerCase();\n}\n\nfunction normalizeValue(value) {\n  if (value === false || value == null) {\n    return value;\n  }\n\n  return utils.isArray(value) ? value.map(normalizeValue) : sanitizeHeaderValue(String(value));\n}\n\nfunction parseTokens(str) {\n  const tokens = Object.create(null);\n  const tokensRE = /([^\\s,;=]+)\\s*(?:=\\s*([^,;]+))?/g;\n  let match;\n\n  while ((match = tokensRE.exec(str))) {\n    tokens[match[1]] = match[2];\n  }\n\n  return tokens;\n}\n\nconst parameterNameRE = /^[!#$%&'*+\\-.^_`|~0-9A-Za-z]+$/;\n\nfunction trimOWS(value) {\n  let start = 0;\n  let end = value.length;\n\n  while (start < end) {\n    const code = value.charCodeAt(start);\n\n    if (code !== 0x09 && code !== 0x20) {\n      break;\n    }\n\n    start += 1;\n  }\n\n  while (end > start) {\n    const code = value.charCodeAt(end - 1);\n\n    if (code !== 0x09 && code !== 0x20) {\n      break;\n    }\n\n    end -= 1;\n  }\n\n  return start === 0 && end === value.length ? value : value.slice(start, end);\n}\n\nfunction decodeQuotedString(value) {\n  const last = value.length - 1;\n\n  if (last < 1 || value.charCodeAt(0) !== 0x22 || value.charCodeAt(last) !== 0x22) {\n    return value;\n  }\n\n  let decoded = '';\n\n  for (let i = 1; i < last; i++) {\n    const code = value.charCodeAt(i);\n\n    if (code === 0x22) {\n      return value;\n    }\n\n    if (code === 0x5c) {\n      i += 1;\n\n      if (i >= last) {\n        return value;\n      }\n    }\n\n    decoded += value[i];\n  }\n\n  return decoded;\n}\n\nfunction parseParameters(value) {\n  const parameters = Object.create(null);\n  const str = String(value);\n  let start = 0;\n  let quoted = false;\n  let escaped = false;\n\n  function parseParameter(end) {\n    const part = trimOWS(str.slice(start, end));\n    const equals = part.indexOf('=');\n\n    if (equals < 1) {\n      return;\n    }\n\n    const name = trimOWS(part.slice(0, equals));\n\n    if (!parameterNameRE.test(name)) {\n      return;\n    }\n\n    const normalizedName = name.toLowerCase();\n\n    if (\n      normalizedName === '__proto__' ||\n      normalizedName === 'constructor' ||\n      normalizedName === 'prototype'\n    ) {\n      return;\n    }\n\n    const parameterValue = trimOWS(part.slice(equals + 1));\n    parameters[normalizedName] = decodeQuotedString(parameterValue);\n  }\n\n  for (let i = 0; i < str.length; i++) {\n    const code = str.charCodeAt(i);\n\n    if (quoted) {\n      if (escaped) {\n        escaped = false;\n      } else if (code === 0x5c) {\n        escaped = true;\n      } else if (code === 0x22) {\n        quoted = false;\n      }\n    } else if (code === 0x22) {\n      quoted = true;\n    } else if (code === 0x2c || code === 0x3b) {\n      parseParameter(i);\n      start = i + 1;\n    }\n  }\n\n  parseParameter(str.length);\n\n  return parameters;\n}\n\nconst isValidHeaderName = (str) => /^[-_a-zA-Z0-9^`|~,!#$%&'*+.]+$/.test(str.trim());\n\n// `__proto__` is a valid field name, and the one name the uppercase mapping at\n// the bottom of this file cannot reach: it is inherited from Object.prototype\n// instead of being declared on AxiosHeaders.prototype, so `self.__proto__ = v`\n// runs the inherited setter. That silently discards the header, and an array\n// value replaces the instance prototype, taking every method with it.\n// Store it under the same kind of case variant that mapping uses for `set` and\n// `constructor`. Header lookup is caseless, so it reads back under either\n// spelling, and no own `__proto__` slot is ever created for a later\n// `Object.assign` to copy onto a plain object through the same setter.\nconst PROTO_HEADER_SLOT = '__Proto__';\n\nconst headerSlot = (name) => (name === '__proto__' ? PROTO_HEADER_SLOT : name);\n\nfunction matchHeaderValue(context, value, header, filter, isHeaderNameFilter) {\n  if (utils.isFunction(filter)) {\n    return filter.call(context, value, header);\n  }\n\n  if (isHeaderNameFilter) {\n    value = header;\n  }\n\n  if (!utils.isString(value)) return;\n\n  if (utils.isString(filter)) {\n    return value.indexOf(filter) !== -1;\n  }\n\n  if (utils.isRegExp(filter)) {\n    return filter.test(value);\n  }\n}\n\nfunction formatHeader(header) {\n  return header\n    .trim()\n    .toLowerCase()\n    .replace(/([a-z\\d])(\\w*)/g, (w, char, str) => {\n      return char.toUpperCase() + str;\n    });\n}\n\nfunction buildAccessors(obj, header) {\n  const accessorName = utils.toCamelCase(' ' + header);\n\n  ['get', 'set', 'has'].forEach((methodName) => {\n    Object.defineProperty(obj, methodName + accessorName, {\n      // Null-proto descriptor so a polluted Object.prototype.get cannot turn\n      // this data descriptor into an accessor descriptor on the way in.\n      __proto__: null,\n      value: function (arg1, arg2, arg3) {\n        return this[methodName].call(this, header, arg1, arg2, arg3);\n      },\n      configurable: true,\n    });\n  });\n}\n\nclass AxiosHeaders {\n  constructor(headers) {\n    headers && this.set(headers);\n  }\n\n  set(header, valueOrRewrite, rewrite) {\n    const self = this;\n\n    function setHeader(_value, _header, _rewrite) {\n      const lHeader = normalizeHeader(_header);\n\n      if (!lHeader) {\n        return;\n      }\n\n      const key = utils.findKey(self, lHeader);\n\n      if (\n        !key ||\n        self[key] === undefined ||\n        _rewrite === true ||\n        (_rewrite === undefined && self[key] !== false)\n      ) {\n        self[headerSlot(key || _header)] = normalizeValue(_value);\n      }\n    }\n\n    const setHeaders = (headers, _rewrite) =>\n      utils.forEach(headers, (_value, _header) => setHeader(_value, _header, _rewrite));\n\n    if (utils.isPlainObject(header) || header instanceof this.constructor) {\n      setHeaders(header, valueOrRewrite);\n    } else if (utils.isString(header) && (header = header.trim()) && !isValidHeaderName(header)) {\n      setHeaders(parseHeaders(header), valueOrRewrite);\n    } else if (utils.isObject(header) && utils.isSafeIterable(header)) {\n      let obj = Object.create(null),\n        dest,\n        key;\n      for (const entry of header) {\n        if (!utils.isArray(entry)) {\n          throw new TypeError('Object iterator must return a key-value pair');\n        }\n\n        key = entry[0];\n\n        if (utils.hasOwnProp(obj, key)) {\n          dest = obj[key];\n          obj[key] = utils.isArray(dest) ? [...dest, entry[1]] : [dest, entry[1]];\n        } else {\n          obj[key] = entry[1];\n        }\n      }\n\n      setHeaders(obj, valueOrRewrite);\n    } else {\n      header != null && setHeader(valueOrRewrite, header, rewrite);\n    }\n\n    return this;\n  }\n\n  get(header, parser) {\n    header = normalizeHeader(header);\n\n    if (header) {\n      const key = utils.findKey(this, header);\n\n      if (key) {\n        const value = this[key];\n\n        if (!parser) {\n          return value;\n        }\n\n        if (parser === true) {\n          return parseTokens(value);\n        }\n\n        if (utils.isFunction(parser)) {\n          return parser.call(this, value, key);\n        }\n\n        if (utils.isRegExp(parser)) {\n          return parser.exec(value);\n        }\n\n        throw new TypeError('parser must be boolean|regexp|function');\n      }\n    }\n  }\n\n  has(header, matcher) {\n    header = normalizeHeader(header);\n\n    if (header) {\n      const key = utils.findKey(this, header);\n\n      return !!(\n        key &&\n        this[key] !== undefined &&\n        (!matcher || matchHeaderValue(this, this[key], key, matcher))\n      );\n    }\n\n    return false;\n  }\n\n  delete(header, matcher) {\n    const self = this;\n    let deleted = false;\n\n    function deleteHeader(_header) {\n      _header = normalizeHeader(_header);\n\n      if (_header) {\n        const key = utils.findKey(self, _header);\n\n        if (key && (!matcher || matchHeaderValue(self, self[key], key, matcher))) {\n          delete self[key];\n\n          deleted = true;\n        }\n      }\n    }\n\n    if (utils.isArray(header)) {\n      header.forEach(deleteHeader);\n    } else {\n      deleteHeader(header);\n    }\n\n    return deleted;\n  }\n\n  clear(matcher) {\n    const keys = Object.keys(this);\n    let i = keys.length;\n    let deleted = false;\n\n    while (i--) {\n      const key = keys[i];\n      if (!matcher || matchHeaderValue(this, this[key], key, matcher, true)) {\n        delete this[key];\n        deleted = true;\n      }\n    }\n\n    return deleted;\n  }\n\n  normalize(format) {\n    const self = this;\n    const headers = Object.create(null);\n\n    utils.forEach(this, (value, header) => {\n      const key = utils.findKey(headers, header);\n\n      if (key) {\n        self[key] = normalizeValue(value);\n        delete self[header];\n        return;\n      }\n\n      const normalized = headerSlot(format ? formatHeader(header) : String(header).trim());\n\n      if (normalized !== header) {\n        delete self[header];\n      }\n\n      self[normalized] = normalizeValue(value);\n\n      headers[normalized] = true;\n    });\n\n    return this;\n  }\n\n  concat(...targets) {\n    return this.constructor.concat(this, ...targets);\n  }\n\n  toJSON(asStrings) {\n    const obj = Object.create(null);\n\n    utils.forEach(this, (value, header) => {\n      value != null &&\n        value !== false &&\n        (obj[header] = asStrings && utils.isArray(value) ? value.join(', ') : value);\n    });\n\n    return obj;\n  }\n\n  [Symbol.iterator]() {\n    return Object.entries(this.toJSON())[Symbol.iterator]();\n  }\n\n  toString() {\n    return Object.entries(this.toJSON())\n      .map(([header, value]) => header + ': ' + value)\n      .join('\\n');\n  }\n\n  getSetCookie() {\n    const value = this.get('set-cookie');\n    return utils.isArray(value) ? value : value == null || value === false ? [] : [value];\n  }\n\n  get [Symbol.toStringTag]() {\n    return 'AxiosHeaders';\n  }\n\n  static from(thing) {\n    return thing instanceof this ? thing : new this(thing);\n  }\n\n  static parseParameters(value) {\n    return parseParameters(value);\n  }\n\n  static concat(first, ...targets) {\n    const computed = new this(first);\n\n    targets.forEach((target) => computed.set(target));\n\n    return computed;\n  }\n\n  static accessor(header) {\n    const internals =\n      (this[$internals] =\n      this[$internals] =\n        {\n          accessors: {},\n        });\n\n    const accessors = internals.accessors;\n    const prototype = this.prototype;\n\n    function defineAccessor(_header) {\n      const lHeader = normalizeHeader(_header);\n\n      if (!accessors[lHeader]) {\n        buildAccessors(prototype, _header);\n        accessors[lHeader] = true;\n      }\n    }\n\n    utils.isArray(header) ? header.forEach(defineAccessor) : defineAccessor(header);\n\n    return this;\n  }\n}\n\nAxiosHeaders.accessor([\n  'Content-Type',\n  'Content-Length',\n  'Accept',\n  'Accept-Encoding',\n  'User-Agent',\n  'Authorization',\n]);\n\n// reserved names hotfix\nutils.reduceDescriptors(AxiosHeaders.prototype, ({ value }, key) => {\n  let mapped = key[0].toUpperCase() + key.slice(1); // map `set` => `Set`\n  return {\n    get: () => value,\n    set(headerValue) {\n      this[mapped] = headerValue;\n    },\n  };\n});\n\nutils.freezeMethods(AxiosHeaders);\n\nexport default AxiosHeaders;\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosHeaders from './AxiosHeaders.js';\n\nexport const REDACTED = '[REDACTED ****]';\n\nfunction hasOwnOrPrototypeToJSON(source) {\n  if (utils.hasOwnProp(source, 'toJSON')) {\n    return true;\n  }\n\n  let prototype = Object.getPrototypeOf(source);\n\n  while (prototype && prototype !== Object.prototype) {\n    if (utils.hasOwnProp(prototype, 'toJSON')) {\n      return true;\n    }\n\n    prototype = Object.getPrototypeOf(prototype);\n  }\n\n  return false;\n}\n\n// Build a plain-object snapshot of `config` and replace the value of any key\n// (case-insensitive) listed in `redactKeys` with REDACTED. Walks through arrays\n// and AxiosHeaders, and short-circuits on circular references.\nfunction redactConfig(config, redactKeys) {\n  const lowerKeys = new Set(redactKeys.map((k) => String(k).toLowerCase()));\n  const seen = [];\n\n  const visit = (source) => {\n    if (source === null || typeof source !== 'object') return source;\n    if (utils.isBuffer(source)) return source;\n    if (seen.indexOf(source) !== -1) return undefined;\n\n    if (source instanceof AxiosHeaders) {\n      source = source.toJSON();\n    }\n\n    seen.push(source);\n\n    let result;\n    if (utils.isArray(source)) {\n      result = [];\n      source.forEach((v, i) => {\n        const reducedValue = visit(v);\n        if (!utils.isUndefined(reducedValue)) {\n          result[i] = reducedValue;\n        }\n      });\n    } else {\n      if (!utils.isPlainObject(source) && hasOwnOrPrototypeToJSON(source)) {\n        seen.pop();\n        return source;\n      }\n\n      result = Object.create(null);\n      for (const [key, value] of Object.entries(source)) {\n        const reducedValue = lowerKeys.has(key.toLowerCase()) ? REDACTED : visit(value);\n        if (!utils.isUndefined(reducedValue)) {\n          result[key] = reducedValue;\n        }\n      }\n    }\n\n    seen.pop();\n    return result;\n  };\n\n  return visit(config);\n}\n\nfunction stringifySafely(value) {\n  try {\n    return String(value);\n  } catch (err) {\n    return '';\n  }\n}\n\nfunction aggregateErrorMessage(error) {\n  const message = error.errors\n    .map((entry) => {\n      try {\n        return entry && entry.message ? stringifySafely(entry.message) : stringifySafely(entry);\n      } catch (err) {\n        return '';\n      }\n    })\n    .filter(Boolean)\n    .join('; ');\n\n  return message || error.name || 'AggregateError';\n}\n\n// Shared with `Axios.prototype.request`, which splices the reconstructed\n// caller frames in ahead of this marker.\nexport const CAUSED_BY_SEPARATOR = '\\nCaused by: ';\nconst $causeStack = Symbol('causeStack');\n\n// Match the section we appended, not marker-like text in an error message or\n// a replacement stack supplied by the caller. Do not re-read the cause's stack.\nexport function getCauseStackIndex(error, stack) {\n  const causeStack = utils.hasOwnProp(error, $causeStack) && error[$causeStack];\n\n  return causeStack && stack.endsWith(causeStack) ? stack.length - causeStack.length : -1;\n}\n\n/**\n * Append the stack of a wrapped error to `target.stack`.\n *\n * `cause` already exposes the original error for tooling that walks the standard\n * cause chain, but many error reporters read `stack` and nothing else. Inlining\n * the wrapped stack there means those reporters surface the underlying failure\n * instead of the axios frames that normalized it (see #6670).\n *\n * Every read is defensive: a custom `Error.prepareStackTrace` hook, a runtime\n * without stack support, or a replaced `stack` property can leave the value\n * missing, non-string, or read-only, and normalizing an error must not throw\n * because of that.\n *\n * @param {Error} target The AxiosError being built.\n * @param {Error} source The error being wrapped.\n *\n * @returns {void}\n */\nfunction appendCauseStack(target, source) {\n  try {\n    const sourceStack = source && source.stack;\n\n    if (typeof sourceStack !== 'string' || !sourceStack) {\n      return;\n    }\n\n    const targetStack = target.stack;\n\n    if (typeof targetStack !== 'string' || !targetStack) {\n      return;\n    }\n\n    // Each call to `from()` creates a fresh target. Re-wrapping includes the\n    // previous stack verbatim, adding one cause section per wrap.\n    const causeStack = CAUSED_BY_SEPARATOR + sourceStack;\n    target.stack = targetStack + causeStack;\n    Object.defineProperty(target, $causeStack, { __proto__: null, value: causeStack });\n  } catch (e) {\n    // Ignore failures from custom stack hooks or un-writable stack properties.\n  }\n}\n\nclass AxiosError extends Error {\n  static from(error, code, config, request, response, customProps) {\n    // `AggregateError` (thrown by Node on dual-stack/Happy-Eyeballs connection\n    // failures) has an empty `message`; its detail lives in `errors[]`. Without\n    // this, the wrapped error surfaces with a blank message (see #6721).\n    let message = error.message;\n    if (!message && utils.isArray(error.errors) && error.errors.length) {\n      message = aggregateErrorMessage(error);\n    }\n\n    const axiosError = new AxiosError(message, code || error.code, config, request, response);\n    // Match native `Error` `cause` semantics: non-enumerable. The wrapped\n    // error often carries circular internals (sockets, requests, agents), so\n    // an enumerable `cause` makes structured loggers (pino/winston) and any\n    // own-property walk throw \"Converting circular structure to JSON\".\n    // Regression from #6982; see #7205. `__proto__: null` mirrors the\n    // `message` descriptor below (prototype-pollution-safe descriptor).\n    Object.defineProperty(axiosError, 'cause', {\n      __proto__: null,\n      value: error,\n      writable: true,\n      enumerable: false,\n      configurable: true,\n    });\n    axiosError.name = error.name;\n\n    // Inline the wrapped stack for reporters that read only `stack`; the `cause`\n    // property above already covers cause-aware tooling.\n    appendCauseStack(axiosError, error);\n\n    // Preserve status from the original error if not already set from response\n    if (error.status != null && axiosError.status == null) {\n      axiosError.status = error.status;\n    }\n\n    customProps && Object.assign(axiosError, customProps);\n    return axiosError;\n  }\n\n  /**\n   * Create an Error with the specified message, config, error code, request and response.\n   *\n   * @param {string} message The error message.\n   * @param {string} [code] The error code (for example, 'ECONNABORTED').\n   * @param {Object} [config] The config.\n   * @param {Object} [request] The request.\n   * @param {Object} [response] The response.\n   *\n   * @returns {Error} The created error.\n   */\n  constructor(message, code, config, request, response) {\n    super(message);\n\n    // Make message enumerable to maintain backward compatibility\n    // The native Error constructor sets message as non-enumerable,\n    // but axios < v1.13.3 had it as enumerable\n    Object.defineProperty(this, 'message', {\n      // Null-proto descriptor so a polluted Object.prototype.get cannot turn\n      // this data descriptor into an accessor descriptor on the way in.\n      __proto__: null,\n      value: message,\n      enumerable: true,\n      writable: true,\n      configurable: true,\n    });\n\n    this.name = 'AxiosError';\n    this.isAxiosError = true;\n    code && (this.code = code);\n    config && (this.config = config);\n    request && (this.request = request);\n    if (response) {\n      this.response = response;\n      this.status = response.status;\n    }\n  }\n\n  toJSON() {\n    // Opt-in redaction: when the request config carries a `redact` array, the\n    // value of any matching key (case-insensitive, at any depth) is replaced\n    // with REDACTED in the serialized snapshot. Undefined or empty leaves the\n    // existing serialization behavior unchanged.\n    const config = this.config;\n    const redactKeys = config && utils.hasOwnProp(config, 'redact') ? config.redact : undefined;\n    const serializedConfig =\n      utils.isArray(redactKeys) && redactKeys.length > 0\n        ? redactConfig(config, redactKeys)\n        : utils.toJSONObject(config);\n\n    return {\n      // Standard\n      message: this.message,\n      name: this.name,\n      // Microsoft\n      description: this.description,\n      number: this.number,\n      // Mozilla\n      fileName: this.fileName,\n      lineNumber: this.lineNumber,\n      columnNumber: this.columnNumber,\n      stack: this.stack,\n      // Axios\n      config: serializedConfig,\n      code: this.code,\n      status: this.status,\n    };\n  }\n}\n\n// This can be changed to static properties as soon as the parser options in .eslint.cjs are updated.\nAxiosError.ERR_BAD_OPTION_VALUE = 'ERR_BAD_OPTION_VALUE';\nAxiosError.ERR_BAD_OPTION = 'ERR_BAD_OPTION';\nAxiosError.ECONNABORTED = 'ECONNABORTED';\nAxiosError.ETIMEDOUT = 'ETIMEDOUT';\nAxiosError.ECONNREFUSED = 'ECONNREFUSED';\nAxiosError.ERR_NETWORK = 'ERR_NETWORK';\nAxiosError.ERR_FR_TOO_MANY_REDIRECTS = 'ERR_FR_TOO_MANY_REDIRECTS';\nAxiosError.ERR_DEPRECATED = 'ERR_DEPRECATED';\nAxiosError.ERR_BAD_RESPONSE = 'ERR_BAD_RESPONSE';\nAxiosError.ERR_BAD_REQUEST = 'ERR_BAD_REQUEST';\nAxiosError.ERR_CANCELED = 'ERR_CANCELED';\nAxiosError.ERR_NOT_SUPPORT = 'ERR_NOT_SUPPORT';\nAxiosError.ERR_INVALID_URL = 'ERR_INVALID_URL';\nAxiosError.ERR_FORM_DATA_DEPTH_EXCEEDED = 'ERR_FORM_DATA_DEPTH_EXCEEDED';\n\nexport default AxiosError;\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosError from '../core/AxiosError.js';\n// temporary hotfix to avoid circular references until AxiosURLSearchParams is refactored\nimport PlatformFormData from '../platform/node/classes/FormData.js';\nimport PlatformBuffer from '../platform/node/classes/Buffer.js';\n\n// Default nesting limit shared with the inverse transform (formDataToJSON) so\n// the FormData <-> JSON round-trip stays symmetric.\nexport const DEFAULT_FORM_DATA_MAX_DEPTH = 100;\n\n/**\n * Determines if the given thing is a array or js object.\n *\n * @param {string} thing - The object or array to be visited.\n *\n * @returns {boolean}\n */\nfunction isVisitable(thing) {\n  return utils.isPlainObject(thing) || utils.isArray(thing);\n}\n\n/**\n * It removes the brackets from the end of a string\n *\n * @param {string} key - The key of the parameter.\n *\n * @returns {string} the key without the brackets.\n */\nfunction removeBrackets(key) {\n  return utils.endsWith(key, '[]') ? key.slice(0, -2) : key;\n}\n\n/**\n * It takes a path, a key, and a boolean, and returns a string\n *\n * @param {string} path - The path to the current key.\n * @param {string} key - The key of the current object being iterated over.\n * @param {string} dots - If true, the key will be rendered with dots instead of brackets.\n *\n * @returns {string} The path to the current key.\n */\nfunction renderKey(path, key, dots) {\n  if (!path) return key;\n  return path\n    .concat(key)\n    .map(function each(token, i) {\n      // eslint-disable-next-line no-param-reassign\n      token = removeBrackets(token);\n      return !dots && i ? '[' + token + ']' : token;\n    })\n    .join(dots ? '.' : '');\n}\n\n/**\n * If the array is an array and none of its elements are visitable, then it's a flat array.\n *\n * @param {Array<any>} arr - The array to check\n *\n * @returns {boolean}\n */\nfunction isFlatArray(arr) {\n  return utils.isArray(arr) && !arr.some(isVisitable);\n}\n\nconst predicates = utils.toFlatObject(utils, {}, null, function filter(prop) {\n  return /^is[A-Z]/.test(prop);\n});\n\n/**\n * Convert a data object to FormData\n *\n * @param {Object} obj\n * @param {?Object} [formData]\n * @param {?Object} [options]\n * @param {Function} [options.visitor]\n * @param {Boolean} [options.metaTokens = true]\n * @param {Boolean} [options.dots = false]\n * @param {?Boolean} [options.indexes = false]\n *\n * @returns {Object}\n **/\n\n/**\n * It converts an object into a FormData object\n *\n * @param {Object<any, any>} obj - The object to convert to form data.\n * @param {string} formData - The FormData object to append to.\n * @param {Object<string, any>} options\n *\n * @returns\n */\nfunction toFormData(obj, formData, options) {\n  if (!utils.isObject(obj)) {\n    throw new TypeError('target must be an object');\n  }\n\n  // eslint-disable-next-line no-param-reassign\n  formData = formData || new (PlatformFormData || FormData)();\n\n  const option = (name, fallback) => {\n    const value = utils.getSafeProp(options, name);\n    return utils.isUndefined(value) ? fallback : value;\n  };\n\n  const metaTokens = option('metaTokens', true);\n  // eslint-disable-next-line no-use-before-define\n  const visitor = option('visitor') || defaultVisitor;\n  const dots = option('dots', false);\n  const indexes = option('indexes', false);\n  const _Blob = option('Blob') || (typeof Blob !== 'undefined' && Blob);\n  const maxDepth = option('maxDepth', DEFAULT_FORM_DATA_MAX_DEPTH);\n  const useBlob = _Blob && utils.isSpecCompliantForm(formData);\n  const stack = [];\n\n  if (!utils.isFunction(visitor)) {\n    throw new TypeError('visitor must be a function');\n  }\n\n  function convertValue(value) {\n    if (value === null) return '';\n\n    if (utils.isDate(value)) {\n      return value.toISOString();\n    }\n\n    if (utils.isBoolean(value)) {\n      return value.toString();\n    }\n\n    if (!useBlob && utils.isBlob(value)) {\n      throw new AxiosError('Blob is not supported. Use a Buffer instead.');\n    }\n\n    if (utils.isArrayBuffer(value) || utils.isTypedArray(value)) {\n      if (useBlob && typeof _Blob === 'function') {\n        return new _Blob([value]);\n      }\n      if (PlatformBuffer && PlatformBuffer.isBufferAvailable()) {\n        return PlatformBuffer.from(value);\n      }\n      throw new AxiosError(\n        'Blob is not supported. Use a Buffer instead.',\n        AxiosError.ERR_NOT_SUPPORT\n      );\n    }\n\n    return value;\n  }\n\n  function throwIfMaxDepthExceeded(depth) {\n    if (depth > maxDepth) {\n      throw new AxiosError(\n        'Object is too deeply nested (' + depth + ' levels). Max depth: ' + maxDepth,\n        AxiosError.ERR_FORM_DATA_DEPTH_EXCEEDED\n      );\n    }\n  }\n\n  function stringifyWithDepthLimit(value, depth) {\n    if (maxDepth === Infinity) {\n      return JSON.stringify(value);\n    }\n\n    const ancestors = [];\n\n    return JSON.stringify(value, function limitDepth(_key, currentValue) {\n      if (!utils.isObject(currentValue)) {\n        return currentValue;\n      }\n\n      while (ancestors.length && ancestors[ancestors.length - 1] !== this) {\n        ancestors.pop();\n      }\n\n      ancestors.push(currentValue);\n      throwIfMaxDepthExceeded(depth + ancestors.length - 1);\n\n      return currentValue;\n    });\n  }\n\n  /**\n   * Default visitor.\n   *\n   * @param {*} value\n   * @param {String|Number} key\n   * @param {Array<String|Number>} path\n   * @this {FormData}\n   *\n   * @returns {boolean} return true to visit the each prop of the value recursively\n   */\n  function defaultVisitor(value, key, path) {\n    let arr = value;\n\n    if (utils.isReactNative(formData) && utils.isReactNativeBlob(value)) {\n      formData.append(renderKey(path, key, dots), convertValue(value));\n      return false;\n    }\n\n    if (value && !path && typeof value === 'object') {\n      if (utils.endsWith(key, '{}')) {\n        // eslint-disable-next-line no-param-reassign\n        key = metaTokens ? key : key.slice(0, -2);\n        // eslint-disable-next-line no-param-reassign\n        value = stringifyWithDepthLimit(value, 1);\n      } else if (\n        (utils.isArray(value) && isFlatArray(value)) ||\n        ((utils.isFileList(value) || utils.endsWith(key, '[]')) && (arr = utils.toArray(value)))\n      ) {\n        // eslint-disable-next-line no-param-reassign\n        key = removeBrackets(key);\n\n        arr.forEach(function each(el, index) {\n          !(utils.isUndefined(el) || el === null) &&\n            formData.append(\n              // eslint-disable-next-line no-nested-ternary\n              indexes === true\n                ? renderKey([key], index, dots)\n                : indexes === null\n                  ? key\n                  : key + '[]',\n              convertValue(el)\n            );\n        });\n        return false;\n      }\n    }\n\n    if (isVisitable(value)) {\n      return true;\n    }\n\n    formData.append(renderKey(path, key, dots), convertValue(value));\n\n    return false;\n  }\n\n  const exposedHelpers = Object.assign(predicates, {\n    defaultVisitor,\n    convertValue,\n    isVisitable,\n  });\n\n  function build(value, path, depth = 0) {\n    if (utils.isUndefined(value)) return;\n\n    throwIfMaxDepthExceeded(depth);\n\n    if (stack.indexOf(value) !== -1) {\n      throw new Error('Circular reference detected in ' + path.join('.'));\n    }\n\n    stack.push(value);\n\n    utils.forEach(value, function each(el, key) {\n      const result =\n        !(utils.isUndefined(el) || el === null) &&\n        visitor.call(formData, el, utils.isString(key) ? key.trim() : key, path, exposedHelpers);\n\n      if (result === true) {\n        build(el, path ? path.concat(key) : [key], depth + 1);\n      }\n    });\n\n    stack.pop();\n  }\n\n  if (!utils.isObject(obj)) {\n    throw new TypeError('data must be an object');\n  }\n\n  build(obj);\n\n  return formData;\n}\n\nexport default toFormData;\n","'use strict';\n\nimport toFormData from './toFormData.js';\n\n/**\n * It encodes a string by replacing all characters that are not in the unreserved set with\n * their percent-encoded equivalents\n *\n * @param {string} str - The string to encode.\n *\n * @returns {string} The encoded string.\n */\nfunction encode(str) {\n  const charMap = {\n    '!': '%21',\n    \"'\": '%27',\n    '(': '%28',\n    ')': '%29',\n    '~': '%7E',\n    '%20': '+',\n  };\n  return encodeURIComponent(str).replace(/[!'()~]|%20/g, function replacer(match) {\n    return charMap[match];\n  });\n}\n\n/**\n * It takes a params object and converts it to a FormData object\n *\n * @param {Object<string, any>} params - The parameters to be converted to a FormData object.\n * @param {Object<string, any>} options - The options object passed to the Axios constructor.\n *\n * @returns {void}\n */\nfunction AxiosURLSearchParams(params, options) {\n  this._pairs = [];\n\n  params && toFormData(params, this, options);\n}\n\nconst prototype = AxiosURLSearchParams.prototype;\n\nprototype.append = function append(name, value) {\n  this._pairs.push([name, value]);\n};\n\nprototype.toString = function toString(encoder) {\n  const _encode = encoder\n    ? (value) => encoder.call(this, value, encode)\n    : encode;\n\n  return this._pairs\n    .map(function each(pair) {\n      return _encode(pair[0]) + '=' + _encode(pair[1]);\n    }, '')\n    .join('&');\n};\n\nexport default AxiosURLSearchParams;\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosURLSearchParams from './AxiosURLSearchParams.js';\n\n/**\n * It replaces URL-encoded forms of `:`, `$`, `,`, and spaces with\n * their plain counterparts (`:`, `$`, `,`, `+`).\n *\n * @param {string} val The value to be encoded.\n *\n * @returns {string} The encoded value.\n */\nexport function encode(val) {\n  return encodeURIComponent(val)\n    .replace(/%3A/gi, ':')\n    .replace(/%24/g, '$')\n    .replace(/%2C/gi, ',')\n    .replace(/%20/g, '+');\n}\n\n/**\n * Build a URL by appending params to the end\n *\n * @param {string} url The base of the url (e.g., http://www.google.com)\n * @param {object} [params] The params to be appended\n * @param {?(object|Function)} options\n *\n * @returns {string} The formatted url\n */\nexport default function buildURL(url, params, options) {\n  if (!params) {\n    return url;\n  }\n  url = url || '';\n\n  const _options = utils.isFunction(options)\n    ? {\n        serialize: options,\n      }\n    : options;\n\n  // Read serializer options pollution-safely: own properties and methods on a\n  // class/template prototype are honored, but values injected onto a polluted\n  // Object.prototype are ignored.\n  const _encode = utils.getSafeProp(_options, 'encode') || encode;\n  const serializeFn = utils.getSafeProp(_options, 'serialize');\n\n  let serializedParams;\n\n  if (serializeFn) {\n    serializedParams = serializeFn(params, _options);\n  } else {\n    serializedParams = utils.isURLSearchParams(params)\n      ? params.toString()\n      : new AxiosURLSearchParams(params, _options).toString(_encode);\n  }\n\n  if (serializedParams) {\n    const hashmarkIndex = url.indexOf('#');\n\n    if (hashmarkIndex !== -1) {\n      url = url.slice(0, hashmarkIndex);\n    }\n    url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams;\n  }\n\n  return url;\n}\n","'use strict';\n\nimport utils from '../utils.js';\n\nconst $internals = Symbol('internals');\n\n// `handlers` is public and may be replaced with a nullish value by user code;\n// `clear()` has always tolerated that. Treat it as an empty stack rather than\n// dereferencing it.\nfunction countHandlers(handlers) {\n  return handlers ? handlers.length : 0;\n}\n\nfunction trimHandlers(handlers) {\n  if (!handlers) {\n    return;\n  }\n\n  while (handlers.length && handlers[handlers.length - 1] === null) {\n    handlers.pop();\n  }\n}\n\n// Preserve the array-key coercion used before IDs were stored in a Map, without\n// treating null, empty strings, or noncanonical numeric strings as ID zero.\nfunction normalizeHandlerId(id) {\n  if (typeof id === 'string' && id !== '' && String(Number(id)) === id) {\n    return Number(id);\n  }\n\n  return id;\n}\n\nfunction syncHandlerEntries(manager, internals) {\n  const handlers = manager.handlers;\n  const length = countHandlers(handlers);\n\n  if (handlers !== internals.handlersRef) {\n    internals.handlersRef = handlers;\n    internals.handlerEntries.clear();\n  } else if (length !== internals.handlersLength) {\n    if (!length) {\n      internals.handlerEntries.clear();\n    } else {\n      internals.handlerEntries.forEach(function removeStaleEntry(entry, id) {\n        if (handlers[entry.index] !== entry.handler) {\n          internals.handlerEntries.delete(id);\n        }\n      });\n    }\n  }\n\n  internals.handlersLength = length;\n}\n\nclass InterceptorManager {\n  constructor() {\n    this.handlers = [];\n    this[$internals] = {\n      handlersRef: this.handlers,\n      handlersLength: this.handlers.length,\n      handlerEntries: new Map(),\n      iterationDepth: 0,\n      nextId: 0,\n    };\n  }\n\n  /**\n   * Add a new interceptor to the stack\n   *\n   * @param {Function} fulfilled The function to handle `then` for a `Promise`\n   * @param {Function} rejected The function to handle `reject` for a `Promise`\n   * @param {Object} options The options for the interceptor, synchronous and runWhen\n   *\n   * @return {Number} An ID used to remove interceptor later\n   */\n  use(fulfilled, rejected, options) {\n    const handler = {\n      fulfilled,\n      rejected,\n      synchronous: options ? options.synchronous : false,\n      runWhen: options ? options.runWhen : null,\n    };\n    const internals = this[$internals];\n\n    if (this.handlers == null) {\n      this.handlers = [];\n    }\n\n    syncHandlerEntries(this, internals);\n\n    const id = internals.nextId++;\n\n    this.handlers.push(handler);\n    internals.handlerEntries.set(id, {\n      handler,\n      index: this.handlers.length - 1,\n    });\n    internals.handlersLength = this.handlers.length;\n\n    return id;\n  }\n\n  /**\n   * Remove an interceptor from the stack\n   *\n   * @param {Number} id The ID that was returned by `use`\n   *\n   * @returns {void}\n   */\n  eject(id) {\n    const internals = this[$internals];\n\n    syncHandlerEntries(this, internals);\n\n    const handlerId = normalizeHandlerId(id);\n    const entry = internals.handlerEntries.get(handlerId);\n\n    if (entry) {\n      internals.handlerEntries.delete(handlerId);\n\n      // Ignore IDs invalidated by clear or direct replacement of handlers.\n      if (this.handlers[entry.index] !== entry.handler) {\n        return;\n      }\n\n      this.handlers[entry.index] = null;\n\n      // Do not reuse an index while forEach is walking its length snapshot.\n      if (!internals.iterationDepth) {\n        trimHandlers(this.handlers);\n        internals.handlersLength = this.handlers.length;\n      }\n    }\n  }\n\n  /**\n   * Clear all interceptors from the stack\n   *\n   * @returns {void}\n   */\n  clear() {\n    if (this.handlers) {\n      this.handlers = [];\n      syncHandlerEntries(this, this[$internals]);\n    }\n  }\n\n  /**\n   * Iterate over all the registered interceptors\n   *\n   * This method is particularly useful for skipping over any\n   * interceptors that may have become `null` calling `eject`.\n   *\n   * @param {Function} fn The function to call for each interceptor\n   *\n   * @returns {void}\n   */\n  forEach(fn) {\n    const internals = this[$internals];\n\n    syncHandlerEntries(this, internals);\n\n    internals.iterationDepth++;\n\n    try {\n      utils.forEach(this.handlers, function forEachHandler(h) {\n        if (h !== null) {\n          fn(h);\n        }\n      });\n    } finally {\n      if (!--internals.iterationDepth) {\n        syncHandlerEntries(this, internals);\n        trimHandlers(this.handlers);\n        internals.handlersLength = countHandlers(this.handlers);\n      }\n    }\n  }\n}\n\nexport default InterceptorManager;\n","'use strict';\n\nexport default {\n  silentJSONParsing: true,\n  forcedJSONParsing: true,\n  clarifyTimeoutError: false,\n  legacyInterceptorReqResOrdering: true,\n  advertiseZstdAcceptEncoding: false,\n  validateStatusUndefinedResolves: true,\n  encodeBasicAuthUsername: false,\n};\n","import URLSearchParams from './classes/URLSearchParams.js';\nimport FormData from './classes/FormData.js';\nimport Blob from './classes/Blob.js';\n\nexport default {\n  isBrowser: true,\n  classes: {\n    URLSearchParams,\n    FormData,\n    Blob,\n  },\n  protocols: ['http', 'https', 'file', 'blob', 'url', 'data'],\n};\n","'use strict';\n\nimport AxiosURLSearchParams from '../../../helpers/AxiosURLSearchParams.js';\nexport default typeof URLSearchParams !== 'undefined' ? URLSearchParams : AxiosURLSearchParams;\n","'use strict';\n\nexport default typeof FormData !== 'undefined' ? FormData : null;\n","'use strict';\n\nexport default typeof Blob !== 'undefined' ? Blob : null;\n","const hasBrowserEnv = typeof window !== 'undefined' && typeof document !== 'undefined';\n\nconst _navigator = (typeof navigator === 'object' && navigator) || undefined;\n\n/**\n * Determine if we're running in a standard browser environment\n *\n * This allows axios to run in a web worker, and react-native.\n * Both environments support XMLHttpRequest, but not fully standard globals.\n *\n * web workers:\n *  typeof window -> undefined\n *  typeof document -> undefined\n *\n * react-native:\n *  navigator.product -> 'ReactNative'\n * nativescript\n *  navigator.product -> 'NativeScript' or 'NS'\n *\n * @returns {boolean}\n */\nconst hasStandardBrowserEnv =\n  hasBrowserEnv &&\n  (!_navigator || ['ReactNative', 'NativeScript', 'NS'].indexOf(_navigator.product) < 0);\n\n/**\n * Determine if we're running in a standard browser webWorker environment\n *\n * Although the `isStandardBrowserEnv` method indicates that\n * `allows axios to run in a web worker`, the WebWorker will still be\n * filtered out due to its judgment standard\n * `typeof window !== 'undefined' && typeof document !== 'undefined'`.\n * This leads to a problem when axios post `FormData` in webWorker\n */\nconst hasStandardBrowserWebWorkerEnv = (() => {\n  return (\n    typeof WorkerGlobalScope !== 'undefined' &&\n    // eslint-disable-next-line no-undef\n    self instanceof WorkerGlobalScope &&\n    typeof self.importScripts === 'function'\n  );\n})();\n\nconst origin = (hasBrowserEnv && window.location.href) || 'http://localhost';\n\nexport {\n  hasBrowserEnv,\n  hasStandardBrowserWebWorkerEnv,\n  hasStandardBrowserEnv,\n  _navigator as navigator,\n  origin,\n};\n","import platform from './node/index.js';\nimport * as utils from './common/utils.js';\n\nexport default {\n  ...utils,\n  ...platform,\n};\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosError from '../core/AxiosError.js';\nimport { DEFAULT_FORM_DATA_MAX_DEPTH } from './toFormData.js';\n\nconst MAX_DEPTH = DEFAULT_FORM_DATA_MAX_DEPTH;\n\nfunction throwIfDepthExceeded(index) {\n  if (index > MAX_DEPTH) {\n    throw new AxiosError(\n      'FormData field is too deeply nested (' + index + ' levels). Max depth: ' + MAX_DEPTH,\n      AxiosError.ERR_FORM_DATA_DEPTH_EXCEEDED\n    );\n  }\n}\n\n/**\n * It takes a string like `foo[x][y][z]` and returns an array like `['foo', 'x', 'y', 'z']\n *\n * @param {string} name - The name of the property to get.\n *\n * @returns An array of strings.\n */\nfunction parsePropPath(name) {\n  // foo[x][y][z] -> ['foo', 'x', 'y', 'z']\n  // foo.x.y.z    -> ['foo', 'x', 'y', 'z']\n  // A path is split on `.` and on `[...]` groups. A segment — whether written\n  // in dot notation or captured inside brackets — may contain any character\n  // except `.`, `[` and `]`, so a key like `user-name` or `user name` is kept\n  // literal instead of being split (#5402). `.`, `[` and `]` keep their existing\n  // meaning, e.g. `foo[bar.baz]` -> ['foo', 'bar', 'baz'] and `[]` is an array push.\n  // Excluding `[` from the bracket group also makes the match fail fast at the\n  // next `[`, so a malformed name cannot rescan to the end of the string from\n  // every unmatched `[` — parsing stays linear in the length of the name.\n  const path = [];\n  const pattern = /[^.[\\]]+|\\[([^.[\\]]*)]/g;\n  let match;\n\n  while ((match = pattern.exec(name)) !== null) {\n    throwIfDepthExceeded(path.length);\n    path.push(match[0] === '[]' ? '' : match[1] || match[0]);\n  }\n\n  return path;\n}\n\n/**\n * Convert an array to an object.\n *\n * @param {Array<any>} arr - The array to convert to an object.\n *\n * @returns An object with the same keys and values as the array.\n */\nfunction arrayToObject(arr) {\n  const obj = {};\n  const keys = Object.keys(arr);\n  let i;\n  const len = keys.length;\n  let key;\n  for (i = 0; i < len; i++) {\n    key = keys[i];\n    obj[key] = arr[key];\n  }\n  return obj;\n}\n\nfunction normalizeArray(value) {\n  if (!utils.isArray(value)) return value;\n\n  const keys = Object.keys(value);\n  return keys.length !== value.length || keys.some((key, index) => key !== String(index))\n    ? arrayToObject(value)\n    : value;\n}\n\nfunction normalizeArrays(obj) {\n  const pending = [obj];\n  while (pending.length) {\n    const target = pending.pop();\n    Object.keys(target).forEach((key) => {\n      const value = (target[key] = normalizeArray(target[key]));\n      if (utils.isArray(value) || utils.isPlainObject(value)) {\n        pending.push(value);\n      }\n    });\n  }\n  return obj;\n}\n\n/**\n * It takes a FormData object and returns a JavaScript object\n *\n * @param {string} formData The FormData object to convert to JSON.\n *\n * @returns {Object<string, any> | null} The converted object.\n */\nfunction formDataToJSON(formData) {\n  function buildPath(path, value, target, index) {\n    throwIfDepthExceeded(index);\n\n    let name = path[index++];\n\n    if (name === '__proto__') return true;\n\n    const isNumericKey = Number.isFinite(+name);\n    const isLast = index >= path.length;\n    name = !name && utils.isArray(target) ? target.length : name;\n\n    if (isLast) {\n      if (utils.hasOwnProp(target, name)) {\n        target[name] = normalizeArray(target[name]);\n        target[name] = utils.isArray(target[name])\n          ? target[name].concat(value)\n          : [target[name], value];\n      } else {\n        target[name] = value;\n      }\n\n      return !isNumericKey;\n    }\n\n    if (!utils.hasOwnProp(target, name) || !utils.isObject(target[name])) {\n      target[name] = [];\n    }\n\n    const result = buildPath(path, value, target[name], index);\n\n    if (result && utils.isArray(target[name])) {\n      target[name] = arrayToObject(target[name]);\n    }\n\n    return !isNumericKey;\n  }\n\n  if (utils.isFormData(formData) && utils.isFunction(formData.entries)) {\n    const obj = {};\n\n    utils.forEachEntry(formData, (name, value) => {\n      buildPath(parsePropPath(name), value, obj, 0);\n    });\n\n    return normalizeArrays(obj);\n  }\n\n  return null;\n}\n\nexport default formDataToJSON;\n","'use strict';\n\nconst methodList = Object.freeze([\n  'get',\n  'delete',\n  'head',\n  'options',\n  'post',\n  'put',\n  'patch',\n  'purge',\n  'link',\n  'unlink',\n  'query',\n]);\n\nexport default methodList;\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosError from '../core/AxiosError.js';\nimport transitionalDefaults from './transitional.js';\nimport toFormData from '../helpers/toFormData.js';\nimport toURLEncodedForm from '../helpers/toURLEncodedForm.js';\nimport platform from '../platform/index.js';\nimport formDataToJSON from '../helpers/formDataToJSON.js';\nimport methodList from '../core/methodList.js';\n\nconst own = (obj, key) => (obj != null && utils.hasOwnProp(obj, key) ? obj[key] : undefined);\n\n/**\n * It takes a string, tries to parse it, and if it fails, it returns the stringified version\n * of the input\n *\n * @param {any} rawValue - The value to be stringified.\n * @param {Function} parser - A function that parses a string into a JavaScript object.\n * @param {Function} encoder - A function that takes a value and returns a string.\n *\n * @returns {string} A stringified version of the rawValue.\n */\nfunction stringifySafely(rawValue, parser, encoder) {\n  if (utils.isString(rawValue)) {\n    try {\n      (parser || JSON.parse)(rawValue);\n      return utils.trim(rawValue);\n    } catch (e) {\n      if (e.name !== 'SyntaxError') {\n        throw e;\n      }\n    }\n  }\n\n  return (encoder || JSON.stringify)(rawValue);\n}\n\nconst defaults = {\n  transitional: transitionalDefaults,\n\n  adapter: ['xhr', 'http', 'fetch'],\n\n  transformRequest: [\n    function transformRequest(data, headers) {\n      const contentType = headers.getContentType() || '';\n      const hasJSONContentType = contentType.indexOf('application/json') > -1;\n      const isObjectPayload = utils.isObject(data);\n\n      if (isObjectPayload && utils.isHTMLForm(data)) {\n        data = new FormData(data);\n      }\n\n      const isFormData = utils.isFormData(data);\n\n      if (isFormData) {\n        return hasJSONContentType ? JSON.stringify(formDataToJSON(data)) : data;\n      }\n\n      if (\n        utils.isArrayBuffer(data) ||\n        utils.isBuffer(data) ||\n        utils.isStream(data) ||\n        utils.isFile(data) ||\n        utils.isBlob(data) ||\n        utils.isReadableStream(data)\n      ) {\n        return data;\n      }\n      if (utils.isArrayBufferView(data)) {\n        return data.buffer;\n      }\n      if (utils.isURLSearchParams(data)) {\n        headers.setContentType('application/x-www-form-urlencoded;charset=utf-8', false);\n        return data.toString();\n      }\n\n      let isFileList;\n\n      if (isObjectPayload) {\n        const formSerializer = own(this, 'formSerializer');\n        if (contentType.indexOf('application/x-www-form-urlencoded') > -1) {\n          return toURLEncodedForm(data, formSerializer).toString();\n        }\n\n        if (\n          (isFileList = utils.isFileList(data)) ||\n          contentType.indexOf('multipart/form-data') > -1\n        ) {\n          const env = own(this, 'env');\n          const _FormData = env && env.FormData;\n\n          return toFormData(\n            isFileList ? { 'files[]': data } : data,\n            _FormData && new _FormData(),\n            formSerializer\n          );\n        }\n      }\n\n      if (isObjectPayload || hasJSONContentType) {\n        headers.setContentType('application/json', false);\n        return stringifySafely(data);\n      }\n\n      return data;\n    },\n  ],\n\n  transformResponse: [\n    function transformResponse(data) {\n      const transitional = own(this, 'transitional') || defaults.transitional;\n      const forcedJSONParsing = transitional && transitional.forcedJSONParsing;\n      const responseType = own(this, 'responseType');\n      const JSONRequested = responseType === 'json';\n\n      if (utils.isResponse(data) || utils.isReadableStream(data)) {\n        return data;\n      }\n\n      if (\n        data &&\n        utils.isString(data) &&\n        ((forcedJSONParsing && !responseType) || JSONRequested)\n      ) {\n        const silentJSONParsing = transitional && transitional.silentJSONParsing;\n        const strictJSONParsing = !silentJSONParsing && JSONRequested;\n\n        try {\n          return JSON.parse(data, own(this, 'parseReviver'));\n        } catch (e) {\n          if (strictJSONParsing) {\n            if (e.name === 'SyntaxError') {\n              throw AxiosError.from(e, AxiosError.ERR_BAD_RESPONSE, this, null, own(this, 'response'));\n            }\n            throw e;\n          }\n        }\n      }\n\n      return data;\n    },\n  ],\n\n  /**\n   * A timeout in milliseconds to abort a request. If set to 0 (default) a\n   * timeout is not created.\n   */\n  timeout: 0,\n\n  xsrfCookieName: 'XSRF-TOKEN',\n  xsrfHeaderName: 'X-XSRF-TOKEN',\n\n  maxContentLength: -1,\n  maxBodyLength: -1,\n\n  env: {\n    FormData: platform.classes.FormData,\n    Blob: platform.classes.Blob,\n  },\n\n  validateStatus: function validateStatus(status) {\n    return status >= 200 && status < 300;\n  },\n\n  headers: {\n    common: {\n      Accept: 'application/json, text/plain, */*',\n      'Content-Type': undefined,\n    },\n  },\n};\n\nutils.forEach(methodList, (method) => {\n  defaults.headers[method] = {};\n});\n\nexport default defaults;\n","'use strict';\n\nimport utils from '../utils.js';\nimport toFormData from './toFormData.js';\nimport platform from '../platform/index.js';\n\nexport default function toURLEncodedForm(data, options) {\n  return toFormData(data, new platform.classes.URLSearchParams(), {\n    visitor: function (value, key, path, helpers) {\n      if (platform.isNode && utils.isBuffer(value)) {\n        this.append(key, value.toString('base64'));\n        return false;\n      }\n\n      return helpers.defaultVisitor.apply(this, arguments);\n    },\n    ...options,\n  });\n}\n","'use strict';\n\nimport utils from '../utils.js';\nimport defaults from '../defaults/index.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\n\n/**\n * Transform the data for a request or a response\n *\n * @param {Array|Function} fns A single function or Array of functions\n * @param {?Object} response The response object\n *\n * @returns {*} The resulting transformed data\n */\nexport default function transformData(fns, response) {\n  const config = this || defaults;\n  const context = response || config;\n  const headers = AxiosHeaders.from(context.headers);\n  let data = context.data;\n\n  utils.forEach(fns, function transform(fn) {\n    data = fn.call(config, data, headers.normalize(), response ? response.status : undefined);\n  });\n\n  headers.normalize();\n\n  return data;\n}\n","'use strict';\n\nexport default function isCancel(value) {\n  return !!(value && value.__CANCEL__);\n}\n","'use strict';\n\nimport AxiosError from '../core/AxiosError.js';\n\nclass CanceledError extends AxiosError {\n  /**\n   * A `CanceledError` is an object that is thrown when an operation is canceled.\n   *\n   * @param {string=} message The message.\n   * @param {Object=} config The config.\n   * @param {Object=} request The request.\n   *\n   * @returns {CanceledError} The created error.\n   */\n  constructor(message, config, request) {\n    super(message == null ? 'canceled' : message, AxiosError.ERR_CANCELED, config, request);\n    this.name = 'CanceledError';\n    this.__CANCEL__ = true;\n  }\n}\n\nexport default CanceledError;\n","'use strict';\n\nimport AxiosError from './AxiosError.js';\n\n/**\n * Resolve or reject a Promise based on response status.\n *\n * @param {Function} resolve A function that resolves the promise.\n * @param {Function} reject A function that rejects the promise.\n * @param {object} response The response.\n *\n * @returns {object} The response.\n */\nexport default function settle(resolve, reject, response) {\n  const validateStatus = response.config.validateStatus;\n  if (!response.status || !validateStatus || validateStatus(response.status)) {\n    resolve(response);\n  } else {\n    reject(new AxiosError(\n      'Request failed with status code ' + response.status,\n      response.status >= 400 && response.status < 500 ? AxiosError.ERR_BAD_REQUEST : AxiosError.ERR_BAD_RESPONSE,\n      response.config,\n      response.request,\n      response\n    ));\n  }\n}\n","'use strict';\n\nconst urlParserControlCharacters = /[\\t\\n\\r]/g;\n\n/**\n * Match WHATWG URL preprocessing before checking a URL's protocol.\n *\n * @param {string} url\n *\n * @returns {string}\n */\nexport default function normalizeURLForProtocolCheck(url) {\n  if (typeof url !== 'string') {\n    return url;\n  }\n\n  let start = 0;\n\n  while (start < url.length && url.charCodeAt(start) <= 0x20) {\n    start++;\n  }\n\n  return url.slice(start).replace(urlParserControlCharacters, '');\n}\n","'use strict';\n\nexport default function parseProtocol(url) {\n  const match = /^([-+\\w]{1,25}):(?:\\/\\/)?/.exec(url);\n  return (match && match[1].toLowerCase()) || '';\n}\n","import utils from '../utils.js';\nimport platform from '../platform/index.js';\n\nconst decodeCookieValue = (value) => {\n  try {\n    return decodeURIComponent(value);\n  } catch (e) {\n    return value;\n  }\n};\n\nexport default platform.hasStandardBrowserEnv\n  ? // Standard browser envs support document.cookie\n    {\n      write(name, value, expires, path, domain, secure, sameSite) {\n        if (typeof document === 'undefined') return;\n\n        const cookie = [`${name}=${encodeURIComponent(value)}`];\n\n        if (utils.isNumber(expires)) {\n          cookie.push(`expires=${new Date(expires).toUTCString()}`);\n        }\n        if (utils.isString(path)) {\n          cookie.push(`path=${path}`);\n        }\n        if (utils.isString(domain)) {\n          cookie.push(`domain=${domain}`);\n        }\n        if (secure === true) {\n          cookie.push('secure');\n        }\n        if (utils.isString(sameSite)) {\n          cookie.push(`SameSite=${sameSite}`);\n        }\n\n        document.cookie = cookie.join('; ');\n      },\n\n      read(name) {\n        if (typeof document === 'undefined') return null;\n        const cookieString = document.cookie;\n        if (!cookieString) return null;\n        // Match name=value by splitting on the semicolon separator instead of building a\n        // RegExp from `name` — interpolating an unescaped string into a RegExp would let\n        // metacharacters (e.g. `.+?` in an attacker-influenced cookie name) cause ReDoS or\n        // match the wrong cookie. Browsers may serialize cookie pairs as either \";\" or\n        // \"; \", so ignore optional whitespace before each cookie name.\n        const cookies = cookieString.split(';');\n        for (let i = 0; i < cookies.length; i++) {\n          const cookie = cookies[i].replace(/^\\s+/, '');\n          const eq = cookie.indexOf('=');\n          if (eq !== -1 && cookie.slice(0, eq) === name) {\n            return decodeCookieValue(cookie.slice(eq + 1));\n          }\n        }\n        return null;\n      },\n\n      async readAsync(name) {\n        try {\n          const store = typeof window !== 'undefined' && window.cookieStore;\n          if (store && utils.isFunction(store.get)) {\n            const cookie = await store.get(name);\n            // Both APIs expose stored bytes; preserve Axios's existing URI decoding.\n            return cookie ? decodeCookieValue(cookie.value) : null;\n          }\n        } catch (e) {\n          // Restricted or unavailable storage retains the synchronous fallback.\n        }\n\n        return this.read(name);\n      },\n\n      remove(name) {\n        this.write(name, '', Date.now() - 86400000, '/');\n      },\n    }\n  : // Non-standard browser env (web workers, react-native) lack needed support.\n    {\n      write() {},\n      read() {\n        return null;\n      },\n      async readAsync() {\n        return null;\n      },\n      remove() {},\n    };\n","import speedometer from './speedometer.js';\nimport throttle from './throttle.js';\nimport utils from '../utils.js';\n\nexport const progressEventReducer = (listener, isDownloadStream, freq = 3) => {\n  let bytesNotified = 0;\n  const _speedometer = speedometer(50, 250);\n\n  return throttle((e) => {\n    if (!e || !utils.isNumber(e.loaded)) {\n      return;\n    }\n    const rawLoaded = e.loaded;\n    const total = e.lengthComputable ? e.total : undefined;\n    const loaded = Math.max(0, total != null ? Math.min(rawLoaded, total) : rawLoaded);\n    const progressBytes = Math.max(0, loaded - bytesNotified);\n    const rate = _speedometer(progressBytes);\n\n    bytesNotified = Math.max(bytesNotified, loaded);\n\n    const data = {\n      loaded,\n      total,\n      progress: total ? loaded / total : undefined,\n      bytes: progressBytes,\n      rate: rate ? rate : undefined,\n      estimated: rate && total ? (total - loaded) / rate : undefined,\n      event: e,\n      lengthComputable: total != null,\n      [isDownloadStream ? 'download' : 'upload']: true,\n    };\n\n    listener(data);\n  }, freq);\n};\n\nexport const progressEventDecorator = (total, throttled) => {\n  const lengthComputable = total != null;\n\n  return [\n    (loaded) =>\n      throttled[0]({\n        lengthComputable,\n        total,\n        loaded,\n      }),\n    throttled[1],\n  ];\n};\n\nexport const asyncDecorator =\n  (fn, scheduler = utils.asap) =>\n  (...args) =>\n    scheduler(() => fn(...args));\n","'use strict';\n\n/**\n * Calculate data maxRate\n * @param {Number} [samplesCount= 10]\n * @param {Number} [min= 1000]\n * @returns {Function}\n */\nfunction speedometer(samplesCount, min) {\n  samplesCount = samplesCount || 10;\n  const bytes = new Array(samplesCount);\n  const timestamps = new Array(samplesCount);\n  let head = 0;\n  let tail = 0;\n  let firstSampleTS;\n\n  min = min !== undefined ? min : 1000;\n\n  return function push(chunkLength) {\n    const now = Date.now();\n\n    const startedAt = timestamps[tail];\n\n    if (!firstSampleTS) {\n      firstSampleTS = now;\n    }\n\n    bytes[head] = chunkLength;\n    timestamps[head] = now;\n\n    let i = tail;\n    let bytesCount = 0;\n\n    while (i !== head) {\n      bytesCount += bytes[i++];\n      i = i % samplesCount;\n    }\n\n    head = (head + 1) % samplesCount;\n\n    if (head === tail) {\n      tail = (tail + 1) % samplesCount;\n    }\n\n    if (now - firstSampleTS < min) {\n      return;\n    }\n\n    const passed = startedAt && now - startedAt;\n\n    return passed ? Math.round((bytesCount * 1000) / passed) : undefined;\n  };\n}\n\nexport default speedometer;\n","/**\n * Throttle decorator\n * @param {Function} fn\n * @param {Number} freq\n * @return {Array<Function>}\n */\nfunction throttle(fn, freq) {\n  let timestamp = 0;\n  let threshold = 1000 / freq;\n  let lastArgs;\n  let timer;\n\n  const invoke = (args, now = Date.now()) => {\n    timestamp = now;\n    lastArgs = null;\n    if (timer) {\n      clearTimeout(timer);\n      timer = null;\n    }\n    fn(...args);\n  };\n\n  const throttled = (...args) => {\n    const now = Date.now();\n    const passed = now - timestamp;\n    if (passed >= threshold) {\n      invoke(args, now);\n    } else {\n      lastArgs = args;\n      if (!timer) {\n        timer = setTimeout(() => {\n          timer = null;\n          invoke(lastArgs);\n        }, threshold - passed);\n      }\n    }\n  };\n\n  const flush = () => lastArgs && invoke(lastArgs);\n  const flushWith = (...args) => invoke(args);\n\n  return [throttled, flush, flushWith];\n}\n\nexport default throttle;\n","import platform from '../platform/index.js';\n\nexport default platform.hasStandardBrowserEnv\n  ? ((origin) => (url) => {\n      url = new URL(url, document.baseURI || platform.origin);\n\n      return (\n        origin.protocol === url.protocol && origin.host === url.host && origin.port === url.port\n      );\n    })(new URL(platform.origin))\n  : () => true;\n","'use strict';\n\nimport AxiosError, { REDACTED } from './AxiosError.js';\nimport isAbsoluteURL from '../helpers/isAbsoluteURL.js';\nimport combineURLs from '../helpers/combineURLs.js';\nimport normalizeURLForProtocolCheck from '../helpers/normalizeURLForProtocolCheck.js';\n\nconst malformedHttpProtocol = /^https?:(?!\\/\\/)/i;\n\n// Redact the parts of a URL that can carry secrets before it is embedded in an\n// error message. AxiosError.toJSON() serializes `message` verbatim and errors\n// are commonly logged, while the opt-in `config.redact` model only cleans\n// config keys — it cannot reach the message. Redact only the genuinely\n// sensitive substrings — userinfo (credentials), query parameter values and\n// fragment contents — with the same REDACTED marker the config redaction uses,\n// while keeping the scheme, host, path and parameter names so the offending\n// request stays accurately identifiable.\nfunction redactFragment(fragment) {\n  if (!fragment) {\n    return fragment;\n  }\n\n  return fragment.replace(/(^|&)([^=&]*=)?[^&]+/g, (match, separator, parameterName = '') => {\n    return `${separator}${parameterName}${REDACTED}`;\n  });\n}\n\nfunction redactSensitiveURLParts(url) {\n  const redactedURL = url.replace(/^(https?:\\/{0,2})[^/?#]*@/i, `$1${REDACTED}@`);\n  const fragmentIndex = redactedURL.indexOf('#');\n  const urlWithoutFragment =\n    fragmentIndex === -1 ? redactedURL : redactedURL.slice(0, fragmentIndex);\n  const redactedURLWithoutFragment = urlWithoutFragment.replace(\n    /([?&][^=&#]*=)[^&#]*/g,\n    `$1${REDACTED}`\n  );\n\n  if (fragmentIndex === -1) {\n    return redactedURLWithoutFragment;\n  }\n\n  return `${redactedURLWithoutFragment}#${redactFragment(redactedURL.slice(fragmentIndex + 1))}`;\n}\n\nfunction assertValidHttpProtocolURL(url, config) {\n  if (typeof url === 'string') {\n    const normalizedURL = normalizeURLForProtocolCheck(url);\n    if (malformedHttpProtocol.test(normalizedURL)) {\n      throw new AxiosError(\n        `Invalid URL ${JSON.stringify(redactSensitiveURLParts(normalizedURL))}: missing \"//\" after protocol`,\n        AxiosError.ERR_INVALID_URL,\n        config\n      );\n    }\n  }\n}\n\n/**\n * Creates a new URL by combining the baseURL with the requestedURL,\n * only when the requestedURL is not already an absolute URL.\n * If the requestURL is absolute, this function returns the requestedURL untouched.\n *\n * @param {string} baseURL The base URL\n * @param {string} requestedURL Absolute or relative URL to combine\n *\n * @returns {string} The combined full path\n */\nexport default function buildFullPath(baseURL, requestedURL, allowAbsoluteUrls, config) {\n  assertValidHttpProtocolURL(requestedURL, config);\n  let isRelativeUrl = !isAbsoluteURL(requestedURL);\n  if (baseURL && (isRelativeUrl || allowAbsoluteUrls === false)) {\n    assertValidHttpProtocolURL(baseURL, config);\n    return combineURLs(baseURL, requestedURL);\n  }\n  return requestedURL;\n}\n","'use strict';\n\n/**\n * Determines whether the specified URL is absolute\n *\n * @param {string} url The URL to test\n *\n * @returns {boolean} True if the specified URL is absolute, otherwise false\n */\nexport default function isAbsoluteURL(url) {\n  // A URL is considered absolute if it begins with \"<scheme>://\" or \"//\" (protocol-relative URL).\n  // RFC 3986 defines scheme name as a sequence of characters beginning with a letter and followed\n  // by any combination of letters, digits, plus, period, or hyphen.\n  if (typeof url !== 'string') {\n    return false;\n  }\n\n  return /^([a-z][a-z\\d+\\-.]*:)?\\/\\//i.test(url);\n}\n","'use strict';\n\n/**\n * Creates a new URL by combining the specified URLs\n *\n * @param {string} baseURL The base URL\n * @param {string} relativeURL The relative URL\n *\n * @returns {string} The combined URL\n */\nexport default function combineURLs(baseURL, relativeURL) {\n  if (!relativeURL) {\n    return baseURL;\n  }\n\n  let end = baseURL.length;\n\n  while (end > 0 && baseURL.charCodeAt(end - 1) === 47) {\n    end--;\n  }\n\n  return baseURL.slice(0, end) + '/' + relativeURL.replace(/^\\/+/, '');\n}\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosHeaders from './AxiosHeaders.js';\nimport assertParamsAcyclic from './assertParamsAcyclic.js';\n\nconst headersToObject = (thing) => (thing instanceof AxiosHeaders ? { ...thing } : thing);\n\nconst ownEnumerableKeys = (thing) => {\n  if (Object.getOwnPropertySymbols && Object.getOwnPropertyDescriptor) {\n    return Object.keys(thing).concat(\n      Object.getOwnPropertySymbols(thing).filter((symbol) => {\n        const descriptor = Object.getOwnPropertyDescriptor(thing, symbol);\n        return descriptor && descriptor.enumerable;\n      })\n    );\n  }\n  return Object.keys(thing);\n};\n\n// Copy params without recursive merges so the serializer remains responsible\n// for its depth policy. Only visit defaults that contribute to the result.\nfunction mergeParams(a, b) {\n  const pending = [];\n  const copies = new WeakMap();\n  const empty = {};\n\n  function copy(target, source) {\n    if (!utils.isPlainObject(source)) {\n      return utils.isArray(source) ? source.slice() : source;\n    }\n\n    const base = utils.isPlainObject(target) ? target : empty;\n    let bases = copies.get(source);\n    if (!bases) {\n      bases = new WeakMap();\n      copies.set(source, bases);\n    }\n    if (bases.has(base)) return bases.get(base);\n\n    const result = {};\n    bases.set(base, result);\n    pending.push({ base, source, result });\n    return result;\n  }\n\n  const result = utils.isUndefined(b) ? copy(undefined, a) : copy(a, b);\n  while (pending.length) {\n    const { base, source, result: target } = pending.pop();\n    const baseKeys = new Set(ownEnumerableKeys(base));\n    const sourceKeys = new Set(ownEnumerableKeys(source));\n    const keys = new Set([...baseKeys, ...sourceKeys]);\n\n    keys.forEach((key) => {\n      if (key === '__proto__' || key === 'constructor' || key === 'prototype') return;\n      const hasSource = sourceKeys.has(key);\n      const value = hasSource ? source[key] : undefined;\n      const previous =\n        (!hasSource || utils.isPlainObject(value)) && baseKeys.has(key) ? base[key] : undefined;\n      target[key] = hasSource ? copy(previous, value) : copy(undefined, previous);\n    });\n  }\n\n  assertParamsAcyclic(result);\n  return result;\n}\n\nfunction getMergedValue(target, source, prop, caseless) {\n  if (utils.isPlainObject(target) && utils.isPlainObject(source)) {\n    return utils.merge.call({ caseless }, target, source);\n  } else if (utils.isPlainObject(source)) {\n    return utils.merge({}, source);\n  } else if (utils.isArray(source)) {\n    return source.slice();\n  }\n  return source;\n}\n\nfunction mergeDeepProperties(a, b, prop, caseless) {\n  if (!utils.isUndefined(b)) {\n    return getMergedValue(a, b, prop, caseless);\n  } else if (!utils.isUndefined(a)) {\n    return getMergedValue(undefined, a, prop, caseless);\n  }\n}\n\n// eslint-disable-next-line consistent-return\nfunction valueFromConfig2(a, b) {\n  if (!utils.isUndefined(b)) {\n    return getMergedValue(undefined, b);\n  }\n}\n\n// eslint-disable-next-line consistent-return\nfunction defaultToConfig2(a, b) {\n  if (!utils.isUndefined(b)) {\n    return getMergedValue(undefined, b);\n  } else if (!utils.isUndefined(a)) {\n    return getMergedValue(undefined, a);\n  }\n}\n\nfunction getMergedTransitionalOption(config1, config2, prop) {\n  const transitional2 = utils.hasOwnProp(config2, 'transitional')\n    ? config2.transitional\n    : undefined;\n\n  if (!utils.isUndefined(transitional2)) {\n    if (utils.isPlainObject(transitional2)) {\n      if (utils.hasOwnProp(transitional2, prop)) {\n        return transitional2[prop];\n      }\n    } else {\n      return undefined;\n    }\n  }\n\n  const transitional1 = utils.hasOwnProp(config1, 'transitional')\n    ? config1.transitional\n    : undefined;\n\n  if (utils.isPlainObject(transitional1) && utils.hasOwnProp(transitional1, prop)) {\n    return transitional1[prop];\n  }\n\n  return undefined;\n}\n\n// eslint-disable-next-line consistent-return\nfunction mergeDirectKeys(a, b, prop, config1, config2) {\n  if (utils.hasOwnProp(config2, prop)) {\n    return getMergedValue(a, b);\n  } else if (utils.hasOwnProp(config1, prop)) {\n    return getMergedValue(undefined, a);\n  }\n}\n\nfunction mergeHeaders(a, b, prop) {\n  return mergeDeepProperties(headersToObject(a), headersToObject(b), prop, true);\n}\n\n// Null-proto, frozen descriptor so a polluted Object.prototype.get cannot turn\n// this data descriptor into an accessor descriptor on the way in.\n// defineProperty only reads it, so one shared instance serves every call.\nconst hasOwnPropertyDescriptor = Object.freeze({\n  __proto__: null,\n  value: Object.prototype.hasOwnProperty,\n  enumerable: false,\n  writable: true,\n  configurable: true,\n});\n\n// The strategy table and the strategies above are stateless, so they are\n// built once at module load instead of on every call: mergeConfig runs at\n// most twice per request (once from a method alias, once from `_request`).\nconst mergeMap = {\n  url: valueFromConfig2,\n  method: valueFromConfig2,\n  data: valueFromConfig2,\n  baseURL: defaultToConfig2,\n  transformRequest: defaultToConfig2,\n  transformResponse: defaultToConfig2,\n  params: mergeParams,\n  paramsSerializer: defaultToConfig2,\n  timeout: defaultToConfig2,\n  timeoutErrorMessage: defaultToConfig2,\n  withCredentials: defaultToConfig2,\n  withXSRFToken: defaultToConfig2,\n  adapter: defaultToConfig2,\n  responseType: defaultToConfig2,\n  xsrfCookieName: defaultToConfig2,\n  xsrfHeaderName: defaultToConfig2,\n  onUploadProgress: defaultToConfig2,\n  onDownloadProgress: defaultToConfig2,\n  decompress: defaultToConfig2,\n  maxContentLength: defaultToConfig2,\n  maxBodyLength: defaultToConfig2,\n  beforeRedirect: defaultToConfig2,\n  transport: defaultToConfig2,\n  httpAgent: defaultToConfig2,\n  httpsAgent: defaultToConfig2,\n  cancelToken: defaultToConfig2,\n  socketPath: defaultToConfig2,\n  allowedSocketPaths: defaultToConfig2,\n  responseEncoding: defaultToConfig2,\n  validateStatus: mergeDirectKeys,\n  headers: mergeHeaders,\n};\n\n/**\n * Config-specific merge-function which creates a new config-object\n * by merging two configuration objects together.\n *\n * @param {Object} config1\n * @param {Object} config2\n *\n * @returns {Object} New object resulting from merging config2 to config1\n */\nexport default function mergeConfig(config1, config2) {\n  // eslint-disable-next-line no-param-reassign\n  config1 = config1 || {};\n  config2 = config2 || {};\n\n  // Use a null-prototype object so that downstream reads such as `config.auth`\n  // or `config.baseURL` cannot inherit polluted values from Object.prototype.\n  // `hasOwnProperty` is restored as a non-enumerable own slot to preserve\n  // ergonomics for user code that relies on it.\n  const config = Object.create(null);\n  Object.defineProperty(config, 'hasOwnProperty', hasOwnPropertyDescriptor);\n\n  const keys = ownEnumerableKeys({ ...config1, ...config2 });\n\n  for (let i = 0, len = keys.length; i < len; i++) {\n    const prop = keys[i];\n    if (prop === '__proto__' || prop === 'constructor' || prop === 'prototype') continue;\n    const merge = utils.hasOwnProp(mergeMap, prop) ? mergeMap[prop] : mergeDeepProperties;\n    const a = utils.hasOwnProp(config1, prop) ? config1[prop] : undefined;\n    const b = utils.hasOwnProp(config2, prop) ? config2[prop] : undefined;\n    const configValue =\n      merge === mergeDirectKeys ? merge(a, b, prop, config1, config2) : merge(a, b, prop);\n    (utils.isUndefined(configValue) && merge !== mergeDirectKeys) || (config[prop] = configValue);\n  }\n\n  if (\n    utils.hasOwnProp(config2, 'validateStatus') &&\n    utils.isUndefined(config2.validateStatus) &&\n    getMergedTransitionalOption(config1, config2, 'validateStatusUndefinedResolves') === false\n  ) {\n    if (utils.hasOwnProp(config1, 'validateStatus')) {\n      config.validateStatus = getMergedValue(undefined, config1.validateStatus);\n    } else {\n      delete config.validateStatus;\n    }\n  }\n\n  return config;\n}\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosError from './AxiosError.js';\n\nexport default function assertParamsAcyclic(params) {\n  const pending = [{ value: params }];\n  const active = new WeakSet();\n  const visited = new WeakSet();\n\n  while (pending.length) {\n    const { value, done } = pending.pop();\n    if (!utils.isPlainObject(value) && !utils.isArray(value)) continue;\n    if (done) {\n      active.delete(value);\n      continue;\n    }\n    if (active.has(value)) {\n      throw new AxiosError(\n        'Circular reference detected in params',\n        AxiosError.ERR_BAD_OPTION_VALUE\n      );\n    }\n    if (visited.has(value)) continue;\n    visited.add(value);\n    active.add(value);\n    pending.push({ value, done: true });\n\n    const keys = Object.keys(value);\n    if (Object.getOwnPropertySymbols && Object.getOwnPropertyDescriptor) {\n      Object.getOwnPropertySymbols(value).forEach((key) => {\n        const descriptor = Object.getOwnPropertyDescriptor(value, key);\n        if (descriptor && descriptor.enumerable) keys.push(key);\n      });\n    }\n    // Shallow array elements retain fields filtered during plain-object merges.\n    // Inspect reserved data properties without evaluating their accessors.\n    keys.forEach((key) => {\n      if (key === '__proto__' || key === 'constructor' || key === 'prototype') {\n        const descriptor = Object.getOwnPropertyDescriptor(value, key);\n        if (descriptor && utils.hasOwnProp(descriptor, 'value')) {\n          pending.push({ value: descriptor.value });\n        }\n      } else {\n        pending.push({ value: value[key] });\n      }\n    });\n  }\n}\n","'use strict';\n\nconst FORM_DATA_CONTENT_HEADERS = ['content-type', 'content-length'];\n\n/**\n * Apply the headers generated by a FormData implementation to the request headers,\n * honoring the `formDataHeaderPolicy` option: with 'content-only', copy only the\n * content-* headers; otherwise merge all of them.\n *\n * @param {AxiosHeaders} headers - the request headers to mutate\n * @param {Object | null | undefined} formHeaders - headers produced by the FormData implementation\n * @param {String} [policy] - the resolved `formDataHeaderPolicy` config value\n *\n * @returns {void}\n */\nexport default function setFormDataHeaders(headers, formHeaders, policy) {\n  if (policy !== 'content-only') {\n    headers.set(formHeaders);\n    return;\n  }\n\n  Object.entries(formHeaders || {}).forEach(([key, val]) => {\n    if (FORM_DATA_CONTENT_HEADERS.includes(key.toLowerCase())) {\n      headers.set(key, val);\n    }\n  });\n}\n","import platform from '../platform/index.js';\nimport utils from '../utils.js';\nimport AxiosError from '../core/AxiosError.js';\nimport isURLSameOrigin from './isURLSameOrigin.js';\nimport cookies from './cookies.js';\nimport buildFullPath from '../core/buildFullPath.js';\nimport mergeConfig from '../core/mergeConfig.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\nimport setFormDataHeaders from '../core/setFormDataHeaders.js';\nimport buildURL from './buildURL.js';\n\n/**\n * Encode a UTF-8 string to a Latin-1 byte string for use with btoa().\n * This is a modern replacement for the deprecated unescape(encodeURIComponent(str)) pattern.\n *\n * @param {string} str The string to encode\n *\n * @returns {string} UTF-8 bytes as a Latin-1 string\n */\nconst encodeUTF8 = (str) =>\n  encodeURIComponent(str).replace(/%([0-9A-F]{2})/gi, (_, hex) =>\n    String.fromCharCode(parseInt(hex, 16))\n  );\n\nconst readCookie = (name) => cookies.read(name);\n\nfunction resolveConfig(config, readXsrfCookie = readCookie) {\n  const newConfig = mergeConfig({}, config);\n\n  // Read only own properties to prevent prototype pollution gadgets\n  // (e.g. Object.prototype.baseURL = 'https://evil.com').\n  const own = (key) => (utils.hasOwnProp(newConfig, key) ? newConfig[key] : undefined);\n\n  const data = own('data');\n  let withXSRFToken = own('withXSRFToken');\n  const xsrfHeaderName = own('xsrfHeaderName');\n  const xsrfCookieName = own('xsrfCookieName');\n  let headers = own('headers');\n  const auth = own('auth');\n  const baseURL = own('baseURL');\n  const allowAbsoluteUrls = own('allowAbsoluteUrls');\n  const url = own('url');\n\n  newConfig.headers = headers = AxiosHeaders.from(headers);\n\n  newConfig.url = buildURL(\n    buildFullPath(baseURL, url, allowAbsoluteUrls, newConfig),\n    own('params'),\n    own('paramsSerializer')\n  );\n\n  // HTTP basic authentication\n  if (auth) {\n    const username = utils.getSafeProp(auth, 'username') || '';\n    const password = utils.getSafeProp(auth, 'password') || '';\n    const transitional = own('transitional');\n    const encodeUsername =\n      transitional &&\n      utils.hasOwnProp(transitional, 'encodeBasicAuthUsername') &&\n      transitional.encodeBasicAuthUsername === true;\n\n    try {\n      headers.set(\n        'Authorization',\n        // Preserve legacy username bytes unless the caller opts in to UTF-8.\n        'Basic ' +\n          btoa(\n            (encodeUsername ? encodeUTF8(username) : username) +\n              ':' +\n              (password ? encodeUTF8(password) : '')\n          )\n      );\n    } catch (e) {\n      throw AxiosError.from(e, AxiosError.ERR_BAD_OPTION_VALUE, config);\n    }\n  }\n\n  if (utils.isFormData(data)) {\n    const getHeaders = utils.getSafeProp(data, 'getHeaders');\n\n    if (\n      platform.hasStandardBrowserEnv ||\n      platform.hasStandardBrowserWebWorkerEnv ||\n      utils.isReactNative(data)\n    ) {\n      headers.setContentType(undefined); // browser/web worker/RN handles it\n    } else if (utils.isFunction(getHeaders)) {\n      // Node.js FormData (like form-data package)\n      setFormDataHeaders(headers, getHeaders.call(data), own('formDataHeaderPolicy'));\n    }\n  }\n\n  // Add xsrf header\n  // This is only done if running in a standard browser environment.\n  // Specifically not if we're in a web worker, or react-native.\n\n  if (platform.hasStandardBrowserEnv) {\n    if (utils.isFunction(withXSRFToken)) {\n      withXSRFToken = withXSRFToken(newConfig);\n    }\n\n    // Strict boolean check — prevents proto-pollution gadgets (e.g. Object.prototype.withXSRFToken = 1)\n    // and misconfigurations (e.g. \"false\") from short-circuiting the same-origin check and leaking\n    // the XSRF token cross-origin.\n    const shouldSendXSRF =\n      withXSRFToken === true || (withXSRFToken == null && isURLSameOrigin(newConfig.url));\n\n    if (shouldSendXSRF) {\n      const xsrfValue = xsrfHeaderName && xsrfCookieName && readXsrfCookie(xsrfCookieName);\n\n      if (xsrfValue) {\n        headers.set(xsrfHeaderName, xsrfValue);\n      }\n    }\n  }\n\n  return newConfig;\n}\n\nexport default resolveConfig;\n","import utils from '../utils.js';\nimport settle from '../core/settle.js';\nimport transitionalDefaults from '../defaults/transitional.js';\nimport AxiosError from '../core/AxiosError.js';\nimport CanceledError from '../cancel/CanceledError.js';\nimport normalizeURLForProtocolCheck from '../helpers/normalizeURLForProtocolCheck.js';\nimport parseProtocol from '../helpers/parseProtocol.js';\nimport platform from '../platform/index.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\nimport cookies from '../helpers/cookies.js';\nimport { progressEventReducer } from '../helpers/progressEventReducer.js';\nimport resolveConfig from '../helpers/resolveConfig.js';\nimport { toByteStringHeaderObject } from '../helpers/sanitizeHeaderValue.js';\n\nconst isXHRAdapterSupported = typeof XMLHttpRequest !== 'undefined';\n\nexport default isXHRAdapterSupported &&\n  function (config) {\n    return new Promise(function dispatchXhrRequest(resolve, reject) {\n      let useAsyncXsrf;\n      try {\n        const store =\n          platform.hasStandardBrowserEnv && typeof window !== 'undefined' && window.cookieStore;\n        useAsyncXsrf = store && utils.isFunction(store.get);\n      } catch (e) {\n        // A restricted Cookie Store getter must retain the synchronous fallback.\n      }\n      let xsrfCookieName;\n      const _config = resolveConfig(\n        config,\n        useAsyncXsrf\n          ? (name) => {\n              xsrfCookieName = name;\n              return null;\n            }\n          : undefined\n      );\n      let requestData = _config.data;\n      const requestHeaders = AxiosHeaders.from(_config.headers).normalize();\n      let { responseType, onUploadProgress, onDownloadProgress } = _config;\n      let onCanceled;\n      let timeoutId;\n      let uploadThrottled, downloadThrottled;\n      let flushUpload, flushDownload, flushDownloadWithEvent;\n\n      function done() {\n        clearTimeout(timeoutId);\n        // A final progress callback must not prevent the remaining cleanup.\n        // Report errors asynchronously, as onloadend and the throttle timer do.\n        try {\n          flushUpload && flushUpload(); // flush events\n        } catch (err) {\n          setTimeout(() => {\n            throw err;\n          });\n        }\n        try {\n          flushDownload && flushDownload(); // flush events\n        } catch (err) {\n          setTimeout(() => {\n            throw err;\n          });\n        }\n\n        // A flush can synchronously cancel the request and reenter done().\n        // In that case the inner call has already detached these listeners.\n        if (request) {\n          downloadThrottled && request.removeEventListener('progress', downloadThrottled);\n          if (request.upload) {\n            uploadThrottled && request.upload.removeEventListener('progress', uploadThrottled);\n            flushUpload && request.upload.removeEventListener('loadend', flushUpload);\n          }\n        }\n\n        _config.cancelToken && _config.cancelToken.unsubscribe(onCanceled);\n\n        _config.signal && _config.signal.removeEventListener('abort', onCanceled);\n      }\n\n      let request = new XMLHttpRequest();\n\n      request.open(_config.method.toUpperCase(), _config.url, true);\n\n      // Set the request timeout in MS\n      request.timeout = _config.timeout;\n\n      function onloadend(event) {\n        if (!request) {\n          return;\n        }\n\n        // Status 0 means no response was received, which onerror and onabort normally\n        // reject before this runs. Firefox 152 fires only readystatechange and loadend for\n        // navigation-canceled requests (https://bugzilla.mozilla.org/show_bug.cgi?id=1505389),\n        // leaving settle() to resolve them as an empty success. ECONNABORTED is the error\n        // onabort raised on Firefox 151. Reads over file:, which some environments report as\n        // status 0 on success, are excluded by the request URL's scheme after browser-style\n        // preprocessing, by the page origin's scheme for relative URLs (which inherit it), or\n        // by responseURL where implemented.\n        if (\n          request.status === 0 &&\n          (parseProtocol(normalizeURLForProtocolCheck(_config.url)) ||\n            parseProtocol(platform.origin)) !== 'file' &&\n          !(request.responseURL && request.responseURL.startsWith('file:'))\n        ) {\n          reject(new AxiosError('Request aborted', AxiosError.ECONNABORTED, config, request));\n          done();\n\n          // Clean up request\n          request = null;\n          return;\n        }\n\n        // When loadend is still dispatching, flushing with it gives progress\n        // listeners a final delivery whose event has a live target. The legacy\n        // ready-state fallback has no event, so replay its pending progress.\n        // A throwing listener must not block settlement; rethrow asynchronously,\n        // matching how listener errors surface on the throttle timer path.\n        try {\n          if (event) {\n            flushDownloadWithEvent && flushDownloadWithEvent(event);\n          } else {\n            flushDownload && flushDownload();\n          }\n        } catch (err) {\n          setTimeout(() => {\n            throw err;\n          });\n        }\n\n        // A final progress callback can cancel the request synchronously.\n        if (!request) {\n          return;\n        }\n\n        // Prepare the response\n        const responseHeaders = AxiosHeaders.from(\n          'getAllResponseHeaders' in request && request.getAllResponseHeaders()\n        );\n        const responseData =\n          !responseType || responseType === 'text' || responseType === 'json'\n            ? request.responseText\n            : request.response;\n        const response = {\n          data: responseData,\n          status: request.status,\n          statusText: request.statusText,\n          headers: responseHeaders,\n          config,\n          request,\n        };\n\n        settle(\n          function _resolve(value) {\n            resolve(value);\n            done();\n          },\n          function _reject(err) {\n            reject(err);\n            done();\n          },\n          response\n        );\n\n        // Clean up request\n        request = null;\n      }\n\n      if ('onloadend' in request) {\n        // Use onloadend if available\n        request.onloadend = onloadend;\n      } else {\n        // Listen for ready state to emulate onloadend\n        request.onreadystatechange = function handleLoad() {\n          if (!request || request.readyState !== 4) {\n            return;\n          }\n\n          // The request errored out and we didn't get a response, this will be\n          // handled by onerror instead\n          // With one exception: request that using file: protocol, most browsers\n          // will return status as 0 even though it's a successful request\n          if (\n            request.status === 0 &&\n            !(request.responseURL && request.responseURL.startsWith('file:'))\n          ) {\n            return;\n          }\n          // readystate handler is calling before onerror or ontimeout handlers,\n          // so we should call onloadend on the next 'tick'\n          setTimeout(onloadend);\n        };\n      }\n\n      // Handle browser request cancellation (as opposed to a manual cancellation)\n      request.onabort = function handleAbort() {\n        if (!request) {\n          return;\n        }\n\n        reject(new AxiosError('Request aborted', AxiosError.ECONNABORTED, config, request));\n        done();\n\n        // Clean up request\n        request = null;\n      };\n\n      // Handle low level network errors\n      request.onerror = function handleError(event) {\n        // Browsers deliver a ProgressEvent in XHR onerror\n        // (message may be empty; when present, surface it)\n        // See https://developer.mozilla.org/docs/Web/API/XMLHttpRequest/error_event\n        const msg = event && event.message ? event.message : 'Network Error';\n        const err = new AxiosError(msg, AxiosError.ERR_NETWORK, config, request);\n        // attach the underlying event for consumers who want details\n        err.event = event || null;\n        reject(err);\n        done();\n        request = null;\n      };\n\n      // Handle timeout\n      request.ontimeout = function handleTimeout() {\n        if (!request) return;\n        let timeoutErrorMessage = _config.timeout\n          ? 'timeout of ' + _config.timeout + 'ms exceeded'\n          : 'timeout exceeded';\n        const transitional = _config.transitional || transitionalDefaults;\n        if (_config.timeoutErrorMessage) {\n          timeoutErrorMessage = _config.timeoutErrorMessage;\n        }\n        reject(\n          new AxiosError(\n            timeoutErrorMessage,\n            transitional.clarifyTimeoutError ? AxiosError.ETIMEDOUT : AxiosError.ECONNABORTED,\n            config,\n            request\n          )\n        );\n        done();\n\n        // Clean up request\n        request = null;\n      };\n\n      // Remove Content-Type if data is undefined\n      requestData === undefined && requestHeaders.setContentType(null);\n\n      // Add withCredentials to request if needed\n      if (!utils.isUndefined(_config.withCredentials)) {\n        request.withCredentials = !!_config.withCredentials;\n      }\n\n      // Add responseType to request if needed\n      if (responseType && responseType !== 'json') {\n        request.responseType = _config.responseType;\n      }\n\n      // Handle progress if needed\n      if (onDownloadProgress) {\n        [downloadThrottled, flushDownload, flushDownloadWithEvent] = progressEventReducer(\n          onDownloadProgress,\n          true\n        );\n        request.addEventListener('progress', downloadThrottled);\n      }\n\n      // Not all browsers support upload events\n      if (onUploadProgress && request.upload) {\n        [uploadThrottled, flushUpload] = progressEventReducer(onUploadProgress);\n\n        request.upload.addEventListener('progress', uploadThrottled);\n\n        request.upload.addEventListener('loadend', flushUpload);\n      }\n\n      if (_config.cancelToken || _config.signal) {\n        // Handle cancellation\n        // eslint-disable-next-line func-names\n        onCanceled = (cancel) => {\n          if (!request) {\n            return;\n          }\n          reject(!cancel || cancel.type ? new CanceledError(null, config, request) : cancel);\n          const xhr = request;\n          done();\n          request = null;\n          xhr.abort();\n        };\n\n        _config.cancelToken && _config.cancelToken.subscribe(onCanceled);\n        if (!request) return;\n        if (_config.signal) {\n          _config.signal.aborted\n            ? onCanceled()\n            : _config.signal.addEventListener('abort', onCanceled);\n        }\n      }\n\n      if (!request) return;\n\n      const protocol = parseProtocol(_config.url);\n\n      if (protocol && !platform.protocols.includes(protocol)) {\n        reject(\n          new AxiosError(\n            'Unsupported protocol ' + protocol + ':',\n            AxiosError.ERR_BAD_REQUEST,\n            config\n          )\n        );\n        done();\n        return;\n      }\n\n      const sendRequest = () => {\n        if (!request) return;\n        // Apply headers after an asynchronous XSRF read so existing headers are\n        // replaced through AxiosHeaders rather than appended by the native XHR.\n        if ('setRequestHeader' in request) {\n          utils.forEach(\n            toByteStringHeaderObject(requestHeaders),\n            function setRequestHeader(val, key) {\n              request.setRequestHeader(key, val);\n            }\n          );\n        }\n        request.send(requestData || null);\n      };\n\n      if (xsrfCookieName) {\n        // Native XHR timeout starts at send(). Cover cookie preparation and the\n        // subsequent request with the same budget and existing timeout handler.\n        const now =\n          typeof performance !== 'undefined' && utils.isFunction(performance.now)\n            ? () => performance.now()\n            : Date.now;\n        const deadline = request.timeout > 0 ? now() + Number(request.timeout) : undefined;\n        const abortOnTimeout = () => {\n          if (!request) return;\n          const xhr = request;\n          xhr.ontimeout();\n          xhr.abort();\n        };\n        if (deadline !== undefined) {\n          const scheduleTimeout = () => {\n            const remaining = deadline - now();\n            if (remaining > 0) {\n              // Browser timers overflow above the signed 32-bit delay limit.\n              timeoutId = setTimeout(scheduleTimeout, Math.min(remaining, 0x7fffffff));\n            } else {\n              abortOnTimeout();\n            }\n          };\n          scheduleTimeout();\n        }\n\n        cookies\n          .readAsync(xsrfCookieName)\n          .then((value) => {\n            if (!request) return;\n            // Promise callbacks may run before an overdue timer after a busy task.\n            if (deadline !== undefined && now() >= deadline) {\n              abortOnTimeout();\n              return;\n            }\n            if (value) {\n              const headerName =\n                utils.hasOwnProp(_config, 'xsrfHeaderName') && _config.xsrfHeaderName;\n              requestHeaders.set(headerName, value);\n            }\n            sendRequest();\n          })\n          .catch((error) => {\n            if (!request) return;\n            reject(AxiosError.from(error, null, config, request));\n            done();\n            request = null;\n          });\n      } else {\n        sendRequest();\n      }\n    });\n  };\n","import CanceledError from '../cancel/CanceledError.js';\nimport AxiosError from '../core/AxiosError.js';\nimport utils from '../utils.js';\n\nconst composeSignals = (signals, timeout) => {\n  signals = signals ? signals.filter(Boolean) : [];\n\n  if (!timeout && !signals.length) {\n    return;\n  }\n\n  const controller = new AbortController();\n\n  let aborted = false;\n\n  const onabort = function (reason) {\n    if (!aborted) {\n      aborted = true;\n      unsubscribe();\n      const err = reason instanceof Error ? reason : this.reason;\n      controller.abort(\n        err instanceof AxiosError\n          ? err\n          : new CanceledError(err instanceof Error ? err.message : err)\n      );\n    }\n  };\n\n  let timer =\n    timeout &&\n    setTimeout(() => {\n      timer = null;\n      onabort(new AxiosError(`timeout of ${timeout}ms exceeded`, AxiosError.ETIMEDOUT));\n    }, timeout);\n\n  const unsubscribe = () => {\n    if (!signals) {\n      return;\n    }\n    timer && clearTimeout(timer);\n    timer = null;\n    signals.forEach((signal) => {\n      const unsubscribeSignal = utils.getSafeProp(signal, 'unsubscribe');\n      utils.isFunction(unsubscribeSignal)\n        ? unsubscribeSignal.call(signal, onabort)\n        : signal.removeEventListener('abort', onabort);\n    });\n    signals = null;\n  };\n\n  signals.forEach((signal) => {\n    if (aborted) {\n      return;\n    }\n\n    if (signal.aborted) {\n      onabort.call(signal);\n      return;\n    }\n\n    signal.addEventListener('abort', onabort, { once: true });\n  });\n\n  const { signal } = controller;\n\n  signal.unsubscribe = () => utils.asap(unsubscribe);\n\n  return signal;\n};\n\nexport default composeSignals;\n","export const streamChunk = function* (chunk, chunkSize) {\n  let len = chunk.byteLength;\n\n  if (!chunkSize || len < chunkSize) {\n    yield chunk;\n    return;\n  }\n\n  let pos = 0;\n  let end;\n\n  while (pos < len) {\n    end = pos + chunkSize;\n    yield chunk.slice(pos, end);\n    pos = end;\n  }\n};\n\nexport const readBytes = async function* (iterable, chunkSize) {\n  for await (const chunk of readStream(iterable)) {\n    yield* streamChunk(chunk, chunkSize);\n  }\n};\n\nconst readStream = async function* (stream) {\n  if (stream[Symbol.asyncIterator]) {\n    yield* stream;\n    return;\n  }\n\n  const reader = stream.getReader();\n  try {\n    for (;;) {\n      const { done, value } = await reader.read();\n      if (done) {\n        break;\n      }\n      yield value;\n    }\n  } finally {\n    await reader.cancel();\n  }\n};\n\nexport const trackStream = (stream, chunkSize, onProgress, onFinish) => {\n  const iterator = readBytes(stream, chunkSize);\n\n  let bytes = 0;\n  let done;\n  let _onFinish = (e) => {\n    if (!done) {\n      done = true;\n      onFinish && onFinish(e);\n    }\n  };\n\n  return new ReadableStream(\n    {\n      async pull(controller) {\n        try {\n          const { done, value } = await iterator.next();\n\n          if (done) {\n            _onFinish();\n            controller.close();\n            return;\n          }\n\n          let len = value.byteLength;\n          if (onProgress) {\n            let loadedBytes = (bytes += len);\n            onProgress(loadedBytes);\n          }\n          controller.enqueue(new Uint8Array(value));\n        } catch (err) {\n          _onFinish(err);\n          throw err;\n        }\n      },\n      cancel(reason) {\n        _onFinish(reason);\n        return iterator.return();\n      },\n    },\n    {\n      highWaterMark: 2,\n    }\n  );\n};\n","import utils from '../utils.js';\n\nconst CRLF = '\\r\\n';\nconst normalizeLines = (value) => String(value).replace(/\\r\\n|\\r|\\n/g, CRLF);\nconst escapeName = (value) =>\n  String(value).replace(/[\\r\\n\"]/g, (char) =>\n    char === '\\r' ? '%0D' : char === '\\n' ? '%0A' : '%22'\n  );\n\n// Count UTF-8 bytes without allocating an encoded copy of a field. FormData\n// string values normalize line endings; Blob/File contents remain unchanged.\nconst stringBytes = (value, normalize) => {\n  let length = 0;\n  for (let i = 0; i < value.length; i++) {\n    const code = value.charCodeAt(i);\n    if (normalize && (code === 13 || code === 10)) {\n      if (code === 13 && value.charCodeAt(i + 1) === 10) i++;\n      length += 2;\n    } else if (code < 0x80) {\n      length++;\n    } else if (code < 0x800) {\n      length += 2;\n    } else if (\n      code >= 0xd800 &&\n      code <= 0xdbff &&\n      value.charCodeAt(i + 1) >= 0xdc00 &&\n      value.charCodeAt(i + 1) <= 0xdfff\n    ) {\n      length += 4;\n      i++;\n    } else {\n      length += 3;\n    }\n  }\n  return length;\n};\n\n// Describe serialization failures independently of any request library.\nexport class FormDataError extends TypeError {\n  constructor(message, reason) {\n    super(message);\n    this.name = 'FormDataError';\n    this.reason = reason;\n  }\n}\n\n// The caller supplies the boundary, Blob implementation, and limit error.\nexport default function formDataToBlob(form, Blob, limit, limitError, boundary) {\n  if (!utils.isFunction(Blob)) {\n    throw new FormDataError('Blob is not supported', 'blob');\n  }\n\n  if (\n    !utils.isString(boundary) ||\n    !/^[A-Za-z0-9'()+_,./:=? -]{1,70}$/.test(boundary) ||\n    / $/.test(boundary)\n  ) {\n    throw new FormDataError('Invalid multipart boundary', 'boundary');\n  }\n  const footer = '--' + boundary + '--' + CRLF;\n  let length = footer.length;\n  const parts = [];\n  const checkLength = (extra) => {\n    if (length + extra > limit) throw limitError();\n  };\n  checkLength(0);\n\n  for (const [name, value] of form) {\n    const isString = utils.isString(value);\n    const valueLength = isString ? stringBytes(value, true) : value.size;\n    if (!Number.isFinite(valueLength) || valueLength < 0) {\n      throw new FormDataError('Unsupported FormData part size', 'part');\n    }\n    // Reject large values and names before building normalized header strings.\n    checkLength(\n      valueLength +\n        stringBytes(name, true) +\n        (!isString && value.name ? stringBytes(value.name, false) : 0) +\n        (!isString && value.type ? stringBytes(value.type, false) : 0)\n    );\n\n    let header =\n      '--' +\n      boundary +\n      CRLF +\n      'Content-Disposition: form-data; name=\"' +\n      escapeName(normalizeLines(name)) +\n      '\"';\n    if (!isString) {\n      header +=\n        '; filename=\"' +\n        escapeName(utils.isString(value.name) ? value.name : 'blob') +\n        '\"' +\n        CRLF +\n        'Content-Type: ' +\n        String(value.type || 'application/octet-stream').replace(/[\\r\\n]/g, '');\n    }\n    header += CRLF + CRLF;\n    const partLength = stringBytes(header, false) + valueLength + CRLF.length;\n    checkLength(partLength);\n    length += partLength;\n    parts.push({ header, value, isString });\n  }\n\n  // Native Blob composition retains existing Blob/File data. No file is read\n  // and no complete multipart ArrayBuffer is created to determine its length.\n  const blobParts = [];\n  for (const part of parts) {\n    blobParts.push(part.header, part.isString ? normalizeLines(part.value) : part.value, CRLF);\n  }\n  blobParts.push(footer);\n  return new Blob(blobParts, { type: 'multipart/form-data; boundary=' + boundary });\n}\n","/**\n * Estimate data: URL byte lengths *without* allocating large buffers.\n * - Fetch percent-decodes a base64 body before decoding it.\n * - Node's Buffer.from(body, 'base64') sizes its backing allocation from the\n *   percent-decoded body, including ignored characters and content after padding.\n * - Non-base64 data is percent-decoded and then encoded as UTF-8.\n */\nconst isHexDigit = (charCode) =>\n  (charCode >= 48 && charCode <= 57) ||\n  (charCode >= 65 && charCode <= 70) ||\n  (charCode >= 97 && charCode <= 102);\n\nconst isPercentEncodedByte = (str, i, len) =>\n  i + 2 < len && isHexDigit(str.charCodeAt(i + 1)) && isHexDigit(str.charCodeAt(i + 2));\n\nconst hexValue = (charCode) => (charCode <= 57 ? charCode - 48 : (charCode & 0xdf) - 55);\n\nconst isBase64Char = (charCode) =>\n  (charCode >= 65 && charCode <= 90) || // A-Z\n  (charCode >= 97 && charCode <= 122) || // a-z\n  (charCode >= 48 && charCode <= 57) || // 0-9\n  charCode === 43 || // +\n  charCode === 47 || // /\n  charCode === 45 || // - (base64url)\n  charCode === 95; // _ (base64url)\n\nconst isBase64Whitespace = (charCode) =>\n  charCode === 9 || charCode === 10 || charCode === 12 || charCode === 13 || charCode === 32;\n\nconst base64Bytes = (significant) => {\n  const groups = Math.floor(significant / 4);\n  const remainder = significant % 4;\n  return groups * 3 + (remainder === 2 ? 1 : remainder === 3 ? 2 : 0);\n};\n\n// Buffer.byteLength(body, 'base64') uses the raw string length as an allocation\n// upper bound even when Buffer.from later ignores characters or stops at '='.\nconst estimateBase64BufferAllocation = (body) => {\n  const len = body.length;\n  let padding = 0;\n\n  if (len > 0 && body.charCodeAt(len - 1) === 61 /* '=' */) {\n    padding++;\n\n    if (len > 1 && body.charCodeAt(len - 2) === 61 /* '=' */) {\n      padding++;\n    }\n  }\n\n  return Math.floor(((len - padding) * 3) / 4);\n};\n\nconst estimatePercentDecodedBase64BufferAllocation = (body) => {\n  // Ordinary Base64 needs only its length and trailing padding.\n  if (body.indexOf('%') === -1) {\n    return estimateBase64BufferAllocation(body);\n  }\n\n  let length = 0;\n  let previous = 0;\n  let last = 0;\n\n  for (let i = 0, len = body.length; i < len; i++) {\n    let code = body.charCodeAt(i);\n    if (code === 37 /* '%' */ && isPercentEncodedByte(body, i, len)) {\n      code = hexValue(body.charCodeAt(i + 1)) * 16 + hexValue(body.charCodeAt(i + 2));\n      i += 2;\n    }\n    length++;\n    previous = last;\n    last = code;\n  }\n\n  const padding = last === 61 ? (previous === 61 ? 2 : 1) : 0;\n  return Math.floor(((length - padding) * 3) / 4);\n};\n\nconst estimatePercentDecodedBase64Bytes = (body) => {\n  const len = body.length;\n  let significant = 0;\n  let padding = 0;\n  let invalid = false;\n\n  for (let i = 0; i < len; i++) {\n    let code = body.charCodeAt(i);\n\n    if (code === 37 /* '%' */ && isPercentEncodedByte(body, i, len)) {\n      code = hexValue(body.charCodeAt(i + 1)) * 16 + hexValue(body.charCodeAt(i + 2));\n      i += 2;\n    }\n\n    if (isBase64Whitespace(code)) {\n      continue;\n    }\n\n    if (code === 61 /* '=' */) {\n      padding++;\n      continue;\n    }\n\n    if (!isBase64Char(code) || padding > 0) {\n      invalid = true;\n      continue;\n    }\n\n    significant++;\n  }\n\n  // Fetch rejects malformed forgiving-base64 input. Returning the raw-size\n  // allocation bound keeps that invalid input from becoming a pre-check bypass.\n  if (\n    invalid ||\n    padding > 2 ||\n    (padding > 0 && (significant + padding) % 4 !== 0) ||\n    significant % 4 === 1\n  ) {\n    return estimateBase64BufferAllocation(body);\n  }\n\n  return base64Bytes(significant);\n};\n\nconst estimateDataURLBytes = (url, estimateBase64, base64Pattern) => {\n  if (!url || typeof url !== 'string') return 0;\n  if (!/^data:/i.test(url)) return 0;\n\n  const comma = url.indexOf(',');\n  if (comma < 0) return 0;\n\n  const meta = url.slice(5, comma);\n  const body = url.slice(comma + 1);\n  const isBase64 = base64Pattern.test(meta);\n\n  if (isBase64) {\n    return estimateBase64(body);\n  }\n\n  // Compute UTF-8 byte length directly from UTF-16 code units without allocating\n  // a byte buffer (TextEncoder.encode would defeat the DoS guard on large bodies).\n  // Valid %XX triplets count as one decoded byte; this matches the bytes that\n  // decodeURIComponent(body) would produce before Buffer re-encodes the string.\n  let bytes = 0;\n  for (let i = 0, len = body.length; i < len; i++) {\n    const c = body.charCodeAt(i);\n    if (c === 37 /* '%' */ && isPercentEncodedByte(body, i, len)) {\n      bytes += 1;\n      i += 2;\n    } else if (c < 0x80) {\n      bytes += 1;\n    } else if (c < 0x800) {\n      bytes += 2;\n    } else if (c >= 0xd800 && c <= 0xdbff && i + 1 < len) {\n      const next = body.charCodeAt(i + 1);\n      if (next >= 0xdc00 && next <= 0xdfff) {\n        bytes += 4;\n        i++;\n      } else {\n        bytes += 3;\n      }\n    } else {\n      bytes += 3;\n    }\n  }\n  return bytes;\n};\n\n/**\n * Estimate the percent-decoded payload size used by Fetch data: URLs.\n *\n * @param {string} url\n * @returns {number}\n */\nexport default function estimateDataURLDecodedBytes(url) {\n  // Fetch removes URL fragments before processing a data: URL.\n  const fragmentIndex = typeof url === 'string' ? url.indexOf('#') : -1;\n\n  return estimateDataURLBytes(\n    fragmentIndex === -1 ? url : url.slice(0, fragmentIndex),\n    estimatePercentDecodedBase64Bytes,\n    /; *base64[\\t\\n\\f\\r ]*$/i\n  );\n}\n\n/**\n * Estimate the Buffer backing allocation used after Node's percent-decoding step.\n *\n * @param {string} url\n * @returns {number}\n */\nexport function estimateDataURLBufferAllocation(url) {\n  // Match fromDataURI's case-insensitive protocol and encoding suffix.\n  return estimateDataURLBytes(url, estimatePercentDecodedBase64BufferAllocation, /;base64$/i);\n}\n","import platform from '../platform/index.js';\nimport utils from '../utils.js';\nimport AxiosError from '../core/AxiosError.js';\nimport composeSignals from '../helpers/composeSignals.js';\nimport { trackStream } from '../helpers/trackStream.js';\nimport createMultipartBody from '../core/createMultipartBody.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\nimport {\n  progressEventReducer,\n  progressEventDecorator,\n  asyncDecorator,\n} from '../helpers/progressEventReducer.js';\nimport resolveConfig from '../helpers/resolveConfig.js';\nimport settle from '../core/settle.js';\nimport estimateDataURLDecodedBytes from '../helpers/estimateDataURLDecodedBytes.js';\nimport { VERSION } from '../env/data.js';\nimport { toByteStringHeaderObject } from '../helpers/sanitizeHeaderValue.js';\n\nconst DEFAULT_CHUNK_SIZE = 64 * 1024;\n\nconst DEFAULT_REQUEST_OPTIONS = {\n  cache: 'default',\n  redirect: 'follow',\n  referrer: 'about:client',\n  referrerPolicy: '',\n  mode: 'cors',\n  integrity: '',\n  keepalive: false,\n  priority: 'auto',\n  window: null,\n};\n\nconst { isFunction } = utils;\n\n/**\n * Encode a UTF-8 string to a Latin-1 byte string for use with btoa().\n * This is a modern replacement for the deprecated unescape(encodeURIComponent(str)) pattern.\n *\n * @param {string} str The string to encode\n *\n * @returns {string} UTF-8 bytes as a Latin-1 string\n */\nconst encodeUTF8 = (str) =>\n  encodeURIComponent(str).replace(/%([0-9A-F]{2})/gi, (_, hex) =>\n    String.fromCharCode(parseInt(hex, 16))\n  );\n\n// Node's WHATWG URL parser returns `username` and `password` percent-encoded.\n// Decode before composing the `auth` option so credentials such as\n// `my%40email.com:pass` are sent as `my@email.com:pass`. Falls back to the\n// original value for malformed input so a bad encoding never throws.\nconst decodeURIComponentSafe = (value) => {\n  if (!utils.isString(value)) {\n    return value;\n  }\n\n  try {\n    return decodeURIComponent(value);\n  } catch (error) {\n    return value;\n  }\n};\n\nconst test = (fn, ...args) => {\n  try {\n    return !!fn(...args);\n  } catch (e) {\n    return false;\n  }\n};\n\nconst maybeWithAuthCredentials = (url) => {\n  const protocolIndex = url.indexOf('://');\n  let urlToCheck = url;\n  if (protocolIndex !== -1) {\n    urlToCheck = urlToCheck.slice(protocolIndex + 3);\n  }\n  return urlToCheck.includes('@') || urlToCheck.includes(':');\n};\n\nconst factory = (env) => {\n  const globalObject =\n    utils.global !== undefined && utils.global !== null ? utils.global : globalThis;\n  const { ReadableStream, TextEncoder } = globalObject;\n\n  env = utils.merge.call(\n    {\n      skipUndefined: true,\n    },\n    {\n      Request: globalObject.Request,\n      Response: globalObject.Response,\n      Blob: globalObject.Blob,\n    },\n    env\n  );\n\n  const envFetch = utils.hasOwnProp(env, 'fetch') ? env.fetch : undefined;\n  const { Request, Response, Blob } = env;\n  const isFetchSupported = envFetch ? isFunction(envFetch) : typeof fetch === 'function';\n  const isRequestSupported = isFunction(Request);\n  const isResponseSupported = isFunction(Response);\n\n  if (!isFetchSupported) {\n    return false;\n  }\n\n  const isReadableStreamSupported = isFetchSupported && isFunction(ReadableStream);\n\n  const encodeText =\n    isFetchSupported &&\n    (typeof TextEncoder === 'function'\n      ? (\n          (encoder) => (str) =>\n            encoder.encode(str)\n        )(new TextEncoder())\n      : async (str) => new Uint8Array(await new Request(str).arrayBuffer()));\n\n  const supportsRequestStream =\n    isRequestSupported &&\n    isReadableStreamSupported &&\n    test(() => {\n      let duplexAccessed = false;\n\n      const request = new Request(platform.origin, {\n        body: new ReadableStream(),\n        method: 'POST',\n        get duplex() {\n          duplexAccessed = true;\n          return 'half';\n        },\n      });\n\n      const hasContentType = request.headers.has('Content-Type');\n\n      if (request.body != null) {\n        request.body.cancel();\n      }\n\n      return duplexAccessed && !hasContentType;\n    });\n\n  const supportsResponseStream =\n    isResponseSupported &&\n    isReadableStreamSupported &&\n    test(() => utils.isReadableStream(new Response('').body));\n\n  // Some runtimes reject every explicit cache mode. Use own defaults for both\n  // probes so unrelated polluted options cannot affect cache-mode detection.\n  const requestDefaults = Object.assign(Object.create(null), DEFAULT_REQUEST_OPTIONS);\n\n  if (isRequestSupported && !test(() => new Request(platform.origin, requestDefaults))) {\n    delete requestDefaults.cache;\n\n    // Only omit cache when that makes Request construction succeed. Otherwise\n    // retain the explicit default that protects supporting runtimes from pollution.\n    if (!test(() => new Request(platform.origin, requestDefaults))) {\n      requestDefaults.cache = DEFAULT_REQUEST_OPTIONS.cache;\n    }\n  }\n\n  const resolvers = {\n    stream: supportsResponseStream && ((res) => res.body),\n  };\n\n  isFetchSupported &&\n    (() => {\n      ['text', 'arrayBuffer', 'blob', 'formData', 'stream'].forEach((type) => {\n        !resolvers[type] &&\n          (resolvers[type] = (res, config) => {\n            let method = res && res[type];\n\n            if (method) {\n              return method.call(res);\n            }\n\n            throw new AxiosError(\n              `Response type '${type}' is not supported`,\n              AxiosError.ERR_NOT_SUPPORT,\n              config\n            );\n          });\n      });\n    })();\n\n  const getBodyLength = async (body) => {\n    if (body == null) {\n      return 0;\n    }\n\n    if (utils.isBlob(body)) {\n      return body.size;\n    }\n\n    if (utils.isArrayBufferView(body) || utils.isArrayBuffer(body)) {\n      return body.byteLength;\n    }\n\n    if (utils.isURLSearchParams(body)) {\n      body = body + '';\n    }\n\n    if (utils.isString(body)) {\n      return (await encodeText(body)).byteLength;\n    }\n  };\n\n  const resolveBodyLength = async (headers, body) => {\n    const length = utils.toFiniteNumber(headers.getContentLength());\n\n    return length == null ? getBodyLength(body) : length;\n  };\n\n  return async (config) => {\n    let {\n      url,\n      method,\n      data,\n      signal,\n      cancelToken,\n      timeout,\n      onDownloadProgress,\n      onUploadProgress,\n      responseType,\n      headers,\n      withCredentials = 'same-origin',\n      fetchOptions,\n      maxContentLength,\n      maxBodyLength,\n      maxRedirects,\n    } = resolveConfig(config);\n\n    const hasMaxContentLength = utils.isNumber(maxContentLength) && maxContentLength > -1;\n    const hasMaxBodyLength = utils.isNumber(maxBodyLength) && maxBodyLength > -1;\n    const own = (key) => (utils.hasOwnProp(config, key) ? config[key] : undefined);\n\n    let _fetch = envFetch || fetch;\n\n    responseType = responseType ? (responseType + '').toLowerCase() : 'text';\n\n    let composedSignal = composeSignals(\n      [signal, cancelToken && cancelToken.toAbortSignal()],\n      timeout\n    );\n\n    let request = null;\n\n    const unsubscribe =\n      composedSignal &&\n      composedSignal.unsubscribe &&\n      (() => {\n        composedSignal.unsubscribe();\n      });\n\n    let requestContentLength;\n\n    // AxiosErrors we raise while request or response bodies are being streamed. Captured\n    // by identity so the catch block can surface it directly, regardless of\n    // how the runtime wraps the resulting fetch rejection (undici exposes it\n    // as `err.cause`; some browsers drop the original error entirely).\n    let pendingBodyError = null;\n    let pendingResponseError = null;\n\n    const maxBodyLengthError = () =>\n      new AxiosError(\n        'Request body larger than maxBodyLength limit',\n        AxiosError.ERR_BAD_REQUEST,\n        config,\n        request\n      );\n\n    try {\n      // HTTP basic authentication\n      let auth = undefined;\n      const configAuth = own('auth');\n\n      if (configAuth) {\n        const username = utils.getSafeProp(configAuth, 'username') || '';\n        const password = utils.getSafeProp(configAuth, 'password') || '';\n        auth = {\n          username,\n          password,\n        };\n      }\n\n      let parsedURL;\n      if (maybeWithAuthCredentials(url)) {\n        parsedURL = new URL(url, platform.origin);\n\n        if (!auth && (parsedURL.username || parsedURL.password)) {\n          const urlUsername = decodeURIComponentSafe(parsedURL.username);\n          const urlPassword = decodeURIComponentSafe(parsedURL.password);\n          auth = {\n            username: urlUsername,\n            password: urlPassword,\n          };\n        }\n\n        if (parsedURL.username || parsedURL.password) {\n          parsedURL.username = '';\n          parsedURL.password = '';\n          url = parsedURL.href;\n        }\n      }\n\n      if (auth) {\n        headers.delete('authorization');\n        headers.set(\n          'Authorization',\n          'Basic ' + btoa(encodeUTF8((auth.username || '') + ':' + (auth.password || '')))\n        );\n      }\n\n      // Enforce maxContentLength for data: URLs up-front so we never materialize\n      // an oversized payload. The HTTP adapter applies the same check (see http.js\n      // \"if (protocol === 'data:')\" branch).\n      if (hasMaxContentLength && parsedURL && parsedURL.protocol === 'data:') {\n        const estimated = estimateDataURLDecodedBytes(parsedURL.href);\n        if (estimated > maxContentLength) {\n          throw new AxiosError(\n            'maxContentLength size of ' + maxContentLength + ' exceeded',\n            AxiosError.ERR_BAD_RESPONSE,\n            config,\n            request\n          );\n        }\n      }\n\n      const formContentType =\n        utils.isSpecCompliantForm(data) && AxiosHeaders.from(own('headers')).getContentType();\n      let formBoundary;\n      if (\n        utils.isString(formContentType) &&\n        /^multipart\\/form-data(?:\\s*;|$)/i.test(formContentType.trim())\n      ) {\n        const parameters = AxiosHeaders.parseParameters(formContentType);\n        if (utils.hasOwnProp(parameters, 'boundary')) formBoundary = parameters.boundary;\n      }\n\n      if (\n        utils.isSpecCompliantForm(data) &&\n        method !== 'get' &&\n        method !== 'head' &&\n        (hasMaxBodyLength ||\n          (onUploadProgress && supportsRequestStream) ||\n          formBoundary !== undefined)\n      ) {\n        data = createMultipartBody(\n          data,\n          Blob,\n          hasMaxBodyLength ? maxBodyLength : Infinity,\n          maxBodyLengthError,\n          formBoundary\n        );\n        // Blob.type lowercases its value, including a case-sensitive boundary.\n        // Retain the caller's header when an explicit boundary was serialized.\n        headers.setContentType(formBoundary === undefined ? data.type : formContentType);\n        requestContentLength = data.size;\n      }\n\n      // Enforce maxBodyLength against known-size bodies before dispatch using\n      // the body's *actual* size — never a caller-declared Content-Length,\n      // which could under-report to slip an oversized body past the check.\n      // Unknown-size streams return undefined here and are counted per-chunk\n      // below as fetch consumes them.\n      if (hasMaxBodyLength && method !== 'get' && method !== 'head') {\n        const outboundLength = await getBodyLength(data);\n        if (typeof outboundLength === 'number' && isFinite(outboundLength)) {\n          requestContentLength = outboundLength;\n          if (outboundLength > maxBodyLength) {\n            throw maxBodyLengthError();\n          }\n        }\n      }\n\n      // A streamed body under maxBodyLength must be counted as fetch consumes\n      // it; its size is never trusted from a caller-declared Content-Length.\n      const mustEnforceStreamBody =\n        hasMaxBodyLength && (utils.isReadableStream(data) || utils.isStream(data));\n\n      const trackRequestStream = (stream, onProgress, flush) =>\n        trackStream(\n          stream,\n          DEFAULT_CHUNK_SIZE,\n          (loadedBytes) => {\n            if (hasMaxBodyLength && loadedBytes > maxBodyLength) {\n              throw (pendingBodyError = maxBodyLengthError());\n            }\n            onProgress && onProgress(loadedBytes);\n          },\n          flush\n        );\n\n      if (\n        supportsRequestStream &&\n        method !== 'get' &&\n        method !== 'head' &&\n        (onUploadProgress || mustEnforceStreamBody)\n      ) {\n        requestContentLength =\n          requestContentLength == null\n            ? await resolveBodyLength(headers, data)\n            : requestContentLength;\n\n        // A declared length of 0 is only trusted to skip the wrap when we are\n        // not enforcing a stream limit (which must not rely on that header).\n        if (requestContentLength !== 0 || mustEnforceStreamBody) {\n          let _request = new Request(url, {\n            method: 'POST',\n            body: data,\n            duplex: 'half',\n          });\n\n          let contentTypeHeader;\n\n          if (\n            utils.isFormData(data) &&\n            (contentTypeHeader = _request.headers.get('content-type'))\n          ) {\n            headers.setContentType(contentTypeHeader);\n          }\n\n          if (_request.body) {\n            const [onProgress, flush] =\n              (onUploadProgress &&\n                progressEventDecorator(\n                  requestContentLength,\n                  progressEventReducer(asyncDecorator(onUploadProgress))\n                )) ||\n              [];\n\n            data = trackRequestStream(_request.body, onProgress, flush);\n          }\n        }\n      } else if (\n        mustEnforceStreamBody &&\n        !isRequestSupported &&\n        isReadableStreamSupported &&\n        method !== 'get' &&\n        method !== 'head'\n      ) {\n        data = trackRequestStream(data);\n      } else if (\n        mustEnforceStreamBody &&\n        isRequestSupported &&\n        !supportsRequestStream &&\n        method !== 'get' &&\n        method !== 'head'\n      ) {\n        throw new AxiosError(\n          'Stream request bodies are not supported by the current fetch implementation',\n          AxiosError.ERR_NOT_SUPPORT,\n          config,\n          request\n        );\n      }\n\n      if (!utils.isString(withCredentials)) {\n        withCredentials = withCredentials ? 'include' : 'omit';\n      }\n\n      // Cloudflare Workers throws when credentials are defined\n      // see https://github.com/cloudflare/workerd/issues/902\n      const isCredentialsSupported = isRequestSupported && 'credentials' in Request.prototype;\n\n      // If data is FormData and Content-Type is multipart/form-data without boundary,\n      // delete it so fetch can set it correctly with the boundary\n      if (utils.isFormData(data)) {\n        const contentType = headers.getContentType();\n        if (\n          contentType &&\n          /^multipart\\/form-data/i.test(contentType) &&\n          !/boundary=/i.test(contentType)\n        ) {\n          headers.delete('content-type');\n        }\n      }\n\n      // Set User-Agent header if not already set (fetch defaults to 'node' in Node.js)\n      headers.set('User-Agent', 'axios/' + VERSION, false);\n\n      const safeFetchOptions =\n        fetchOptions == null ? fetchOptions : Object.assign(Object.create(null), fetchOptions);\n\n      if (safeFetchOptions) {\n        // These options are owned by Axios and are already reflected in the\n        // resolved Request passed to fetch.\n        delete safeFetchOptions.body;\n        delete safeFetchOptions.headers;\n        delete safeFetchOptions.method;\n        delete safeFetchOptions.signal;\n        delete safeFetchOptions.duplex;\n        delete safeFetchOptions.credentials;\n      }\n\n      const resolvedOptions = Object.assign(Object.create(null), safeFetchOptions, {\n        signal: composedSignal,\n        method: method.toUpperCase(),\n        headers: toByteStringHeaderObject(headers.normalize()),\n        body: data,\n        duplex: 'half',\n        credentials: isCredentialsSupported ? withCredentials : undefined,\n      });\n\n      if (isRequestSupported) {\n        utils.forEach(requestDefaults, (value, key) => {\n          if (resolvedOptions[key] === undefined) {\n            resolvedOptions[key] = value;\n          }\n        });\n\n        if (resolvedOptions.signal === undefined) {\n          resolvedOptions.signal = null;\n        }\n\n        if (resolvedOptions.body === undefined) {\n          resolvedOptions.body = null;\n        }\n      }\n\n      if (maxRedirects === 0) {\n        resolvedOptions.redirect = 'manual';\n\n        if (safeFetchOptions) {\n          safeFetchOptions.redirect = 'manual';\n        }\n      }\n\n      request = isRequestSupported && new Request(url, resolvedOptions);\n\n      let response = await (isRequestSupported\n        ? _fetch(request, safeFetchOptions)\n        : _fetch(url, resolvedOptions));\n\n      const responseHeaders = AxiosHeaders.from(response.headers);\n\n      // Cheap pre-check: if the server honestly declares a content-length that\n      // already exceeds the cap, reject before we start streaming.\n      if (hasMaxContentLength) {\n        const declaredLength = utils.toFiniteNumber(responseHeaders.getContentLength());\n        if (declaredLength != null && declaredLength > maxContentLength) {\n          throw new AxiosError(\n            'maxContentLength size of ' + maxContentLength + ' exceeded',\n            AxiosError.ERR_BAD_RESPONSE,\n            config,\n            request\n          );\n        }\n      }\n\n      const isStreamResponse =\n        supportsResponseStream && (responseType === 'stream' || responseType === 'response');\n\n      if (\n        supportsResponseStream &&\n        response.body &&\n        (onDownloadProgress || hasMaxContentLength || (isStreamResponse && unsubscribe))\n      ) {\n        const options = {};\n\n        ['status', 'statusText', 'headers'].forEach((prop) => {\n          options[prop] = response[prop];\n        });\n\n        const responseContentLength = utils.toFiniteNumber(responseHeaders.getContentLength());\n\n        const [onProgress, flush] =\n          (onDownloadProgress &&\n            progressEventDecorator(\n              responseContentLength,\n              progressEventReducer(asyncDecorator(onDownloadProgress), true)\n            )) ||\n          [];\n\n        let bytesRead = 0;\n        const onChunkProgress = (loadedBytes) => {\n          if (hasMaxContentLength) {\n            bytesRead = loadedBytes;\n            if (bytesRead > maxContentLength) {\n              throw (pendingResponseError = new AxiosError(\n                'maxContentLength size of ' + maxContentLength + ' exceeded',\n                AxiosError.ERR_BAD_RESPONSE,\n                config,\n                request\n              ));\n            }\n          }\n          onProgress && onProgress(loadedBytes);\n        };\n\n        response = new Response(\n          trackStream(response.body, DEFAULT_CHUNK_SIZE, onChunkProgress, () => {\n            flush && flush();\n            unsubscribe && unsubscribe();\n          }),\n          options\n        );\n      }\n\n      responseType = responseType || 'text';\n\n      let responseData = await resolvers[utils.findKey(resolvers, responseType) || 'text'](\n        response,\n        config\n      );\n\n      // Fallback enforcement for environments without ReadableStream support\n      // (legacy runtimes). Detect materialized size from typed output; skip\n      // streams/Response passthrough since the user will read those themselves.\n      if (hasMaxContentLength && !supportsResponseStream && !isStreamResponse) {\n        let materializedSize;\n        if (responseData != null) {\n          if (typeof responseData.byteLength === 'number') {\n            materializedSize = responseData.byteLength;\n          } else if (typeof responseData.size === 'number') {\n            materializedSize = responseData.size;\n          } else if (typeof responseData === 'string') {\n            materializedSize =\n              typeof TextEncoder === 'function'\n                ? new TextEncoder().encode(responseData).byteLength\n                : responseData.length;\n          }\n        }\n        if (typeof materializedSize === 'number' && materializedSize > maxContentLength) {\n          throw new AxiosError(\n            'maxContentLength size of ' + maxContentLength + ' exceeded',\n            AxiosError.ERR_BAD_RESPONSE,\n            config,\n            request\n          );\n        }\n      }\n\n      !isStreamResponse && unsubscribe && unsubscribe();\n\n      return await new Promise((resolve, reject) => {\n        settle(resolve, reject, {\n          data: responseData,\n          headers: AxiosHeaders.from(response.headers),\n          status: response.status,\n          statusText: response.statusText,\n          config,\n          request,\n        });\n      });\n    } catch (err) {\n      unsubscribe && unsubscribe();\n\n      // Safari can surface fetch aborts as a DOMException-like object whose\n      // branded getters throw. Prefer our composed signal reason before reading\n      // the caught error, preserving timeout vs cancellation semantics.\n      if (composedSignal && composedSignal.aborted && composedSignal.reason instanceof AxiosError) {\n        const canceledError = composedSignal.reason;\n        canceledError.config = config;\n        request && (canceledError.request = request);\n        if (err !== canceledError) {\n          // Non-enumerable to match native Error `cause` semantics so loggers\n          // don't recurse into circular fetch internals (see #7205).\n          Object.defineProperty(canceledError, 'cause', {\n            __proto__: null,\n            value: err,\n            writable: true,\n            enumerable: false,\n            configurable: true,\n          });\n        }\n        throw canceledError;\n      }\n\n      // Surface a maxBodyLength violation we raised while the request body was\n      // being streamed. Keeping the original error (rather than reading\n      // `err.cause.isAxiosError`) keeps the error deterministic across runtimes\n      // and avoids both prototype-pollution reads and mis-attributing a foreign\n      // AxiosError that merely happened to land in `err.cause`.\n      if (pendingBodyError) {\n        request && !pendingBodyError.request && (pendingBodyError.request = request);\n        throw pendingBodyError;\n      }\n\n      if (pendingResponseError) {\n        throw pendingResponseError;\n      }\n\n      // Re-throw AxiosErrors we raised synchronously (data: URL / content-length\n      // pre-checks, response size enforcement) without re-wrapping them.\n      if (err instanceof AxiosError) {\n        request && !err.request && (err.request = request);\n        throw err;\n      }\n\n      if (err && err.name === 'TypeError' && /Load failed|fetch/i.test(err.message)) {\n        const networkError = new AxiosError(\n          'Network Error',\n          AxiosError.ERR_NETWORK,\n          config,\n          request,\n          err && err.response\n        );\n        // Non-enumerable to match native Error `cause` semantics so loggers\n        // don't recurse into circular fetch internals (see #7205).\n        Object.defineProperty(networkError, 'cause', {\n          __proto__: null,\n          value: err.cause || err,\n          writable: true,\n          enumerable: false,\n          configurable: true,\n        });\n        throw networkError;\n      }\n\n      throw AxiosError.from(err, err && err.code, config, request, err && err.response);\n    }\n  };\n};\n\nconst seedCache = new Map();\n\nexport const getFetch = (config) => {\n  const env = Object.create(null);\n  const configuredEnv = config && utils.hasOwnProp(config, 'env') && config.env;\n  ['fetch', 'Request', 'Response', 'Blob'].forEach((key) => {\n    if (configuredEnv && utils.hasOwnProp(configuredEnv, key)) {\n      env[key] = configuredEnv[key];\n    }\n  });\n  const { fetch, Request, Response, Blob } = env;\n  const seeds = [Request, Response, fetch, Blob];\n\n  let len = seeds.length,\n    i = len,\n    seed,\n    target,\n    map = seedCache;\n\n  while (i--) {\n    seed = seeds[i];\n    target = map.get(seed);\n\n    target === undefined && map.set(seed, (target = i ? new Map() : factory(env)));\n\n    map = target;\n  }\n\n  return target;\n};\n\nconst adapter = getFetch();\n\nexport default adapter;\n","import utils from '../utils.js';\nimport platform from '../platform/index.js';\nimport AxiosError from './AxiosError.js';\nimport formDataToBlob, { FormDataError } from '../helpers/formDataToBlob.js';\n\nexport default function createMultipartBody(form, Blob, limit, limitError, boundary) {\n  // Report missing Blob support before trying to select a random source.\n  if (!utils.isFunction(Blob)) {\n    throw new AxiosError('Blob is not supported', AxiosError.ERR_NOT_SUPPORT);\n  }\n\n  if (boundary === undefined) {\n    if (utils.isFunction(platform.generateString)) {\n      boundary = 'axios-' + platform.generateString(36, '0123456789abcdef');\n    } else {\n      const crypto = utils.global.crypto;\n      if (!crypto || !utils.isFunction(crypto.getRandomValues)) {\n        throw new AxiosError('Random byte generation is not supported', AxiosError.ERR_NOT_SUPPORT);\n      }\n      const random = new Uint8Array(18);\n      crypto.getRandomValues(random);\n      boundary =\n        'axios-' + Array.from(random, (value) => ('0' + value.toString(16)).slice(-2)).join('');\n    }\n  }\n\n  try {\n    return formDataToBlob(form, Blob, limit, limitError, boundary);\n  } catch (error) {\n    if (error instanceof FormDataError) {\n      const code =\n        error.reason === 'boundary' ? AxiosError.ERR_BAD_OPTION_VALUE : AxiosError.ERR_BAD_REQUEST;\n      throw new AxiosError(error.message, code);\n    }\n    throw error;\n  }\n}\n","import utils from '../utils.js';\nimport httpAdapter from './http.js';\nimport xhrAdapter from './xhr.js';\nimport * as fetchAdapter from './fetch.js';\nimport AxiosError from '../core/AxiosError.js';\n\n/**\n * Known adapters mapping.\n * Provides environment-specific adapters for Axios:\n * - `http` for Node.js\n * - `xhr` for browsers\n * - `fetch` for fetch API-based requests\n *\n * @type {Object<string, Function|Object>}\n */\nconst knownAdapters = {\n  http: httpAdapter,\n  xhr: xhrAdapter,\n  fetch: {\n    get: fetchAdapter.getFetch,\n  },\n};\n\n// Assign adapter names for easier debugging and identification\nutils.forEach(knownAdapters, (fn, value) => {\n  if (fn) {\n    try {\n      // Null-proto descriptors so a polluted Object.prototype.get cannot turn\n      // these data descriptors into accessor descriptors on the way in.\n      Object.defineProperty(fn, 'name', { __proto__: null, value });\n    } catch (e) {\n      // eslint-disable-next-line no-empty\n    }\n    Object.defineProperty(fn, 'adapterName', { __proto__: null, value });\n  }\n});\n\n/**\n * Render a rejection reason string for unknown or unsupported adapters\n *\n * @param {string} reason\n * @returns {string}\n */\nconst renderReason = (reason) => `- ${reason}`;\n\n/**\n * Check if the adapter is resolved (function, null, or false)\n *\n * @param {Function|null|false} adapter\n * @returns {boolean}\n */\nconst isResolvedHandle = (adapter) =>\n  utils.isFunction(adapter) || adapter === null || adapter === false;\n\n/**\n * Get the first suitable adapter from the provided list.\n * Tries each adapter in order until a supported one is found.\n * Throws an AxiosError if no adapter is suitable.\n *\n * @param {Array<string|Function>|string|Function} adapters - Adapter(s) by name or function.\n * @param {Object} config - Axios request configuration\n * @throws {AxiosError} If no suitable adapter is available\n * @returns {Function} The resolved adapter function\n */\nfunction getAdapter(adapters, config) {\n  adapters = utils.isArray(adapters) ? adapters : [adapters];\n\n  const { length } = adapters;\n  let nameOrAdapter;\n  let adapter;\n\n  const rejectedReasons = {};\n\n  for (let i = 0; i < length; i++) {\n    nameOrAdapter = adapters[i];\n    let id;\n\n    adapter = nameOrAdapter;\n\n    if (!isResolvedHandle(nameOrAdapter)) {\n      adapter = knownAdapters[(id = String(nameOrAdapter)).toLowerCase()];\n\n      if (adapter === undefined) {\n        throw new AxiosError(`Unknown adapter '${id}'`);\n      }\n    }\n\n    if (adapter && (utils.isFunction(adapter) || (adapter = adapter.get(config)))) {\n      break;\n    }\n\n    rejectedReasons[id || '#' + i] = adapter;\n  }\n\n  if (!adapter) {\n    const reasons = Object.entries(rejectedReasons).map(\n      ([id, state]) =>\n        `adapter ${id} ` +\n        (state === false ? 'is not supported by the environment' : 'is not available in the build')\n    );\n\n    let s = length\n      ? reasons.length > 1\n        ? 'since :\\n' + reasons.map(renderReason).join('\\n')\n        : ' ' + renderReason(reasons[0])\n      : 'as no adapter specified';\n\n    throw new AxiosError(\n      `There is no suitable adapter to dispatch the request ` + s,\n      AxiosError.ERR_NOT_SUPPORT\n    );\n  }\n\n  return adapter;\n}\n\n/**\n * Exports Axios adapters and utility to resolve an adapter\n */\nexport default {\n  /**\n   * Resolve an adapter from a list of adapter names or functions.\n   * @type {Function}\n   */\n  getAdapter,\n\n  /**\n   * Exposes all known adapters\n   * @type {Object<string, Function|Object>}\n   */\n  adapters: knownAdapters,\n};\n","'use strict';\n\nimport transformData from './transformData.js';\nimport isCancel from '../cancel/isCancel.js';\nimport defaults from '../defaults/index.js';\nimport CanceledError from '../cancel/CanceledError.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\nimport adapters from '../adapters/adapters.js';\nimport utils from '../utils.js';\n\n/**\n * Throws a `CanceledError` if cancellation has been requested.\n *\n * @param {Object} config The config that is to be used for the request\n *\n * @returns {void}\n */\nfunction throwIfCancellationRequested(config) {\n  if (config.cancelToken) {\n    config.cancelToken.throwIfRequested();\n  }\n\n  if (config.signal && config.signal.aborted) {\n    throw new CanceledError(null, config);\n  }\n}\n\n/**\n * Milliseconds elapsed since `start`, floored at zero.\n *\n * Wall-clock, to match the rest of the codebase (speedometer, throttle,\n * AxiosTransformStream). A backwards clock adjustment mid-request would\n * otherwise produce a negative duration, so the result is clamped.\n *\n * @param {number} start Timestamp from `Date.now()`\n *\n * @returns {number} Non-negative elapsed milliseconds\n */\nfunction elapsedSince(start) {\n  return Math.max(0, Date.now() - start);\n}\n\n/**\n * Dispatch a request to the server using the configured adapter.\n *\n * @param {object} config The config that is to be used for the request\n *\n * @returns {Promise} The Promise to be fulfilled\n */\nexport default function dispatchRequest(_config) {\n  // Interceptors may replace the merged config with an ordinary object. Flatten\n  // it at the dispatch boundary so shared prototype members cannot become\n  // request behavior, while preserving intentional template/class members.\n  const config = utils.toSafeFlatObject(_config);\n\n  throwIfCancellationRequested(config);\n\n  config.headers = AxiosHeaders.from(utils.getSafeProp(config, 'headers'));\n\n  // Transform request data\n  config.data = transformData.call(config, config.transformRequest);\n\n  if (['post', 'put', 'patch'].indexOf(config.method) !== -1) {\n    config.headers.setContentType('application/x-www-form-urlencoded', false);\n  }\n\n  const adapter = adapters.getAdapter(config.adapter || defaults.adapter, config);\n\n  const start = Date.now();\n\n  return adapter(config).then(\n    function onAdapterResolution(response) {\n      throwIfCancellationRequested(config);\n\n      response.duration = elapsedSince(start);\n\n      // Expose the current response on config so that transformResponse can\n      // attach it to any AxiosError it throws (e.g. on JSON parse failure).\n      // We clean it up afterwards to avoid polluting the config object.\n      config.response = response;\n      try {\n        response.data = transformData.call(config, config.transformResponse, response);\n      } finally {\n        delete config.response;\n      }\n\n      response.headers = AxiosHeaders.from(response.headers);\n\n      return response;\n    },\n    function onAdapterRejection(reason) {\n      if (!isCancel(reason)) {\n        throwIfCancellationRequested(config);\n\n        // Transform response data\n        if (reason && reason.response) {\n          reason.response.duration = elapsedSince(start);\n          config.response = reason.response;\n          try {\n            reason.response.data = transformData.call(\n              config,\n              config.transformResponse,\n              reason.response\n            );\n          } finally {\n            delete config.response;\n          }\n          reason.response.headers = AxiosHeaders.from(reason.response.headers);\n        }\n      }\n\n      return Promise.reject(reason);\n    }\n  );\n}\n","'use strict';\n\nimport { VERSION } from '../env/data.js';\nimport AxiosError from '../core/AxiosError.js';\n\nconst validators = {};\n\n// eslint-disable-next-line func-names\n['object', 'boolean', 'number', 'function', 'string', 'symbol'].forEach((type, i) => {\n  validators[type] = function validator(thing) {\n    return typeof thing === type || 'a' + (i < 1 ? 'n ' : ' ') + type;\n  };\n});\n\nconst deprecatedWarnings = {};\n\n/**\n * Transitional option validator\n *\n * @param {function|boolean?} validator - set to false if the transitional option has been removed\n * @param {string?} version - deprecated version / removed since version\n * @param {string?} message - some message with additional info\n *\n * @returns {function}\n */\nvalidators.transitional = function transitional(validator, version, message) {\n  function formatMessage(opt, desc) {\n    return (\n      '[Axios v' +\n      VERSION +\n      \"] Transitional option '\" +\n      opt +\n      \"'\" +\n      desc +\n      (message ? '. ' + message : '')\n    );\n  }\n\n  // eslint-disable-next-line func-names\n  return (value, opt, opts) => {\n    if (validator === false) {\n      throw new AxiosError(\n        formatMessage(opt, ' has been removed' + (version ? ' in ' + version : '')),\n        AxiosError.ERR_DEPRECATED\n      );\n    }\n\n    if (version && !deprecatedWarnings[opt]) {\n      deprecatedWarnings[opt] = true;\n      // eslint-disable-next-line no-console\n      console.warn(\n        formatMessage(\n          opt,\n          ' has been deprecated since v' + version + ' and will be removed in the near future'\n        )\n      );\n    }\n\n    return validator ? validator(value, opt, opts) : true;\n  };\n};\n\nvalidators.spelling = function spelling(correctSpelling) {\n  return (value, opt) => {\n    // eslint-disable-next-line no-console\n    console.warn(`${opt} is likely a misspelling of ${correctSpelling}`);\n    return true;\n  };\n};\n\n/**\n * Assert object's properties type\n *\n * @param {object} options\n * @param {object} schema\n * @param {boolean?} allowUnknown\n *\n * @returns {object}\n */\n\nfunction assertOptions(options, schema, allowUnknown) {\n  if (typeof options !== 'object' || options === null) {\n    throw new AxiosError('options must be an object', AxiosError.ERR_BAD_OPTION_VALUE);\n  }\n  const keys = Object.keys(options);\n  let i = keys.length;\n  while (i-- > 0) {\n    const opt = keys[i];\n    // Use hasOwnProperty so a polluted Object.prototype.<opt> cannot supply\n    // a non-function validator and cause a TypeError.\n    const validator = Object.prototype.hasOwnProperty.call(schema, opt) ? schema[opt] : undefined;\n    if (validator) {\n      const value = options[opt];\n      const result = value === undefined || validator(value, opt, options);\n      if (result !== true) {\n        throw new AxiosError(\n          'option ' + opt + ' must be ' + result,\n          AxiosError.ERR_BAD_OPTION_VALUE\n        );\n      }\n      continue;\n    }\n    if (allowUnknown !== true) {\n      throw new AxiosError('Unknown option ' + opt, AxiosError.ERR_BAD_OPTION);\n    }\n  }\n}\n\nexport default {\n  assertOptions,\n  validators,\n};\n","'use strict';\n\nimport utils from '../utils.js';\nimport buildURL from '../helpers/buildURL.js';\nimport InterceptorManager from './InterceptorManager.js';\nimport dispatchRequest from './dispatchRequest.js';\nimport mergeConfig from './mergeConfig.js';\nimport buildFullPath from './buildFullPath.js';\nimport methodList from './methodList.js';\nimport validator from '../helpers/validator.js';\nimport AxiosHeaders from './AxiosHeaders.js';\nimport transitionalDefaults from '../defaults/transitional.js';\nimport { getCauseStackIndex } from './AxiosError.js';\n\nconst validators = validator.validators;\n\n// Recognize header maps without consuming objects intended as literal values.\n// AxiosHeaders from other builds share a brand and header-container interface,\n// but not constructor identity. A tag and toJSON alone can describe a literal.\nconst isHeadersBucket = (value) => {\n  if (value == null || utils.isPlainObject(value) || value instanceof AxiosHeaders) {\n    return true;\n  }\n\n  try {\n    return (\n      utils.isObject(value) &&\n      utils.getSafeProp(value, Symbol.toStringTag) === 'AxiosHeaders' &&\n      [\n        'toJSON',\n        'set',\n        'get',\n        'has',\n        'delete',\n        'clear',\n        'normalize',\n        'concat',\n        'toString',\n        Symbol.iterator,\n      ].every((method) => utils.isFunction(utils.getSafeProp(value, method)))\n    );\n  } catch (e) {\n    // A failed optional brand probe must not prevent literal header serialization.\n    return false;\n  }\n};\n\n/**\n * Create a new instance of Axios\n *\n * @param {Object} instanceConfig The default config for the instance\n *\n * @return {Axios} A new instance of Axios\n */\nclass Axios {\n  constructor(instanceConfig) {\n    this.defaults = instanceConfig || {};\n    this.interceptors = {\n      request: new InterceptorManager(),\n      response: new InterceptorManager(),\n    };\n  }\n\n  /**\n   * Dispatch a request\n   *\n   * @param {String|Object} configOrUrl The config specific for this request (merged with this.defaults)\n   * @param {?Object} config\n   *\n   * @returns {Promise} The Promise to be fulfilled\n   */\n  async request(configOrUrl, config) {\n    try {\n      return await this._request(configOrUrl, config);\n    } catch (err) {\n      if (err instanceof Error) {\n        try {\n          let dummy = {};\n\n          Error.captureStackTrace ? Error.captureStackTrace(dummy) : (dummy = new Error());\n\n          const dummyStack = dummy.stack;\n          let stack = '';\n\n          // slice off the Error: ... line\n          if (typeof dummyStack === 'string') {\n            const firstNewlineIndex = dummyStack.indexOf('\\n');\n\n            stack = firstNewlineIndex === -1 ? '' : dummyStack.slice(firstNewlineIndex + 1);\n          }\n\n          if (!err.stack) {\n            err.stack = stack;\n          } else if (stack) {\n            // Match a common suffix after the 2 top frames when available,\n            // otherwise compare the full reconstructed stack.\n            const firstNewlineIndex = stack.indexOf('\\n');\n            const secondNewlineIndex =\n              firstNewlineIndex === -1 ? -1 : stack.indexOf('\\n', firstNewlineIndex + 1);\n            const duplicateCheckSuffix =\n              secondNewlineIndex === -1 ? stack : stack.slice(secondNewlineIndex + 1);\n\n            // `AxiosError.from()` may have already inlined the wrapped error's\n            // stack under a `Caused by:` marker. Keep the reconstructed caller\n            // frames ahead of that marker so stack-only reporters do not read\n            // them as part of the low-level cause.\n            const currentStack = String(err.stack);\n            const causeIndex = getCauseStackIndex(err, currentStack);\n            const stackHead = causeIndex === -1 ? currentStack : currentStack.slice(0, causeIndex);\n            const causeSection = causeIndex === -1 ? '' : currentStack.slice(causeIndex);\n\n            if (!stackHead.endsWith(duplicateCheckSuffix)) {\n              err.stack = stackHead + '\\n' + stack + causeSection;\n            }\n          }\n        } catch (e) {\n          // Ignore failures from custom stack hooks or un-writable stack properties.\n        }\n      }\n\n      throw err;\n    }\n  }\n\n  _request(configOrUrl, config) {\n    /*eslint no-param-reassign:0*/\n    // Allow for axios('example/url'[, config]) a la fetch API\n    if (typeof configOrUrl === 'string') {\n      config = config || {};\n      config.url = configOrUrl;\n    } else {\n      config = configOrUrl || {};\n    }\n\n    config = mergeConfig(this.defaults, config);\n\n    const { transitional, paramsSerializer, headers } = config;\n\n    if (transitional !== undefined) {\n      validator.assertOptions(\n        transitional,\n        {\n          silentJSONParsing: validators.transitional(validators.boolean),\n          forcedJSONParsing: validators.transitional(validators.boolean),\n          clarifyTimeoutError: validators.transitional(validators.boolean),\n          legacyInterceptorReqResOrdering: validators.transitional(validators.boolean),\n          advertiseZstdAcceptEncoding: validators.transitional(validators.boolean),\n          validateStatusUndefinedResolves: validators.transitional(validators.boolean),\n          encodeBasicAuthUsername: validators.transitional(validators.boolean),\n        },\n        false\n      );\n    }\n\n    if (paramsSerializer != null) {\n      if (utils.isFunction(paramsSerializer)) {\n        config.paramsSerializer = {\n          serialize: paramsSerializer,\n        };\n      } else {\n        validator.assertOptions(\n          paramsSerializer,\n          {\n            encode: validators.function,\n            serialize: validators.function,\n          },\n          true\n        );\n      }\n    }\n\n    // Set config.allowAbsoluteUrls\n    if (config.allowAbsoluteUrls !== undefined) {\n      // do nothing\n    } else if (\n      utils.hasOwnProp(this.defaults, 'allowAbsoluteUrls') &&\n      this.defaults.allowAbsoluteUrls !== undefined\n    ) {\n      config.allowAbsoluteUrls = this.defaults.allowAbsoluteUrls;\n    } else {\n      config.allowAbsoluteUrls = true;\n    }\n\n    validator.assertOptions(\n      config,\n      {\n        baseUrl: validators.spelling('baseURL'),\n        withXsrfToken: validators.spelling('withXSRFToken'),\n      },\n      true\n    );\n\n    // Set config.method\n    config.method = (\n      utils.getSafeProp(config, 'method') ||\n      utils.getSafeProp(this.defaults, 'method') ||\n      'get'\n    ).toLowerCase();\n\n    // Flatten header defaults without consuming literal method-named headers.\n    const commonHeaders = utils.getSafeProp(headers, 'common');\n    const methodHeaders = utils.getSafeProp(headers, config.method);\n    const contextHeaders =\n      headers &&\n      utils.merge(\n        isHeadersBucket(commonHeaders) ? commonHeaders : undefined,\n        isHeadersBucket(methodHeaders) ? methodHeaders : undefined\n      );\n\n    headers &&\n      utils.forEach(methodList.concat('common'), (method) => {\n        if (isHeadersBucket(utils.getSafeProp(headers, method))) {\n          delete headers[method];\n        }\n      });\n\n    config.headers = AxiosHeaders.concat(contextHeaders, headers);\n\n    // filter out skipped interceptors\n    const requestInterceptorChain = [];\n    let synchronousRequestInterceptors = true;\n    this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) {\n      if (typeof interceptor.runWhen === 'function' && interceptor.runWhen(config) === false) {\n        return;\n      }\n\n      synchronousRequestInterceptors = synchronousRequestInterceptors && interceptor.synchronous;\n\n      const transitional = config.transitional || transitionalDefaults;\n      const legacyInterceptorReqResOrdering =\n        transitional && transitional.legacyInterceptorReqResOrdering;\n\n      if (legacyInterceptorReqResOrdering) {\n        requestInterceptorChain.unshift(interceptor.fulfilled, interceptor.rejected);\n      } else {\n        requestInterceptorChain.push(interceptor.fulfilled, interceptor.rejected);\n      }\n    });\n\n    const responseInterceptorChain = [];\n    this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) {\n      responseInterceptorChain.push(interceptor.fulfilled, interceptor.rejected);\n    });\n\n    let promise;\n    let i = 0;\n    let len;\n\n    if (!synchronousRequestInterceptors) {\n      const chain = [dispatchRequest.bind(this), undefined];\n      chain.unshift(...requestInterceptorChain);\n      chain.push(...responseInterceptorChain);\n      len = chain.length;\n\n      promise = Promise.resolve(config);\n\n      while (i < len) {\n        promise = promise.then(chain[i++], chain[i++]);\n      }\n\n      return promise;\n    }\n\n    len = requestInterceptorChain.length;\n\n    let newConfig = config;\n\n    while (i < len) {\n      const onFulfilled = requestInterceptorChain[i++];\n      const onRejected = requestInterceptorChain[i++];\n      try {\n        newConfig = onFulfilled ? onFulfilled(newConfig) : newConfig;\n      } catch (error) {\n        if (!onRejected) {\n          promise = Promise.reject(error);\n          break;\n        }\n\n        try {\n          const rejectedResult = onRejected.call(this, error);\n\n          if (utils.isThenable(rejectedResult)) {\n            promise = Promise.resolve(rejectedResult).then(() =>\n              dispatchRequest.call(this, newConfig)\n            );\n          }\n        } catch (rejectedError) {\n          promise = Promise.reject(rejectedError);\n        }\n\n        break;\n      }\n    }\n\n    if (!promise) {\n      try {\n        promise = dispatchRequest.call(this, newConfig);\n      } catch (error) {\n        promise = Promise.reject(error);\n      }\n    }\n\n    i = 0;\n    len = responseInterceptorChain.length;\n\n    while (i < len) {\n      promise = promise.then(responseInterceptorChain[i++], responseInterceptorChain[i++]);\n    }\n\n    return promise;\n  }\n\n  getUri(config) {\n    config = mergeConfig(this.defaults, config);\n    const fullPath = buildFullPath(config.baseURL, config.url, config.allowAbsoluteUrls, config);\n    return buildURL(fullPath, config.params, config.paramsSerializer);\n  }\n}\n\n// Provide aliases for supported request methods\nutils.forEach(['delete', 'get', 'head', 'options'], function forEachMethodNoData(method) {\n  /*eslint func-names:0*/\n  Axios.prototype[method] = async function (url, config) {\n    return this.request(\n      mergeConfig(config || {}, {\n        method,\n        url,\n        data: config && utils.hasOwnProp(config, 'data') ? config.data : undefined,\n      })\n    );\n  };\n});\n\nutils.forEach(['post', 'put', 'patch', 'query'], function forEachMethodWithData(method) {\n  function generateHTTPMethod(isForm) {\n    return async function httpMethod(url, data, config) {\n      return this.request(\n        mergeConfig(config || {}, {\n          method,\n          headers: isForm\n            ? {\n                'Content-Type': 'multipart/form-data',\n              }\n            : {},\n          url,\n          data,\n        })\n      );\n    };\n  }\n\n  Axios.prototype[method] = generateHTTPMethod();\n\n  // QUERY is a safe/idempotent read method; multipart form bodies don't fit\n  // its semantics, so no queryForm shorthand is generated.\n  if (method !== 'query') {\n    Axios.prototype[method + 'Form'] = generateHTTPMethod(true);\n  }\n});\n\nexport default Axios;\n","'use strict';\n\nimport CanceledError from './CanceledError.js';\n\n/**\n * A `CancelToken` is an object that can be used to request cancellation of an operation.\n *\n * @param {Function} executor The executor function.\n *\n * @returns {CancelToken}\n */\nclass CancelToken {\n  constructor(executor) {\n    if (typeof executor !== 'function') {\n      throw new TypeError('executor must be a function.');\n    }\n\n    let resolvePromise;\n\n    this.promise = new Promise(function promiseExecutor(resolve) {\n      resolvePromise = resolve;\n    });\n\n    const token = this;\n\n    // eslint-disable-next-line func-names\n    this.promise.then((cancel) => {\n      if (!token._listeners) return;\n\n      let i = token._listeners.length;\n\n      while (i-- > 0) {\n        token._listeners[i](cancel);\n      }\n      token._listeners = null;\n    });\n\n    // eslint-disable-next-line func-names\n    this.promise.then = (onfulfilled) => {\n      let _resolve;\n      // eslint-disable-next-line func-names\n      const promise = new Promise((resolve) => {\n        token.subscribe(resolve);\n        _resolve = resolve;\n      }).then(onfulfilled);\n\n      promise.cancel = function reject() {\n        token.unsubscribe(_resolve);\n      };\n\n      return promise;\n    };\n\n    executor(function cancel(message, config, request) {\n      if (token.reason) {\n        // Cancellation has already been requested\n        return;\n      }\n\n      token.reason = new CanceledError(message, config, request);\n      resolvePromise(token.reason);\n    });\n  }\n\n  /**\n   * Throws a `CanceledError` if cancellation has been requested.\n   */\n  throwIfRequested() {\n    if (this.reason) {\n      throw this.reason;\n    }\n  }\n\n  /**\n   * Subscribe to the cancel signal\n   */\n\n  subscribe(listener) {\n    if (this.reason) {\n      listener(this.reason);\n      return;\n    }\n\n    if (this._listeners) {\n      this._listeners.push(listener);\n    } else {\n      this._listeners = [listener];\n    }\n  }\n\n  /**\n   * Unsubscribe from the cancel signal\n   */\n\n  unsubscribe(listener) {\n    if (!this._listeners) {\n      return;\n    }\n    const index = this._listeners.indexOf(listener);\n    if (index !== -1) {\n      this._listeners.splice(index, 1);\n    }\n  }\n\n  toAbortSignal() {\n    const controller = new AbortController();\n\n    const abort = (err) => {\n      controller.abort(err);\n    };\n\n    this.subscribe(abort);\n\n    controller.signal.unsubscribe = () => this.unsubscribe(abort);\n\n    return controller.signal;\n  }\n\n  /**\n   * Returns an object that contains a new `CancelToken` and a function that, when called,\n   * cancels the `CancelToken`.\n   */\n  static source() {\n    let cancel;\n    const token = new CancelToken(function executor(c) {\n      cancel = c;\n    });\n    return {\n      token,\n      cancel,\n    };\n  }\n}\n\nexport default CancelToken;\n","const HttpStatusCode = {\n  Continue: 100,\n  SwitchingProtocols: 101,\n  Processing: 102,\n  EarlyHints: 103,\n  Ok: 200,\n  Created: 201,\n  Accepted: 202,\n  NonAuthoritativeInformation: 203,\n  NoContent: 204,\n  ResetContent: 205,\n  PartialContent: 206,\n  MultiStatus: 207,\n  AlreadyReported: 208,\n  ImUsed: 226,\n  MultipleChoices: 300,\n  MovedPermanently: 301,\n  Found: 302,\n  SeeOther: 303,\n  NotModified: 304,\n  UseProxy: 305,\n  Unused: 306,\n  TemporaryRedirect: 307,\n  PermanentRedirect: 308,\n  BadRequest: 400,\n  Unauthorized: 401,\n  PaymentRequired: 402,\n  Forbidden: 403,\n  NotFound: 404,\n  MethodNotAllowed: 405,\n  NotAcceptable: 406,\n  ProxyAuthenticationRequired: 407,\n  RequestTimeout: 408,\n  Conflict: 409,\n  Gone: 410,\n  LengthRequired: 411,\n  PreconditionFailed: 412,\n  /**\n   * @deprecated Use `ContentTooLarge` instead.\n   */\n  PayloadTooLarge: 413,\n  ContentTooLarge: 413,\n  UriTooLong: 414,\n  UnsupportedMediaType: 415,\n  RangeNotSatisfiable: 416,\n  ExpectationFailed: 417,\n  ImATeapot: 418,\n  MisdirectedRequest: 421,\n  /**\n   * @deprecated Use `UnprocessableContent` instead.\n   */\n  UnprocessableEntity: 422,\n  UnprocessableContent: 422,\n  Locked: 423,\n  FailedDependency: 424,\n  TooEarly: 425,\n  UpgradeRequired: 426,\n  PreconditionRequired: 428,\n  TooManyRequests: 429,\n  RequestHeaderFieldsTooLarge: 431,\n  UnavailableForLegalReasons: 451,\n  InternalServerError: 500,\n  NotImplemented: 501,\n  BadGateway: 502,\n  ServiceUnavailable: 503,\n  GatewayTimeout: 504,\n  HttpVersionNotSupported: 505,\n  VariantAlsoNegotiates: 506,\n  InsufficientStorage: 507,\n  LoopDetected: 508,\n  NotExtended: 510,\n  NetworkAuthenticationRequired: 511,\n  WebServerReturnsAnUnknownError: 520,\n  WebServerIsDown: 521,\n  ConnectionTimedOut: 522,\n  OriginIsUnreachable: 523,\n  TimeoutOccurred: 524,\n  SslHandshakeFailed: 525,\n  InvalidSslCertificate: 526,\n};\n\nObject.entries(HttpStatusCode).forEach(([key, value]) => {\n  if (HttpStatusCode[value] === undefined) {\n    HttpStatusCode[value] = key;\n  }\n});\n\nexport default HttpStatusCode;\n","'use strict';\n\nimport utils from './utils.js';\nimport bind from './helpers/bind.js';\nimport Axios from './core/Axios.js';\nimport mergeConfig from './core/mergeConfig.js';\nimport defaults from './defaults/index.js';\nimport formDataToJSON from './helpers/formDataToJSON.js';\nimport CanceledError from './cancel/CanceledError.js';\nimport CancelToken from './cancel/CancelToken.js';\nimport isCancel from './cancel/isCancel.js';\nimport { VERSION } from './env/data.js';\nimport toFormData from './helpers/toFormData.js';\nimport AxiosError from './core/AxiosError.js';\nimport spread from './helpers/spread.js';\nimport isAxiosError from './helpers/isAxiosError.js';\nimport AxiosHeaders from './core/AxiosHeaders.js';\nimport adapters from './adapters/adapters.js';\nimport HttpStatusCode from './helpers/HttpStatusCode.js';\n\n/**\n * Create an instance of Axios\n *\n * @param {Object} defaultConfig The default config for the instance\n *\n * @returns {Axios} A new instance of Axios\n */\nfunction createInstance(defaultConfig) {\n  const context = new Axios(defaultConfig);\n  const instance = bind(Axios.prototype.request, context);\n\n  // Copy axios.prototype to instance\n  utils.extend(instance, Axios.prototype, context, { allOwnKeys: true });\n\n  // Copy context to instance\n  utils.extend(instance, context, null, { allOwnKeys: true });\n\n  // Factory for creating new instances\n  instance.create = function create(instanceConfig) {\n    return createInstance(mergeConfig(defaultConfig, instanceConfig));\n  };\n\n  return instance;\n}\n\n// Create the default instance to be exported\nconst axios = createInstance(defaults);\n\n// Expose Axios class to allow class inheritance\naxios.Axios = Axios;\n\n// Expose Cancel & CancelToken\naxios.CanceledError = CanceledError;\naxios.CancelToken = CancelToken;\naxios.isCancel = isCancel;\naxios.VERSION = VERSION;\naxios.toFormData = toFormData;\n\n// Expose AxiosError class\naxios.AxiosError = AxiosError;\n\n// alias for CanceledError for backward compatibility\naxios.Cancel = axios.CanceledError;\n\n// Expose all/spread\naxios.all = function all(promises) {\n  return Promise.all(promises);\n};\n\naxios.spread = spread;\n\n// Expose isAxiosError\naxios.isAxiosError = isAxiosError;\n\n// Expose mergeConfig\naxios.mergeConfig = mergeConfig;\n\naxios.AxiosHeaders = AxiosHeaders;\n\naxios.formToJSON = (thing) => formDataToJSON(utils.isHTMLForm(thing) ? new FormData(thing) : thing);\n\naxios.getAdapter = adapters.getAdapter;\n\naxios.HttpStatusCode = HttpStatusCode;\n\naxios.default = axios;\n\n// this module should only have a default export\nexport default axios;\n","'use strict';\n\n/**\n * Syntactic sugar for invoking a function and expanding an array for arguments.\n *\n * Common use case would be to use `Function.prototype.apply`.\n *\n *  ```js\n *  function f(x, y, z) {}\n *  const args = [1, 2, 3];\n *  f.apply(null, args);\n *  ```\n *\n * With `spread` this example can be re-written.\n *\n *  ```js\n *  spread(function(x, y, z) {})([1, 2, 3]);\n *  ```\n *\n * @param {Function} callback\n *\n * @returns {Function}\n */\nexport default function spread(callback) {\n  return function wrap(arr) {\n    return callback.apply(null, arr);\n  };\n}\n","'use strict';\n\nimport utils from '../utils.js';\n\n/**\n * Determines whether the payload is an error thrown by Axios\n *\n * @param {*} payload The value to test\n *\n * @returns {boolean} True if the payload is an error thrown by Axios, otherwise false\n */\nexport default function isAxiosError(payload) {\n  return utils.isObject(payload) && payload.isAxiosError === true;\n}\n","import debounce from 'lodash.debounce';\nimport * as Sentry from '@sentry/browser';\n\nexport default class Navigation {\n    constructor() {\n        this.breakpoint = 1200;\n        this.navigation = document.querySelector('[data-navigation]');\n        this.debounceToggleFlyout = debounce(this.toggleFlyout.bind(this), 100);\n        this.menuIsOpen = false;\n        this.currentFlyout = null;\n        this.isMobile = window.innerWidth < this.breakpoint;\n        this.animationStacks = [];\n        this.reducedMotion = window.matchMedia('(prefers-reduced-motion: reduce)').matches;\n\n        if (!this.navigation) {\n            Sentry.captureMessage('Navigation element not found');\n            return;\n        }\n\n        try {\n            this.init();\n        } catch (error) {\n            Sentry.captureException(error);\n        }\n    }\n\n    init() {\n        this.initMenuLinks();\n        this.initMobileMenu();\n        this.initDesktopFlyout();\n        this.initKeyboard();\n        this.initMoreButtons();\n        this.initBackButtons();\n        this.initViewportListener();\n        this.initBackdrop();\n    }\n\n    initMenuLinks() {\n        const mainMenuList = this.navigation.querySelector('ul');\n        const menuItems = this.navigation.querySelectorAll('li');\n\n        menuItems.forEach((li) => {\n            const hasAriaHaspopup = li.querySelector('a[aria-haspopup=\"true\"]');\n\n            if (hasAriaHaspopup) {\n                const list = li.closest('ul');\n                if (!list || list === mainMenuList) return;\n                li.addEventListener('mouseenter', this.handleMouseEnter.bind(this));\n            }\n        });\n    }\n\n    initViewportListener() {\n        window.addEventListener('resize', debounce(() => {\n            const isMobile = window.innerWidth < this.breakpoint;\n            if (this.isMobile === isMobile) return;\n            this.isMobile = isMobile;\n\n            this.cancelAllAnimations();\n            this.closeChildren();\n        }, 300));\n    }\n\n    initMobileMenu() {\n        this.navigation.querySelectorAll('[aria-haspopup=\"true\"]').forEach((el) => {\n            el.addEventListener('click', this.handleClick.bind(this));\n        });\n        document.querySelector('.navigation-mobile-button .toggle-btn').addEventListener('click', this.handleBurgerMenuButtonClick.bind(this));\n    }\n\n    initMoreButtons() {\n        this.navigation.querySelectorAll('[data-navigation-more]').forEach((el) => {\n            el.addEventListener('click', this.handleClickMore.bind(this));\n        });\n    }\n\n    initBackButtons() {\n        this.navigation.querySelectorAll('[data-navigation-back]').forEach((el) => {\n            el.addEventListener('click', this.handleClickBack.bind(this));\n        });\n    }\n\n    initBackdrop() {\n        if (!this.isMobile) return;\n        const backdrop = document.querySelector('[data-navigation-backdrop]');\n\n        backdrop.addEventListener('click', () => {\n            this.closeMobileMenu();\n        });\n    }\n\n    initKeyboard() {\n        document.addEventListener('keydown', this.handleKeyboard.bind(this));\n    }\n\n    handleKeyboard(event) {\n        if (event.key === 'Enter') {\n            this.handleEnterKey(event);\n        }\n        if (event.key === 'Escape') {\n            this.handleEscapeKey(event);\n        }\n    }\n\n    handleEscapeKey() {\n        const {activeElement} = document;\n        if (!activeElement) return;\n        const activeMenu = activeElement.closest('[aria-labelledby].is-open');\n        if (!activeMenu) {\n            this.closeChildren();\n            activeElement.blur();\n            return;\n        }\n        const target = this.navigation.querySelector(`#${activeMenu.getAttribute('aria-labelledby')}`);\n        this.openElement(target);\n        target.focus();\n    }\n\n    handleEnterKey(event) {\n        const {activeElement} = document;\n        if (!activeElement) return;\n        const liElement = activeElement.closest('li');\n        if (!liElement) return;\n        const activeMenu = liElement.querySelector('[aria-haspopup=\"true\"]');\n        if (!activeMenu) return;\n        const submenu = this.openElement(activeMenu);\n        if (!submenu) return;\n        submenu.querySelector('a:not([data-navigation-back])').focus();\n        this.openFlyout(submenu.closest('[data-navigation-flyout]'), event);\n    }\n\n    initDesktopFlyout() {\n        this.navigation.querySelector('ul').querySelectorAll(':scope > li').forEach((li) => {\n            const flyout = li.querySelector('[data-navigation-flyout]');\n            if (!flyout) return;\n            li.addEventListener('mouseenter', this.debounceToggleFlyout.bind(this, flyout));\n            li.addEventListener('mouseleave', this.debounceToggleFlyout.bind(this, flyout));\n        });\n        this.navigation.querySelectorAll('[data-navigation-flyout]').forEach((el) => {\n            el.addEventListener('focusout', this.handleFocusOut.bind(this));\n        });\n    }\n\n    handleClick(event) {\n        event.preventDefault();\n        if (this.isMobile) {\n            const target = this.navigation.querySelector(event.target.getAttribute('href'));\n            this.focusSlide(target);\n        }\n        this.openElement(event.target);\n    }\n\n    handleMouseEnter(event) {\n        this.openElement(event.target.querySelector('[aria-haspopup=\"true\"]'));\n    }\n\n    toggleFlyout(flyout, event) {\n        if (event.type === 'mouseenter' && flyout) {\n            if (this.currentFlyout !== flyout) {\n                this.closeFlyout(this.currentFlyout);\n                this.currentFlyout = flyout;\n            }\n            this.openFlyout(flyout, event);\n            return;\n        }\n        this.closeFlyout(flyout);\n    }\n\n    openFlyout(flyout, event) {\n        if (this.isMobile || !flyout) return;\n\n        this.cancelAllAnimations();\n        this.activeBackdrop();\n\n        if (!flyout.classList.contains('is-open')) {\n            this.openElement(event.target.querySelector('[aria-haspopup=\"true\"]'));\n            this.animationStacks.push(this.fadeIn(flyout));\n            const submenu = flyout.querySelectorAll('[aria-haspopup=\"true\"]');\n            if (submenu.length > 0) {\n                this.openElement(submenu[0]);\n            }\n        }\n    }\n\n    closeFlyout(flyout) {\n        if (this.isMobile || !flyout) return;\n\n        if (flyout.classList.contains('is-open')) {\n            this.animationStacks.push(this.fadeOut(flyout));\n        }\n        this.closeChildren();\n        this.removeBackdrop();\n    }\n\n    handleClickMore(event) {\n        event.preventDefault();\n        const el = event.target;\n        const list = el.closest('li');\n\n        const submenu = list.querySelector('ul');\n        submenu.classList.add('is-open');\n        submenu.querySelector('a').focus();\n\n        el.setAttribute('aria-expanded', 'true');\n    }\n\n    handleClickBack(event) {\n        event.preventDefault();\n        const trigger = event.target;\n        const target = this.navigation.querySelector(trigger.getAttribute('href'));\n        const currentOpened = trigger.closest('li').querySelector('[aria-expanded=\"true\"]');\n\n        this.focusSlide(target);\n\n        if (!currentOpened) return;\n        this.closeElement(currentOpened);\n    }\n\n    handleBurgerMenuButtonClick(e) {\n        if (!this.isMobile) return;\n        const isExpanded = e.target.closest('[aria-expanded]').getAttribute('aria-expanded') === 'true';\n\n        if (!isExpanded) {\n            this.openMobileMenu();\n        } else {\n            this.closeMobileMenu();\n        }\n    }\n\n    handleFocusOut(event) {\n        if (this.isMobile) return;\n        const flyout = event.currentTarget;\n\n        if (event.relatedTarget && !flyout.contains(event.relatedTarget)) {\n            const liElement = flyout.closest('li');\n            if (liElement) {\n                this.closeElement(liElement.querySelector('[aria-haspopup=\"true\"]'));\n            }\n        }\n    }\n\n    closeChildren(parent = null) {\n        const root = parent || this.navigation;\n        const lists = new Set();\n\n        root.querySelectorAll('[aria-haspopup=\"true\"][aria-expanded=\"true\"]').forEach(el => {\n            const list = el.closest('ul');\n            if (list.hasAttribute('data-ensure-one-expanded') && el === list.children[0].querySelector('a')) return;\n\n            this.closeElement(el);\n            lists.add(list);\n        });\n\n        lists.forEach(list => {\n            if (list.hasAttribute('data-ensure-one-expanded')) {\n                const first = list.querySelector('[aria-haspopup=\"true\"]');\n                this.animationStacks.last?.finished.then(() => this.openElement(first)).catch(() => {\n                });\n            }\n        });\n    }\n\n    openMobileMenu() {\n        if (!this.isMobile) return;\n        this.menuIsOpen = true;\n\n        document.querySelector('.navigation-mobile-button .toggle-btn').setAttribute('aria-expanded', 'true');\n        document.querySelector('.navigation-mobile-button .toggle-icon').classList.add('active');\n        this.activeBackdrop();\n\n        this.navigation.classList.add('is-open');\n        this.navigation.querySelector('[data-navigation-slide=\"0\"]').classList.add('is-open');\n        this.animationStacks.push(this.openingMobileMenu());\n    }\n\n    closeMobileMenu() {\n        const slide0 = this.navigation.querySelector('[data-navigation-slide=\"0\"]');\n        this.menuIsOpen = false;\n\n        if (!this.isMobile) return;\n        const animation = this.closingMobileMenu();\n        animation.addEventListener('finish', () => {\n            if (this.menuIsOpen) return;\n            this.navigation.classList.remove('is-open');\n            this.focusSlide(slide0);\n            slide0.classList.remove('is-open');\n            this.closeChildren();\n        });\n        this.animationStacks.push(animation);\n\n        this.removeBackdrop();\n        document.querySelector('.navigation-mobile-button .toggle-btn').setAttribute('aria-expanded', 'false');\n        document.querySelector('.navigation-mobile-button .toggle-icon').classList.remove('active');\n    }\n\n    openElement(el) {\n        if (!el || !(el instanceof Element)) return null;\n\n        if (el.getAttribute('aria-haspopup') === 'true') {\n            el.setAttribute('aria-expanded', 'true');\n        }\n\n        const submenu = this.navigation.querySelector(el.getAttribute('href'));\n        if (submenu) {\n            submenu.classList.add('is-open');\n        }\n\n        this.closeSiblingElements(el);\n\n        return submenu;\n    }\n\n    closeSiblingElements(el) {\n        const siblingsItems = Array.from(el.closest('ul').children).filter((child) => child.querySelector('a[aria-expanded=\"true\"]') && child !== el.closest('li'));\n\n        siblingsItems.forEach((item) => {\n            const handler = Array.from(item.children).find((child) => child.getAttribute('aria-haspopup') && child.getAttribute('aria-expanded') && child !== el);\n            this.closeElement(handler, false);\n        });\n    }\n\n    closeElement(el, waitForAnimationToEnd = true) {\n        if (!el || !(el instanceof Element)) return;\n\n        const lastAnimation = this.animationStacks.at(-1);\n        if (waitForAnimationToEnd && lastAnimation?.playState === 'running') {\n            lastAnimation.finished.then(this.closeElement.bind(this, el)).catch(() => {\n            });\n            return;\n        }\n\n        const submenuId = el.getAttribute('href');\n        if (!submenuId) return;\n\n        const submenu = this.navigation.querySelector(submenuId);\n        if (!submenu) return;\n\n        el.setAttribute('aria-expanded', 'false');\n        submenu.classList.remove('is-open');\n        if (document.activeElement === el) {\n            document.activeElement.blur();\n        }\n\n        this.closeChildren(submenu);\n    }\n\n    getClosestSlide(el) {\n        if (!el || !(el instanceof Element)) return null;\n        if (el.hasAttribute('data-navigation-slide')) {\n            return el;\n        }\n\n        return el.querySelector('[data-navigation-slide]') || el.closest('[data-navigation-slide]');\n    }\n\n    focusSlide(el) {\n        if (!this.isMobile) return;\n        if (!el || !(el instanceof Element)) return;\n\n        const slide = this.getClosestSlide(el);\n\n        slide.classList.add('is-open');\n\n        const slider = this.navigation.querySelector('[data-navigation-slider]');\n        const animation = slider.animate([\n            {transform: `translateX(calc(-${slide.dataset.navigationSlide} * var(--mobile-width)))`},\n        ], {\n            duration: this.duration(300),\n            easing: 'ease-out',\n            fill: 'forwards',\n        });\n        animation.addEventListener('finish', () => {\n            this.navigation.querySelectorAll('[data-navigation-slide]').forEach((child) => {\n                if (child !== slide && !child.contains(slide)) {\n                    child.classList.remove('is-open');\n                }\n            });\n        });\n        this.animationStacks.push(animation);\n    }\n\n    duration(defaultDuration) {\n        return this.reducedMotion ? 0.1 : defaultDuration;\n    }\n\n    openingMobileMenu() {\n        return this.navigation.animate([\n            {transform: 'translateX(0)'},\n        ], {\n            duration: this.duration(300),\n            easing: 'ease-out',\n            fill: 'forwards',\n        });\n    }\n\n    closingMobileMenu() {\n        return this.navigation.animate([\n            {transform: 'translateX(100%)'},\n        ], {\n            duration: this.duration(300),\n            easing: 'ease-out',\n            fill: 'forwards',\n        });\n    }\n\n    activeBackdrop() {\n        const backdrop = document.querySelector('[data-navigation-backdrop]');\n\n        if (backdrop.classList.contains('active')) return;\n\n        backdrop.classList.add('active');\n        const animation = this.fadeIn(backdrop);\n        this.animationStacks.push(animation);\n    }\n\n    removeBackdrop() {\n        const backdrop = document.querySelector('[data-navigation-backdrop]');\n\n        if (!backdrop.classList.contains('active')) return;\n\n        const animation = this.fadeOut(backdrop);\n        animation.finished.then(() => {\n            if (!this.menuIsOpen) {\n                backdrop.classList.remove('active');\n            }\n        }).catch(() => {\n        });\n        this.animationStacks.push(animation);\n    }\n\n    fadeIn(el) {\n        if (!el) return;\n        return el.animate([\n            {opacity: 0},\n            {opacity: 1},\n        ], {\n            duration: this.duration(300),\n            easing: 'ease-out',\n            fill: 'forwards',\n        });\n    }\n\n    fadeOut(el) {\n        if (!el) return;\n        return el.animate([\n            {opacity: 1},\n            {opacity: 0},\n        ], {\n            duration: this.duration(100),\n            easing: 'ease-out',\n            fill: 'forwards',\n        });\n    }\n\n    cancelAllAnimations() {\n        this.animationStacks.forEach(animation => animation?.cancel());\n        this.animationStacks = [];\n    }\n}\n","/*! js-cookie v3.0.8 | MIT */\nfunction assign (target) {\n  for (var i = 1; i < arguments.length; i++) {\n    var source = arguments[i];\n    for (var key in source) {\n      if (key === '__proto__') continue\n      target[key] = source[key];\n    }\n  }\n  return target\n}\n\nvar defaultConverter = {\n  read: function (value) {\n    if (value[0] === '\"') {\n      value = value.slice(1, -1);\n    }\n    return value.replace(/(%[\\dA-F]{2})+/gi, decodeURIComponent)\n  },\n  write: function (value) {\n    return encodeURIComponent(value).replace(\n      /%(2[346BF]|3[AC-F]|40|5[BDE]|60|7[BCD])/g,\n      decodeURIComponent\n    )\n  }\n};\n\nfunction init(converter, defaultAttributes) {\n  function set(name, value, attributes) {\n    if (typeof document === 'undefined') {\n      return\n    }\n\n    attributes = assign({}, defaultAttributes, attributes);\n\n    if (typeof attributes.expires === 'number') {\n      attributes.expires = new Date(Date.now() + attributes.expires * 864e5);\n    }\n    if (attributes.expires) {\n      attributes.expires = attributes.expires.toUTCString();\n    }\n\n    name = encodeURIComponent(name)\n      .replace(/%(2[346B]|5E|60|7C)/g, decodeURIComponent)\n      .replace(/[()]/g, escape);\n\n    var stringifiedAttributes = '';\n    for (var attributeName in attributes) {\n      if (!attributes[attributeName]) {\n        continue\n      }\n\n      stringifiedAttributes += '; ' + attributeName;\n\n      if (attributes[attributeName] === true) {\n        continue\n      }\n\n      // Considers RFC 6265 section 5.2:\n      // ...\n      // 3.  If the remaining unparsed-attributes contains a %x3B (\";\")\n      //     character:\n      // Consume the characters of the unparsed-attributes up to,\n      // not including, the first %x3B (\";\") character.\n      // ...\n      stringifiedAttributes += '=' + attributes[attributeName].split(';')[0];\n    }\n\n    return (document.cookie =\n      name + '=' + converter.write(value, name) + stringifiedAttributes)\n  }\n\n  function get(name) {\n    if (typeof document === 'undefined' || (arguments.length && !name)) {\n      return\n    }\n\n    // To prevent the for loop in the first place assign an empty array\n    // in case there are no cookies at all.\n    var cookies = document.cookie ? document.cookie.split('; ') : [];\n    var jar = {};\n    for (var i = 0; i < cookies.length; i++) {\n      var parts = cookies[i].split('=');\n      var value = parts.slice(1).join('=');\n\n      try {\n        var found = decodeURIComponent(parts[0]);\n        if (!(found in jar)) jar[found] = converter.read(value, found);\n        if (name === found) {\n          break\n        }\n      } catch (_e) {\n        // Do nothing...\n      }\n    }\n\n    return name ? jar[name] : jar\n  }\n\n  return Object.create(\n    {\n      set: set,\n      get: get,\n      remove: function (name, attributes) {\n        set(\n          name,\n          '',\n          assign({}, attributes, {\n            expires: -1\n          })\n        );\n      },\n      withAttributes: function (attributes) {\n        return init(this.converter, assign({}, this.attributes, attributes))\n      },\n      withConverter: function (converter) {\n        return init(assign({}, this.converter, converter), this.attributes)\n      }\n    },\n    {\n      attributes: { value: Object.freeze(defaultAttributes) },\n      converter: { value: Object.freeze(converter) }\n    }\n  )\n}\n\nvar api = init(defaultConverter, { path: '/' });\n\nexport { api as default };\n","function e(e,t){(null==t||t>e.length)&&(t=e.length);for(var o=0,i=Array(t);o<t;o++)i[o]=e[o];return i}function t(e,t){for(var o=0;o<t.length;o++){var n=t[o];n.enumerable=n.enumerable||!1,n.configurable=!0,\"value\"in n&&(n.writable=!0),Object.defineProperty(e,i(n.key),n)}}function o(t){return function(t){if(Array.isArray(t))return e(t)}(t)||function(e){if(\"undefined\"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e[\"@@iterator\"])return Array.from(e)}(t)||function(t,o){if(t){if(\"string\"==typeof t)return e(t,o);var i={}.toString.call(t).slice(8,-1);return\"Object\"===i&&t.constructor&&(i=t.constructor.name),\"Map\"===i||\"Set\"===i?Array.from(t):\"Arguments\"===i||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(i)?e(t,o):void 0}}(t)||function(){throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\")}()}function i(e){var t=function(e,t){if(\"object\"!=typeof e||!e)return e;var o=e[Symbol.toPrimitive];if(void 0!==o){var i=o.call(e,t||\"default\");if(\"object\"!=typeof i)return i;throw new TypeError(\"@@toPrimitive must return a primitive value.\")}return(\"string\"===t?String:Number)(e)}(e,\"string\");return\"symbol\"==typeof t?t:t+\"\"}var n=function(){var e=[\"a[href]\",\"area[href]\",'input:not([disabled]):not([type=\"hidden\"]):not([aria-hidden])',\"select:not([disabled]):not([aria-hidden])\",\"textarea:not([disabled]):not([aria-hidden])\",\"button:not([disabled]):not([aria-hidden])\",\"iframe\",\"object\",\"embed\",\"[contenteditable]\",'[tabindex]:not([tabindex^=\"-\"])'],i={openTrigger:\"data-micromodal-trigger\",identifier:\"data-micromodal-id\"},n={},r=[],a=0;i.generateId=function(){return\"micromodal-\".concat(++a)};var l=function(){function i(e){var t=e.targetModal,o=e.triggers,n=void 0===o?[]:o,r=e.onShow,a=void 0===r?function(){}:r,l=e.onClose,s=void 0===l?function(){}:l,d=e.openTrigger,c=void 0===d?\"data-micromodal-trigger\":d,f=e.closeTrigger,h=void 0===f?\"data-micromodal-close\":f,g=e.openClass,v=void 0===g?\"is-open\":g,m=e.disableScroll,y=void 0!==m&&m,b=e.disableFocus,p=void 0!==b&&b,w=e.awaitCloseAnimation,k=void 0!==w&&w,E=e.awaitOpenAnimation,M=void 0!==E&&E,T=e.debugMode,A=void 0!==T&&T;!function(e,t){if(!(e instanceof t))throw new TypeError(\"Cannot call a class as a function\")}(this,i),this.modal=\"string\"==typeof t?document.getElementById(t):t,this.modalId=null,null!==this.modal?(this.config={debugMode:A,disableScroll:y,openTrigger:c,closeTrigger:h,openClass:v,onShow:a,onClose:s,awaitCloseAnimation:k,awaitOpenAnimation:M,disableFocus:p},this.showModal=this.showModal.bind(this),this.onClick=this.onClick.bind(this),this.onKeydown=this.onKeydown.bind(this),this.setFocusToFirstNode=this.setFocusToFirstNode.bind(this),this.triggers=n,this.registerTriggers()):!0===A&&u(t,A,!1)}var n,a,l;return n=i,a=[{key:\"registerTriggers\",value:function(){var e=this;this.triggers.filter(Boolean).forEach((function(t){t.addEventListener(\"click\",e.showModal)}))}},{key:\"unregisterTriggers\",value:function(){var e=this;this.triggers.filter(Boolean).forEach((function(t){t.removeEventListener(\"click\",e.showModal)}))}},{key:\"destroy\",value:function(){this.closeModal(),this.unregisterTriggers()}},{key:\"showModal\",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null;this.modal.classList.contains(this.config.openClass)||(this.removeEventListeners(),this.activeElement=document.activeElement,this.modal.setAttribute(\"aria-hidden\",\"false\"),this.modal.classList.add(this.config.openClass),this.toggleScrolling(!1),this.addEventListeners(),this.modalId&&-1===r.indexOf(this.modalId)&&r.push(this.modalId),this.config.awaitOpenAnimation?this.modal.addEventListener(\"animationend\",this.setFocusToFirstNode,{once:!0}):this.setFocusToFirstNode(),this.config.onShow(this.modal,this.activeElement,e))}},{key:\"closeModal\",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null,t=this.modal,o=this.config.openClass;if(t.classList.contains(o)){var i=r.indexOf(this.modalId);i>-1&&r.splice(i,1),this.modal.setAttribute(\"aria-hidden\",\"true\"),this.removeEventListeners(),this.toggleScrolling(!0),this.activeElement&&this.activeElement.focus&&this.activeElement.focus(),this.config.onClose(this.modal,this.activeElement,e),this.config.awaitCloseAnimation?this.modal.addEventListener(\"animationend\",(function(){t.classList.remove(o)}),{once:!0}):t.classList.remove(o)}}},{key:\"toggleScrolling\",value:function(e){if(this.config.disableScroll){var t=!e||r.length>0;document.body.style.overflow=t?\"hidden\":\"\",document.body.style.touchAction=t?\"none\":\"\"}}},{key:\"addEventListeners\",value:function(){this.modal.addEventListener(\"click\",this.onClick),this.modal.addEventListener(\"keydown\",this.onKeydown),this.modalId?0===r.length&&document.addEventListener(\"keydown\",d):document.removeEventListener(\"keydown\",d)}},{key:\"removeEventListeners\",value:function(){this.modal.removeEventListener(\"click\",this.onClick),this.modal.removeEventListener(\"keydown\",this.onKeydown),0===r.length&&document.removeEventListener(\"keydown\",d)}},{key:\"onClick\",value:function(e){var t=c(e.target,this.modal),o=e.target.closest(\"[\".concat(this.config.closeTrigger,\"]\"));(e.target.hasAttribute(this.config.closeTrigger)&&t||null!==o&&!c(o,this.modal)&&!t)&&(e.preventDefault(),e.stopPropagation(),this.closeModal(e))}},{key:\"onKeydown\",value:function(e){\"Escape\"!==e.key&&27!==e.keyCode||null!==this.modal.querySelector('[role=\"alertdialog\"]')||this.closeModal(e),\"Tab\"!==e.key&&9!==e.keyCode||this.retainFocus(e,\"inside\")}},{key:\"getFocusableNodes\",value:function(){return o(this.modal.querySelectorAll(e))}},{key:\"setFocusToFirstNode\",value:function(){var e=this;if(!this.config.disableFocus){var t=this.getFocusableNodes();if(0!==t.length){var o=t.filter((function(t){return!t.hasAttribute(e.config.closeTrigger)}));o.length>0&&o[0].focus(),0===o.length&&t[0].focus()}}}},{key:\"retainFocus\",value:function(e,t){var o=this.getFocusableNodes();if(0!==o.length)if(o=o.filter((function(e){return null!==e.offsetParent})),\"outside\"===t)o[0].focus(),e.preventDefault();else{var i=o.indexOf(document.activeElement);e.shiftKey&&0===i&&(o[o.length-1].focus(),e.preventDefault()),!e.shiftKey&&o.length>0&&i===o.length-1&&(o[0].focus(),e.preventDefault())}}}],a&&t(n.prototype,a),l&&t(n,l),Object.defineProperty(n,\"prototype\",{writable:!1}),i}(),s=function(e){if(\"string\"==typeof e)return e;if(e instanceof HTMLElement){var t=e.getAttribute(i.identifier);return t||(e.id?e.id:(t=i.generateId(),e.setAttribute(i.identifier,t),t))}return null},d=function(e){var t=n[r[r.length-1]];t.modal.contains(document.activeElement)||(\"Escape\"!==e.key&&27!==e.keyCode||null!==t.modal.querySelector('[role=\"alertdialog\"]')||g(),\"Tab\"!==e.key&&9!==e.keyCode||t.retainFocus(e,\"outside\"))},c=function(e,t){return e===t||e.parentNode===t},u=function(e,t){var o=!(arguments.length>2&&void 0!==arguments[2])||arguments[2];return!!(o?void 0!==n[e]:\"string\"==typeof e?null!==document.getElementById(e):e instanceof HTMLElement)||(t&&console.warn(\"MicroModal: ❗Seems like you have missed %c'\".concat(e,\"'%c ID somewhere in your code. Try the example below to resolve it.\\n\\n\")+'%cExample:%c <div class=\"modal\" id=\"'.concat(e,'\"></div>'),\"background-color: #f8f9fa;color: #50596c;font-weight: bold;\",\"\",\"background-color: #f8f9fa;color: #50596c;font-weight: bold;\",\"\"),!1)},f=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},o=Object.assign({},i,{targetModal:e},t),r=s(e);u(o.targetModal,o.debugMode,!1)&&(n[r]||(n[r]=new l(o),n[r].modal.setAttribute(i.identifier,r),n[r].modalId=r))},h=function(e,t){var o=s(e);u(o,i.debugMode)&&Object.assign(n[o].config,t)},g=function(e){if(0!==r.length)if(e){var t=s(e);r.indexOf(t)>-1&&n[t].closeModal()}else n[r[r.length-1]].closeModal()};return{init:function(e){Object.assign(i,e);var t=o(document.querySelectorAll(\"[\".concat(i.openTrigger,\"]\"))),n=function(e,t){var o=[];return e.forEach((function(e){var i=e.getAttribute(t);o[i]||(o[i]=[]),o[i].push(e)})),o}(t,i.openTrigger);!0===i.debugMode&&!1===function(e){return!(e.length<=0&&(console.warn('MicroModal: ❗Please specify at least one %c\\'micromodal-trigger\\'%c data attribute.\\n\\n%cExample:%c <a href=\"#\" data-micromodal-trigger=\"my-modal\">Open modal</a>',\"background-color: #f8f9fa;color: #50596c;font-weight: bold;\",\"\",\"background-color: #f8f9fa;color: #50596c;font-weight: bold;\",\"\"),1))}(t)||Object.keys(n).forEach((function(e){var t=n[e];f(e,{targetModal:e,triggers:t})}))},initModal:f,config:h,show:function(e,t){var o=s(e);n[o]?t&&h(e,t):f(o,t),n[o]&&n[o].showModal()},close:g,closeAll:function(){for(var e=r.length-1;e>=0;e--)n[r[e]].closeModal()},removeModal:function(e){var t=s(e),o=n[t];o&&(o.destroy(),delete n[t])}}}();\"undefined\"!=typeof window&&(window.MicroModal=n);export{n as default};\n","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n\r\nfunction __awaiter(thisArg, _arguments, P, generator) {\r\n    function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n    return new (P || (P = Promise))(function (resolve, reject) {\r\n        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n        function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n        function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n        step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n    });\r\n}\n\nconst DEFAULT_DURATION = 300;\r\nfunction scrollTo(el, options = {}) {\r\n    return __awaiter(this, void 0, void 0, function* () {\r\n        if (!(el instanceof Element) && !(el instanceof Window)) {\r\n            throw new Error(`element passed to scrollTo() must be either the window or a DOM element, you passed ${el}!`);\r\n        }\r\n        options = sanitizeScrollOptions(options);\r\n        const scroll = (from, to, prop, startTime, duration = DEFAULT_DURATION, easeFunc, callback) => {\r\n            window.requestAnimationFrame(() => {\r\n                const currentTime = Date.now();\r\n                const time = Math.min(1, (currentTime - startTime) / duration);\r\n                if (from === to) {\r\n                    return callback ? callback() : null;\r\n                }\r\n                setScrollPosition(el, easeFunc(time) * (to - from) + from);\r\n                /* prevent scrolling, if already there, or at end */\r\n                if (time < 1) {\r\n                    scroll(from, to, prop, startTime, duration, easeFunc, callback);\r\n                }\r\n                else if (callback) {\r\n                    callback();\r\n                }\r\n            });\r\n        };\r\n        const currentScrollPosition = getScrollPosition(el);\r\n        const scrollProperty = getScrollPropertyByElement(el);\r\n        return new Promise((resolve) => {\r\n            scroll(currentScrollPosition, typeof options.top === 'number'\r\n                ? options.top\r\n                : currentScrollPosition, scrollProperty, Date.now(), options.duration, getEasing(options.easing), resolve);\r\n        });\r\n    });\r\n}\r\nfunction scrollIntoView(element, scroller, options) {\r\n    validateElement(element);\r\n    if (scroller && !(scroller instanceof Element)) {\r\n        options = scroller;\r\n        scroller = undefined;\r\n    }\r\n    const { duration, easing } = sanitizeScrollOptions(options);\r\n    scroller = scroller || utils.getDocument().body;\r\n    let currentContainerScrollYPos = 0;\r\n    let elementScrollYPos = element ? element.offsetTop : 0;\r\n    const document = utils.getDocument();\r\n    // if the container is the document body or document itself, we'll\r\n    // need a different set of coordinates for accuracy\r\n    if (scroller === document.body || scroller === document.documentElement) {\r\n        // using pageYOffset for cross-browser compatibility\r\n        currentContainerScrollYPos = window.pageYOffset;\r\n        // must add containers scroll y position to ensure an absolute value that does not change\r\n        elementScrollYPos =\r\n            element.getBoundingClientRect().top + currentContainerScrollYPos;\r\n    }\r\n    return scrollTo(scroller, {\r\n        top: elementScrollYPos,\r\n        left: 0,\r\n        duration,\r\n        easing,\r\n    });\r\n}\r\nfunction validateElement(element) {\r\n    if (element === undefined) {\r\n        const errorMsg = 'The element passed to scrollIntoView() was undefined.';\r\n        throw new Error(errorMsg);\r\n    }\r\n    if (!(element instanceof HTMLElement)) {\r\n        throw new Error(`The element passed to scrollIntoView() must be a valid element. You passed ${element}.`);\r\n    }\r\n}\r\nfunction getScrollPropertyByElement(el) {\r\n    const props = {\r\n        window: {\r\n            y: 'scrollY',\r\n            x: 'scrollX',\r\n        },\r\n        element: {\r\n            y: 'scrollTop',\r\n            x: 'scrollLeft',\r\n        },\r\n    };\r\n    const axis = 'y';\r\n    if (el instanceof Window) {\r\n        return props.window[axis];\r\n    }\r\n    else {\r\n        return props.element[axis];\r\n    }\r\n}\r\nfunction sanitizeScrollOptions(options = {}) {\r\n    if (options.behavior === 'smooth') {\r\n        options.easing = 'ease-in-out';\r\n        options.duration = DEFAULT_DURATION;\r\n    }\r\n    if (options.behavior === 'auto') {\r\n        options.duration = 0;\r\n        options.easing = 'linear';\r\n    }\r\n    return options;\r\n}\r\nfunction getScrollPosition(el) {\r\n    const document = utils.getDocument();\r\n    if (el === document.body ||\r\n        el === document.documentElement ||\r\n        el instanceof Window) {\r\n        return document.body.scrollTop || document.documentElement.scrollTop;\r\n    }\r\n    else {\r\n        return el.scrollTop;\r\n    }\r\n}\r\nfunction setScrollPosition(el, value) {\r\n    const document = utils.getDocument();\r\n    if (el === document.body ||\r\n        el === document.documentElement ||\r\n        el instanceof Window) {\r\n        document.body.scrollTop = value;\r\n        document.documentElement.scrollTop = value;\r\n    }\r\n    else {\r\n        el.scrollTop = value;\r\n    }\r\n}\r\nconst utils = {\r\n    // we're really just exporting this so that tests can mock the document.documentElement\r\n    getDocument() {\r\n        return document;\r\n    },\r\n};\r\nconst easingMap = {\r\n    linear(t) {\r\n        return t;\r\n    },\r\n    'ease-in'(t) {\r\n        return t * t;\r\n    },\r\n    'ease-out'(t) {\r\n        return t * (2 - t);\r\n    },\r\n    'ease-in-out'(t) {\r\n        return t < 0.5 ? 2 * t * t : -1 + (4 - 2 * t) * t;\r\n    },\r\n};\r\nconst getEasing = (easing) => {\r\n    const defaultEasing = 'linear';\r\n    const easeFunc = easingMap[easing || defaultEasing];\r\n    if (!easeFunc) {\r\n        const options = Object.keys(easingMap).join(',');\r\n        throw new Error(`Scroll error: scroller does not support an easing option of \"${easing}\". Supported options are ${options}`);\r\n    }\r\n    return easeFunc;\r\n};\n\nexport { DEFAULT_DURATION, easingMap, scrollIntoView, scrollTo, utils };\n","/**\n * Check if localStorage is available/usable (inspired from Modernizr field-tested approach).\n * @returns {boolean}\n */\nexport default class localStorageCheck {\n    static isEnabled() {\n        try {\n            const val = 'check';\n            localStorage.setItem(val, val);\n            localStorage.removeItem(val);\n            return true;\n        } catch (error) {\n            return false;\n        }\n    }\n}\n\nexport { localStorageCheck };\n","import * as Sentry from '@sentry/browser';\n\nconst eventObjectBuilder = (eventObject) => {\n    if (eventObject === undefined) {\n        Sentry.captureMessage('Missing tracking argument', {\n            level: 'error',\n        });\n        return;\n    }\n    if (typeof eventObject !== 'object') {\n        Sentry.captureMessage('Invalid tracking argument', {\n            level: 'error',\n            extra: {\n                argument: eventObject,\n            },\n        });\n        return;\n    }\n\n    const output = {\n        timestamp: Date.now(),\n    };\n\n    Object.keys(eventObject).forEach((key) => {\n        output[key] = eventObject[key];\n    });\n\n    // eslint-disable-next-line\n    return output;\n};\n\n/**\n * Function taking care of feeding the data layer on demand.\n * Takes an array as argument, like the following:\n * [eventCategory, eventAction, eventLabel, eventValue]\n * Note that eventValue is optional.\n * @param eventObject {object}\n */\nconst eventTracking = (eventObject) => {\n    if (window.dataLayer) {\n        window.dataLayer.push(eventObjectBuilder(eventObject));\n    } else {\n        Sentry.captureMessage(\n            'No dataLayer found on window, event tracking won\\'t work on this client', {\n                level: 'info',\n            },\n        );\n    }\n};\n\n// eslint-disable-next-line\nexport { eventTracking as eT };\n","import MicroModal from 'micromodal';\n\nexport default class TrustPilot {\n    constructor() {\n        this.moveModals();\n        this.handleClick();\n    }\n\n    handleClick() {\n        const widgets = document.querySelectorAll('[data-trustpilot]');\n        widgets.forEach((widgetEl) => {\n            const readMoreLinkEl = widgetEl.querySelector('[data-trustpilot-modal-id]');\n            readMoreLinkEl.addEventListener('click', (event) => {\n                event.preventDefault();\n                const { trustpilotModalId } = event.target.dataset;\n                MicroModal.show(`modal-trustpilot-${trustpilotModalId}`);\n            });\n        });\n    }\n\n    /**\n     * When the page loads, each TrustPilot review widget will contain its own modal box code.\n     * Sadly, according to the way our carousel works internally, opening a modal box from within\n     * the carousel context ends up displaying the modal inside the carousel, which is broken. This\n     * is a JS + CSS issue, so the best way I found to tackle this in a clean way is to move all\n     * modals to the end of the document's <body> when the page loads.\n     */\n    moveModals() {\n        const moved = [];\n        const modals = document.querySelectorAll('[id^=\"modal-trustpilot-\"]');\n        modals.forEach((el) => {\n            if (moved.includes(el.id)) {\n                /**\n                 * Deduplicate, in case some modals have the same ID, only one will be moved, the\n                 * rest will be removed. This can happen if a content editor decides to place\n                 * multiple instances of the reviews carousel in the same page.\n                 */\n                el.remove();\n            } else {\n                document.body.appendChild(el);\n                moved.push(el.id);\n            }\n        });\n    }\n}\n","import axios from 'axios';\nimport MicroModal from 'micromodal';\nimport { captureException, withScope } from '@sentry/browser';\nimport validate from 'validate.js';\n\nexport default class Newsletter {\n    constructor() {\n        this.LIANA_API_URL = 'https://info.thermondo.de/account/?ajax';\n        this.LIANA_MAILING_LIST_ID = 1980543;\n        this.LIANA_CONSENT = '1454-11-de';\n\n        this.form = document.querySelector(\n            '[data-form-newsletter]',\n        );\n\n        this.formInputs = this.form.querySelectorAll(\n            'input',\n        );\n\n        this.emailFieldEl = this.form.querySelector(\n            'input[type=\"email\"]',\n        );\n\n        this.termsInputEl = this.form.querySelector(\n            '.checkbox',\n        );\n\n        this.submitBtn = this.form.querySelector(\n            'button[type=\"submit\"]',\n        );\n\n        this.modalContents = document.querySelectorAll(\n            '[data-form-newsletter-modal-content]',\n        );\n\n        this.constraints = {\n            email: {\n                presence: true,\n                email: true,\n            },\n            terms: {\n                inclusion: {\n                    within: [true],\n                },\n            },\n        };\n\n        this.init();\n    }\n\n    init() {\n        this.formInputs.forEach((input) => {\n            input.addEventListener('change', () => {\n                const errors = validate(this.form, this.constraints) || {};\n                this.handleClientErrorMessagesDisplay(input, errors[input.name]);\n            });\n        });\n\n        this.emailFieldEl.addEventListener(\n            'input',\n            () => {\n                this.showTerms();\n            },\n        );\n\n        this.form.addEventListener(\n            'submit',\n            (e) => {\n                e.preventDefault();\n                this.handleFormSubmit(this.form);\n            },\n        );\n    }\n\n    clearForm() {\n        this.emailFieldEl.value = '';\n        this.termsInputEl.querySelector('input').checked = false;\n    }\n\n    showTerms() {\n        if (this.termsInputEl.style.display === 'none') {\n            this.termsInputEl.style.display = 'block';\n        }\n    }\n\n    handleFormSubmit() {\n        const errors = validate(this.form, this.constraints);\n        this.checkForErrors(errors || {});\n\n        if (!errors) {\n            this.isLoading(true);\n\n            const params = new URLSearchParams();\n\n            params.append('email', this.emailFieldEl.value);\n            params.append('join', this.LIANA_MAILING_LIST_ID);\n            params.append('consent', this.LIANA_CONSENT);\n\n\n            axios.post(\n                this.LIANA_API_URL,\n                params,\n            )\n            .then(() => {\n                this.showModal('success');\n                this.clearForm();\n            })\n            .catch(() => {\n                this.showModal('error-generic');\n            })\n            .finally(() => {\n                this.isLoading(false);\n            });\n        }\n    }\n\n    showModal(status) {\n        this.modalContents.forEach((modalContent) => {\n            if (modalContent.dataset.formNewsletterModalContent === status) {\n                // eslint-disable-next-line no-param-reassign\n                modalContent.style.display = 'block';\n            } else {\n                // eslint-disable-next-line no-param-reassign\n                modalContent.style.display = 'none';\n            }\n        });\n\n        MicroModal.show('modal-newsletter-form');\n    }\n\n    isLoading(state) {\n        if (state) {\n            this.submitBtn.classList.add('t-btn-is-loading');\n        } else {\n            this.submitBtn.classList.remove('t-btn-is-loading');\n        }\n\n        this.submitBtn.disabled = state;\n    }\n\n    handleClientErrorMessagesDisplay(input, hasError) {\n        const parentEl = input.parentNode.parentNode;\n\n        if (hasError) {\n            parentEl.classList.add('form-field-error__container');\n        } else {\n            parentEl.classList.remove('form-field-error__container');\n        }\n    }\n\n    checkForErrors(errors) {\n        // Check fields\n        this.formInputs.forEach((input) => {\n            this.handleClientErrorMessagesDisplay(input, errors[input.name]);\n        });\n    }\n}\n","import * as Sqrl from 'squirrelly';\nimport {\n    titleTemplate,\n    textTemplate,\n    linkLabelTemplate, linkTargetTemplate,\n} from '../templates/technology';\n\n/**\n * TechnologyDesktop\n *\n * Responsible for handling the desktop version of the navigation.\n */\nexport default class TechnologyDesktop {\n    constructor() {\n        this.instanceEl = document.querySelector(\n            '[data-technology-desktop]',\n        );\n        this.menuEls = this.instanceEl.querySelectorAll(\n            '[data-technology-desktop-menu-key]',\n        );\n\n        /**\n         * Placeholders (places where to render different menu template fragments).\n         */\n        this.titlePlaceholder = this.instanceEl.querySelector(\n            '[data-technology-desktop-title-placeholder]',\n        );\n        this.textPlaceholder = this.instanceEl.querySelector(\n            '[data-technology-desktop-text-placeholder]',\n        );\n        this.linkPlaceholder = this.instanceEl.querySelector(\n            '[data-technology-desktop-link-placeholder]',\n        );\n\n        /**\n         * Pre-select first item.\n         */\n        this.handleMenu(this.menuEls[0]);\n\n        this.init();\n    }\n\n    init() {\n        /**\n         * Register general UI event listeners.\n         */\n        Array.prototype.forEach.call(\n            this.menuEls,\n            (el) => {\n                el.addEventListener(\n                    'click',\n                    (event) => {\n                        event.preventDefault();\n                        this.handleMenu(event.target);\n                    },\n                );\n            },\n        );\n    }\n\n    /**\n     * Open and initialize menu.\n     */\n    handleMenu(target) {\n        const key = target.dataset.technologyDesktopMenuKey;\n\n        this.titlePlaceholder.textContent = Sqrl.render(\n            titleTemplate,\n            {\n                key,\n            },\n        );\n        this.textPlaceholder.textContent = Sqrl.render(\n            textTemplate,\n            {\n                key,\n            },\n        );\n        this.linkPlaceholder.textContent = Sqrl.render(\n            linkLabelTemplate,\n            {\n                key,\n            },\n        );\n        this.linkPlaceholder.setAttribute(\n            'href',\n            Sqrl.render(\n                linkTargetTemplate,\n                {\n                    key,\n                },\n            ),\n        );\n\n        this.menuEls.forEach((menuEl) => {\n            menuEl.classList.remove('active');\n        });\n\n        target.classList.add('active');\n    }\n}\n","const titleTemplate = `\n    {{ @if(it.key === \"heat_pump\") }}\n        Wärmepumpe: die effiziente Klimaheizung\n    {{ /if }}\n\n    {{ @if(it.key === \"natural_gas\") }}\n        Effiziente Technologie bereit für mehr\n    {{ /if }}\n\n    {{ @if(it.key === \"solar\") }}\n        Effizient & ökologisch heizen mit Solarthermie\n    {{ /if }}\n`;\n\nconst textTemplate = `\n    {{ @if(it.key === \"heat_pump\") }}\n        Die Wärmepumpe nutzt effizient Umgebungswärme und macht Ihre Wärme so klimaneutral.\n    {{ /if }}\n\n    {{ @if(it.key === \"natural_gas\") }}\n        Moderne Gas-Brennwertkessel sind bis zu 30 % effizienter als konventionelle Gasheizungen. Viele Modelle lassen sich mit Solarthermie-Modulen verbinden.\n    {{ /if }}\n\n    {{ @if(it.key === \"solar\") }}\n        Nutzen Sie mit Solarthermie kostenlose Sonnenenergie für Heizung und Warmwasser. Der Staat belohnt das mit bis zu 25 % Förderung!\n    {{ /if }}\n`;\n\nconst linkLabelTemplate = `\n    {{ @if(it.key === \"heat_pump\") }}\n        Mehr über die Wärmepumpe\n    {{ /if }}\n\n    {{ @if(it.key === \"natural_gas\") }}\n        Mehr über Gas-Brennwertkessel\n    {{ /if }}\n\n    {{ @if(it.key === \"solar\") }}\n        Mehr über Solarthermie\n    {{ /if }}\n`;\n\nconst linkTargetTemplate = `\n    {{ @if(it.key === \"heat_pump\") }}\n        /leistungen/heizsystem/waermepumpe/\n    {{ /if }}\n\n    {{ @if(it.key === \"natural_gas\") }}\n        /leistungen/heizsystem/gasheizung/\n    {{ /if }}\n\n    {{ @if(it.key === \"solar\") }}\n        /leistungen/heizsystem/solarthermie/\n    {{ /if }}\n`;\n\nexport {\n    titleTemplate,\n    textTemplate,\n    linkLabelTemplate,\n    linkTargetTemplate,\n};\n","//#region \\0rolldown/runtime.js\nvar __create = Object.create;\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __getProtoOf = Object.getPrototypeOf;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __commonJSMin = (cb, mod) => () => (mod || (cb((mod = { exports: {} }).exports, mod), cb = null), mod.exports);\nvar __copyProps = (to, from, except, desc) => {\n\tif (from && typeof from === \"object\" || typeof from === \"function\") for (var keys = __getOwnPropNames(from), i = 0, n = keys.length, key; i < n; i++) {\n\t\tkey = keys[i];\n\t\tif (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, {\n\t\t\tget: ((k) => from[k]).bind(null, key),\n\t\t\tenumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable\n\t\t});\n\t}\n\treturn to;\n};\nvar __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(isNodeMode || !mod || !mod.__esModule || !__hasOwnProp.call(mod, \"default\") ? __defProp(target, \"default\", {\n\tvalue: mod,\n\tenumerable: true\n}) : target, mod));\n//#endregion\n//#region src/js/utils/is.js\nvar import_rangetouch = /* @__PURE__ */ __toESM((/* @__PURE__ */ __commonJSMin(((exports, module) => {\n\t(function(e, t) {\n\t\t\"object\" == typeof exports && \"undefined\" != typeof module ? module.exports = t() : \"function\" == typeof define && define.amd ? define(\"RangeTouch\", t) : (e = e || self).RangeTouch = t();\n\t})(exports, (function() {\n\t\t\"use strict\";\n\t\tfunction e(e, t) {\n\t\t\tfor (var n = 0; n < t.length; n++) {\n\t\t\t\tvar r = t[n];\n\t\t\t\tr.enumerable = r.enumerable || !1, r.configurable = !0, \"value\" in r && (r.writable = !0), Object.defineProperty(e, r.key, r);\n\t\t\t}\n\t\t}\n\t\tfunction t(e, t, n) {\n\t\t\treturn t in e ? Object.defineProperty(e, t, {\n\t\t\t\tvalue: n,\n\t\t\t\tenumerable: !0,\n\t\t\t\tconfigurable: !0,\n\t\t\t\twritable: !0\n\t\t\t}) : e[t] = n, e;\n\t\t}\n\t\tfunction n(e, t) {\n\t\t\tvar n = Object.keys(e);\n\t\t\tif (Object.getOwnPropertySymbols) {\n\t\t\t\tvar r = Object.getOwnPropertySymbols(e);\n\t\t\t\tt && (r = r.filter((function(t) {\n\t\t\t\t\treturn Object.getOwnPropertyDescriptor(e, t).enumerable;\n\t\t\t\t}))), n.push.apply(n, r);\n\t\t\t}\n\t\t\treturn n;\n\t\t}\n\t\tfunction r(e) {\n\t\t\tfor (var r = 1; r < arguments.length; r++) {\n\t\t\t\tvar i = null != arguments[r] ? arguments[r] : {};\n\t\t\t\tr % 2 ? n(Object(i), !0).forEach((function(n) {\n\t\t\t\t\tt(e, n, i[n]);\n\t\t\t\t})) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(i)) : n(Object(i)).forEach((function(t) {\n\t\t\t\t\tObject.defineProperty(e, t, Object.getOwnPropertyDescriptor(i, t));\n\t\t\t\t}));\n\t\t\t}\n\t\t\treturn e;\n\t\t}\n\t\tvar i = {\n\t\t\taddCSS: !0,\n\t\t\tthumbWidth: 15,\n\t\t\twatch: !0\n\t\t};\n\t\tfunction u(e, t) {\n\t\t\treturn function() {\n\t\t\t\treturn Array.from(document.querySelectorAll(t)).includes(this);\n\t\t\t}.call(e, t);\n\t\t}\n\t\tvar o = function(e) {\n\t\t\treturn null != e ? e.constructor : null;\n\t\t}, c = function(e, t) {\n\t\t\treturn !!(e && t && e instanceof t);\n\t\t}, l = function(e) {\n\t\t\treturn null == e;\n\t\t}, a = function(e) {\n\t\t\treturn o(e) === Object;\n\t\t}, s = function(e) {\n\t\t\treturn o(e) === String;\n\t\t}, f = function(e) {\n\t\t\treturn Array.isArray(e);\n\t\t}, h = function(e) {\n\t\t\treturn c(e, NodeList);\n\t\t}, d = s, y = f, b = h, m = function(e) {\n\t\t\treturn c(e, Element);\n\t\t}, g = function(e) {\n\t\t\treturn c(e, Event);\n\t\t}, p = function(e) {\n\t\t\treturn l(e) || (s(e) || f(e) || h(e)) && !e.length || a(e) && !Object.keys(e).length;\n\t\t};\n\t\tfunction v(e, t) {\n\t\t\tif (1 > t) {\n\t\t\t\tvar n = function(e) {\n\t\t\t\t\tvar t = \"\".concat(e).match(/(?:\\.(\\d+))?(?:[eE]([+-]?\\d+))?$/);\n\t\t\t\t\treturn t ? Math.max(0, (t[1] ? t[1].length : 0) - (t[2] ? +t[2] : 0)) : 0;\n\t\t\t\t}(t);\n\t\t\t\treturn parseFloat(e.toFixed(n));\n\t\t\t}\n\t\t\treturn Math.round(e / t) * t;\n\t\t}\n\t\treturn function() {\n\t\t\tfunction t(e, n) {\n\t\t\t\t(function(e, t) {\n\t\t\t\t\tif (!(e instanceof t)) throw new TypeError(\"Cannot call a class as a function\");\n\t\t\t\t})(this, t), m(e) ? this.element = e : d(e) && (this.element = document.querySelector(e)), m(this.element) && p(this.element.rangeTouch) && (this.config = r({}, i, {}, n), this.init());\n\t\t\t}\n\t\t\treturn n = t, c = [{\n\t\t\t\tkey: \"setup\",\n\t\t\t\tvalue: function(e) {\n\t\t\t\t\tvar n = 1 < arguments.length && void 0 !== arguments[1] ? arguments[1] : {}, o = null;\n\t\t\t\t\tif (p(e) || d(e) ? o = Array.from(document.querySelectorAll(d(e) ? e : \"input[type=\\\"range\\\"]\")) : m(e) ? o = [e] : b(e) ? o = Array.from(e) : y(e) && (o = e.filter(m)), p(o)) return null;\n\t\t\t\t\tvar c = r({}, i, {}, n);\n\t\t\t\t\tif (d(e) && c.watch) new MutationObserver((function(n) {\n\t\t\t\t\t\tArray.from(n).forEach((function(n) {\n\t\t\t\t\t\t\tArray.from(n.addedNodes).forEach((function(n) {\n\t\t\t\t\t\t\t\tm(n) && u(n, e) && new t(n, c);\n\t\t\t\t\t\t\t}));\n\t\t\t\t\t\t}));\n\t\t\t\t\t})).observe(document.body, {\n\t\t\t\t\t\tchildList: !0,\n\t\t\t\t\t\tsubtree: !0\n\t\t\t\t\t});\n\t\t\t\t\treturn o.map((function(e) {\n\t\t\t\t\t\treturn new t(e, n);\n\t\t\t\t\t}));\n\t\t\t\t}\n\t\t\t}, {\n\t\t\t\tkey: \"enabled\",\n\t\t\t\tget: function() {\n\t\t\t\t\treturn \"ontouchstart\" in document.documentElement;\n\t\t\t\t}\n\t\t\t}], (o = [\n\t\t\t\t{\n\t\t\t\t\tkey: \"init\",\n\t\t\t\t\tvalue: function() {\n\t\t\t\t\t\tt.enabled && (this.config.addCSS && (this.element.style.userSelect = \"none\", this.element.style.webKitUserSelect = \"none\", this.element.style.touchAction = \"manipulation\"), this.listeners(!0), this.element.rangeTouch = this);\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tkey: \"destroy\",\n\t\t\t\t\tvalue: function() {\n\t\t\t\t\t\tt.enabled && (this.config.addCSS && (this.element.style.userSelect = \"\", this.element.style.webKitUserSelect = \"\", this.element.style.touchAction = \"\"), this.listeners(!1), this.element.rangeTouch = null);\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tkey: \"listeners\",\n\t\t\t\t\tvalue: function(e) {\n\t\t\t\t\t\tvar t = this, n = e ? \"addEventListener\" : \"removeEventListener\";\n\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\"touchstart\",\n\t\t\t\t\t\t\t\"touchmove\",\n\t\t\t\t\t\t\t\"touchend\"\n\t\t\t\t\t\t].forEach((function(e) {\n\t\t\t\t\t\t\tt.element[n](e, (function(e) {\n\t\t\t\t\t\t\t\treturn t.set(e);\n\t\t\t\t\t\t\t}), !1);\n\t\t\t\t\t\t}));\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tkey: \"get\",\n\t\t\t\t\tvalue: function(e) {\n\t\t\t\t\t\tif (!t.enabled || !g(e)) return null;\n\t\t\t\t\t\tvar n, r = e.target, i = e.changedTouches[0], u = parseFloat(r.getAttribute(\"min\")) || 0, o = parseFloat(r.getAttribute(\"max\")) || 100, c = parseFloat(r.getAttribute(\"step\")) || 1, l = r.getBoundingClientRect(), a = 100 / l.width * (this.config.thumbWidth / 2) / 100;\n\t\t\t\t\t\treturn 0 > (n = 100 / l.width * (i.clientX - l.left)) ? n = 0 : 100 < n && (n = 100), 50 > n ? n -= (100 - 2 * n) * a : 50 < n && (n += 2 * (n - 50) * a), u + v(n / 100 * (o - u), c);\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tkey: \"set\",\n\t\t\t\t\tvalue: function(e) {\n\t\t\t\t\t\tt.enabled && g(e) && !e.target.disabled && (e.preventDefault(), e.target.value = this.get(e), function(e, t) {\n\t\t\t\t\t\t\tif (e && t) {\n\t\t\t\t\t\t\t\tvar n = new Event(t, { bubbles: !0 });\n\t\t\t\t\t\t\t\te.dispatchEvent(n);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}(e.target, \"touchend\" === e.type ? \"change\" : \"input\"));\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t]) && e(n.prototype, o), c && e(n, c), t;\n\t\t\tvar n, o, c;\n\t\t}();\n\t}));\n})))(), 1);\nvar getConstructor = (input) => input !== null && typeof input !== \"undefined\" ? input.constructor : null;\nvar instanceOf = (input, constructor) => Boolean(input && constructor && input instanceof constructor);\nvar isNullOrUndefined = (input) => input === null || typeof input === \"undefined\";\nvar isObject = (input) => getConstructor(input) === Object;\nvar isNumber = (input) => getConstructor(input) === Number && !Number.isNaN(input);\nvar isString = (input) => getConstructor(input) === String;\nvar isBoolean = (input) => getConstructor(input) === Boolean;\nvar isFunction = (input) => typeof input === \"function\";\nvar isArray = (input) => Array.isArray(input);\nvar isWeakMap = (input) => instanceOf(input, WeakMap);\nvar isNodeList = (input) => instanceOf(input, NodeList);\nvar isTextNode = (input) => getConstructor(input) === Text;\nvar isEvent = (input) => instanceOf(input, Event);\nvar isKeyboardEvent = (input) => instanceOf(input, KeyboardEvent);\nvar isCue = (input) => instanceOf(input, window.TextTrackCue) || instanceOf(input, window.VTTCue);\nvar isTrack = (input) => instanceOf(input, TextTrack) || !isNullOrUndefined(input) && isString(input.kind);\nvar isPromise = (input) => instanceOf(input, Promise) && isFunction(input.then);\nfunction isElement(input) {\n\treturn input !== null && typeof input === \"object\" && input.nodeType === 1 && typeof input.style === \"object\" && typeof input.ownerDocument === \"object\";\n}\nfunction isEmpty(input) {\n\treturn isNullOrUndefined(input) || (isString(input) || isArray(input) || isNodeList(input)) && !input.length || isObject(input) && !Object.keys(input).length;\n}\nfunction isUrl(input) {\n\tif (instanceOf(input, window.URL)) return true;\n\tif (!isString(input)) return false;\n\tlet string = input;\n\tif (!input.startsWith(\"http://\") || !input.startsWith(\"https://\")) string = `http://${input}`;\n\ttry {\n\t\treturn !isEmpty(new URL(string).hostname);\n\t} catch {\n\t\treturn false;\n\t}\n}\nvar is_default = {\n\tnullOrUndefined: isNullOrUndefined,\n\tobject: isObject,\n\tnumber: isNumber,\n\tstring: isString,\n\tboolean: isBoolean,\n\tfunction: isFunction,\n\tarray: isArray,\n\tweakMap: isWeakMap,\n\tnodeList: isNodeList,\n\telement: isElement,\n\ttextNode: isTextNode,\n\tevent: isEvent,\n\tkeyboardEvent: isKeyboardEvent,\n\tcue: isCue,\n\ttrack: isTrack,\n\tpromise: isPromise,\n\turl: isUrl,\n\tempty: isEmpty\n};\n//#endregion\n//#region src/js/utils/animation.js\nvar transitionEndEvent = (() => {\n\tconst element = document.createElement(\"span\");\n\tconst events = {\n\t\tWebkitTransition: \"webkitTransitionEnd\",\n\t\tMozTransition: \"transitionend\",\n\t\tOTransition: \"oTransitionEnd otransitionend\",\n\t\ttransition: \"transitionend\"\n\t};\n\tconst type = Object.keys(events).find((event) => element.style[event] !== void 0);\n\treturn is_default.string(type) ? events[type] : false;\n})();\nfunction repaint(element, delay) {\n\tsetTimeout(() => {\n\t\ttry {\n\t\t\telement.hidden = true;\n\t\t\telement.offsetHeight;\n\t\t\telement.hidden = false;\n\t\t} catch {}\n\t}, delay);\n}\n//#endregion\n//#region src/js/utils/objects.js\nfunction cloneDeep(object) {\n\treturn JSON.parse(JSON.stringify(object));\n}\nfunction getDeep(object, path) {\n\treturn path.split(\".\").reduce((obj, key) => obj && obj[key], object);\n}\nfunction extend(target = {}, ...sources) {\n\tif (!sources.length) return target;\n\tconst source = sources.shift();\n\tif (!is_default.object(source)) return target;\n\tObject.keys(source).forEach((key) => {\n\t\tif (is_default.object(source[key])) {\n\t\t\tif (!Object.keys(target).includes(key)) Object.assign(target, { [key]: {} });\n\t\t\textend(target[key], source[key]);\n\t\t} else Object.assign(target, { [key]: source[key] });\n\t});\n\treturn extend(target, ...sources);\n}\n//#endregion\n//#region src/js/utils/elements.js\nfunction wrap(elements, wrapper) {\n\tconst targets = elements.length ? elements : [elements];\n\tArray.from(targets).reverse().forEach((element, index) => {\n\t\tconst child = index > 0 ? wrapper.cloneNode(true) : wrapper;\n\t\tconst parent = element.parentNode;\n\t\tconst sibling = element.nextSibling;\n\t\tchild.appendChild(element);\n\t\tif (sibling) parent.insertBefore(child, sibling);\n\t\telse parent.appendChild(child);\n\t});\n}\nfunction setAttributes(element, attributes) {\n\tif (!is_default.element(element) || is_default.empty(attributes)) return;\n\tObject.entries(attributes).filter(([, value]) => !is_default.nullOrUndefined(value)).forEach(([key, value]) => element.setAttribute(key, value));\n}\nfunction createElement(type, attributes, text) {\n\tconst element = document.createElement(type);\n\tif (is_default.object(attributes)) setAttributes(element, attributes);\n\tif (is_default.string(text)) element.textContent = text;\n\treturn element;\n}\nfunction insertAfter(element, target) {\n\tif (!is_default.element(element) || !is_default.element(target)) return;\n\ttarget.parentNode.insertBefore(element, target.nextSibling);\n}\nfunction insertElement(type, parent, attributes, text) {\n\tif (!is_default.element(parent)) return;\n\tparent.appendChild(createElement(type, attributes, text));\n}\nfunction removeElement(element) {\n\tif (is_default.nodeList(element) || is_default.array(element)) {\n\t\tArray.from(element).forEach(removeElement);\n\t\treturn;\n\t}\n\tif (!is_default.element(element) || !is_default.element(element.parentNode)) return;\n\telement.parentNode.removeChild(element);\n}\nfunction emptyElement(element) {\n\tif (!is_default.element(element)) return;\n\tlet { length } = element.childNodes;\n\twhile (length > 0) {\n\t\telement.removeChild(element.lastChild);\n\t\tlength -= 1;\n\t}\n}\nfunction replaceElement(newChild, oldChild) {\n\tif (!is_default.element(oldChild) || !is_default.element(oldChild.parentNode) || !is_default.element(newChild)) return null;\n\toldChild.parentNode.replaceChild(newChild, oldChild);\n\treturn newChild;\n}\nfunction getAttributesFromSelector(sel, existingAttributes) {\n\tif (!is_default.string(sel) || is_default.empty(sel)) return {};\n\tconst attributes = {};\n\tconst existing = extend({}, existingAttributes);\n\tsel.split(\",\").forEach((s) => {\n\t\tconst selector = s.trim();\n\t\tconst className = selector.replace(\".\", \"\");\n\t\tconst parts = selector.replace(/[[\\]]/g, \"\").split(\"=\");\n\t\tconst [key] = parts;\n\t\tconst value = parts.length > 1 ? parts[1].replace(/[\"']/g, \"\") : \"\";\n\t\tswitch (selector.charAt(0)) {\n\t\t\tcase \".\":\n\t\t\t\tif (is_default.string(existing.class)) attributes.class = `${existing.class} ${className}`;\n\t\t\t\telse attributes.class = className;\n\t\t\t\tbreak;\n\t\t\tcase \"#\":\n\t\t\t\tattributes.id = selector.replace(\"#\", \"\");\n\t\t\t\tbreak;\n\t\t\tcase \"[\": attributes[key] = value;\n\t\t}\n\t});\n\treturn extend(existing, attributes);\n}\nfunction toggleHidden(element, hidden) {\n\tif (!is_default.element(element)) return;\n\tlet hide = hidden;\n\tif (!is_default.boolean(hide)) hide = !element.hidden;\n\telement.hidden = hide;\n}\nfunction toggleClass(element, className, force) {\n\tif (is_default.nodeList(element)) return Array.from(element).map((e) => toggleClass(e, className, force));\n\tif (is_default.element(element)) {\n\t\tlet method = \"toggle\";\n\t\tif (typeof force !== \"undefined\") method = force ? \"add\" : \"remove\";\n\t\telement.classList[method](className);\n\t\treturn element.classList.contains(className);\n\t}\n\treturn false;\n}\nfunction hasClass(element, className) {\n\treturn is_default.element(element) && element.classList.contains(className);\n}\nfunction matches(element, selector) {\n\tconst { prototype } = Element;\n\tfunction match() {\n\t\treturn Array.from(document.querySelectorAll(selector)).includes(this);\n\t}\n\treturn (prototype.matches || prototype.webkitMatchesSelector || prototype.mozMatchesSelector || prototype.msMatchesSelector || match).call(element, selector);\n}\nfunction closest$1(element, selector) {\n\tconst { prototype } = Element;\n\tfunction closestElement() {\n\t\tlet el = this;\n\t\tdo {\n\t\t\tif (matches.matches(el, selector)) return el;\n\t\t\tel = el.parentElement || el.parentNode;\n\t\t} while (el !== null && el.nodeType === 1);\n\t\treturn null;\n\t}\n\treturn (prototype.closest || closestElement).call(element, selector);\n}\nfunction getElements(selector) {\n\treturn this.elements.container.querySelectorAll(selector);\n}\nfunction getElement(selector) {\n\treturn this.elements.container.querySelector(selector);\n}\nfunction setFocus(element = null, focusVisible = false) {\n\tif (!is_default.element(element)) return;\n\telement.focus({\n\t\tpreventScroll: true,\n\t\tfocusVisible\n\t});\n}\n//#endregion\n//#region src/js/support.js\nvar defaultCodecs = {\n\t\"audio/ogg\": \"vorbis\",\n\t\"audio/wav\": \"1\",\n\t\"video/webm\": \"vp8, vorbis\",\n\t\"video/mp4\": \"avc1.42E01E, mp4a.40.2\",\n\t\"video/ogg\": \"theora\"\n};\nvar support = {\n\taudio: \"canPlayType\" in document.createElement(\"audio\"),\n\tvideo: \"canPlayType\" in document.createElement(\"video\"),\n\tcheck(type, provider) {\n\t\tconst api = support[type] || provider !== \"html5\";\n\t\treturn {\n\t\t\tapi,\n\t\t\tui: api && support.rangeInput\n\t\t};\n\t},\n\tpip: (() => {\n\t\treturn document.pictureInPictureEnabled && !createElement(\"video\").disablePictureInPicture;\n\t})(),\n\tairplay: is_default.function(window.WebKitPlaybackTargetAvailabilityEvent),\n\tplaysinline: \"playsInline\" in document.createElement(\"video\"),\n\tmime(input) {\n\t\tif (is_default.empty(input)) return false;\n\t\tconst [mediaType] = input.split(\"/\");\n\t\tlet type = input;\n\t\tif (!this.isHTML5 || mediaType !== this.type) return false;\n\t\tif (Object.keys(defaultCodecs).includes(type)) type += `; codecs=\"${defaultCodecs[input]}\"`;\n\t\ttry {\n\t\t\treturn Boolean(type && this.media.canPlayType(type).replace(/no/, \"\"));\n\t\t} catch {\n\t\t\treturn false;\n\t\t}\n\t},\n\ttextTracks: \"textTracks\" in document.createElement(\"video\"),\n\trangeInput: (() => {\n\t\tconst range = document.createElement(\"input\");\n\t\trange.type = \"range\";\n\t\treturn range.type === \"range\";\n\t})(),\n\ttouch: \"ontouchstart\" in document.documentElement,\n\ttransitions: transitionEndEvent !== false,\n\treducedMotion: \"matchMedia\" in window && window.matchMedia(\"(prefers-reduced-motion)\").matches\n};\n//#endregion\n//#region src/js/utils/events.js\nvar supportsPassiveListeners = (() => {\n\tlet supported = false;\n\ttry {\n\t\tconst options = Object.defineProperty({}, \"passive\", { get() {\n\t\t\tsupported = true;\n\t\t\treturn null;\n\t\t} });\n\t\twindow.addEventListener(\"test\", null, options);\n\t\twindow.removeEventListener(\"test\", null, options);\n\t} catch {}\n\treturn supported;\n})();\nfunction toggleListener(element, event, callback, toggle = false, passive = true, capture = false) {\n\tif (!element || !(\"addEventListener\" in element) || is_default.empty(event) || !is_default.function(callback)) return;\n\tconst events = event.split(\" \");\n\tlet options = capture;\n\tif (supportsPassiveListeners) options = {\n\t\tpassive,\n\t\tcapture\n\t};\n\tevents.forEach((type) => {\n\t\tif (this && this.eventListeners && toggle) this.eventListeners.push({\n\t\t\telement,\n\t\t\ttype,\n\t\t\tcallback,\n\t\t\toptions\n\t\t});\n\t\telement[toggle ? \"addEventListener\" : \"removeEventListener\"](type, callback, options);\n\t});\n}\nfunction on(element, events = \"\", callback, passive = true, capture = false) {\n\ttoggleListener.call(this, element, events, callback, true, passive, capture);\n}\nfunction off(element, events = \"\", callback, passive = true, capture = false) {\n\ttoggleListener.call(this, element, events, callback, false, passive, capture);\n}\nfunction once(element, events = \"\", callback, passive = true, capture = false) {\n\tconst onceCallback = (...args) => {\n\t\toff(element, events, onceCallback, passive, capture);\n\t\tcallback.apply(this, args);\n\t};\n\ttoggleListener.call(this, element, events, onceCallback, true, passive, capture);\n}\nfunction triggerEvent(element, type = \"\", bubbles = false, detail = {}) {\n\tif (!is_default.element(element) || is_default.empty(type)) return;\n\tconst event = new CustomEvent(type, {\n\t\tbubbles,\n\t\tdetail: {\n\t\t\t...detail,\n\t\t\tplyr: this\n\t\t}\n\t});\n\telement.dispatchEvent(event);\n}\nfunction unbindListeners() {\n\tif (this && this.eventListeners) {\n\t\tthis.eventListeners.forEach((item) => {\n\t\t\tconst { element, type, callback, options } = item;\n\t\t\telement.removeEventListener(type, callback, options);\n\t\t});\n\t\tthis.eventListeners = [];\n\t}\n}\nfunction ready() {\n\treturn new Promise((resolve) => this.ready ? setTimeout(resolve, 0) : on.call(this, this.elements.container, \"ready\", resolve)).then(() => {});\n}\n//#endregion\n//#region src/js/utils/promise.js\n/**\n* Silence a Promise-like object.\n* This is useful for avoiding non-harmful, but potentially confusing \"uncaught\n* play promise\" rejection error messages.\n* @param  {object} value An object that may or may not be `Promise`-like.\n*/\nfunction silencePromise(value) {\n\tif (is_default.promise(value)) value.then(null, () => {});\n}\n//#endregion\n//#region src/js/utils/arrays.js\nfunction dedupe(array) {\n\tif (!is_default.array(array)) return array;\n\treturn array.filter((item, index) => array.indexOf(item) === index);\n}\nfunction closest(array, value) {\n\tif (!is_default.array(array) || !array.length) return null;\n\treturn array.reduce((prev, curr) => Math.abs(curr - value) < Math.abs(prev - value) ? curr : prev);\n}\n//#endregion\n//#region src/js/utils/style.js\nfunction supportsCSS(declaration) {\n\tif (!window || !window.CSS) return false;\n\treturn window.CSS.supports(declaration);\n}\nvar standardRatios = [\n\t[1, 1],\n\t[4, 3],\n\t[3, 4],\n\t[5, 4],\n\t[4, 5],\n\t[3, 2],\n\t[2, 3],\n\t[16, 10],\n\t[10, 16],\n\t[16, 9],\n\t[9, 16],\n\t[21, 9],\n\t[9, 21],\n\t[32, 9],\n\t[9, 32]\n].reduce((out, [x, y]) => ({\n\t...out,\n\t[x / y]: [x, y]\n}), {});\nfunction validateAspectRatio(input) {\n\tif (!is_default.array(input) && (!is_default.string(input) || !input.includes(\":\"))) return false;\n\treturn (is_default.array(input) ? input : input.split(\":\")).map(Number).every(is_default.number);\n}\nfunction reduceAspectRatio(ratio) {\n\tif (!is_default.array(ratio) || !ratio.every(is_default.number)) return null;\n\tconst [width, height] = ratio;\n\tconst getDivider = (w, h) => h === 0 ? w : getDivider(h, w % h);\n\tconst divider = getDivider(width, height);\n\treturn [width / divider, height / divider];\n}\nfunction getAspectRatio(input) {\n\tconst parse = (ratio) => validateAspectRatio(ratio) ? ratio.split(\":\").map(Number) : null;\n\tlet ratio = parse(input);\n\tif (ratio === null) ratio = parse(this.config.ratio);\n\tif (ratio === null && !is_default.empty(this.embed) && is_default.array(this.embed.ratio)) ({ratio} = this.embed);\n\tif (ratio === null && this.isHTML5) {\n\t\tconst { videoWidth, videoHeight } = this.media;\n\t\tratio = [videoWidth, videoHeight];\n\t}\n\treturn reduceAspectRatio(ratio);\n}\nfunction setAspectRatio(input) {\n\tif (!this.isVideo) return {};\n\tconst { wrapper } = this.elements;\n\tconst ratio = getAspectRatio.call(this, input);\n\tif (!is_default.array(ratio)) return {};\n\tconst [x, y] = reduceAspectRatio(ratio);\n\tconst useNative = supportsCSS(`aspect-ratio: ${x}/${y}`);\n\tconst padding = 100 / x * y;\n\tif (useNative) wrapper.style.aspectRatio = `${x}/${y}`;\n\telse wrapper.style.paddingBottom = `${padding}%`;\n\tif (this.isVimeo && !this.config.vimeo.premium && this.supported.ui) {\n\t\tconst height = 100 / this.media.offsetWidth * Number.parseInt(window.getComputedStyle(this.media).paddingBottom, 10);\n\t\tconst offset = (height - padding) / (height / 50);\n\t\tif (this.fullscreen.active) wrapper.style.paddingBottom = null;\n\t\telse this.media.style.transform = `translateY(-${offset}%)`;\n\t} else if (this.isHTML5) wrapper.classList.add(this.config.classNames.videoFixedRatio);\n\treturn {\n\t\tpadding,\n\t\tratio\n\t};\n}\nfunction roundAspectRatio(x, y, tolerance = .05) {\n\tconst ratio = x / y;\n\tconst closestRatio = closest(Object.keys(standardRatios), ratio);\n\tif (Math.abs(closestRatio - ratio) <= tolerance) return standardRatios[closestRatio];\n\treturn [x, y];\n}\nfunction getViewportSize() {\n\treturn [Math.max(document.documentElement.clientWidth || 0, window.innerWidth || 0), Math.max(document.documentElement.clientHeight || 0, window.innerHeight || 0)];\n}\n//#endregion\n//#region src/js/html5.js\nvar html5 = {\n\tgetSources() {\n\t\tif (!this.isHTML5) return [];\n\t\treturn Array.from(this.media.querySelectorAll(\"source\")).filter((source) => {\n\t\t\tconst type = source.getAttribute(\"type\");\n\t\t\tif (is_default.empty(type)) return true;\n\t\t\treturn support.mime.call(this, type);\n\t\t});\n\t},\n\tgetQualityOptions() {\n\t\tif (this.config.quality.forced) return this.config.quality.options;\n\t\treturn html5.getSources.call(this).map((source) => Number(source.getAttribute(\"size\"))).filter(Boolean);\n\t},\n\tsetup() {\n\t\tif (!this.isHTML5) return;\n\t\tconst player = this;\n\t\tplayer.options.speed = player.config.speed.options;\n\t\tif (!is_default.empty(this.config.ratio)) setAspectRatio.call(player);\n\t\tObject.defineProperty(player.media, \"quality\", {\n\t\t\tget() {\n\t\t\t\tconst source = html5.getSources.call(player).find((s) => s.getAttribute(\"src\") === player.source);\n\t\t\t\treturn source && Number(source.getAttribute(\"size\"));\n\t\t\t},\n\t\t\tset(input) {\n\t\t\t\tif (player.quality === input) return;\n\t\t\t\tif (player.config.quality.forced && is_default.function(player.config.quality.onChange)) player.config.quality.onChange(input);\n\t\t\t\telse {\n\t\t\t\t\tconst source = html5.getSources.call(player).find((s) => Number(s.getAttribute(\"size\")) === input);\n\t\t\t\t\tif (!source) return;\n\t\t\t\t\tconst { currentTime, paused, preload, readyState, playbackRate } = player.media;\n\t\t\t\t\tplayer.media.src = source.getAttribute(\"src\");\n\t\t\t\t\tif (preload !== \"none\" || readyState) {\n\t\t\t\t\t\tplayer.once(\"loadedmetadata\", () => {\n\t\t\t\t\t\t\tplayer.speed = playbackRate;\n\t\t\t\t\t\t\tplayer.currentTime = currentTime;\n\t\t\t\t\t\t\tif (!paused) silencePromise(player.play());\n\t\t\t\t\t\t});\n\t\t\t\t\t\tplayer.media.load();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\ttriggerEvent.call(player, player.media, \"qualitychange\", false, { quality: input });\n\t\t\t}\n\t\t});\n\t},\n\tcancelRequests() {\n\t\tif (!this.isHTML5) return;\n\t\tremoveElement(html5.getSources.call(this));\n\t\tthis.media.setAttribute(\"src\", this.config.blankVideo);\n\t\tthis.media.load();\n\t\tthis.debug.log(\"Cancelled network requests\");\n\t}\n};\nvar browser_default = {\n\tisIE: Boolean(window.document.documentMode),\n\tisEdge: /Edge/.test(navigator.userAgent),\n\tisWebKit: \"WebkitAppearance\" in document.documentElement.style && !/Edge/.test(navigator.userAgent),\n\tisIPhone: /iPhone|iPod/i.test(navigator.userAgent) && navigator.maxTouchPoints > 1,\n\tisIPadOS: navigator.platform === \"MacIntel\" && navigator.maxTouchPoints > 1,\n\tisIos: /iPad|iPhone|iPod/i.test(navigator.userAgent) && navigator.maxTouchPoints > 1\n};\n//#endregion\n//#region src/js/utils/strings.js\nfunction generateId(prefix) {\n\treturn `${prefix}-${Math.floor(Math.random() * 1e4)}`;\n}\nfunction format(input, ...args) {\n\tif (is_default.empty(input)) return input;\n\treturn input.toString().replace(/\\{(\\d+)\\}/g, (_, i) => args[i].toString());\n}\nfunction getPercentage(current, max) {\n\tif (current === 0 || max === 0 || Number.isNaN(current) || Number.isNaN(max)) return 0;\n\treturn (current / max * 100).toFixed(2);\n}\nfunction replaceAll(input = \"\", find = \"\", replace = \"\") {\n\treturn input.replace(new RegExp(find.toString().replace(/([.*+?^=!:${}()|[\\]/\\\\])/g, \"\\\\$1\"), \"g\"), replace.toString());\n}\nfunction toTitleCase(input = \"\") {\n\treturn input.toString().replace(/\\w\\S*/g, (text) => text.charAt(0).toUpperCase() + text.slice(1).toLowerCase());\n}\nfunction toPascalCase(input = \"\") {\n\tlet string = input.toString();\n\tstring = replaceAll(string, \"-\", \" \");\n\tstring = replaceAll(string, \"_\", \" \");\n\tstring = toTitleCase(string);\n\treturn replaceAll(string, \" \", \"\");\n}\nfunction toCamelCase(input = \"\") {\n\tlet string = input.toString();\n\tstring = toPascalCase(string);\n\treturn string.charAt(0).toLowerCase() + string.slice(1);\n}\nfunction stripHTML(source) {\n\tconst fragment = document.createDocumentFragment();\n\tconst element = document.createElement(\"div\");\n\tfragment.appendChild(element);\n\telement.innerHTML = source;\n\treturn fragment.firstChild.textContent;\n}\nfunction getHTML(element) {\n\tconst wrapper = document.createElement(\"div\");\n\twrapper.appendChild(element);\n\treturn wrapper.innerHTML;\n}\n//#endregion\n//#region src/js/utils/i18n.js\nvar resources = {\n\tpip: \"PIP\",\n\tairplay: \"AirPlay\",\n\thtml5: \"HTML5\",\n\tvimeo: \"Vimeo\",\n\tyoutube: \"YouTube\"\n};\nvar i18n = { get(key = \"\", config = {}) {\n\tif (is_default.empty(key) || is_default.empty(config)) return \"\";\n\tlet string = getDeep(config.i18n, key);\n\tif (is_default.empty(string)) {\n\t\tif (Object.keys(resources).includes(key)) return resources[key];\n\t\treturn \"\";\n\t}\n\tconst replace = {\n\t\t\"{seektime}\": config.seekTime,\n\t\t\"{title}\": config.title\n\t};\n\tObject.entries(replace).forEach(([k, v]) => {\n\t\tstring = replaceAll(string, k, v);\n\t});\n\treturn string;\n} };\n//#endregion\n//#region \\0@oxc-project+runtime@0.149.0/helpers/esm/typeof.js\nfunction _typeof(o) {\n\t\"@babel/helpers - typeof\";\n\treturn _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function(o) {\n\t\treturn typeof o;\n\t} : function(o) {\n\t\treturn o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o;\n\t}, _typeof(o);\n}\n//#endregion\n//#region \\0@oxc-project+runtime@0.149.0/helpers/esm/toPrimitive.js\nfunction toPrimitive(t, r) {\n\tif (\"object\" != _typeof(t) || !t) return t;\n\tvar e = t[Symbol.toPrimitive];\n\tif (void 0 !== e) {\n\t\tvar i = e.call(t, r || \"default\");\n\t\tif (\"object\" != _typeof(i)) return i;\n\t\tthrow new TypeError(\"@@toPrimitive must return a primitive value.\");\n\t}\n\treturn (\"string\" === r ? String : Number)(t);\n}\n//#endregion\n//#region \\0@oxc-project+runtime@0.149.0/helpers/esm/toPropertyKey.js\nfunction toPropertyKey(t) {\n\tvar i = toPrimitive(t, \"string\");\n\treturn \"symbol\" == _typeof(i) ? i : i + \"\";\n}\n//#endregion\n//#region \\0@oxc-project+runtime@0.149.0/helpers/esm/defineProperty.js\nfunction _defineProperty(e, r, t) {\n\treturn (r = toPropertyKey(r)) in e ? Object.defineProperty(e, r, {\n\t\tvalue: t,\n\t\tenumerable: !0,\n\t\tconfigurable: !0,\n\t\twritable: !0\n\t}) : e[r] = t, e;\n}\n//#endregion\n//#region src/js/storage.js\nvar Storage = class Storage {\n\tconstructor(player) {\n\t\t_defineProperty(this, \"get\", (key) => {\n\t\t\tif (!Storage.supported || !this.enabled) return null;\n\t\t\tconst store = window.localStorage.getItem(this.key);\n\t\t\tif (is_default.empty(store)) return null;\n\t\t\tconst json = JSON.parse(store);\n\t\t\treturn is_default.string(key) && key.length ? json[key] : json;\n\t\t});\n\t\t_defineProperty(this, \"set\", (object) => {\n\t\t\tif (!Storage.supported || !this.enabled) return;\n\t\t\tif (!is_default.object(object)) return;\n\t\t\tlet storage = this.get();\n\t\t\tif (is_default.empty(storage)) storage = {};\n\t\t\textend(storage, object);\n\t\t\ttry {\n\t\t\t\twindow.localStorage.setItem(this.key, JSON.stringify(storage));\n\t\t\t} catch {}\n\t\t});\n\t\tthis.enabled = player.config.storage.enabled;\n\t\tthis.key = player.config.storage.key;\n\t}\n\tstatic get supported() {\n\t\ttry {\n\t\t\tif (!(\"localStorage\" in window)) return false;\n\t\t\tconst test = \"___test\";\n\t\t\twindow.localStorage.setItem(test, test);\n\t\t\twindow.localStorage.removeItem(test);\n\t\t\treturn true;\n\t\t} catch {\n\t\t\treturn false;\n\t\t}\n\t}\n};\n//#endregion\n//#region src/js/utils/fetch.js\nfunction fetch(url, responseType = \"text\", withCredentials = false) {\n\treturn new Promise((resolve, reject) => {\n\t\ttry {\n\t\t\tconst request = new XMLHttpRequest();\n\t\t\tif (!(\"withCredentials\" in request)) return;\n\t\t\tif (withCredentials) request.withCredentials = true;\n\t\t\trequest.addEventListener(\"load\", () => {\n\t\t\t\tif (responseType === \"text\") try {\n\t\t\t\t\tresolve(JSON.parse(request.responseText));\n\t\t\t\t} catch {\n\t\t\t\t\tresolve(request.responseText);\n\t\t\t\t}\n\t\t\t\telse resolve(request.response);\n\t\t\t});\n\t\t\trequest.addEventListener(\"error\", () => {\n\t\t\t\tthrow new Error(request.status);\n\t\t\t});\n\t\t\trequest.open(\"GET\", url, true);\n\t\t\trequest.responseType = responseType;\n\t\t\trequest.send();\n\t\t} catch (error) {\n\t\t\treject(error);\n\t\t}\n\t});\n}\n//#endregion\n//#region src/js/utils/load-sprite.js\nfunction loadSprite(url, id) {\n\tif (!is_default.string(url)) return;\n\tconst prefix = \"cache\";\n\tconst hasId = is_default.string(id);\n\tlet isCached = false;\n\tconst exists = () => document.getElementById(id) !== null;\n\tconst update = (container, data) => {\n\t\tcontainer.innerHTML = data;\n\t\tif (hasId && exists()) return;\n\t\tdocument.body.insertAdjacentElement(\"afterbegin\", container);\n\t};\n\tif (!hasId || !exists()) {\n\t\tconst useStorage = Storage.supported;\n\t\tconst container = document.createElement(\"div\");\n\t\tcontainer.setAttribute(\"hidden\", \"\");\n\t\tif (hasId) container.setAttribute(\"id\", id);\n\t\tif (useStorage) {\n\t\t\tconst cached = window.localStorage.getItem(`${prefix}-${id}`);\n\t\t\tisCached = cached !== null;\n\t\t\tif (isCached) update(container, JSON.parse(cached).content);\n\t\t}\n\t\tfetch(url).then((result) => {\n\t\t\tif (is_default.empty(result)) return;\n\t\t\tif (useStorage) try {\n\t\t\t\twindow.localStorage.setItem(`${prefix}-${id}`, JSON.stringify({ content: result }));\n\t\t\t} catch {}\n\t\t\tupdate(container, result);\n\t\t}).catch(() => {});\n\t}\n}\n//#endregion\n//#region src/js/utils/time.js\nvar getHours = (value) => Math.trunc(value / 60 / 60 % 60, 10);\nvar getMinutes = (value) => Math.trunc(value / 60 % 60, 10);\nvar getSeconds = (value) => Math.trunc(value % 60, 10);\nfunction formatTime(time = 0, displayHours = false, inverted = false) {\n\tif (!is_default.number(time)) return formatTime(void 0, displayHours, inverted);\n\tconst format = (value) => `0${value}`.slice(-2);\n\tlet hours = getHours(time);\n\tconst mins = getMinutes(time);\n\tconst secs = getSeconds(time);\n\tif (displayHours || hours > 0) hours = `${hours}:`;\n\telse hours = \"\";\n\treturn `${inverted && time > 0 ? \"-\" : \"\"}${hours}${format(mins)}:${format(secs)}`;\n}\n//#endregion\n//#region src/js/controls.js\nvar controls = {\n\tgetIconUrl() {\n\t\tconst url = new URL(this.config.iconUrl, window.location);\n\t\tconst host = window.location.host ? window.location.host : window.top.location.host;\n\t\tconst cors = url.host !== host || browser_default.isIE && !window.svg4everybody;\n\t\treturn {\n\t\t\turl: this.config.iconUrl,\n\t\t\tcors\n\t\t};\n\t},\n\tfindElements() {\n\t\ttry {\n\t\t\tthis.elements.controls = getElement.call(this, this.config.selectors.controls.wrapper);\n\t\t\tthis.elements.buttons = {\n\t\t\t\tplay: getElements.call(this, this.config.selectors.buttons.play),\n\t\t\t\tpause: getElement.call(this, this.config.selectors.buttons.pause),\n\t\t\t\trestart: getElement.call(this, this.config.selectors.buttons.restart),\n\t\t\t\trewind: getElement.call(this, this.config.selectors.buttons.rewind),\n\t\t\t\tfastForward: getElement.call(this, this.config.selectors.buttons.fastForward),\n\t\t\t\tmute: getElement.call(this, this.config.selectors.buttons.mute),\n\t\t\t\tpip: getElement.call(this, this.config.selectors.buttons.pip),\n\t\t\t\tairplay: getElement.call(this, this.config.selectors.buttons.airplay),\n\t\t\t\tsettings: getElement.call(this, this.config.selectors.buttons.settings),\n\t\t\t\tcaptions: getElement.call(this, this.config.selectors.buttons.captions),\n\t\t\t\tfullscreen: getElement.call(this, this.config.selectors.buttons.fullscreen)\n\t\t\t};\n\t\t\tthis.elements.progress = getElement.call(this, this.config.selectors.progress);\n\t\t\tthis.elements.inputs = {\n\t\t\t\tseek: getElement.call(this, this.config.selectors.inputs.seek),\n\t\t\t\tvolume: getElement.call(this, this.config.selectors.inputs.volume)\n\t\t\t};\n\t\t\tthis.elements.display = {\n\t\t\t\tbuffer: getElement.call(this, this.config.selectors.display.buffer),\n\t\t\t\tcurrentTime: getElement.call(this, this.config.selectors.display.currentTime),\n\t\t\t\tduration: getElement.call(this, this.config.selectors.display.duration)\n\t\t\t};\n\t\t\tif (is_default.element(this.elements.progress)) this.elements.display.seekTooltip = this.elements.progress.querySelector(`.${this.config.classNames.tooltip}`);\n\t\t\treturn true;\n\t\t} catch (error) {\n\t\t\tthis.debug.warn(\"It looks like there is a problem with your custom controls HTML\", error);\n\t\t\tthis.toggleNativeControls(true);\n\t\t\treturn false;\n\t\t}\n\t},\n\tcreateIcon(type, attributes) {\n\t\tconst namespace = \"http://www.w3.org/2000/svg\";\n\t\tconst iconUrl = controls.getIconUrl.call(this);\n\t\tconst iconPath = `${!iconUrl.cors ? iconUrl.url : \"\"}#${this.config.iconPrefix}`;\n\t\tconst icon = document.createElementNS(namespace, \"svg\");\n\t\tsetAttributes(icon, extend(attributes, {\n\t\t\t\"aria-hidden\": \"true\",\n\t\t\tfocusable: \"false\"\n\t\t}));\n\t\tconst use = document.createElementNS(namespace, \"use\");\n\t\tconst path = `${iconPath}-${type}`;\n\t\tif (\"href\" in use) use.setAttributeNS(\"http://www.w3.org/1999/xlink\", \"href\", path);\n\t\tuse.setAttributeNS(\"http://www.w3.org/1999/xlink\", \"xlink:href\", path);\n\t\ticon.appendChild(use);\n\t\treturn icon;\n\t},\n\tcreateLabel(key, attr = {}) {\n\t\tconst text = i18n.get(key, this.config);\n\t\treturn createElement(\"span\", {\n\t\t\t...attr,\n\t\t\tclass: [attr.class, this.config.classNames.hidden].filter(Boolean).join(\" \")\n\t\t}, text);\n\t},\n\tcreateBadge(text) {\n\t\tif (is_default.empty(text)) return null;\n\t\tconst badge = createElement(\"span\", { class: this.config.classNames.menu.value });\n\t\tbadge.appendChild(createElement(\"span\", { class: this.config.classNames.menu.badge }, text));\n\t\treturn badge;\n\t},\n\tcreateButton(buttonType, attr) {\n\t\tconst attributes = extend({}, attr);\n\t\tlet type = toCamelCase(buttonType);\n\t\tconst props = {\n\t\t\telement: \"button\",\n\t\t\ttoggle: false,\n\t\t\tlabel: null,\n\t\t\ticon: null,\n\t\t\tlabelPressed: null,\n\t\t\ticonPressed: null\n\t\t};\n\t\t[\n\t\t\t\"element\",\n\t\t\t\"icon\",\n\t\t\t\"label\"\n\t\t].forEach((key) => {\n\t\t\tif (Object.keys(attributes).includes(key)) {\n\t\t\t\tprops[key] = attributes[key];\n\t\t\t\tdelete attributes[key];\n\t\t\t}\n\t\t});\n\t\tif (props.element === \"button\" && !Object.keys(attributes).includes(\"type\")) attributes.type = \"button\";\n\t\tif (Object.keys(attributes).includes(\"class\")) {\n\t\t\tif (!attributes.class.split(\" \").includes(this.config.classNames.control)) extend(attributes, { class: `${attributes.class} ${this.config.classNames.control}` });\n\t\t} else attributes.class = this.config.classNames.control;\n\t\tswitch (buttonType) {\n\t\t\tcase \"play\":\n\t\t\t\tprops.toggle = true;\n\t\t\t\tprops.label = \"play\";\n\t\t\t\tprops.labelPressed = \"pause\";\n\t\t\t\tprops.icon = \"play\";\n\t\t\t\tprops.iconPressed = \"pause\";\n\t\t\t\tbreak;\n\t\t\tcase \"mute\":\n\t\t\t\tprops.toggle = true;\n\t\t\t\tprops.label = \"mute\";\n\t\t\t\tprops.labelPressed = \"unmute\";\n\t\t\t\tprops.icon = \"volume\";\n\t\t\t\tprops.iconPressed = \"muted\";\n\t\t\t\tbreak;\n\t\t\tcase \"captions\":\n\t\t\t\tprops.toggle = true;\n\t\t\t\tprops.label = \"enableCaptions\";\n\t\t\t\tprops.labelPressed = \"disableCaptions\";\n\t\t\t\tprops.icon = \"captions-off\";\n\t\t\t\tprops.iconPressed = \"captions-on\";\n\t\t\t\tbreak;\n\t\t\tcase \"fullscreen\":\n\t\t\t\tprops.toggle = true;\n\t\t\t\tprops.label = \"enterFullscreen\";\n\t\t\t\tprops.labelPressed = \"exitFullscreen\";\n\t\t\t\tprops.icon = \"enter-fullscreen\";\n\t\t\t\tprops.iconPressed = \"exit-fullscreen\";\n\t\t\t\tbreak;\n\t\t\tcase \"play-large\":\n\t\t\t\tattributes.class += ` ${this.config.classNames.control}--overlaid`;\n\t\t\t\ttype = \"play\";\n\t\t\t\tprops.label = \"play\";\n\t\t\t\tprops.icon = \"play\";\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tif (is_default.empty(props.label)) props.label = type;\n\t\t\t\tif (is_default.empty(props.icon)) props.icon = buttonType;\n\t\t}\n\t\tconst button = createElement(props.element);\n\t\tif (props.toggle) {\n\t\t\tbutton.appendChild(controls.createIcon.call(this, props.iconPressed, { class: \"icon--pressed\" }));\n\t\t\tbutton.appendChild(controls.createIcon.call(this, props.icon, { class: \"icon--not-pressed\" }));\n\t\t\tbutton.appendChild(controls.createLabel.call(this, props.labelPressed, { class: \"label--pressed\" }));\n\t\t\tbutton.appendChild(controls.createLabel.call(this, props.label, { class: \"label--not-pressed\" }));\n\t\t} else {\n\t\t\tbutton.appendChild(controls.createIcon.call(this, props.icon));\n\t\t\tbutton.appendChild(controls.createLabel.call(this, props.label));\n\t\t}\n\t\textend(attributes, getAttributesFromSelector(this.config.selectors.buttons[type], attributes));\n\t\tsetAttributes(button, attributes);\n\t\tif (type === \"play\") {\n\t\t\tif (!is_default.array(this.elements.buttons[type])) this.elements.buttons[type] = [];\n\t\t\tthis.elements.buttons[type].push(button);\n\t\t} else this.elements.buttons[type] = button;\n\t\treturn button;\n\t},\n\tcreateRange(type, attributes) {\n\t\tconst input = createElement(\"input\", extend(getAttributesFromSelector(this.config.selectors.inputs[type]), {\n\t\t\ttype: \"range\",\n\t\t\tmin: 0,\n\t\t\tmax: 100,\n\t\t\tstep: .01,\n\t\t\tvalue: 0,\n\t\t\tautocomplete: \"off\",\n\t\t\trole: \"slider\",\n\t\t\t\"aria-label\": i18n.get(type, this.config),\n\t\t\t\"aria-valuemin\": 0,\n\t\t\t\"aria-valuemax\": 100,\n\t\t\t\"aria-valuenow\": 0\n\t\t}, attributes));\n\t\tthis.elements.inputs[type] = input;\n\t\tcontrols.updateRangeFill.call(this, input);\n\t\timport_rangetouch.default.setup(input);\n\t\treturn input;\n\t},\n\tcreateProgress(type, attributes) {\n\t\tconst progress = createElement(\"progress\", extend(getAttributesFromSelector(this.config.selectors.display[type]), {\n\t\t\tmin: 0,\n\t\t\tmax: 100,\n\t\t\tvalue: 0,\n\t\t\trole: \"progressbar\",\n\t\t\t\"aria-hidden\": true\n\t\t}, attributes));\n\t\tif (type !== \"volume\") {\n\t\t\tprogress.appendChild(createElement(\"span\", null, \"0\"));\n\t\t\tconst suffixKey = {\n\t\t\t\tplayed: \"played\",\n\t\t\t\tbuffer: \"buffered\"\n\t\t\t}[type];\n\t\t\tprogress.textContent = `% ${(suffixKey ? i18n.get(suffixKey, this.config) : \"\").toLowerCase()}`;\n\t\t}\n\t\tthis.elements.display[type] = progress;\n\t\treturn progress;\n\t},\n\tcreateTime(type, attrs) {\n\t\tconst attributes = getAttributesFromSelector(this.config.selectors.display[type], attrs);\n\t\tconst container = createElement(\"div\", extend(attributes, {\n\t\t\tclass: `${attributes.class ? attributes.class : \"\"} ${this.config.classNames.display.time} `.trim(),\n\t\t\t\"aria-label\": i18n.get(type, this.config),\n\t\t\trole: \"timer\"\n\t\t}), \"00:00\");\n\t\tthis.elements.display[type] = container;\n\t\treturn container;\n\t},\n\tbindMenuItemShortcuts(menuItem, type) {\n\t\ton.call(this, menuItem, \"keydown keyup\", (event) => {\n\t\t\tif (![\n\t\t\t\t\" \",\n\t\t\t\t\"ArrowUp\",\n\t\t\t\t\"ArrowDown\",\n\t\t\t\t\"ArrowRight\"\n\t\t\t].includes(event.key)) return;\n\t\t\tevent.preventDefault();\n\t\t\tevent.stopPropagation();\n\t\t\tif (event.type === \"keydown\") return;\n\t\t\tconst isRadioButton = matches(menuItem, \"[role=\\\"menuitemradio\\\"]\");\n\t\t\tif (!isRadioButton && [\" \", \"ArrowRight\"].includes(event.key)) controls.showMenuPanel.call(this, type, true);\n\t\t\telse {\n\t\t\t\tlet target;\n\t\t\t\tif (event.key !== \" \") {\n\t\t\t\t\tif (event.key === \"ArrowDown\" || isRadioButton && event.key === \"ArrowRight\") {\n\t\t\t\t\t\ttarget = menuItem.nextElementSibling;\n\t\t\t\t\t\tif (!is_default.element(target)) target = menuItem.parentNode.firstElementChild;\n\t\t\t\t\t} else {\n\t\t\t\t\t\ttarget = menuItem.previousElementSibling;\n\t\t\t\t\t\tif (!is_default.element(target)) target = menuItem.parentNode.lastElementChild;\n\t\t\t\t\t}\n\t\t\t\t\tsetFocus.call(this, target, true);\n\t\t\t\t}\n\t\t\t}\n\t\t}, false);\n\t\ton.call(this, menuItem, \"keyup\", (event) => {\n\t\t\tif (event.key !== \"Return\") return;\n\t\t\tcontrols.focusFirstMenuItem.call(this, null, true);\n\t\t});\n\t},\n\tcreateMenuItem({ value, list, type, title, badge = null, checked = false }) {\n\t\tconst attributes = getAttributesFromSelector(this.config.selectors.inputs[type]);\n\t\tconst menuItem = createElement(\"button\", extend(attributes, {\n\t\t\ttype: \"button\",\n\t\t\trole: \"menuitemradio\",\n\t\t\tclass: `${this.config.classNames.control} ${attributes.class ? attributes.class : \"\"}`.trim(),\n\t\t\t\"aria-checked\": checked,\n\t\t\tvalue\n\t\t}));\n\t\tconst flex = createElement(\"span\");\n\t\tflex.innerHTML = title;\n\t\tif (is_default.element(badge)) flex.appendChild(badge);\n\t\tmenuItem.appendChild(flex);\n\t\tObject.defineProperty(menuItem, \"checked\", {\n\t\t\tenumerable: true,\n\t\t\tget() {\n\t\t\t\treturn menuItem.getAttribute(\"aria-checked\") === \"true\";\n\t\t\t},\n\t\t\tset(check) {\n\t\t\t\tif (check) Array.from(menuItem.parentNode.children).filter((node) => matches(node, \"[role=\\\"menuitemradio\\\"]\")).forEach((node) => node.setAttribute(\"aria-checked\", \"false\"));\n\t\t\t\tmenuItem.setAttribute(\"aria-checked\", check ? \"true\" : \"false\");\n\t\t\t}\n\t\t});\n\t\tthis.listeners.bind(menuItem, \"click keyup\", (event) => {\n\t\t\tif (is_default.keyboardEvent(event) && event.key !== \" \") return;\n\t\t\tevent.preventDefault();\n\t\t\tevent.stopPropagation();\n\t\t\tmenuItem.checked = true;\n\t\t\tswitch (type) {\n\t\t\t\tcase \"language\":\n\t\t\t\t\tthis.currentTrack = Number(value);\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"quality\":\n\t\t\t\t\tthis.quality = value;\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"speed\": this.speed = Number.parseFloat(value);\n\t\t\t}\n\t\t\tcontrols.showMenuPanel.call(this, \"home\", is_default.keyboardEvent(event));\n\t\t}, type, false);\n\t\tcontrols.bindMenuItemShortcuts.call(this, menuItem, type);\n\t\tlist.appendChild(menuItem);\n\t},\n\tformatTime(time = 0, inverted = false) {\n\t\tif (!is_default.number(time)) return time;\n\t\treturn formatTime(time, getHours(this.duration) > 0, inverted);\n\t},\n\tupdateTimeDisplay(target = null, time = 0, inverted = false) {\n\t\tif (!is_default.element(target) || !is_default.number(time)) return;\n\t\ttarget.textContent = controls.formatTime(time, inverted);\n\t},\n\tupdateVolume() {\n\t\tif (!this.supported.ui) return;\n\t\tif (is_default.element(this.elements.inputs.volume)) controls.setRange.call(this, this.elements.inputs.volume, this.muted ? 0 : this.volume);\n\t\tif (is_default.element(this.elements.buttons.mute)) this.elements.buttons.mute.pressed = this.muted || this.volume === 0;\n\t},\n\tsetRange(target, value = 0) {\n\t\tif (!is_default.element(target)) return;\n\t\ttarget.value = value;\n\t\tcontrols.updateRangeFill.call(this, target);\n\t},\n\tupdateProgress(event) {\n\t\tif (!this.supported.ui || !is_default.event(event)) return;\n\t\tlet value = 0;\n\t\tconst setProgress = (target, input) => {\n\t\t\tconst val = is_default.number(input) ? input : 0;\n\t\t\tconst progress = is_default.element(target) ? target : this.elements.display.buffer;\n\t\t\tif (is_default.element(progress)) {\n\t\t\t\tprogress.value = val;\n\t\t\t\tconst label = progress.getElementsByTagName(\"span\")[0];\n\t\t\t\tif (is_default.element(label)) label.childNodes[0].nodeValue = val;\n\t\t\t}\n\t\t};\n\t\tif (event) switch (event.type) {\n\t\t\tcase \"timeupdate\":\n\t\t\tcase \"seeking\":\n\t\t\tcase \"seeked\":\n\t\t\t\tvalue = getPercentage(this.currentTime, this.duration);\n\t\t\t\tif (event.type === \"timeupdate\") controls.setRange.call(this, this.elements.inputs.seek, value);\n\t\t\t\tbreak;\n\t\t\tcase \"playing\":\n\t\t\tcase \"progress\": setProgress(this.elements.display.buffer, this.buffered * 100);\n\t\t}\n\t},\n\tupdateRangeFill(target) {\n\t\tconst range = is_default.event(target) ? target.target : target;\n\t\tif (!is_default.element(range) || range.getAttribute(\"type\") !== \"range\") return;\n\t\tif (matches(range, this.config.selectors.inputs.seek)) {\n\t\t\trange.setAttribute(\"aria-valuenow\", this.currentTime);\n\t\t\tconst currentTime = controls.formatTime(this.currentTime);\n\t\t\tconst duration = controls.formatTime(this.duration);\n\t\t\tconst format = i18n.get(\"seekLabel\", this.config);\n\t\t\trange.setAttribute(\"aria-valuetext\", format.replace(\"{currentTime}\", currentTime).replace(\"{duration}\", duration));\n\t\t} else if (matches(range, this.config.selectors.inputs.volume)) {\n\t\t\tconst percent = range.value * 100;\n\t\t\trange.setAttribute(\"aria-valuenow\", percent);\n\t\t\trange.setAttribute(\"aria-valuetext\", `${percent.toFixed(1)}%`);\n\t\t} else range.setAttribute(\"aria-valuenow\", range.value);\n\t\tif (!browser_default.isWebKit && !browser_default.isIPadOS) return;\n\t\trange.style.setProperty(\"--value\", `${range.value / range.max * 100}%`);\n\t},\n\tupdateSeekTooltip(event) {\n\t\tvar _this$config$markers;\n\t\tif (!this.config.tooltips.seek || !is_default.element(this.elements.inputs.seek) || !is_default.element(this.elements.display.seekTooltip) || this.duration === 0) return;\n\t\tconst tipElement = this.elements.display.seekTooltip;\n\t\tconst visible = `${this.config.classNames.tooltip}--visible`;\n\t\tconst toggle = (show) => toggleClass(tipElement, visible, show);\n\t\tif (this.touch) {\n\t\t\ttoggle(false);\n\t\t\treturn;\n\t\t}\n\t\tlet percent = 0;\n\t\tconst clientRect = this.elements.progress.getBoundingClientRect();\n\t\tif (is_default.event(event)) {\n\t\t\tconst scrollLeft = event.pageX - event.clientX;\n\t\t\tpercent = 100 / clientRect.width * (event.pageX - clientRect.left - scrollLeft);\n\t\t} else if (hasClass(tipElement, visible)) percent = Number.parseFloat(tipElement.style.left, 10);\n\t\telse return;\n\t\tif (percent < 0) percent = 0;\n\t\telse if (percent > 100) percent = 100;\n\t\tconst time = this.duration / 100 * percent;\n\t\ttipElement.textContent = controls.formatTime(time);\n\t\tconst point = (_this$config$markers = this.config.markers) === null || _this$config$markers === void 0 || (_this$config$markers = _this$config$markers.points) === null || _this$config$markers === void 0 ? void 0 : _this$config$markers.find(({ time: t }) => t === Math.round(time));\n\t\tif (point) tipElement.insertAdjacentHTML(\"afterbegin\", `${point.label}<br>`);\n\t\ttipElement.style.left = `${percent}%`;\n\t\tif (is_default.event(event) && [\"mouseenter\", \"mouseleave\"].includes(event.type)) toggle(event.type === \"mouseenter\");\n\t},\n\ttimeUpdate(event) {\n\t\tconst invert = !is_default.element(this.elements.display.duration) && this.config.invertTime;\n\t\tcontrols.updateTimeDisplay.call(this, this.elements.display.currentTime, invert ? this.duration - this.currentTime : this.currentTime, invert);\n\t\tif (event && event.type === \"timeupdate\" && this.media.seeking) return;\n\t\tcontrols.updateProgress.call(this, event);\n\t},\n\tdurationUpdate() {\n\t\tif (!this.supported.ui || !this.config.invertTime && this.currentTime) return;\n\t\tif (this.duration >= 2 ** 32) {\n\t\t\ttoggleHidden(this.elements.display.currentTime, true);\n\t\t\ttoggleHidden(this.elements.progress, true);\n\t\t\treturn;\n\t\t}\n\t\tif (is_default.element(this.elements.inputs.seek)) this.elements.inputs.seek.setAttribute(\"aria-valuemax\", this.duration);\n\t\tconst hasDuration = is_default.element(this.elements.display.duration);\n\t\tif (!hasDuration && this.config.displayDuration && this.paused) controls.updateTimeDisplay.call(this, this.elements.display.currentTime, this.duration);\n\t\tif (hasDuration) controls.updateTimeDisplay.call(this, this.elements.display.duration, this.duration);\n\t\tif (this.config.markers.enabled) controls.setMarkers.call(this);\n\t\tcontrols.updateSeekTooltip.call(this);\n\t},\n\ttoggleMenuButton(setting, toggle) {\n\t\ttoggleHidden(this.elements.settings.buttons[setting], !toggle);\n\t},\n\tupdateSetting(setting, container, input) {\n\t\tconst pane = this.elements.settings.panels[setting];\n\t\tlet value = null;\n\t\tlet list = container;\n\t\tif (setting === \"captions\") value = this.currentTrack;\n\t\telse {\n\t\t\tvalue = !is_default.empty(input) ? input : this[setting];\n\t\t\tif (is_default.empty(value)) value = this.config[setting].default;\n\t\t\tif (!is_default.empty(this.options[setting]) && !this.options[setting].includes(value)) {\n\t\t\t\tthis.debug.warn(`Unsupported value of '${value}' for ${setting}`);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (!this.config[setting].options.includes(value)) {\n\t\t\t\tthis.debug.warn(`Disabled value of '${value}' for ${setting}`);\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\t\tif (!is_default.element(list)) list = pane && pane.querySelector(\"[role=\\\"menu\\\"]\");\n\t\tif (!is_default.element(list)) return;\n\t\tconst label = this.elements.settings.buttons[setting].querySelector(`.${this.config.classNames.menu.value}`);\n\t\tlabel.innerHTML = controls.getLabel.call(this, setting, value);\n\t\tconst target = list && list.querySelector(`[value=\"${value}\"]`);\n\t\tif (is_default.element(target)) target.checked = true;\n\t},\n\tgetLabel(setting, value) {\n\t\tswitch (setting) {\n\t\t\tcase \"speed\": return value === 1 ? i18n.get(\"normal\", this.config) : `${value}&times;`;\n\t\t\tcase \"quality\":\n\t\t\t\tif (is_default.number(value)) {\n\t\t\t\t\tconst label = i18n.get(`qualityLabel.${value}`, this.config);\n\t\t\t\t\tif (!label.length) return `${value}p`;\n\t\t\t\t\treturn label;\n\t\t\t\t}\n\t\t\t\treturn toTitleCase(value);\n\t\t\tcase \"captions\": return captions.getLabel.call(this);\n\t\t\tdefault: return null;\n\t\t}\n\t},\n\tsetQualityMenu(options) {\n\t\tif (!is_default.element(this.elements.settings.panels.quality)) return;\n\t\tconst type = \"quality\";\n\t\tconst list = this.elements.settings.panels.quality.querySelector(\"[role=\\\"menu\\\"]\");\n\t\tif (is_default.array(options)) this.options.quality = dedupe(options).filter((quality) => this.config.quality.options.includes(quality));\n\t\tconst toggle = !is_default.empty(this.options.quality) && this.options.quality.length > 1;\n\t\tcontrols.toggleMenuButton.call(this, type, toggle);\n\t\temptyElement(list);\n\t\tcontrols.checkMenu.call(this);\n\t\tif (!toggle) return;\n\t\tconst getBadge = (quality) => {\n\t\t\tconst label = i18n.get(`qualityBadge.${quality}`, this.config);\n\t\t\tif (!label.length) return null;\n\t\t\treturn controls.createBadge.call(this, label);\n\t\t};\n\t\tthis.options.quality.sort((a, b) => {\n\t\t\tconst sorting = this.config.quality.options;\n\t\t\treturn sorting.indexOf(a) > sorting.indexOf(b) ? 1 : -1;\n\t\t}).forEach((quality) => {\n\t\t\tcontrols.createMenuItem.call(this, {\n\t\t\t\tvalue: quality,\n\t\t\t\tlist,\n\t\t\t\ttype,\n\t\t\t\ttitle: controls.getLabel.call(this, \"quality\", quality),\n\t\t\t\tbadge: getBadge(quality)\n\t\t\t});\n\t\t});\n\t\tcontrols.updateSetting.call(this, type, list);\n\t},\n\tsetCaptionsMenu() {\n\t\tif (!is_default.element(this.elements.settings.panels.captions)) return;\n\t\tconst type = \"captions\";\n\t\tconst list = this.elements.settings.panels.captions.querySelector(\"[role=\\\"menu\\\"]\");\n\t\tconst tracks = captions.getTracks.call(this);\n\t\tconst toggle = Boolean(tracks.length);\n\t\tcontrols.toggleMenuButton.call(this, type, toggle);\n\t\temptyElement(list);\n\t\tcontrols.checkMenu.call(this);\n\t\tif (!toggle) return;\n\t\tconst options = tracks.map((track, value) => ({\n\t\t\tvalue,\n\t\t\tchecked: this.captions.toggled && this.currentTrack === value,\n\t\t\ttitle: captions.getLabel.call(this, track),\n\t\t\tbadge: track.language && controls.createBadge.call(this, track.language.toUpperCase()),\n\t\t\tlist,\n\t\t\ttype: \"language\"\n\t\t}));\n\t\toptions.unshift({\n\t\t\tvalue: -1,\n\t\t\tchecked: !this.captions.toggled,\n\t\t\ttitle: i18n.get(\"disabled\", this.config),\n\t\t\tlist,\n\t\t\ttype: \"language\"\n\t\t});\n\t\toptions.forEach(controls.createMenuItem.bind(this));\n\t\tcontrols.updateSetting.call(this, type, list);\n\t},\n\tsetSpeedMenu() {\n\t\tif (!is_default.element(this.elements.settings.panels.speed)) return;\n\t\tconst type = \"speed\";\n\t\tconst list = this.elements.settings.panels.speed.querySelector(\"[role=\\\"menu\\\"]\");\n\t\tthis.options.speed = this.options.speed.filter((o) => o >= this.minimumSpeed && o <= this.maximumSpeed);\n\t\tconst toggle = !is_default.empty(this.options.speed) && this.options.speed.length > 1;\n\t\tcontrols.toggleMenuButton.call(this, type, toggle);\n\t\temptyElement(list);\n\t\tcontrols.checkMenu.call(this);\n\t\tif (!toggle) return;\n\t\tthis.options.speed.forEach((speed) => {\n\t\t\tcontrols.createMenuItem.call(this, {\n\t\t\t\tvalue: speed,\n\t\t\t\tlist,\n\t\t\t\ttype,\n\t\t\t\ttitle: controls.getLabel.call(this, \"speed\", speed)\n\t\t\t});\n\t\t});\n\t\tcontrols.updateSetting.call(this, type, list);\n\t},\n\tcheckMenu() {\n\t\tconst { buttons } = this.elements.settings;\n\t\tconst visible = !is_default.empty(buttons) && Object.values(buttons).some((button) => !button.hidden);\n\t\ttoggleHidden(this.elements.settings.menu, !visible);\n\t},\n\tfocusFirstMenuItem(pane, focusVisible = false) {\n\t\tif (this.elements.settings.popup.hidden) return;\n\t\tlet target = pane;\n\t\tif (!is_default.element(target)) target = Object.values(this.elements.settings.panels).find((p) => !p.hidden);\n\t\tconst firstItem = target.querySelector(\"[role^=\\\"menuitem\\\"]\");\n\t\tsetFocus.call(this, firstItem, focusVisible);\n\t},\n\ttoggleMenu(input) {\n\t\tconst { popup } = this.elements.settings;\n\t\tconst button = this.elements.buttons.settings;\n\t\tif (!is_default.element(popup) || !is_default.element(button)) return;\n\t\tconst { hidden } = popup;\n\t\tlet show = hidden;\n\t\tif (is_default.boolean(input)) show = input;\n\t\telse if (is_default.keyboardEvent(input) && input.key === \"Escape\") show = false;\n\t\telse if (is_default.event(input)) {\n\t\t\tconst target = is_default.function(input.composedPath) ? input.composedPath()[0] : input.target;\n\t\t\tconst isMenuItem = popup.contains(target);\n\t\t\tif (isMenuItem || !isMenuItem && input.target !== button && show) return;\n\t\t}\n\t\tbutton.setAttribute(\"aria-expanded\", show);\n\t\ttoggleHidden(popup, !show);\n\t\ttoggleClass(this.elements.container, this.config.classNames.menu.open, show);\n\t\tif (show && is_default.keyboardEvent(input)) controls.focusFirstMenuItem.call(this, null, true);\n\t\telse if (!show && !hidden) setFocus.call(this, button, is_default.keyboardEvent(input));\n\t},\n\tgetMenuSize(tab) {\n\t\tconst clone = tab.cloneNode(true);\n\t\tclone.style.position = \"absolute\";\n\t\tclone.style.opacity = 0;\n\t\tclone.removeAttribute(\"hidden\");\n\t\ttab.parentNode.appendChild(clone);\n\t\tconst width = clone.scrollWidth;\n\t\tconst height = clone.scrollHeight;\n\t\tremoveElement(clone);\n\t\treturn {\n\t\t\twidth,\n\t\t\theight\n\t\t};\n\t},\n\tshowMenuPanel(type = \"\", focusVisible = false) {\n\t\tconst target = this.elements.container.querySelector(`#plyr-settings-${this.id}-${type}`);\n\t\tif (!is_default.element(target)) return;\n\t\tconst container = target.parentNode;\n\t\tconst current = Array.from(container.children).find((node) => !node.hidden);\n\t\tif (support.transitions && !support.reducedMotion) {\n\t\t\tcontainer.style.width = `${current.scrollWidth}px`;\n\t\t\tcontainer.style.height = `${current.scrollHeight}px`;\n\t\t\tconst size = controls.getMenuSize.call(this, target);\n\t\t\tconst restore = (event) => {\n\t\t\t\tif (event.target !== container || ![\"width\", \"height\"].includes(event.propertyName)) return;\n\t\t\t\tcontainer.style.width = \"\";\n\t\t\t\tcontainer.style.height = \"\";\n\t\t\t\toff.call(this, container, transitionEndEvent, restore);\n\t\t\t};\n\t\t\ton.call(this, container, transitionEndEvent, restore);\n\t\t\tcontainer.style.width = `${size.width}px`;\n\t\t\tcontainer.style.height = `${size.height}px`;\n\t\t}\n\t\ttoggleHidden(current, true);\n\t\ttoggleHidden(target, false);\n\t\tcontrols.focusFirstMenuItem.call(this, target, focusVisible);\n\t},\n\tsetDownloadUrl() {\n\t\tconst button = this.elements.buttons.download;\n\t\tif (!is_default.element(button)) return;\n\t\tbutton.setAttribute(\"href\", this.download);\n\t},\n\tcreate(data) {\n\t\tconst { bindMenuItemShortcuts, createButton, createProgress, createRange, createTime, setQualityMenu, setSpeedMenu, showMenuPanel } = controls;\n\t\tthis.elements.controls = null;\n\t\tif (is_default.array(this.config.controls) && this.config.controls.includes(\"play-large\")) this.elements.container.appendChild(createButton.call(this, \"play-large\"));\n\t\tconst container = createElement(\"div\", getAttributesFromSelector(this.config.selectors.controls.wrapper));\n\t\tthis.elements.controls = container;\n\t\tconst defaultAttributes = { class: \"plyr__controls__item\" };\n\t\tdedupe(is_default.array(this.config.controls) ? this.config.controls : []).forEach((control) => {\n\t\t\tif (control === \"restart\") container.appendChild(createButton.call(this, \"restart\", defaultAttributes));\n\t\t\tif (control === \"rewind\") container.appendChild(createButton.call(this, \"rewind\", defaultAttributes));\n\t\t\tif (control === \"play\") container.appendChild(createButton.call(this, \"play\", defaultAttributes));\n\t\t\tif (control === \"fast-forward\") container.appendChild(createButton.call(this, \"fast-forward\", defaultAttributes));\n\t\t\tif (control === \"progress\") {\n\t\t\t\tconst progressContainer = createElement(\"div\", { class: `${defaultAttributes.class} plyr__progress__container` });\n\t\t\t\tconst progress = createElement(\"div\", getAttributesFromSelector(this.config.selectors.progress));\n\t\t\t\tprogress.appendChild(createRange.call(this, \"seek\", { id: `plyr-seek-${data.id}` }));\n\t\t\t\tprogress.appendChild(createProgress.call(this, \"buffer\"));\n\t\t\t\tif (this.config.tooltips.seek) {\n\t\t\t\t\tconst tooltip = createElement(\"span\", { class: this.config.classNames.tooltip }, \"00:00\");\n\t\t\t\t\tprogress.appendChild(tooltip);\n\t\t\t\t\tthis.elements.display.seekTooltip = tooltip;\n\t\t\t\t}\n\t\t\t\tthis.elements.progress = progress;\n\t\t\t\tprogressContainer.appendChild(this.elements.progress);\n\t\t\t\tcontainer.appendChild(progressContainer);\n\t\t\t}\n\t\t\tif (control === \"current-time\") container.appendChild(createTime.call(this, \"currentTime\", defaultAttributes));\n\t\t\tif (control === \"duration\") container.appendChild(createTime.call(this, \"duration\", defaultAttributes));\n\t\t\tif (control === \"mute\" || control === \"volume\") {\n\t\t\t\tlet { volume } = this.elements;\n\t\t\t\tif (!is_default.element(volume) || !container.contains(volume)) {\n\t\t\t\t\tvolume = createElement(\"div\", extend({}, defaultAttributes, { class: `${defaultAttributes.class} plyr__volume`.trim() }));\n\t\t\t\t\tthis.elements.volume = volume;\n\t\t\t\t\tcontainer.appendChild(volume);\n\t\t\t\t}\n\t\t\t\tif (control === \"mute\") volume.appendChild(createButton.call(this, \"mute\"));\n\t\t\t\tif (control === \"volume\" && !browser_default.isIos && !browser_default.isIPadOS) {\n\t\t\t\t\tconst attributes = {\n\t\t\t\t\t\tmax: 1,\n\t\t\t\t\t\tstep: .05,\n\t\t\t\t\t\tvalue: this.config.volume\n\t\t\t\t\t};\n\t\t\t\t\tvolume.appendChild(createRange.call(this, \"volume\", extend(attributes, { id: `plyr-volume-${data.id}` })));\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (control === \"captions\") container.appendChild(createButton.call(this, \"captions\", defaultAttributes));\n\t\t\tif (control === \"settings\" && !is_default.empty(this.config.settings)) {\n\t\t\t\tconst wrapper = createElement(\"div\", extend({}, defaultAttributes, {\n\t\t\t\t\tclass: `${defaultAttributes.class} plyr__menu`.trim(),\n\t\t\t\t\thidden: \"\"\n\t\t\t\t}));\n\t\t\t\twrapper.appendChild(createButton.call(this, \"settings\", {\n\t\t\t\t\t\"aria-haspopup\": true,\n\t\t\t\t\t\"aria-controls\": `plyr-settings-${data.id}`,\n\t\t\t\t\t\"aria-expanded\": false\n\t\t\t\t}));\n\t\t\t\tconst popup = createElement(\"div\", {\n\t\t\t\t\tclass: \"plyr__menu__container\",\n\t\t\t\t\tid: `plyr-settings-${data.id}`,\n\t\t\t\t\thidden: \"\"\n\t\t\t\t});\n\t\t\t\tconst inner = createElement(\"div\");\n\t\t\t\tconst home = createElement(\"div\", { id: `plyr-settings-${data.id}-home` });\n\t\t\t\tconst menu = createElement(\"div\", { role: \"menu\" });\n\t\t\t\thome.appendChild(menu);\n\t\t\t\tinner.appendChild(home);\n\t\t\t\tthis.elements.settings.panels.home = home;\n\t\t\t\tthis.config.settings.forEach((type) => {\n\t\t\t\t\tconst menuItem = createElement(\"button\", extend(getAttributesFromSelector(this.config.selectors.buttons.settings), {\n\t\t\t\t\t\ttype: \"button\",\n\t\t\t\t\t\tclass: `${this.config.classNames.control} ${this.config.classNames.control}--forward`,\n\t\t\t\t\t\trole: \"menuitem\",\n\t\t\t\t\t\t\"aria-haspopup\": true,\n\t\t\t\t\t\thidden: \"\"\n\t\t\t\t\t}));\n\t\t\t\t\tbindMenuItemShortcuts.call(this, menuItem, type);\n\t\t\t\t\ton.call(this, menuItem, \"click\", () => {\n\t\t\t\t\t\tshowMenuPanel.call(this, type, false);\n\t\t\t\t\t});\n\t\t\t\t\tconst flex = createElement(\"span\", null, i18n.get(type, this.config));\n\t\t\t\t\tconst value = createElement(\"span\", { class: this.config.classNames.menu.value });\n\t\t\t\t\tvalue.innerHTML = data[type];\n\t\t\t\t\tflex.appendChild(value);\n\t\t\t\t\tmenuItem.appendChild(flex);\n\t\t\t\t\tmenu.appendChild(menuItem);\n\t\t\t\t\tconst pane = createElement(\"div\", {\n\t\t\t\t\t\tid: `plyr-settings-${data.id}-${type}`,\n\t\t\t\t\t\thidden: \"\"\n\t\t\t\t\t});\n\t\t\t\t\tconst backButton = createElement(\"button\", {\n\t\t\t\t\t\ttype: \"button\",\n\t\t\t\t\t\tclass: `${this.config.classNames.control} ${this.config.classNames.control}--back`\n\t\t\t\t\t});\n\t\t\t\t\tbackButton.appendChild(createElement(\"span\", { \"aria-hidden\": true }, i18n.get(type, this.config)));\n\t\t\t\t\tbackButton.appendChild(createElement(\"span\", { class: this.config.classNames.hidden }, i18n.get(\"menuBack\", this.config)));\n\t\t\t\t\ton.call(this, pane, \"keydown\", (event) => {\n\t\t\t\t\t\tif (event.key !== \"ArrowLeft\") return;\n\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t\t\tshowMenuPanel.call(this, \"home\", true);\n\t\t\t\t\t}, false);\n\t\t\t\t\ton.call(this, backButton, \"click\", () => {\n\t\t\t\t\t\tshowMenuPanel.call(this, \"home\", false);\n\t\t\t\t\t});\n\t\t\t\t\tpane.appendChild(backButton);\n\t\t\t\t\tpane.appendChild(createElement(\"div\", { role: \"menu\" }));\n\t\t\t\t\tinner.appendChild(pane);\n\t\t\t\t\tthis.elements.settings.buttons[type] = menuItem;\n\t\t\t\t\tthis.elements.settings.panels[type] = pane;\n\t\t\t\t});\n\t\t\t\tpopup.appendChild(inner);\n\t\t\t\twrapper.appendChild(popup);\n\t\t\t\tcontainer.appendChild(wrapper);\n\t\t\t\tthis.elements.settings.popup = popup;\n\t\t\t\tthis.elements.settings.menu = wrapper;\n\t\t\t}\n\t\t\tif (control === \"pip\" && support.pip) container.appendChild(createButton.call(this, \"pip\", defaultAttributes));\n\t\t\tif (control === \"airplay\" && support.airplay) container.appendChild(createButton.call(this, \"airplay\", defaultAttributes));\n\t\t\tif (control === \"download\") {\n\t\t\t\tconst attributes = extend({}, defaultAttributes, {\n\t\t\t\t\telement: \"a\",\n\t\t\t\t\thref: this.download,\n\t\t\t\t\ttarget: \"_blank\"\n\t\t\t\t});\n\t\t\t\tif (this.isHTML5) attributes.download = \"\";\n\t\t\t\tconst { download } = this.config.urls;\n\t\t\t\tif (!is_default.url(download) && this.isEmbed) extend(attributes, {\n\t\t\t\t\ticon: `logo-${this.provider}`,\n\t\t\t\t\tlabel: this.provider\n\t\t\t\t});\n\t\t\t\tcontainer.appendChild(createButton.call(this, \"download\", attributes));\n\t\t\t}\n\t\t\tif (control === \"fullscreen\") container.appendChild(createButton.call(this, \"fullscreen\", defaultAttributes));\n\t\t});\n\t\tif (this.isHTML5) setQualityMenu.call(this, html5.getQualityOptions.call(this));\n\t\tsetSpeedMenu.call(this);\n\t\treturn container;\n\t},\n\tinject() {\n\t\tif (this.config.loadSprite) {\n\t\t\tconst icon = controls.getIconUrl.call(this);\n\t\t\tif (icon.cors) loadSprite(icon.url, \"sprite-plyr\");\n\t\t}\n\t\tthis.id = Math.floor(Math.random() * 1e4);\n\t\tlet container = null;\n\t\tthis.elements.controls = null;\n\t\tconst props = {\n\t\t\tid: this.id,\n\t\t\tseektime: this.config.seekTime,\n\t\t\ttitle: this.config.title\n\t\t};\n\t\tlet update = true;\n\t\tif (is_default.function(this.config.controls)) this.config.controls = this.config.controls.call(this, props);\n\t\tif (!this.config.controls) this.config.controls = [];\n\t\tif (is_default.element(this.config.controls) || is_default.string(this.config.controls)) container = this.config.controls;\n\t\telse {\n\t\t\tcontainer = controls.create.call(this, {\n\t\t\t\tid: this.id,\n\t\t\t\tseektime: this.config.seekTime,\n\t\t\t\tspeed: this.speed,\n\t\t\t\tquality: this.quality,\n\t\t\t\tcaptions: captions.getLabel.call(this)\n\t\t\t});\n\t\t\tupdate = false;\n\t\t}\n\t\tconst replace = (input) => {\n\t\t\tlet result = input;\n\t\t\tObject.entries(props).forEach(([key, value]) => {\n\t\t\t\tresult = replaceAll(result, `{${key}}`, value);\n\t\t\t});\n\t\t\treturn result;\n\t\t};\n\t\tif (update) {\n\t\t\tif (is_default.string(this.config.controls)) container = replace(container);\n\t\t}\n\t\tlet target;\n\t\tif (is_default.string(this.config.selectors.controls.container)) target = document.querySelector(this.config.selectors.controls.container);\n\t\tif (!is_default.element(target)) target = this.elements.container;\n\t\tconst insertMethod = is_default.element(container) ? \"insertAdjacentElement\" : \"insertAdjacentHTML\";\n\t\ttarget[insertMethod](\"afterbegin\", container);\n\t\tif (!is_default.element(this.elements.controls)) controls.findElements.call(this);\n\t\tif (!is_default.empty(this.elements.buttons)) {\n\t\t\tconst addProperty = (button) => {\n\t\t\t\tconst className = this.config.classNames.controlPressed;\n\t\t\t\tbutton.setAttribute(\"aria-pressed\", \"false\");\n\t\t\t\tObject.defineProperty(button, \"pressed\", {\n\t\t\t\t\tconfigurable: true,\n\t\t\t\t\tenumerable: true,\n\t\t\t\t\tget() {\n\t\t\t\t\t\treturn hasClass(button, className);\n\t\t\t\t\t},\n\t\t\t\t\tset(pressed = false) {\n\t\t\t\t\t\ttoggleClass(button, className, pressed);\n\t\t\t\t\t\tbutton.setAttribute(\"aria-pressed\", pressed ? \"true\" : \"false\");\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t};\n\t\t\tObject.values(this.elements.buttons).filter(Boolean).forEach((button) => {\n\t\t\t\tif (is_default.array(button) || is_default.nodeList(button)) Array.from(button).filter(Boolean).forEach(addProperty);\n\t\t\t\telse addProperty(button);\n\t\t\t});\n\t\t}\n\t\tif (browser_default.isEdge) repaint(target);\n\t\tif (this.config.tooltips.controls) {\n\t\t\tconst { classNames, selectors } = this.config;\n\t\t\tconst selector = `${selectors.controls.wrapper} ${selectors.labels} .${classNames.hidden}`;\n\t\t\tconst labels = getElements.call(this, selector);\n\t\t\tArray.from(labels).forEach((label) => {\n\t\t\t\ttoggleClass(label, this.config.classNames.hidden, false);\n\t\t\t\ttoggleClass(label, this.config.classNames.tooltip, true);\n\t\t\t});\n\t\t}\n\t},\n\tsetMediaMetadata() {\n\t\ttry {\n\t\t\tif (\"mediaSession\" in navigator) navigator.mediaSession.metadata = new window.MediaMetadata({\n\t\t\t\ttitle: this.config.mediaMetadata.title,\n\t\t\t\tartist: this.config.mediaMetadata.artist,\n\t\t\t\talbum: this.config.mediaMetadata.album,\n\t\t\t\tartwork: this.config.mediaMetadata.artwork\n\t\t\t});\n\t\t} catch {}\n\t},\n\tsetMarkers() {\n\t\tvar _this$config$markers2;\n\t\tif (!this.duration || this.elements.markers) return;\n\t\tconst points = (_this$config$markers2 = this.config.markers) === null || _this$config$markers2 === void 0 || (_this$config$markers2 = _this$config$markers2.points) === null || _this$config$markers2 === void 0 ? void 0 : _this$config$markers2.filter(({ time }) => time > 0 && time < this.duration);\n\t\tif (!(points === null || points === void 0 ? void 0 : points.length)) return;\n\t\tconst containerFragment = document.createDocumentFragment();\n\t\tconst pointsFragment = document.createDocumentFragment();\n\t\tlet tipElement = null;\n\t\tconst tipVisible = `${this.config.classNames.tooltip}--visible`;\n\t\tconst toggleTip = (show) => toggleClass(tipElement, tipVisible, show);\n\t\tpoints.forEach((point) => {\n\t\t\tconst markerElement = createElement(\"span\", { class: this.config.classNames.marker }, \"\");\n\t\t\tconst left = `${point.time / this.duration * 100}%`;\n\t\t\tif (tipElement) {\n\t\t\t\tmarkerElement.addEventListener(\"mouseenter\", () => {\n\t\t\t\t\tif (point.label) return;\n\t\t\t\t\ttipElement.style.left = left;\n\t\t\t\t\ttipElement.innerHTML = point.label;\n\t\t\t\t\ttoggleTip(true);\n\t\t\t\t});\n\t\t\t\tmarkerElement.addEventListener(\"mouseleave\", () => {\n\t\t\t\t\ttoggleTip(false);\n\t\t\t\t});\n\t\t\t}\n\t\t\tmarkerElement.addEventListener(\"click\", () => {\n\t\t\t\tthis.currentTime = point.time;\n\t\t\t});\n\t\t\tmarkerElement.style.left = left;\n\t\t\tpointsFragment.appendChild(markerElement);\n\t\t});\n\t\tcontainerFragment.appendChild(pointsFragment);\n\t\tif (!this.config.tooltips.seek) {\n\t\t\ttipElement = createElement(\"span\", { class: this.config.classNames.tooltip }, \"\");\n\t\t\tcontainerFragment.appendChild(tipElement);\n\t\t}\n\t\tthis.elements.markers = {\n\t\t\tpoints: pointsFragment,\n\t\t\ttip: tipElement\n\t\t};\n\t\tthis.elements.progress.appendChild(containerFragment);\n\t}\n};\n//#endregion\n//#region src/js/utils/urls.js\n/**\n* Parse a string to a URL object\n* @param {string} input - the URL to be parsed\n* @param {boolean} safe - failsafe parsing\n*/\nfunction parseUrl(input, safe = true) {\n\tlet url = input;\n\tif (safe) {\n\t\tconst parser = document.createElement(\"a\");\n\t\tparser.href = url;\n\t\turl = parser.href;\n\t}\n\ttry {\n\t\treturn new URL(url);\n\t} catch {\n\t\treturn null;\n\t}\n}\nfunction buildUrlParams(input) {\n\tconst params = new URLSearchParams();\n\tif (is_default.object(input)) Object.entries(input).forEach(([key, value]) => {\n\t\tparams.set(key, value);\n\t});\n\treturn params;\n}\n//#endregion\n//#region src/js/captions.js\nvar captions = {\n\tsetup() {\n\t\tif (!this.supported.ui) return;\n\t\tif (!this.isVideo || this.isYouTube || this.isHTML5 && !support.textTracks) {\n\t\t\tif (is_default.array(this.config.controls) && this.config.controls.includes(\"settings\") && this.config.settings.includes(\"captions\")) controls.setCaptionsMenu.call(this);\n\t\t\treturn;\n\t\t}\n\t\tif (!is_default.element(this.elements.captions)) {\n\t\t\tthis.elements.captions = createElement(\"div\", getAttributesFromSelector(this.config.selectors.captions));\n\t\t\tthis.elements.captions.setAttribute(\"dir\", \"auto\");\n\t\t\tinsertAfter(this.elements.captions, this.elements.wrapper);\n\t\t}\n\t\tif (browser_default.isIE && window.URL) {\n\t\t\tconst elements = this.media.querySelectorAll(\"track\");\n\t\t\tArray.from(elements).forEach((track) => {\n\t\t\t\tconst src = track.getAttribute(\"src\");\n\t\t\t\tconst url = parseUrl(src);\n\t\t\t\tif (url !== null && url.hostname !== window.location.href.hostname && [\"http:\", \"https:\"].includes(url.protocol)) fetch(src, \"blob\").then((blob) => {\n\t\t\t\t\ttrack.setAttribute(\"src\", window.URL.createObjectURL(blob));\n\t\t\t\t}).catch(() => {\n\t\t\t\t\tremoveElement(track);\n\t\t\t\t});\n\t\t\t});\n\t\t}\n\t\tconst languages = dedupe((navigator.languages || [navigator.language || navigator.userLanguage || \"en\"]).map((language) => language.split(\"-\")[0]));\n\t\tlet language = (this.storage.get(\"language\") || this.captions.language || this.config.captions.language || \"auto\").toLowerCase();\n\t\tif (language === \"auto\") [language] = languages;\n\t\tlet active = this.storage.get(\"captions\") || this.captions.active;\n\t\tif (!is_default.boolean(active)) ({active} = this.config.captions);\n\t\tObject.assign(this.captions, {\n\t\t\ttoggled: false,\n\t\t\tactive,\n\t\t\tlanguage,\n\t\t\tlanguages\n\t\t});\n\t\tif (this.isHTML5) {\n\t\t\tconst trackEvents = this.config.captions.update ? \"addtrack removetrack\" : \"removetrack\";\n\t\t\ton.call(this, this.media.textTracks, trackEvents, captions.update.bind(this));\n\t\t}\n\t\tsetTimeout(captions.update.bind(this), 0);\n\t},\n\tupdate() {\n\t\tconst tracks = captions.getTracks.call(this, true);\n\t\tconst { active, language, meta, currentTrackNode } = this.captions;\n\t\tconst languageExists = Boolean(tracks.find((track) => (track.language || \"\").toLowerCase() === language));\n\t\tif (this.isHTML5 && this.isVideo) tracks.filter((track) => !meta.get(track)).forEach((track) => {\n\t\t\tthis.debug.log(\"Track added\", track);\n\t\t\tmeta.set(track, { default: track.mode === \"showing\" });\n\t\t\tif (track.mode === \"showing\") track.mode = \"hidden\";\n\t\t\ton.call(this, track, \"cuechange\", () => captions.updateCues.call(this));\n\t\t});\n\t\tif (languageExists && this.language !== language || !tracks.includes(currentTrackNode)) {\n\t\t\tcaptions.setLanguage.call(this, language);\n\t\t\tcaptions.toggle.call(this, active && languageExists);\n\t\t}\n\t\tif (this.elements) toggleClass(this.elements.container, this.config.classNames.captions.enabled, !is_default.empty(tracks));\n\t\tif (is_default.array(this.config.controls) && this.config.controls.includes(\"settings\") && this.config.settings.includes(\"captions\")) controls.setCaptionsMenu.call(this);\n\t},\n\ttoggle(input, passive = true) {\n\t\tif (!this.supported.ui) return;\n\t\tconst { toggled } = this.captions;\n\t\tconst activeClass = this.config.classNames.captions.active;\n\t\tconst active = is_default.nullOrUndefined(input) ? !toggled : input;\n\t\tif (active !== toggled) {\n\t\t\tif (!passive) {\n\t\t\t\tthis.captions.active = active;\n\t\t\t\tthis.storage.set({ captions: active });\n\t\t\t}\n\t\t\tif (!this.language && active && !passive) {\n\t\t\t\tconst tracks = captions.getTracks.call(this);\n\t\t\t\tconst track = captions.findTrack.call(this, [this.captions.language, ...this.captions.languages], true);\n\t\t\t\tthis.captions.language = track.language;\n\t\t\t\tcaptions.set.call(this, tracks.indexOf(track));\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (this.elements.buttons.captions) this.elements.buttons.captions.pressed = active;\n\t\t\ttoggleClass(this.elements.container, activeClass, active);\n\t\t\tthis.captions.toggled = active;\n\t\t\tcontrols.updateSetting.call(this, \"captions\");\n\t\t\ttriggerEvent.call(this, this.media, active ? \"captionsenabled\" : \"captionsdisabled\");\n\t\t}\n\t\tsetTimeout(() => {\n\t\t\tif (active && this.captions.toggled) this.captions.currentTrackNode.mode = \"hidden\";\n\t\t});\n\t},\n\tset(index, passive = true) {\n\t\tconst tracks = captions.getTracks.call(this);\n\t\tif (index === -1) {\n\t\t\tcaptions.toggle.call(this, false, passive);\n\t\t\treturn;\n\t\t}\n\t\tif (!is_default.number(index)) {\n\t\t\tthis.debug.warn(\"Invalid caption argument\", index);\n\t\t\treturn;\n\t\t}\n\t\tif (!(index in tracks)) {\n\t\t\tthis.debug.warn(\"Track not found\", index);\n\t\t\treturn;\n\t\t}\n\t\tif (this.captions.currentTrack !== index) {\n\t\t\tthis.captions.currentTrack = index;\n\t\t\tconst track = tracks[index];\n\t\t\tconst { language } = track || {};\n\t\t\tthis.captions.currentTrackNode = track;\n\t\t\tcontrols.updateSetting.call(this, \"captions\");\n\t\t\tif (!passive) {\n\t\t\t\tthis.captions.language = language;\n\t\t\t\tthis.storage.set({ language });\n\t\t\t}\n\t\t\tif (this.isVimeo) this.embed.enableTextTrack(language, null, false);\n\t\t\ttriggerEvent.call(this, this.media, \"languagechange\");\n\t\t}\n\t\tcaptions.toggle.call(this, true, passive);\n\t\tif (this.isHTML5 && this.isVideo) captions.updateCues.call(this);\n\t},\n\tsetLanguage(input, passive = true) {\n\t\tif (!is_default.string(input)) {\n\t\t\tthis.debug.warn(\"Invalid language argument\", input);\n\t\t\treturn;\n\t\t}\n\t\tconst language = input.toLowerCase();\n\t\tthis.captions.language = language;\n\t\tconst tracks = captions.getTracks.call(this);\n\t\tlet track = tracks[this.captions.currentTrack];\n\t\tif (track && (track.language || \"\").toLowerCase() !== language) track = void 0;\n\t\tif (!track) track = captions.findTrack.call(this, [language]);\n\t\tcaptions.set.call(this, tracks.indexOf(track), passive);\n\t},\n\tgetTracks(update = false) {\n\t\treturn Array.from((this.media || {}).textTracks || []).filter((track) => !this.isHTML5 || update || this.captions.meta.has(track)).filter((track) => [\"captions\", \"subtitles\"].includes(track.kind));\n\t},\n\tfindTrack(languages, force = false) {\n\t\tconst tracks = captions.getTracks.call(this);\n\t\tconst sortIsDefault = (track) => Number((this.captions.meta.get(track) || {}).default);\n\t\tconst sorted = Array.from(tracks).sort((a, b) => sortIsDefault(b) - sortIsDefault(a));\n\t\tlet track;\n\t\tlanguages.every((language) => {\n\t\t\ttrack = sorted.find((t) => (t.language || \"\").toLowerCase() === (language || \"\").toLowerCase());\n\t\t\treturn !track;\n\t\t});\n\t\treturn track || (force ? sorted[0] : void 0);\n\t},\n\tgetCurrentTrack() {\n\t\treturn captions.getTracks.call(this)[this.currentTrack];\n\t},\n\tgetLabel(track) {\n\t\tlet currentTrack = track;\n\t\tif (!is_default.track(currentTrack) && support.textTracks && this.captions.toggled) currentTrack = captions.getCurrentTrack.call(this);\n\t\tif (is_default.track(currentTrack)) {\n\t\t\tif (!is_default.empty(currentTrack.label)) return currentTrack.label;\n\t\t\tif (!is_default.empty(currentTrack.language)) return track.language.toUpperCase();\n\t\t\treturn i18n.get(\"enabled\", this.config);\n\t\t}\n\t\treturn i18n.get(\"disabled\", this.config);\n\t},\n\tupdateCues(input) {\n\t\tif (!this.supported.ui) return;\n\t\tif (!is_default.element(this.elements.captions)) {\n\t\t\tthis.debug.warn(\"No captions element to render to\");\n\t\t\treturn;\n\t\t}\n\t\tif (!is_default.nullOrUndefined(input) && !Array.isArray(input)) {\n\t\t\tthis.debug.warn(\"updateCues: Invalid input\", input);\n\t\t\treturn;\n\t\t}\n\t\tlet cues = input;\n\t\tif (!cues) {\n\t\t\tconst track = captions.getCurrentTrack.call(this);\n\t\t\tcues = Array.from((track || {}).activeCues || []).map((cue) => cue.getCueAsHTML()).map(getHTML);\n\t\t}\n\t\tconst content = cues.map((cueText) => cueText.trim()).join(\"\\n\");\n\t\tif (content !== this.elements.captions.innerHTML) {\n\t\t\temptyElement(this.elements.captions);\n\t\t\tconst caption = createElement(\"span\", getAttributesFromSelector(this.config.selectors.caption));\n\t\t\tcaption.innerHTML = content;\n\t\t\tthis.elements.captions.appendChild(caption);\n\t\t\ttriggerEvent.call(this, this.media, \"cuechange\");\n\t\t}\n\t}\n};\n//#endregion\n//#region src/js/config/defaults.js\nvar defaults = {\n\tenabled: true,\n\ttitle: \"\",\n\tdebug: false,\n\tautoplay: false,\n\tautopause: true,\n\tplaysinline: true,\n\tseekTime: 10,\n\tvolume: 1,\n\tmuted: false,\n\tduration: null,\n\tdisplayDuration: true,\n\tinvertTime: true,\n\ttoggleInvert: true,\n\tratio: null,\n\tclickToPlay: true,\n\thideControls: true,\n\tresetOnEnd: false,\n\tdisableContextMenu: true,\n\tloadSprite: true,\n\ticonPrefix: \"plyr\",\n\ticonUrl: \"https://cdn.plyr.io/3.8.5/plyr.svg\",\n\tblankVideo: \"https://cdn.plyr.io/static/blank.mp4\",\n\tquality: {\n\t\tdefault: 576,\n\t\toptions: [\n\t\t\t4320,\n\t\t\t2880,\n\t\t\t2160,\n\t\t\t1440,\n\t\t\t1080,\n\t\t\t720,\n\t\t\t576,\n\t\t\t480,\n\t\t\t360,\n\t\t\t240\n\t\t],\n\t\tforced: false,\n\t\tonChange: null\n\t},\n\tloop: { active: false },\n\tspeed: {\n\t\tselected: 1,\n\t\toptions: [\n\t\t\t.5,\n\t\t\t.75,\n\t\t\t1,\n\t\t\t1.25,\n\t\t\t1.5,\n\t\t\t1.75,\n\t\t\t2,\n\t\t\t4\n\t\t]\n\t},\n\tkeyboard: {\n\t\tfocused: true,\n\t\tglobal: false\n\t},\n\ttooltips: {\n\t\tcontrols: false,\n\t\tseek: true\n\t},\n\tcaptions: {\n\t\tactive: false,\n\t\tlanguage: \"auto\",\n\t\tupdate: false\n\t},\n\tfullscreen: {\n\t\tenabled: true,\n\t\tfallback: true,\n\t\tiosNative: false\n\t},\n\tstorage: {\n\t\tenabled: true,\n\t\tkey: \"plyr\"\n\t},\n\tcontrols: [\n\t\t\"play-large\",\n\t\t\"play\",\n\t\t\"progress\",\n\t\t\"current-time\",\n\t\t\"mute\",\n\t\t\"volume\",\n\t\t\"captions\",\n\t\t\"settings\",\n\t\t\"pip\",\n\t\t\"airplay\",\n\t\t\"fullscreen\"\n\t],\n\tsettings: [\n\t\t\"captions\",\n\t\t\"quality\",\n\t\t\"speed\"\n\t],\n\ti18n: {\n\t\trestart: \"Restart\",\n\t\trewind: \"Rewind {seektime}s\",\n\t\tplay: \"Play\",\n\t\tpause: \"Pause\",\n\t\tfastForward: \"Forward {seektime}s\",\n\t\tseek: \"Seek\",\n\t\tseekLabel: \"{currentTime} of {duration}\",\n\t\tplayed: \"Played\",\n\t\tbuffered: \"Buffered\",\n\t\tcurrentTime: \"Current time\",\n\t\tduration: \"Duration\",\n\t\tvolume: \"Volume\",\n\t\tmute: \"Mute\",\n\t\tunmute: \"Unmute\",\n\t\tenableCaptions: \"Enable captions\",\n\t\tdisableCaptions: \"Disable captions\",\n\t\tdownload: \"Download\",\n\t\tenterFullscreen: \"Enter fullscreen\",\n\t\texitFullscreen: \"Exit fullscreen\",\n\t\tframeTitle: \"Player for {title}\",\n\t\tcaptions: \"Captions\",\n\t\tsettings: \"Settings\",\n\t\tpip: \"PIP\",\n\t\tmenuBack: \"Go back to previous menu\",\n\t\tspeed: \"Speed\",\n\t\tnormal: \"Normal\",\n\t\tquality: \"Quality\",\n\t\tloop: \"Loop\",\n\t\tstart: \"Start\",\n\t\tend: \"End\",\n\t\tall: \"All\",\n\t\treset: \"Reset\",\n\t\tdisabled: \"Disabled\",\n\t\tenabled: \"Enabled\",\n\t\tadvertisement: \"Ad\",\n\t\tqualityBadge: {\n\t\t\t2160: \"4K\",\n\t\t\t1440: \"HD\",\n\t\t\t1080: \"HD\",\n\t\t\t720: \"HD\",\n\t\t\t576: \"SD\",\n\t\t\t480: \"SD\"\n\t\t}\n\t},\n\turls: {\n\t\tdownload: null,\n\t\tvimeo: {\n\t\t\tsdk: \"https://player.vimeo.com/api/player.js\",\n\t\t\tiframe: \"https://player.vimeo.com/video/{0}?{1}\",\n\t\t\tapi: \"https://vimeo.com/api/oembed.json?url={0}\"\n\t\t},\n\t\tyoutube: {\n\t\t\tsdk: \"https://www.youtube.com/iframe_api\",\n\t\t\tapi: \"https://noembed.com/embed?url=https://www.youtube.com/watch?v={0}\"\n\t\t},\n\t\tgoogleIMA: { sdk: \"https://imasdk.googleapis.com/js/sdkloader/ima3.js\" }\n\t},\n\tlisteners: {\n\t\tseek: null,\n\t\tplay: null,\n\t\tpause: null,\n\t\trestart: null,\n\t\trewind: null,\n\t\tfastForward: null,\n\t\tmute: null,\n\t\tvolume: null,\n\t\tcaptions: null,\n\t\tdownload: null,\n\t\tfullscreen: null,\n\t\tpip: null,\n\t\tairplay: null,\n\t\tspeed: null,\n\t\tquality: null,\n\t\tloop: null,\n\t\tlanguage: null\n\t},\n\tevents: [\n\t\t\"ended\",\n\t\t\"progress\",\n\t\t\"stalled\",\n\t\t\"playing\",\n\t\t\"waiting\",\n\t\t\"canplay\",\n\t\t\"canplaythrough\",\n\t\t\"loadstart\",\n\t\t\"loadeddata\",\n\t\t\"loadedmetadata\",\n\t\t\"timeupdate\",\n\t\t\"volumechange\",\n\t\t\"play\",\n\t\t\"pause\",\n\t\t\"error\",\n\t\t\"seeking\",\n\t\t\"seeked\",\n\t\t\"emptied\",\n\t\t\"ratechange\",\n\t\t\"cuechange\",\n\t\t\"download\",\n\t\t\"enterfullscreen\",\n\t\t\"exitfullscreen\",\n\t\t\"captionsenabled\",\n\t\t\"captionsdisabled\",\n\t\t\"languagechange\",\n\t\t\"controlshidden\",\n\t\t\"controlsshown\",\n\t\t\"ready\",\n\t\t\"statechange\",\n\t\t\"qualitychange\",\n\t\t\"adsloaded\",\n\t\t\"adscontentpause\",\n\t\t\"adscontentresume\",\n\t\t\"adstarted\",\n\t\t\"adsmidpoint\",\n\t\t\"adscomplete\",\n\t\t\"adsallcomplete\",\n\t\t\"adsimpression\",\n\t\t\"adsclick\"\n\t],\n\tselectors: {\n\t\teditable: \"input, textarea, select, [contenteditable]\",\n\t\tcontainer: \".plyr\",\n\t\tcontrols: {\n\t\t\tcontainer: null,\n\t\t\twrapper: \".plyr__controls\"\n\t\t},\n\t\tlabels: \"[data-plyr]\",\n\t\tbuttons: {\n\t\t\tplay: \"[data-plyr=\\\"play\\\"]\",\n\t\t\tpause: \"[data-plyr=\\\"pause\\\"]\",\n\t\t\trestart: \"[data-plyr=\\\"restart\\\"]\",\n\t\t\trewind: \"[data-plyr=\\\"rewind\\\"]\",\n\t\t\tfastForward: \"[data-plyr=\\\"fast-forward\\\"]\",\n\t\t\tmute: \"[data-plyr=\\\"mute\\\"]\",\n\t\t\tcaptions: \"[data-plyr=\\\"captions\\\"]\",\n\t\t\tdownload: \"[data-plyr=\\\"download\\\"]\",\n\t\t\tfullscreen: \"[data-plyr=\\\"fullscreen\\\"]\",\n\t\t\tpip: \"[data-plyr=\\\"pip\\\"]\",\n\t\t\tairplay: \"[data-plyr=\\\"airplay\\\"]\",\n\t\t\tsettings: \"[data-plyr=\\\"settings\\\"]\",\n\t\t\tloop: \"[data-plyr=\\\"loop\\\"]\"\n\t\t},\n\t\tinputs: {\n\t\t\tseek: \"[data-plyr=\\\"seek\\\"]\",\n\t\t\tvolume: \"[data-plyr=\\\"volume\\\"]\",\n\t\t\tspeed: \"[data-plyr=\\\"speed\\\"]\",\n\t\t\tlanguage: \"[data-plyr=\\\"language\\\"]\",\n\t\t\tquality: \"[data-plyr=\\\"quality\\\"]\"\n\t\t},\n\t\tdisplay: {\n\t\t\tcurrentTime: \".plyr__time--current\",\n\t\t\tduration: \".plyr__time--duration\",\n\t\t\tbuffer: \".plyr__progress__buffer\",\n\t\t\tloop: \".plyr__progress__loop\",\n\t\t\tvolume: \".plyr__volume--display\"\n\t\t},\n\t\tprogress: \".plyr__progress\",\n\t\tcaptions: \".plyr__captions\",\n\t\tcaption: \".plyr__caption\"\n\t},\n\tclassNames: {\n\t\ttype: \"plyr--{0}\",\n\t\tprovider: \"plyr--{0}\",\n\t\tvideo: \"plyr__video-wrapper\",\n\t\tembed: \"plyr__video-embed\",\n\t\tvideoFixedRatio: \"plyr__video-wrapper--fixed-ratio\",\n\t\tembedContainer: \"plyr__video-embed__container\",\n\t\tposter: \"plyr__poster\",\n\t\tposterEnabled: \"plyr__poster-enabled\",\n\t\tads: \"plyr__ads\",\n\t\tcontrol: \"plyr__control\",\n\t\tcontrolPressed: \"plyr__control--pressed\",\n\t\tplaying: \"plyr--playing\",\n\t\tpaused: \"plyr--paused\",\n\t\tstopped: \"plyr--stopped\",\n\t\tloading: \"plyr--loading\",\n\t\thover: \"plyr--hover\",\n\t\ttooltip: \"plyr__tooltip\",\n\t\tcues: \"plyr__cues\",\n\t\tmarker: \"plyr__progress__marker\",\n\t\thidden: \"plyr__sr-only\",\n\t\thideControls: \"plyr--hide-controls\",\n\t\tisTouch: \"plyr--is-touch\",\n\t\tuiSupported: \"plyr--full-ui\",\n\t\tnoTransition: \"plyr--no-transition\",\n\t\tdisplay: { time: \"plyr__time\" },\n\t\tmenu: {\n\t\t\tvalue: \"plyr__menu__value\",\n\t\t\tbadge: \"plyr__badge\",\n\t\t\topen: \"plyr--menu-open\"\n\t\t},\n\t\tcaptions: {\n\t\t\tenabled: \"plyr--captions-enabled\",\n\t\t\tactive: \"plyr--captions-active\"\n\t\t},\n\t\tfullscreen: {\n\t\t\tenabled: \"plyr--fullscreen-enabled\",\n\t\t\tfallback: \"plyr--fullscreen-fallback\"\n\t\t},\n\t\tpip: {\n\t\t\tsupported: \"plyr--pip-supported\",\n\t\t\tactive: \"plyr--pip-active\"\n\t\t},\n\t\tairplay: {\n\t\t\tsupported: \"plyr--airplay-supported\",\n\t\t\tactive: \"plyr--airplay-active\"\n\t\t},\n\t\tpreviewThumbnails: {\n\t\t\tthumbContainer: \"plyr__preview-thumb\",\n\t\t\tthumbContainerShown: \"plyr__preview-thumb--is-shown\",\n\t\t\timageContainer: \"plyr__preview-thumb__image-container\",\n\t\t\ttimeContainer: \"plyr__preview-thumb__time-container\",\n\t\t\tscrubbingContainer: \"plyr__preview-scrubbing\",\n\t\t\tscrubbingContainerShown: \"plyr__preview-scrubbing--is-shown\"\n\t\t}\n\t},\n\tattributes: { embed: {\n\t\tprovider: \"data-plyr-provider\",\n\t\tid: \"data-plyr-embed-id\",\n\t\thash: \"data-plyr-embed-hash\"\n\t} },\n\tads: {\n\t\tenabled: false,\n\t\tpublisherId: \"\",\n\t\ttagUrl: \"\"\n\t},\n\tpreviewThumbnails: {\n\t\tenabled: false,\n\t\tsrc: \"\",\n\t\twithCredentials: false\n\t},\n\tvimeo: {\n\t\tbyline: false,\n\t\tportrait: false,\n\t\ttitle: false,\n\t\tspeed: true,\n\t\ttransparent: false,\n\t\tcustomControls: true,\n\t\treferrerPolicy: null,\n\t\tpremium: false\n\t},\n\tyoutube: {\n\t\trel: 0,\n\t\tshowinfo: 0,\n\t\tiv_load_policy: 3,\n\t\tmodestbranding: 1,\n\t\tcustomControls: true,\n\t\tnoCookie: false\n\t},\n\tmediaMetadata: {\n\t\ttitle: \"\",\n\t\tartist: \"\",\n\t\talbum: \"\",\n\t\tartwork: []\n\t},\n\tmarkers: {\n\t\tenabled: false,\n\t\tpoints: []\n\t}\n};\n//#endregion\n//#region src/js/config/states.js\nvar pip = {\n\tactive: \"picture-in-picture\",\n\tinactive: \"inline\"\n};\n//#endregion\n//#region src/js/config/types.js\nvar providers = {\n\thtml5: \"html5\",\n\tyoutube: \"youtube\",\n\tvimeo: \"vimeo\"\n};\nvar types = {\n\taudio: \"audio\",\n\tvideo: \"video\"\n};\n/**\n* Get provider by URL\n* @param {string} url\n*/\nfunction getProviderByUrl(url) {\n\tif (/^(?:https?:\\/\\/)?(?:www\\.)?(?:youtube\\.com|youtube-nocookie\\.com|youtu\\.?be)\\/.+$/.test(url)) return providers.youtube;\n\tif (/^https?:\\/\\/player.vimeo.com\\/video\\/\\d{0,9}(?=\\b|\\/)/.test(url)) return providers.vimeo;\n\treturn null;\n}\n//#endregion\n//#region src/js/console.js\nfunction noop() {}\nvar Console = class {\n\tconstructor(enabled = false) {\n\t\tthis.enabled = window.console && enabled;\n\t\tif (this.enabled) this.log(\"Debugging enabled\");\n\t}\n\tget log() {\n\t\treturn this.enabled ? Function.prototype.bind.call(console.log, console) : noop;\n\t}\n\tget warn() {\n\t\treturn this.enabled ? Function.prototype.bind.call(console.warn, console) : noop;\n\t}\n\tget error() {\n\t\treturn this.enabled ? Function.prototype.bind.call(console.error, console) : noop;\n\t}\n};\n//#endregion\n//#region src/js/fullscreen.js\nvar Fullscreen = class Fullscreen {\n\tconstructor(player) {\n\t\t_defineProperty(this, \"onChange\", () => {\n\t\t\tif (!this.supported) return;\n\t\t\tconst button = this.player.elements.buttons.fullscreen;\n\t\t\tif (is_default.element(button)) button.pressed = this.active;\n\t\t\tconst target = this.target === this.player.media ? this.target : this.player.elements.container;\n\t\t\ttriggerEvent.call(this.player, target, this.active ? \"enterfullscreen\" : \"exitfullscreen\", true);\n\t\t});\n\t\t_defineProperty(this, \"toggleFallback\", (toggle = false) => {\n\t\t\tif (toggle) {\n\t\t\t\tvar _window$scrollX, _window$scrollY;\n\t\t\t\tthis.scrollPosition = {\n\t\t\t\t\tx: (_window$scrollX = window.scrollX) !== null && _window$scrollX !== void 0 ? _window$scrollX : 0,\n\t\t\t\t\ty: (_window$scrollY = window.scrollY) !== null && _window$scrollY !== void 0 ? _window$scrollY : 0\n\t\t\t\t};\n\t\t\t} else window.scrollTo(this.scrollPosition.x, this.scrollPosition.y);\n\t\t\tdocument.body.style.overflow = toggle ? \"hidden\" : \"\";\n\t\t\ttoggleClass(this.target, this.player.config.classNames.fullscreen.fallback, toggle);\n\t\t\tif (browser_default.isIos) {\n\t\t\t\tlet viewport = document.head.querySelector(\"meta[name=\\\"viewport\\\"]\");\n\t\t\t\tconst property = \"viewport-fit=cover\";\n\t\t\t\tif (!viewport) {\n\t\t\t\t\tviewport = document.createElement(\"meta\");\n\t\t\t\t\tviewport.setAttribute(\"name\", \"viewport\");\n\t\t\t\t}\n\t\t\t\tconst hasProperty = is_default.string(viewport.content) && viewport.content.includes(property);\n\t\t\t\tif (toggle) {\n\t\t\t\t\tthis.cleanupViewport = !hasProperty;\n\t\t\t\t\tif (!hasProperty) viewport.content += `,${property}`;\n\t\t\t\t} else if (this.cleanupViewport) viewport.content = viewport.content.split(\",\").filter((part) => part.trim() !== property).join(\",\");\n\t\t\t}\n\t\t\tthis.onChange();\n\t\t});\n\t\t_defineProperty(this, \"trapFocus\", (event) => {\n\t\t\tif (browser_default.isIos || browser_default.isIPadOS || !this.active || event.key !== \"Tab\") return;\n\t\t\tconst focused = document.activeElement;\n\t\t\tconst focusable = getElements.call(this.player, \"a[href], button:not(:disabled), input:not(:disabled), [tabindex]\");\n\t\t\tconst [first] = focusable;\n\t\t\tconst last = focusable[focusable.length - 1];\n\t\t\tif (focused === last && !event.shiftKey) {\n\t\t\t\tfirst.focus();\n\t\t\t\tevent.preventDefault();\n\t\t\t} else if (focused === first && event.shiftKey) {\n\t\t\t\tlast.focus();\n\t\t\t\tevent.preventDefault();\n\t\t\t}\n\t\t});\n\t\t_defineProperty(this, \"update\", () => {\n\t\t\tif (this.supported) {\n\t\t\t\tlet mode;\n\t\t\t\tif (this.forceFallback) mode = \"Fallback (forced)\";\n\t\t\t\telse if (Fullscreen.nativeSupported) mode = \"Native\";\n\t\t\t\telse mode = \"Fallback\";\n\t\t\t\tthis.player.debug.log(`${mode} fullscreen enabled`);\n\t\t\t} else this.player.debug.log(\"Fullscreen not supported and fallback disabled\");\n\t\t\ttoggleClass(this.player.elements.container, this.player.config.classNames.fullscreen.enabled, this.supported);\n\t\t});\n\t\t_defineProperty(this, \"enter\", () => {\n\t\t\tif (!this.supported) return;\n\t\t\tif (browser_default.isIos && this.player.config.fullscreen.iosNative) {\n\t\t\t\tif (this.player.isVimeo) this.player.embed.requestFullscreen();\n\t\t\t\telse this.target.webkitEnterFullscreen();\n\t\t\t} else if (!Fullscreen.nativeSupported || this.forceFallback) this.toggleFallback(true);\n\t\t\telse if (!this.prefix) this.target.requestFullscreen({ navigationUI: \"hide\" });\n\t\t\telse if (!is_default.empty(this.prefix)) this.target[`${this.prefix}Request${this.property}`]();\n\t\t});\n\t\t_defineProperty(this, \"exit\", () => {\n\t\t\tif (!this.supported) return;\n\t\t\tif (browser_default.isIos && this.player.config.fullscreen.iosNative) {\n\t\t\t\tif (this.player.isVimeo) this.player.embed.exitFullscreen();\n\t\t\t\telse this.target.webkitEnterFullscreen();\n\t\t\t\tsilencePromise(this.player.play());\n\t\t\t} else if (!Fullscreen.nativeSupported || this.forceFallback) this.toggleFallback(false);\n\t\t\telse if (!this.prefix) (document.cancelFullScreen || document.exitFullscreen).call(document);\n\t\t\telse if (!is_default.empty(this.prefix)) {\n\t\t\t\tconst action = this.prefix === \"moz\" ? \"Cancel\" : \"Exit\";\n\t\t\t\tdocument[`${this.prefix}${action}${this.property}`]();\n\t\t\t}\n\t\t});\n\t\t_defineProperty(this, \"toggle\", () => {\n\t\t\tif (!this.active) this.enter();\n\t\t\telse this.exit();\n\t\t});\n\t\tthis.player = player;\n\t\tthis.prefix = Fullscreen.prefix;\n\t\tthis.property = Fullscreen.property;\n\t\tthis.scrollPosition = {\n\t\t\tx: 0,\n\t\t\ty: 0\n\t\t};\n\t\tthis.forceFallback = player.config.fullscreen.fallback === \"force\";\n\t\tthis.player.elements.fullscreen = player.config.fullscreen.container && closest$1(this.player.elements.container, player.config.fullscreen.container);\n\t\ton.call(this.player, document, this.prefix === \"ms\" ? \"MSFullscreenChange\" : `${this.prefix}fullscreenchange`, () => {\n\t\t\tthis.onChange();\n\t\t});\n\t\ton.call(this.player, this.player.elements.container, \"dblclick\", (event) => {\n\t\t\tif (is_default.element(this.player.elements.controls) && this.player.elements.controls.contains(event.target)) return;\n\t\t\tthis.player.listeners.proxy(event, this.toggle, \"fullscreen\");\n\t\t});\n\t\ton.call(this, this.player.elements.container, \"keydown\", (event) => this.trapFocus(event));\n\t\tthis.update();\n\t}\n\tstatic get nativeSupported() {\n\t\treturn !!(document.fullscreenEnabled || document.webkitFullscreenEnabled || document.mozFullScreenEnabled || document.msFullscreenEnabled);\n\t}\n\tget useNative() {\n\t\treturn Fullscreen.nativeSupported && !this.forceFallback;\n\t}\n\tstatic get prefix() {\n\t\tif (is_default.function(document.exitFullscreen)) return \"\";\n\t\tlet value = \"\";\n\t\t[\n\t\t\t\"webkit\",\n\t\t\t\"moz\",\n\t\t\t\"ms\"\n\t\t].some((pre) => {\n\t\t\tif (is_default.function(document[`${pre}ExitFullscreen`]) || is_default.function(document[`${pre}CancelFullScreen`])) {\n\t\t\t\tvalue = pre;\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\treturn false;\n\t\t});\n\t\treturn value;\n\t}\n\tstatic get property() {\n\t\treturn this.prefix === \"moz\" ? \"FullScreen\" : \"Fullscreen\";\n\t}\n\tget supported() {\n\t\treturn [\n\t\t\tthis.player.config.fullscreen.enabled,\n\t\t\tthis.player.isVideo,\n\t\t\tFullscreen.nativeSupported || this.player.config.fullscreen.fallback,\n\t\t\t!this.player.isYouTube || Fullscreen.nativeSupported || !browser_default.isIos || this.player.config.playsinline && !this.player.config.fullscreen.iosNative\n\t\t].every(Boolean);\n\t}\n\tget active() {\n\t\tif (!this.supported) return false;\n\t\tif (!Fullscreen.nativeSupported || this.forceFallback) return hasClass(this.target, this.player.config.classNames.fullscreen.fallback);\n\t\tconst element = !this.prefix ? this.target.getRootNode().fullscreenElement : this.target.getRootNode()[`${this.prefix}${this.property}Element`];\n\t\treturn element && element.shadowRoot ? element === this.target.getRootNode().host : element === this.target;\n\t}\n\tget target() {\n\t\tvar _this$player$elements;\n\t\treturn browser_default.isIos && this.player.config.fullscreen.iosNative ? this.player.media : (_this$player$elements = this.player.elements.fullscreen) !== null && _this$player$elements !== void 0 ? _this$player$elements : this.player.elements.container;\n\t}\n};\n//#endregion\n//#region src/js/utils/load-image.js\nfunction loadImage(src, minWidth = 1) {\n\treturn new Promise((resolve, reject) => {\n\t\tconst image = new Image();\n\t\tconst handler = () => {\n\t\t\tdelete image.onload;\n\t\t\tdelete image.onerror;\n\t\t\t(image.naturalWidth >= minWidth ? resolve : reject)(image);\n\t\t};\n\t\tObject.assign(image, {\n\t\t\tonload: handler,\n\t\t\tonerror: handler,\n\t\t\tsrc\n\t\t});\n\t});\n}\n//#endregion\n//#region src/js/ui.js\nvar ui = {\n\taddStyleHook() {\n\t\ttoggleClass(this.elements.container, this.config.selectors.container.replace(\".\", \"\"), true);\n\t\ttoggleClass(this.elements.container, this.config.classNames.uiSupported, this.supported.ui);\n\t},\n\ttoggleNativeControls(toggle = false) {\n\t\tif (toggle && this.isHTML5) this.media.setAttribute(\"controls\", \"\");\n\t\telse this.media.removeAttribute(\"controls\");\n\t},\n\tbuild() {\n\t\tthis.listeners.media();\n\t\tif (!this.supported.ui) {\n\t\t\tthis.debug.warn(`Basic support only for ${this.provider} ${this.type}`);\n\t\t\tui.toggleNativeControls.call(this, true);\n\t\t\treturn;\n\t\t}\n\t\tif (!is_default.element(this.elements.controls)) {\n\t\t\tcontrols.inject.call(this);\n\t\t\tthis.listeners.controls();\n\t\t}\n\t\tui.toggleNativeControls.call(this);\n\t\tif (this.isHTML5) captions.setup.call(this);\n\t\tthis.volume = null;\n\t\tthis.muted = null;\n\t\tthis.loop = null;\n\t\tthis.quality = null;\n\t\tthis.speed = null;\n\t\tcontrols.updateVolume.call(this);\n\t\tcontrols.timeUpdate.call(this);\n\t\tcontrols.durationUpdate.call(this);\n\t\tui.checkPlaying.call(this);\n\t\ttoggleClass(this.elements.container, this.config.classNames.pip.supported, support.pip && this.isHTML5 && this.isVideo);\n\t\ttoggleClass(this.elements.container, this.config.classNames.airplay.supported, support.airplay && this.isHTML5);\n\t\ttoggleClass(this.elements.container, this.config.classNames.isTouch, this.touch);\n\t\tthis.ready = true;\n\t\tsetTimeout(() => {\n\t\t\ttriggerEvent.call(this, this.media, \"ready\");\n\t\t}, 0);\n\t\tui.setTitle.call(this);\n\t\tif (this.poster) ui.setPoster.call(this, this.poster, false).catch(() => {});\n\t\tif (this.config.duration) controls.durationUpdate.call(this);\n\t\tif (this.config.mediaMetadata) controls.setMediaMetadata.call(this);\n\t},\n\tsetTitle() {\n\t\tlet label = i18n.get(\"play\", this.config);\n\t\tif (is_default.string(this.config.title) && !is_default.empty(this.config.title)) label += `, ${this.config.title}`;\n\t\tArray.from(this.elements.buttons.play || []).forEach((button) => {\n\t\t\tbutton.setAttribute(\"aria-label\", label);\n\t\t});\n\t\tif (this.isEmbed) {\n\t\t\tconst iframe = getElement.call(this, \"iframe\");\n\t\t\tif (!is_default.element(iframe)) return;\n\t\t\tconst title = !is_default.empty(this.config.title) ? this.config.title : \"video\";\n\t\t\tconst format = i18n.get(\"frameTitle\", this.config);\n\t\t\tiframe.setAttribute(\"title\", format.replace(\"{title}\", title));\n\t\t}\n\t},\n\ttogglePoster(enable) {\n\t\ttoggleClass(this.elements.container, this.config.classNames.posterEnabled, enable);\n\t},\n\tsetPoster(poster, passive = true) {\n\t\tif (passive && this.poster) return Promise.reject(/* @__PURE__ */ new Error(\"Poster already set\"));\n\t\tthis.media.setAttribute(\"data-poster\", poster);\n\t\tthis.elements.poster.removeAttribute(\"hidden\");\n\t\treturn ready.call(this).then(() => loadImage(poster)).catch((error) => {\n\t\t\tif (poster === this.poster) ui.togglePoster.call(this, false);\n\t\t\tthrow error;\n\t\t}).then(() => {\n\t\t\tif (poster !== this.poster) throw new Error(\"setPoster cancelled by later call to setPoster\");\n\t\t}).then(() => {\n\t\t\tObject.assign(this.elements.poster.style, {\n\t\t\t\tbackgroundImage: `url('${poster}')`,\n\t\t\t\tbackgroundSize: \"\"\n\t\t\t});\n\t\t\tui.togglePoster.call(this, true);\n\t\t\treturn poster;\n\t\t});\n\t},\n\tcheckPlaying(event) {\n\t\ttoggleClass(this.elements.container, this.config.classNames.playing, this.playing);\n\t\ttoggleClass(this.elements.container, this.config.classNames.paused, this.paused);\n\t\ttoggleClass(this.elements.container, this.config.classNames.stopped, this.stopped);\n\t\tArray.from(this.elements.buttons.play || []).forEach((target) => {\n\t\t\tObject.assign(target, { pressed: this.playing });\n\t\t\ttarget.setAttribute(\"aria-label\", i18n.get(this.playing ? \"pause\" : \"play\", this.config));\n\t\t});\n\t\tif (is_default.event(event) && event.type === \"timeupdate\") return;\n\t\tui.toggleControls.call(this);\n\t},\n\tcheckLoading(event) {\n\t\tthis.loading = [\"stalled\", \"waiting\"].includes(event.type);\n\t\tclearTimeout(this.timers.loading);\n\t\tthis.timers.loading = setTimeout(() => {\n\t\t\ttoggleClass(this.elements.container, this.config.classNames.loading, this.loading);\n\t\t\tui.toggleControls.call(this);\n\t\t}, this.loading ? 250 : 0);\n\t},\n\ttoggleControls(force) {\n\t\tconst { controls: controlsElement } = this.elements;\n\t\tif (controlsElement && this.config.hideControls) {\n\t\t\tconst recentTouchSeek = this.touch && this.lastSeekTime + 2e3 > Date.now();\n\t\t\tthis.toggleControls(Boolean(force || this.loading || this.paused || controlsElement.pressed || controlsElement.hover || recentTouchSeek));\n\t\t}\n\t},\n\tmigrateStyles() {\n\t\tObject.values({ ...this.media.style }).filter((key) => !is_default.empty(key) && is_default.string(key) && key.startsWith(\"--plyr\")).forEach((key) => {\n\t\t\tthis.elements.container.style.setProperty(key, this.media.style.getPropertyValue(key));\n\t\t\tthis.media.style.removeProperty(key);\n\t\t});\n\t\tif (is_default.empty(this.media.style)) this.media.removeAttribute(\"style\");\n\t}\n};\n//#endregion\n//#region src/js/listeners.js\nfunction toggleMuted(player) {\n\tconst muted = !(player.muted || player.volume === 0);\n\tif (!muted && player.volume === 0) player.volume = player.lastVolume > 0 ? player.lastVolume : defaults.volume;\n\tplayer.muted = muted;\n}\nvar Listeners = class {\n\tconstructor(player) {\n\t\t_defineProperty(this, \"firstTouch\", () => {\n\t\t\tconst { player } = this;\n\t\t\tconst { elements } = player;\n\t\t\tplayer.touch = true;\n\t\t\ttoggleClass(elements.container, player.config.classNames.isTouch, true);\n\t\t});\n\t\t_defineProperty(this, \"global\", (toggle = true) => {\n\t\t\tconst { player } = this;\n\t\t\tif (player.config.keyboard.global) toggleListener.call(player, window, \"keydown keyup\", this.handleKey, toggle, false);\n\t\t\ttoggleListener.call(player, document.body, \"click\", this.toggleMenu, toggle);\n\t\t\tonce.call(player, document.body, \"touchstart\", this.firstTouch);\n\t\t});\n\t\t_defineProperty(this, \"container\", () => {\n\t\t\tconst { player } = this;\n\t\t\tconst { config, elements, timers } = player;\n\t\t\tif (!config.keyboard.global && config.keyboard.focused) on.call(player, elements.container, \"keydown keyup\", this.handleKey, false);\n\t\t\ton.call(player, elements.container, \"mousemove mouseleave touchstart touchmove enterfullscreen exitfullscreen\", (event) => {\n\t\t\t\tconst { controls: controlsElement } = elements;\n\t\t\t\tif (controlsElement && event.type === \"enterfullscreen\") {\n\t\t\t\t\tcontrolsElement.pressed = false;\n\t\t\t\t\tcontrolsElement.hover = false;\n\t\t\t\t}\n\t\t\t\tconst show = [\n\t\t\t\t\t\"touchstart\",\n\t\t\t\t\t\"touchmove\",\n\t\t\t\t\t\"mousemove\"\n\t\t\t\t].includes(event.type);\n\t\t\t\tlet delay = 0;\n\t\t\t\tif (show) {\n\t\t\t\t\tui.toggleControls.call(player, true);\n\t\t\t\t\tdelay = player.touch ? 3e3 : 2e3;\n\t\t\t\t}\n\t\t\t\tclearTimeout(timers.controls);\n\t\t\t\ttimers.controls = setTimeout(() => ui.toggleControls.call(player, false), delay);\n\t\t\t});\n\t\t\tconst setGutter = () => {\n\t\t\t\tif (!player.isVimeo || player.config.vimeo.premium) return;\n\t\t\t\tconst target = elements.wrapper;\n\t\t\t\tconst { active } = player.fullscreen;\n\t\t\t\tconst [videoWidth, videoHeight] = getAspectRatio.call(player);\n\t\t\t\tconst useNativeAspectRatio = supportsCSS(`aspect-ratio: ${videoWidth} / ${videoHeight}`);\n\t\t\t\tif (!active) {\n\t\t\t\t\tif (useNativeAspectRatio) {\n\t\t\t\t\t\ttarget.style.width = null;\n\t\t\t\t\t\ttarget.style.height = null;\n\t\t\t\t\t} else {\n\t\t\t\t\t\ttarget.style.maxWidth = null;\n\t\t\t\t\t\ttarget.style.margin = null;\n\t\t\t\t\t}\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tconst [viewportWidth, viewportHeight] = getViewportSize();\n\t\t\t\tconst overflow = viewportWidth / viewportHeight > videoWidth / videoHeight;\n\t\t\t\tif (useNativeAspectRatio) {\n\t\t\t\t\ttarget.style.width = overflow ? \"auto\" : \"100%\";\n\t\t\t\t\ttarget.style.height = overflow ? \"100%\" : \"auto\";\n\t\t\t\t} else {\n\t\t\t\t\ttarget.style.maxWidth = overflow ? `${viewportHeight / videoHeight * videoWidth}px` : null;\n\t\t\t\t\ttarget.style.margin = overflow ? \"0 auto\" : null;\n\t\t\t\t}\n\t\t\t};\n\t\t\tconst resized = () => {\n\t\t\t\tclearTimeout(timers.resized);\n\t\t\t\ttimers.resized = setTimeout(setGutter, 50);\n\t\t\t};\n\t\t\ton.call(player, elements.container, \"enterfullscreen exitfullscreen\", (event) => {\n\t\t\t\tconst { target } = player.fullscreen;\n\t\t\t\tif (target !== elements.container) return;\n\t\t\t\tif (!player.isEmbed && is_default.empty(player.config.ratio)) return;\n\t\t\t\tsetGutter();\n\t\t\t\t(event.type === \"enterfullscreen\" ? on : off).call(player, window, \"resize\", resized);\n\t\t\t});\n\t\t});\n\t\t_defineProperty(this, \"media\", () => {\n\t\t\tconst { player } = this;\n\t\t\tconst { elements } = player;\n\t\t\ton.call(player, player.media, \"timeupdate seeking seeked\", (event) => controls.timeUpdate.call(player, event));\n\t\t\ton.call(player, player.media, \"durationchange loadeddata loadedmetadata\", (event) => controls.durationUpdate.call(player, event));\n\t\t\ton.call(player, player.media, \"ended\", () => {\n\t\t\t\tif (player.isHTML5 && player.isVideo && player.config.resetOnEnd) {\n\t\t\t\t\tplayer.restart();\n\t\t\t\t\tplayer.pause();\n\t\t\t\t}\n\t\t\t});\n\t\t\ton.call(player, player.media, \"progress playing seeking seeked\", (event) => controls.updateProgress.call(player, event));\n\t\t\ton.call(player, player.media, \"volumechange\", (event) => controls.updateVolume.call(player, event));\n\t\t\ton.call(player, player.media, \"playing play pause ended emptied timeupdate\", (event) => ui.checkPlaying.call(player, event));\n\t\t\ton.call(player, player.media, \"waiting canplay seeked playing\", (event) => ui.checkLoading.call(player, event));\n\t\t\tif (player.supported.ui && player.config.clickToPlay && !player.isAudio) {\n\t\t\t\tconst wrapper = getElement.call(player, `.${player.config.classNames.video}`);\n\t\t\t\tif (!is_default.element(wrapper)) return;\n\t\t\t\ton.call(player, elements.container, \"click\", (event) => {\n\t\t\t\t\tif (![elements.container, wrapper].includes(event.target) && !wrapper.contains(event.target)) return;\n\t\t\t\t\tif (player.touch && player.config.hideControls) return;\n\t\t\t\t\tif (player.ended) {\n\t\t\t\t\t\tthis.proxy(event, player.restart, \"restart\");\n\t\t\t\t\t\tthis.proxy(event, () => {\n\t\t\t\t\t\t\tsilencePromise(player.play());\n\t\t\t\t\t\t}, \"play\");\n\t\t\t\t\t} else this.proxy(event, () => {\n\t\t\t\t\t\tsilencePromise(player.togglePlay());\n\t\t\t\t\t}, \"play\");\n\t\t\t\t});\n\t\t\t}\n\t\t\tif (player.supported.ui && player.config.disableContextMenu) on.call(player, elements.wrapper, \"contextmenu\", (event) => {\n\t\t\t\tevent.preventDefault();\n\t\t\t}, false);\n\t\t\ton.call(player, player.media, \"volumechange\", () => {\n\t\t\t\tplayer.storage.set({\n\t\t\t\t\tvolume: player.volume,\n\t\t\t\t\tmuted: player.muted\n\t\t\t\t});\n\t\t\t});\n\t\t\ton.call(player, player.media, \"ratechange\", () => {\n\t\t\t\tcontrols.updateSetting.call(player, \"speed\");\n\t\t\t\tplayer.storage.set({ speed: player.speed });\n\t\t\t});\n\t\t\ton.call(player, player.media, \"qualitychange\", (event) => {\n\t\t\t\tcontrols.updateSetting.call(player, \"quality\", null, event.detail.quality);\n\t\t\t});\n\t\t\ton.call(player, player.media, \"ready qualitychange\", () => {\n\t\t\t\tcontrols.setDownloadUrl.call(player);\n\t\t\t});\n\t\t\tconst proxyEvents = player.config.events.concat([\"keyup\", \"keydown\"]).join(\" \");\n\t\t\ton.call(player, player.media, proxyEvents, (event) => {\n\t\t\t\tlet { detail = {} } = event;\n\t\t\t\tif (event.type === \"error\") detail = player.media.error;\n\t\t\t\ttriggerEvent.call(player, elements.container, event.type, true, detail);\n\t\t\t});\n\t\t});\n\t\t_defineProperty(this, \"proxy\", (event, defaultHandler, customHandlerKey) => {\n\t\t\tconst { player } = this;\n\t\t\tconst customHandler = player.config.listeners[customHandlerKey];\n\t\t\tconst hasCustomHandler = is_default.function(customHandler);\n\t\t\tlet returned = true;\n\t\t\tif (hasCustomHandler) returned = customHandler.call(player, event);\n\t\t\tif (returned !== false && is_default.function(defaultHandler)) defaultHandler.call(player, event);\n\t\t});\n\t\t_defineProperty(this, \"bind\", (element, type, defaultHandler, customHandlerKey, passive = true) => {\n\t\t\tconst { player } = this;\n\t\t\tconst customHandler = player.config.listeners[customHandlerKey];\n\t\t\tconst hasCustomHandler = is_default.function(customHandler);\n\t\t\ton.call(player, element, type, (event) => this.proxy(event, defaultHandler, customHandlerKey), passive && !hasCustomHandler);\n\t\t});\n\t\t_defineProperty(this, \"controls\", () => {\n\t\t\tconst { player } = this;\n\t\t\tconst { elements } = player;\n\t\t\tconst inputEvent = browser_default.isIE ? \"change\" : \"input\";\n\t\t\tif (elements.buttons.play) Array.from(elements.buttons.play).forEach((button) => {\n\t\t\t\tthis.bind(button, \"click\", () => {\n\t\t\t\t\tsilencePromise(player.togglePlay());\n\t\t\t\t}, \"play\");\n\t\t\t});\n\t\t\tthis.bind(elements.buttons.restart, \"click\", player.restart, \"restart\");\n\t\t\tthis.bind(elements.buttons.rewind, \"click\", () => {\n\t\t\t\tplayer.lastSeekTime = Date.now();\n\t\t\t\tplayer.rewind();\n\t\t\t}, \"rewind\");\n\t\t\tthis.bind(elements.buttons.fastForward, \"click\", () => {\n\t\t\t\tplayer.lastSeekTime = Date.now();\n\t\t\t\tplayer.forward();\n\t\t\t}, \"fastForward\");\n\t\t\tthis.bind(elements.buttons.mute, \"click\", () => {\n\t\t\t\ttoggleMuted(player);\n\t\t\t}, \"mute\");\n\t\t\tthis.bind(elements.buttons.captions, \"click\", () => player.toggleCaptions());\n\t\t\tthis.bind(elements.buttons.download, \"click\", () => {\n\t\t\t\ttriggerEvent.call(player, player.media, \"download\");\n\t\t\t}, \"download\");\n\t\t\tthis.bind(elements.buttons.fullscreen, \"click\", () => {\n\t\t\t\tplayer.fullscreen.toggle();\n\t\t\t}, \"fullscreen\");\n\t\t\tthis.bind(elements.buttons.pip, \"click\", () => {\n\t\t\t\tplayer.pip = \"toggle\";\n\t\t\t}, \"pip\");\n\t\t\tthis.bind(elements.buttons.airplay, \"click\", player.airplay, \"airplay\");\n\t\t\tthis.bind(elements.buttons.settings, \"click\", (event) => {\n\t\t\t\tevent.stopPropagation();\n\t\t\t\tevent.preventDefault();\n\t\t\t\tcontrols.toggleMenu.call(player, event);\n\t\t\t}, null, false);\n\t\t\tthis.bind(elements.buttons.settings, \"keyup\", (event) => {\n\t\t\t\tif (![\" \", \"Enter\"].includes(event.key)) return;\n\t\t\t\tif (event.key === \"Enter\") {\n\t\t\t\t\tcontrols.focusFirstMenuItem.call(player, null, true);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tevent.preventDefault();\n\t\t\t\tevent.stopPropagation();\n\t\t\t\tcontrols.toggleMenu.call(player, event);\n\t\t\t}, null, false);\n\t\t\tthis.bind(elements.settings.menu, \"keydown\", (event) => {\n\t\t\t\tif (event.key === \"Escape\") controls.toggleMenu.call(player, event);\n\t\t\t});\n\t\t\tthis.bind(elements.inputs.seek, \"mousedown mousemove\", (event) => {\n\t\t\t\tconst rect = elements.progress.getBoundingClientRect();\n\t\t\t\tconst scrollLeft = event.pageX - event.clientX;\n\t\t\t\tconst percent = 100 / rect.width * (event.pageX - rect.left - scrollLeft);\n\t\t\t\tevent.currentTarget.setAttribute(\"seek-value\", percent);\n\t\t\t});\n\t\t\tthis.bind(elements.inputs.seek, \"mousedown mouseup keydown keyup touchstart touchend\", (event) => {\n\t\t\t\tconst seek = event.currentTarget;\n\t\t\t\tconst attribute = \"play-on-seeked\";\n\t\t\t\tif (is_default.keyboardEvent(event) && ![\"ArrowLeft\", \"ArrowRight\"].includes(event.key)) return;\n\t\t\t\tplayer.lastSeekTime = Date.now();\n\t\t\t\tconst play = seek.hasAttribute(attribute);\n\t\t\t\tconst done = [\n\t\t\t\t\t\"mouseup\",\n\t\t\t\t\t\"touchend\",\n\t\t\t\t\t\"keyup\"\n\t\t\t\t].includes(event.type);\n\t\t\t\tif (play && done) {\n\t\t\t\t\tseek.removeAttribute(attribute);\n\t\t\t\t\tsilencePromise(player.play());\n\t\t\t\t} else if (!done && player.playing) {\n\t\t\t\t\tseek.setAttribute(attribute, \"\");\n\t\t\t\t\tplayer.pause();\n\t\t\t\t}\n\t\t\t});\n\t\t\tif (browser_default.isIos) {\n\t\t\t\tconst inputs = getElements.call(player, \"input[type=\\\"range\\\"]\");\n\t\t\t\tArray.from(inputs).forEach((input) => this.bind(input, inputEvent, (event) => repaint(event.target)));\n\t\t\t}\n\t\t\tthis.bind(elements.inputs.seek, inputEvent, (event) => {\n\t\t\t\tconst seek = event.currentTarget;\n\t\t\t\tlet seekTo = seek.getAttribute(\"seek-value\");\n\t\t\t\tif (is_default.empty(seekTo)) seekTo = seek.value;\n\t\t\t\tseek.removeAttribute(\"seek-value\");\n\t\t\t\tplayer.currentTime = seekTo / seek.max * player.duration;\n\t\t\t}, \"seek\");\n\t\t\tthis.bind(elements.progress, \"mouseenter mouseleave mousemove\", (event) => controls.updateSeekTooltip.call(player, event));\n\t\t\tthis.bind(elements.progress, \"mousemove touchmove\", (event) => {\n\t\t\t\tconst { previewThumbnails } = player;\n\t\t\t\tif (previewThumbnails && previewThumbnails.loaded) previewThumbnails.startMove(event);\n\t\t\t});\n\t\t\tthis.bind(elements.progress, \"mouseleave touchend click\", () => {\n\t\t\t\tconst { previewThumbnails } = player;\n\t\t\t\tif (previewThumbnails && previewThumbnails.loaded) previewThumbnails.endMove(false, true);\n\t\t\t});\n\t\t\tthis.bind(elements.progress, \"mousedown touchstart\", (event) => {\n\t\t\t\tconst { previewThumbnails } = player;\n\t\t\t\tif (previewThumbnails && previewThumbnails.loaded) previewThumbnails.startScrubbing(event);\n\t\t\t});\n\t\t\tthis.bind(elements.progress, \"mouseup touchend\", (event) => {\n\t\t\t\tconst { previewThumbnails } = player;\n\t\t\t\tif (previewThumbnails && previewThumbnails.loaded) previewThumbnails.endScrubbing(event);\n\t\t\t});\n\t\t\tif (browser_default.isWebKit) Array.from(getElements.call(player, \"input[type=\\\"range\\\"]\")).forEach((element) => {\n\t\t\t\tthis.bind(element, \"input\", (event) => controls.updateRangeFill.call(player, event.target));\n\t\t\t});\n\t\t\tif (player.config.toggleInvert && !is_default.element(elements.display.duration)) this.bind(elements.display.currentTime, \"click\", () => {\n\t\t\t\tif (player.currentTime === 0) return;\n\t\t\t\tplayer.config.invertTime = !player.config.invertTime;\n\t\t\t\tcontrols.timeUpdate.call(player);\n\t\t\t});\n\t\t\tthis.bind(elements.inputs.volume, inputEvent, (event) => {\n\t\t\t\tplayer.volume = event.target.value;\n\t\t\t}, \"volume\");\n\t\t\tif (inputEvent !== \"change\") this.bind(elements.inputs.volume, \"change\", (event) => {\n\t\t\t\tconst value = Number(event.target.value);\n\t\t\t\tif (value > 0) player.lastVolume = value;\n\t\t\t});\n\t\t\tthis.bind(elements.controls, \"mouseenter mouseleave\", (event) => {\n\t\t\t\telements.controls.hover = !player.touch && event.type === \"mouseenter\";\n\t\t\t});\n\t\t\tif (elements.fullscreen) Array.from(elements.fullscreen.children).filter((c) => !c.contains(elements.container)).forEach((child) => {\n\t\t\t\tthis.bind(child, \"mouseenter mouseleave\", (event) => {\n\t\t\t\t\tif (elements.controls) elements.controls.hover = !player.touch && event.type === \"mouseenter\";\n\t\t\t\t});\n\t\t\t});\n\t\t\tthis.bind(elements.controls, \"mousedown mouseup touchstart touchend touchcancel\", (event) => {\n\t\t\t\telements.controls.pressed = [\"mousedown\", \"touchstart\"].includes(event.type);\n\t\t\t});\n\t\t\tthis.bind(elements.controls, \"focusin\", () => {\n\t\t\t\tconst { config, timers } = player;\n\t\t\t\ttoggleClass(elements.controls, config.classNames.noTransition, true);\n\t\t\t\tui.toggleControls.call(player, true);\n\t\t\t\tsetTimeout(() => {\n\t\t\t\t\ttoggleClass(elements.controls, config.classNames.noTransition, false);\n\t\t\t\t}, 0);\n\t\t\t\tconst delay = this.touch ? 3e3 : 4e3;\n\t\t\t\tclearTimeout(timers.controls);\n\t\t\t\ttimers.controls = setTimeout(() => ui.toggleControls.call(player, false), delay);\n\t\t\t});\n\t\t\tthis.bind(elements.inputs.volume, \"wheel\", (event) => {\n\t\t\t\tconst inverted = event.webkitDirectionInvertedFromDevice;\n\t\t\t\tconst [x, y] = [event.deltaX, -event.deltaY].map((value) => inverted ? -value : value);\n\t\t\t\tconst direction = Math.sign(Math.abs(x) > Math.abs(y) ? x : y);\n\t\t\t\tplayer.increaseVolume(direction / 50);\n\t\t\t\tconst { volume } = player.media;\n\t\t\t\tif (direction === 1 && volume < 1 || direction === -1 && volume > 0) event.preventDefault();\n\t\t\t}, \"volume\", false);\n\t\t});\n\t\tthis.player = player;\n\t\tthis.lastKey = null;\n\t\tthis.focusTimer = null;\n\t\tthis.lastKeyDown = null;\n\t\tthis.handleKey = this.handleKey.bind(this);\n\t\tthis.toggleMenu = this.toggleMenu.bind(this);\n\t\tthis.firstTouch = this.firstTouch.bind(this);\n\t}\n\thandleKey(event) {\n\t\tconst { player } = this;\n\t\tconst { elements } = player;\n\t\tconst { key, type, altKey, ctrlKey, metaKey, shiftKey } = event;\n\t\tconst pressed = type === \"keydown\";\n\t\tconst repeat = pressed && key === this.lastKey;\n\t\tif (altKey || ctrlKey || metaKey || shiftKey) return;\n\t\tif (!key) return;\n\t\tconst seekByIncrement = (increment) => {\n\t\t\tplayer.currentTime = player.duration / 10 * increment;\n\t\t};\n\t\tif (pressed) {\n\t\t\tconst focused = document.activeElement;\n\t\t\tif (is_default.element(focused)) {\n\t\t\t\tconst { editable } = player.config.selectors;\n\t\t\t\tconst { seek } = elements.inputs;\n\t\t\t\tif (focused !== seek && matches(focused, editable)) return;\n\t\t\t\tif (event.key === \" \" && matches(focused, \"button, [role^=\\\"menuitem\\\"]\")) return;\n\t\t\t}\n\t\t\tif ([\n\t\t\t\t\" \",\n\t\t\t\t\"ArrowLeft\",\n\t\t\t\t\"ArrowUp\",\n\t\t\t\t\"ArrowRight\",\n\t\t\t\t\"ArrowDown\",\n\t\t\t\t\"0\",\n\t\t\t\t\"1\",\n\t\t\t\t\"2\",\n\t\t\t\t\"3\",\n\t\t\t\t\"4\",\n\t\t\t\t\"5\",\n\t\t\t\t\"6\",\n\t\t\t\t\"7\",\n\t\t\t\t\"8\",\n\t\t\t\t\"9\",\n\t\t\t\t\"c\",\n\t\t\t\t\"f\",\n\t\t\t\t\"k\",\n\t\t\t\t\"l\",\n\t\t\t\t\"m\"\n\t\t\t].includes(key)) {\n\t\t\t\tevent.preventDefault();\n\t\t\t\tevent.stopPropagation();\n\t\t\t}\n\t\t\tswitch (key) {\n\t\t\t\tcase \"0\":\n\t\t\t\tcase \"1\":\n\t\t\t\tcase \"2\":\n\t\t\t\tcase \"3\":\n\t\t\t\tcase \"4\":\n\t\t\t\tcase \"5\":\n\t\t\t\tcase \"6\":\n\t\t\t\tcase \"7\":\n\t\t\t\tcase \"8\":\n\t\t\t\tcase \"9\":\n\t\t\t\t\tif (!repeat) seekByIncrement(Number.parseInt(key, 10));\n\t\t\t\t\tbreak;\n\t\t\t\tcase \" \":\n\t\t\t\tcase \"k\":\n\t\t\t\t\tif (!repeat) silencePromise(player.togglePlay());\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"ArrowUp\":\n\t\t\t\t\tplayer.increaseVolume(.1);\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"ArrowDown\":\n\t\t\t\t\tplayer.decreaseVolume(.1);\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"m\":\n\t\t\t\t\tif (!repeat) toggleMuted(player);\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"ArrowRight\":\n\t\t\t\t\tplayer.forward();\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"ArrowLeft\":\n\t\t\t\t\tplayer.rewind();\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"f\":\n\t\t\t\t\tplayer.fullscreen.toggle();\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"c\":\n\t\t\t\t\tif (!repeat) player.toggleCaptions();\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"l\": player.loop = !player.loop;\n\t\t\t}\n\t\t\tif (key === \"Escape\" && !player.fullscreen.usingNative && player.fullscreen.active) player.fullscreen.toggle();\n\t\t\tthis.lastKey = key;\n\t\t} else this.lastKey = null;\n\t}\n\ttoggleMenu(event) {\n\t\tcontrols.toggleMenu.call(this.player, event);\n\t}\n};\n//#endregion\n//#region src/js/utils/load-script.js\nvar import_loadjs_umd = /* @__PURE__ */ __toESM((/* @__PURE__ */ __commonJSMin(((exports, module) => {\n\t(function(root, factory) {\n\t\tif (typeof define === \"function\" && define.amd) define([], factory);\n\t\telse if (typeof exports === \"object\") module.exports = factory();\n\t\telse root.loadjs = factory();\n\t})(exports, function() {\n\t\t/**\n\t\t* Global dependencies.\n\t\t* @global {Object} document - DOM\n\t\t*/\n\t\tvar devnull = function() {}, bundleIdCache = {}, bundleResultCache = {}, bundleCallbackQueue = {};\n\t\t/**\n\t\t* Subscribe to bundle load event.\n\t\t* @param {string[]} bundleIds - Bundle ids\n\t\t* @param {Function} callbackFn - The callback function\n\t\t*/\n\t\tfunction subscribe(bundleIds, callbackFn) {\n\t\t\tbundleIds = bundleIds.push ? bundleIds : [bundleIds];\n\t\t\tvar depsNotFound = [], i = bundleIds.length, numWaiting = i, fn = function(bundleId, pathsNotFound) {\n\t\t\t\tif (pathsNotFound.length) depsNotFound.push(bundleId);\n\t\t\t\tnumWaiting--;\n\t\t\t\tif (!numWaiting) callbackFn(depsNotFound);\n\t\t\t}, bundleId, r, q;\n\t\t\twhile (i--) {\n\t\t\t\tbundleId = bundleIds[i];\n\t\t\t\tr = bundleResultCache[bundleId];\n\t\t\t\tif (r) {\n\t\t\t\t\tfn(bundleId, r);\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tq = bundleCallbackQueue[bundleId] = bundleCallbackQueue[bundleId] || [];\n\t\t\t\tq.push(fn);\n\t\t\t}\n\t\t}\n\t\t/**\n\t\t* Publish bundle load event.\n\t\t* @param {string} bundleId - Bundle id\n\t\t* @param {string[]} pathsNotFound - List of files not found\n\t\t*/\n\t\tfunction publish(bundleId, pathsNotFound) {\n\t\t\tif (!bundleId) return;\n\t\t\tvar q = bundleCallbackQueue[bundleId];\n\t\t\tbundleResultCache[bundleId] = pathsNotFound;\n\t\t\tif (!q) return;\n\t\t\twhile (q.length) {\n\t\t\t\tq[0](bundleId, pathsNotFound);\n\t\t\t\tq.splice(0, 1);\n\t\t\t}\n\t\t}\n\t\t/**\n\t\t* Execute callbacks.\n\t\t* @param {Object or Function} args - The callback args\n\t\t* @param {string[]} depsNotFound - List of dependencies not found\n\t\t*/\n\t\tfunction executeCallbacks(args, depsNotFound) {\n\t\t\tif (args.call) args = { success: args };\n\t\t\tif (depsNotFound.length) (args.error || devnull)(depsNotFound);\n\t\t\telse (args.success || devnull)(args);\n\t\t}\n\t\t/**\n\t\t* Load individual file.\n\t\t* @param {string} path - The file path\n\t\t* @param {Function} callbackFn - The callback function\n\t\t*/\n\t\tfunction loadFile(path, callbackFn, args, numTries) {\n\t\t\tvar doc = document, async = args.async, maxTries = (args.numRetries || 0) + 1, beforeCallbackFn = args.before || devnull, pathname = path.replace(/[\\?|#].*$/, \"\"), pathStripped = path.replace(/^(css|img|module|nomodule)!/, \"\"), isLegacyIECss, hasModuleSupport, e;\n\t\t\tnumTries = numTries || 0;\n\t\t\tif (/(^css!|\\.css$)/.test(pathname)) {\n\t\t\t\te = doc.createElement(\"link\");\n\t\t\t\te.rel = \"stylesheet\";\n\t\t\t\te.href = pathStripped;\n\t\t\t\tisLegacyIECss = \"hideFocus\" in e;\n\t\t\t\tif (isLegacyIECss && e.relList) {\n\t\t\t\t\tisLegacyIECss = 0;\n\t\t\t\t\te.rel = \"preload\";\n\t\t\t\t\te.as = \"style\";\n\t\t\t\t}\n\t\t\t} else if (/(^img!|\\.(png|gif|jpg|svg|webp)$)/.test(pathname)) {\n\t\t\t\te = doc.createElement(\"img\");\n\t\t\t\te.src = pathStripped;\n\t\t\t} else {\n\t\t\t\te = doc.createElement(\"script\");\n\t\t\t\te.src = pathStripped;\n\t\t\t\te.async = async === void 0 ? true : async;\n\t\t\t\thasModuleSupport = \"noModule\" in e;\n\t\t\t\tif (/^module!/.test(pathname)) {\n\t\t\t\t\tif (!hasModuleSupport) return callbackFn(path, \"l\");\n\t\t\t\t\te.type = \"module\";\n\t\t\t\t} else if (/^nomodule!/.test(pathname) && hasModuleSupport) return callbackFn(path, \"l\");\n\t\t\t}\n\t\t\te.onload = e.onerror = e.onbeforeload = function(ev) {\n\t\t\t\tvar result = ev.type[0];\n\t\t\t\tif (isLegacyIECss) try {\n\t\t\t\t\tif (!e.sheet.cssText.length) result = \"e\";\n\t\t\t\t} catch (x) {\n\t\t\t\t\tif (x.code != 18) result = \"e\";\n\t\t\t\t}\n\t\t\t\tif (result == \"e\") {\n\t\t\t\t\tnumTries += 1;\n\t\t\t\t\tif (numTries < maxTries) return loadFile(path, callbackFn, args, numTries);\n\t\t\t\t} else if (e.rel == \"preload\" && e.as == \"style\") return e.rel = \"stylesheet\";\n\t\t\t\tcallbackFn(path, result, ev.defaultPrevented);\n\t\t\t};\n\t\t\tif (beforeCallbackFn(path, e) !== false) doc.head.appendChild(e);\n\t\t}\n\t\t/**\n\t\t* Load multiple files.\n\t\t* @param {string[]} paths - The file paths\n\t\t* @param {Function} callbackFn - The callback function\n\t\t*/\n\t\tfunction loadFiles(paths, callbackFn, args) {\n\t\t\tpaths = paths.push ? paths : [paths];\n\t\t\tvar numWaiting = paths.length, x = numWaiting, pathsNotFound = [], fn = function(path, result, defaultPrevented) {\n\t\t\t\tif (result == \"e\") pathsNotFound.push(path);\n\t\t\t\tif (result == \"b\") {\n\t\t\t\t\tif (defaultPrevented) pathsNotFound.push(path);\n\t\t\t\t\telse return;\n\t\t\t\t}\n\t\t\t\tnumWaiting--;\n\t\t\t\tif (!numWaiting) callbackFn(pathsNotFound);\n\t\t\t}, i = 0;\n\t\t\tfor (; i < x; i++) loadFile(paths[i], fn, args);\n\t\t}\n\t\t/**\n\t\t* Initiate script load and register bundle.\n\t\t* @param {(string|string[])} paths - The file paths\n\t\t* @param {(string|Function|Object)} [arg1] - The (1) bundleId or (2) success\n\t\t*   callback or (3) object literal with success/error arguments, numRetries,\n\t\t*   etc.\n\t\t* @param {(Function|Object)} [arg2] - The (1) success callback or (2) object\n\t\t*   literal with success/error arguments, numRetries, etc.\n\t\t*/\n\t\tfunction loadjs(paths, arg1, arg2) {\n\t\t\tvar bundleId, args;\n\t\t\tif (arg1 && arg1.trim) bundleId = arg1;\n\t\t\targs = (bundleId ? arg2 : arg1) || {};\n\t\t\tif (bundleId) {\n\t\t\t\tif (bundleId in bundleIdCache) throw \"LoadJS\";\n\t\t\t\telse bundleIdCache[bundleId] = true;\n\t\t\t}\n\t\t\tfunction loadFn(resolve, reject) {\n\t\t\t\tloadFiles(paths, function(pathsNotFound) {\n\t\t\t\t\texecuteCallbacks(args, pathsNotFound);\n\t\t\t\t\tif (resolve) executeCallbacks({\n\t\t\t\t\t\tsuccess: resolve,\n\t\t\t\t\t\terror: reject\n\t\t\t\t\t}, pathsNotFound);\n\t\t\t\t\tpublish(bundleId, pathsNotFound);\n\t\t\t\t}, args);\n\t\t\t}\n\t\t\tif (args.returnPromise) return new Promise(loadFn);\n\t\t\telse loadFn();\n\t\t}\n\t\t/**\n\t\t* Execute callbacks when dependencies have been satisfied.\n\t\t* @param {(string|string[])} deps - List of bundle ids\n\t\t* @param {Object} args - success/error arguments\n\t\t*/\n\t\tloadjs.ready = function ready(deps, args) {\n\t\t\tsubscribe(deps, function(depsNotFound) {\n\t\t\t\texecuteCallbacks(args, depsNotFound);\n\t\t\t});\n\t\t\treturn loadjs;\n\t\t};\n\t\t/**\n\t\t* Manually satisfy bundle dependencies.\n\t\t* @param {string} bundleId - The bundle id\n\t\t*/\n\t\tloadjs.done = function done(bundleId) {\n\t\t\tpublish(bundleId, []);\n\t\t};\n\t\t/**\n\t\t* Reset loadjs dependencies statuses\n\t\t*/\n\t\tloadjs.reset = function reset() {\n\t\t\tbundleIdCache = {};\n\t\t\tbundleResultCache = {};\n\t\t\tbundleCallbackQueue = {};\n\t\t};\n\t\t/**\n\t\t* Determine if bundle has already been defined\n\t\t* @param String} bundleId - The bundle id\n\t\t*/\n\t\tloadjs.isDefined = function isDefined(bundleId) {\n\t\t\treturn bundleId in bundleIdCache;\n\t\t};\n\t\treturn loadjs;\n\t});\n})))(), 1);\nfunction loadScript(url) {\n\treturn new Promise((resolve, reject) => {\n\t\t(0, import_loadjs_umd.default)(url, {\n\t\t\tsuccess: resolve,\n\t\t\terror: reject\n\t\t});\n\t});\n}\n//#endregion\n//#region src/js/plugins/vimeo.js\nfunction parseId$1(url) {\n\tif (is_default.empty(url)) return null;\n\tif (is_default.number(Number(url))) return url;\n\tconst match = url.match(/^.*(vimeo.com\\/|video\\/)(\\d+).*/);\n\treturn match ? match[2] : url;\n}\nfunction parseHash(url) {\n\tconst found = url.match(/^.*(vimeo.com\\/|video\\/)(\\d+)(\\?.*h=|\\/)+([\\d,a-f]+)/);\n\treturn found && found.length === 5 ? found[4] : null;\n}\nfunction assurePlaybackState$1(play) {\n\tif (play && !this.embed.hasPlayed) this.embed.hasPlayed = true;\n\tif (this.media.paused === play) {\n\t\tthis.media.paused = !play;\n\t\ttriggerEvent.call(this, this.media, play ? \"play\" : \"pause\");\n\t}\n}\nvar vimeo = {\n\tsetup() {\n\t\tconst player = this;\n\t\ttoggleClass(player.elements.wrapper, player.config.classNames.embed, true);\n\t\tplayer.options.speed = player.config.speed.options;\n\t\tsetAspectRatio.call(player);\n\t\tif (!is_default.object(window.Vimeo)) loadScript(player.config.urls.vimeo.sdk).then(() => {\n\t\t\tvimeo.ready.call(player);\n\t\t}).catch((error) => {\n\t\t\tplayer.debug.warn(\"Vimeo SDK (player.js) failed to load\", error);\n\t\t});\n\t\telse vimeo.ready.call(player);\n\t},\n\tready() {\n\t\tconst player = this;\n\t\tconst config = player.config.vimeo;\n\t\tconst { premium, referrerPolicy, ...frameParams } = config;\n\t\tlet source = player.media.getAttribute(\"src\");\n\t\tlet hash = \"\";\n\t\tif (is_default.empty(source)) {\n\t\t\tsource = player.media.getAttribute(player.config.attributes.embed.id);\n\t\t\thash = player.media.getAttribute(player.config.attributes.embed.hash);\n\t\t} else hash = parseHash(source);\n\t\tconst hashParam = hash ? { h: hash } : {};\n\t\tif (premium) Object.assign(frameParams, {\n\t\t\tcontrols: false,\n\t\t\tsidedock: false\n\t\t});\n\t\tconst params = buildUrlParams({\n\t\t\tloop: player.config.loop.active,\n\t\t\tautoplay: player.autoplay,\n\t\t\tmuted: player.muted,\n\t\t\tgesture: \"media\",\n\t\t\tplaysinline: player.config.playsinline,\n\t\t\t...hashParam,\n\t\t\t...frameParams\n\t\t});\n\t\tconst id = parseId$1(source);\n\t\tconst iframe = createElement(\"iframe\");\n\t\tconst src = format(player.config.urls.vimeo.iframe, id, params);\n\t\tiframe.setAttribute(\"src\", src);\n\t\tiframe.setAttribute(\"allowfullscreen\", \"\");\n\t\tiframe.setAttribute(\"allow\", [\n\t\t\t\"autoplay\",\n\t\t\t\"fullscreen\",\n\t\t\t\"picture-in-picture\",\n\t\t\t\"encrypted-media\",\n\t\t\t\"accelerometer\",\n\t\t\t\"gyroscope\"\n\t\t].join(\"; \"));\n\t\tif (!is_default.empty(referrerPolicy)) iframe.setAttribute(\"referrerPolicy\", referrerPolicy);\n\t\tif (premium || !config.customControls) {\n\t\t\tiframe.setAttribute(\"data-poster\", player.poster);\n\t\t\tplayer.media = replaceElement(iframe, player.media);\n\t\t} else {\n\t\t\tconst wrapper = createElement(\"div\", {\n\t\t\t\tclass: player.config.classNames.embedContainer,\n\t\t\t\t\"data-poster\": player.poster\n\t\t\t});\n\t\t\twrapper.appendChild(iframe);\n\t\t\tplayer.media = replaceElement(wrapper, player.media);\n\t\t}\n\t\tif (!config.customControls) fetch(format(player.config.urls.vimeo.api, src)).then((response) => {\n\t\t\tif (is_default.empty(response) || !response.thumbnail_url) return;\n\t\t\tui.setPoster.call(player, response.thumbnail_url).catch(() => {});\n\t\t});\n\t\tplayer.embed = new window.Vimeo.Player(iframe, {\n\t\t\tautopause: player.config.autopause,\n\t\t\tmuted: player.muted\n\t\t});\n\t\tplayer.media.paused = true;\n\t\tplayer.media.currentTime = 0;\n\t\tif (player.supported.ui) player.embed.disableTextTrack();\n\t\tplayer.media.play = () => {\n\t\t\tassurePlaybackState$1.call(player, true);\n\t\t\treturn player.embed.play();\n\t\t};\n\t\tplayer.media.pause = () => {\n\t\t\tassurePlaybackState$1.call(player, false);\n\t\t\treturn player.embed.pause();\n\t\t};\n\t\tplayer.media.stop = () => {\n\t\t\tplayer.pause();\n\t\t\tplayer.currentTime = 0;\n\t\t};\n\t\tlet { currentTime } = player.media;\n\t\tObject.defineProperty(player.media, \"currentTime\", {\n\t\t\tget() {\n\t\t\t\treturn currentTime;\n\t\t\t},\n\t\t\tset(time) {\n\t\t\t\tconst { embed, media, paused, volume } = player;\n\t\t\t\tconst restorePause = paused && !embed.hasPlayed;\n\t\t\t\tmedia.seeking = true;\n\t\t\t\ttriggerEvent.call(player, media, \"seeking\");\n\t\t\t\tPromise.resolve(restorePause && embed.setVolume(0)).then(() => embed.setCurrentTime(time)).then(() => restorePause && embed.pause()).then(() => restorePause && embed.setVolume(volume)).catch(() => {});\n\t\t\t}\n\t\t});\n\t\tlet speed = player.config.speed.selected;\n\t\tObject.defineProperty(player.media, \"playbackRate\", {\n\t\t\tget() {\n\t\t\t\treturn speed;\n\t\t\t},\n\t\t\tset(input) {\n\t\t\t\tplayer.embed.setPlaybackRate(input).then(() => {\n\t\t\t\t\tspeed = input;\n\t\t\t\t\ttriggerEvent.call(player, player.media, \"ratechange\");\n\t\t\t\t}).catch(() => {\n\t\t\t\t\tplayer.options.speed = [1];\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\t\tlet { volume } = player.config;\n\t\tObject.defineProperty(player.media, \"volume\", {\n\t\t\tget() {\n\t\t\t\treturn volume;\n\t\t\t},\n\t\t\tset(input) {\n\t\t\t\tplayer.embed.setVolume(input).then(() => {\n\t\t\t\t\tvolume = input;\n\t\t\t\t\ttriggerEvent.call(player, player.media, \"volumechange\");\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\t\tlet { muted } = player.config;\n\t\tObject.defineProperty(player.media, \"muted\", {\n\t\t\tget() {\n\t\t\t\treturn muted;\n\t\t\t},\n\t\t\tset(input) {\n\t\t\t\tconst toggle = is_default.boolean(input) ? input : false;\n\t\t\t\tplayer.embed.setMuted(toggle ? true : player.config.muted).then(() => {\n\t\t\t\t\tmuted = toggle;\n\t\t\t\t\ttriggerEvent.call(player, player.media, \"volumechange\");\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\t\tlet { loop } = player.config;\n\t\tObject.defineProperty(player.media, \"loop\", {\n\t\t\tget() {\n\t\t\t\treturn loop;\n\t\t\t},\n\t\t\tset(input) {\n\t\t\t\tconst toggle = is_default.boolean(input) ? input : player.config.loop.active;\n\t\t\t\tplayer.embed.setLoop(toggle).then(() => {\n\t\t\t\t\tloop = toggle;\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\t\tlet currentSrc;\n\t\tplayer.embed.getVideoUrl().then((value) => {\n\t\t\tcurrentSrc = value;\n\t\t\tcontrols.setDownloadUrl.call(player);\n\t\t}).catch((error) => {\n\t\t\tthis.debug.warn(error);\n\t\t});\n\t\tObject.defineProperty(player.media, \"currentSrc\", { get() {\n\t\t\treturn currentSrc;\n\t\t} });\n\t\tObject.defineProperty(player.media, \"ended\", { get() {\n\t\t\treturn player.currentTime === player.duration;\n\t\t} });\n\t\tPromise.all([player.embed.getVideoWidth(), player.embed.getVideoHeight()]).then((dimensions) => {\n\t\t\tconst [width, height] = dimensions;\n\t\t\tplayer.embed.ratio = roundAspectRatio(width, height);\n\t\t\tsetAspectRatio.call(this);\n\t\t});\n\t\tplayer.embed.setAutopause(player.config.autopause).then((state) => {\n\t\t\tplayer.config.autopause = state;\n\t\t});\n\t\tplayer.embed.getVideoTitle().then((title) => {\n\t\t\tplayer.config.title = title;\n\t\t\tui.setTitle.call(this);\n\t\t});\n\t\tplayer.embed.getCurrentTime().then((value) => {\n\t\t\tcurrentTime = value;\n\t\t\ttriggerEvent.call(player, player.media, \"timeupdate\");\n\t\t});\n\t\tplayer.embed.getDuration().then((value) => {\n\t\t\tplayer.media.duration = value;\n\t\t\ttriggerEvent.call(player, player.media, \"durationchange\");\n\t\t});\n\t\tplayer.embed.getTextTracks().then((tracks) => {\n\t\t\tplayer.media.textTracks = tracks;\n\t\t\tcaptions.setup.call(player);\n\t\t});\n\t\tplayer.embed.on(\"cuechange\", ({ cues = [] }) => {\n\t\t\tconst strippedCues = cues.map((cue) => stripHTML(cue.text));\n\t\t\tcaptions.updateCues.call(player, strippedCues);\n\t\t});\n\t\tplayer.embed.on(\"loaded\", () => {\n\t\t\tplayer.embed.getPaused().then((paused) => {\n\t\t\t\tassurePlaybackState$1.call(player, !paused);\n\t\t\t\tif (!paused) triggerEvent.call(player, player.media, \"playing\");\n\t\t\t});\n\t\t\tif (is_default.element(player.embed.element) && player.supported.ui) player.embed.element.setAttribute(\"tabindex\", -1);\n\t\t});\n\t\tplayer.embed.on(\"bufferstart\", () => {\n\t\t\ttriggerEvent.call(player, player.media, \"waiting\");\n\t\t});\n\t\tplayer.embed.on(\"bufferend\", () => {\n\t\t\ttriggerEvent.call(player, player.media, \"playing\");\n\t\t});\n\t\tplayer.embed.on(\"play\", () => {\n\t\t\tassurePlaybackState$1.call(player, true);\n\t\t\ttriggerEvent.call(player, player.media, \"playing\");\n\t\t});\n\t\tplayer.embed.on(\"pause\", () => {\n\t\t\tassurePlaybackState$1.call(player, false);\n\t\t});\n\t\tplayer.embed.on(\"timeupdate\", (data) => {\n\t\t\tplayer.media.seeking = false;\n\t\t\tcurrentTime = data.seconds;\n\t\t\ttriggerEvent.call(player, player.media, \"timeupdate\");\n\t\t});\n\t\tplayer.embed.on(\"progress\", (data) => {\n\t\t\tplayer.media.buffered = data.percent;\n\t\t\ttriggerEvent.call(player, player.media, \"progress\");\n\t\t\tif (Number.parseInt(data.percent, 10) === 1) triggerEvent.call(player, player.media, \"canplaythrough\");\n\t\t\tplayer.embed.getDuration().then((value) => {\n\t\t\t\tif (value !== player.media.duration) {\n\t\t\t\t\tplayer.media.duration = value;\n\t\t\t\t\ttriggerEvent.call(player, player.media, \"durationchange\");\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\t\tplayer.embed.on(\"seeked\", () => {\n\t\t\tplayer.media.seeking = false;\n\t\t\ttriggerEvent.call(player, player.media, \"seeked\");\n\t\t});\n\t\tplayer.embed.on(\"ended\", () => {\n\t\t\tplayer.media.paused = true;\n\t\t\ttriggerEvent.call(player, player.media, \"ended\");\n\t\t});\n\t\tplayer.embed.on(\"error\", (detail) => {\n\t\t\tplayer.media.error = detail;\n\t\t\ttriggerEvent.call(player, player.media, \"error\");\n\t\t});\n\t\tif (config.customControls) setTimeout(() => ui.build.call(player), 0);\n\t}\n};\n//#endregion\n//#region src/js/plugins/youtube.js\nfunction parseId(url) {\n\tif (is_default.empty(url)) return null;\n\tconst match = url.match(/^.*(youtu.be\\/|v\\/|u\\/\\w\\/|embed\\/|watch\\?v=|&v=)([^#&?]*).*/);\n\treturn match && match[2] ? match[2] : url;\n}\nfunction assurePlaybackState(play) {\n\tif (play && !this.embed.hasPlayed) this.embed.hasPlayed = true;\n\tif (this.media.paused === play) {\n\t\tthis.media.paused = !play;\n\t\ttriggerEvent.call(this, this.media, play ? \"play\" : \"pause\");\n\t}\n}\nfunction getHost(config) {\n\tif (config.noCookie) return \"https://www.youtube-nocookie.com\";\n\tif (window.location.protocol === \"http:\") return \"http://www.youtube.com\";\n}\nvar youtube = {\n\tsetup() {\n\t\ttoggleClass(this.elements.wrapper, this.config.classNames.embed, true);\n\t\tif (is_default.object(window.YT) && is_default.function(window.YT.Player)) youtube.ready.call(this);\n\t\telse {\n\t\t\tconst callback = window.onYouTubeIframeAPIReady;\n\t\t\twindow.onYouTubeIframeAPIReady = () => {\n\t\t\t\tif (is_default.function(callback)) callback();\n\t\t\t\tyoutube.ready.call(this);\n\t\t\t};\n\t\t\tloadScript(this.config.urls.youtube.sdk).catch((error) => {\n\t\t\t\tthis.debug.warn(\"YouTube API failed to load\", error);\n\t\t\t});\n\t\t}\n\t},\n\tgetTitle(videoId) {\n\t\tfetch(format(this.config.urls.youtube.api, videoId)).then((data) => {\n\t\t\tif (is_default.object(data)) {\n\t\t\t\tconst { title, height, width } = data;\n\t\t\t\tthis.config.title = title;\n\t\t\t\tui.setTitle.call(this);\n\t\t\t\tthis.embed.ratio = roundAspectRatio(width, height);\n\t\t\t}\n\t\t\tsetAspectRatio.call(this);\n\t\t}).catch(() => {\n\t\t\tsetAspectRatio.call(this);\n\t\t});\n\t},\n\tready() {\n\t\tconst player = this;\n\t\tconst config = player.config.youtube;\n\t\tconst currentId = player.media && player.media.getAttribute(\"id\");\n\t\tif (!is_default.empty(currentId) && currentId.startsWith(\"youtube-\")) return;\n\t\tlet source = player.media.getAttribute(\"src\");\n\t\tif (is_default.empty(source)) source = player.media.getAttribute(this.config.attributes.embed.id);\n\t\tconst videoId = parseId(source);\n\t\tplayer.media = replaceElement(createElement(\"div\", {\n\t\t\tid: generateId(player.provider),\n\t\t\t\"data-poster\": config.customControls ? player.poster : void 0\n\t\t}), player.media);\n\t\tif (config.customControls) {\n\t\t\tconst posterSrc = (s) => `https://i.ytimg.com/vi/${videoId}/${s}default.jpg`;\n\t\t\tloadImage(posterSrc(\"maxres\"), 121).catch(() => loadImage(posterSrc(\"sd\"), 121)).catch(() => loadImage(posterSrc(\"hq\"))).then((image) => ui.setPoster.call(player, image.src)).then((src) => {\n\t\t\t\tif (!src.includes(\"maxres\")) player.elements.poster.style.backgroundSize = \"cover\";\n\t\t\t}).catch(() => {});\n\t\t}\n\t\tplayer.embed = new window.YT.Player(player.media, {\n\t\t\tvideoId,\n\t\t\thost: getHost(config),\n\t\t\tplayerVars: extend({}, {\n\t\t\t\tautoplay: player.config.autoplay ? 1 : 0,\n\t\t\t\thl: player.config.hl,\n\t\t\t\tcontrols: player.supported.ui && config.customControls ? 0 : 1,\n\t\t\t\tdisablekb: 1,\n\t\t\t\tplaysinline: player.config.playsinline && !player.config.fullscreen.iosNative ? 1 : 0,\n\t\t\t\tcc_load_policy: player.captions.active ? 1 : 0,\n\t\t\t\tcc_lang_pref: player.config.captions.language,\n\t\t\t\twidget_referrer: window ? window.location.href : null\n\t\t\t}, config),\n\t\t\tevents: {\n\t\t\t\tonError(event) {\n\t\t\t\t\tif (!player.media.error) {\n\t\t\t\t\t\tconst code = event.data;\n\t\t\t\t\t\tconst message = {\n\t\t\t\t\t\t\t2: \"The request contains an invalid parameter value. For example, this error occurs if you specify a video ID that does not have 11 characters, or if the video ID contains invalid characters, such as exclamation points or asterisks.\",\n\t\t\t\t\t\t\t5: \"The requested content cannot be played in an HTML5 player or another error related to the HTML5 player has occurred.\",\n\t\t\t\t\t\t\t100: \"The video requested was not found. This error occurs when a video has been removed (for any reason) or has been marked as private.\",\n\t\t\t\t\t\t\t101: \"The owner of the requested video does not allow it to be played in embedded players.\",\n\t\t\t\t\t\t\t150: \"The owner of the requested video does not allow it to be played in embedded players.\"\n\t\t\t\t\t\t}[code] || \"An unknown error occurred\";\n\t\t\t\t\t\tplayer.media.error = {\n\t\t\t\t\t\t\tcode,\n\t\t\t\t\t\t\tmessage\n\t\t\t\t\t\t};\n\t\t\t\t\t\ttriggerEvent.call(player, player.media, \"error\");\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\tonPlaybackRateChange(event) {\n\t\t\t\t\tconst instance = event.target;\n\t\t\t\t\tplayer.media.playbackRate = instance.getPlaybackRate();\n\t\t\t\t\ttriggerEvent.call(player, player.media, \"ratechange\");\n\t\t\t\t},\n\t\t\t\tonReady(event) {\n\t\t\t\t\tif (is_default.function(player.media.play)) return;\n\t\t\t\t\tconst instance = event.target;\n\t\t\t\t\tyoutube.getTitle.call(player, videoId);\n\t\t\t\t\tplayer.media.play = () => {\n\t\t\t\t\t\tassurePlaybackState.call(player, true);\n\t\t\t\t\t\tinstance.playVideo();\n\t\t\t\t\t};\n\t\t\t\t\tplayer.media.pause = () => {\n\t\t\t\t\t\tassurePlaybackState.call(player, false);\n\t\t\t\t\t\tinstance.pauseVideo();\n\t\t\t\t\t};\n\t\t\t\t\tplayer.media.stop = () => {\n\t\t\t\t\t\tinstance.stopVideo();\n\t\t\t\t\t};\n\t\t\t\t\tplayer.media.duration = instance.getDuration();\n\t\t\t\t\tplayer.media.paused = true;\n\t\t\t\t\tplayer.media.currentTime = 0;\n\t\t\t\t\tObject.defineProperty(player.media, \"currentTime\", {\n\t\t\t\t\t\tget() {\n\t\t\t\t\t\t\treturn Number(instance.getCurrentTime());\n\t\t\t\t\t\t},\n\t\t\t\t\t\tset(time) {\n\t\t\t\t\t\t\tif (player.paused && !player.embed.hasPlayed) player.embed.mute();\n\t\t\t\t\t\t\tplayer.media.seeking = true;\n\t\t\t\t\t\t\ttriggerEvent.call(player, player.media, \"seeking\");\n\t\t\t\t\t\t\tinstance.seekTo(time);\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t\tObject.defineProperty(player.media, \"playbackRate\", {\n\t\t\t\t\t\tget() {\n\t\t\t\t\t\t\treturn instance.getPlaybackRate();\n\t\t\t\t\t\t},\n\t\t\t\t\t\tset(input) {\n\t\t\t\t\t\t\tinstance.setPlaybackRate(input);\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t\tlet { volume } = player.config;\n\t\t\t\t\tObject.defineProperty(player.media, \"volume\", {\n\t\t\t\t\t\tget() {\n\t\t\t\t\t\t\treturn volume;\n\t\t\t\t\t\t},\n\t\t\t\t\t\tset(input) {\n\t\t\t\t\t\t\tvolume = input;\n\t\t\t\t\t\t\tinstance.setVolume(volume * 100);\n\t\t\t\t\t\t\ttriggerEvent.call(player, player.media, \"volumechange\");\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t\tlet { muted } = player.config;\n\t\t\t\t\tObject.defineProperty(player.media, \"muted\", {\n\t\t\t\t\t\tget() {\n\t\t\t\t\t\t\treturn muted;\n\t\t\t\t\t\t},\n\t\t\t\t\t\tset(input) {\n\t\t\t\t\t\t\tconst toggle = is_default.boolean(input) ? input : muted;\n\t\t\t\t\t\t\tmuted = toggle;\n\t\t\t\t\t\t\tinstance[toggle ? \"mute\" : \"unMute\"]();\n\t\t\t\t\t\t\tinstance.setVolume(volume * 100);\n\t\t\t\t\t\t\ttriggerEvent.call(player, player.media, \"volumechange\");\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t\tObject.defineProperty(player.media, \"currentSrc\", { get() {\n\t\t\t\t\t\treturn instance.getVideoUrl();\n\t\t\t\t\t} });\n\t\t\t\t\tObject.defineProperty(player.media, \"ended\", { get() {\n\t\t\t\t\t\treturn player.currentTime === player.duration;\n\t\t\t\t\t} });\n\t\t\t\t\tconst speeds = instance.getAvailablePlaybackRates();\n\t\t\t\t\tplayer.options.speed = speeds.filter((s) => player.config.speed.options.includes(s));\n\t\t\t\t\tif (player.supported.ui && config.customControls) player.media.setAttribute(\"tabindex\", -1);\n\t\t\t\t\ttriggerEvent.call(player, player.media, \"timeupdate\");\n\t\t\t\t\ttriggerEvent.call(player, player.media, \"durationchange\");\n\t\t\t\t\tclearInterval(player.timers.buffering);\n\t\t\t\t\tplayer.timers.buffering = setInterval(() => {\n\t\t\t\t\t\tplayer.media.buffered = instance.getVideoLoadedFraction();\n\t\t\t\t\t\tif (player.media.lastBuffered === null || player.media.lastBuffered < player.media.buffered) triggerEvent.call(player, player.media, \"progress\");\n\t\t\t\t\t\tplayer.media.lastBuffered = player.media.buffered;\n\t\t\t\t\t\tif (player.media.buffered === 1) {\n\t\t\t\t\t\t\tclearInterval(player.timers.buffering);\n\t\t\t\t\t\t\ttriggerEvent.call(player, player.media, \"canplaythrough\");\n\t\t\t\t\t\t}\n\t\t\t\t\t}, 200);\n\t\t\t\t\tif (config.customControls) setTimeout(() => ui.build.call(player), 50);\n\t\t\t\t},\n\t\t\t\tonStateChange(event) {\n\t\t\t\t\tconst instance = event.target;\n\t\t\t\t\tclearInterval(player.timers.playing);\n\t\t\t\t\tif (player.media.seeking && [1, 2].includes(event.data)) {\n\t\t\t\t\t\tplayer.media.seeking = false;\n\t\t\t\t\t\ttriggerEvent.call(player, player.media, \"seeked\");\n\t\t\t\t\t}\n\t\t\t\t\tswitch (event.data) {\n\t\t\t\t\t\tcase -1:\n\t\t\t\t\t\t\ttriggerEvent.call(player, player.media, \"timeupdate\");\n\t\t\t\t\t\t\tplayer.media.buffered = instance.getVideoLoadedFraction();\n\t\t\t\t\t\t\ttriggerEvent.call(player, player.media, \"progress\");\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 0:\n\t\t\t\t\t\t\tassurePlaybackState.call(player, false);\n\t\t\t\t\t\t\tif (player.media.loop) {\n\t\t\t\t\t\t\t\tinstance.stopVideo();\n\t\t\t\t\t\t\t\tinstance.playVideo();\n\t\t\t\t\t\t\t} else triggerEvent.call(player, player.media, \"ended\");\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 1:\n\t\t\t\t\t\t\tif (config.customControls && !player.config.autoplay && player.media.paused && !player.embed.hasPlayed) player.media.pause();\n\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\tassurePlaybackState.call(player, true);\n\t\t\t\t\t\t\t\ttriggerEvent.call(player, player.media, \"playing\");\n\t\t\t\t\t\t\t\tplayer.timers.playing = setInterval(() => {\n\t\t\t\t\t\t\t\t\ttriggerEvent.call(player, player.media, \"timeupdate\");\n\t\t\t\t\t\t\t\t}, 50);\n\t\t\t\t\t\t\t\tif (player.media.duration !== instance.getDuration()) {\n\t\t\t\t\t\t\t\t\tplayer.media.duration = instance.getDuration();\n\t\t\t\t\t\t\t\t\ttriggerEvent.call(player, player.media, \"durationchange\");\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 2:\n\t\t\t\t\t\t\tif (!player.muted) player.embed.unMute();\n\t\t\t\t\t\t\tassurePlaybackState.call(player, false);\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 3: triggerEvent.call(player, player.media, \"waiting\");\n\t\t\t\t\t}\n\t\t\t\t\ttriggerEvent.call(player, player.elements.container, \"statechange\", false, { code: event.data });\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n};\n//#endregion\n//#region src/js/media.js\nvar media = { setup() {\n\tif (!this.media) {\n\t\tthis.debug.warn(\"No media element found!\");\n\t\treturn;\n\t}\n\ttoggleClass(this.elements.container, this.config.classNames.type.replace(\"{0}\", this.type), true);\n\ttoggleClass(this.elements.container, this.config.classNames.provider.replace(\"{0}\", this.provider), true);\n\tif (this.isEmbed) toggleClass(this.elements.container, this.config.classNames.type.replace(\"{0}\", \"video\"), true);\n\tif (this.isVideo) {\n\t\tthis.elements.wrapper = createElement(\"div\", { class: this.config.classNames.video });\n\t\twrap(this.media, this.elements.wrapper);\n\t\tthis.elements.poster = createElement(\"div\", { class: this.config.classNames.poster });\n\t\tthis.elements.wrapper.appendChild(this.elements.poster);\n\t}\n\tif (this.isHTML5) html5.setup.call(this);\n\telse if (this.isYouTube) youtube.setup.call(this);\n\telse if (this.isVimeo) vimeo.setup.call(this);\n} };\n//#endregion\n//#region src/js/plugins/ads.js\nfunction destroy(instance) {\n\tif (instance.manager) instance.manager.destroy();\n\tif (instance.elements.displayContainer) instance.elements.displayContainer.destroy();\n\tinstance.elements.container.remove();\n}\nvar Ads = class {\n\t/**\n\t* Ads constructor.\n\t* @param {object} player\n\t* @return {Ads}\n\t*/\n\tconstructor(player) {\n\t\t_defineProperty(\n\t\t\tthis,\n\t\t\t/**\n\t\t\t* Load the IMA SDK\n\t\t\t*/\n\t\t\t\"load\",\n\t\t\t() => {\n\t\t\t\tif (!this.enabled) return;\n\t\t\t\tif (!is_default.object(window.google) || !is_default.object(window.google.ima)) loadScript(this.player.config.urls.googleIMA.sdk).then(() => {\n\t\t\t\t\tthis.ready();\n\t\t\t\t}).catch(() => {\n\t\t\t\t\tthis.trigger(\"error\", /* @__PURE__ */ new Error(\"Google IMA SDK failed to load\"));\n\t\t\t\t});\n\t\t\t\telse this.ready();\n\t\t\t}\n\t\t);\n\t\t_defineProperty(\n\t\t\tthis,\n\t\t\t/**\n\t\t\t* Get the ads instance ready\n\t\t\t*/\n\t\t\t\"ready\",\n\t\t\t() => {\n\t\t\t\tif (!this.enabled) destroy(this);\n\t\t\t\tthis.startSafetyTimer(12e3, \"ready()\");\n\t\t\t\tthis.managerPromise.then(() => {\n\t\t\t\t\tthis.clearSafetyTimer(\"onAdsManagerLoaded()\");\n\t\t\t\t});\n\t\t\t\tthis.listeners();\n\t\t\t\tthis.setupIMA();\n\t\t\t}\n\t\t);\n\t\t_defineProperty(\n\t\t\tthis,\n\t\t\t/**\n\t\t\t* In order for the SDK to display ads for our video, we need to tell it where to put them,\n\t\t\t* so here we define our ad container. This div is set up to render on top of the video player.\n\t\t\t* Using the code below, we tell the SDK to render ads within that div. We also provide a\n\t\t\t* handle to the content video player - the SDK will poll the current time of our player to\n\t\t\t* properly place mid-rolls. After we create the ad display container, we initialize it. On\n\t\t\t* mobile devices, this initialization is done as the result of a user action.\n\t\t\t*/\n\t\t\t\"setupIMA\",\n\t\t\t() => {\n\t\t\t\tthis.elements.container = createElement(\"div\", { class: this.player.config.classNames.ads });\n\t\t\t\tthis.player.elements.container.appendChild(this.elements.container);\n\t\t\t\tgoogle.ima.settings.setVpaidMode(google.ima.ImaSdkSettings.VpaidMode.ENABLED);\n\t\t\t\tgoogle.ima.settings.setLocale(this.player.config.ads.language);\n\t\t\t\tgoogle.ima.settings.setDisableCustomPlaybackForIOS10Plus(this.player.config.playsinline);\n\t\t\t\tthis.elements.displayContainer = new google.ima.AdDisplayContainer(this.elements.container, this.player.media);\n\t\t\t\tthis.loader = new google.ima.AdsLoader(this.elements.displayContainer);\n\t\t\t\tthis.loader.addEventListener(google.ima.AdsManagerLoadedEvent.Type.ADS_MANAGER_LOADED, (event) => this.onAdsManagerLoaded(event), false);\n\t\t\t\tthis.loader.addEventListener(google.ima.AdErrorEvent.Type.AD_ERROR, (error) => this.onAdError(error), false);\n\t\t\t\tthis.requestAds();\n\t\t\t}\n\t\t);\n\t\t_defineProperty(\n\t\t\tthis,\n\t\t\t/**\n\t\t\t* Request advertisements\n\t\t\t*/\n\t\t\t\"requestAds\",\n\t\t\t() => {\n\t\t\t\tconst { container } = this.player.elements;\n\t\t\t\ttry {\n\t\t\t\t\tconst request = new google.ima.AdsRequest();\n\t\t\t\t\trequest.adTagUrl = this.tagUrl;\n\t\t\t\t\trequest.linearAdSlotWidth = container.offsetWidth;\n\t\t\t\t\trequest.linearAdSlotHeight = container.offsetHeight;\n\t\t\t\t\trequest.nonLinearAdSlotWidth = container.offsetWidth;\n\t\t\t\t\trequest.nonLinearAdSlotHeight = container.offsetHeight;\n\t\t\t\t\trequest.forceNonLinearFullSlot = false;\n\t\t\t\t\trequest.setAdWillPlayMuted(!this.player.muted);\n\t\t\t\t\tthis.loader.requestAds(request);\n\t\t\t\t} catch (error) {\n\t\t\t\t\tthis.onAdError(error);\n\t\t\t\t}\n\t\t\t}\n\t\t);\n\t\t_defineProperty(\n\t\t\tthis,\n\t\t\t/**\n\t\t\t* Update the ad countdown\n\t\t\t* @param {boolean} start\n\t\t\t*/\n\t\t\t\"pollCountdown\",\n\t\t\t(start = false) => {\n\t\t\t\tif (!start) {\n\t\t\t\t\tclearInterval(this.countdownTimer);\n\t\t\t\t\tthis.elements.container.removeAttribute(\"data-badge-text\");\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tconst update = () => {\n\t\t\t\t\tconst time = formatTime(Math.max(this.manager.getRemainingTime(), 0));\n\t\t\t\t\tconst label = `${i18n.get(\"advertisement\", this.player.config)} - ${time}`;\n\t\t\t\t\tthis.elements.container.setAttribute(\"data-badge-text\", label);\n\t\t\t\t};\n\t\t\t\tthis.countdownTimer = setInterval(update, 100);\n\t\t\t}\n\t\t);\n\t\t_defineProperty(\n\t\t\tthis,\n\t\t\t/**\n\t\t\t* This method is called whenever the ads are ready inside the AdDisplayContainer\n\t\t\t* @param {Event} event - adsManagerLoadedEvent\n\t\t\t*/\n\t\t\t\"onAdsManagerLoaded\",\n\t\t\t(event) => {\n\t\t\t\tif (!this.enabled) return;\n\t\t\t\tconst settings = new google.ima.AdsRenderingSettings();\n\t\t\t\tsettings.restoreCustomPlaybackStateOnAdBreakComplete = true;\n\t\t\t\tsettings.enablePreloading = true;\n\t\t\t\tthis.manager = event.getAdsManager(this.player, settings);\n\t\t\t\tthis.cuePoints = this.manager.getCuePoints();\n\t\t\t\tthis.manager.addEventListener(google.ima.AdErrorEvent.Type.AD_ERROR, (error) => this.onAdError(error));\n\t\t\t\tObject.keys(google.ima.AdEvent.Type).forEach((type) => {\n\t\t\t\t\tthis.manager.addEventListener(google.ima.AdEvent.Type[type], (e) => this.onAdEvent(e));\n\t\t\t\t});\n\t\t\t\tthis.trigger(\"loaded\");\n\t\t\t}\n\t\t);\n\t\t_defineProperty(this, \"addCuePoints\", () => {\n\t\t\tif (!is_default.empty(this.cuePoints)) this.cuePoints.forEach((cuePoint) => {\n\t\t\t\tif (cuePoint !== 0 && cuePoint !== -1 && cuePoint < this.player.duration) {\n\t\t\t\t\tconst seekElement = this.player.elements.progress;\n\t\t\t\t\tif (is_default.element(seekElement)) {\n\t\t\t\t\t\tconst cuePercentage = 100 / this.player.duration * cuePoint;\n\t\t\t\t\t\tconst cue = createElement(\"span\", { class: this.player.config.classNames.cues });\n\t\t\t\t\t\tcue.style.left = `${cuePercentage.toString()}%`;\n\t\t\t\t\t\tseekElement.appendChild(cue);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\t\t_defineProperty(\n\t\t\tthis,\n\t\t\t/**\n\t\t\t* This is where all the event handling takes place. Retrieve the ad from the event. Some\n\t\t\t* events (e.g. ALL_ADS_COMPLETED) don't have the ad object associated\n\t\t\t* https://developers.google.com/interactive-media-ads/docs/sdks/html5/v3/apis#ima.AdEvent.Type\n\t\t\t* @param {Event} event\n\t\t\t*/\n\t\t\t\"onAdEvent\",\n\t\t\t(event) => {\n\t\t\t\tconst { container } = this.player.elements;\n\t\t\t\tconst ad = event.getAd();\n\t\t\t\tconst adData = event.getAdData();\n\t\t\t\tconst dispatchEvent = (type) => {\n\t\t\t\t\ttriggerEvent.call(this.player, this.player.media, `ads${type.replace(/_/g, \"\").toLowerCase()}`);\n\t\t\t\t};\n\t\t\t\tdispatchEvent(event.type);\n\t\t\t\tswitch (event.type) {\n\t\t\t\t\tcase google.ima.AdEvent.Type.LOADED:\n\t\t\t\t\t\tthis.trigger(\"loaded\");\n\t\t\t\t\t\tthis.pollCountdown(true);\n\t\t\t\t\t\tif (!ad.isLinear()) {\n\t\t\t\t\t\t\tad.width = container.offsetWidth;\n\t\t\t\t\t\t\tad.height = container.offsetHeight;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase google.ima.AdEvent.Type.STARTED:\n\t\t\t\t\t\tthis.manager.setVolume(this.player.volume);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase google.ima.AdEvent.Type.ALL_ADS_COMPLETED:\n\t\t\t\t\t\tif (this.player.ended) this.loadAds();\n\t\t\t\t\t\telse this.loader.contentComplete();\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase google.ima.AdEvent.Type.CONTENT_PAUSE_REQUESTED:\n\t\t\t\t\t\tthis.pauseContent();\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase google.ima.AdEvent.Type.CONTENT_RESUME_REQUESTED:\n\t\t\t\t\t\tthis.pollCountdown();\n\t\t\t\t\t\tthis.resumeContent();\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase google.ima.AdEvent.Type.LOG: if (adData.adError) this.player.debug.warn(`Non-fatal ad error: ${adData.adError.getMessage()}`);\n\t\t\t\t}\n\t\t\t}\n\t\t);\n\t\t_defineProperty(\n\t\t\tthis,\n\t\t\t/**\n\t\t\t* Any ad error handling comes through here\n\t\t\t* @param {Event} event\n\t\t\t*/\n\t\t\t\"onAdError\",\n\t\t\t(event) => {\n\t\t\t\tthis.cancel();\n\t\t\t\tthis.player.debug.warn(\"Ads error\", event);\n\t\t\t}\n\t\t);\n\t\t_defineProperty(\n\t\t\tthis,\n\t\t\t/**\n\t\t\t* Setup hooks for Plyr and window events. This ensures\n\t\t\t* the mid- and post-roll launch at the correct time. And\n\t\t\t* resize the advertisement when the player resizes\n\t\t\t*/\n\t\t\t\"listeners\",\n\t\t\t() => {\n\t\t\t\tconst { container } = this.player.elements;\n\t\t\t\tlet time;\n\t\t\t\tthis.player.on(\"canplay\", () => {\n\t\t\t\t\tthis.addCuePoints();\n\t\t\t\t});\n\t\t\t\tthis.player.on(\"ended\", () => {\n\t\t\t\t\tthis.loader.contentComplete();\n\t\t\t\t});\n\t\t\t\tthis.player.on(\"timeupdate\", () => {\n\t\t\t\t\ttime = this.player.currentTime;\n\t\t\t\t});\n\t\t\t\tthis.player.on(\"seeked\", () => {\n\t\t\t\t\tconst seekedTime = this.player.currentTime;\n\t\t\t\t\tif (is_default.empty(this.cuePoints)) return;\n\t\t\t\t\tthis.cuePoints.forEach((cuePoint, index) => {\n\t\t\t\t\t\tif (time < cuePoint && cuePoint < seekedTime) {\n\t\t\t\t\t\t\tthis.manager.discardAdBreak();\n\t\t\t\t\t\t\tthis.cuePoints.splice(index, 1);\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t\twindow.addEventListener(\"resize\", () => {\n\t\t\t\t\tif (this.manager) this.manager.resize(container.offsetWidth, container.offsetHeight, google.ima.ViewMode.NORMAL);\n\t\t\t\t});\n\t\t\t}\n\t\t);\n\t\t_defineProperty(\n\t\t\tthis,\n\t\t\t/**\n\t\t\t* Initialize the adsManager and start playing advertisements\n\t\t\t*/\n\t\t\t\"play\",\n\t\t\t() => {\n\t\t\t\tconst { container } = this.player.elements;\n\t\t\t\tif (!this.managerPromise) this.resumeContent();\n\t\t\t\tthis.managerPromise.then(() => {\n\t\t\t\t\tthis.manager.setVolume(this.player.volume);\n\t\t\t\t\tthis.elements.displayContainer.initialize();\n\t\t\t\t\ttry {\n\t\t\t\t\t\tif (!this.initialized) {\n\t\t\t\t\t\t\tthis.manager.init(container.offsetWidth, container.offsetHeight, google.ima.ViewMode.NORMAL);\n\t\t\t\t\t\t\tthis.manager.start();\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis.initialized = true;\n\t\t\t\t\t} catch (adError) {\n\t\t\t\t\t\tthis.onAdError(adError);\n\t\t\t\t\t}\n\t\t\t\t}).catch(() => {});\n\t\t\t}\n\t\t);\n\t\t_defineProperty(\n\t\t\tthis,\n\t\t\t/**\n\t\t\t* Resume our video\n\t\t\t*/\n\t\t\t\"resumeContent\",\n\t\t\t() => {\n\t\t\t\tthis.elements.container.style.zIndex = \"\";\n\t\t\t\tthis.playing = false;\n\t\t\t\tsilencePromise(this.player.media.play());\n\t\t\t}\n\t\t);\n\t\t_defineProperty(\n\t\t\tthis,\n\t\t\t/**\n\t\t\t* Pause our video\n\t\t\t*/\n\t\t\t\"pauseContent\",\n\t\t\t() => {\n\t\t\t\tthis.elements.container.style.zIndex = 3;\n\t\t\t\tthis.playing = true;\n\t\t\t\tthis.player.media.pause();\n\t\t\t}\n\t\t);\n\t\t_defineProperty(\n\t\t\tthis,\n\t\t\t/**\n\t\t\t* Destroy the adsManager so we can grab new ads after this. If we don't then we're not\n\t\t\t* allowed to call new ads based on google policies, as they interpret this as an accidental\n\t\t\t* video requests. https://developers.google.com/interactive-\n\t\t\t* media-ads/docs/sdks/android/faq#8\n\t\t\t*/\n\t\t\t\"cancel\",\n\t\t\t() => {\n\t\t\t\tif (this.initialized) this.resumeContent();\n\t\t\t\tthis.trigger(\"error\");\n\t\t\t\tthis.loadAds();\n\t\t\t}\n\t\t);\n\t\t_defineProperty(\n\t\t\tthis,\n\t\t\t/**\n\t\t\t* Re-create our adsManager\n\t\t\t*/\n\t\t\t\"loadAds\",\n\t\t\t() => {\n\t\t\t\tthis.managerPromise.then(() => {\n\t\t\t\t\tif (this.manager) this.manager.destroy();\n\t\t\t\t\tthis.managerPromise = new Promise((resolve) => {\n\t\t\t\t\t\tthis.on(\"loaded\", resolve);\n\t\t\t\t\t\tthis.player.debug.log(this.manager);\n\t\t\t\t\t});\n\t\t\t\t\tthis.initialized = false;\n\t\t\t\t\tthis.requestAds();\n\t\t\t\t}).catch(() => {});\n\t\t\t}\n\t\t);\n\t\t_defineProperty(\n\t\t\tthis,\n\t\t\t/**\n\t\t\t* Handles callbacks after an ad event was invoked\n\t\t\t* @param {string} event - Event type\n\t\t\t* @param args\n\t\t\t*/\n\t\t\t\"trigger\",\n\t\t\t(event, ...args) => {\n\t\t\t\tconst handlers = this.events[event];\n\t\t\t\tif (is_default.array(handlers)) handlers.forEach((handler) => {\n\t\t\t\t\tif (is_default.function(handler)) handler.apply(this, args);\n\t\t\t\t});\n\t\t\t}\n\t\t);\n\t\t_defineProperty(\n\t\t\tthis,\n\t\t\t/**\n\t\t\t* Add event listeners\n\t\t\t* @param {string} event - Event type\n\t\t\t* @param {Function} callback - Callback for when event occurs\n\t\t\t* @return {Ads}\n\t\t\t*/\n\t\t\t\"on\",\n\t\t\t(event, callback) => {\n\t\t\t\tif (!is_default.array(this.events[event])) this.events[event] = [];\n\t\t\t\tthis.events[event].push(callback);\n\t\t\t\treturn this;\n\t\t\t}\n\t\t);\n\t\t_defineProperty(\n\t\t\tthis,\n\t\t\t/**\n\t\t\t* Setup a safety timer for when the ad network doesn't respond for whatever reason.\n\t\t\t* The advertisement has 12 seconds to get its things together. We stop this timer when the\n\t\t\t* advertisement is playing, or when a user action is required to start, then we clear the\n\t\t\t* timer on ad ready\n\t\t\t* @param {number} time\n\t\t\t* @param {string} from\n\t\t\t*/\n\t\t\t\"startSafetyTimer\",\n\t\t\t(time, from) => {\n\t\t\t\tthis.player.debug.log(`Safety timer invoked from: ${from}`);\n\t\t\t\tthis.safetyTimer = setTimeout(() => {\n\t\t\t\t\tthis.cancel();\n\t\t\t\t\tthis.clearSafetyTimer(\"startSafetyTimer()\");\n\t\t\t\t}, time);\n\t\t\t}\n\t\t);\n\t\t_defineProperty(\n\t\t\tthis,\n\t\t\t/**\n\t\t\t* Clear our safety timer(s)\n\t\t\t* @param {string} from\n\t\t\t*/\n\t\t\t\"clearSafetyTimer\",\n\t\t\t(from) => {\n\t\t\t\tif (!is_default.nullOrUndefined(this.safetyTimer)) {\n\t\t\t\t\tthis.player.debug.log(`Safety timer cleared from: ${from}`);\n\t\t\t\t\tclearTimeout(this.safetyTimer);\n\t\t\t\t\tthis.safetyTimer = null;\n\t\t\t\t}\n\t\t\t}\n\t\t);\n\t\tthis.player = player;\n\t\tthis.config = player.config.ads;\n\t\tthis.playing = false;\n\t\tthis.initialized = false;\n\t\tthis.elements = {\n\t\t\tcontainer: null,\n\t\t\tdisplayContainer: null\n\t\t};\n\t\tthis.manager = null;\n\t\tthis.loader = null;\n\t\tthis.cuePoints = null;\n\t\tthis.events = {};\n\t\tthis.safetyTimer = null;\n\t\tthis.countdownTimer = null;\n\t\tthis.managerPromise = new Promise((resolve, reject) => {\n\t\t\tthis.on(\"loaded\", resolve);\n\t\t\tthis.on(\"error\", reject);\n\t\t});\n\t\tthis.load();\n\t}\n\tget enabled() {\n\t\tconst { config } = this;\n\t\treturn this.player.isHTML5 && this.player.isVideo && config.enabled && (!is_default.empty(config.publisherId) || is_default.url(config.tagUrl));\n\t}\n\tget tagUrl() {\n\t\tconst { config } = this;\n\t\tif (is_default.url(config.tagUrl)) return config.tagUrl;\n\t\treturn `https://go.aniview.com/api/adserver6/vast/?${buildUrlParams({\n\t\t\tAV_PUBLISHERID: \"58c25bb0073ef448b1087ad6\",\n\t\t\tAV_CHANNELID: \"5a0458dc28a06145e4519d21\",\n\t\t\tAV_URL: window.location.hostname,\n\t\t\tcb: Date.now(),\n\t\t\tAV_WIDTH: 640,\n\t\t\tAV_HEIGHT: 480,\n\t\t\tAV_CDIM2: config.publisherId\n\t\t})}`;\n\t}\n};\n//#endregion\n//#region src/js/utils/numbers.js\n/**\n* Returns a number whose value is limited to the given range.\n*\n* Example: limit the output of this computation to between 0 and 255\n* (x * 255).clamp(0, 255)\n*\n* @param {number} input\n* @param {number} min The lower boundary of the output range\n* @param {number} max The upper boundary of the output range\n* @returns A number within the bounds of min and max\n* @type Number\n*/\nfunction clamp(input = 0, min = 0, max = 255) {\n\treturn Math.min(Math.max(input, min), max);\n}\n//#endregion\n//#region src/js/plugins/preview-thumbnails.js\nfunction parseVtt(vttDataString) {\n\tconst processedList = [];\n\tvttDataString.split(/\\r\\n\\r\\n|\\n\\n|\\r\\r/).forEach((frame) => {\n\t\tconst result = {};\n\t\tframe.split(/\\r\\n|\\n|\\r/).forEach((line) => {\n\t\t\tif (!is_default.number(result.startTime)) {\n\t\t\t\tconst matchTimes = line.match(/(\\d{2})?:?(\\d{2}):(\\d{2}).(\\d{2,3})( ?--> ?)(\\d{2})?:?(\\d{2}):(\\d{2}).(\\d{2,3})/);\n\t\t\t\tif (matchTimes) {\n\t\t\t\t\tresult.startTime = Number(matchTimes[1] || 0) * 60 * 60 + Number(matchTimes[2]) * 60 + Number(matchTimes[3]) + Number(`0.${matchTimes[4]}`);\n\t\t\t\t\tresult.endTime = Number(matchTimes[6] || 0) * 60 * 60 + Number(matchTimes[7]) * 60 + Number(matchTimes[8]) + Number(`0.${matchTimes[9]}`);\n\t\t\t\t}\n\t\t\t} else if (!is_default.empty(line.trim()) && is_default.empty(result.text)) {\n\t\t\t\tconst lineSplit = line.trim().split(\"#xywh=\");\n\t\t\t\t[result.text] = lineSplit;\n\t\t\t\tif (lineSplit[1]) [result.x, result.y, result.w, result.h] = lineSplit[1].split(\",\");\n\t\t\t}\n\t\t});\n\t\tif (result.text) processedList.push(result);\n\t});\n\treturn processedList;\n}\n/**\n* Preview thumbnails for seek hover and scrubbing\n* Seeking: Hover over the seek bar (desktop only): shows a small preview container above the seek bar\n* Scrubbing: Click and drag the seek bar (desktop and mobile): shows the preview image over the entire video, as if the video is scrubbing at very high speed\n*\n* Notes:\n* - Thumbs are set via JS settings on Plyr init, not HTML5 'track' property. Using the track property would be a bit gross, because it doesn't support custom 'kinds'. kind=metadata might be used for something else, and we want to allow multiple thumbnails tracks. Tracks must have a unique combination of 'kind' and 'label'. We would have to do something like kind=metadata,label=thumbnails1 / kind=metadata,label=thumbnails2. Square peg, round hole\n* - VTT info: the image URL is relative to the VTT, not the current document. But if the url starts with a slash, it will naturally be relative to the current domain. https://support.jwplayer.com/articles/how-to-add-preview-thumbnails\n* - This implementation uses multiple separate img elements. Other implementations use background-image on one element. This would be nice and simple, but Firefox and Safari have flickering issues with replacing backgrounds of larger images. It seems that YouTube perhaps only avoids this because they don't have the option for high-res previews (even the fullscreen ones, when mousedown/seeking). Images appear over the top of each other, and previous ones are discarded once the new ones have been rendered\n*/\nfunction fitRatio(ratio, outer) {\n\tconst targetRatio = outer.width / outer.height;\n\tconst result = {};\n\tif (ratio > targetRatio) {\n\t\tresult.width = outer.width;\n\t\tresult.height = 1 / ratio * outer.width;\n\t} else {\n\t\tresult.height = outer.height;\n\t\tresult.width = ratio * outer.height;\n\t}\n\treturn result;\n}\nvar PreviewThumbnails = class {\n\t/**\n\t* PreviewThumbnails constructor.\n\t* @param {Plyr} player\n\t* @return {PreviewThumbnails}\n\t*/\n\tconstructor(player) {\n\t\t_defineProperty(this, \"load\", () => {\n\t\t\tif (this.player.elements.display.seekTooltip) this.player.elements.display.seekTooltip.hidden = this.enabled;\n\t\t\tif (!this.enabled) return;\n\t\t\tthis.getThumbnails().then(() => {\n\t\t\t\tif (!this.enabled) return;\n\t\t\t\tthis.render();\n\t\t\t\tthis.determineContainerAutoSizing();\n\t\t\t\tthis.listeners();\n\t\t\t\tthis.loaded = true;\n\t\t\t});\n\t\t});\n\t\t_defineProperty(this, \"getThumbnails\", () => {\n\t\t\treturn new Promise((resolve) => {\n\t\t\t\tconst { src } = this.player.config.previewThumbnails;\n\t\t\t\tif (is_default.empty(src)) throw new Error(\"Missing previewThumbnails.src config attribute\");\n\t\t\t\tconst sortAndResolve = () => {\n\t\t\t\t\tthis.thumbnails.sort((x, y) => x.height - y.height);\n\t\t\t\t\tthis.player.debug.log(\"Preview thumbnails\", this.thumbnails);\n\t\t\t\t\tresolve();\n\t\t\t\t};\n\t\t\t\tif (is_default.function(src)) src((thumbnails) => {\n\t\t\t\t\tthis.thumbnails = thumbnails;\n\t\t\t\t\tsortAndResolve();\n\t\t\t\t});\n\t\t\t\telse {\n\t\t\t\t\tconst promises = (is_default.string(src) ? [src] : src).map((u) => this.getThumbnail(u));\n\t\t\t\t\tPromise.all(promises).then(sortAndResolve);\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\t\t_defineProperty(this, \"getThumbnail\", (url) => {\n\t\t\treturn new Promise((resolve) => {\n\t\t\t\tfetch(url, void 0, this.player.config.previewThumbnails.withCredentials).then((response) => {\n\t\t\t\t\tconst thumbnail = {\n\t\t\t\t\t\tframes: parseVtt(response),\n\t\t\t\t\t\theight: null,\n\t\t\t\t\t\turlPrefix: \"\"\n\t\t\t\t\t};\n\t\t\t\t\tif (!thumbnail.frames[0].text.startsWith(\"/\") && !thumbnail.frames[0].text.startsWith(\"http://\") && !thumbnail.frames[0].text.startsWith(\"https://\")) thumbnail.urlPrefix = url.substring(0, url.lastIndexOf(\"/\") + 1);\n\t\t\t\t\tconst tempImage = new Image();\n\t\t\t\t\ttempImage.onload = () => {\n\t\t\t\t\t\tthumbnail.height = tempImage.naturalHeight;\n\t\t\t\t\t\tthumbnail.width = tempImage.naturalWidth;\n\t\t\t\t\t\tthis.thumbnails.push(thumbnail);\n\t\t\t\t\t\tresolve();\n\t\t\t\t\t};\n\t\t\t\t\ttempImage.src = thumbnail.urlPrefix + thumbnail.frames[0].text;\n\t\t\t\t});\n\t\t\t});\n\t\t});\n\t\t_defineProperty(this, \"startMove\", (event) => {\n\t\t\tif (!this.loaded) return;\n\t\t\tif (!is_default.event(event) || ![\"touchmove\", \"mousemove\"].includes(event.type)) return;\n\t\t\tif (!this.player.media.duration) return;\n\t\t\tif (event.type === \"touchmove\") this.seekTime = this.player.media.duration * (this.player.elements.inputs.seek.value / 100);\n\t\t\telse {\n\t\t\t\tvar _this$player$config$m;\n\t\t\t\tconst clientRect = this.player.elements.progress.getBoundingClientRect();\n\t\t\t\tconst percentage = 100 / clientRect.width * (event.pageX - clientRect.left);\n\t\t\t\tthis.seekTime = this.player.media.duration * (percentage / 100);\n\t\t\t\tif (this.seekTime < 0) this.seekTime = 0;\n\t\t\t\tif (this.seekTime > this.player.media.duration - 1) this.seekTime = this.player.media.duration - 1;\n\t\t\t\tthis.mousePosX = event.pageX;\n\t\t\t\tthis.elements.thumb.time.textContent = formatTime(this.seekTime);\n\t\t\t\tconst point = (_this$player$config$m = this.player.config.markers) === null || _this$player$config$m === void 0 || (_this$player$config$m = _this$player$config$m.points) === null || _this$player$config$m === void 0 ? void 0 : _this$player$config$m.find(({ time: t }) => t === Math.round(this.seekTime));\n\t\t\t\tif (point) this.elements.thumb.time.insertAdjacentHTML(\"afterbegin\", `${point.label}<br>`);\n\t\t\t}\n\t\t\tthis.showImageAtCurrentTime();\n\t\t});\n\t\t_defineProperty(this, \"endMove\", () => {\n\t\t\tthis.toggleThumbContainer(false, true);\n\t\t});\n\t\t_defineProperty(this, \"startScrubbing\", (event) => {\n\t\t\tif (is_default.nullOrUndefined(event.button) || event.button === false || event.button === 0) {\n\t\t\t\tthis.mouseDown = true;\n\t\t\t\tif (this.player.media.duration) {\n\t\t\t\t\tthis.toggleScrubbingContainer(true);\n\t\t\t\t\tthis.toggleThumbContainer(false, true);\n\t\t\t\t\tthis.showImageAtCurrentTime();\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t\t_defineProperty(this, \"endScrubbing\", () => {\n\t\t\tthis.mouseDown = false;\n\t\t\tif (Math.ceil(this.lastTime) === Math.ceil(this.player.media.currentTime)) this.toggleScrubbingContainer(false);\n\t\t\telse once.call(this.player, this.player.media, \"timeupdate\", () => {\n\t\t\t\tif (!this.mouseDown) this.toggleScrubbingContainer(false);\n\t\t\t});\n\t\t});\n\t\t_defineProperty(\n\t\t\tthis,\n\t\t\t/**\n\t\t\t* Setup hooks for Plyr and window events\n\t\t\t*/\n\t\t\t\"listeners\",\n\t\t\t() => {\n\t\t\t\tthis.player.on(\"play\", () => {\n\t\t\t\t\tthis.toggleThumbContainer(false, true);\n\t\t\t\t});\n\t\t\t\tthis.player.on(\"seeked\", () => {\n\t\t\t\t\tthis.toggleThumbContainer(false);\n\t\t\t\t});\n\t\t\t\tthis.player.on(\"timeupdate\", () => {\n\t\t\t\t\tthis.lastTime = this.player.media.currentTime;\n\t\t\t\t});\n\t\t\t}\n\t\t);\n\t\t_defineProperty(\n\t\t\tthis,\n\t\t\t/**\n\t\t\t* Create HTML elements for image containers\n\t\t\t*/\n\t\t\t\"render\",\n\t\t\t() => {\n\t\t\t\tthis.elements.thumb.container = createElement(\"div\", { class: this.player.config.classNames.previewThumbnails.thumbContainer });\n\t\t\t\tthis.elements.thumb.imageContainer = createElement(\"div\", { class: this.player.config.classNames.previewThumbnails.imageContainer });\n\t\t\t\tthis.elements.thumb.container.appendChild(this.elements.thumb.imageContainer);\n\t\t\t\tconst timeContainer = createElement(\"div\", { class: this.player.config.classNames.previewThumbnails.timeContainer });\n\t\t\t\tthis.elements.thumb.time = createElement(\"span\", {}, \"00:00\");\n\t\t\t\ttimeContainer.appendChild(this.elements.thumb.time);\n\t\t\t\tthis.elements.thumb.imageContainer.appendChild(timeContainer);\n\t\t\t\tif (is_default.element(this.player.elements.progress)) this.player.elements.progress.appendChild(this.elements.thumb.container);\n\t\t\t\tthis.elements.scrubbing.container = createElement(\"div\", { class: this.player.config.classNames.previewThumbnails.scrubbingContainer });\n\t\t\t\tthis.player.elements.wrapper.appendChild(this.elements.scrubbing.container);\n\t\t\t}\n\t\t);\n\t\t_defineProperty(this, \"destroy\", () => {\n\t\t\tif (this.elements.thumb.container) this.elements.thumb.container.remove();\n\t\t\tif (this.elements.scrubbing.container) this.elements.scrubbing.container.remove();\n\t\t});\n\t\t_defineProperty(this, \"showImageAtCurrentTime\", () => {\n\t\t\tif (this.mouseDown) this.setScrubbingContainerSize();\n\t\t\telse this.setThumbContainerSizeAndPos();\n\t\t\tconst thumbNum = this.thumbnails[0].frames.findIndex((frame) => this.seekTime >= frame.startTime && this.seekTime <= frame.endTime);\n\t\t\tconst hasThumb = thumbNum >= 0;\n\t\t\tlet qualityIndex = 0;\n\t\t\tif (!this.mouseDown) this.toggleThumbContainer(hasThumb);\n\t\t\tif (!hasThumb) return;\n\t\t\tthis.thumbnails.forEach((thumbnail, index) => {\n\t\t\t\tif (this.loadedImages.includes(thumbnail.frames[thumbNum].text)) qualityIndex = index;\n\t\t\t});\n\t\t\tif (thumbNum !== this.showingThumb) {\n\t\t\t\tthis.showingThumb = thumbNum;\n\t\t\t\tthis.loadImage(qualityIndex);\n\t\t\t}\n\t\t});\n\t\t_defineProperty(this, \"loadImage\", (qualityIndex = 0) => {\n\t\t\tconst thumbNum = this.showingThumb;\n\t\t\tconst thumbnail = this.thumbnails[qualityIndex];\n\t\t\tconst { urlPrefix } = thumbnail;\n\t\t\tconst frame = thumbnail.frames[thumbNum];\n\t\t\tconst thumbFilename = thumbnail.frames[thumbNum].text;\n\t\t\tconst thumbUrl = urlPrefix + thumbFilename;\n\t\t\tif (!this.currentImageElement || this.currentImageElement.dataset.filename !== thumbFilename) {\n\t\t\t\tif (this.loadingImage && this.usingSprites) this.loadingImage.onload = null;\n\t\t\t\tconst previewImage = new Image();\n\t\t\t\tpreviewImage.src = thumbUrl;\n\t\t\t\tpreviewImage.dataset.index = thumbNum;\n\t\t\t\tpreviewImage.dataset.filename = thumbFilename;\n\t\t\t\tthis.showingThumbFilename = thumbFilename;\n\t\t\t\tthis.player.debug.log(`Loading image: ${thumbUrl}`);\n\t\t\t\tpreviewImage.onload = () => this.showImage(previewImage, frame, qualityIndex, thumbNum, thumbFilename, true);\n\t\t\t\tthis.loadingImage = previewImage;\n\t\t\t\tthis.removeOldImages(previewImage);\n\t\t\t} else {\n\t\t\t\tthis.showImage(this.currentImageElement, frame, qualityIndex, thumbNum, thumbFilename, false);\n\t\t\t\tthis.currentImageElement.dataset.index = thumbNum;\n\t\t\t\tthis.removeOldImages(this.currentImageElement);\n\t\t\t}\n\t\t});\n\t\t_defineProperty(this, \"showImage\", (previewImage, frame, qualityIndex, thumbNum, thumbFilename, newImage = true) => {\n\t\t\tthis.player.debug.log(`Showing thumb: ${thumbFilename}. num: ${thumbNum}. qual: ${qualityIndex}. newimg: ${newImage}`);\n\t\t\tthis.setImageSizeAndOffset(previewImage, frame);\n\t\t\tif (newImage) {\n\t\t\t\tthis.currentImageContainer.appendChild(previewImage);\n\t\t\t\tthis.currentImageElement = previewImage;\n\t\t\t\tif (!this.loadedImages.includes(thumbFilename)) this.loadedImages.push(thumbFilename);\n\t\t\t}\n\t\t\tthis.preloadNearby(thumbNum, true).then(this.preloadNearby(thumbNum, false)).then(this.getHigherQuality(qualityIndex, previewImage, frame, thumbFilename));\n\t\t});\n\t\t_defineProperty(this, \"removeOldImages\", (currentImage) => {\n\t\t\tArray.from(this.currentImageContainer.children).forEach((image) => {\n\t\t\t\tif (image.tagName.toLowerCase() !== \"img\") return;\n\t\t\t\tconst removeDelay = this.usingSprites ? 500 : 1e3;\n\t\t\t\tif (image.dataset.index !== currentImage.dataset.index && !image.dataset.deleting) {\n\t\t\t\t\timage.dataset.deleting = true;\n\t\t\t\t\tconst { currentImageContainer } = this;\n\t\t\t\t\tsetTimeout(() => {\n\t\t\t\t\t\tcurrentImageContainer.removeChild(image);\n\t\t\t\t\t\tthis.player.debug.log(`Removing thumb: ${image.dataset.filename}`);\n\t\t\t\t\t}, removeDelay);\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\t\t_defineProperty(this, \"preloadNearby\", (thumbNum, forward = true) => {\n\t\t\treturn new Promise((resolve) => {\n\t\t\t\tsetTimeout(() => {\n\t\t\t\t\tconst oldThumbFilename = this.thumbnails[0].frames[thumbNum].text;\n\t\t\t\t\tif (this.showingThumbFilename === oldThumbFilename) {\n\t\t\t\t\t\tlet thumbnailsClone;\n\t\t\t\t\t\tif (forward) thumbnailsClone = this.thumbnails[0].frames.slice(thumbNum);\n\t\t\t\t\t\telse thumbnailsClone = this.thumbnails[0].frames.slice(0, thumbNum).reverse();\n\t\t\t\t\t\tlet foundOne = false;\n\t\t\t\t\t\tthumbnailsClone.forEach((frame) => {\n\t\t\t\t\t\t\tconst newThumbFilename = frame.text;\n\t\t\t\t\t\t\tif (newThumbFilename !== oldThumbFilename) {\n\t\t\t\t\t\t\t\tif (!this.loadedImages.includes(newThumbFilename)) {\n\t\t\t\t\t\t\t\t\tfoundOne = true;\n\t\t\t\t\t\t\t\t\tthis.player.debug.log(`Preloading thumb filename: ${newThumbFilename}`);\n\t\t\t\t\t\t\t\t\tconst { urlPrefix } = this.thumbnails[0];\n\t\t\t\t\t\t\t\t\tconst thumbURL = urlPrefix + newThumbFilename;\n\t\t\t\t\t\t\t\t\tconst previewImage = new Image();\n\t\t\t\t\t\t\t\t\tpreviewImage.src = thumbURL;\n\t\t\t\t\t\t\t\t\tpreviewImage.onload = () => {\n\t\t\t\t\t\t\t\t\t\tthis.player.debug.log(`Preloaded thumb filename: ${newThumbFilename}`);\n\t\t\t\t\t\t\t\t\t\tif (!this.loadedImages.includes(newThumbFilename)) this.loadedImages.push(newThumbFilename);\n\t\t\t\t\t\t\t\t\t\tresolve();\n\t\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t\t\tif (!foundOne) resolve();\n\t\t\t\t\t}\n\t\t\t\t}, 300);\n\t\t\t});\n\t\t});\n\t\t_defineProperty(this, \"getHigherQuality\", (currentQualityIndex, previewImage, frame, thumbFilename) => {\n\t\t\tif (currentQualityIndex < this.thumbnails.length - 1) {\n\t\t\t\tlet previewImageHeight = previewImage.naturalHeight;\n\t\t\t\tif (this.usingSprites) previewImageHeight = frame.h;\n\t\t\t\tif (previewImageHeight < this.thumbContainerHeight) setTimeout(() => {\n\t\t\t\t\tif (this.showingThumbFilename === thumbFilename) {\n\t\t\t\t\t\tthis.player.debug.log(`Showing higher quality thumb for: ${thumbFilename}`);\n\t\t\t\t\t\tthis.loadImage(currentQualityIndex + 1);\n\t\t\t\t\t}\n\t\t\t\t}, 300);\n\t\t\t}\n\t\t});\n\t\t_defineProperty(this, \"toggleThumbContainer\", (toggle = false, clearShowing = false) => {\n\t\t\tconst className = this.player.config.classNames.previewThumbnails.thumbContainerShown;\n\t\t\tthis.elements.thumb.container.classList.toggle(className, toggle);\n\t\t\tif (!toggle && clearShowing) {\n\t\t\t\tthis.showingThumb = null;\n\t\t\t\tthis.showingThumbFilename = null;\n\t\t\t}\n\t\t});\n\t\t_defineProperty(this, \"toggleScrubbingContainer\", (toggle = false) => {\n\t\t\tconst className = this.player.config.classNames.previewThumbnails.scrubbingContainerShown;\n\t\t\tthis.elements.scrubbing.container.classList.toggle(className, toggle);\n\t\t\tif (!toggle) {\n\t\t\t\tthis.showingThumb = null;\n\t\t\t\tthis.showingThumbFilename = null;\n\t\t\t}\n\t\t});\n\t\t_defineProperty(this, \"determineContainerAutoSizing\", () => {\n\t\t\tif (this.elements.thumb.imageContainer.clientHeight > 20 || this.elements.thumb.imageContainer.clientWidth > 20) this.sizeSpecifiedInCSS = true;\n\t\t});\n\t\t_defineProperty(this, \"setThumbContainerSizeAndPos\", () => {\n\t\t\tconst { imageContainer } = this.elements.thumb;\n\t\t\tif (!this.sizeSpecifiedInCSS) {\n\t\t\t\tconst thumbWidth = Math.floor(this.thumbContainerHeight * this.thumbAspectRatio);\n\t\t\t\timageContainer.style.height = `${this.thumbContainerHeight}px`;\n\t\t\t\timageContainer.style.width = `${thumbWidth}px`;\n\t\t\t} else if (imageContainer.clientHeight > 20 && imageContainer.clientWidth < 20) {\n\t\t\t\tconst thumbWidth = Math.floor(imageContainer.clientHeight * this.thumbAspectRatio);\n\t\t\t\timageContainer.style.width = `${thumbWidth}px`;\n\t\t\t} else if (imageContainer.clientHeight < 20 && imageContainer.clientWidth > 20) {\n\t\t\t\tconst thumbHeight = Math.floor(imageContainer.clientWidth / this.thumbAspectRatio);\n\t\t\t\timageContainer.style.height = `${thumbHeight}px`;\n\t\t\t}\n\t\t\tthis.setThumbContainerPos();\n\t\t});\n\t\t_defineProperty(this, \"setThumbContainerPos\", () => {\n\t\t\tconst scrubberRect = this.player.elements.progress.getBoundingClientRect();\n\t\t\tconst containerRect = this.player.elements.container.getBoundingClientRect();\n\t\t\tconst { container } = this.elements.thumb;\n\t\t\tconst min = containerRect.left - scrubberRect.left + 10;\n\t\t\tconst max = containerRect.right - scrubberRect.left - container.clientWidth - 10;\n\t\t\tconst position = this.mousePosX - scrubberRect.left - container.clientWidth / 2;\n\t\t\tconst clamped = clamp(position, min, max);\n\t\t\tcontainer.style.left = `${clamped}px`;\n\t\t\tcontainer.style.setProperty(\"--preview-arrow-offset\", `${position - clamped}px`);\n\t\t});\n\t\t_defineProperty(this, \"setScrubbingContainerSize\", () => {\n\t\t\tconst { width, height } = fitRatio(this.thumbAspectRatio, {\n\t\t\t\twidth: this.player.media.clientWidth,\n\t\t\t\theight: this.player.media.clientHeight\n\t\t\t});\n\t\t\tthis.elements.scrubbing.container.style.width = `${width}px`;\n\t\t\tthis.elements.scrubbing.container.style.height = `${height}px`;\n\t\t});\n\t\t_defineProperty(this, \"setImageSizeAndOffset\", (previewImage, frame) => {\n\t\t\tif (!this.usingSprites) return;\n\t\t\tconst multiplier = this.thumbContainerHeight / frame.h;\n\t\t\tpreviewImage.style.height = `${previewImage.naturalHeight * multiplier}px`;\n\t\t\tpreviewImage.style.width = `${previewImage.naturalWidth * multiplier}px`;\n\t\t\tpreviewImage.style.left = `-${frame.x * multiplier}px`;\n\t\t\tpreviewImage.style.top = `-${frame.y * multiplier}px`;\n\t\t});\n\t\tthis.player = player;\n\t\tthis.thumbnails = [];\n\t\tthis.loaded = false;\n\t\tthis.lastMouseMoveTime = Date.now();\n\t\tthis.mouseDown = false;\n\t\tthis.loadedImages = [];\n\t\tthis.elements = {\n\t\t\tthumb: {},\n\t\t\tscrubbing: {}\n\t\t};\n\t\tthis.load();\n\t}\n\tget enabled() {\n\t\treturn this.player.isHTML5 && this.player.isVideo && this.player.config.previewThumbnails.enabled;\n\t}\n\tget currentImageContainer() {\n\t\treturn this.mouseDown ? this.elements.scrubbing.container : this.elements.thumb.imageContainer;\n\t}\n\tget usingSprites() {\n\t\treturn Object.keys(this.thumbnails[0].frames[0]).includes(\"w\");\n\t}\n\tget thumbAspectRatio() {\n\t\tif (this.usingSprites) return this.thumbnails[0].frames[0].w / this.thumbnails[0].frames[0].h;\n\t\treturn this.thumbnails[0].width / this.thumbnails[0].height;\n\t}\n\tget thumbContainerHeight() {\n\t\tif (this.mouseDown) {\n\t\t\tconst { height } = fitRatio(this.thumbAspectRatio, {\n\t\t\t\twidth: this.player.media.clientWidth,\n\t\t\t\theight: this.player.media.clientHeight\n\t\t\t});\n\t\t\treturn height;\n\t\t}\n\t\tif (this.sizeSpecifiedInCSS) return this.elements.thumb.imageContainer.clientHeight;\n\t\treturn Math.floor(this.player.media.clientWidth / this.thumbAspectRatio / 4);\n\t}\n\tget currentImageElement() {\n\t\treturn this.mouseDown ? this.currentScrubbingImageElement : this.currentThumbnailImageElement;\n\t}\n\tset currentImageElement(element) {\n\t\tif (this.mouseDown) this.currentScrubbingImageElement = element;\n\t\telse this.currentThumbnailImageElement = element;\n\t}\n};\n//#endregion\n//#region src/js/source.js\nvar source = {\n\tinsertElements(type, attributes) {\n\t\tif (is_default.string(attributes)) insertElement(type, this.media, { src: attributes });\n\t\telse if (is_default.array(attributes)) attributes.forEach((attribute) => {\n\t\t\tinsertElement(type, this.media, attribute);\n\t\t});\n\t},\n\tchange(input) {\n\t\tif (!getDeep(input, \"sources.length\")) {\n\t\t\tthis.debug.warn(\"Invalid source format\");\n\t\t\treturn;\n\t\t}\n\t\thtml5.cancelRequests.call(this);\n\t\tthis.destroy(() => {\n\t\t\tthis.options.quality = [];\n\t\t\tremoveElement(this.media);\n\t\t\tthis.media = null;\n\t\t\tif (is_default.element(this.elements.container)) this.elements.container.removeAttribute(\"class\");\n\t\t\tconst { sources, type } = input;\n\t\t\tconst [{ provider = providers.html5, src }] = sources;\n\t\t\tconst tagName = provider === \"html5\" ? type : \"div\";\n\t\t\tconst attributes = provider === \"html5\" ? {} : { src };\n\t\t\tObject.assign(this, {\n\t\t\t\tprovider,\n\t\t\t\ttype,\n\t\t\t\tsupported: support.check(type, provider, this.config.playsinline),\n\t\t\t\tmedia: createElement(tagName, attributes)\n\t\t\t});\n\t\t\tthis.elements.container.appendChild(this.media);\n\t\t\tif (is_default.boolean(input.autoplay)) this.config.autoplay = input.autoplay;\n\t\t\tif (this.isHTML5) {\n\t\t\t\tif (this.config.crossorigin) this.media.setAttribute(\"crossorigin\", \"\");\n\t\t\t\tif (this.config.autoplay) this.media.setAttribute(\"autoplay\", \"\");\n\t\t\t\tif (!is_default.empty(input.poster)) this.poster = input.poster;\n\t\t\t\tif (this.config.loop.active) this.media.setAttribute(\"loop\", \"\");\n\t\t\t\tif (this.config.muted) this.media.setAttribute(\"muted\", \"\");\n\t\t\t\tif (this.config.playsinline) this.media.setAttribute(\"playsinline\", \"\");\n\t\t\t}\n\t\t\tui.addStyleHook.call(this);\n\t\t\tif (this.isHTML5) source.insertElements.call(this, \"source\", sources);\n\t\t\tthis.config.title = input.title;\n\t\t\tmedia.setup.call(this);\n\t\t\tif (this.isHTML5) {\n\t\t\t\tif (Object.keys(input).includes(\"tracks\")) source.insertElements.call(this, \"track\", input.tracks);\n\t\t\t}\n\t\t\tif (this.isHTML5 || this.isEmbed && !this.supported.ui) ui.build.call(this);\n\t\t\tif (this.isHTML5) this.media.load();\n\t\t\tif (!is_default.empty(input.previewThumbnails)) {\n\t\t\t\tObject.assign(this.config.previewThumbnails, input.previewThumbnails);\n\t\t\t\tif (this.previewThumbnails && this.previewThumbnails.loaded) {\n\t\t\t\t\tthis.previewThumbnails.destroy();\n\t\t\t\t\tthis.previewThumbnails = null;\n\t\t\t\t}\n\t\t\t\tif (this.config.previewThumbnails.enabled) this.previewThumbnails = new PreviewThumbnails(this);\n\t\t\t}\n\t\t\tthis.fullscreen.update();\n\t\t}, true);\n\t}\n};\n//#endregion\n//#region src/js/plyr.js\nvar Plyr = class Plyr {\n\tconstructor(target, options) {\n\t\t_defineProperty(\n\t\t\tthis,\n\t\t\t/**\n\t\t\t* Play the media, or play the advertisement (if they are not blocked)\n\t\t\t*/\n\t\t\t\"play\",\n\t\t\t() => {\n\t\t\t\tif (!is_default.function(this.media.play)) return null;\n\t\t\t\tif (this.ads && this.ads.enabled) this.ads.managerPromise.then(() => this.ads.play()).catch(() => silencePromise(this.media.play()));\n\t\t\t\treturn this.media.play();\n\t\t\t}\n\t\t);\n\t\t_defineProperty(\n\t\t\tthis,\n\t\t\t/**\n\t\t\t* Pause the media\n\t\t\t*/\n\t\t\t\"pause\",\n\t\t\t() => {\n\t\t\t\tif (!this.playing || !is_default.function(this.media.pause)) return null;\n\t\t\t\treturn this.media.pause();\n\t\t\t}\n\t\t);\n\t\t_defineProperty(\n\t\t\tthis,\n\t\t\t/**\n\t\t\t* Toggle playback based on current status\n\t\t\t* @param {boolean} input\n\t\t\t*/\n\t\t\t\"togglePlay\",\n\t\t\t(input) => {\n\t\t\t\tif (is_default.boolean(input) ? input : !this.playing) return this.play();\n\t\t\t\treturn this.pause();\n\t\t\t}\n\t\t);\n\t\t_defineProperty(\n\t\t\tthis,\n\t\t\t/**\n\t\t\t* Stop playback\n\t\t\t*/\n\t\t\t\"stop\",\n\t\t\t() => {\n\t\t\t\tif (this.isHTML5) {\n\t\t\t\t\tthis.pause();\n\t\t\t\t\tthis.restart();\n\t\t\t\t} else if (is_default.function(this.media.stop)) this.media.stop();\n\t\t\t}\n\t\t);\n\t\t_defineProperty(\n\t\t\tthis,\n\t\t\t/**\n\t\t\t* Restart playback\n\t\t\t*/\n\t\t\t\"restart\",\n\t\t\t() => {\n\t\t\t\tthis.currentTime = 0;\n\t\t\t}\n\t\t);\n\t\t_defineProperty(\n\t\t\tthis,\n\t\t\t/**\n\t\t\t* Rewind\n\t\t\t* @param {number} seekTime - how far to rewind in seconds. Defaults to the config.seekTime\n\t\t\t*/\n\t\t\t\"rewind\",\n\t\t\t(seekTime) => {\n\t\t\t\tthis.currentTime -= is_default.number(seekTime) ? seekTime : this.config.seekTime;\n\t\t\t}\n\t\t);\n\t\t_defineProperty(\n\t\t\tthis,\n\t\t\t/**\n\t\t\t* Fast forward\n\t\t\t* @param {number} seekTime - how far to fast forward in seconds. Defaults to the config.seekTime\n\t\t\t*/\n\t\t\t\"forward\",\n\t\t\t(seekTime) => {\n\t\t\t\tthis.currentTime += is_default.number(seekTime) ? seekTime : this.config.seekTime;\n\t\t\t}\n\t\t);\n\t\t_defineProperty(\n\t\t\tthis,\n\t\t\t/**\n\t\t\t* Increase volume\n\t\t\t* @param {boolean} step - How much to decrease by (between 0 and 1)\n\t\t\t*/\n\t\t\t\"increaseVolume\",\n\t\t\t(step) => {\n\t\t\t\tconst volume = this.media.muted ? 0 : this.volume;\n\t\t\t\tthis.volume = volume + (is_default.number(step) ? step : 0);\n\t\t\t}\n\t\t);\n\t\t_defineProperty(\n\t\t\tthis,\n\t\t\t/**\n\t\t\t* Decrease volume\n\t\t\t* @param {boolean} step - How much to decrease by (between 0 and 1)\n\t\t\t*/\n\t\t\t\"decreaseVolume\",\n\t\t\t(step) => {\n\t\t\t\tthis.increaseVolume(-step);\n\t\t\t}\n\t\t);\n\t\t_defineProperty(\n\t\t\tthis,\n\t\t\t/**\n\t\t\t* Trigger the airplay dialog\n\t\t\t* TODO: update player with state, support, enabled\n\t\t\t*/\n\t\t\t\"airplay\",\n\t\t\t() => {\n\t\t\t\tif (support.airplay) this.media.webkitShowPlaybackTargetPicker();\n\t\t\t}\n\t\t);\n\t\t_defineProperty(\n\t\t\tthis,\n\t\t\t/**\n\t\t\t* Toggle the player controls\n\t\t\t* @param {boolean} [toggle] - Whether to show the controls\n\t\t\t*/\n\t\t\t\"toggleControls\",\n\t\t\t(toggle) => {\n\t\t\t\tif (this.supported.ui && !this.isAudio) {\n\t\t\t\t\tconst isHidden = hasClass(this.elements.container, this.config.classNames.hideControls);\n\t\t\t\t\tconst force = typeof toggle === \"undefined\" ? void 0 : !toggle;\n\t\t\t\t\tconst hiding = toggleClass(this.elements.container, this.config.classNames.hideControls, force);\n\t\t\t\t\tif (hiding && is_default.array(this.config.controls) && this.config.controls.includes(\"settings\") && !is_default.empty(this.config.settings)) controls.toggleMenu.call(this, false);\n\t\t\t\t\tif (hiding !== isHidden) {\n\t\t\t\t\t\tconst eventName = hiding ? \"controlshidden\" : \"controlsshown\";\n\t\t\t\t\t\ttriggerEvent.call(this, this.media, eventName);\n\t\t\t\t\t}\n\t\t\t\t\treturn !hiding;\n\t\t\t\t}\n\t\t\t\treturn false;\n\t\t\t}\n\t\t);\n\t\t_defineProperty(\n\t\t\tthis,\n\t\t\t/**\n\t\t\t* Add event listeners\n\t\t\t* @param {string} event - Event type\n\t\t\t* @param {Function} callback - Callback for when event occurs\n\t\t\t*/\n\t\t\t\"on\",\n\t\t\t(event, callback) => {\n\t\t\t\ton.call(this, this.elements.container, event, callback);\n\t\t\t}\n\t\t);\n\t\t_defineProperty(\n\t\t\tthis,\n\t\t\t/**\n\t\t\t* Add event listeners once\n\t\t\t* @param {string} event - Event type\n\t\t\t* @param {Function} callback - Callback for when event occurs\n\t\t\t*/\n\t\t\t\"once\",\n\t\t\t(event, callback) => {\n\t\t\t\tonce.call(this, this.elements.container, event, callback);\n\t\t\t}\n\t\t);\n\t\t_defineProperty(\n\t\t\tthis,\n\t\t\t/**\n\t\t\t* Remove event listeners\n\t\t\t* @param {string} event - Event type\n\t\t\t* @param {Function} callback - Callback for when event occurs\n\t\t\t*/\n\t\t\t\"off\",\n\t\t\t(event, callback) => {\n\t\t\t\toff(this.elements.container, event, callback);\n\t\t\t}\n\t\t);\n\t\t_defineProperty(\n\t\t\tthis,\n\t\t\t/**\n\t\t\t* Destroy an instance\n\t\t\t* Event listeners are removed when elements are removed\n\t\t\t* http://stackoverflow.com/questions/12528049/if-a-dom-element-is-removed-are-its-listeners-also-removed-from-memory\n\t\t\t* @param {Function} callback - Callback for when destroy is complete\n\t\t\t* @param {boolean} soft - Whether it's a soft destroy (for source changes etc)\n\t\t\t*/\n\t\t\t\"destroy\",\n\t\t\t(callback, soft = false) => {\n\t\t\t\tif (!this.ready) return;\n\t\t\t\tconst done = () => {\n\t\t\t\t\tdocument.body.style.overflow = \"\";\n\t\t\t\t\tthis.embed = null;\n\t\t\t\t\tif (soft) {\n\t\t\t\t\t\tif (Object.keys(this.elements).length) {\n\t\t\t\t\t\t\tremoveElement(this.elements.buttons.play);\n\t\t\t\t\t\t\tremoveElement(this.elements.captions);\n\t\t\t\t\t\t\tremoveElement(this.elements.controls);\n\t\t\t\t\t\t\tremoveElement(this.elements.wrapper);\n\t\t\t\t\t\t\tthis.elements.buttons.play = null;\n\t\t\t\t\t\t\tthis.elements.captions = null;\n\t\t\t\t\t\t\tthis.elements.controls = null;\n\t\t\t\t\t\t\tthis.elements.wrapper = null;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (is_default.function(callback)) callback();\n\t\t\t\t\t} else {\n\t\t\t\t\t\tunbindListeners.call(this);\n\t\t\t\t\t\thtml5.cancelRequests.call(this);\n\t\t\t\t\t\treplaceElement(this.elements.original, this.elements.container);\n\t\t\t\t\t\ttriggerEvent.call(this, this.elements.original, \"destroyed\", true);\n\t\t\t\t\t\tif (is_default.function(callback)) callback.call(this.elements.original);\n\t\t\t\t\t\tthis.ready = false;\n\t\t\t\t\t\tsetTimeout(() => {\n\t\t\t\t\t\t\tthis.elements = null;\n\t\t\t\t\t\t\tthis.media = null;\n\t\t\t\t\t\t}, 200);\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t\tthis.stop();\n\t\t\t\tclearTimeout(this.timers.loading);\n\t\t\t\tclearTimeout(this.timers.controls);\n\t\t\t\tclearTimeout(this.timers.resized);\n\t\t\t\tif (this.isHTML5) {\n\t\t\t\t\tui.toggleNativeControls.call(this, true);\n\t\t\t\t\tdone();\n\t\t\t\t} else if (this.isYouTube) {\n\t\t\t\t\tclearInterval(this.timers.buffering);\n\t\t\t\t\tclearInterval(this.timers.playing);\n\t\t\t\t\tif (this.embed !== null && is_default.function(this.embed.destroy)) this.embed.destroy();\n\t\t\t\t\tdone();\n\t\t\t\t} else if (this.isVimeo) {\n\t\t\t\t\tif (this.embed !== null) this.embed.unload().then(done);\n\t\t\t\t\tsetTimeout(done, 200);\n\t\t\t\t}\n\t\t\t}\n\t\t);\n\t\t_defineProperty(\n\t\t\tthis,\n\t\t\t/**\n\t\t\t* Check for support for a mime type (HTML5 only)\n\t\t\t* @param {string} type - Mime type\n\t\t\t*/\n\t\t\t\"supports\",\n\t\t\t(type) => support.mime.call(this, type)\n\t\t);\n\t\tthis.timers = {};\n\t\tthis.ready = false;\n\t\tthis.loading = false;\n\t\tthis.failed = false;\n\t\tthis.touch = support.touch;\n\t\tthis.media = target;\n\t\tif (is_default.string(this.media)) this.media = document.querySelectorAll(this.media);\n\t\tif (window.jQuery && this.media instanceof jQuery || is_default.nodeList(this.media) || is_default.array(this.media)) this.media = this.media[0];\n\t\tthis.config = extend({}, defaults, Plyr.defaults, options || {}, (() => {\n\t\t\ttry {\n\t\t\t\treturn JSON.parse(this.media.getAttribute(\"data-plyr-config\"));\n\t\t\t} catch {\n\t\t\t\treturn {};\n\t\t\t}\n\t\t})());\n\t\tthis.elements = {\n\t\t\tcontainer: null,\n\t\t\tfullscreen: null,\n\t\t\tcaptions: null,\n\t\t\tbuttons: {},\n\t\t\tdisplay: {},\n\t\t\tprogress: {},\n\t\t\tinputs: {},\n\t\t\tsettings: {\n\t\t\t\tpopup: null,\n\t\t\t\tmenu: null,\n\t\t\t\tpanels: {},\n\t\t\t\tbuttons: {}\n\t\t\t}\n\t\t};\n\t\tthis.captions = {\n\t\t\tactive: null,\n\t\t\tcurrentTrack: -1,\n\t\t\tmeta: /* @__PURE__ */ new WeakMap()\n\t\t};\n\t\tthis.fullscreen = { active: false };\n\t\tthis.options = {\n\t\t\tspeed: [],\n\t\t\tquality: []\n\t\t};\n\t\tthis.debug = new Console(this.config.debug);\n\t\tthis.debug.log(\"Config\", this.config);\n\t\tthis.debug.log(\"Support\", support);\n\t\tif (is_default.nullOrUndefined(this.media) || !is_default.element(this.media)) {\n\t\t\tthis.debug.error(\"Setup failed: no suitable element passed\");\n\t\t\treturn;\n\t\t}\n\t\tif (this.media.plyr) {\n\t\t\tthis.debug.warn(\"Target already setup\");\n\t\t\treturn;\n\t\t}\n\t\tif (!this.config.enabled) {\n\t\t\tthis.debug.error(\"Setup failed: disabled by config\");\n\t\t\treturn;\n\t\t}\n\t\tif (!support.check().api) {\n\t\t\tthis.debug.error(\"Setup failed: no support\");\n\t\t\treturn;\n\t\t}\n\t\tconst clone = this.media.cloneNode(true);\n\t\tclone.autoplay = false;\n\t\tthis.elements.original = clone;\n\t\tconst type = this.media.tagName.toLowerCase();\n\t\tlet iframe = null;\n\t\tlet url = null;\n\t\tswitch (type) {\n\t\t\tcase \"div\":\n\t\t\t\tiframe = this.media.querySelector(\"iframe\");\n\t\t\t\tif (is_default.element(iframe)) {\n\t\t\t\t\turl = parseUrl(iframe.getAttribute(\"src\"));\n\t\t\t\t\tthis.provider = getProviderByUrl(url.toString());\n\t\t\t\t\tthis.elements.container = this.media;\n\t\t\t\t\tthis.media = iframe;\n\t\t\t\t\tthis.elements.container.className = \"\";\n\t\t\t\t\tif (url.search.length) {\n\t\t\t\t\t\tconst truthy = [\"1\", \"true\"];\n\t\t\t\t\t\tif (truthy.includes(url.searchParams.get(\"autoplay\"))) this.config.autoplay = true;\n\t\t\t\t\t\tif (truthy.includes(url.searchParams.get(\"loop\"))) this.config.loop.active = true;\n\t\t\t\t\t\tif (this.isYouTube) {\n\t\t\t\t\t\t\tthis.config.playsinline = truthy.includes(url.searchParams.get(\"playsinline\"));\n\t\t\t\t\t\t\tthis.config.youtube.hl = url.searchParams.get(\"hl\");\n\t\t\t\t\t\t} else this.config.playsinline = true;\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tthis.provider = this.media.getAttribute(this.config.attributes.embed.provider);\n\t\t\t\t\tthis.media.removeAttribute(this.config.attributes.embed.provider);\n\t\t\t\t}\n\t\t\t\tif (is_default.empty(this.provider) || !Object.values(providers).includes(this.provider)) {\n\t\t\t\t\tthis.debug.error(\"Setup failed: Invalid provider\");\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tthis.type = types.video;\n\t\t\t\tbreak;\n\t\t\tcase \"video\":\n\t\t\tcase \"audio\":\n\t\t\t\tthis.type = type;\n\t\t\t\tthis.provider = providers.html5;\n\t\t\t\tif (this.media.hasAttribute(\"crossorigin\")) this.config.crossorigin = true;\n\t\t\t\tif (this.media.hasAttribute(\"autoplay\")) this.config.autoplay = true;\n\t\t\t\tif (this.media.hasAttribute(\"playsinline\") || this.media.hasAttribute(\"webkit-playsinline\")) this.config.playsinline = true;\n\t\t\t\tif (this.media.hasAttribute(\"muted\")) this.config.muted = true;\n\t\t\t\tif (this.media.hasAttribute(\"loop\")) this.config.loop.active = true;\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tthis.debug.error(\"Setup failed: unsupported type\");\n\t\t\t\treturn;\n\t\t}\n\t\tthis.supported = support.check(this.type, this.provider);\n\t\tif (!this.supported.api) {\n\t\t\tthis.debug.error(\"Setup failed: no support\");\n\t\t\treturn;\n\t\t}\n\t\tthis.eventListeners = [];\n\t\tthis.listeners = new Listeners(this);\n\t\tthis.storage = new Storage(this);\n\t\tthis.media.plyr = this;\n\t\tif (!is_default.element(this.elements.container)) {\n\t\t\tthis.elements.container = createElement(\"div\");\n\t\t\twrap(this.media, this.elements.container);\n\t\t}\n\t\tui.migrateStyles.call(this);\n\t\tui.addStyleHook.call(this);\n\t\tmedia.setup.call(this);\n\t\tif (this.config.debug) on.call(this, this.elements.container, this.config.events.join(\" \"), (event) => {\n\t\t\tthis.debug.log(`event: ${event.type}`);\n\t\t});\n\t\tthis.fullscreen = new Fullscreen(this);\n\t\tif (this.isHTML5 || this.isEmbed && !this.supported.ui) ui.build.call(this);\n\t\tthis.listeners.container();\n\t\tthis.listeners.global();\n\t\tif (this.config.ads.enabled) this.ads = new Ads(this);\n\t\tif (this.isHTML5 && this.config.autoplay) this.once(\"canplay\", () => silencePromise(this.play()));\n\t\tthis.lastSeekTime = 0;\n\t\tif (this.config.previewThumbnails.enabled) this.previewThumbnails = new PreviewThumbnails(this);\n\t}\n\t/**\n\t* Types and provider helpers\n\t*/\n\tget isHTML5() {\n\t\treturn this.provider === providers.html5;\n\t}\n\tget isEmbed() {\n\t\treturn this.isYouTube || this.isVimeo;\n\t}\n\tget isYouTube() {\n\t\treturn this.provider === providers.youtube;\n\t}\n\tget isVimeo() {\n\t\treturn this.provider === providers.vimeo;\n\t}\n\tget isVideo() {\n\t\treturn this.type === types.video;\n\t}\n\tget isAudio() {\n\t\treturn this.type === types.audio;\n\t}\n\t/**\n\t* Get playing state\n\t*/\n\tget playing() {\n\t\treturn Boolean(this.ready && !this.paused && !this.ended);\n\t}\n\t/**\n\t* Get paused state\n\t*/\n\tget paused() {\n\t\treturn Boolean(this.media.paused);\n\t}\n\t/**\n\t* Get stopped state\n\t*/\n\tget stopped() {\n\t\treturn Boolean(this.paused && this.currentTime === 0);\n\t}\n\t/**\n\t* Get ended state\n\t*/\n\tget ended() {\n\t\treturn Boolean(this.media.ended);\n\t}\n\t/**\n\t* Seek to a time\n\t* @param {number} input - where to seek to in seconds. Defaults to 0 (the start)\n\t*/\n\tset currentTime(input) {\n\t\tif (!this.duration) return;\n\t\tconst inputIsValid = is_default.number(input) && input > 0;\n\t\tthis.media.currentTime = inputIsValid ? Math.min(input, this.duration) : 0;\n\t\tthis.debug.log(`Seeking to ${this.currentTime} seconds`);\n\t}\n\t/**\n\t* Get current time\n\t*/\n\tget currentTime() {\n\t\treturn Number(this.media.currentTime);\n\t}\n\t/**\n\t* Get buffered\n\t*/\n\tget buffered() {\n\t\tconst { buffered } = this.media;\n\t\tif (is_default.number(buffered)) return buffered;\n\t\tif (buffered && buffered.length && this.duration > 0) return buffered.end(0) / this.duration;\n\t\treturn 0;\n\t}\n\t/**\n\t* Get seeking status\n\t*/\n\tget seeking() {\n\t\treturn Boolean(this.media.seeking);\n\t}\n\t/**\n\t* Get the duration of the current media\n\t*/\n\tget duration() {\n\t\tconst fauxDuration = Number.parseFloat(this.config.duration);\n\t\tconst realDuration = (this.media || {}).duration;\n\t\tconst duration = !is_default.number(realDuration) || realDuration === Infinity ? 0 : realDuration;\n\t\treturn fauxDuration || duration;\n\t}\n\t/**\n\t* Set the player volume\n\t* @param {number} value - must be between 0 and 1. Defaults to the value from local storage and config.volume if not set in storage\n\t*/\n\tset volume(value) {\n\t\tlet volume = value;\n\t\tconst max = 1;\n\t\tconst min = 0;\n\t\tif (is_default.string(volume)) volume = Number(volume);\n\t\tif (!is_default.number(volume)) volume = this.storage.get(\"volume\");\n\t\tif (!is_default.number(volume)) ({volume} = this.config);\n\t\tif (volume > max) volume = max;\n\t\tif (volume < min) volume = min;\n\t\tif (volume > 0 && (!this.lastVolume || volume >= this.config.volume)) this.lastVolume = volume;\n\t\tthis.config.volume = volume;\n\t\tthis.media.volume = volume;\n\t\tif (!is_default.empty(value) && this.muted && volume > 0) this.muted = false;\n\t}\n\t/**\n\t* Get the current player volume\n\t*/\n\tget volume() {\n\t\treturn Number(this.media.volume);\n\t}\n\t/**\n\t* Set muted state\n\t* @param {boolean} mute\n\t*/\n\tset muted(mute) {\n\t\tlet toggle = mute;\n\t\tif (!is_default.boolean(toggle)) toggle = this.storage.get(\"muted\");\n\t\tif (!is_default.boolean(toggle)) toggle = this.config.muted;\n\t\tthis.config.muted = toggle;\n\t\tthis.media.muted = toggle;\n\t}\n\t/**\n\t* Get current muted state\n\t*/\n\tget muted() {\n\t\treturn Boolean(this.media.muted);\n\t}\n\t/**\n\t* Check if the media has audio\n\t*/\n\tget hasAudio() {\n\t\tif (!this.isHTML5) return true;\n\t\tif (this.isAudio) return true;\n\t\treturn Boolean(this.media.mozHasAudio) || Boolean(this.media.webkitAudioDecodedByteCount) || Boolean(this.media.audioTracks && this.media.audioTracks.length);\n\t}\n\t/**\n\t* Set playback speed\n\t* @param {number} input - the speed of playback (0.5-2.0)\n\t*/\n\tset speed(input) {\n\t\tlet speed = null;\n\t\tif (is_default.number(input)) speed = input;\n\t\tif (!is_default.number(speed)) speed = this.storage.get(\"speed\");\n\t\tif (!is_default.number(speed)) speed = this.config.speed.selected;\n\t\tconst { minimumSpeed: min, maximumSpeed: max } = this;\n\t\tspeed = clamp(speed, min, max);\n\t\tthis.config.speed.selected = speed;\n\t\tsetTimeout(() => {\n\t\t\tif (this.media) this.media.playbackRate = speed;\n\t\t}, 0);\n\t}\n\t/**\n\t* Get current playback speed\n\t*/\n\tget speed() {\n\t\treturn Number(this.media.playbackRate);\n\t}\n\t/**\n\t* Get the minimum allowed speed\n\t*/\n\tget minimumSpeed() {\n\t\tif (this.isYouTube) return Math.min(...this.options.speed);\n\t\tif (this.isVimeo) return .5;\n\t\treturn .0625;\n\t}\n\t/**\n\t* Get the maximum allowed speed\n\t*/\n\tget maximumSpeed() {\n\t\tif (this.isYouTube) return Math.max(...this.options.speed);\n\t\tif (this.isVimeo) return 2;\n\t\treturn 16;\n\t}\n\t/**\n\t* Set playback quality\n\t* Currently HTML5 & YouTube only\n\t* @param {number} input - Quality level\n\t*/\n\tset quality(input) {\n\t\tconst config = this.config.quality;\n\t\tconst options = this.options.quality;\n\t\tif (!options.length) return;\n\t\tlet quality = [\n\t\t\t!is_default.empty(input) && Number(input),\n\t\t\tthis.storage.get(\"quality\"),\n\t\t\tconfig.selected,\n\t\t\tconfig.default\n\t\t].find(is_default.number);\n\t\tlet updateStorage = true;\n\t\tif (!options.includes(quality)) {\n\t\t\tconst value = closest(options, quality);\n\t\t\tthis.debug.warn(`Unsupported quality option: ${quality}, using ${value} instead`);\n\t\t\tquality = value;\n\t\t\tupdateStorage = false;\n\t\t}\n\t\tconfig.selected = quality;\n\t\tthis.media.quality = quality;\n\t\tif (updateStorage) this.storage.set({ quality });\n\t}\n\t/**\n\t* Get current quality level\n\t*/\n\tget quality() {\n\t\treturn this.media.quality;\n\t}\n\t/**\n\t* Toggle loop\n\t* TODO: Finish fancy new logic. Set the indicator on load as user may pass loop as config\n\t* @param {boolean} input - Whether to loop or not\n\t*/\n\tset loop(input) {\n\t\tconst toggle = is_default.boolean(input) ? input : this.config.loop.active;\n\t\tthis.config.loop.active = toggle;\n\t\tthis.media.loop = toggle;\n\t}\n\t/**\n\t* Get current loop state\n\t*/\n\tget loop() {\n\t\treturn Boolean(this.media.loop);\n\t}\n\t/**\n\t* Set new media source\n\t* @param {object} input - The new source object (see docs)\n\t*/\n\tset source(input) {\n\t\tsource.change.call(this, input);\n\t}\n\t/**\n\t* Get current source\n\t*/\n\tget source() {\n\t\treturn this.media.currentSrc;\n\t}\n\t/**\n\t* Get a download URL (either source or custom)\n\t*/\n\tget download() {\n\t\tconst { download } = this.config.urls;\n\t\treturn is_default.url(download) ? download : this.source;\n\t}\n\t/**\n\t* Set the download URL\n\t*/\n\tset download(input) {\n\t\tif (!is_default.url(input)) return;\n\t\tthis.config.urls.download = input;\n\t\tcontrols.setDownloadUrl.call(this);\n\t}\n\t/**\n\t* Set the poster image for a video\n\t* @param {string} input - the URL for the new poster image\n\t*/\n\tset poster(input) {\n\t\tif (!this.isVideo) {\n\t\t\tthis.debug.warn(\"Poster can only be set for video\");\n\t\t\treturn;\n\t\t}\n\t\tui.setPoster.call(this, input, false).catch(() => {});\n\t}\n\t/**\n\t* Get the current poster image\n\t*/\n\tget poster() {\n\t\tif (!this.isVideo) return null;\n\t\treturn this.media.getAttribute(\"poster\") || this.media.getAttribute(\"data-poster\");\n\t}\n\t/**\n\t* Get the current aspect ratio in use\n\t*/\n\tget ratio() {\n\t\tif (!this.isVideo) return null;\n\t\tconst ratio = reduceAspectRatio(getAspectRatio.call(this));\n\t\treturn is_default.array(ratio) ? ratio.join(\":\") : ratio;\n\t}\n\t/**\n\t* Set video aspect ratio\n\t*/\n\tset ratio(input) {\n\t\tif (!this.isVideo) {\n\t\t\tthis.debug.warn(\"Aspect ratio can only be set for video\");\n\t\t\treturn;\n\t\t}\n\t\tif (!is_default.string(input) || !validateAspectRatio(input)) {\n\t\t\tthis.debug.error(`Invalid aspect ratio specified (${input})`);\n\t\t\treturn;\n\t\t}\n\t\tthis.config.ratio = reduceAspectRatio(input);\n\t\tsetAspectRatio.call(this);\n\t}\n\t/**\n\t* Set the autoplay state\n\t* @param {boolean} input - Whether to autoplay or not\n\t*/\n\tset autoplay(input) {\n\t\tthis.config.autoplay = is_default.boolean(input) ? input : this.config.autoplay;\n\t}\n\t/**\n\t* Get the current autoplay state\n\t*/\n\tget autoplay() {\n\t\treturn Boolean(this.config.autoplay);\n\t}\n\t/**\n\t* Toggle captions\n\t* @param {boolean} input - Whether to enable captions\n\t*/\n\ttoggleCaptions(input) {\n\t\tcaptions.toggle.call(this, input, false);\n\t}\n\t/**\n\t* Set the caption track by index\n\t* @param {number} input - Caption index\n\t*/\n\tset currentTrack(input) {\n\t\tcaptions.set.call(this, input, false);\n\t\tcaptions.setup.call(this);\n\t}\n\t/**\n\t* Get the current caption track index (-1 if disabled)\n\t*/\n\tget currentTrack() {\n\t\tconst { toggled, currentTrack } = this.captions;\n\t\treturn toggled ? currentTrack : -1;\n\t}\n\t/**\n\t* Set the wanted language for captions\n\t* Since tracks can be added later it won't update the actual caption track until there is a matching track\n\t* @param {string} input - Two character ISO language code (e.g. EN, FR, PT, etc)\n\t*/\n\tset language(input) {\n\t\tcaptions.setLanguage.call(this, input, false);\n\t}\n\t/**\n\t* Get the current track's language\n\t*/\n\tget language() {\n\t\treturn (captions.getCurrentTrack.call(this) || {}).language;\n\t}\n\t/**\n\t* Toggle picture-in-picture playback on WebKit/MacOS\n\t* TODO: update player with state, support, enabled\n\t* TODO: detect outside changes\n\t*/\n\tset pip(input) {\n\t\tif (!support.pip) return;\n\t\tconst toggle = is_default.boolean(input) ? input : !this.pip;\n\t\tif (is_default.function(this.media.webkitSetPresentationMode)) this.media.webkitSetPresentationMode(toggle ? pip.active : pip.inactive);\n\t\tif (is_default.function(this.media.requestPictureInPicture)) {\n\t\t\tif (!this.pip && toggle) this.media.requestPictureInPicture();\n\t\t\telse if (this.pip && !toggle) document.exitPictureInPicture();\n\t\t}\n\t}\n\t/**\n\t* Get the current picture-in-picture state\n\t*/\n\tget pip() {\n\t\tif (!support.pip) return null;\n\t\tif (!is_default.empty(this.media.webkitPresentationMode)) return this.media.webkitPresentationMode === pip.active;\n\t\treturn this.media === document.pictureInPictureElement;\n\t}\n\t/**\n\t* Sets the preview thumbnails for the current source\n\t*/\n\tsetPreviewThumbnails(thumbnailSource) {\n\t\tif (this.previewThumbnails && this.previewThumbnails.loaded) {\n\t\t\tthis.previewThumbnails.destroy();\n\t\t\tthis.previewThumbnails = null;\n\t\t}\n\t\tObject.assign(this.config.previewThumbnails, thumbnailSource);\n\t\tif (this.config.previewThumbnails.enabled) this.previewThumbnails = new PreviewThumbnails(this);\n\t}\n\t/**\n\t* Check for support\n\t* @param {string} type - Player type (audio/video)\n\t* @param {string} provider - Provider (html5/youtube/vimeo)\n\t*/\n\tstatic supported(type, provider) {\n\t\treturn support.check(type, provider);\n\t}\n\t/**\n\t* Load an SVG sprite into the page\n\t* @param {string} url - URL for the SVG sprite\n\t* @param {string} [id] - Unique ID\n\t*/\n\tstatic loadSprite(url, id) {\n\t\treturn loadSprite(url, id);\n\t}\n\t/**\n\t* Setup multiple instances\n\t* @param {*} selector\n\t* @param {object} options\n\t*/\n\tstatic setup(selector, options = {}) {\n\t\tlet targets = null;\n\t\tif (is_default.string(selector)) targets = Array.from(document.querySelectorAll(selector));\n\t\telse if (is_default.nodeList(selector)) targets = Array.from(selector);\n\t\telse if (is_default.array(selector)) targets = selector.filter(is_default.element);\n\t\tif (is_default.empty(targets)) return null;\n\t\treturn targets.map((t) => new Plyr(t, options));\n\t}\n};\nPlyr.defaults = cloneDeep(defaults);\n//#endregion\nexport { Plyr as default };\n","import Plyr from 'plyr';\nimport { captureMessage, withScope } from '@sentry/browser';\n\nexport default class VideoPlayerHandler {\n    constructor() {\n        this.init();\n    }\n\n    handleError(error) {\n        withScope((scope) => {\n            if (error && error.detail) {\n                const { message } = error.detail;\n                scope.setExtra('message', message);\n            }\n\n            captureMessage('plyr error');\n        });\n    }\n\n    init() {\n        this.plyrInstances = Array.from(document.querySelectorAll('[data-video-player]')).map((player) => {\n            const plyrInstance = new Plyr(player, this.setPlayerOptions(player));\n            plyrInstance.on('error', this.handleError);\n\n            this.pauseAllVideos(plyrInstance);\n            return plyrInstance;\n        });\n    }\n\n    setPlayerOptions(player) {\n        /**\n         * Plyr options can be configured in the template using data attributes.\n         *\n         * Available options:\n         * data-video-player-autoplay\n         * data-video-player-loop\n         * data-video-player-muted\n         * data-video-player-custom-controls\n         * data-video-player-controls\n         * data-video-player-fullscreen\n         * data-video-player-ratio\n         *\n         * If not set, the default values are Plyr's default values.\n         * See https://github.com/sampotts/plyr#javascript\n         */\n        const {\n            videoPlayerAutoplay,\n            videoPlayerLoop,\n            videoPlayerMuted,\n            videoPlayerCustomControls,\n            videoPlayerControls,\n            videoPlayerFullscreen,\n            videoPlayerRatio,\n        } = player.dataset;\n\n        return {\n            iconUrl: '/static/images/blocks/plyr.svg',\n            fullscreen: { enabled: videoPlayerFullscreen === 'true' },\n            ratio: videoPlayerRatio || '16:10',\n            youtube: {\n                noCookie: true,\n            },\n            vimeo: {\n                speed: false,\n                dnt: true,\n                muted: videoPlayerMuted === 'true',\n                autoplay: videoPlayerAutoplay === 'true',\n                loop: videoPlayerLoop === 'true',\n                controls: videoPlayerControls === 'true',\n                customControls: videoPlayerCustomControls === 'true',\n            },\n        };\n    }\n\n    pauseAllVideos(activePlyrInstance) {\n        // More information about Plyr methods: https://github.com/sampotts/plyr#methods\n        activePlyrInstance.on('play', () => {\n            this.plyrInstances.forEach((plyrInstance) => {\n                if (activePlyrInstance !== plyrInstance) {\n                    plyrInstance.pause();\n                }\n            });\n        });\n    }\n}\n","/**\n * Helper, returns all query params from a URL.\n *\n * @returns {array}\n */\nexport default function() {\n    function decode(str) {\n        return window.decodeURIComponent(str).replace(/\\+/g, ' ');\n    }\n    const queryParams = {};\n    const args = window.location.search.replace(/^\\?/, '').split('#')[0].split('&');\n    for (let i = 0; i < args.length; i += 1) {\n        const d = args[i].split('=');\n        if (d[0] && d[1]) {\n            queryParams[decode(d[0])] = decode(d[1]);\n        }\n    }\n\n    return queryParams;\n}\n","import getQueryParams from '../utils/getQueryParameters';\nimport { sessionStorageEnabled } from '../utils/sessionStorageCheck';\n\nexport default function () {\n    const showBadge = () => {\n        const badges = [\n            ...document.querySelectorAll('.customer-referral-badge'),\n        ];\n\n        badges.forEach((badge) => {\n            // eslint-disable-next-line no-param-reassign\n            badge.classList.add('customer-referral-badge--show');\n        });\n    };\n\n    if (sessionStorageEnabled()) {\n        const referralId = getQueryParams().referral_id;\n\n        if (referralId) {\n            sessionStorage.setItem('referralId', referralId);\n            showBadge();\n        }\n    }\n}\n","/**\n * Check if sessionStorage is available/usable (inspired from Modernizr field-tested approach).\n * @returns {boolean}\n */\nconst sessionStorageEnabled = () => {\n    try {\n        const val = 'check';\n        sessionStorage.setItem(val, val);\n        sessionStorage.removeItem(val);\n        return true;\n    } catch (error) {\n        return false;\n    }\n};\n\n// eslint-disable-next-line\nexport { sessionStorageEnabled };\n","import getQueryParams from '../utils/getQueryParameters';\n\nexport default function () {\n    const block = document.querySelector('[data-customer-referral-result]');\n\n    const { referral_id: referralId } = getQueryParams();\n    if (!referralId) {\n        block.classList.add('customer-referral-result--invalid');\n        return;\n    }\n\n    // Set referral link as input value\n    const input = block.querySelector('.customer-referral-result__input');\n    const referralLink = `${input.value}?referral_id=${referralId}`;\n    input.value = referralLink;\n\n    // Copy referral link to clipboard when clicking the copy button\n    const copyButton = block.querySelector('.customer-referral-result__button');\n    copyButton.addEventListener('click', async () => {\n        await navigator.clipboard.writeText(referralLink);\n        copyButton.innerHTML = '<i class=\"t-website-check\"></i> Kopiert!';\n        copyButton.setAttribute('disabled', '');\n    });\n\n    const messages = {\n        default: 'Hallo, du interessierst dich für eine neue Heizung. Aktuell kannst du dir nämlich bis zu 80 % Förderzuschüsse sichern und sparst damit deutlich an Investitionskosten. thermondo hat genau die passende Heizlösung für dich. Über diesen Link hier erhältst du ein kostenloses Festpreisangebot und zusätzlich nach Installation eine 300 € Prämie.',\n        mail: `Hallo,\\n\\nfalls auch du einen Heizungswechsel in Betracht ziehst, kann ich dir diese Firma wärmstens empfehlen! thermondo ist Deutschlands größter Heizungsbauer, mit entsprechend großer Erfahrung im Austausch von Heizungen. Von der Planung über Fördermittelservice bis hin zur Installation übernimmt thermondo alle notwendigen Schritte.\\n\\nÜbrigens, du kannst dir aktuell bis zu 80 % Förderzuschüsse sichern und sparst damit deutlich an Investitionskosten.\\n\\nMit dem thermondo-Empfehlungsprogramm erhalten wir beide nach erfolgreicher Installation deiner neuen Heizung eine Geldprämie von 300 Euro. Folge einfach meiner Empfehlung und nutze den folgenden Link: ${referralLink}\\n\\nWichtig: Damit ein Prämienanspruch besteht, muss deine Anfrage über den oben stehenden Empfehlungslink erfolgen!\\n\\nMit besten Grüßen`,\n    };\n\n    // Add referral link to all sharable hrefs\n    const shareableList = block.querySelectorAll('.customer-referral-result__shareable');\n\n    shareableList.forEach((shareable) => {\n        const { baseHref, utmSource } = shareable.dataset;\n        let shareableMessage;\n        let messageType = 'default';\n\n        if (shareable.classList.contains('button-mail')) {\n            messageType = 'mail';\n            shareableMessage = encodeURIComponent(messages.mail);\n        } else shareableMessage = encodeURIComponent(messages.default);\n        shareable.setAttribute(\n            'href',\n            `${baseHref}${messageType === 'default' ? `${referralLink}%0A%0A` : ''}${shareableMessage}&amp;utm_source=${utmSource}&amp;utm_medium=share`,\n        );\n    });\n}\n","import getQueryParams from '../utils/getQueryParameters';\n\nexport default function () {\n    const { lf_submitted: leadFormSubmitted } = getQueryParams();\n    if (leadFormSubmitted === 'true') {\n        // If a user just has submitted a lead form, we have no reason to show this banner\n        return;\n    }\n\n    let activeTimer = false;\n    const conversionBanner = document.getElementsByClassName('mobile-conversion-banner')[0];\n    let scrollStateSnapshot = window.pageYOffset;\n    const inversionHeight = window.innerHeight * 1.3;\n    const safety = 100;\n    const minScrollTime = 100;\n\n    function processScroll() {\n        if (scrollStateSnapshot < window.pageYOffset) {\n            if (window.pageYOffset > inversionHeight) {\n                conversionBanner.classList.add('mobile-conversion-banner--show');\n            }\n            scrollStateSnapshot = window.pageYOffset;\n        } else if (scrollStateSnapshot > window.pageYOffset) {\n            if (scrollStateSnapshot - window.pageYOffset > safety) {\n                conversionBanner.classList.remove('mobile-conversion-banner--show');\n                scrollStateSnapshot = window.pageYOffset;\n            }\n        }\n    }\n\n    if (conversionBanner) {\n        window.addEventListener(\n            'scroll',\n            () => {\n                if (!activeTimer) {\n                    activeTimer = true;\n                    setTimeout(() => {\n                        activeTimer = false;\n                        processScroll();\n                    }, minScrollTime);\n                }\n            },\n        );\n    }\n}\n","export default function () {\n    let activeTimer = false;\n    const ctaButton = document.getElementById('header__cta');\n    const documentHeight = document.body.scrollHeight;\n    const inversionHeight = documentHeight * 0.7;\n    const minScrollTime = 200;\n\n    const processScroll = () => {\n        if (window.pageYOffset > inversionHeight) {\n            ctaButton.classList.add('header--inverted');\n        } else {\n            ctaButton.classList.remove('header--inverted');\n        }\n    };\n\n    if (ctaButton) {\n        window.addEventListener(\n            'scroll',\n            () => {\n                if (!activeTimer) {\n                    activeTimer = true;\n                    setTimeout(() => {\n                        activeTimer = false;\n                        processScroll();\n                    }, minScrollTime);\n                }\n            },\n        );\n    }\n}\n","export default function () {\n    let activeTimer = false;\n    const header = document.getElementsByClassName('header__wrapper')[0];\n    const minScrollTime = 20;\n\n    const processScroll = () => {\n        if (window.pageYOffset > 0) {\n            header.classList.add('header__wrapper--transparency');\n        } else {\n            header.classList.remove('header__wrapper--transparency');\n        }\n    };\n\n    if (header) {\n        window.addEventListener(\n            'scroll',\n            () => {\n                if (!activeTimer) {\n                    activeTimer = true;\n                    setTimeout(() => {\n                        activeTimer = false;\n                        processScroll();\n                    }, minScrollTime);\n                }\n            },\n        );\n    }\n}\n","import * as Sentry from '@sentry/browser';\nimport { scrollTo } from 'scroll-js';\n\nexport default function () {\n    const isStickyHeader = document.querySelector('[data-sticky-header]');\n    const btns = [...document.querySelectorAll('[data-scroll-to]')];\n    btns.forEach((el) => {\n        el.addEventListener(\n            'click',\n            (e) => {\n                e.preventDefault();\n                const scrollToEl = document.getElementById(el.dataset.scrollTo);\n                const offset = !isStickyHeader ? 20 : el.dataset.scrollToOffset || 0;\n                const offsetLg = !isStickyHeader ? 20 : el.dataset.scrollToOffsetLg || offset;\n                const isLg = window.innerWidth >= 1024;\n\n                if (scrollToEl) {\n                    scrollTo(\n                        document.body,\n                        {\n                            behavior: 'smooth',\n                            top: scrollToEl.offsetTop - (isLg ? offsetLg : offset),\n                        },\n                    );\n                } else {\n                    Sentry.captureMessage(\n                        `ScrollTo - No element found with ID \"${el.dataset.scrollTo}\"`,\n                        {\n                            level: 'error',\n                        },\n                    );\n                }\n            },\n        );\n    });\n}\n","import LazyLoad from 'vanilla-lazyload';\n\nexport default function () {\n    // eslint-disable-next-line no-new\n    new LazyLoad({\n        elements_selector: '.lazy',\n    });\n}\n","import Cookies from 'js-cookie';\nimport { localStorageCheck } from '../utils/localStorageCheck';\nimport getQueryParams from '../utils/getQueryParameters';\n\nexport default function () {\n    /**\n     * Initiates tracking cookies.\n     * All cookie keys stored in COOKIE_MAP will be used by the lead-form app and sent along the\n     * lead data. If the visitor never becomes a lead, this information will be lost.\n     */\n\n    /**\n     * Options for js-cookies (see: https://github.com/js-cookie/js-cookie)\n     */\n    const COOKIE_OPTIONS_BASE = {\n        path: '/',\n        domain: window.location.hostname,\n    };\n\n    const COOKIE_OPTIONS_GLOBAL = {\n        ...COOKIE_OPTIONS_BASE,\n        expires: 365, // General tracking cookies are valid for a year.\n    };\n\n    /**\n     * All cookie keys we need to take care of.\n     */\n    const COOKIE_MAP = {\n        thermondo__page_referrer__first_visit: null,\n        thermondo__page_referrer__last_visit: null,\n        thermondo__page_landing__first_visit: null,\n        thermondo__page_landing__last_visit: null,\n        thermondo__date__first_visit: null,\n        thermondo__date__last_visit: null,\n        thermondo__medium__first_visit: null,\n        thermondo__medium__last_visit: null,\n        thermondo__source__first_visit: null,\n        thermondo__source__last_visit: null,\n        thermondo__campaign__first_visit: null,\n        thermondo__campaign__last_visit: null,\n        thermondo__term__first_visit: null,\n        thermondo__term__last_visit: null,\n        thermondo__bundesland__first_visit: null,\n        thermondo__bundesland__last_visit: null,\n        google_analytics__gclid: null,\n        user_device__is_mobile: null,\n        user_device__user_agent: null,\n        msclkid: null,\n    };\n\n    /**\n     * Check if there is an active tracking session.\n     *\n     * @returns {bool}\n     */\n    const isTrackingSessionStarted = () => localStorageCheck.isEnabled()\n        && sessionStorage.getItem('trackingSessionStarted') === 'true';\n\n    /**\n     * We store query params here, as it will be re-used across different methods.\n     */\n    const queryParams = getQueryParams();\n\n    const setReferrer = () => {\n        if (!Cookies.get('thermondo__page_referrer__first_visit')) {\n            COOKIE_MAP.thermondo__page_referrer__first_visit = document.referrer || 'none';\n        }\n\n        /**\n         * We want the referrer cookie to only be populated when entering the website. Then moving\n         * from page to page should not change the cookie value.\n         */\n        if (\n            document.referrer.indexOf(window.location.hostname) === -1\n            && !isTrackingSessionStarted()\n        ) {\n            COOKIE_MAP.thermondo__page_referrer__last_visit = document.referrer || 'none';\n        }\n    };\n\n    const setPageLanding = () => {\n        if (!Cookies.get('thermondo__page_landing__first_visit')) {\n            COOKIE_MAP.thermondo__page_landing__first_visit = window.location.href || 'none';\n        }\n        if (!isTrackingSessionStarted()) {\n            COOKIE_MAP.thermondo__page_landing__last_visit = window.location.href || 'none';\n        }\n    };\n\n    const setDate = () => {\n        if (!Cookies.get('thermondo__date__first_visit')) {\n            COOKIE_MAP.thermondo__date__first_visit = new Date().toString();\n        }\n        if (!isTrackingSessionStarted()) {\n            COOKIE_MAP.thermondo__date__last_visit = new Date().toString();\n        }\n    };\n\n    const setMedium = () => {\n        if (!Cookies.get('thermondo__medium__first_visit')) {\n            COOKIE_MAP.thermondo__medium__first_visit = queryParams.utm_medium || 'none';\n        }\n        if (!isTrackingSessionStarted()) {\n            COOKIE_MAP.thermondo__medium__last_visit = queryParams.utm_medium || 'none';\n        }\n    };\n\n    const setSource = () => {\n        if (!Cookies.get('thermondo__source__first_visit')) {\n            COOKIE_MAP.thermondo__source__first_visit = queryParams.utm_source || 'none';\n        }\n        if (!isTrackingSessionStarted()) {\n            COOKIE_MAP.thermondo__source__last_visit = queryParams.utm_source || 'none';\n        }\n    };\n\n    const setCampaign = () => {\n        if (!Cookies.get('thermondo__campaign__first_visit')) {\n            COOKIE_MAP.thermondo__campaign__first_visit = queryParams.utm_campaign || 'none';\n        }\n        if (!isTrackingSessionStarted()) {\n            COOKIE_MAP.thermondo__campaign__last_visit = queryParams.utm_campaign || 'none';\n        }\n    };\n\n    const setTerm = () => {\n        if (!Cookies.get('thermondo__term__first_visit')) {\n            COOKIE_MAP.thermondo__term__first_visit = queryParams.utm_term || 'none';\n        }\n        if (!isTrackingSessionStarted()) {\n            COOKIE_MAP.thermondo__term__last_visit = queryParams.utm_term || 'none';\n        }\n    };\n\n    const setState = () => {\n        if (!Cookies.get('thermondo__bundesland__first_visit')) {\n            COOKIE_MAP.thermondo__bundesland__first_visit = queryParams.utm_bundesland || 'none';\n        }\n        if (!isTrackingSessionStarted()) {\n            COOKIE_MAP.thermondo__bundesland__last_visit = queryParams.utm_bundesland || 'none';\n        }\n    };\n\n    const setGclid = () => {\n        if (\n            document.referrer.indexOf(window.location.hostname) === -1\n            && !isTrackingSessionStarted()\n        ) {\n            COOKIE_MAP.google_analytics__gclid = queryParams.gclid || 'none';\n        }\n    };\n\n    const setIsMobile = () => {\n        const reg = new RegExp(/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i);\n        if (!isTrackingSessionStarted()) {\n            COOKIE_MAP.user_device__is_mobile = reg.test(window.navigator.userAgent) ? 'mobile' : 'desktop';\n        }\n    };\n\n    const setUserAgent = () => {\n        if (!isTrackingSessionStarted()) {\n            COOKIE_MAP.user_device__user_agent = window.navigator.userAgent || 'none';\n        }\n    };\n\n    const setMsclkid = () => {\n        if (!isTrackingSessionStarted()) {\n            /**\n             * We are temporarily using \"msclkid\" as a catch-all.\n             *\n             * See https://thermondo.atlassian.net/browse/MT-1545\n             */\n            COOKIE_MAP.msclkid = queryParams.msclkid // Microsoft Ads\n                || queryParams.gclid // Google Ads\n                || queryParams.fbclid // Facebook Ads\n                || queryParams.OutbrainClickId // Outbrain\n                || queryParams.tbclid // Taboola\n                || queryParams.cto_pld // Criteo\n                || 'none';\n        }\n    };\n\n    /**\n     * Set all values in COOKIE_MAP\n     */\n    setReferrer();\n    setPageLanding();\n    setDate();\n    setMedium();\n    setSource();\n    setCampaign();\n    setTerm();\n    setState();\n    setIsMobile();\n    setUserAgent();\n    setGclid();\n    setMsclkid();\n\n    /**\n     * Set the cookies based on COOKIE_MAP\n     */\n    Object.keys(COOKIE_MAP).forEach(\n        (item) => {\n            if (COOKIE_MAP[item] !== null) {\n                Cookies.set(item, COOKIE_MAP[item], COOKIE_OPTIONS_GLOBAL);\n            }\n        },\n    );\n\n    /**\n     * Set a \"trackingSessionStarted\" flag in browser's session storage.\n     */\n    if (localStorageCheck.isEnabled() && !isTrackingSessionStarted()) {\n        sessionStorage.setItem('trackingSessionStarted', true);\n    }\n}\n","import Cookies from 'js-cookie';\nimport { localStorageCheck } from '../utils/localStorageCheck';\nimport getQueryParams from '../utils/getQueryParameters';\n\nexport default function () {\n    const GOOGLE_ORGANIC_SEARCH_ENGINES = [\n        /\\.google\\./,\n        /\\.bing\\./,\n        /\\.yahoo\\./,\n        /\\.ask\\./,\n        /^(?!.*mail\\.aol\\.)(?=.*\\.aol\\.).*$/,\n        /isearch\\.avg/,\n        /search\\.babylon\\./,\n        /search\\.centrum\\.cz/,\n        /search\\.conduit\\./,\n        /duckduckgo/,\n        /\\.ecosia\\./,\n        /\\.eniro\\./,\n        /\\.lycos\\./,\n        /\\.kvasir\\./,\n        /\\.msn\\./,\n        /\\.najdi\\./,\n        /szukaj\\./,\n        /\\.qwant\\./,\n        /\\.seznam\\./,\n        /\\.startsiden\\./,\n        /\\.ukr\\./,\n        /\\.virgilio\\./,\n        /\\.wp\\./,\n        /yandex\\./,\n    ];\n\n    const COOKIE_OPTIONS = {\n        path: '/',\n        domain: window.location.hostname,\n        expires: 8, // Facebook and Adwords are having a 8 days lead attribution logic.\n    };\n\n    const PERSONIO_CHANNEL_ID_DIRECT = 1001;\n    const PERSONIO_CHANNEL_ID_ORGANIC = 628869;\n\n    const queryParams = getQueryParams();\n\n    const isCookieUndefinedOrNone = (cookieName) => {\n        const cookie = Cookies.get(cookieName);\n        return cookie === undefined || cookie === 'none';\n    };\n\n    /**\n     * We need this check to prevent the cookie to be overwritten on each page load.\n     */\n    const isRecruitingChannelIdSessionStarted = () => sessionStorage.getItem(\n        'recruitingChannelIdSessionStarted',\n    ) === 'true';\n\n    const buildRecruitingChannelId = () => {\n        /**\n         * Case where a recruiting channel ID would be passed through the URL.\n         */\n        if (queryParams.recruiting_channel_id) {\n            return queryParams.recruiting_channel_id;\n        }\n\n        /**\n         * Or is it a \"direct\" recruiting channel ID ?\n         */\n        if (\n            isCookieUndefinedOrNone('thermondo__medium__last_visit')\n            && isCookieUndefinedOrNone('thermondo__page_referrer__last_visit')\n            && !isCookieUndefinedOrNone('thermondo__page_landing__last_visit')\n            && isCookieUndefinedOrNone('google_analytics__gclid')\n        ) {\n            return PERSONIO_CHANNEL_ID_DIRECT;\n        }\n\n        /**\n         * Or is it an \"organic\" recruiting channel ID ?\n         */\n        if (\n            isCookieUndefinedOrNone('thermondo__medium__last_visit')\n            && isCookieUndefinedOrNone('google_analytics__gclid')\n            && GOOGLE_ORGANIC_SEARCH_ENGINES.some((rule) => {\n                const re = new RegExp(rule);\n                return re.test(Cookies.get('thermondo__page_referrer__last_visit'));\n            })\n        ) {\n            return PERSONIO_CHANNEL_ID_ORGANIC;\n        }\n\n        /**\n         * No recruiting channel ID has been built.\n         */\n        return false;\n    };\n\n    const handleRecruitingChannelIdCookie = () => {\n        /**\n         * This cookie, if set, will be collected by the job application form and sent along the\n         * applicant data to Personio.\n         * The advantage of having this value set as a cookie is to not lose it if the applicant\n         * visits different pages, or come back later before to submit an application.\n         */\n        sessionStorage.setItem('recruitingChannelIdSessionStarted', true);\n\n        /**\n         * Create, update or remove \"recruitingChannelId\" cookie.\n         */\n        const recruitingChannelId = buildRecruitingChannelId();\n\n        if (recruitingChannelId) {\n            Cookies.set(\n                'recruitingChannelId',\n                recruitingChannelId,\n                COOKIE_OPTIONS,\n            );\n        } else {\n            Cookies.remove('recruitingChannelId');\n        }\n    };\n\n    if (localStorageCheck.isEnabled() && !isRecruitingChannelIdSessionStarted()) {\n        handleRecruitingChannelIdCookie();\n    }\n}\n","import { captureException } from '@sentry/browser';\n\nexport default function () {\n    const btns = [...document.querySelectorAll('[data-usercentrics-showpanel]')];\n    btns.forEach((el) => {\n        el.addEventListener(\n            'click',\n            (e) => {\n                e.preventDefault();\n                if (\n                    Object.prototype.hasOwnProperty.call(\n                        window,\n                        'UC_UI',\n                    )\n                ) {\n                    window.UC_UI.showSecondLayer();\n                } else {\n                    captureException(new Error('Error: \"window.UC_UI.showSecondLayer()\" doesn\\'t exist.'));\n                }\n            },\n        );\n    });\n}\n","/** handorgel v1.1.1, @license MIT */\nfunction _classCallCheck(instance, Constructor) {\n  if (!(instance instanceof Constructor)) {\n    throw new TypeError(\"Cannot call a class as a function\");\n  }\n}\nfunction _defineProperties(target, props) {\n  for (var i = 0; i < props.length; i++) {\n    var descriptor = props[i];\n    descriptor.enumerable = descriptor.enumerable || false;\n    descriptor.configurable = true;\n    if (\"value\" in descriptor) descriptor.writable = true;\n    Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor);\n  }\n}\nfunction _createClass(Constructor, protoProps, staticProps) {\n  if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n  if (staticProps) _defineProperties(Constructor, staticProps);\n  Object.defineProperty(Constructor, \"prototype\", {\n    writable: false\n  });\n  return Constructor;\n}\nfunction _inherits(subClass, superClass) {\n  if (typeof superClass !== \"function\" && superClass !== null) {\n    throw new TypeError(\"Super expression must either be null or a function\");\n  }\n  subClass.prototype = Object.create(superClass && superClass.prototype, {\n    constructor: {\n      value: subClass,\n      writable: true,\n      configurable: true\n    }\n  });\n  Object.defineProperty(subClass, \"prototype\", {\n    writable: false\n  });\n  if (superClass) _setPrototypeOf(subClass, superClass);\n}\nfunction _getPrototypeOf(o) {\n  _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) {\n    return o.__proto__ || Object.getPrototypeOf(o);\n  };\n  return _getPrototypeOf(o);\n}\nfunction _setPrototypeOf(o, p) {\n  _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) {\n    o.__proto__ = p;\n    return o;\n  };\n  return _setPrototypeOf(o, p);\n}\nfunction _isNativeReflectConstruct() {\n  if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n  if (Reflect.construct.sham) return false;\n  if (typeof Proxy === \"function\") return true;\n  try {\n    Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {}));\n    return true;\n  } catch (e) {\n    return false;\n  }\n}\nfunction _assertThisInitialized(self) {\n  if (self === void 0) {\n    throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n  }\n  return self;\n}\nfunction _possibleConstructorReturn(self, call) {\n  if (call && (typeof call === \"object\" || typeof call === \"function\")) {\n    return call;\n  } else if (call !== void 0) {\n    throw new TypeError(\"Derived constructors may only return object or undefined\");\n  }\n  return _assertThisInitialized(self);\n}\nfunction _createSuper(Derived) {\n  var hasNativeReflectConstruct = _isNativeReflectConstruct();\n  return function _createSuperInternal() {\n    var Super = _getPrototypeOf(Derived),\n      result;\n    if (hasNativeReflectConstruct) {\n      var NewTarget = _getPrototypeOf(this).constructor;\n      result = Reflect.construct(Super, arguments, NewTarget);\n    } else {\n      result = Super.apply(this, arguments);\n    }\n    return _possibleConstructorReturn(this, result);\n  };\n}\nfunction _toPrimitive(input, hint) {\n  if (typeof input !== \"object\" || input === null) return input;\n  var prim = input[Symbol.toPrimitive];\n  if (prim !== undefined) {\n    var res = prim.call(input, hint || \"default\");\n    if (typeof res !== \"object\") return res;\n    throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n  }\n  return (hint === \"string\" ? String : Number)(input);\n}\nfunction _toPropertyKey(arg) {\n  var key = _toPrimitive(arg, \"string\");\n  return typeof key === \"symbol\" ? key : String(key);\n}\n\nvar commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};\n\nfunction createCommonjsModule(fn, module) {\n\treturn module = { exports: {} }, fn(module, module.exports), module.exports;\n}\n\nvar evEmitter = createCommonjsModule(function (module) {\n/**\n * EvEmitter v1.1.0\n * Lil' event emitter\n * MIT License\n */\n\n/* jshint unused: true, undef: true, strict: true */\n\n( function( global, factory ) {\n  // universal module definition\n  /* jshint strict: false */ /* globals define, module, window */\n  if ( module.exports ) {\n    // CommonJS - Browserify, Webpack\n    module.exports = factory();\n  } else {\n    // Browser globals\n    global.EvEmitter = factory();\n  }\n\n}( typeof window != 'undefined' ? window : commonjsGlobal, function() {\n\nfunction EvEmitter() {}\n\nvar proto = EvEmitter.prototype;\n\nproto.on = function( eventName, listener ) {\n  if ( !eventName || !listener ) {\n    return;\n  }\n  // set events hash\n  var events = this._events = this._events || {};\n  // set listeners array\n  var listeners = events[ eventName ] = events[ eventName ] || [];\n  // only add once\n  if ( listeners.indexOf( listener ) == -1 ) {\n    listeners.push( listener );\n  }\n\n  return this;\n};\n\nproto.once = function( eventName, listener ) {\n  if ( !eventName || !listener ) {\n    return;\n  }\n  // add event\n  this.on( eventName, listener );\n  // set once flag\n  // set onceEvents hash\n  var onceEvents = this._onceEvents = this._onceEvents || {};\n  // set onceListeners object\n  var onceListeners = onceEvents[ eventName ] = onceEvents[ eventName ] || {};\n  // set flag\n  onceListeners[ listener ] = true;\n\n  return this;\n};\n\nproto.off = function( eventName, listener ) {\n  var listeners = this._events && this._events[ eventName ];\n  if ( !listeners || !listeners.length ) {\n    return;\n  }\n  var index = listeners.indexOf( listener );\n  if ( index != -1 ) {\n    listeners.splice( index, 1 );\n  }\n\n  return this;\n};\n\nproto.emitEvent = function( eventName, args ) {\n  var listeners = this._events && this._events[ eventName ];\n  if ( !listeners || !listeners.length ) {\n    return;\n  }\n  // copy over to avoid interference if .off() in listener\n  listeners = listeners.slice(0);\n  args = args || [];\n  // once stuff\n  var onceListeners = this._onceEvents && this._onceEvents[ eventName ];\n\n  for ( var i=0; i < listeners.length; i++ ) {\n    var listener = listeners[i];\n    var isOnce = onceListeners && onceListeners[ listener ];\n    if ( isOnce ) {\n      // remove listener\n      // remove before trigger to prevent recursion\n      this.off( eventName, listener );\n      // unset once flag\n      delete onceListeners[ listener ];\n    }\n    // trigger listener\n    listener.apply( this, args );\n  }\n\n  return this;\n};\n\nproto.allOff = function() {\n  delete this._events;\n  delete this._onceEvents;\n};\n\nreturn EvEmitter;\n\n}));\n});\n\nvar ID_COUNTER = {};\nvar ARIA_ATTRIBUTES = {\n  button: {\n    'aria-controls': function ariaControls() {\n      return this.id + '-content';\n    },\n    'aria-expanded': function ariaExpanded() {\n      return this.expanded ? 'true' : 'false';\n    },\n    'aria-disabled': function ariaDisabled() {\n      return this.disabled ? 'true' : 'false';\n    }\n  },\n  content: {\n    role: function role() {\n      return 'region';\n    },\n    'aria-labelledby': function ariaLabelledby() {\n      return this.id + '-header';\n    }\n  }\n};\nvar KEYS = {\n  arrowDown: 40,\n  arrowUp: 38,\n  pageUp: 33,\n  pageDown: 34,\n  end: 35,\n  home: 36\n};\nvar HandorgelFold = /*#__PURE__*/function () {\n  function HandorgelFold(handorgel, header, content) {\n    _classCallCheck(this, HandorgelFold);\n    if (header.handorgelFold) {\n      return;\n    }\n    this.handorgel = handorgel;\n    this.header = header;\n    this.button = header.firstElementChild;\n    this.content = content;\n    this.header.handorgelFold = this;\n    this.content.handorgelFold = this;\n    if (!ID_COUNTER[this.handorgel.id]) {\n      ID_COUNTER[this.handorgel.id] = 0;\n    }\n    this.id = \"\".concat(this.handorgel.id, \"-fold\").concat(++ID_COUNTER[this.handorgel.id]);\n    this.header.setAttribute('id', this.id + '-header');\n    this.content.setAttribute('id', this.id + '-content');\n    this.focused = false;\n    this.expanded = false;\n    this.disabled = false;\n    this._listeners = {};\n    this._bindEvents();\n    this._initAria();\n    this._initialOpen();\n    this._initialFocus();\n  }\n  _createClass(HandorgelFold, [{\n    key: \"open\",\n    value: function open() {\n      var transition = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;\n      if (this.expanded) {\n        return;\n      }\n      this.handorgel.emitEvent('fold:open', [this]);\n      this.expanded = true;\n      if (!this.handorgel.options.collapsible) {\n        this.disable();\n      }\n      this._updateAria('button', 'aria-expanded');\n      this.header.classList.add(this.handorgel.options.headerOpenClass);\n      this.content.classList.add(this.handorgel.options.contentOpenClass);\n      if (!transition) {\n        this._opened();\n      } else {\n        var height = this.content.firstElementChild.offsetHeight;\n        this.content.style.height = \"\".concat(height, \"px\");\n      }\n    }\n  }, {\n    key: \"close\",\n    value: function close() {\n      var _this = this;\n      var transition = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;\n      if (!this.expanded) {\n        return;\n      }\n      this.handorgel.emitEvent('fold:close', [this]);\n      this.expanded = false;\n      if (!this.handorgel.options.collapsible) {\n        this.enable();\n      }\n      this._updateAria('button', 'aria-expanded');\n      this.header.classList.remove(this.handorgel.options.headerOpenedClass);\n      this.content.classList.remove(this.handorgel.options.contentOpenedClass);\n      if (!transition) {\n        this._closed();\n      } else {\n        // if we want to transition when closing we\n        // have to set the current height and replace auto\n        var height = this.content.firstElementChild.offsetHeight;\n        this.content.style.height = \"\".concat(height, \"px\");\n        window.requestAnimationFrame(function () {\n          window.requestAnimationFrame(function () {\n            _this.content.style.height = '0px';\n          });\n        });\n      }\n    }\n  }, {\n    key: \"disable\",\n    value: function disable() {\n      this.disabled = true;\n      this._updateAria('button', 'aria-disabled');\n      this.header.classList.add(this.handorgel.options.headerDisabledClass);\n      this.content.classList.add(this.handorgel.options.contentDisabledClass);\n    }\n  }, {\n    key: \"enable\",\n    value: function enable() {\n      this.disabled = false;\n      this._updateAria('button', 'aria-disabled');\n      this.header.classList.remove(this.handorgel.options.headerDisabledClass);\n      this.content.classList.remove(this.handorgel.options.contentDisabledClass);\n    }\n  }, {\n    key: \"focus\",\n    value: function focus() {\n      this.button.focus();\n    }\n  }, {\n    key: \"blur\",\n    value: function blur() {\n      this.button.blur();\n    }\n  }, {\n    key: \"toggle\",\n    value: function toggle() {\n      var transition = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;\n      if (this.expanded) {\n        this.close(transition);\n      } else {\n        this.open(transition);\n      }\n    }\n  }, {\n    key: \"destroy\",\n    value: function destroy() {\n      this._unbindEvents();\n      this._cleanAria();\n\n      // clean classes\n      this.header.classList.remove(this.handorgel.options.headerOpenClass);\n      this.header.classList.remove(this.handorgel.options.headerOpenedClass);\n      this.header.classList.remove(this.handorgel.options.headerFocusClass);\n      this.content.classList.remove(this.handorgel.options.contentOpenClass);\n      this.content.classList.remove(this.handorgel.options.contentOpenedClass);\n      this.content.classList.remove(this.handorgel.options.contentFocusClass);\n\n      // hide content\n      this.content.style.height = '0px';\n\n      // clean reference to this instance\n      this.header.handorgelFold = null;\n      this.content.handorgelFold = null;\n\n      // remove ids\n      this.header.removeAttribute('id');\n      this.content.removeAttribute('id');\n\n      // clean reference to handorgel instance\n      this.handorgel = null;\n    }\n  }, {\n    key: \"_opened\",\n    value: function _opened() {\n      this.content.style.height = 'auto';\n      this.header.classList.add(this.handorgel.options.headerOpenedClass);\n      this.content.classList.add(this.handorgel.options.contentOpenedClass);\n      this.handorgel.emitEvent('fold:opened', [this]);\n    }\n  }, {\n    key: \"_closed\",\n    value: function _closed() {\n      this.header.classList.remove(this.handorgel.options.headerOpenClass);\n      this.content.classList.remove(this.handorgel.options.contentOpenClass);\n      this.handorgel.emitEvent('fold:closed', [this]);\n    }\n  }, {\n    key: \"_initialOpen\",\n    value: function _initialOpen() {\n      var _this2 = this;\n      if (this.header.getAttribute(this.handorgel.options.initialOpenAttribute) !== null || this.content.getAttribute(this.handorgel.options.initialOpenAttribute) !== null) {\n        if (this.handorgel.options.initialOpenTransition) {\n          window.setTimeout(function () {\n            _this2.open();\n          }, this.handorgel.options.initialOpenTransitionDelay);\n        } else {\n          this.open(false);\n        }\n      }\n    }\n  }, {\n    key: \"_initialFocus\",\n    value: function _initialFocus() {\n      if (this.button.getAttribute('autofocus') === null) {\n        return;\n      }\n\n      // to ensure focus styles if autofocus was applied\n      // before focus listener was added\n      this._handleFocus();\n    }\n  }, {\n    key: \"_initAria\",\n    value: function _initAria() {\n      this._updateAria('button');\n      this._updateAria('content');\n    }\n  }, {\n    key: \"_cleanAria\",\n    value: function _cleanAria() {\n      this._updateAria('button', null, true);\n      this._updateAria('content', null, true);\n    }\n  }, {\n    key: \"_updateAria\",\n    value: function _updateAria(element) {\n      var property = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n      var remove = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n      if (!this.handorgel.options.ariaEnabled) {\n        return;\n      }\n      if (property) {\n        var newValue = ARIA_ATTRIBUTES[element][property].call(this);\n        this[element].setAttribute(property, newValue);\n      } else {\n        for (var _property in ARIA_ATTRIBUTES[element]) {\n          if (ARIA_ATTRIBUTES[element].hasOwnProperty(_property)) {\n            if (remove) {\n              this[element].removeAttribute(_property);\n            } else {\n              var _newValue = ARIA_ATTRIBUTES[element][_property].call(this);\n              this[element].setAttribute(_property, _newValue);\n            }\n          }\n        }\n      }\n    }\n  }, {\n    key: \"_handleContentTransitionEnd\",\n    value: function _handleContentTransitionEnd(e) {\n      if (e.target === e.currentTarget && e.propertyName === 'height') {\n        if (this.expanded) {\n          this._opened();\n        } else {\n          this._closed();\n        }\n      }\n    }\n  }, {\n    key: \"_handleFocus\",\n    value: function _handleFocus() {\n      this.focused = true;\n      this.header.classList.add(this.handorgel.options.headerFocusClass);\n      this.content.classList.add(this.handorgel.options.contentFocusClass);\n      this.handorgel.emitEvent('fold:focus', [this]);\n    }\n  }, {\n    key: \"_handleBlur\",\n    value: function _handleBlur() {\n      this.focused = false;\n      this.header.classList.remove(this.handorgel.options.headerFocusClass);\n      this.content.classList.remove(this.handorgel.options.contentFocusClass);\n      this.handorgel.emitEvent('fold:blur', [this]);\n    }\n  }, {\n    key: \"_handleButtonClick\",\n    value: function _handleButtonClick(e) {\n      // ensure focus is on button (click is not seting focus on firefox mac)\n      this.focus();\n      if (this.disabled) {\n        return;\n      }\n      this.toggle();\n    }\n  }, {\n    key: \"_handleButtonKeydown\",\n    value: function _handleButtonKeydown(e) {\n      if (!this.handorgel.options.keyboardInteraction) {\n        return;\n      }\n      var action = null;\n      switch (e.which) {\n        case KEYS.arrowDown:\n          action = 'next';\n          break;\n        case KEYS.arrowUp:\n          action = 'prev';\n          break;\n        case KEYS.home:\n          action = 'first';\n          break;\n        case KEYS.end:\n          action = 'last';\n          break;\n        case KEYS.pageDown:\n          if (e.ctrlKey) {\n            action = 'next';\n          }\n          break;\n        case KEYS.pageUp:\n          if (e.ctrlKey) {\n            action = 'prev';\n          }\n          break;\n      }\n      if (action) {\n        e.preventDefault();\n        this.handorgel.focus(action);\n      }\n    }\n  }, {\n    key: \"_handleContentKeydown\",\n    value: function _handleContentKeydown(e) {\n      if (!this.handorgel.options.keyboardInteraction || !e.ctrlKey) {\n        return;\n      }\n      var action = null;\n      switch (e.which) {\n        case KEYS.pageDown:\n          action = 'next';\n          break;\n        case KEYS.pageUp:\n          action = 'prev';\n          break;\n      }\n      if (action) {\n        e.preventDefault();\n        this.handorgel.focus(action);\n      }\n    }\n  }, {\n    key: \"_bindEvents\",\n    value: function _bindEvents() {\n      this._listeners = {\n        // button listeners\n        bFocus: ['focus', this.button, this._handleFocus.bind(this)],\n        bBlur: ['blur', this.button, this._handleBlur.bind(this)],\n        bClick: ['click', this.button, this._handleButtonClick.bind(this)],\n        bKeydown: ['keydown', this.button, this._handleButtonKeydown.bind(this)],\n        // content listeners\n        cKeydown: ['keydown', this.content, this._handleContentKeydown.bind(this)],\n        cTransition: ['transitionend', this.content, this._handleContentTransitionEnd.bind(this)]\n      };\n      for (var key in this._listeners) {\n        if (this._listeners.hasOwnProperty(key)) {\n          var listener = this._listeners[key];\n          listener[1].addEventListener(listener[0], listener[2]);\n        }\n      }\n    }\n  }, {\n    key: \"_unbindEvents\",\n    value: function _unbindEvents() {\n      for (var key in this._listeners) {\n        if (this._listeners.hasOwnProperty(key)) {\n          var listener = this._listeners[key];\n          listener[1].removeEventListener(listener[0], listener[2]);\n        }\n      }\n    }\n  }]);\n  return HandorgelFold;\n}();\n\nvar ID_COUNTER$1 = 0;\nvar Handorgel = /*#__PURE__*/function (_EventEmitter) {\n  _inherits(Handorgel, _EventEmitter);\n  var _super = _createSuper(Handorgel);\n  function Handorgel(element) {\n    var _this;\n    var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n    _classCallCheck(this, Handorgel);\n    _this = _super.call(this);\n    if (element.handorgel) {\n      return _possibleConstructorReturn(_this);\n    }\n    _this.element = element;\n    _this.element.handorgel = _assertThisInitialized(_this);\n    _this.id = \"handorgel\".concat(++ID_COUNTER$1);\n    _this.element.setAttribute('id', _this.id);\n    _this.folds = [];\n    _this.options = Object.assign({}, Handorgel.defaultOptions, options);\n    _this._listeners = {};\n    _this._bindEvents();\n    _this.update();\n    return _this;\n  }\n  _createClass(Handorgel, [{\n    key: \"update\",\n    value: function update() {\n      this.folds = [];\n      var headerElements = this._queryElements(this.options.headerElements);\n      var contentElements = this._queryElements(this.options.contentElements);\n      for (var i = 0; i < headerElements.length; i = i + 1) {\n        // get fold instance if there is already one\n        var fold = headerElements[i].handorgelFold;\n\n        // create new one when header and content exist\n        if (!fold && headerElements[i] && contentElements[i]) {\n          fold = new HandorgelFold(this, headerElements[i], contentElements[i]);\n        }\n        if (fold) {\n          this.folds.push(fold);\n        }\n      }\n    }\n\n    /**\n     * Resolves an elements option (selector string or element list) and,\n     * for selectors, drops elements which belong to a nested accordion,\n     * i.e. which are placed inside another matched content element.\n     */\n  }, {\n    key: \"_queryElements\",\n    value: function _queryElements(option) {\n      if (typeof option !== 'string') {\n        return option;\n      }\n      var elements = Array.prototype.slice.call(this.element.querySelectorAll(option));\n      var contents = Array.prototype.slice.call(this.element.querySelectorAll(this.options.contentElements));\n      return elements.filter(function (element) {\n        return !contents.some(function (content) {\n          return content !== element && content.contains(element);\n        });\n      });\n    }\n  }, {\n    key: \"focus\",\n    value: function focus(target) {\n      var foldsLength = this.folds.length;\n      var currentFocusedIndex = null;\n      for (var i = 0; i < foldsLength && currentFocusedIndex === null; i++) {\n        if (this.folds[i].focused) currentFocusedIndex = i;\n      }\n      if ((target === 'prev' || target === 'next') && currentFocusedIndex === null) {\n        target = target === 'prev' ? 'last' : 'first';\n      }\n      if (target === 'prev' && currentFocusedIndex === 0) {\n        if (!this.options.carouselFocus) return;\n        target = 'last';\n      }\n      if (target === 'next' && currentFocusedIndex === foldsLength - 1) {\n        if (!this.options.carouselFocus) return;\n        target = 'first';\n      }\n      switch (target) {\n        case 'prev':\n          this.folds[--currentFocusedIndex].focus();\n          break;\n        case 'next':\n          this.folds[++currentFocusedIndex].focus();\n          break;\n        case 'last':\n          this.folds[foldsLength - 1].focus();\n          break;\n        case 'first':\n        default:\n          this.folds[0].focus();\n      }\n    }\n  }, {\n    key: \"destroy\",\n    value: function destroy() {\n      this.emitEvent('destroy');\n      this.element.removeAttribute('id');\n      this.folds.forEach(function (fold) {\n        fold.destroy();\n      });\n      this._unbindEvents();\n\n      // clean reference to handorgel instance\n      this.element.handorgel = null;\n      this.emitEvent('destroyed');\n    }\n  }, {\n    key: \"_handleFoldOpen\",\n    value: function _handleFoldOpen(openFold) {\n      if (this.options.multiSelectable) {\n        return;\n      }\n      this.folds.forEach(function (fold) {\n        if (openFold !== fold) {\n          fold.close();\n        }\n      });\n    }\n  }, {\n    key: \"_bindEvents\",\n    value: function _bindEvents() {\n      this._listeners.foldOpen = this._handleFoldOpen.bind(this);\n      this.on('fold:open', this._listeners.foldOpen);\n    }\n  }, {\n    key: \"_unbindEvents\",\n    value: function _unbindEvents() {\n      this.off('fold:open', this._listeners.foldOpen);\n    }\n  }]);\n  return Handorgel;\n}(evEmitter);\nHandorgel.defaultOptions = {\n  keyboardInteraction: true,\n  multiSelectable: true,\n  ariaEnabled: true,\n  collapsible: true,\n  carouselFocus: true,\n  initialOpenAttribute: 'data-open',\n  initialOpenTransition: true,\n  initialOpenTransitionDelay: 200,\n  headerElements: '.handorgel__header',\n  contentElements: '.handorgel__content',\n  headerOpenClass: 'handorgel__header--open',\n  contentOpenClass: 'handorgel__content--open',\n  headerOpenedClass: 'handorgel__header--opened',\n  contentOpenedClass: 'handorgel__content--opened',\n  headerDisabledClass: 'handorgel__header--disabled',\n  contentDisabledClass: 'handorgel__content--disabled',\n  headerFocusClass: 'handorgel__header--focus',\n  contentFocusClass: 'handorgel__content--focus'\n};\n\nexport default Handorgel;\n","import Handorgel from 'handorgel';\n\nexport default function () {\n    const accordions = [...document.querySelectorAll('.handorgel')];\n\n    accordions.forEach((accordionEl) => {\n        // eslint-disable-next-line no-new\n        new Handorgel(accordionEl, {\n            multiSelectable: false,\n        });\n    });\n}\n","/**\r\n * A collection of shims that provide minimal functionality of the ES6 collections.\r\n *\r\n * These implementations are not meant to be used outside of the ResizeObserver\r\n * modules as they cover only a limited range of use cases.\r\n */\r\n/* eslint-disable require-jsdoc, valid-jsdoc */\r\nvar MapShim = (function () {\r\n    if (typeof Map !== 'undefined') {\r\n        return Map;\r\n    }\r\n    /**\r\n     * Returns index in provided array that matches the specified key.\r\n     *\r\n     * @param {Array<Array>} arr\r\n     * @param {*} key\r\n     * @returns {number}\r\n     */\r\n    function getIndex(arr, key) {\r\n        var result = -1;\r\n        arr.some(function (entry, index) {\r\n            if (entry[0] === key) {\r\n                result = index;\r\n                return true;\r\n            }\r\n            return false;\r\n        });\r\n        return result;\r\n    }\r\n    return /** @class */ (function () {\r\n        function class_1() {\r\n            this.__entries__ = [];\r\n        }\r\n        Object.defineProperty(class_1.prototype, \"size\", {\r\n            /**\r\n             * @returns {boolean}\r\n             */\r\n            get: function () {\r\n                return this.__entries__.length;\r\n            },\r\n            enumerable: true,\r\n            configurable: true\r\n        });\r\n        /**\r\n         * @param {*} key\r\n         * @returns {*}\r\n         */\r\n        class_1.prototype.get = function (key) {\r\n            var index = getIndex(this.__entries__, key);\r\n            var entry = this.__entries__[index];\r\n            return entry && entry[1];\r\n        };\r\n        /**\r\n         * @param {*} key\r\n         * @param {*} value\r\n         * @returns {void}\r\n         */\r\n        class_1.prototype.set = function (key, value) {\r\n            var index = getIndex(this.__entries__, key);\r\n            if (~index) {\r\n                this.__entries__[index][1] = value;\r\n            }\r\n            else {\r\n                this.__entries__.push([key, value]);\r\n            }\r\n        };\r\n        /**\r\n         * @param {*} key\r\n         * @returns {void}\r\n         */\r\n        class_1.prototype.delete = function (key) {\r\n            var entries = this.__entries__;\r\n            var index = getIndex(entries, key);\r\n            if (~index) {\r\n                entries.splice(index, 1);\r\n            }\r\n        };\r\n        /**\r\n         * @param {*} key\r\n         * @returns {void}\r\n         */\r\n        class_1.prototype.has = function (key) {\r\n            return !!~getIndex(this.__entries__, key);\r\n        };\r\n        /**\r\n         * @returns {void}\r\n         */\r\n        class_1.prototype.clear = function () {\r\n            this.__entries__.splice(0);\r\n        };\r\n        /**\r\n         * @param {Function} callback\r\n         * @param {*} [ctx=null]\r\n         * @returns {void}\r\n         */\r\n        class_1.prototype.forEach = function (callback, ctx) {\r\n            if (ctx === void 0) { ctx = null; }\r\n            for (var _i = 0, _a = this.__entries__; _i < _a.length; _i++) {\r\n                var entry = _a[_i];\r\n                callback.call(ctx, entry[1], entry[0]);\r\n            }\r\n        };\r\n        return class_1;\r\n    }());\r\n})();\n\n/**\r\n * Detects whether window and document objects are available in current environment.\r\n */\r\nvar isBrowser = typeof window !== 'undefined' && typeof document !== 'undefined' && window.document === document;\n\n// Returns global object of a current environment.\r\nvar global$1 = (function () {\r\n    if (typeof global !== 'undefined' && global.Math === Math) {\r\n        return global;\r\n    }\r\n    if (typeof self !== 'undefined' && self.Math === Math) {\r\n        return self;\r\n    }\r\n    if (typeof window !== 'undefined' && window.Math === Math) {\r\n        return window;\r\n    }\r\n    // eslint-disable-next-line no-new-func\r\n    return Function('return this')();\r\n})();\n\n/**\r\n * A shim for the requestAnimationFrame which falls back to the setTimeout if\r\n * first one is not supported.\r\n *\r\n * @returns {number} Requests' identifier.\r\n */\r\nvar requestAnimationFrame$1 = (function () {\r\n    if (typeof requestAnimationFrame === 'function') {\r\n        // It's required to use a bounded function because IE sometimes throws\r\n        // an \"Invalid calling object\" error if rAF is invoked without the global\r\n        // object on the left hand side.\r\n        return requestAnimationFrame.bind(global$1);\r\n    }\r\n    return function (callback) { return setTimeout(function () { return callback(Date.now()); }, 1000 / 60); };\r\n})();\n\n// Defines minimum timeout before adding a trailing call.\r\nvar trailingTimeout = 2;\r\n/**\r\n * Creates a wrapper function which ensures that provided callback will be\r\n * invoked only once during the specified delay period.\r\n *\r\n * @param {Function} callback - Function to be invoked after the delay period.\r\n * @param {number} delay - Delay after which to invoke callback.\r\n * @returns {Function}\r\n */\r\nfunction throttle (callback, delay) {\r\n    var leadingCall = false, trailingCall = false, lastCallTime = 0;\r\n    /**\r\n     * Invokes the original callback function and schedules new invocation if\r\n     * the \"proxy\" was called during current request.\r\n     *\r\n     * @returns {void}\r\n     */\r\n    function resolvePending() {\r\n        if (leadingCall) {\r\n            leadingCall = false;\r\n            callback();\r\n        }\r\n        if (trailingCall) {\r\n            proxy();\r\n        }\r\n    }\r\n    /**\r\n     * Callback invoked after the specified delay. It will further postpone\r\n     * invocation of the original function delegating it to the\r\n     * requestAnimationFrame.\r\n     *\r\n     * @returns {void}\r\n     */\r\n    function timeoutCallback() {\r\n        requestAnimationFrame$1(resolvePending);\r\n    }\r\n    /**\r\n     * Schedules invocation of the original function.\r\n     *\r\n     * @returns {void}\r\n     */\r\n    function proxy() {\r\n        var timeStamp = Date.now();\r\n        if (leadingCall) {\r\n            // Reject immediately following calls.\r\n            if (timeStamp - lastCallTime < trailingTimeout) {\r\n                return;\r\n            }\r\n            // Schedule new call to be in invoked when the pending one is resolved.\r\n            // This is important for \"transitions\" which never actually start\r\n            // immediately so there is a chance that we might miss one if change\r\n            // happens amids the pending invocation.\r\n            trailingCall = true;\r\n        }\r\n        else {\r\n            leadingCall = true;\r\n            trailingCall = false;\r\n            setTimeout(timeoutCallback, delay);\r\n        }\r\n        lastCallTime = timeStamp;\r\n    }\r\n    return proxy;\r\n}\n\n// Minimum delay before invoking the update of observers.\r\nvar REFRESH_DELAY = 20;\r\n// A list of substrings of CSS properties used to find transition events that\r\n// might affect dimensions of observed elements.\r\nvar transitionKeys = ['top', 'right', 'bottom', 'left', 'width', 'height', 'size', 'weight'];\r\n// Check if MutationObserver is available.\r\nvar mutationObserverSupported = typeof MutationObserver !== 'undefined';\r\n/**\r\n * Singleton controller class which handles updates of ResizeObserver instances.\r\n */\r\nvar ResizeObserverController = /** @class */ (function () {\r\n    /**\r\n     * Creates a new instance of ResizeObserverController.\r\n     *\r\n     * @private\r\n     */\r\n    function ResizeObserverController() {\r\n        /**\r\n         * Indicates whether DOM listeners have been added.\r\n         *\r\n         * @private {boolean}\r\n         */\r\n        this.connected_ = false;\r\n        /**\r\n         * Tells that controller has subscribed for Mutation Events.\r\n         *\r\n         * @private {boolean}\r\n         */\r\n        this.mutationEventsAdded_ = false;\r\n        /**\r\n         * Keeps reference to the instance of MutationObserver.\r\n         *\r\n         * @private {MutationObserver}\r\n         */\r\n        this.mutationsObserver_ = null;\r\n        /**\r\n         * A list of connected observers.\r\n         *\r\n         * @private {Array<ResizeObserverSPI>}\r\n         */\r\n        this.observers_ = [];\r\n        this.onTransitionEnd_ = this.onTransitionEnd_.bind(this);\r\n        this.refresh = throttle(this.refresh.bind(this), REFRESH_DELAY);\r\n    }\r\n    /**\r\n     * Adds observer to observers list.\r\n     *\r\n     * @param {ResizeObserverSPI} observer - Observer to be added.\r\n     * @returns {void}\r\n     */\r\n    ResizeObserverController.prototype.addObserver = function (observer) {\r\n        if (!~this.observers_.indexOf(observer)) {\r\n            this.observers_.push(observer);\r\n        }\r\n        // Add listeners if they haven't been added yet.\r\n        if (!this.connected_) {\r\n            this.connect_();\r\n        }\r\n    };\r\n    /**\r\n     * Removes observer from observers list.\r\n     *\r\n     * @param {ResizeObserverSPI} observer - Observer to be removed.\r\n     * @returns {void}\r\n     */\r\n    ResizeObserverController.prototype.removeObserver = function (observer) {\r\n        var observers = this.observers_;\r\n        var index = observers.indexOf(observer);\r\n        // Remove observer if it's present in registry.\r\n        if (~index) {\r\n            observers.splice(index, 1);\r\n        }\r\n        // Remove listeners if controller has no connected observers.\r\n        if (!observers.length && this.connected_) {\r\n            this.disconnect_();\r\n        }\r\n    };\r\n    /**\r\n     * Invokes the update of observers. It will continue running updates insofar\r\n     * it detects changes.\r\n     *\r\n     * @returns {void}\r\n     */\r\n    ResizeObserverController.prototype.refresh = function () {\r\n        var changesDetected = this.updateObservers_();\r\n        // Continue running updates if changes have been detected as there might\r\n        // be future ones caused by CSS transitions.\r\n        if (changesDetected) {\r\n            this.refresh();\r\n        }\r\n    };\r\n    /**\r\n     * Updates every observer from observers list and notifies them of queued\r\n     * entries.\r\n     *\r\n     * @private\r\n     * @returns {boolean} Returns \"true\" if any observer has detected changes in\r\n     *      dimensions of it's elements.\r\n     */\r\n    ResizeObserverController.prototype.updateObservers_ = function () {\r\n        // Collect observers that have active observations.\r\n        var activeObservers = this.observers_.filter(function (observer) {\r\n            return observer.gatherActive(), observer.hasActive();\r\n        });\r\n        // Deliver notifications in a separate cycle in order to avoid any\r\n        // collisions between observers, e.g. when multiple instances of\r\n        // ResizeObserver are tracking the same element and the callback of one\r\n        // of them changes content dimensions of the observed target. Sometimes\r\n        // this may result in notifications being blocked for the rest of observers.\r\n        activeObservers.forEach(function (observer) { return observer.broadcastActive(); });\r\n        return activeObservers.length > 0;\r\n    };\r\n    /**\r\n     * Initializes DOM listeners.\r\n     *\r\n     * @private\r\n     * @returns {void}\r\n     */\r\n    ResizeObserverController.prototype.connect_ = function () {\r\n        // Do nothing if running in a non-browser environment or if listeners\r\n        // have been already added.\r\n        if (!isBrowser || this.connected_) {\r\n            return;\r\n        }\r\n        // Subscription to the \"Transitionend\" event is used as a workaround for\r\n        // delayed transitions. This way it's possible to capture at least the\r\n        // final state of an element.\r\n        document.addEventListener('transitionend', this.onTransitionEnd_);\r\n        window.addEventListener('resize', this.refresh);\r\n        if (mutationObserverSupported) {\r\n            this.mutationsObserver_ = new MutationObserver(this.refresh);\r\n            this.mutationsObserver_.observe(document, {\r\n                attributes: true,\r\n                childList: true,\r\n                characterData: true,\r\n                subtree: true\r\n            });\r\n        }\r\n        else {\r\n            document.addEventListener('DOMSubtreeModified', this.refresh);\r\n            this.mutationEventsAdded_ = true;\r\n        }\r\n        this.connected_ = true;\r\n    };\r\n    /**\r\n     * Removes DOM listeners.\r\n     *\r\n     * @private\r\n     * @returns {void}\r\n     */\r\n    ResizeObserverController.prototype.disconnect_ = function () {\r\n        // Do nothing if running in a non-browser environment or if listeners\r\n        // have been already removed.\r\n        if (!isBrowser || !this.connected_) {\r\n            return;\r\n        }\r\n        document.removeEventListener('transitionend', this.onTransitionEnd_);\r\n        window.removeEventListener('resize', this.refresh);\r\n        if (this.mutationsObserver_) {\r\n            this.mutationsObserver_.disconnect();\r\n        }\r\n        if (this.mutationEventsAdded_) {\r\n            document.removeEventListener('DOMSubtreeModified', this.refresh);\r\n        }\r\n        this.mutationsObserver_ = null;\r\n        this.mutationEventsAdded_ = false;\r\n        this.connected_ = false;\r\n    };\r\n    /**\r\n     * \"Transitionend\" event handler.\r\n     *\r\n     * @private\r\n     * @param {TransitionEvent} event\r\n     * @returns {void}\r\n     */\r\n    ResizeObserverController.prototype.onTransitionEnd_ = function (_a) {\r\n        var _b = _a.propertyName, propertyName = _b === void 0 ? '' : _b;\r\n        // Detect whether transition may affect dimensions of an element.\r\n        var isReflowProperty = transitionKeys.some(function (key) {\r\n            return !!~propertyName.indexOf(key);\r\n        });\r\n        if (isReflowProperty) {\r\n            this.refresh();\r\n        }\r\n    };\r\n    /**\r\n     * Returns instance of the ResizeObserverController.\r\n     *\r\n     * @returns {ResizeObserverController}\r\n     */\r\n    ResizeObserverController.getInstance = function () {\r\n        if (!this.instance_) {\r\n            this.instance_ = new ResizeObserverController();\r\n        }\r\n        return this.instance_;\r\n    };\r\n    /**\r\n     * Holds reference to the controller's instance.\r\n     *\r\n     * @private {ResizeObserverController}\r\n     */\r\n    ResizeObserverController.instance_ = null;\r\n    return ResizeObserverController;\r\n}());\n\n/**\r\n * Defines non-writable/enumerable properties of the provided target object.\r\n *\r\n * @param {Object} target - Object for which to define properties.\r\n * @param {Object} props - Properties to be defined.\r\n * @returns {Object} Target object.\r\n */\r\nvar defineConfigurable = (function (target, props) {\r\n    for (var _i = 0, _a = Object.keys(props); _i < _a.length; _i++) {\r\n        var key = _a[_i];\r\n        Object.defineProperty(target, key, {\r\n            value: props[key],\r\n            enumerable: false,\r\n            writable: false,\r\n            configurable: true\r\n        });\r\n    }\r\n    return target;\r\n});\n\n/**\r\n * Returns the global object associated with provided element.\r\n *\r\n * @param {Object} target\r\n * @returns {Object}\r\n */\r\nvar getWindowOf = (function (target) {\r\n    // Assume that the element is an instance of Node, which means that it\r\n    // has the \"ownerDocument\" property from which we can retrieve a\r\n    // corresponding global object.\r\n    var ownerGlobal = target && target.ownerDocument && target.ownerDocument.defaultView;\r\n    // Return the local global object if it's not possible extract one from\r\n    // provided element.\r\n    return ownerGlobal || global$1;\r\n});\n\n// Placeholder of an empty content rectangle.\r\nvar emptyRect = createRectInit(0, 0, 0, 0);\r\n/**\r\n * Converts provided string to a number.\r\n *\r\n * @param {number|string} value\r\n * @returns {number}\r\n */\r\nfunction toFloat(value) {\r\n    return parseFloat(value) || 0;\r\n}\r\n/**\r\n * Extracts borders size from provided styles.\r\n *\r\n * @param {CSSStyleDeclaration} styles\r\n * @param {...string} positions - Borders positions (top, right, ...)\r\n * @returns {number}\r\n */\r\nfunction getBordersSize(styles) {\r\n    var positions = [];\r\n    for (var _i = 1; _i < arguments.length; _i++) {\r\n        positions[_i - 1] = arguments[_i];\r\n    }\r\n    return positions.reduce(function (size, position) {\r\n        var value = styles['border-' + position + '-width'];\r\n        return size + toFloat(value);\r\n    }, 0);\r\n}\r\n/**\r\n * Extracts paddings sizes from provided styles.\r\n *\r\n * @param {CSSStyleDeclaration} styles\r\n * @returns {Object} Paddings box.\r\n */\r\nfunction getPaddings(styles) {\r\n    var positions = ['top', 'right', 'bottom', 'left'];\r\n    var paddings = {};\r\n    for (var _i = 0, positions_1 = positions; _i < positions_1.length; _i++) {\r\n        var position = positions_1[_i];\r\n        var value = styles['padding-' + position];\r\n        paddings[position] = toFloat(value);\r\n    }\r\n    return paddings;\r\n}\r\n/**\r\n * Calculates content rectangle of provided SVG element.\r\n *\r\n * @param {SVGGraphicsElement} target - Element content rectangle of which needs\r\n *      to be calculated.\r\n * @returns {DOMRectInit}\r\n */\r\nfunction getSVGContentRect(target) {\r\n    var bbox = target.getBBox();\r\n    return createRectInit(0, 0, bbox.width, bbox.height);\r\n}\r\n/**\r\n * Calculates content rectangle of provided HTMLElement.\r\n *\r\n * @param {HTMLElement} target - Element for which to calculate the content rectangle.\r\n * @returns {DOMRectInit}\r\n */\r\nfunction getHTMLElementContentRect(target) {\r\n    // Client width & height properties can't be\r\n    // used exclusively as they provide rounded values.\r\n    var clientWidth = target.clientWidth, clientHeight = target.clientHeight;\r\n    // By this condition we can catch all non-replaced inline, hidden and\r\n    // detached elements. Though elements with width & height properties less\r\n    // than 0.5 will be discarded as well.\r\n    //\r\n    // Without it we would need to implement separate methods for each of\r\n    // those cases and it's not possible to perform a precise and performance\r\n    // effective test for hidden elements. E.g. even jQuery's ':visible' filter\r\n    // gives wrong results for elements with width & height less than 0.5.\r\n    if (!clientWidth && !clientHeight) {\r\n        return emptyRect;\r\n    }\r\n    var styles = getWindowOf(target).getComputedStyle(target);\r\n    var paddings = getPaddings(styles);\r\n    var horizPad = paddings.left + paddings.right;\r\n    var vertPad = paddings.top + paddings.bottom;\r\n    // Computed styles of width & height are being used because they are the\r\n    // only dimensions available to JS that contain non-rounded values. It could\r\n    // be possible to utilize the getBoundingClientRect if only it's data wasn't\r\n    // affected by CSS transformations let alone paddings, borders and scroll bars.\r\n    var width = toFloat(styles.width), height = toFloat(styles.height);\r\n    // Width & height include paddings and borders when the 'border-box' box\r\n    // model is applied (except for IE).\r\n    if (styles.boxSizing === 'border-box') {\r\n        // Following conditions are required to handle Internet Explorer which\r\n        // doesn't include paddings and borders to computed CSS dimensions.\r\n        //\r\n        // We can say that if CSS dimensions + paddings are equal to the \"client\"\r\n        // properties then it's either IE, and thus we don't need to subtract\r\n        // anything, or an element merely doesn't have paddings/borders styles.\r\n        if (Math.round(width + horizPad) !== clientWidth) {\r\n            width -= getBordersSize(styles, 'left', 'right') + horizPad;\r\n        }\r\n        if (Math.round(height + vertPad) !== clientHeight) {\r\n            height -= getBordersSize(styles, 'top', 'bottom') + vertPad;\r\n        }\r\n    }\r\n    // Following steps can't be applied to the document's root element as its\r\n    // client[Width/Height] properties represent viewport area of the window.\r\n    // Besides, it's as well not necessary as the <html> itself neither has\r\n    // rendered scroll bars nor it can be clipped.\r\n    if (!isDocumentElement(target)) {\r\n        // In some browsers (only in Firefox, actually) CSS width & height\r\n        // include scroll bars size which can be removed at this step as scroll\r\n        // bars are the only difference between rounded dimensions + paddings\r\n        // and \"client\" properties, though that is not always true in Chrome.\r\n        var vertScrollbar = Math.round(width + horizPad) - clientWidth;\r\n        var horizScrollbar = Math.round(height + vertPad) - clientHeight;\r\n        // Chrome has a rather weird rounding of \"client\" properties.\r\n        // E.g. for an element with content width of 314.2px it sometimes gives\r\n        // the client width of 315px and for the width of 314.7px it may give\r\n        // 314px. And it doesn't happen all the time. So just ignore this delta\r\n        // as a non-relevant.\r\n        if (Math.abs(vertScrollbar) !== 1) {\r\n            width -= vertScrollbar;\r\n        }\r\n        if (Math.abs(horizScrollbar) !== 1) {\r\n            height -= horizScrollbar;\r\n        }\r\n    }\r\n    return createRectInit(paddings.left, paddings.top, width, height);\r\n}\r\n/**\r\n * Checks whether provided element is an instance of the SVGGraphicsElement.\r\n *\r\n * @param {Element} target - Element to be checked.\r\n * @returns {boolean}\r\n */\r\nvar isSVGGraphicsElement = (function () {\r\n    // Some browsers, namely IE and Edge, don't have the SVGGraphicsElement\r\n    // interface.\r\n    if (typeof SVGGraphicsElement !== 'undefined') {\r\n        return function (target) { return target instanceof getWindowOf(target).SVGGraphicsElement; };\r\n    }\r\n    // If it's so, then check that element is at least an instance of the\r\n    // SVGElement and that it has the \"getBBox\" method.\r\n    // eslint-disable-next-line no-extra-parens\r\n    return function (target) { return (target instanceof getWindowOf(target).SVGElement &&\r\n        typeof target.getBBox === 'function'); };\r\n})();\r\n/**\r\n * Checks whether provided element is a document element (<html>).\r\n *\r\n * @param {Element} target - Element to be checked.\r\n * @returns {boolean}\r\n */\r\nfunction isDocumentElement(target) {\r\n    return target === getWindowOf(target).document.documentElement;\r\n}\r\n/**\r\n * Calculates an appropriate content rectangle for provided html or svg element.\r\n *\r\n * @param {Element} target - Element content rectangle of which needs to be calculated.\r\n * @returns {DOMRectInit}\r\n */\r\nfunction getContentRect(target) {\r\n    if (!isBrowser) {\r\n        return emptyRect;\r\n    }\r\n    if (isSVGGraphicsElement(target)) {\r\n        return getSVGContentRect(target);\r\n    }\r\n    return getHTMLElementContentRect(target);\r\n}\r\n/**\r\n * Creates rectangle with an interface of the DOMRectReadOnly.\r\n * Spec: https://drafts.fxtf.org/geometry/#domrectreadonly\r\n *\r\n * @param {DOMRectInit} rectInit - Object with rectangle's x/y coordinates and dimensions.\r\n * @returns {DOMRectReadOnly}\r\n */\r\nfunction createReadOnlyRect(_a) {\r\n    var x = _a.x, y = _a.y, width = _a.width, height = _a.height;\r\n    // If DOMRectReadOnly is available use it as a prototype for the rectangle.\r\n    var Constr = typeof DOMRectReadOnly !== 'undefined' ? DOMRectReadOnly : Object;\r\n    var rect = Object.create(Constr.prototype);\r\n    // Rectangle's properties are not writable and non-enumerable.\r\n    defineConfigurable(rect, {\r\n        x: x, y: y, width: width, height: height,\r\n        top: y,\r\n        right: x + width,\r\n        bottom: height + y,\r\n        left: x\r\n    });\r\n    return rect;\r\n}\r\n/**\r\n * Creates DOMRectInit object based on the provided dimensions and the x/y coordinates.\r\n * Spec: https://drafts.fxtf.org/geometry/#dictdef-domrectinit\r\n *\r\n * @param {number} x - X coordinate.\r\n * @param {number} y - Y coordinate.\r\n * @param {number} width - Rectangle's width.\r\n * @param {number} height - Rectangle's height.\r\n * @returns {DOMRectInit}\r\n */\r\nfunction createRectInit(x, y, width, height) {\r\n    return { x: x, y: y, width: width, height: height };\r\n}\n\n/**\r\n * Class that is responsible for computations of the content rectangle of\r\n * provided DOM element and for keeping track of it's changes.\r\n */\r\nvar ResizeObservation = /** @class */ (function () {\r\n    /**\r\n     * Creates an instance of ResizeObservation.\r\n     *\r\n     * @param {Element} target - Element to be observed.\r\n     */\r\n    function ResizeObservation(target) {\r\n        /**\r\n         * Broadcasted width of content rectangle.\r\n         *\r\n         * @type {number}\r\n         */\r\n        this.broadcastWidth = 0;\r\n        /**\r\n         * Broadcasted height of content rectangle.\r\n         *\r\n         * @type {number}\r\n         */\r\n        this.broadcastHeight = 0;\r\n        /**\r\n         * Reference to the last observed content rectangle.\r\n         *\r\n         * @private {DOMRectInit}\r\n         */\r\n        this.contentRect_ = createRectInit(0, 0, 0, 0);\r\n        this.target = target;\r\n    }\r\n    /**\r\n     * Updates content rectangle and tells whether it's width or height properties\r\n     * have changed since the last broadcast.\r\n     *\r\n     * @returns {boolean}\r\n     */\r\n    ResizeObservation.prototype.isActive = function () {\r\n        var rect = getContentRect(this.target);\r\n        this.contentRect_ = rect;\r\n        return (rect.width !== this.broadcastWidth ||\r\n            rect.height !== this.broadcastHeight);\r\n    };\r\n    /**\r\n     * Updates 'broadcastWidth' and 'broadcastHeight' properties with a data\r\n     * from the corresponding properties of the last observed content rectangle.\r\n     *\r\n     * @returns {DOMRectInit} Last observed content rectangle.\r\n     */\r\n    ResizeObservation.prototype.broadcastRect = function () {\r\n        var rect = this.contentRect_;\r\n        this.broadcastWidth = rect.width;\r\n        this.broadcastHeight = rect.height;\r\n        return rect;\r\n    };\r\n    return ResizeObservation;\r\n}());\n\nvar ResizeObserverEntry = /** @class */ (function () {\r\n    /**\r\n     * Creates an instance of ResizeObserverEntry.\r\n     *\r\n     * @param {Element} target - Element that is being observed.\r\n     * @param {DOMRectInit} rectInit - Data of the element's content rectangle.\r\n     */\r\n    function ResizeObserverEntry(target, rectInit) {\r\n        var contentRect = createReadOnlyRect(rectInit);\r\n        // According to the specification following properties are not writable\r\n        // and are also not enumerable in the native implementation.\r\n        //\r\n        // Property accessors are not being used as they'd require to define a\r\n        // private WeakMap storage which may cause memory leaks in browsers that\r\n        // don't support this type of collections.\r\n        defineConfigurable(this, { target: target, contentRect: contentRect });\r\n    }\r\n    return ResizeObserverEntry;\r\n}());\n\nvar ResizeObserverSPI = /** @class */ (function () {\r\n    /**\r\n     * Creates a new instance of ResizeObserver.\r\n     *\r\n     * @param {ResizeObserverCallback} callback - Callback function that is invoked\r\n     *      when one of the observed elements changes it's content dimensions.\r\n     * @param {ResizeObserverController} controller - Controller instance which\r\n     *      is responsible for the updates of observer.\r\n     * @param {ResizeObserver} callbackCtx - Reference to the public\r\n     *      ResizeObserver instance which will be passed to callback function.\r\n     */\r\n    function ResizeObserverSPI(callback, controller, callbackCtx) {\r\n        /**\r\n         * Collection of resize observations that have detected changes in dimensions\r\n         * of elements.\r\n         *\r\n         * @private {Array<ResizeObservation>}\r\n         */\r\n        this.activeObservations_ = [];\r\n        /**\r\n         * Registry of the ResizeObservation instances.\r\n         *\r\n         * @private {Map<Element, ResizeObservation>}\r\n         */\r\n        this.observations_ = new MapShim();\r\n        if (typeof callback !== 'function') {\r\n            throw new TypeError('The callback provided as parameter 1 is not a function.');\r\n        }\r\n        this.callback_ = callback;\r\n        this.controller_ = controller;\r\n        this.callbackCtx_ = callbackCtx;\r\n    }\r\n    /**\r\n     * Starts observing provided element.\r\n     *\r\n     * @param {Element} target - Element to be observed.\r\n     * @returns {void}\r\n     */\r\n    ResizeObserverSPI.prototype.observe = function (target) {\r\n        if (!arguments.length) {\r\n            throw new TypeError('1 argument required, but only 0 present.');\r\n        }\r\n        // Do nothing if current environment doesn't have the Element interface.\r\n        if (typeof Element === 'undefined' || !(Element instanceof Object)) {\r\n            return;\r\n        }\r\n        if (!(target instanceof getWindowOf(target).Element)) {\r\n            throw new TypeError('parameter 1 is not of type \"Element\".');\r\n        }\r\n        var observations = this.observations_;\r\n        // Do nothing if element is already being observed.\r\n        if (observations.has(target)) {\r\n            return;\r\n        }\r\n        observations.set(target, new ResizeObservation(target));\r\n        this.controller_.addObserver(this);\r\n        // Force the update of observations.\r\n        this.controller_.refresh();\r\n    };\r\n    /**\r\n     * Stops observing provided element.\r\n     *\r\n     * @param {Element} target - Element to stop observing.\r\n     * @returns {void}\r\n     */\r\n    ResizeObserverSPI.prototype.unobserve = function (target) {\r\n        if (!arguments.length) {\r\n            throw new TypeError('1 argument required, but only 0 present.');\r\n        }\r\n        // Do nothing if current environment doesn't have the Element interface.\r\n        if (typeof Element === 'undefined' || !(Element instanceof Object)) {\r\n            return;\r\n        }\r\n        if (!(target instanceof getWindowOf(target).Element)) {\r\n            throw new TypeError('parameter 1 is not of type \"Element\".');\r\n        }\r\n        var observations = this.observations_;\r\n        // Do nothing if element is not being observed.\r\n        if (!observations.has(target)) {\r\n            return;\r\n        }\r\n        observations.delete(target);\r\n        if (!observations.size) {\r\n            this.controller_.removeObserver(this);\r\n        }\r\n    };\r\n    /**\r\n     * Stops observing all elements.\r\n     *\r\n     * @returns {void}\r\n     */\r\n    ResizeObserverSPI.prototype.disconnect = function () {\r\n        this.clearActive();\r\n        this.observations_.clear();\r\n        this.controller_.removeObserver(this);\r\n    };\r\n    /**\r\n     * Collects observation instances the associated element of which has changed\r\n     * it's content rectangle.\r\n     *\r\n     * @returns {void}\r\n     */\r\n    ResizeObserverSPI.prototype.gatherActive = function () {\r\n        var _this = this;\r\n        this.clearActive();\r\n        this.observations_.forEach(function (observation) {\r\n            if (observation.isActive()) {\r\n                _this.activeObservations_.push(observation);\r\n            }\r\n        });\r\n    };\r\n    /**\r\n     * Invokes initial callback function with a list of ResizeObserverEntry\r\n     * instances collected from active resize observations.\r\n     *\r\n     * @returns {void}\r\n     */\r\n    ResizeObserverSPI.prototype.broadcastActive = function () {\r\n        // Do nothing if observer doesn't have active observations.\r\n        if (!this.hasActive()) {\r\n            return;\r\n        }\r\n        var ctx = this.callbackCtx_;\r\n        // Create ResizeObserverEntry instance for every active observation.\r\n        var entries = this.activeObservations_.map(function (observation) {\r\n            return new ResizeObserverEntry(observation.target, observation.broadcastRect());\r\n        });\r\n        this.callback_.call(ctx, entries, ctx);\r\n        this.clearActive();\r\n    };\r\n    /**\r\n     * Clears the collection of active observations.\r\n     *\r\n     * @returns {void}\r\n     */\r\n    ResizeObserverSPI.prototype.clearActive = function () {\r\n        this.activeObservations_.splice(0);\r\n    };\r\n    /**\r\n     * Tells whether observer has active observations.\r\n     *\r\n     * @returns {boolean}\r\n     */\r\n    ResizeObserverSPI.prototype.hasActive = function () {\r\n        return this.activeObservations_.length > 0;\r\n    };\r\n    return ResizeObserverSPI;\r\n}());\n\n// Registry of internal observers. If WeakMap is not available use current shim\r\n// for the Map collection as it has all required methods and because WeakMap\r\n// can't be fully polyfilled anyway.\r\nvar observers = typeof WeakMap !== 'undefined' ? new WeakMap() : new MapShim();\r\n/**\r\n * ResizeObserver API. Encapsulates the ResizeObserver SPI implementation\r\n * exposing only those methods and properties that are defined in the spec.\r\n */\r\nvar ResizeObserver = /** @class */ (function () {\r\n    /**\r\n     * Creates a new instance of ResizeObserver.\r\n     *\r\n     * @param {ResizeObserverCallback} callback - Callback that is invoked when\r\n     *      dimensions of the observed elements change.\r\n     */\r\n    function ResizeObserver(callback) {\r\n        if (!(this instanceof ResizeObserver)) {\r\n            throw new TypeError('Cannot call a class as a function.');\r\n        }\r\n        if (!arguments.length) {\r\n            throw new TypeError('1 argument required, but only 0 present.');\r\n        }\r\n        var controller = ResizeObserverController.getInstance();\r\n        var observer = new ResizeObserverSPI(callback, controller, this);\r\n        observers.set(this, observer);\r\n    }\r\n    return ResizeObserver;\r\n}());\r\n// Expose public methods of ResizeObserver.\r\n[\r\n    'observe',\r\n    'unobserve',\r\n    'disconnect'\r\n].forEach(function (method) {\r\n    ResizeObserver.prototype[method] = function () {\r\n        var _a;\r\n        return (_a = observers.get(this))[method].apply(_a, arguments);\r\n    };\r\n});\n\nvar index = (function () {\r\n    // Export existing implementation if available.\r\n    if (typeof global$1.ResizeObserver !== 'undefined') {\r\n        return global$1.ResizeObserver;\r\n    }\r\n    return ResizeObserver;\r\n})();\n\nexport default index;\n","import Cookies from 'js-cookie';\nimport ResizeObserver from 'resize-observer-polyfill';\n\nexport default function () {\n    const COOKIE_OPTIONS = {\n        path: '/',\n        expires: 1 / 4, // a quarter of a day -> 6 hours\n        domain: window.location.hostname,\n    };\n\n    const { body } = document;\n    const isHome = body.classList.contains('home');\n    const headerDefault = document.querySelector('.header__wrapper');\n    const headerLight = document.querySelector('.header-light__wrapper');\n    const banner = document.querySelector('[data-notification-banner]');\n\n    const adjustHeaderPosition = () => {\n        const header = headerDefault || headerLight;\n\n        if (isHome) {\n            /**\n             * The home is particular, as on desktop (large), there is no padding-top, the hero\n             * goes behind the navigation, that is transparent.\n             *\n             * Only on mobile and tablet, we want have the header included in the padding-top\n             * value.\n             */\n            if (window.innerWidth < window?.TNS?.config?.breakpoints?.lg) {\n                body.style.paddingTop = `${header.offsetHeight + banner.offsetHeight}px`;\n            } else {\n                body.style.paddingTop = `${banner.offsetHeight}px`;\n            }\n        } else {\n            body.style.paddingTop = `${header.offsetHeight + banner.offsetHeight}px`;\n        }\n\n        header.style.top = `${banner.offsetHeight}px`;\n    };\n\n    const observer = new ResizeObserver(() => {\n        adjustHeaderPosition();\n    });\n\n    const show = () => {\n        banner.style.display = 'block';\n        adjustHeaderPosition();\n    };\n\n    const hide = () => {\n        banner.style.display = 'none';\n        adjustHeaderPosition();\n        observer.unobserve(body);\n        body.style.removeProperty('padding-top');\n    };\n\n    const setSeenCookie = () => {\n        Cookies.set(\n            'notification-banner',\n            'seen',\n            COOKIE_OPTIONS,\n        );\n    };\n\n    const init = () => {\n        if (!banner || Cookies.get('notification-banner')) {\n            return;\n        }\n\n        observer.observe(body);\n\n        show(banner);\n\n        const closeBtn = banner.querySelector('[data-notification-banner-close]');\n\n        closeBtn.addEventListener(\n            'click',\n            () => {\n                setSeenCookie();\n                hide(banner);\n            },\n        );\n    };\n\n    init();\n}\n","import MicroModal from 'micromodal';\n\nexport default function () {\n    MicroModal.init({\n        awaitOpenAnimation: true,\n        awaitCloseAnimation: true,\n        disableFocus: true,\n        onClose(modal, element, event) {\n            /**\n             * Fixes https://github.com/ghosh/Micromodal/issues/324\n             */\n            // MicroModal 0.7 calls onClose without an event (e.g. Escape while focus is outside the modal)\n            if (event) {\n                event.preventDefault();\n                event.stopPropagation();\n            }\n        },\n    });\n}\n","export default function getWindow(node) {\n  if (node == null) {\n    return window;\n  }\n\n  if (node.toString() !== '[object Window]') {\n    var ownerDocument = node.ownerDocument;\n    return ownerDocument ? ownerDocument.defaultView || window : window;\n  }\n\n  return node;\n}","import getWindow from \"./getWindow.js\";\n\nfunction isElement(node) {\n  var OwnElement = getWindow(node).Element;\n  return node instanceof OwnElement || node instanceof Element;\n}\n\nfunction isHTMLElement(node) {\n  var OwnElement = getWindow(node).HTMLElement;\n  return node instanceof OwnElement || node instanceof HTMLElement;\n}\n\nfunction isShadowRoot(node) {\n  // IE 11 has no ShadowRoot\n  if (typeof ShadowRoot === 'undefined') {\n    return false;\n  }\n\n  var OwnElement = getWindow(node).ShadowRoot;\n  return node instanceof OwnElement || node instanceof ShadowRoot;\n}\n\nexport { isElement, isHTMLElement, isShadowRoot };","export var max = Math.max;\nexport var min = Math.min;\nexport var round = Math.round;","export default function getUAString() {\n  var uaData = navigator.userAgentData;\n\n  if (uaData != null && uaData.brands && Array.isArray(uaData.brands)) {\n    return uaData.brands.map(function (item) {\n      return item.brand + \"/\" + item.version;\n    }).join(' ');\n  }\n\n  return navigator.userAgent;\n}","import { isElement, isHTMLElement } from \"./instanceOf.js\";\nimport { round } from \"../utils/math.js\";\nimport getWindow from \"./getWindow.js\";\nimport isLayoutViewport from \"./isLayoutViewport.js\";\nexport default function getBoundingClientRect(element, includeScale, isFixedStrategy) {\n  if (includeScale === void 0) {\n    includeScale = false;\n  }\n\n  if (isFixedStrategy === void 0) {\n    isFixedStrategy = false;\n  }\n\n  var clientRect = element.getBoundingClientRect();\n  var scaleX = 1;\n  var scaleY = 1;\n\n  if (includeScale && isHTMLElement(element)) {\n    scaleX = element.offsetWidth > 0 ? round(clientRect.width) / element.offsetWidth || 1 : 1;\n    scaleY = element.offsetHeight > 0 ? round(clientRect.height) / element.offsetHeight || 1 : 1;\n  }\n\n  var _ref = isElement(element) ? getWindow(element) : window,\n      visualViewport = _ref.visualViewport;\n\n  var addVisualOffsets = !isLayoutViewport() && isFixedStrategy;\n  var x = (clientRect.left + (addVisualOffsets && visualViewport ? visualViewport.offsetLeft : 0)) / scaleX;\n  var y = (clientRect.top + (addVisualOffsets && visualViewport ? visualViewport.offsetTop : 0)) / scaleY;\n  var width = clientRect.width / scaleX;\n  var height = clientRect.height / scaleY;\n  return {\n    width: width,\n    height: height,\n    top: y,\n    right: x + width,\n    bottom: y + height,\n    left: x,\n    x: x,\n    y: y\n  };\n}","import getUAString from \"../utils/userAgent.js\";\nexport default function isLayoutViewport() {\n  return !/^((?!chrome|android).)*safari/i.test(getUAString());\n}","import getWindow from \"./getWindow.js\";\nexport default function getWindowScroll(node) {\n  var win = getWindow(node);\n  var scrollLeft = win.pageXOffset;\n  var scrollTop = win.pageYOffset;\n  return {\n    scrollLeft: scrollLeft,\n    scrollTop: scrollTop\n  };\n}","export default function getNodeName(element) {\n  return element ? (element.nodeName || '').toLowerCase() : null;\n}","import { isElement } from \"./instanceOf.js\";\nexport default function getDocumentElement(element) {\n  // $FlowFixMe[incompatible-return]: assume body is always available\n  return ((isElement(element) ? element.ownerDocument : // $FlowFixMe[prop-missing]\n  element.document) || window.document).documentElement;\n}","import getWindow from \"./getWindow.js\";\nexport default function getComputedStyle(element) {\n  return getWindow(element).getComputedStyle(element);\n}","import getComputedStyle from \"./getComputedStyle.js\";\nexport default function isScrollParent(element) {\n  // Firefox wants us to check `-x` and `-y` variations as well\n  var _getComputedStyle = getComputedStyle(element),\n      overflow = _getComputedStyle.overflow,\n      overflowX = _getComputedStyle.overflowX,\n      overflowY = _getComputedStyle.overflowY;\n\n  return /auto|scroll|overlay|hidden/.test(overflow + overflowY + overflowX);\n}","import getBoundingClientRect from \"./getBoundingClientRect.js\";\nimport getNodeScroll from \"./getNodeScroll.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nimport getWindowScrollBarX from \"./getWindowScrollBarX.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport isScrollParent from \"./isScrollParent.js\";\nimport { round } from \"../utils/math.js\";\n\nfunction isElementScaled(element) {\n  var rect = element.getBoundingClientRect();\n  var scaleX = round(rect.width) / element.offsetWidth || 1;\n  var scaleY = round(rect.height) / element.offsetHeight || 1;\n  return scaleX !== 1 || scaleY !== 1;\n} // Returns the composite rect of an element relative to its offsetParent.\n// Composite means it takes into account transforms as well as layout.\n\n\nexport default function getCompositeRect(elementOrVirtualElement, offsetParent, isFixed) {\n  if (isFixed === void 0) {\n    isFixed = false;\n  }\n\n  var isOffsetParentAnElement = isHTMLElement(offsetParent);\n  var offsetParentIsScaled = isHTMLElement(offsetParent) && isElementScaled(offsetParent);\n  var documentElement = getDocumentElement(offsetParent);\n  var rect = getBoundingClientRect(elementOrVirtualElement, offsetParentIsScaled, isFixed);\n  var scroll = {\n    scrollLeft: 0,\n    scrollTop: 0\n  };\n  var offsets = {\n    x: 0,\n    y: 0\n  };\n\n  if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {\n    if (getNodeName(offsetParent) !== 'body' || // https://github.com/popperjs/popper-core/issues/1078\n    isScrollParent(documentElement)) {\n      scroll = getNodeScroll(offsetParent);\n    }\n\n    if (isHTMLElement(offsetParent)) {\n      offsets = getBoundingClientRect(offsetParent, true);\n      offsets.x += offsetParent.clientLeft;\n      offsets.y += offsetParent.clientTop;\n    } else if (documentElement) {\n      offsets.x = getWindowScrollBarX(documentElement);\n    }\n  }\n\n  return {\n    x: rect.left + scroll.scrollLeft - offsets.x,\n    y: rect.top + scroll.scrollTop - offsets.y,\n    width: rect.width,\n    height: rect.height\n  };\n}","import getWindowScroll from \"./getWindowScroll.js\";\nimport getWindow from \"./getWindow.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nimport getHTMLElementScroll from \"./getHTMLElementScroll.js\";\nexport default function getNodeScroll(node) {\n  if (node === getWindow(node) || !isHTMLElement(node)) {\n    return getWindowScroll(node);\n  } else {\n    return getHTMLElementScroll(node);\n  }\n}","export default function getHTMLElementScroll(element) {\n  return {\n    scrollLeft: element.scrollLeft,\n    scrollTop: element.scrollTop\n  };\n}","import getBoundingClientRect from \"./getBoundingClientRect.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport getWindowScroll from \"./getWindowScroll.js\";\nexport default function getWindowScrollBarX(element) {\n  // If <html> has a CSS width greater than the viewport, then this will be\n  // incorrect for RTL.\n  // Popper 1 is broken in this case and never had a bug report so let's assume\n  // it's not an issue. I don't think anyone ever specifies width on <html>\n  // anyway.\n  // Browsers where the left scrollbar doesn't cause an issue report `0` for\n  // this (e.g. Edge 2019, IE11, Safari)\n  return getBoundingClientRect(getDocumentElement(element)).left + getWindowScroll(element).scrollLeft;\n}","import getBoundingClientRect from \"./getBoundingClientRect.js\"; // Returns the layout rect of an element relative to its offsetParent. Layout\n// means it doesn't take into account transforms.\n\nexport default function getLayoutRect(element) {\n  var clientRect = getBoundingClientRect(element); // Use the clientRect sizes if it's not been transformed.\n  // Fixes https://github.com/popperjs/popper-core/issues/1223\n\n  var width = element.offsetWidth;\n  var height = element.offsetHeight;\n\n  if (Math.abs(clientRect.width - width) <= 1) {\n    width = clientRect.width;\n  }\n\n  if (Math.abs(clientRect.height - height) <= 1) {\n    height = clientRect.height;\n  }\n\n  return {\n    x: element.offsetLeft,\n    y: element.offsetTop,\n    width: width,\n    height: height\n  };\n}","import getNodeName from \"./getNodeName.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport { isShadowRoot } from \"./instanceOf.js\";\nexport default function getParentNode(element) {\n  if (getNodeName(element) === 'html') {\n    return element;\n  }\n\n  return (// this is a quicker (but less type safe) way to save quite some bytes from the bundle\n    // $FlowFixMe[incompatible-return]\n    // $FlowFixMe[prop-missing]\n    element.assignedSlot || // step into the shadow DOM of the parent of a slotted node\n    element.parentNode || ( // DOM Element detected\n    isShadowRoot(element) ? element.host : null) || // ShadowRoot detected\n    // $FlowFixMe[incompatible-call]: HTMLElement is a Node\n    getDocumentElement(element) // fallback\n\n  );\n}","import getParentNode from \"./getParentNode.js\";\nimport isScrollParent from \"./isScrollParent.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nexport default function getScrollParent(node) {\n  if (['html', 'body', '#document'].indexOf(getNodeName(node)) >= 0) {\n    // $FlowFixMe[incompatible-return]: assume body is always available\n    return node.ownerDocument.body;\n  }\n\n  if (isHTMLElement(node) && isScrollParent(node)) {\n    return node;\n  }\n\n  return getScrollParent(getParentNode(node));\n}","import getScrollParent from \"./getScrollParent.js\";\nimport getParentNode from \"./getParentNode.js\";\nimport getWindow from \"./getWindow.js\";\nimport isScrollParent from \"./isScrollParent.js\";\n/*\ngiven a DOM element, return the list of all scroll parents, up the list of ancesors\nuntil we get to the top window object. This list is what we attach scroll listeners\nto, because if any of these parent elements scroll, we'll need to re-calculate the\nreference element's position.\n*/\n\nexport default function listScrollParents(element, list) {\n  var _element$ownerDocumen;\n\n  if (list === void 0) {\n    list = [];\n  }\n\n  var scrollParent = getScrollParent(element);\n  var isBody = scrollParent === ((_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body);\n  var win = getWindow(scrollParent);\n  var target = isBody ? [win].concat(win.visualViewport || [], isScrollParent(scrollParent) ? scrollParent : []) : scrollParent;\n  var updatedList = list.concat(target);\n  return isBody ? updatedList : // $FlowFixMe[incompatible-call]: isBody tells us target will be an HTMLElement here\n  updatedList.concat(listScrollParents(getParentNode(target)));\n}","import getNodeName from \"./getNodeName.js\";\nexport default function isTableElement(element) {\n  return ['table', 'td', 'th'].indexOf(getNodeName(element)) >= 0;\n}","import getWindow from \"./getWindow.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport getComputedStyle from \"./getComputedStyle.js\";\nimport { isHTMLElement, isShadowRoot } from \"./instanceOf.js\";\nimport isTableElement from \"./isTableElement.js\";\nimport getParentNode from \"./getParentNode.js\";\nimport getUAString from \"../utils/userAgent.js\";\n\nfunction getTrueOffsetParent(element) {\n  if (!isHTMLElement(element) || // https://github.com/popperjs/popper-core/issues/837\n  getComputedStyle(element).position === 'fixed') {\n    return null;\n  }\n\n  return element.offsetParent;\n} // `.offsetParent` reports `null` for fixed elements, while absolute elements\n// return the containing block\n\n\nfunction getContainingBlock(element) {\n  var isFirefox = /firefox/i.test(getUAString());\n  var isIE = /Trident/i.test(getUAString());\n\n  if (isIE && isHTMLElement(element)) {\n    // In IE 9, 10 and 11 fixed elements containing block is always established by the viewport\n    var elementCss = getComputedStyle(element);\n\n    if (elementCss.position === 'fixed') {\n      return null;\n    }\n  }\n\n  var currentNode = getParentNode(element);\n\n  if (isShadowRoot(currentNode)) {\n    currentNode = currentNode.host;\n  }\n\n  while (isHTMLElement(currentNode) && ['html', 'body'].indexOf(getNodeName(currentNode)) < 0) {\n    var css = getComputedStyle(currentNode); // This is non-exhaustive but covers the most common CSS properties that\n    // create a containing block.\n    // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block\n\n    if (css.transform !== 'none' || css.perspective !== 'none' || css.contain === 'paint' || ['transform', 'perspective'].indexOf(css.willChange) !== -1 || isFirefox && css.willChange === 'filter' || isFirefox && css.filter && css.filter !== 'none') {\n      return currentNode;\n    } else {\n      currentNode = currentNode.parentNode;\n    }\n  }\n\n  return null;\n} // Gets the closest ancestor positioned element. Handles some edge cases,\n// such as table ancestors and cross browser bugs.\n\n\nexport default function getOffsetParent(element) {\n  var window = getWindow(element);\n  var offsetParent = getTrueOffsetParent(element);\n\n  while (offsetParent && isTableElement(offsetParent) && getComputedStyle(offsetParent).position === 'static') {\n    offsetParent = getTrueOffsetParent(offsetParent);\n  }\n\n  if (offsetParent && (getNodeName(offsetParent) === 'html' || getNodeName(offsetParent) === 'body' && getComputedStyle(offsetParent).position === 'static')) {\n    return window;\n  }\n\n  return offsetParent || getContainingBlock(element) || window;\n}","export var top = 'top';\nexport var bottom = 'bottom';\nexport var right = 'right';\nexport var left = 'left';\nexport var auto = 'auto';\nexport var basePlacements = [top, bottom, right, left];\nexport var start = 'start';\nexport var end = 'end';\nexport var clippingParents = 'clippingParents';\nexport var viewport = 'viewport';\nexport var popper = 'popper';\nexport var reference = 'reference';\nexport var variationPlacements = /*#__PURE__*/basePlacements.reduce(function (acc, placement) {\n  return acc.concat([placement + \"-\" + start, placement + \"-\" + end]);\n}, []);\nexport var placements = /*#__PURE__*/[].concat(basePlacements, [auto]).reduce(function (acc, placement) {\n  return acc.concat([placement, placement + \"-\" + start, placement + \"-\" + end]);\n}, []); // modifiers that need to read the DOM\n\nexport var beforeRead = 'beforeRead';\nexport var read = 'read';\nexport var afterRead = 'afterRead'; // pure-logic modifiers\n\nexport var beforeMain = 'beforeMain';\nexport var main = 'main';\nexport var afterMain = 'afterMain'; // modifier with the purpose to write to the DOM (or write into a framework state)\n\nexport var beforeWrite = 'beforeWrite';\nexport var write = 'write';\nexport var afterWrite = 'afterWrite';\nexport var modifierPhases = [beforeRead, read, afterRead, beforeMain, main, afterMain, beforeWrite, write, afterWrite];","import { modifierPhases } from \"../enums.js\"; // source: https://stackoverflow.com/questions/49875255\n\nfunction order(modifiers) {\n  var map = new Map();\n  var visited = new Set();\n  var result = [];\n  modifiers.forEach(function (modifier) {\n    map.set(modifier.name, modifier);\n  }); // On visiting object, check for its dependencies and visit them recursively\n\n  function sort(modifier) {\n    visited.add(modifier.name);\n    var requires = [].concat(modifier.requires || [], modifier.requiresIfExists || []);\n    requires.forEach(function (dep) {\n      if (!visited.has(dep)) {\n        var depModifier = map.get(dep);\n\n        if (depModifier) {\n          sort(depModifier);\n        }\n      }\n    });\n    result.push(modifier);\n  }\n\n  modifiers.forEach(function (modifier) {\n    if (!visited.has(modifier.name)) {\n      // check for visited object\n      sort(modifier);\n    }\n  });\n  return result;\n}\n\nexport default function orderModifiers(modifiers) {\n  // order based on dependencies\n  var orderedModifiers = order(modifiers); // order based on phase\n\n  return modifierPhases.reduce(function (acc, phase) {\n    return acc.concat(orderedModifiers.filter(function (modifier) {\n      return modifier.phase === phase;\n    }));\n  }, []);\n}","import getCompositeRect from \"./dom-utils/getCompositeRect.js\";\nimport getLayoutRect from \"./dom-utils/getLayoutRect.js\";\nimport listScrollParents from \"./dom-utils/listScrollParents.js\";\nimport getOffsetParent from \"./dom-utils/getOffsetParent.js\";\nimport orderModifiers from \"./utils/orderModifiers.js\";\nimport debounce from \"./utils/debounce.js\";\nimport mergeByName from \"./utils/mergeByName.js\";\nimport detectOverflow from \"./utils/detectOverflow.js\";\nimport { isElement } from \"./dom-utils/instanceOf.js\";\nvar DEFAULT_OPTIONS = {\n  placement: 'bottom',\n  modifiers: [],\n  strategy: 'absolute'\n};\n\nfunction areValidElements() {\n  for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n    args[_key] = arguments[_key];\n  }\n\n  return !args.some(function (element) {\n    return !(element && typeof element.getBoundingClientRect === 'function');\n  });\n}\n\nexport function popperGenerator(generatorOptions) {\n  if (generatorOptions === void 0) {\n    generatorOptions = {};\n  }\n\n  var _generatorOptions = generatorOptions,\n      _generatorOptions$def = _generatorOptions.defaultModifiers,\n      defaultModifiers = _generatorOptions$def === void 0 ? [] : _generatorOptions$def,\n      _generatorOptions$def2 = _generatorOptions.defaultOptions,\n      defaultOptions = _generatorOptions$def2 === void 0 ? DEFAULT_OPTIONS : _generatorOptions$def2;\n  return function createPopper(reference, popper, options) {\n    if (options === void 0) {\n      options = defaultOptions;\n    }\n\n    var state = {\n      placement: 'bottom',\n      orderedModifiers: [],\n      options: Object.assign({}, DEFAULT_OPTIONS, defaultOptions),\n      modifiersData: {},\n      elements: {\n        reference: reference,\n        popper: popper\n      },\n      attributes: {},\n      styles: {}\n    };\n    var effectCleanupFns = [];\n    var isDestroyed = false;\n    var instance = {\n      state: state,\n      setOptions: function setOptions(setOptionsAction) {\n        var options = typeof setOptionsAction === 'function' ? setOptionsAction(state.options) : setOptionsAction;\n        cleanupModifierEffects();\n        state.options = Object.assign({}, defaultOptions, state.options, options);\n        state.scrollParents = {\n          reference: isElement(reference) ? listScrollParents(reference) : reference.contextElement ? listScrollParents(reference.contextElement) : [],\n          popper: listScrollParents(popper)\n        }; // Orders the modifiers based on their dependencies and `phase`\n        // properties\n\n        var orderedModifiers = orderModifiers(mergeByName([].concat(defaultModifiers, state.options.modifiers))); // Strip out disabled modifiers\n\n        state.orderedModifiers = orderedModifiers.filter(function (m) {\n          return m.enabled;\n        });\n        runModifierEffects();\n        return instance.update();\n      },\n      // Sync update – it will always be executed, even if not necessary. This\n      // is useful for low frequency updates where sync behavior simplifies the\n      // logic.\n      // For high frequency updates (e.g. `resize` and `scroll` events), always\n      // prefer the async Popper#update method\n      forceUpdate: function forceUpdate() {\n        if (isDestroyed) {\n          return;\n        }\n\n        var _state$elements = state.elements,\n            reference = _state$elements.reference,\n            popper = _state$elements.popper; // Don't proceed if `reference` or `popper` are not valid elements\n        // anymore\n\n        if (!areValidElements(reference, popper)) {\n          return;\n        } // Store the reference and popper rects to be read by modifiers\n\n\n        state.rects = {\n          reference: getCompositeRect(reference, getOffsetParent(popper), state.options.strategy === 'fixed'),\n          popper: getLayoutRect(popper)\n        }; // Modifiers have the ability to reset the current update cycle. The\n        // most common use case for this is the `flip` modifier changing the\n        // placement, which then needs to re-run all the modifiers, because the\n        // logic was previously ran for the previous placement and is therefore\n        // stale/incorrect\n\n        state.reset = false;\n        state.placement = state.options.placement; // On each update cycle, the `modifiersData` property for each modifier\n        // is filled with the initial data specified by the modifier. This means\n        // it doesn't persist and is fresh on each update.\n        // To ensure persistent data, use `${name}#persistent`\n\n        state.orderedModifiers.forEach(function (modifier) {\n          return state.modifiersData[modifier.name] = Object.assign({}, modifier.data);\n        });\n\n        for (var index = 0; index < state.orderedModifiers.length; index++) {\n          if (state.reset === true) {\n            state.reset = false;\n            index = -1;\n            continue;\n          }\n\n          var _state$orderedModifie = state.orderedModifiers[index],\n              fn = _state$orderedModifie.fn,\n              _state$orderedModifie2 = _state$orderedModifie.options,\n              _options = _state$orderedModifie2 === void 0 ? {} : _state$orderedModifie2,\n              name = _state$orderedModifie.name;\n\n          if (typeof fn === 'function') {\n            state = fn({\n              state: state,\n              options: _options,\n              name: name,\n              instance: instance\n            }) || state;\n          }\n        }\n      },\n      // Async and optimistically optimized update – it will not be executed if\n      // not necessary (debounced to run at most once-per-tick)\n      update: debounce(function () {\n        return new Promise(function (resolve) {\n          instance.forceUpdate();\n          resolve(state);\n        });\n      }),\n      destroy: function destroy() {\n        cleanupModifierEffects();\n        isDestroyed = true;\n      }\n    };\n\n    if (!areValidElements(reference, popper)) {\n      return instance;\n    }\n\n    instance.setOptions(options).then(function (state) {\n      if (!isDestroyed && options.onFirstUpdate) {\n        options.onFirstUpdate(state);\n      }\n    }); // Modifiers have the ability to execute arbitrary code before the first\n    // update cycle runs. They will be executed in the same order as the update\n    // cycle. This is useful when a modifier adds some persistent data that\n    // other modifiers need to use, but the modifier is run after the dependent\n    // one.\n\n    function runModifierEffects() {\n      state.orderedModifiers.forEach(function (_ref) {\n        var name = _ref.name,\n            _ref$options = _ref.options,\n            options = _ref$options === void 0 ? {} : _ref$options,\n            effect = _ref.effect;\n\n        if (typeof effect === 'function') {\n          var cleanupFn = effect({\n            state: state,\n            name: name,\n            instance: instance,\n            options: options\n          });\n\n          var noopFn = function noopFn() {};\n\n          effectCleanupFns.push(cleanupFn || noopFn);\n        }\n      });\n    }\n\n    function cleanupModifierEffects() {\n      effectCleanupFns.forEach(function (fn) {\n        return fn();\n      });\n      effectCleanupFns = [];\n    }\n\n    return instance;\n  };\n}\nexport var createPopper = /*#__PURE__*/popperGenerator(); // eslint-disable-next-line import/no-unused-modules\n\nexport { detectOverflow };","export default function debounce(fn) {\n  var pending;\n  return function () {\n    if (!pending) {\n      pending = new Promise(function (resolve) {\n        Promise.resolve().then(function () {\n          pending = undefined;\n          resolve(fn());\n        });\n      });\n    }\n\n    return pending;\n  };\n}","export default function mergeByName(modifiers) {\n  var merged = modifiers.reduce(function (merged, current) {\n    var existing = merged[current.name];\n    merged[current.name] = existing ? Object.assign({}, existing, current, {\n      options: Object.assign({}, existing.options, current.options),\n      data: Object.assign({}, existing.data, current.data)\n    }) : current;\n    return merged;\n  }, {}); // IE11 does not support Object.values\n\n  return Object.keys(merged).map(function (key) {\n    return merged[key];\n  });\n}","import getWindow from \"../dom-utils/getWindow.js\"; // eslint-disable-next-line import/no-unused-modules\n\nvar passive = {\n  passive: true\n};\n\nfunction effect(_ref) {\n  var state = _ref.state,\n      instance = _ref.instance,\n      options = _ref.options;\n  var _options$scroll = options.scroll,\n      scroll = _options$scroll === void 0 ? true : _options$scroll,\n      _options$resize = options.resize,\n      resize = _options$resize === void 0 ? true : _options$resize;\n  var window = getWindow(state.elements.popper);\n  var scrollParents = [].concat(state.scrollParents.reference, state.scrollParents.popper);\n\n  if (scroll) {\n    scrollParents.forEach(function (scrollParent) {\n      scrollParent.addEventListener('scroll', instance.update, passive);\n    });\n  }\n\n  if (resize) {\n    window.addEventListener('resize', instance.update, passive);\n  }\n\n  return function () {\n    if (scroll) {\n      scrollParents.forEach(function (scrollParent) {\n        scrollParent.removeEventListener('scroll', instance.update, passive);\n      });\n    }\n\n    if (resize) {\n      window.removeEventListener('resize', instance.update, passive);\n    }\n  };\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n  name: 'eventListeners',\n  enabled: true,\n  phase: 'write',\n  fn: function fn() {},\n  effect: effect,\n  data: {}\n};","import { auto } from \"../enums.js\";\nexport default function getBasePlacement(placement) {\n  return placement.split('-')[0];\n}","export default function getVariation(placement) {\n  return placement.split('-')[1];\n}","export default function getMainAxisFromPlacement(placement) {\n  return ['top', 'bottom'].indexOf(placement) >= 0 ? 'x' : 'y';\n}","import { top, left, right, bottom, end } from \"../enums.js\";\nimport getOffsetParent from \"../dom-utils/getOffsetParent.js\";\nimport getWindow from \"../dom-utils/getWindow.js\";\nimport getDocumentElement from \"../dom-utils/getDocumentElement.js\";\nimport getComputedStyle from \"../dom-utils/getComputedStyle.js\";\nimport getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getVariation from \"../utils/getVariation.js\";\nimport { round } from \"../utils/math.js\"; // eslint-disable-next-line import/no-unused-modules\n\nvar unsetSides = {\n  top: 'auto',\n  right: 'auto',\n  bottom: 'auto',\n  left: 'auto'\n}; // Round the offsets to the nearest suitable subpixel based on the DPR.\n// Zooming can change the DPR, but it seems to report a value that will\n// cleanly divide the values into the appropriate subpixels.\n\nfunction roundOffsetsByDPR(_ref, win) {\n  var x = _ref.x,\n      y = _ref.y;\n  var dpr = win.devicePixelRatio || 1;\n  return {\n    x: round(x * dpr) / dpr || 0,\n    y: round(y * dpr) / dpr || 0\n  };\n}\n\nexport function mapToStyles(_ref2) {\n  var _Object$assign2;\n\n  var popper = _ref2.popper,\n      popperRect = _ref2.popperRect,\n      placement = _ref2.placement,\n      variation = _ref2.variation,\n      offsets = _ref2.offsets,\n      position = _ref2.position,\n      gpuAcceleration = _ref2.gpuAcceleration,\n      adaptive = _ref2.adaptive,\n      roundOffsets = _ref2.roundOffsets,\n      isFixed = _ref2.isFixed;\n  var _offsets$x = offsets.x,\n      x = _offsets$x === void 0 ? 0 : _offsets$x,\n      _offsets$y = offsets.y,\n      y = _offsets$y === void 0 ? 0 : _offsets$y;\n\n  var _ref3 = typeof roundOffsets === 'function' ? roundOffsets({\n    x: x,\n    y: y\n  }) : {\n    x: x,\n    y: y\n  };\n\n  x = _ref3.x;\n  y = _ref3.y;\n  var hasX = offsets.hasOwnProperty('x');\n  var hasY = offsets.hasOwnProperty('y');\n  var sideX = left;\n  var sideY = top;\n  var win = window;\n\n  if (adaptive) {\n    var offsetParent = getOffsetParent(popper);\n    var heightProp = 'clientHeight';\n    var widthProp = 'clientWidth';\n\n    if (offsetParent === getWindow(popper)) {\n      offsetParent = getDocumentElement(popper);\n\n      if (getComputedStyle(offsetParent).position !== 'static' && position === 'absolute') {\n        heightProp = 'scrollHeight';\n        widthProp = 'scrollWidth';\n      }\n    } // $FlowFixMe[incompatible-cast]: force type refinement, we compare offsetParent with window above, but Flow doesn't detect it\n\n\n    offsetParent = offsetParent;\n\n    if (placement === top || (placement === left || placement === right) && variation === end) {\n      sideY = bottom;\n      var offsetY = isFixed && offsetParent === win && win.visualViewport ? win.visualViewport.height : // $FlowFixMe[prop-missing]\n      offsetParent[heightProp];\n      y -= offsetY - popperRect.height;\n      y *= gpuAcceleration ? 1 : -1;\n    }\n\n    if (placement === left || (placement === top || placement === bottom) && variation === end) {\n      sideX = right;\n      var offsetX = isFixed && offsetParent === win && win.visualViewport ? win.visualViewport.width : // $FlowFixMe[prop-missing]\n      offsetParent[widthProp];\n      x -= offsetX - popperRect.width;\n      x *= gpuAcceleration ? 1 : -1;\n    }\n  }\n\n  var commonStyles = Object.assign({\n    position: position\n  }, adaptive && unsetSides);\n\n  var _ref4 = roundOffsets === true ? roundOffsetsByDPR({\n    x: x,\n    y: y\n  }, getWindow(popper)) : {\n    x: x,\n    y: y\n  };\n\n  x = _ref4.x;\n  y = _ref4.y;\n\n  if (gpuAcceleration) {\n    var _Object$assign;\n\n    return Object.assign({}, commonStyles, (_Object$assign = {}, _Object$assign[sideY] = hasY ? '0' : '', _Object$assign[sideX] = hasX ? '0' : '', _Object$assign.transform = (win.devicePixelRatio || 1) <= 1 ? \"translate(\" + x + \"px, \" + y + \"px)\" : \"translate3d(\" + x + \"px, \" + y + \"px, 0)\", _Object$assign));\n  }\n\n  return Object.assign({}, commonStyles, (_Object$assign2 = {}, _Object$assign2[sideY] = hasY ? y + \"px\" : '', _Object$assign2[sideX] = hasX ? x + \"px\" : '', _Object$assign2.transform = '', _Object$assign2));\n}\n\nfunction computeStyles(_ref5) {\n  var state = _ref5.state,\n      options = _ref5.options;\n  var _options$gpuAccelerat = options.gpuAcceleration,\n      gpuAcceleration = _options$gpuAccelerat === void 0 ? true : _options$gpuAccelerat,\n      _options$adaptive = options.adaptive,\n      adaptive = _options$adaptive === void 0 ? true : _options$adaptive,\n      _options$roundOffsets = options.roundOffsets,\n      roundOffsets = _options$roundOffsets === void 0 ? true : _options$roundOffsets;\n  var commonStyles = {\n    placement: getBasePlacement(state.placement),\n    variation: getVariation(state.placement),\n    popper: state.elements.popper,\n    popperRect: state.rects.popper,\n    gpuAcceleration: gpuAcceleration,\n    isFixed: state.options.strategy === 'fixed'\n  };\n\n  if (state.modifiersData.popperOffsets != null) {\n    state.styles.popper = Object.assign({}, state.styles.popper, mapToStyles(Object.assign({}, commonStyles, {\n      offsets: state.modifiersData.popperOffsets,\n      position: state.options.strategy,\n      adaptive: adaptive,\n      roundOffsets: roundOffsets\n    })));\n  }\n\n  if (state.modifiersData.arrow != null) {\n    state.styles.arrow = Object.assign({}, state.styles.arrow, mapToStyles(Object.assign({}, commonStyles, {\n      offsets: state.modifiersData.arrow,\n      position: 'absolute',\n      adaptive: false,\n      roundOffsets: roundOffsets\n    })));\n  }\n\n  state.attributes.popper = Object.assign({}, state.attributes.popper, {\n    'data-popper-placement': state.placement\n  });\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n  name: 'computeStyles',\n  enabled: true,\n  phase: 'beforeWrite',\n  fn: computeStyles,\n  data: {}\n};","import { popperGenerator, detectOverflow } from \"./createPopper.js\";\nimport eventListeners from \"./modifiers/eventListeners.js\";\nimport popperOffsets from \"./modifiers/popperOffsets.js\";\nimport computeStyles from \"./modifiers/computeStyles.js\";\nimport applyStyles from \"./modifiers/applyStyles.js\";\nvar defaultModifiers = [eventListeners, popperOffsets, computeStyles, applyStyles];\nvar createPopper = /*#__PURE__*/popperGenerator({\n  defaultModifiers: defaultModifiers\n}); // eslint-disable-next-line import/no-unused-modules\n\nexport { createPopper, popperGenerator, defaultModifiers, detectOverflow };","import computeOffsets from \"../utils/computeOffsets.js\";\n\nfunction popperOffsets(_ref) {\n  var state = _ref.state,\n      name = _ref.name;\n  // Offsets are the actual position the popper needs to have to be\n  // properly positioned near its reference element\n  // This is the most basic placement, and will be adjusted by\n  // the modifiers in the next step\n  state.modifiersData[name] = computeOffsets({\n    reference: state.rects.reference,\n    element: state.rects.popper,\n    strategy: 'absolute',\n    placement: state.placement\n  });\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n  name: 'popperOffsets',\n  enabled: true,\n  phase: 'read',\n  fn: popperOffsets,\n  data: {}\n};","import getBasePlacement from \"./getBasePlacement.js\";\nimport getVariation from \"./getVariation.js\";\nimport getMainAxisFromPlacement from \"./getMainAxisFromPlacement.js\";\nimport { top, right, bottom, left, start, end } from \"../enums.js\";\nexport default function computeOffsets(_ref) {\n  var reference = _ref.reference,\n      element = _ref.element,\n      placement = _ref.placement;\n  var basePlacement = placement ? getBasePlacement(placement) : null;\n  var variation = placement ? getVariation(placement) : null;\n  var commonX = reference.x + reference.width / 2 - element.width / 2;\n  var commonY = reference.y + reference.height / 2 - element.height / 2;\n  var offsets;\n\n  switch (basePlacement) {\n    case top:\n      offsets = {\n        x: commonX,\n        y: reference.y - element.height\n      };\n      break;\n\n    case bottom:\n      offsets = {\n        x: commonX,\n        y: reference.y + reference.height\n      };\n      break;\n\n    case right:\n      offsets = {\n        x: reference.x + reference.width,\n        y: commonY\n      };\n      break;\n\n    case left:\n      offsets = {\n        x: reference.x - element.width,\n        y: commonY\n      };\n      break;\n\n    default:\n      offsets = {\n        x: reference.x,\n        y: reference.y\n      };\n  }\n\n  var mainAxis = basePlacement ? getMainAxisFromPlacement(basePlacement) : null;\n\n  if (mainAxis != null) {\n    var len = mainAxis === 'y' ? 'height' : 'width';\n\n    switch (variation) {\n      case start:\n        offsets[mainAxis] = offsets[mainAxis] - (reference[len] / 2 - element[len] / 2);\n        break;\n\n      case end:\n        offsets[mainAxis] = offsets[mainAxis] + (reference[len] / 2 - element[len] / 2);\n        break;\n\n      default:\n    }\n  }\n\n  return offsets;\n}","import getNodeName from \"../dom-utils/getNodeName.js\";\nimport { isHTMLElement } from \"../dom-utils/instanceOf.js\"; // This modifier takes the styles prepared by the `computeStyles` modifier\n// and applies them to the HTMLElements such as popper and arrow\n\nfunction applyStyles(_ref) {\n  var state = _ref.state;\n  Object.keys(state.elements).forEach(function (name) {\n    var style = state.styles[name] || {};\n    var attributes = state.attributes[name] || {};\n    var element = state.elements[name]; // arrow is optional + virtual elements\n\n    if (!isHTMLElement(element) || !getNodeName(element)) {\n      return;\n    } // Flow doesn't support to extend this property, but it's the most\n    // effective way to apply styles to an HTMLElement\n    // $FlowFixMe[cannot-write]\n\n\n    Object.assign(element.style, style);\n    Object.keys(attributes).forEach(function (name) {\n      var value = attributes[name];\n\n      if (value === false) {\n        element.removeAttribute(name);\n      } else {\n        element.setAttribute(name, value === true ? '' : value);\n      }\n    });\n  });\n}\n\nfunction effect(_ref2) {\n  var state = _ref2.state;\n  var initialStyles = {\n    popper: {\n      position: state.options.strategy,\n      left: '0',\n      top: '0',\n      margin: '0'\n    },\n    arrow: {\n      position: 'absolute'\n    },\n    reference: {}\n  };\n  Object.assign(state.elements.popper.style, initialStyles.popper);\n  state.styles = initialStyles;\n\n  if (state.elements.arrow) {\n    Object.assign(state.elements.arrow.style, initialStyles.arrow);\n  }\n\n  return function () {\n    Object.keys(state.elements).forEach(function (name) {\n      var element = state.elements[name];\n      var attributes = state.attributes[name] || {};\n      var styleProperties = Object.keys(state.styles.hasOwnProperty(name) ? state.styles[name] : initialStyles[name]); // Set all values to an empty string to unset them\n\n      var style = styleProperties.reduce(function (style, property) {\n        style[property] = '';\n        return style;\n      }, {}); // arrow is optional + virtual elements\n\n      if (!isHTMLElement(element) || !getNodeName(element)) {\n        return;\n      }\n\n      Object.assign(element.style, style);\n      Object.keys(attributes).forEach(function (attribute) {\n        element.removeAttribute(attribute);\n      });\n    });\n  };\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n  name: 'applyStyles',\n  enabled: true,\n  phase: 'write',\n  fn: applyStyles,\n  effect: effect,\n  requires: ['computeStyles']\n};","import getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getLayoutRect from \"../dom-utils/getLayoutRect.js\";\nimport contains from \"../dom-utils/contains.js\";\nimport getOffsetParent from \"../dom-utils/getOffsetParent.js\";\nimport getMainAxisFromPlacement from \"../utils/getMainAxisFromPlacement.js\";\nimport { within } from \"../utils/within.js\";\nimport mergePaddingObject from \"../utils/mergePaddingObject.js\";\nimport expandToHashMap from \"../utils/expandToHashMap.js\";\nimport { left, right, basePlacements, top, bottom } from \"../enums.js\"; // eslint-disable-next-line import/no-unused-modules\n\nvar toPaddingObject = function toPaddingObject(padding, state) {\n  padding = typeof padding === 'function' ? padding(Object.assign({}, state.rects, {\n    placement: state.placement\n  })) : padding;\n  return mergePaddingObject(typeof padding !== 'number' ? padding : expandToHashMap(padding, basePlacements));\n};\n\nfunction arrow(_ref) {\n  var _state$modifiersData$;\n\n  var state = _ref.state,\n      name = _ref.name,\n      options = _ref.options;\n  var arrowElement = state.elements.arrow;\n  var popperOffsets = state.modifiersData.popperOffsets;\n  var basePlacement = getBasePlacement(state.placement);\n  var axis = getMainAxisFromPlacement(basePlacement);\n  var isVertical = [left, right].indexOf(basePlacement) >= 0;\n  var len = isVertical ? 'height' : 'width';\n\n  if (!arrowElement || !popperOffsets) {\n    return;\n  }\n\n  var paddingObject = toPaddingObject(options.padding, state);\n  var arrowRect = getLayoutRect(arrowElement);\n  var minProp = axis === 'y' ? top : left;\n  var maxProp = axis === 'y' ? bottom : right;\n  var endDiff = state.rects.reference[len] + state.rects.reference[axis] - popperOffsets[axis] - state.rects.popper[len];\n  var startDiff = popperOffsets[axis] - state.rects.reference[axis];\n  var arrowOffsetParent = getOffsetParent(arrowElement);\n  var clientSize = arrowOffsetParent ? axis === 'y' ? arrowOffsetParent.clientHeight || 0 : arrowOffsetParent.clientWidth || 0 : 0;\n  var centerToReference = endDiff / 2 - startDiff / 2; // Make sure the arrow doesn't overflow the popper if the center point is\n  // outside of the popper bounds\n\n  var min = paddingObject[minProp];\n  var max = clientSize - arrowRect[len] - paddingObject[maxProp];\n  var center = clientSize / 2 - arrowRect[len] / 2 + centerToReference;\n  var offset = within(min, center, max); // Prevents breaking syntax highlighting...\n\n  var axisProp = axis;\n  state.modifiersData[name] = (_state$modifiersData$ = {}, _state$modifiersData$[axisProp] = offset, _state$modifiersData$.centerOffset = offset - center, _state$modifiersData$);\n}\n\nfunction effect(_ref2) {\n  var state = _ref2.state,\n      options = _ref2.options;\n  var _options$element = options.element,\n      arrowElement = _options$element === void 0 ? '[data-popper-arrow]' : _options$element;\n\n  if (arrowElement == null) {\n    return;\n  } // CSS selector\n\n\n  if (typeof arrowElement === 'string') {\n    arrowElement = state.elements.popper.querySelector(arrowElement);\n\n    if (!arrowElement) {\n      return;\n    }\n  }\n\n  if (!contains(state.elements.popper, arrowElement)) {\n    return;\n  }\n\n  state.elements.arrow = arrowElement;\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n  name: 'arrow',\n  enabled: true,\n  phase: 'main',\n  fn: arrow,\n  effect: effect,\n  requires: ['popperOffsets'],\n  requiresIfExists: ['preventOverflow']\n};","import getFreshSideObject from \"./getFreshSideObject.js\";\nexport default function mergePaddingObject(paddingObject) {\n  return Object.assign({}, getFreshSideObject(), paddingObject);\n}","export default function expandToHashMap(value, keys) {\n  return keys.reduce(function (hashMap, key) {\n    hashMap[key] = value;\n    return hashMap;\n  }, {});\n}","export default function getFreshSideObject() {\n  return {\n    top: 0,\n    right: 0,\n    bottom: 0,\n    left: 0\n  };\n}","import { max as mathMax, min as mathMin } from \"./math.js\";\nexport function within(min, value, max) {\n  return mathMax(min, mathMin(value, max));\n}\nexport function withinMaxClamp(min, value, max) {\n  var v = within(min, value, max);\n  return v > max ? max : v;\n}","import { isShadowRoot } from \"./instanceOf.js\";\nexport default function contains(parent, child) {\n  var rootNode = child.getRootNode && child.getRootNode(); // First, attempt with faster native method\n\n  if (parent.contains(child)) {\n    return true;\n  } // then fallback to custom implementation with Shadow DOM support\n  else if (rootNode && isShadowRoot(rootNode)) {\n      var next = child;\n\n      do {\n        if (next && parent.isSameNode(next)) {\n          return true;\n        } // $FlowFixMe[prop-missing]: need a better way to handle this...\n\n\n        next = next.parentNode || next.host;\n      } while (next);\n    } // Give up, the result is false\n\n\n  return false;\n}","import getBasePlacement from \"../utils/getBasePlacement.js\";\nimport { top, left, right, placements } from \"../enums.js\"; // eslint-disable-next-line import/no-unused-modules\n\nexport function distanceAndSkiddingToXY(placement, rects, offset) {\n  var basePlacement = getBasePlacement(placement);\n  var invertDistance = [left, top].indexOf(basePlacement) >= 0 ? -1 : 1;\n\n  var _ref = typeof offset === 'function' ? offset(Object.assign({}, rects, {\n    placement: placement\n  })) : offset,\n      skidding = _ref[0],\n      distance = _ref[1];\n\n  skidding = skidding || 0;\n  distance = (distance || 0) * invertDistance;\n  return [left, right].indexOf(basePlacement) >= 0 ? {\n    x: distance,\n    y: skidding\n  } : {\n    x: skidding,\n    y: distance\n  };\n}\n\nfunction offset(_ref2) {\n  var state = _ref2.state,\n      options = _ref2.options,\n      name = _ref2.name;\n  var _options$offset = options.offset,\n      offset = _options$offset === void 0 ? [0, 0] : _options$offset;\n  var data = placements.reduce(function (acc, placement) {\n    acc[placement] = distanceAndSkiddingToXY(placement, state.rects, offset);\n    return acc;\n  }, {});\n  var _data$state$placement = data[state.placement],\n      x = _data$state$placement.x,\n      y = _data$state$placement.y;\n\n  if (state.modifiersData.popperOffsets != null) {\n    state.modifiersData.popperOffsets.x += x;\n    state.modifiersData.popperOffsets.y += y;\n  }\n\n  state.modifiersData[name] = data;\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n  name: 'offset',\n  enabled: true,\n  phase: 'main',\n  requires: ['popperOffsets'],\n  fn: offset\n};","/**\n * Media queries utils to make it possible to provide different JS components with the current\n * page active breakpoint. Useful to adapt the behaviour of certain functionalities depending on\n * the viewport size.\n */\nclass MediaQueries {\n    constructor() {\n        this.breakpoints = [\n            { name: 'sm', value: 640 },\n            { name: 'md', value: 1024 },\n            { name: 'lg', value: 1366 },\n        ];\n    }\n\n    /**\n     * Gets a breakpoint object\n     * @param {string} breakpointName The breakpoint name\n    * @return {Object|False} The breakpoint object, or false if none was found\n     */\n    getBreakpoint(breakpointName) {\n        const breakpoint = this.breakpoints.filter(\n            (currentBreakpoint) => currentBreakpoint.name === breakpointName,\n        );\n\n        if (breakpoint.length) {\n            return breakpoint[0];\n        }\n\n        return false;\n    }\n\n    /**\n     * Gets the next (larger) breakpoint object based on a current one\n     * @param {Object} breakpoint Current breakpoint object\n     * @return {Object|False} The next breakpoint, or false if none was found\n     */\n    getNextBreakpoint(breakpoint) {\n        const currentIndex = this.breakpoints.indexOf(breakpoint);\n\n        if (currentIndex === -1) {\n            return false;\n        }\n\n        if (this.breakpoints.length < currentIndex + 1) {\n            return false;\n        }\n\n        return this.breakpoints[currentIndex + 1];\n    }\n\n    /**\n     * Will return true until device width matches breakpoint\n     * @param {string} breakpointName The name of the breakpoint\n     * @return {bool} True if matches\n     */\n    until(breakpointName) {\n        const breakpoint = this.getBreakpoint(breakpointName);\n\n        if (!breakpoint) {\n            return false;\n        }\n\n        return window.matchMedia(`(max-width: ${breakpoint.value}px)`).matches;\n    }\n\n    /**\n     * Will return true when device width matches, and is larger, than breakpint\n     * @param {string} breakpointName The name of the breakpoint\n     * @return {bool} True if matches\n     */\n    from(breakpointName) {\n        const breakpoint = this.getBreakpoint(breakpointName);\n\n        if (!breakpoint) {\n            return false;\n        }\n\n        return window.matchMedia(`(min-width: ${breakpoint.value}px)`).matches;\n    }\n\n    /**\n     * Will return true when the device width is at breakpoint but smaller than the next breakpoint\n     * @param {string} breakpointName The name of the breakpoint\n     * @return {bool} True if matches\n     */\n    to(breakpointName) {\n        const breakpoint = this.getBreakpoint(breakpointName);\n\n        if (!breakpoint) {\n            return false;\n        }\n\n        const breakpointTo = this.getNextBreakpoint(breakpoint);\n\n        if (!breakpointTo) {\n            return false;\n        }\n\n        return window.matchMedia(`(min-width: ${breakpoint.value}px) and (max-width: ${breakpointTo.value - 1}px)`).matches;\n    }\n}\n\nexport default new MediaQueries();\n","import { createPopper } from '@popperjs/core/lib/popper-lite';\nimport arrow from '@popperjs/core/lib/modifiers/arrow';\nimport offset from '@popperjs/core/lib/modifiers/offset';\nimport enterView from 'enter-view';\nimport MediaQueries from '../utils/mediaQueries';\n\nexport default function () {\n    const popoverTriggers = document.querySelectorAll('[data-popover-trigger]');\n\n    popoverTriggers.forEach((referenceElement) => {\n        const popoverElement = document.getElementById(\n            `popover-for-${referenceElement.dataset.popoverTrigger}`,\n        );\n\n        if (!popoverElement) {\n            return;\n        }\n\n        const popoverOptions = {\n            placement: MediaQueries.until('sm') ? 'top' : 'right',\n            modifiers: [\n                arrow,\n                offset,\n                {\n                    name: 'offset',\n                    options: {\n                        /**\n                         * Ensure the second offset value is equal to the \"$popover-arrow-size\"\n                         * SCSS variable.\n                         */\n                        offset: [0, 20],\n                    },\n                },\n            ],\n        };\n\n        let popoverSeenAndClosedByUser = false;\n\n        enterView({\n            selector: [referenceElement],\n            enter(el) {\n                /**\n                 * The user shouldn't see the popup again if it has been closed.\n                 *\n                 * TODO: The current implementation works as long as the page is not reloaded. In\n                 * the future we will revisit this behaviour and use cookies and/or local storage.\n                 */\n                if (popoverSeenAndClosedByUser) {\n                    return;\n                }\n\n                popoverSeenAndClosedByUser = true;\n\n                // Create the popover instance.\n                createPopper(\n                    el,\n                    popoverElement,\n                    popoverOptions,\n                );\n\n                // Display it.\n                popoverElement.setAttribute('data-show', '');\n\n                // Handle popover close button.\n                popoverElement\n                    .querySelector('.popover__close')\n                    .addEventListener(\n                        'click',\n                        () => {\n                            popoverElement.removeAttribute('data-show');\n                        },\n                    );\n            },\n            // Trigger the popover only when the referenceElement reaches the middle of the screen.\n            offset: 0.5,\n        });\n    });\n}\n","import Clipboard from 'clipboard/dist/clipboard';\n\nexport default function () {\n    const copyToClipboardElems = document.querySelectorAll('[data-clipboard-text]');\n\n    copyToClipboardElems.forEach((copyToClipboardElem) => {\n        const clipboard = new Clipboard(copyToClipboardElem);\n\n        clipboard.on('success', () => {\n            // eslint-disable-next-line no-param-reassign\n            copyToClipboardElem\n                .getElementsByClassName('job-sharing-buttons__label')[0]\n                .innerHTML = 'Link kopiert <i class=\"t-website-check\"></i>';\n        });\n    });\n}\n","import * as Sentry from '@sentry/browser';\n\nconst atString = 'at';\nconst obString = 'ob';\nconst atobString = `${atString}${obString}`;\nconst locationString = window[atobString]('bG9jYXRpb24='); // \"location\"\nconst hostnameString = window[atobString]('aG9zdG5hbWU='); // \"hostname\"\nconst host = window[locationString][hostnameString];\nconst antiscamValidDomainEl = document.querySelector('[data-icon-home]');\n\nconst reportNonAllowedDomainToSentry = () => {\n    const cookieString = window[atobString]('Y29va2ll'); // \"cookie\"\n\n    Sentry.captureMessage(\n        'Icon has failed to load', {\n            level: 'info',\n            extra: {\n                // Dump invalid hostname.\n                h: host,\n                // Dump all the cookies for the current domain (contains referrer, etc.).\n                c: document[cookieString],\n            },\n        },\n    );\n};\n\nexport default function () {\n    if (antiscamValidDomainEl) {\n        if (antiscamValidDomainEl.dataset.iconHome === '') {\n            // Disable for review apps\n            return;\n        }\n\n        const antiscamValidDomain = window[atobString](antiscamValidDomainEl.dataset.iconHome);\n\n        if (antiscamValidDomain !== host) {\n            reportNonAllowedDomainToSentry();\n        }\n    }\n}\n","import axios from 'axios';\nimport { captureMessage, withScope } from '@sentry/browser';\n\n/**\n * Check if website.*.css is available on CDN/Heroku. If not, collect some debug data and send it\n * to Sentry.\n * See https://thermondo.atlassian.net/browse/MT-1370\n */\nexport default async function () {\n    if (\n        window.TNS\n        && window.TNS.config\n        && window.TNS.config.cssUrl\n    ) {\n        const { cssUrl } = window.TNS.config;\n\n        withScope(async (scope) => {\n            scope.setTag('backend.endpoint', cssUrl);\n\n            try {\n                await axios.get(cssUrl);\n            } catch (error) {\n                if (error && error.response && error.response.status === 404) {\n                    captureMessage('MT-1370 - Monitor for 404 on website.*.css');\n                }\n            }\n        });\n    }\n}\n","/**\n * SSR Window 5.0.1\n * Better handling for window object in SSR environment\n * https://github.com/nolimits4web/ssr-window\n *\n * Copyright 2025, Vladimir Kharlampidi\n *\n * Licensed under MIT\n *\n * Released on: June 27, 2025\n */\n/* eslint-disable no-param-reassign */\nfunction isObject(obj) {\n  return obj !== null && typeof obj === 'object' && 'constructor' in obj && obj.constructor === Object;\n}\nfunction extend(target = {}, src = {}) {\n  const noExtend = ['__proto__', 'constructor', 'prototype'];\n  Object.keys(src).filter(key => noExtend.indexOf(key) < 0).forEach(key => {\n    if (typeof target[key] === 'undefined') target[key] = src[key];else if (isObject(src[key]) && isObject(target[key]) && Object.keys(src[key]).length > 0) {\n      extend(target[key], src[key]);\n    }\n  });\n}\nconst ssrDocument = {\n  body: {},\n  addEventListener() {},\n  removeEventListener() {},\n  activeElement: {\n    blur() {},\n    nodeName: ''\n  },\n  querySelector() {\n    return null;\n  },\n  querySelectorAll() {\n    return [];\n  },\n  getElementById() {\n    return null;\n  },\n  createEvent() {\n    return {\n      initEvent() {}\n    };\n  },\n  createElement() {\n    return {\n      children: [],\n      childNodes: [],\n      style: {},\n      setAttribute() {},\n      getElementsByTagName() {\n        return [];\n      }\n    };\n  },\n  createElementNS() {\n    return {};\n  },\n  importNode() {\n    return null;\n  },\n  location: {\n    hash: '',\n    host: '',\n    hostname: '',\n    href: '',\n    origin: '',\n    pathname: '',\n    protocol: '',\n    search: ''\n  }\n};\nfunction getDocument() {\n  const doc = typeof document !== 'undefined' ? document : {};\n  extend(doc, ssrDocument);\n  return doc;\n}\nconst ssrWindow = {\n  document: ssrDocument,\n  navigator: {\n    userAgent: ''\n  },\n  location: {\n    hash: '',\n    host: '',\n    hostname: '',\n    href: '',\n    origin: '',\n    pathname: '',\n    protocol: '',\n    search: ''\n  },\n  history: {\n    replaceState() {},\n    pushState() {},\n    go() {},\n    back() {}\n  },\n  CustomEvent: function CustomEvent() {\n    return this;\n  },\n  addEventListener() {},\n  removeEventListener() {},\n  getComputedStyle() {\n    return {\n      getPropertyValue() {\n        return '';\n      }\n    };\n  },\n  Image() {},\n  Date() {},\n  screen: {},\n  setTimeout() {},\n  clearTimeout() {},\n  matchMedia() {\n    return {};\n  },\n  requestAnimationFrame(callback) {\n    if (typeof setTimeout === 'undefined') {\n      callback();\n      return null;\n    }\n    return setTimeout(callback, 0);\n  },\n  cancelAnimationFrame(id) {\n    if (typeof setTimeout === 'undefined') {\n      return;\n    }\n    clearTimeout(id);\n  }\n};\nfunction getWindow() {\n  const win = typeof window !== 'undefined' ? window : {};\n  extend(win, ssrWindow);\n  return win;\n}\n\nexport { getWindow as a, getDocument as g };\n","import { a as getWindow, g as getDocument } from './ssr-window.esm.mjs';\n\nfunction classesToTokens(classes = '') {\n  return classes.trim().split(' ').filter(c => !!c.trim());\n}\n\nfunction deleteProps(obj) {\n  const object = obj;\n  Object.keys(object).forEach(key => {\n    try {\n      object[key] = null;\n    } catch (e) {\n      // no getter for object\n    }\n    try {\n      delete object[key];\n    } catch (e) {\n      // something got wrong\n    }\n  });\n}\nfunction nextTick(callback, delay = 0) {\n  return setTimeout(callback, delay);\n}\nfunction now() {\n  return Date.now();\n}\nfunction getComputedStyle(el) {\n  const window = getWindow();\n  let style;\n  if (window.getComputedStyle) {\n    style = window.getComputedStyle(el, null);\n  }\n  if (!style && el.currentStyle) {\n    style = el.currentStyle;\n  }\n  if (!style) {\n    style = el.style;\n  }\n  return style;\n}\nfunction getTranslate(el, axis = 'x') {\n  const window = getWindow();\n  let matrix;\n  let curTransform;\n  let transformMatrix;\n  const curStyle = getComputedStyle(el);\n  if (window.WebKitCSSMatrix) {\n    curTransform = curStyle.transform || curStyle.webkitTransform;\n    if (curTransform.split(',').length > 6) {\n      curTransform = curTransform.split(', ').map(a => a.replace(',', '.')).join(', ');\n    }\n    // Some old versions of Webkit choke when 'none' is passed; pass\n    // empty string instead in this case\n    transformMatrix = new window.WebKitCSSMatrix(curTransform === 'none' ? '' : curTransform);\n  } else {\n    transformMatrix = curStyle.MozTransform || curStyle.OTransform || curStyle.MsTransform || curStyle.msTransform || curStyle.transform || curStyle.getPropertyValue('transform').replace('translate(', 'matrix(1, 0, 0, 1,');\n    matrix = transformMatrix.toString().split(',');\n  }\n  if (axis === 'x') {\n    // Latest Chrome and webkits Fix\n    if (window.WebKitCSSMatrix) curTransform = transformMatrix.m41;\n    // Crazy IE10 Matrix\n    else if (matrix.length === 16) curTransform = parseFloat(matrix[12]);\n    // Normal Browsers\n    else curTransform = parseFloat(matrix[4]);\n  }\n  if (axis === 'y') {\n    // Latest Chrome and webkits Fix\n    if (window.WebKitCSSMatrix) curTransform = transformMatrix.m42;\n    // Crazy IE10 Matrix\n    else if (matrix.length === 16) curTransform = parseFloat(matrix[13]);\n    // Normal Browsers\n    else curTransform = parseFloat(matrix[5]);\n  }\n  return curTransform || 0;\n}\nfunction isObject(o) {\n  return typeof o === 'object' && o !== null && o.constructor && Object.prototype.toString.call(o).slice(8, -1) === 'Object';\n}\nfunction isNode(node) {\n  // eslint-disable-next-line\n  if (typeof window !== 'undefined' && typeof window.HTMLElement !== 'undefined') {\n    return node instanceof HTMLElement;\n  }\n  return node && (node.nodeType === 1 || node.nodeType === 11);\n}\nfunction extend(...args) {\n  const to = Object(args[0]);\n  for (let i = 1; i < args.length; i += 1) {\n    const nextSource = args[i];\n    if (nextSource !== undefined && nextSource !== null && !isNode(nextSource)) {\n      const keysArray = Object.keys(Object(nextSource)).filter(key => key !== '__proto__' && key !== 'constructor' && key !== 'prototype');\n      for (let nextIndex = 0, len = keysArray.length; nextIndex < len; nextIndex += 1) {\n        const nextKey = keysArray[nextIndex];\n        const desc = Object.getOwnPropertyDescriptor(nextSource, nextKey);\n        if (desc !== undefined && desc.enumerable) {\n          if (isObject(to[nextKey]) && isObject(nextSource[nextKey])) {\n            if (nextSource[nextKey].__swiper__) {\n              to[nextKey] = nextSource[nextKey];\n            } else {\n              extend(to[nextKey], nextSource[nextKey]);\n            }\n          } else if (!isObject(to[nextKey]) && isObject(nextSource[nextKey])) {\n            to[nextKey] = {};\n            if (nextSource[nextKey].__swiper__) {\n              to[nextKey] = nextSource[nextKey];\n            } else {\n              extend(to[nextKey], nextSource[nextKey]);\n            }\n          } else {\n            to[nextKey] = nextSource[nextKey];\n          }\n        }\n      }\n    }\n  }\n  return to;\n}\nfunction setCSSProperty(el, varName, varValue) {\n  el.style.setProperty(varName, varValue);\n}\nfunction animateCSSModeScroll({\n  swiper,\n  targetPosition,\n  side\n}) {\n  const window = getWindow();\n  const startPosition = -swiper.translate;\n  let startTime = null;\n  let time;\n  const duration = swiper.params.speed;\n  swiper.wrapperEl.style.scrollSnapType = 'none';\n  window.cancelAnimationFrame(swiper.cssModeFrameID);\n  const dir = targetPosition > startPosition ? 'next' : 'prev';\n  const isOutOfBound = (current, target) => {\n    return dir === 'next' && current >= target || dir === 'prev' && current <= target;\n  };\n  const animate = () => {\n    time = new Date().getTime();\n    if (startTime === null) {\n      startTime = time;\n    }\n    const progress = Math.max(Math.min((time - startTime) / duration, 1), 0);\n    const easeProgress = 0.5 - Math.cos(progress * Math.PI) / 2;\n    let currentPosition = startPosition + easeProgress * (targetPosition - startPosition);\n    if (isOutOfBound(currentPosition, targetPosition)) {\n      currentPosition = targetPosition;\n    }\n    swiper.wrapperEl.scrollTo({\n      [side]: currentPosition\n    });\n    if (isOutOfBound(currentPosition, targetPosition)) {\n      swiper.wrapperEl.style.overflow = 'hidden';\n      swiper.wrapperEl.style.scrollSnapType = '';\n      setTimeout(() => {\n        swiper.wrapperEl.style.overflow = '';\n        swiper.wrapperEl.scrollTo({\n          [side]: currentPosition\n        });\n      });\n      window.cancelAnimationFrame(swiper.cssModeFrameID);\n      return;\n    }\n    swiper.cssModeFrameID = window.requestAnimationFrame(animate);\n  };\n  animate();\n}\nfunction getSlideTransformEl(slideEl) {\n  return slideEl.querySelector('.swiper-slide-transform') || slideEl.shadowRoot && slideEl.shadowRoot.querySelector('.swiper-slide-transform') || slideEl;\n}\nfunction elementChildren(element, selector = '') {\n  const window = getWindow();\n  const children = [...element.children];\n  if (window.HTMLSlotElement && element instanceof HTMLSlotElement) {\n    children.push(...element.assignedElements());\n  }\n  if (!selector) {\n    return children;\n  }\n  return children.filter(el => el.matches(selector));\n}\nfunction elementIsChildOfSlot(el, slot) {\n  // Breadth-first search through all parent's children and assigned elements\n  const elementsQueue = [slot];\n  while (elementsQueue.length > 0) {\n    const elementToCheck = elementsQueue.shift();\n    if (el === elementToCheck) {\n      return true;\n    }\n    elementsQueue.push(...elementToCheck.children, ...(elementToCheck.shadowRoot ? elementToCheck.shadowRoot.children : []), ...(elementToCheck.assignedElements ? elementToCheck.assignedElements() : []));\n  }\n}\nfunction elementIsChildOf(el, parent) {\n  const window = getWindow();\n  let isChild = parent.contains(el);\n  if (!isChild && window.HTMLSlotElement && parent instanceof HTMLSlotElement) {\n    const children = [...parent.assignedElements()];\n    isChild = children.includes(el);\n    if (!isChild) {\n      isChild = elementIsChildOfSlot(el, parent);\n    }\n  }\n  return isChild;\n}\nfunction showWarning(text) {\n  try {\n    console.warn(text);\n    return;\n  } catch (err) {\n    // err\n  }\n}\nfunction createElement(tag, classes = []) {\n  const el = document.createElement(tag);\n  el.classList.add(...(Array.isArray(classes) ? classes : classesToTokens(classes)));\n  return el;\n}\nfunction elementOffset(el) {\n  const window = getWindow();\n  const document = getDocument();\n  const box = el.getBoundingClientRect();\n  const body = document.body;\n  const clientTop = el.clientTop || body.clientTop || 0;\n  const clientLeft = el.clientLeft || body.clientLeft || 0;\n  const scrollTop = el === window ? window.scrollY : el.scrollTop;\n  const scrollLeft = el === window ? window.scrollX : el.scrollLeft;\n  return {\n    top: box.top + scrollTop - clientTop,\n    left: box.left + scrollLeft - clientLeft\n  };\n}\nfunction elementPrevAll(el, selector) {\n  const prevEls = [];\n  while (el.previousElementSibling) {\n    const prev = el.previousElementSibling; // eslint-disable-line\n    if (selector) {\n      if (prev.matches(selector)) prevEls.push(prev);\n    } else prevEls.push(prev);\n    el = prev;\n  }\n  return prevEls;\n}\nfunction elementNextAll(el, selector) {\n  const nextEls = [];\n  while (el.nextElementSibling) {\n    const next = el.nextElementSibling; // eslint-disable-line\n    if (selector) {\n      if (next.matches(selector)) nextEls.push(next);\n    } else nextEls.push(next);\n    el = next;\n  }\n  return nextEls;\n}\nfunction elementStyle(el, prop) {\n  const window = getWindow();\n  return window.getComputedStyle(el, null).getPropertyValue(prop);\n}\nfunction elementIndex(el) {\n  let child = el;\n  let i;\n  if (child) {\n    i = 0;\n    // eslint-disable-next-line\n    while ((child = child.previousSibling) !== null) {\n      if (child.nodeType === 1) i += 1;\n    }\n    return i;\n  }\n  return undefined;\n}\nfunction elementParents(el, selector) {\n  const parents = []; // eslint-disable-line\n  let parent = el.parentElement; // eslint-disable-line\n  while (parent) {\n    if (selector) {\n      if (parent.matches(selector)) parents.push(parent);\n    } else {\n      parents.push(parent);\n    }\n    parent = parent.parentElement;\n  }\n  return parents;\n}\nfunction elementTransitionEnd(el, callback) {\n  function fireCallBack(e) {\n    if (e.target !== el) return;\n    callback.call(el, e);\n    el.removeEventListener('transitionend', fireCallBack);\n  }\n  if (callback) {\n    el.addEventListener('transitionend', fireCallBack);\n  }\n}\nfunction elementOuterSize(el, size, includeMargins) {\n  const window = getWindow();\n  if (includeMargins) {\n    return el[size === 'width' ? 'offsetWidth' : 'offsetHeight'] + parseFloat(window.getComputedStyle(el, null).getPropertyValue(size === 'width' ? 'margin-right' : 'margin-top')) + parseFloat(window.getComputedStyle(el, null).getPropertyValue(size === 'width' ? 'margin-left' : 'margin-bottom'));\n  }\n  return el.offsetWidth;\n}\nfunction makeElementsArray(el) {\n  return (Array.isArray(el) ? el : [el]).filter(e => !!e);\n}\nfunction getRotateFix(swiper) {\n  return v => {\n    if (Math.abs(v) > 0 && swiper.browser && swiper.browser.need3dFix && Math.abs(v) % 90 === 0) {\n      return v + 0.001;\n    }\n    return v;\n  };\n}\nfunction setInnerHTML(el, html = '') {\n  if (typeof trustedTypes !== 'undefined') {\n    el.innerHTML = trustedTypes.createPolicy('html', {\n      createHTML: s => s\n    }).createHTML(html);\n  } else {\n    el.innerHTML = html;\n  }\n}\n\nexport { getRotateFix as a, setCSSProperty as b, createElement as c, elementParents as d, elementChildren as e, elementOffset as f, getSlideTransformEl as g, now as h, elementOuterSize as i, elementIndex as j, classesToTokens as k, getTranslate as l, makeElementsArray as m, nextTick as n, elementTransitionEnd as o, isObject as p, elementStyle as q, elementNextAll as r, setInnerHTML as s, elementPrevAll as t, animateCSSModeScroll as u, showWarning as v, elementIsChildOf as w, extend as x, deleteProps as y };\n","import { a as getWindow, g as getDocument } from './ssr-window.esm.mjs';\nimport { d as elementParents, q as elementStyle, e as elementChildren, b as setCSSProperty, i as elementOuterSize, r as elementNextAll, t as elementPrevAll, l as getTranslate, u as animateCSSModeScroll, n as nextTick, v as showWarning, c as createElement, w as elementIsChildOf, h as now, x as extend, j as elementIndex, y as deleteProps } from './utils.mjs';\n\nlet support;\nfunction calcSupport() {\n  const window = getWindow();\n  const document = getDocument();\n  return {\n    smoothScroll: document.documentElement && document.documentElement.style && 'scrollBehavior' in document.documentElement.style,\n    touch: !!('ontouchstart' in window || window.DocumentTouch && document instanceof window.DocumentTouch)\n  };\n}\nfunction getSupport() {\n  if (!support) {\n    support = calcSupport();\n  }\n  return support;\n}\n\nlet deviceCached;\nfunction calcDevice({\n  userAgent\n} = {}) {\n  const support = getSupport();\n  const window = getWindow();\n  const platform = window.navigator.platform;\n  const ua = userAgent || window.navigator.userAgent;\n  const device = {\n    ios: false,\n    android: false\n  };\n  const screenWidth = window.screen.width;\n  const screenHeight = window.screen.height;\n  const android = ua.match(/(Android);?[\\s\\/]+([\\d.]+)?/); // eslint-disable-line\n  let ipad = ua.match(/(iPad)(?!\\1).*OS\\s([\\d_]+)/);\n  const ipod = ua.match(/(iPod)(.*OS\\s([\\d_]+))?/);\n  const iphone = !ipad && ua.match(/(iPhone\\sOS|iOS)\\s([\\d_]+)/);\n  const windows = platform === 'Win32';\n  let macos = platform === 'MacIntel';\n\n  // iPadOs 13 fix\n  const iPadScreens = ['1024x1366', '1366x1024', '834x1194', '1194x834', '834x1112', '1112x834', '768x1024', '1024x768', '820x1180', '1180x820', '810x1080', '1080x810'];\n  if (!ipad && macos && support.touch && iPadScreens.indexOf(`${screenWidth}x${screenHeight}`) >= 0) {\n    ipad = ua.match(/(Version)\\/([\\d.]+)/);\n    if (!ipad) ipad = [0, 1, '13_0_0'];\n    macos = false;\n  }\n\n  // Android\n  if (android && !windows) {\n    device.os = 'android';\n    device.android = true;\n  }\n  if (ipad || iphone || ipod) {\n    device.os = 'ios';\n    device.ios = true;\n  }\n\n  // Export object\n  return device;\n}\nfunction getDevice(overrides = {}) {\n  if (!deviceCached) {\n    deviceCached = calcDevice(overrides);\n  }\n  return deviceCached;\n}\n\nlet browser;\nfunction calcBrowser() {\n  const window = getWindow();\n  const device = getDevice();\n  let needPerspectiveFix = false;\n  function isSafari() {\n    const ua = window.navigator.userAgent.toLowerCase();\n    return ua.indexOf('safari') >= 0 && ua.indexOf('chrome') < 0 && ua.indexOf('android') < 0;\n  }\n  if (isSafari()) {\n    const ua = String(window.navigator.userAgent);\n    if (ua.includes('Version/')) {\n      const [major, minor] = ua.split('Version/')[1].split(' ')[0].split('.').map(num => Number(num));\n      needPerspectiveFix = major < 16 || major === 16 && minor < 2;\n    }\n  }\n  const isWebView = /(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(window.navigator.userAgent);\n  const isSafariBrowser = isSafari();\n  const need3dFix = isSafariBrowser || isWebView && device.ios;\n  return {\n    isSafari: needPerspectiveFix || isSafariBrowser,\n    needPerspectiveFix,\n    need3dFix,\n    isWebView\n  };\n}\nfunction getBrowser() {\n  if (!browser) {\n    browser = calcBrowser();\n  }\n  return browser;\n}\n\nfunction Resize({\n  swiper,\n  on,\n  emit\n}) {\n  const window = getWindow();\n  let observer = null;\n  let animationFrame = null;\n  const resizeHandler = () => {\n    if (!swiper || swiper.destroyed || !swiper.initialized) return;\n    emit('beforeResize');\n    emit('resize');\n  };\n  const createObserver = () => {\n    if (!swiper || swiper.destroyed || !swiper.initialized) return;\n    observer = new ResizeObserver(entries => {\n      animationFrame = window.requestAnimationFrame(() => {\n        const {\n          width,\n          height\n        } = swiper;\n        let newWidth = width;\n        let newHeight = height;\n        entries.forEach(({\n          contentBoxSize,\n          contentRect,\n          target\n        }) => {\n          if (target && target !== swiper.el) return;\n          newWidth = contentRect ? contentRect.width : (contentBoxSize[0] || contentBoxSize).inlineSize;\n          newHeight = contentRect ? contentRect.height : (contentBoxSize[0] || contentBoxSize).blockSize;\n        });\n        if (newWidth !== width || newHeight !== height) {\n          resizeHandler();\n        }\n      });\n    });\n    observer.observe(swiper.el);\n  };\n  const removeObserver = () => {\n    if (animationFrame) {\n      window.cancelAnimationFrame(animationFrame);\n    }\n    if (observer && observer.unobserve && swiper.el) {\n      observer.unobserve(swiper.el);\n      observer = null;\n    }\n  };\n  const orientationChangeHandler = () => {\n    if (!swiper || swiper.destroyed || !swiper.initialized) return;\n    emit('orientationchange');\n  };\n  on('init', () => {\n    if (swiper.params.resizeObserver && typeof window.ResizeObserver !== 'undefined') {\n      createObserver();\n      return;\n    }\n    window.addEventListener('resize', resizeHandler);\n    window.addEventListener('orientationchange', orientationChangeHandler);\n  });\n  on('destroy', () => {\n    removeObserver();\n    window.removeEventListener('resize', resizeHandler);\n    window.removeEventListener('orientationchange', orientationChangeHandler);\n  });\n}\n\nfunction Observer({\n  swiper,\n  extendParams,\n  on,\n  emit\n}) {\n  const observers = [];\n  const window = getWindow();\n  const attach = (target, options = {}) => {\n    const ObserverFunc = window.MutationObserver || window.WebkitMutationObserver;\n    const observer = new ObserverFunc(mutations => {\n      // The observerUpdate event should only be triggered\n      // once despite the number of mutations.  Additional\n      // triggers are redundant and are very costly\n      if (swiper.__preventObserver__) return;\n      if (mutations.length === 1) {\n        emit('observerUpdate', mutations[0]);\n        return;\n      }\n      const observerUpdate = function observerUpdate() {\n        emit('observerUpdate', mutations[0]);\n      };\n      if (window.requestAnimationFrame) {\n        window.requestAnimationFrame(observerUpdate);\n      } else {\n        window.setTimeout(observerUpdate, 0);\n      }\n    });\n    observer.observe(target, {\n      attributes: typeof options.attributes === 'undefined' ? true : options.attributes,\n      childList: swiper.isElement || (typeof options.childList === 'undefined' ? true : options).childList,\n      characterData: typeof options.characterData === 'undefined' ? true : options.characterData\n    });\n    observers.push(observer);\n  };\n  const init = () => {\n    if (!swiper.params.observer) return;\n    if (swiper.params.observeParents) {\n      const containerParents = elementParents(swiper.hostEl);\n      for (let i = 0; i < containerParents.length; i += 1) {\n        attach(containerParents[i]);\n      }\n    }\n    // Observe container\n    attach(swiper.hostEl, {\n      childList: swiper.params.observeSlideChildren\n    });\n\n    // Observe wrapper\n    attach(swiper.wrapperEl, {\n      attributes: false\n    });\n  };\n  const destroy = () => {\n    observers.forEach(observer => {\n      observer.disconnect();\n    });\n    observers.splice(0, observers.length);\n  };\n  extendParams({\n    observer: false,\n    observeParents: false,\n    observeSlideChildren: false\n  });\n  on('init', init);\n  on('destroy', destroy);\n}\n\n/* eslint-disable no-underscore-dangle */\n\nvar eventsEmitter = {\n  on(events, handler, priority) {\n    const self = this;\n    if (!self.eventsListeners || self.destroyed) return self;\n    if (typeof handler !== 'function') return self;\n    const method = priority ? 'unshift' : 'push';\n    events.split(' ').forEach(event => {\n      if (!self.eventsListeners[event]) self.eventsListeners[event] = [];\n      self.eventsListeners[event][method](handler);\n    });\n    return self;\n  },\n  once(events, handler, priority) {\n    const self = this;\n    if (!self.eventsListeners || self.destroyed) return self;\n    if (typeof handler !== 'function') return self;\n    function onceHandler(...args) {\n      self.off(events, onceHandler);\n      if (onceHandler.__emitterProxy) {\n        delete onceHandler.__emitterProxy;\n      }\n      handler.apply(self, args);\n    }\n    onceHandler.__emitterProxy = handler;\n    return self.on(events, onceHandler, priority);\n  },\n  onAny(handler, priority) {\n    const self = this;\n    if (!self.eventsListeners || self.destroyed) return self;\n    if (typeof handler !== 'function') return self;\n    const method = priority ? 'unshift' : 'push';\n    if (self.eventsAnyListeners.indexOf(handler) < 0) {\n      self.eventsAnyListeners[method](handler);\n    }\n    return self;\n  },\n  offAny(handler) {\n    const self = this;\n    if (!self.eventsListeners || self.destroyed) return self;\n    if (!self.eventsAnyListeners) return self;\n    const index = self.eventsAnyListeners.indexOf(handler);\n    if (index >= 0) {\n      self.eventsAnyListeners.splice(index, 1);\n    }\n    return self;\n  },\n  off(events, handler) {\n    const self = this;\n    if (!self.eventsListeners || self.destroyed) return self;\n    if (!self.eventsListeners) return self;\n    events.split(' ').forEach(event => {\n      if (typeof handler === 'undefined') {\n        self.eventsListeners[event] = [];\n      } else if (self.eventsListeners[event]) {\n        self.eventsListeners[event].forEach((eventHandler, index) => {\n          if (eventHandler === handler || eventHandler.__emitterProxy && eventHandler.__emitterProxy === handler) {\n            self.eventsListeners[event].splice(index, 1);\n          }\n        });\n      }\n    });\n    return self;\n  },\n  emit(...args) {\n    const self = this;\n    if (!self.eventsListeners || self.destroyed) return self;\n    if (!self.eventsListeners) return self;\n    let events;\n    let data;\n    let context;\n    if (typeof args[0] === 'string' || Array.isArray(args[0])) {\n      events = args[0];\n      data = args.slice(1, args.length);\n      context = self;\n    } else {\n      events = args[0].events;\n      data = args[0].data;\n      context = args[0].context || self;\n    }\n    data.unshift(context);\n    const eventsArray = Array.isArray(events) ? events : events.split(' ');\n    eventsArray.forEach(event => {\n      if (self.eventsAnyListeners && self.eventsAnyListeners.length) {\n        self.eventsAnyListeners.forEach(eventHandler => {\n          eventHandler.apply(context, [event, ...data]);\n        });\n      }\n      if (self.eventsListeners && self.eventsListeners[event]) {\n        self.eventsListeners[event].forEach(eventHandler => {\n          eventHandler.apply(context, data);\n        });\n      }\n    });\n    return self;\n  }\n};\n\nfunction updateSize() {\n  const swiper = this;\n  let width;\n  let height;\n  const el = swiper.el;\n  if (typeof swiper.params.width !== 'undefined' && swiper.params.width !== null) {\n    width = swiper.params.width;\n  } else {\n    width = el.clientWidth;\n  }\n  if (typeof swiper.params.height !== 'undefined' && swiper.params.height !== null) {\n    height = swiper.params.height;\n  } else {\n    height = el.clientHeight;\n  }\n  if (width === 0 && swiper.isHorizontal() || height === 0 && swiper.isVertical()) {\n    return;\n  }\n\n  // Subtract paddings\n  width = width - parseInt(elementStyle(el, 'padding-left') || 0, 10) - parseInt(elementStyle(el, 'padding-right') || 0, 10);\n  height = height - parseInt(elementStyle(el, 'padding-top') || 0, 10) - parseInt(elementStyle(el, 'padding-bottom') || 0, 10);\n  if (Number.isNaN(width)) width = 0;\n  if (Number.isNaN(height)) height = 0;\n  Object.assign(swiper, {\n    width,\n    height,\n    size: swiper.isHorizontal() ? width : height\n  });\n}\n\nfunction updateSlides() {\n  const swiper = this;\n  function getDirectionPropertyValue(node, label) {\n    return parseFloat(node.getPropertyValue(swiper.getDirectionLabel(label)) || 0);\n  }\n  const params = swiper.params;\n  const {\n    wrapperEl,\n    slidesEl,\n    rtlTranslate: rtl,\n    wrongRTL\n  } = swiper;\n  const isVirtual = swiper.virtual && params.virtual.enabled;\n  const previousSlidesLength = isVirtual ? swiper.virtual.slides.length : swiper.slides.length;\n  const slides = elementChildren(slidesEl, `.${swiper.params.slideClass}, swiper-slide`);\n  const slidesLength = isVirtual ? swiper.virtual.slides.length : slides.length;\n  let snapGrid = [];\n  const slidesGrid = [];\n  const slidesSizesGrid = [];\n  let offsetBefore = params.slidesOffsetBefore;\n  if (typeof offsetBefore === 'function') {\n    offsetBefore = params.slidesOffsetBefore.call(swiper);\n  }\n  let offsetAfter = params.slidesOffsetAfter;\n  if (typeof offsetAfter === 'function') {\n    offsetAfter = params.slidesOffsetAfter.call(swiper);\n  }\n  const previousSnapGridLength = swiper.snapGrid.length;\n  const previousSlidesGridLength = swiper.slidesGrid.length;\n  const swiperSize = swiper.size - offsetBefore - offsetAfter;\n  let spaceBetween = params.spaceBetween;\n  let slidePosition = -offsetBefore;\n  let prevSlideSize = 0;\n  let index = 0;\n  if (typeof swiperSize === 'undefined') {\n    return;\n  }\n  if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) {\n    spaceBetween = parseFloat(spaceBetween.replace('%', '')) / 100 * swiperSize;\n  } else if (typeof spaceBetween === 'string') {\n    spaceBetween = parseFloat(spaceBetween);\n  }\n  swiper.virtualSize = -spaceBetween - offsetBefore - offsetAfter;\n\n  // reset margins\n  slides.forEach(slideEl => {\n    if (rtl) {\n      slideEl.style.marginLeft = '';\n    } else {\n      slideEl.style.marginRight = '';\n    }\n    slideEl.style.marginBottom = '';\n    slideEl.style.marginTop = '';\n  });\n\n  // reset cssMode offsets\n  if (params.centeredSlides && params.cssMode) {\n    setCSSProperty(wrapperEl, '--swiper-centered-offset-before', '');\n    setCSSProperty(wrapperEl, '--swiper-centered-offset-after', '');\n  }\n\n  // set cssMode offsets\n  if (params.cssMode) {\n    setCSSProperty(wrapperEl, '--swiper-slides-offset-before', `${offsetBefore}px`);\n    setCSSProperty(wrapperEl, '--swiper-slides-offset-after', `${offsetAfter}px`);\n  }\n  const gridEnabled = params.grid && params.grid.rows > 1 && swiper.grid;\n  if (gridEnabled) {\n    swiper.grid.initSlides(slides);\n  } else if (swiper.grid) {\n    swiper.grid.unsetSlides();\n  }\n\n  // Calc slides\n  let slideSize;\n  const shouldResetSlideSize = params.slidesPerView === 'auto' && params.breakpoints && Object.keys(params.breakpoints).filter(key => {\n    return typeof params.breakpoints[key].slidesPerView !== 'undefined';\n  }).length > 0;\n  for (let i = 0; i < slidesLength; i += 1) {\n    slideSize = 0;\n    const slide = slides[i];\n    if (slide) {\n      if (gridEnabled) {\n        swiper.grid.updateSlide(i, slide, slides);\n      }\n      if (elementStyle(slide, 'display') === 'none') continue; // eslint-disable-line\n    }\n\n    if (isVirtual && params.slidesPerView === 'auto') {\n      if (params.virtual.slidesPerViewAutoSlideSize) {\n        slideSize = params.virtual.slidesPerViewAutoSlideSize;\n      }\n      if (slideSize && slide) {\n        if (params.roundLengths) slideSize = Math.floor(slideSize);\n        slide.style[swiper.getDirectionLabel('width')] = `${slideSize}px`;\n      }\n    } else if (params.slidesPerView === 'auto') {\n      if (shouldResetSlideSize) {\n        slide.style[swiper.getDirectionLabel('width')] = ``;\n      }\n      const slideStyles = getComputedStyle(slide);\n      const currentTransform = slide.style.transform;\n      const currentWebKitTransform = slide.style.webkitTransform;\n      if (currentTransform) {\n        slide.style.transform = 'none';\n      }\n      if (currentWebKitTransform) {\n        slide.style.webkitTransform = 'none';\n      }\n      if (params.roundLengths) {\n        slideSize = swiper.isHorizontal() ? elementOuterSize(slide, 'width', true) : elementOuterSize(slide, 'height', true);\n      } else {\n        // eslint-disable-next-line\n        const width = getDirectionPropertyValue(slideStyles, 'width');\n        const paddingLeft = getDirectionPropertyValue(slideStyles, 'padding-left');\n        const paddingRight = getDirectionPropertyValue(slideStyles, 'padding-right');\n        const marginLeft = getDirectionPropertyValue(slideStyles, 'margin-left');\n        const marginRight = getDirectionPropertyValue(slideStyles, 'margin-right');\n        const boxSizing = slideStyles.getPropertyValue('box-sizing');\n        if (boxSizing && boxSizing === 'border-box') {\n          slideSize = width + marginLeft + marginRight;\n        } else {\n          const {\n            clientWidth,\n            offsetWidth\n          } = slide;\n          slideSize = width + paddingLeft + paddingRight + marginLeft + marginRight + (offsetWidth - clientWidth);\n        }\n      }\n      if (currentTransform) {\n        slide.style.transform = currentTransform;\n      }\n      if (currentWebKitTransform) {\n        slide.style.webkitTransform = currentWebKitTransform;\n      }\n      if (params.roundLengths) slideSize = Math.floor(slideSize);\n    } else {\n      slideSize = (swiperSize - (params.slidesPerView - 1) * spaceBetween) / params.slidesPerView;\n      if (params.roundLengths) slideSize = Math.floor(slideSize);\n      if (slide) {\n        slide.style[swiper.getDirectionLabel('width')] = `${slideSize}px`;\n      }\n    }\n    if (slide) {\n      slide.swiperSlideSize = slideSize;\n    }\n    slidesSizesGrid.push(slideSize);\n    if (params.centeredSlides) {\n      slidePosition = slidePosition + slideSize / 2 + prevSlideSize / 2 + spaceBetween;\n      if (prevSlideSize === 0 && i !== 0) slidePosition = slidePosition - swiperSize / 2 - spaceBetween;\n      if (i === 0) slidePosition = slidePosition - swiperSize / 2 - spaceBetween;\n      if (Math.abs(slidePosition) < 1 / 1000) slidePosition = 0;\n      if (params.roundLengths) slidePosition = Math.floor(slidePosition);\n      if (index % params.slidesPerGroup === 0) snapGrid.push(slidePosition);\n      slidesGrid.push(slidePosition);\n    } else {\n      if (params.roundLengths) slidePosition = Math.floor(slidePosition);\n      if ((index - Math.min(swiper.params.slidesPerGroupSkip, index)) % swiper.params.slidesPerGroup === 0) snapGrid.push(slidePosition);\n      slidesGrid.push(slidePosition);\n      slidePosition = slidePosition + slideSize + spaceBetween;\n    }\n    swiper.virtualSize += slideSize + spaceBetween;\n    prevSlideSize = slideSize;\n    index += 1;\n  }\n  swiper.virtualSize = Math.max(swiper.virtualSize, swiperSize) + offsetAfter;\n  if (rtl && wrongRTL && (params.effect === 'slide' || params.effect === 'coverflow')) {\n    wrapperEl.style.width = `${swiper.virtualSize + spaceBetween}px`;\n  }\n  if (params.setWrapperSize) {\n    wrapperEl.style[swiper.getDirectionLabel('width')] = `${swiper.virtualSize + spaceBetween}px`;\n  }\n  if (gridEnabled) {\n    swiper.grid.updateWrapperSize(slideSize, snapGrid);\n  }\n\n  // Remove last grid elements depending on width\n  if (!params.centeredSlides) {\n    // Check if snapToSlideEdge should be applied\n    const isFractionalSlidesPerView = params.slidesPerView !== 'auto' && params.slidesPerView % 1 !== 0;\n    const shouldSnapToSlideEdge = params.snapToSlideEdge && !params.loop && (params.slidesPerView === 'auto' || isFractionalSlidesPerView);\n\n    // Calculate the last allowed snap index when snapToSlideEdge is enabled\n    // This ensures minimum slides are visible at the end\n    let lastAllowedSnapIndex = snapGrid.length;\n    if (shouldSnapToSlideEdge) {\n      let minVisibleSlides;\n      if (params.slidesPerView === 'auto') {\n        // For 'auto' mode, calculate how many slides fit based on actual sizes\n        minVisibleSlides = 1;\n        let accumulatedSize = 0;\n        for (let i = slidesSizesGrid.length - 1; i >= 0; i -= 1) {\n          accumulatedSize += slidesSizesGrid[i] + (i < slidesSizesGrid.length - 1 ? spaceBetween : 0);\n          if (accumulatedSize <= swiperSize) {\n            minVisibleSlides = slidesSizesGrid.length - i;\n          } else {\n            break;\n          }\n        }\n      } else {\n        minVisibleSlides = Math.floor(params.slidesPerView);\n      }\n      lastAllowedSnapIndex = Math.max(slidesLength - minVisibleSlides, 0);\n    }\n    const newSlidesGrid = [];\n    for (let i = 0; i < snapGrid.length; i += 1) {\n      let slidesGridItem = snapGrid[i];\n      if (params.roundLengths) slidesGridItem = Math.floor(slidesGridItem);\n      if (shouldSnapToSlideEdge) {\n        // When snapToSlideEdge is enabled, only keep snaps up to lastAllowedSnapIndex\n        if (i <= lastAllowedSnapIndex) {\n          newSlidesGrid.push(slidesGridItem);\n        }\n      } else if (snapGrid[i] <= swiper.virtualSize - swiperSize) {\n        // When snapToSlideEdge is disabled, keep snaps that fit within scrollable area\n        newSlidesGrid.push(slidesGridItem);\n      }\n    }\n    snapGrid = newSlidesGrid;\n    if (Math.floor(swiper.virtualSize - swiperSize) - Math.floor(snapGrid[snapGrid.length - 1]) > 1) {\n      // Only add edge-aligned snap if snapToSlideEdge is not enabled\n      if (!shouldSnapToSlideEdge) {\n        snapGrid.push(swiper.virtualSize - swiperSize);\n      }\n    }\n  }\n  if (isVirtual && params.loop) {\n    const size = slidesSizesGrid[0] + spaceBetween;\n    if (params.slidesPerGroup > 1) {\n      const groups = Math.ceil((swiper.virtual.slidesBefore + swiper.virtual.slidesAfter) / params.slidesPerGroup);\n      const groupSize = size * params.slidesPerGroup;\n      for (let i = 0; i < groups; i += 1) {\n        snapGrid.push(snapGrid[snapGrid.length - 1] + groupSize);\n      }\n    }\n    for (let i = 0; i < swiper.virtual.slidesBefore + swiper.virtual.slidesAfter; i += 1) {\n      if (params.slidesPerGroup === 1) {\n        snapGrid.push(snapGrid[snapGrid.length - 1] + size);\n      }\n      slidesGrid.push(slidesGrid[slidesGrid.length - 1] + size);\n      swiper.virtualSize += size;\n    }\n  }\n  if (snapGrid.length === 0) snapGrid = [0];\n  if (spaceBetween !== 0) {\n    const key = swiper.isHorizontal() && rtl ? 'marginLeft' : swiper.getDirectionLabel('marginRight');\n    slides.filter((_, slideIndex) => {\n      if (!params.cssMode || params.loop) return true;\n      if (slideIndex === slides.length - 1) {\n        return false;\n      }\n      return true;\n    }).forEach(slideEl => {\n      slideEl.style[key] = `${spaceBetween}px`;\n    });\n  }\n  if (params.centeredSlides && params.centeredSlidesBounds) {\n    let allSlidesSize = 0;\n    slidesSizesGrid.forEach(slideSizeValue => {\n      allSlidesSize += slideSizeValue + (spaceBetween || 0);\n    });\n    allSlidesSize -= spaceBetween;\n    const maxSnap = allSlidesSize > swiperSize ? allSlidesSize - swiperSize : 0;\n    snapGrid = snapGrid.map(snap => {\n      if (snap <= 0) return -offsetBefore;\n      if (snap > maxSnap) return maxSnap + offsetAfter;\n      return snap;\n    });\n  }\n  if (params.centerInsufficientSlides) {\n    let allSlidesSize = 0;\n    slidesSizesGrid.forEach(slideSizeValue => {\n      allSlidesSize += slideSizeValue + (spaceBetween || 0);\n    });\n    allSlidesSize -= spaceBetween;\n    if (allSlidesSize < swiperSize) {\n      const allSlidesOffset = (swiperSize - allSlidesSize) / 2;\n      snapGrid.forEach((snap, snapIndex) => {\n        snapGrid[snapIndex] = snap - allSlidesOffset;\n      });\n      slidesGrid.forEach((snap, snapIndex) => {\n        slidesGrid[snapIndex] = snap + allSlidesOffset;\n      });\n    }\n  }\n  Object.assign(swiper, {\n    slides,\n    snapGrid,\n    slidesGrid,\n    slidesSizesGrid\n  });\n  if (params.centeredSlides && params.cssMode && !params.centeredSlidesBounds) {\n    setCSSProperty(wrapperEl, '--swiper-centered-offset-before', `${-snapGrid[0]}px`);\n    setCSSProperty(wrapperEl, '--swiper-centered-offset-after', `${swiper.size / 2 - slidesSizesGrid[slidesSizesGrid.length - 1] / 2}px`);\n    const addToSnapGrid = -swiper.snapGrid[0];\n    const addToSlidesGrid = -swiper.slidesGrid[0];\n    swiper.snapGrid = swiper.snapGrid.map(v => v + addToSnapGrid);\n    swiper.slidesGrid = swiper.slidesGrid.map(v => v + addToSlidesGrid);\n  }\n  if (slidesLength !== previousSlidesLength) {\n    swiper.emit('slidesLengthChange');\n  }\n  if (snapGrid.length !== previousSnapGridLength) {\n    if (swiper.params.watchOverflow) swiper.checkOverflow();\n    swiper.emit('snapGridLengthChange');\n  }\n  if (slidesGrid.length !== previousSlidesGridLength) {\n    swiper.emit('slidesGridLengthChange');\n  }\n  if (params.watchSlidesProgress) {\n    swiper.updateSlidesOffset();\n  }\n  swiper.emit('slidesUpdated');\n  if (!isVirtual && !params.cssMode && (params.effect === 'slide' || params.effect === 'fade')) {\n    const backFaceHiddenClass = `${params.containerModifierClass}backface-hidden`;\n    const hasClassBackfaceClassAdded = swiper.el.classList.contains(backFaceHiddenClass);\n    if (slidesLength <= params.maxBackfaceHiddenSlides) {\n      if (!hasClassBackfaceClassAdded) swiper.el.classList.add(backFaceHiddenClass);\n    } else if (hasClassBackfaceClassAdded) {\n      swiper.el.classList.remove(backFaceHiddenClass);\n    }\n  }\n}\n\nfunction updateAutoHeight(speed) {\n  const swiper = this;\n  const activeSlides = [];\n  const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n  let newHeight = 0;\n  let i;\n  if (typeof speed === 'number') {\n    swiper.setTransition(speed);\n  } else if (speed === true) {\n    swiper.setTransition(swiper.params.speed);\n  }\n  const getSlideByIndex = index => {\n    if (isVirtual) {\n      return swiper.slides[swiper.getSlideIndexByData(index)];\n    }\n    return swiper.slides[index];\n  };\n  // Find slides currently in view\n  if (swiper.params.slidesPerView !== 'auto' && swiper.params.slidesPerView > 1) {\n    if (swiper.params.centeredSlides) {\n      (swiper.visibleSlides || []).forEach(slide => {\n        activeSlides.push(slide);\n      });\n    } else {\n      for (i = 0; i < Math.ceil(swiper.params.slidesPerView); i += 1) {\n        const index = swiper.activeIndex + i;\n        if (index > swiper.slides.length && !isVirtual) break;\n        activeSlides.push(getSlideByIndex(index));\n      }\n    }\n  } else {\n    activeSlides.push(getSlideByIndex(swiper.activeIndex));\n  }\n\n  // Find new height from highest slide in view\n  for (i = 0; i < activeSlides.length; i += 1) {\n    if (typeof activeSlides[i] !== 'undefined') {\n      const height = activeSlides[i].offsetHeight;\n      newHeight = height > newHeight ? height : newHeight;\n    }\n  }\n\n  // Update Height\n  if (newHeight || newHeight === 0) swiper.wrapperEl.style.height = `${newHeight}px`;\n}\n\nfunction updateSlidesOffset() {\n  const swiper = this;\n  const slides = swiper.slides;\n  // eslint-disable-next-line\n  const minusOffset = swiper.isElement ? swiper.isHorizontal() ? swiper.wrapperEl.offsetLeft : swiper.wrapperEl.offsetTop : 0;\n  for (let i = 0; i < slides.length; i += 1) {\n    slides[i].swiperSlideOffset = (swiper.isHorizontal() ? slides[i].offsetLeft : slides[i].offsetTop) - minusOffset - swiper.cssOverflowAdjustment();\n  }\n}\n\nconst toggleSlideClasses$1 = (slideEl, condition, className) => {\n  if (condition && !slideEl.classList.contains(className)) {\n    slideEl.classList.add(className);\n  } else if (!condition && slideEl.classList.contains(className)) {\n    slideEl.classList.remove(className);\n  }\n};\nfunction updateSlidesProgress(translate = this && this.translate || 0) {\n  const swiper = this;\n  const params = swiper.params;\n  const {\n    slides,\n    rtlTranslate: rtl,\n    snapGrid\n  } = swiper;\n  if (slides.length === 0) return;\n  if (typeof slides[0].swiperSlideOffset === 'undefined') swiper.updateSlidesOffset();\n  let offsetCenter = -translate;\n  if (rtl) offsetCenter = translate;\n  swiper.visibleSlidesIndexes = [];\n  swiper.visibleSlides = [];\n  let spaceBetween = params.spaceBetween;\n  if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) {\n    spaceBetween = parseFloat(spaceBetween.replace('%', '')) / 100 * swiper.size;\n  } else if (typeof spaceBetween === 'string') {\n    spaceBetween = parseFloat(spaceBetween);\n  }\n  for (let i = 0; i < slides.length; i += 1) {\n    const slide = slides[i];\n    let slideOffset = slide.swiperSlideOffset;\n    if (params.cssMode && params.centeredSlides) {\n      slideOffset -= slides[0].swiperSlideOffset;\n    }\n    const slideProgress = (offsetCenter + (params.centeredSlides ? swiper.minTranslate() : 0) - slideOffset) / (slide.swiperSlideSize + spaceBetween);\n    const originalSlideProgress = (offsetCenter - snapGrid[0] + (params.centeredSlides ? swiper.minTranslate() : 0) - slideOffset) / (slide.swiperSlideSize + spaceBetween);\n    const slideBefore = -(offsetCenter - slideOffset);\n    const slideAfter = slideBefore + swiper.slidesSizesGrid[i];\n    const isFullyVisible = slideBefore >= 0 && slideBefore <= swiper.size - swiper.slidesSizesGrid[i];\n    const isVisible = slideBefore >= 0 && slideBefore < swiper.size - 1 || slideAfter > 1 && slideAfter <= swiper.size || slideBefore <= 0 && slideAfter >= swiper.size;\n    if (isVisible) {\n      swiper.visibleSlides.push(slide);\n      swiper.visibleSlidesIndexes.push(i);\n    }\n    toggleSlideClasses$1(slide, isVisible, params.slideVisibleClass);\n    toggleSlideClasses$1(slide, isFullyVisible, params.slideFullyVisibleClass);\n    slide.progress = rtl ? -slideProgress : slideProgress;\n    slide.originalProgress = rtl ? -originalSlideProgress : originalSlideProgress;\n  }\n}\n\nfunction updateProgress(translate) {\n  const swiper = this;\n  if (typeof translate === 'undefined') {\n    const multiplier = swiper.rtlTranslate ? -1 : 1;\n    // eslint-disable-next-line\n    translate = swiper && swiper.translate && swiper.translate * multiplier || 0;\n  }\n  const params = swiper.params;\n  const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n  let {\n    progress,\n    isBeginning,\n    isEnd,\n    progressLoop\n  } = swiper;\n  const wasBeginning = isBeginning;\n  const wasEnd = isEnd;\n  if (translatesDiff === 0) {\n    progress = 0;\n    isBeginning = true;\n    isEnd = true;\n  } else {\n    progress = (translate - swiper.minTranslate()) / translatesDiff;\n    const isBeginningRounded = Math.abs(translate - swiper.minTranslate()) < 1;\n    const isEndRounded = Math.abs(translate - swiper.maxTranslate()) < 1;\n    isBeginning = isBeginningRounded || progress <= 0;\n    isEnd = isEndRounded || progress >= 1;\n    if (isBeginningRounded) progress = 0;\n    if (isEndRounded) progress = 1;\n  }\n  if (params.loop) {\n    const firstSlideIndex = swiper.getSlideIndexByData(0);\n    const lastSlideIndex = swiper.getSlideIndexByData(swiper.slides.length - 1);\n    const firstSlideTranslate = swiper.slidesGrid[firstSlideIndex];\n    const lastSlideTranslate = swiper.slidesGrid[lastSlideIndex];\n    const translateMax = swiper.slidesGrid[swiper.slidesGrid.length - 1];\n    const translateAbs = Math.abs(translate);\n    if (translateAbs >= firstSlideTranslate) {\n      progressLoop = (translateAbs - firstSlideTranslate) / translateMax;\n    } else {\n      progressLoop = (translateAbs + translateMax - lastSlideTranslate) / translateMax;\n    }\n    if (progressLoop > 1) progressLoop -= 1;\n  }\n  Object.assign(swiper, {\n    progress,\n    progressLoop,\n    isBeginning,\n    isEnd\n  });\n  if (params.watchSlidesProgress || params.centeredSlides && params.autoHeight) swiper.updateSlidesProgress(translate);\n  if (isBeginning && !wasBeginning) {\n    swiper.emit('reachBeginning toEdge');\n  }\n  if (isEnd && !wasEnd) {\n    swiper.emit('reachEnd toEdge');\n  }\n  if (wasBeginning && !isBeginning || wasEnd && !isEnd) {\n    swiper.emit('fromEdge');\n  }\n  swiper.emit('progress', progress);\n}\n\nconst toggleSlideClasses = (slideEl, condition, className) => {\n  if (condition && !slideEl.classList.contains(className)) {\n    slideEl.classList.add(className);\n  } else if (!condition && slideEl.classList.contains(className)) {\n    slideEl.classList.remove(className);\n  }\n};\nfunction updateSlidesClasses() {\n  const swiper = this;\n  const {\n    slides,\n    params,\n    slidesEl,\n    activeIndex\n  } = swiper;\n  const isVirtual = swiper.virtual && params.virtual.enabled;\n  const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1;\n  const getFilteredSlide = selector => {\n    return elementChildren(slidesEl, `.${params.slideClass}${selector}, swiper-slide${selector}`)[0];\n  };\n  let activeSlide;\n  let prevSlide;\n  let nextSlide;\n  if (isVirtual) {\n    if (params.loop) {\n      let slideIndex = activeIndex - swiper.virtual.slidesBefore;\n      if (slideIndex < 0) slideIndex = swiper.virtual.slides.length + slideIndex;\n      if (slideIndex >= swiper.virtual.slides.length) slideIndex -= swiper.virtual.slides.length;\n      activeSlide = getFilteredSlide(`[data-swiper-slide-index=\"${slideIndex}\"]`);\n    } else {\n      activeSlide = getFilteredSlide(`[data-swiper-slide-index=\"${activeIndex}\"]`);\n    }\n  } else {\n    if (gridEnabled) {\n      activeSlide = slides.find(slideEl => slideEl.column === activeIndex);\n      nextSlide = slides.find(slideEl => slideEl.column === activeIndex + 1);\n      prevSlide = slides.find(slideEl => slideEl.column === activeIndex - 1);\n    } else {\n      activeSlide = slides[activeIndex];\n    }\n  }\n  if (activeSlide) {\n    if (!gridEnabled) {\n      // Next Slide\n      nextSlide = elementNextAll(activeSlide, `.${params.slideClass}, swiper-slide`)[0];\n      if (params.loop && !nextSlide) {\n        nextSlide = slides[0];\n      }\n\n      // Prev Slide\n      prevSlide = elementPrevAll(activeSlide, `.${params.slideClass}, swiper-slide`)[0];\n      if (params.loop && !prevSlide === 0) {\n        prevSlide = slides[slides.length - 1];\n      }\n    }\n  }\n  slides.forEach(slideEl => {\n    toggleSlideClasses(slideEl, slideEl === activeSlide, params.slideActiveClass);\n    toggleSlideClasses(slideEl, slideEl === nextSlide, params.slideNextClass);\n    toggleSlideClasses(slideEl, slideEl === prevSlide, params.slidePrevClass);\n  });\n  swiper.emitSlidesClasses();\n}\n\nconst processLazyPreloader = (swiper, imageEl) => {\n  if (!swiper || swiper.destroyed || !swiper.params) return;\n  const slideSelector = () => swiper.isElement ? `swiper-slide` : `.${swiper.params.slideClass}`;\n  const slideEl = imageEl.closest(slideSelector());\n  if (slideEl) {\n    let lazyEl = slideEl.querySelector(`.${swiper.params.lazyPreloaderClass}`);\n    if (!lazyEl && swiper.isElement) {\n      if (slideEl.shadowRoot) {\n        lazyEl = slideEl.shadowRoot.querySelector(`.${swiper.params.lazyPreloaderClass}`);\n      } else {\n        // init later\n        requestAnimationFrame(() => {\n          if (slideEl.shadowRoot) {\n            lazyEl = slideEl.shadowRoot.querySelector(`.${swiper.params.lazyPreloaderClass}`);\n            if (lazyEl && !lazyEl.lazyPreloaderManaged) lazyEl.remove();\n          }\n        });\n      }\n    }\n    // Skip removal if managed by React/Vue component\n    if (lazyEl && !lazyEl.lazyPreloaderManaged) lazyEl.remove();\n  }\n};\nconst unlazy = (swiper, index) => {\n  if (!swiper.slides[index]) return;\n  const imageEl = swiper.slides[index].querySelector('[loading=\"lazy\"]');\n  if (imageEl) imageEl.removeAttribute('loading');\n};\nconst preload = swiper => {\n  if (!swiper || swiper.destroyed || !swiper.params) return;\n  let amount = swiper.params.lazyPreloadPrevNext;\n  const len = swiper.slides.length;\n  if (!len || !amount || amount < 0) return;\n  amount = Math.min(amount, len);\n  const slidesPerView = swiper.params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : Math.ceil(swiper.params.slidesPerView);\n  const activeIndex = swiper.activeIndex;\n  if (swiper.params.grid && swiper.params.grid.rows > 1) {\n    const activeColumn = activeIndex;\n    const preloadColumns = [activeColumn - amount];\n    preloadColumns.push(...Array.from({\n      length: amount\n    }).map((_, i) => {\n      return activeColumn + slidesPerView + i;\n    }));\n    swiper.slides.forEach((slideEl, i) => {\n      if (preloadColumns.includes(slideEl.column)) unlazy(swiper, i);\n    });\n    return;\n  }\n  const slideIndexLastInView = activeIndex + slidesPerView - 1;\n  if (swiper.params.rewind || swiper.params.loop) {\n    for (let i = activeIndex - amount; i <= slideIndexLastInView + amount; i += 1) {\n      const realIndex = (i % len + len) % len;\n      if (realIndex < activeIndex || realIndex > slideIndexLastInView) unlazy(swiper, realIndex);\n    }\n  } else {\n    for (let i = Math.max(activeIndex - amount, 0); i <= Math.min(slideIndexLastInView + amount, len - 1); i += 1) {\n      if (i !== activeIndex && (i > slideIndexLastInView || i < activeIndex)) {\n        unlazy(swiper, i);\n      }\n    }\n  }\n};\n\nfunction getActiveIndexByTranslate(swiper) {\n  const {\n    slidesGrid,\n    params\n  } = swiper;\n  const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;\n  let activeIndex;\n  for (let i = 0; i < slidesGrid.length; i += 1) {\n    if (typeof slidesGrid[i + 1] !== 'undefined') {\n      if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1] - (slidesGrid[i + 1] - slidesGrid[i]) / 2) {\n        activeIndex = i;\n      } else if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1]) {\n        activeIndex = i + 1;\n      }\n    } else if (translate >= slidesGrid[i]) {\n      activeIndex = i;\n    }\n  }\n  // Normalize slideIndex\n  if (params.normalizeSlideIndex) {\n    if (activeIndex < 0 || typeof activeIndex === 'undefined') activeIndex = 0;\n  }\n  return activeIndex;\n}\nfunction updateActiveIndex(newActiveIndex) {\n  const swiper = this;\n  const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;\n  const {\n    snapGrid,\n    params,\n    activeIndex: previousIndex,\n    realIndex: previousRealIndex,\n    snapIndex: previousSnapIndex\n  } = swiper;\n  let activeIndex = newActiveIndex;\n  let snapIndex;\n  const getVirtualRealIndex = aIndex => {\n    let realIndex = aIndex - swiper.virtual.slidesBefore;\n    if (realIndex < 0) {\n      realIndex = swiper.virtual.slides.length + realIndex;\n    }\n    if (realIndex >= swiper.virtual.slides.length) {\n      realIndex -= swiper.virtual.slides.length;\n    }\n    return realIndex;\n  };\n  if (typeof activeIndex === 'undefined') {\n    activeIndex = getActiveIndexByTranslate(swiper);\n  }\n  if (snapGrid.indexOf(translate) >= 0) {\n    snapIndex = snapGrid.indexOf(translate);\n  } else {\n    const skip = Math.min(params.slidesPerGroupSkip, activeIndex);\n    snapIndex = skip + Math.floor((activeIndex - skip) / params.slidesPerGroup);\n  }\n  if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1;\n  if (activeIndex === previousIndex && !swiper.params.loop) {\n    if (snapIndex !== previousSnapIndex) {\n      swiper.snapIndex = snapIndex;\n      swiper.emit('snapIndexChange');\n    }\n    return;\n  }\n  if (activeIndex === previousIndex && swiper.params.loop && swiper.virtual && swiper.params.virtual.enabled) {\n    swiper.realIndex = getVirtualRealIndex(activeIndex);\n    return;\n  }\n  const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1;\n\n  // Get real index\n  let realIndex;\n  if (swiper.virtual && params.virtual.enabled) {\n    if (params.loop) {\n      realIndex = getVirtualRealIndex(activeIndex);\n    } else {\n      realIndex = activeIndex;\n    }\n  } else if (gridEnabled) {\n    const firstSlideInColumn = swiper.slides.find(slideEl => slideEl.column === activeIndex);\n    let activeSlideIndex = parseInt(firstSlideInColumn.getAttribute('data-swiper-slide-index'), 10);\n    if (Number.isNaN(activeSlideIndex)) {\n      activeSlideIndex = Math.max(swiper.slides.indexOf(firstSlideInColumn), 0);\n    }\n    realIndex = Math.floor(activeSlideIndex / params.grid.rows);\n  } else if (swiper.slides[activeIndex]) {\n    const slideIndex = swiper.slides[activeIndex].getAttribute('data-swiper-slide-index');\n    if (slideIndex) {\n      realIndex = parseInt(slideIndex, 10);\n    } else {\n      realIndex = activeIndex;\n    }\n  } else {\n    realIndex = activeIndex;\n  }\n  Object.assign(swiper, {\n    previousSnapIndex,\n    snapIndex,\n    previousRealIndex,\n    realIndex,\n    previousIndex,\n    activeIndex\n  });\n  if (swiper.initialized) {\n    preload(swiper);\n  }\n  swiper.emit('activeIndexChange');\n  swiper.emit('snapIndexChange');\n  if (swiper.initialized || swiper.params.runCallbacksOnInit) {\n    if (previousRealIndex !== realIndex) {\n      swiper.emit('realIndexChange');\n    }\n    swiper.emit('slideChange');\n  }\n}\n\nfunction updateClickedSlide(el, path) {\n  const swiper = this;\n  const params = swiper.params;\n  let slide = el.closest(`.${params.slideClass}, swiper-slide`);\n  if (!slide && swiper.isElement && path && path.length > 1 && path.includes(el)) {\n    [...path.slice(path.indexOf(el) + 1, path.length)].forEach(pathEl => {\n      if (!slide && pathEl.matches && pathEl.matches(`.${params.slideClass}, swiper-slide`)) {\n        slide = pathEl;\n      }\n    });\n  }\n  let slideFound = false;\n  let slideIndex;\n  if (slide) {\n    for (let i = 0; i < swiper.slides.length; i += 1) {\n      if (swiper.slides[i] === slide) {\n        slideFound = true;\n        slideIndex = i;\n        break;\n      }\n    }\n  }\n  if (slide && slideFound) {\n    swiper.clickedSlide = slide;\n    if (swiper.virtual && swiper.params.virtual.enabled) {\n      swiper.clickedIndex = parseInt(slide.getAttribute('data-swiper-slide-index'), 10);\n    } else {\n      swiper.clickedIndex = slideIndex;\n    }\n  } else {\n    swiper.clickedSlide = undefined;\n    swiper.clickedIndex = undefined;\n    return;\n  }\n  if (params.slideToClickedSlide && swiper.clickedIndex !== undefined && swiper.clickedIndex !== swiper.activeIndex) {\n    swiper.slideToClickedSlide();\n  }\n}\n\nvar update = {\n  updateSize,\n  updateSlides,\n  updateAutoHeight,\n  updateSlidesOffset,\n  updateSlidesProgress,\n  updateProgress,\n  updateSlidesClasses,\n  updateActiveIndex,\n  updateClickedSlide\n};\n\nfunction getSwiperTranslate(axis = this.isHorizontal() ? 'x' : 'y') {\n  const swiper = this;\n  const {\n    params,\n    rtlTranslate: rtl,\n    translate,\n    wrapperEl\n  } = swiper;\n  if (params.virtualTranslate) {\n    return rtl ? -translate : translate;\n  }\n  if (params.cssMode) {\n    return translate;\n  }\n  let currentTranslate = getTranslate(wrapperEl, axis);\n  currentTranslate += swiper.cssOverflowAdjustment();\n  if (rtl) currentTranslate = -currentTranslate;\n  return currentTranslate || 0;\n}\n\nfunction setTranslate(translate, byController) {\n  const swiper = this;\n  const {\n    rtlTranslate: rtl,\n    params,\n    wrapperEl,\n    progress\n  } = swiper;\n  let x = 0;\n  let y = 0;\n  const z = 0;\n  if (swiper.isHorizontal()) {\n    x = rtl ? -translate : translate;\n  } else {\n    y = translate;\n  }\n  if (params.roundLengths) {\n    x = Math.floor(x);\n    y = Math.floor(y);\n  }\n  swiper.previousTranslate = swiper.translate;\n  swiper.translate = swiper.isHorizontal() ? x : y;\n  if (params.cssMode) {\n    wrapperEl[swiper.isHorizontal() ? 'scrollLeft' : 'scrollTop'] = swiper.isHorizontal() ? -x : -y;\n  } else if (!params.virtualTranslate) {\n    if (swiper.isHorizontal()) {\n      x -= swiper.cssOverflowAdjustment();\n    } else {\n      y -= swiper.cssOverflowAdjustment();\n    }\n    wrapperEl.style.transform = `translate3d(${x}px, ${y}px, ${z}px)`;\n  }\n\n  // Check if we need to update progress\n  let newProgress;\n  const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n  if (translatesDiff === 0) {\n    newProgress = 0;\n  } else {\n    newProgress = (translate - swiper.minTranslate()) / translatesDiff;\n  }\n  if (newProgress !== progress) {\n    swiper.updateProgress(translate);\n  }\n  swiper.emit('setTranslate', swiper.translate, byController);\n}\n\nfunction minTranslate() {\n  return -this.snapGrid[0];\n}\n\nfunction maxTranslate() {\n  return -this.snapGrid[this.snapGrid.length - 1];\n}\n\nfunction translateTo(translate = 0, speed = this.params.speed, runCallbacks = true, translateBounds = true, internal) {\n  const swiper = this;\n  const {\n    params,\n    wrapperEl\n  } = swiper;\n  if (swiper.animating && params.preventInteractionOnTransition) {\n    return false;\n  }\n  const minTranslate = swiper.minTranslate();\n  const maxTranslate = swiper.maxTranslate();\n  let newTranslate;\n  if (translateBounds && translate > minTranslate) newTranslate = minTranslate;else if (translateBounds && translate < maxTranslate) newTranslate = maxTranslate;else newTranslate = translate;\n\n  // Update progress\n  swiper.updateProgress(newTranslate);\n  if (params.cssMode) {\n    const isH = swiper.isHorizontal();\n    if (speed === 0) {\n      wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = -newTranslate;\n    } else {\n      if (!swiper.support.smoothScroll) {\n        animateCSSModeScroll({\n          swiper,\n          targetPosition: -newTranslate,\n          side: isH ? 'left' : 'top'\n        });\n        return true;\n      }\n      wrapperEl.scrollTo({\n        [isH ? 'left' : 'top']: -newTranslate,\n        behavior: 'smooth'\n      });\n    }\n    return true;\n  }\n  if (speed === 0) {\n    swiper.setTransition(0);\n    swiper.setTranslate(newTranslate);\n    if (runCallbacks) {\n      swiper.emit('beforeTransitionStart', speed, internal);\n      swiper.emit('transitionEnd');\n    }\n  } else {\n    swiper.setTransition(speed);\n    swiper.setTranslate(newTranslate);\n    if (runCallbacks) {\n      swiper.emit('beforeTransitionStart', speed, internal);\n      swiper.emit('transitionStart');\n    }\n    if (!swiper.animating) {\n      swiper.animating = true;\n      if (!swiper.onTranslateToWrapperTransitionEnd) {\n        swiper.onTranslateToWrapperTransitionEnd = function transitionEnd(e) {\n          if (!swiper || swiper.destroyed) return;\n          if (e.target !== this) return;\n          swiper.wrapperEl.removeEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd);\n          swiper.onTranslateToWrapperTransitionEnd = null;\n          delete swiper.onTranslateToWrapperTransitionEnd;\n          swiper.animating = false;\n          if (runCallbacks) {\n            swiper.emit('transitionEnd');\n          }\n        };\n      }\n      swiper.wrapperEl.addEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd);\n    }\n  }\n  return true;\n}\n\nvar translate = {\n  getTranslate: getSwiperTranslate,\n  setTranslate,\n  minTranslate,\n  maxTranslate,\n  translateTo\n};\n\nfunction setTransition(duration, byController) {\n  const swiper = this;\n  if (!swiper.params.cssMode) {\n    swiper.wrapperEl.style.transitionDuration = `${duration}ms`;\n    swiper.wrapperEl.style.transitionDelay = duration === 0 ? `0ms` : '';\n  }\n  swiper.emit('setTransition', duration, byController);\n}\n\nfunction transitionEmit({\n  swiper,\n  runCallbacks,\n  direction,\n  step\n}) {\n  const {\n    activeIndex,\n    previousIndex\n  } = swiper;\n  let dir = direction;\n  if (!dir) {\n    if (activeIndex > previousIndex) dir = 'next';else if (activeIndex < previousIndex) dir = 'prev';else dir = 'reset';\n  }\n  swiper.emit(`transition${step}`);\n  if (runCallbacks && dir === 'reset') {\n    swiper.emit(`slideResetTransition${step}`);\n  } else if (runCallbacks && activeIndex !== previousIndex) {\n    swiper.emit(`slideChangeTransition${step}`);\n    if (dir === 'next') {\n      swiper.emit(`slideNextTransition${step}`);\n    } else {\n      swiper.emit(`slidePrevTransition${step}`);\n    }\n  }\n}\n\nfunction transitionStart(runCallbacks = true, direction) {\n  const swiper = this;\n  const {\n    params\n  } = swiper;\n  if (params.cssMode) return;\n  if (params.autoHeight) {\n    swiper.updateAutoHeight();\n  }\n  transitionEmit({\n    swiper,\n    runCallbacks,\n    direction,\n    step: 'Start'\n  });\n}\n\nfunction transitionEnd(runCallbacks = true, direction) {\n  const swiper = this;\n  const {\n    params\n  } = swiper;\n  swiper.animating = false;\n  if (params.cssMode) return;\n  swiper.setTransition(0);\n  transitionEmit({\n    swiper,\n    runCallbacks,\n    direction,\n    step: 'End'\n  });\n}\n\nvar transition = {\n  setTransition,\n  transitionStart,\n  transitionEnd\n};\n\nfunction slideTo(index = 0, speed, runCallbacks = true, internal, initial) {\n  if (typeof index === 'string') {\n    index = parseInt(index, 10);\n  }\n  const swiper = this;\n  let slideIndex = index;\n  if (slideIndex < 0) slideIndex = 0;\n  const {\n    params,\n    snapGrid,\n    slidesGrid,\n    previousIndex,\n    activeIndex,\n    rtlTranslate: rtl,\n    wrapperEl,\n    enabled\n  } = swiper;\n  if (!enabled && !internal && !initial || swiper.destroyed || swiper.animating && params.preventInteractionOnTransition) {\n    return false;\n  }\n  if (typeof speed === 'undefined') {\n    speed = swiper.params.speed;\n  }\n  const skip = Math.min(swiper.params.slidesPerGroupSkip, slideIndex);\n  let snapIndex = skip + Math.floor((slideIndex - skip) / swiper.params.slidesPerGroup);\n  if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1;\n  const translate = -snapGrid[snapIndex];\n  // Normalize slideIndex\n  if (params.normalizeSlideIndex) {\n    for (let i = 0; i < slidesGrid.length; i += 1) {\n      const normalizedTranslate = -Math.floor(translate * 100);\n      const normalizedGrid = Math.floor(slidesGrid[i] * 100);\n      const normalizedGridNext = Math.floor(slidesGrid[i + 1] * 100);\n      if (typeof slidesGrid[i + 1] !== 'undefined') {\n        if (normalizedTranslate >= normalizedGrid && normalizedTranslate < normalizedGridNext - (normalizedGridNext - normalizedGrid) / 2) {\n          slideIndex = i;\n        } else if (normalizedTranslate >= normalizedGrid && normalizedTranslate < normalizedGridNext) {\n          slideIndex = i + 1;\n        }\n      } else if (normalizedTranslate >= normalizedGrid) {\n        slideIndex = i;\n      }\n    }\n  }\n  // Directions locks\n  if (swiper.initialized && slideIndex !== activeIndex) {\n    if (!swiper.allowSlideNext && (rtl ? translate > swiper.translate && translate > swiper.minTranslate() : translate < swiper.translate && translate < swiper.minTranslate())) {\n      return false;\n    }\n    if (!swiper.allowSlidePrev && translate > swiper.translate && translate > swiper.maxTranslate()) {\n      if ((activeIndex || 0) !== slideIndex) {\n        return false;\n      }\n    }\n  }\n  if (slideIndex !== (previousIndex || 0) && runCallbacks) {\n    swiper.emit('beforeSlideChangeStart');\n  }\n\n  // Update progress\n  swiper.updateProgress(translate);\n  let direction;\n  if (slideIndex > activeIndex) direction = 'next';else if (slideIndex < activeIndex) direction = 'prev';else direction = 'reset';\n\n  // initial virtual\n  const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n  const isInitialVirtual = isVirtual && initial;\n  // Update Index\n  if (!isInitialVirtual && (rtl && -translate === swiper.translate || !rtl && translate === swiper.translate)) {\n    swiper.updateActiveIndex(slideIndex);\n    // Update Height\n    if (params.autoHeight) {\n      swiper.updateAutoHeight();\n    }\n    swiper.updateSlidesClasses();\n    if (params.effect !== 'slide') {\n      swiper.setTranslate(translate);\n    }\n    if (direction !== 'reset') {\n      swiper.transitionStart(runCallbacks, direction);\n      swiper.transitionEnd(runCallbacks, direction);\n    }\n    return false;\n  }\n  if (params.cssMode) {\n    const isH = swiper.isHorizontal();\n    const t = rtl ? translate : -translate;\n    if (speed === 0) {\n      if (isVirtual) {\n        swiper.wrapperEl.style.scrollSnapType = 'none';\n        swiper._immediateVirtual = true;\n      }\n      if (isVirtual && !swiper._cssModeVirtualInitialSet && swiper.params.initialSlide > 0) {\n        swiper._cssModeVirtualInitialSet = true;\n        requestAnimationFrame(() => {\n          wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t;\n        });\n      } else {\n        wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t;\n      }\n      if (isVirtual) {\n        requestAnimationFrame(() => {\n          swiper.wrapperEl.style.scrollSnapType = '';\n          swiper._immediateVirtual = false;\n        });\n      }\n    } else {\n      if (!swiper.support.smoothScroll) {\n        animateCSSModeScroll({\n          swiper,\n          targetPosition: t,\n          side: isH ? 'left' : 'top'\n        });\n        return true;\n      }\n      wrapperEl.scrollTo({\n        [isH ? 'left' : 'top']: t,\n        behavior: 'smooth'\n      });\n    }\n    return true;\n  }\n  const browser = getBrowser();\n  const isSafari = browser.isSafari;\n  if (isVirtual && !initial && isSafari && swiper.isElement) {\n    swiper.virtual.update(false, false, slideIndex);\n  }\n  swiper.setTransition(speed);\n  swiper.setTranslate(translate);\n  swiper.updateActiveIndex(slideIndex);\n  swiper.updateSlidesClasses();\n  swiper.emit('beforeTransitionStart', speed, internal);\n  swiper.transitionStart(runCallbacks, direction);\n  if (speed === 0) {\n    swiper.transitionEnd(runCallbacks, direction);\n  } else if (!swiper.animating) {\n    swiper.animating = true;\n    if (!swiper.onSlideToWrapperTransitionEnd) {\n      swiper.onSlideToWrapperTransitionEnd = function transitionEnd(e) {\n        if (!swiper || swiper.destroyed) return;\n        if (e.target !== this) return;\n        swiper.wrapperEl.removeEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd);\n        swiper.onSlideToWrapperTransitionEnd = null;\n        delete swiper.onSlideToWrapperTransitionEnd;\n        swiper.transitionEnd(runCallbacks, direction);\n      };\n    }\n    swiper.wrapperEl.addEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd);\n  }\n  return true;\n}\n\nfunction slideToLoop(index = 0, speed, runCallbacks = true, internal) {\n  if (typeof index === 'string') {\n    const indexAsNumber = parseInt(index, 10);\n    index = indexAsNumber;\n  }\n  const swiper = this;\n  if (swiper.destroyed) return;\n  if (typeof speed === 'undefined') {\n    speed = swiper.params.speed;\n  }\n  const gridEnabled = swiper.grid && swiper.params.grid && swiper.params.grid.rows > 1;\n  let newIndex = index;\n  if (swiper.params.loop) {\n    if (swiper.virtual && swiper.params.virtual.enabled) {\n      // eslint-disable-next-line\n      newIndex = newIndex + swiper.virtual.slidesBefore;\n    } else {\n      let targetSlideIndex;\n      if (gridEnabled) {\n        const slideIndex = newIndex * swiper.params.grid.rows;\n        targetSlideIndex = swiper.slides.find(slideEl => slideEl.getAttribute('data-swiper-slide-index') * 1 === slideIndex).column;\n      } else {\n        targetSlideIndex = swiper.getSlideIndexByData(newIndex);\n      }\n      const cols = gridEnabled ? Math.ceil(swiper.slides.length / swiper.params.grid.rows) : swiper.slides.length;\n      const {\n        centeredSlides,\n        slidesOffsetBefore,\n        slidesOffsetAfter\n      } = swiper.params;\n      const bothDirections = centeredSlides || !!slidesOffsetBefore || !!slidesOffsetAfter;\n      let slidesPerView = swiper.params.slidesPerView;\n      if (slidesPerView === 'auto') {\n        slidesPerView = swiper.slidesPerViewDynamic();\n      } else {\n        slidesPerView = Math.ceil(parseFloat(swiper.params.slidesPerView, 10));\n        if (bothDirections && slidesPerView % 2 === 0) {\n          slidesPerView = slidesPerView + 1;\n        }\n      }\n      let needLoopFix = cols - targetSlideIndex < slidesPerView;\n      if (bothDirections) {\n        needLoopFix = needLoopFix || targetSlideIndex < Math.ceil(slidesPerView / 2);\n      }\n      if (internal && bothDirections && swiper.params.slidesPerView !== 'auto' && !gridEnabled) {\n        needLoopFix = false;\n      }\n      if (needLoopFix) {\n        const direction = bothDirections ? targetSlideIndex < swiper.activeIndex ? 'prev' : 'next' : targetSlideIndex - swiper.activeIndex - 1 < swiper.params.slidesPerView ? 'next' : 'prev';\n        swiper.loopFix({\n          direction,\n          slideTo: true,\n          activeSlideIndex: direction === 'next' ? targetSlideIndex + 1 : targetSlideIndex - cols + 1,\n          slideRealIndex: direction === 'next' ? swiper.realIndex : undefined\n        });\n      }\n      if (gridEnabled) {\n        const slideIndex = newIndex * swiper.params.grid.rows;\n        newIndex = swiper.slides.find(slideEl => slideEl.getAttribute('data-swiper-slide-index') * 1 === slideIndex).column;\n      } else {\n        newIndex = swiper.getSlideIndexByData(newIndex);\n      }\n    }\n  }\n  requestAnimationFrame(() => {\n    swiper.slideTo(newIndex, speed, runCallbacks, internal);\n  });\n  return swiper;\n}\n\n/* eslint no-unused-vars: \"off\" */\nfunction slideNext(speed, runCallbacks = true, internal) {\n  const swiper = this;\n  const {\n    enabled,\n    params,\n    animating\n  } = swiper;\n  if (!enabled || swiper.destroyed) return swiper;\n  if (typeof speed === 'undefined') {\n    speed = swiper.params.speed;\n  }\n  let perGroup = params.slidesPerGroup;\n  if (params.slidesPerView === 'auto' && params.slidesPerGroup === 1 && params.slidesPerGroupAuto) {\n    perGroup = Math.max(swiper.slidesPerViewDynamic('current', true), 1);\n  }\n  const increment = swiper.activeIndex < params.slidesPerGroupSkip ? 1 : perGroup;\n  const isVirtual = swiper.virtual && params.virtual.enabled;\n  if (params.loop) {\n    if (animating && !isVirtual && params.loopPreventsSliding) return false;\n    swiper.loopFix({\n      direction: 'next'\n    });\n    // eslint-disable-next-line\n    swiper._clientLeft = swiper.wrapperEl.clientLeft;\n    if (swiper.activeIndex === swiper.slides.length - 1 && params.cssMode) {\n      requestAnimationFrame(() => {\n        swiper.slideTo(swiper.activeIndex + increment, speed, runCallbacks, internal);\n      });\n      return true;\n    }\n  }\n  if (params.rewind && swiper.isEnd) {\n    return swiper.slideTo(0, speed, runCallbacks, internal);\n  }\n  return swiper.slideTo(swiper.activeIndex + increment, speed, runCallbacks, internal);\n}\n\n/* eslint no-unused-vars: \"off\" */\nfunction slidePrev(speed, runCallbacks = true, internal) {\n  const swiper = this;\n  const {\n    params,\n    snapGrid,\n    slidesGrid,\n    rtlTranslate,\n    enabled,\n    animating\n  } = swiper;\n  if (!enabled || swiper.destroyed) return swiper;\n  if (typeof speed === 'undefined') {\n    speed = swiper.params.speed;\n  }\n  const isVirtual = swiper.virtual && params.virtual.enabled;\n  if (params.loop) {\n    if (animating && !isVirtual && params.loopPreventsSliding) return false;\n    swiper.loopFix({\n      direction: 'prev'\n    });\n    // eslint-disable-next-line\n    swiper._clientLeft = swiper.wrapperEl.clientLeft;\n  }\n  const translate = rtlTranslate ? swiper.translate : -swiper.translate;\n  function normalize(val) {\n    if (val < 0) return -Math.floor(Math.abs(val));\n    return Math.floor(val);\n  }\n  const normalizedTranslate = normalize(translate);\n  const normalizedSnapGrid = snapGrid.map(val => normalize(val));\n  const isFreeMode = params.freeMode && params.freeMode.enabled;\n  let prevSnap = snapGrid[normalizedSnapGrid.indexOf(normalizedTranslate) - 1];\n  if (typeof prevSnap === 'undefined' && (params.cssMode || isFreeMode)) {\n    let prevSnapIndex;\n    snapGrid.forEach((snap, snapIndex) => {\n      if (normalizedTranslate >= snap) {\n        // prevSnap = snap;\n        prevSnapIndex = snapIndex;\n      }\n    });\n    if (typeof prevSnapIndex !== 'undefined') {\n      prevSnap = isFreeMode ? snapGrid[prevSnapIndex] : snapGrid[prevSnapIndex > 0 ? prevSnapIndex - 1 : prevSnapIndex];\n    }\n  }\n  let prevIndex = 0;\n  if (typeof prevSnap !== 'undefined') {\n    prevIndex = slidesGrid.indexOf(prevSnap);\n    if (prevIndex < 0) prevIndex = swiper.activeIndex - 1;\n    if (params.slidesPerView === 'auto' && params.slidesPerGroup === 1 && params.slidesPerGroupAuto) {\n      prevIndex = prevIndex - swiper.slidesPerViewDynamic('previous', true) + 1;\n      prevIndex = Math.max(prevIndex, 0);\n    }\n  }\n  if (params.rewind && swiper.isBeginning) {\n    const lastIndex = swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual ? swiper.virtual.slides.length - 1 : swiper.slides.length - 1;\n    return swiper.slideTo(lastIndex, speed, runCallbacks, internal);\n  } else if (params.loop && swiper.activeIndex === 0 && params.cssMode) {\n    requestAnimationFrame(() => {\n      swiper.slideTo(prevIndex, speed, runCallbacks, internal);\n    });\n    return true;\n  }\n  return swiper.slideTo(prevIndex, speed, runCallbacks, internal);\n}\n\n/* eslint no-unused-vars: \"off\" */\nfunction slideReset(speed, runCallbacks = true, internal) {\n  const swiper = this;\n  if (swiper.destroyed) return;\n  if (typeof speed === 'undefined') {\n    speed = swiper.params.speed;\n  }\n  return swiper.slideTo(swiper.activeIndex, speed, runCallbacks, internal);\n}\n\n/* eslint no-unused-vars: \"off\" */\nfunction slideToClosest(speed, runCallbacks = true, internal, threshold = 0.5) {\n  const swiper = this;\n  if (swiper.destroyed) return;\n  if (typeof speed === 'undefined') {\n    speed = swiper.params.speed;\n  }\n  let index = swiper.activeIndex;\n  const skip = Math.min(swiper.params.slidesPerGroupSkip, index);\n  const snapIndex = skip + Math.floor((index - skip) / swiper.params.slidesPerGroup);\n  const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;\n  if (translate >= swiper.snapGrid[snapIndex]) {\n    // The current translate is on or after the current snap index, so the choice\n    // is between the current index and the one after it.\n    const currentSnap = swiper.snapGrid[snapIndex];\n    const nextSnap = swiper.snapGrid[snapIndex + 1];\n    if (translate - currentSnap > (nextSnap - currentSnap) * threshold) {\n      index += swiper.params.slidesPerGroup;\n    }\n  } else {\n    // The current translate is before the current snap index, so the choice\n    // is between the current index and the one before it.\n    const prevSnap = swiper.snapGrid[snapIndex - 1];\n    const currentSnap = swiper.snapGrid[snapIndex];\n    if (translate - prevSnap <= (currentSnap - prevSnap) * threshold) {\n      index -= swiper.params.slidesPerGroup;\n    }\n  }\n  index = Math.max(index, 0);\n  index = Math.min(index, swiper.slidesGrid.length - 1);\n  return swiper.slideTo(index, speed, runCallbacks, internal);\n}\n\nfunction slideToClickedSlide() {\n  const swiper = this;\n  if (swiper.destroyed) return;\n  const {\n    params,\n    slidesEl\n  } = swiper;\n  const slidesPerView = params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : params.slidesPerView;\n  let slideToIndex = swiper.getSlideIndexWhenGrid(swiper.clickedIndex);\n  let realIndex;\n  const slideSelector = swiper.isElement ? `swiper-slide` : `.${params.slideClass}`;\n  const isGrid = swiper.grid && swiper.params.grid && swiper.params.grid.rows > 1;\n  if (params.loop) {\n    if (swiper.animating) return;\n    realIndex = parseInt(swiper.clickedSlide.getAttribute('data-swiper-slide-index'), 10);\n    if (params.centeredSlides) {\n      swiper.slideToLoop(realIndex);\n    } else if (slideToIndex > (isGrid ? (swiper.slides.length - slidesPerView) / 2 - (swiper.params.grid.rows - 1) : swiper.slides.length - slidesPerView)) {\n      swiper.loopFix();\n      slideToIndex = swiper.getSlideIndex(elementChildren(slidesEl, `${slideSelector}[data-swiper-slide-index=\"${realIndex}\"]`)[0]);\n      nextTick(() => {\n        swiper.slideTo(slideToIndex);\n      });\n    } else {\n      swiper.slideTo(slideToIndex);\n    }\n  } else {\n    swiper.slideTo(slideToIndex);\n  }\n}\n\nvar slide = {\n  slideTo,\n  slideToLoop,\n  slideNext,\n  slidePrev,\n  slideReset,\n  slideToClosest,\n  slideToClickedSlide\n};\n\nfunction loopCreate(slideRealIndex, initial) {\n  const swiper = this;\n  const {\n    params,\n    slidesEl\n  } = swiper;\n  if (!params.loop || swiper.virtual && swiper.params.virtual.enabled) return;\n  const initSlides = () => {\n    const slides = elementChildren(slidesEl, `.${params.slideClass}, swiper-slide`);\n    slides.forEach((el, index) => {\n      el.setAttribute('data-swiper-slide-index', index);\n    });\n  };\n  const clearBlankSlides = () => {\n    const slides = elementChildren(slidesEl, `.${params.slideBlankClass}`);\n    slides.forEach(el => {\n      el.remove();\n    });\n    if (slides.length > 0) {\n      swiper.recalcSlides();\n      swiper.updateSlides();\n    }\n  };\n  const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1;\n  if (params.loopAddBlankSlides && (params.slidesPerGroup > 1 || gridEnabled)) {\n    clearBlankSlides();\n  }\n  const slidesPerGroup = params.slidesPerGroup * (gridEnabled ? params.grid.rows : 1);\n  const shouldFillGroup = swiper.slides.length % slidesPerGroup !== 0;\n  const shouldFillGrid = gridEnabled && swiper.slides.length % params.grid.rows !== 0;\n  const addBlankSlides = amountOfSlides => {\n    for (let i = 0; i < amountOfSlides; i += 1) {\n      const slideEl = swiper.isElement ? createElement('swiper-slide', [params.slideBlankClass]) : createElement('div', [params.slideClass, params.slideBlankClass]);\n      swiper.slidesEl.append(slideEl);\n    }\n  };\n  if (shouldFillGroup) {\n    if (params.loopAddBlankSlides) {\n      const slidesToAdd = slidesPerGroup - swiper.slides.length % slidesPerGroup;\n      addBlankSlides(slidesToAdd);\n      swiper.recalcSlides();\n      swiper.updateSlides();\n    } else {\n      showWarning('Swiper Loop Warning: The number of slides is not even to slidesPerGroup, loop mode may not function properly. You need to add more slides (or make duplicates, or empty slides)');\n    }\n    initSlides();\n  } else if (shouldFillGrid) {\n    if (params.loopAddBlankSlides) {\n      const slidesToAdd = params.grid.rows - swiper.slides.length % params.grid.rows;\n      addBlankSlides(slidesToAdd);\n      swiper.recalcSlides();\n      swiper.updateSlides();\n    } else {\n      showWarning('Swiper Loop Warning: The number of slides is not even to grid.rows, loop mode may not function properly. You need to add more slides (or make duplicates, or empty slides)');\n    }\n    initSlides();\n  } else {\n    initSlides();\n  }\n  const bothDirections = params.centeredSlides || !!params.slidesOffsetBefore || !!params.slidesOffsetAfter;\n  swiper.loopFix({\n    slideRealIndex,\n    direction: bothDirections ? undefined : 'next',\n    initial\n  });\n}\n\nfunction loopFix({\n  slideRealIndex,\n  slideTo = true,\n  direction,\n  setTranslate,\n  activeSlideIndex,\n  initial,\n  byController,\n  byMousewheel\n} = {}) {\n  const swiper = this;\n  if (!swiper.params.loop) return;\n  swiper.emit('beforeLoopFix');\n  const {\n    slides,\n    allowSlidePrev,\n    allowSlideNext,\n    slidesEl,\n    params\n  } = swiper;\n  const {\n    centeredSlides,\n    slidesOffsetBefore,\n    slidesOffsetAfter,\n    initialSlide\n  } = params;\n  const bothDirections = centeredSlides || !!slidesOffsetBefore || !!slidesOffsetAfter;\n  swiper.allowSlidePrev = true;\n  swiper.allowSlideNext = true;\n  if (swiper.virtual && params.virtual.enabled) {\n    if (slideTo) {\n      if (!bothDirections && swiper.snapIndex === 0) {\n        swiper.slideTo(swiper.virtual.slides.length, 0, false, true);\n      } else if (bothDirections && swiper.snapIndex < params.slidesPerView) {\n        swiper.slideTo(swiper.virtual.slides.length + swiper.snapIndex, 0, false, true);\n      } else if (swiper.snapIndex === swiper.snapGrid.length - 1) {\n        swiper.slideTo(swiper.virtual.slidesBefore, 0, false, true);\n      }\n    }\n    swiper.allowSlidePrev = allowSlidePrev;\n    swiper.allowSlideNext = allowSlideNext;\n    swiper.emit('loopFix');\n    return;\n  }\n  let slidesPerView = params.slidesPerView;\n  if (slidesPerView === 'auto') {\n    slidesPerView = swiper.slidesPerViewDynamic();\n  } else {\n    slidesPerView = Math.ceil(parseFloat(params.slidesPerView, 10));\n    if (bothDirections && slidesPerView % 2 === 0) {\n      slidesPerView = slidesPerView + 1;\n    }\n  }\n  const slidesPerGroup = params.slidesPerGroupAuto ? slidesPerView : params.slidesPerGroup;\n  let loopedSlides = bothDirections ? Math.max(slidesPerGroup, Math.ceil(slidesPerView / 2)) : slidesPerGroup;\n  if (loopedSlides % slidesPerGroup !== 0) {\n    loopedSlides += slidesPerGroup - loopedSlides % slidesPerGroup;\n  }\n  loopedSlides += params.loopAdditionalSlides;\n  swiper.loopedSlides = loopedSlides;\n  const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1;\n  if (slides.length < slidesPerView + loopedSlides || swiper.params.effect === 'cards' && slides.length < slidesPerView + loopedSlides * 2) {\n    showWarning('Swiper Loop Warning: The number of slides is not enough for loop mode, it will be disabled or not function properly. You need to add more slides (or make duplicates) or lower the values of slidesPerView and slidesPerGroup parameters');\n  } else if (gridEnabled && params.grid.fill === 'row') {\n    showWarning('Swiper Loop Warning: Loop mode is not compatible with grid.fill = `row`');\n  }\n  const prependSlidesIndexes = [];\n  const appendSlidesIndexes = [];\n  const cols = gridEnabled ? Math.ceil(slides.length / params.grid.rows) : slides.length;\n  const isInitialOverflow = initial && cols - initialSlide < slidesPerView && !bothDirections;\n  let activeIndex = isInitialOverflow ? initialSlide : swiper.activeIndex;\n  if (typeof activeSlideIndex === 'undefined') {\n    activeSlideIndex = swiper.getSlideIndex(slides.find(el => el.classList.contains(params.slideActiveClass)));\n  } else {\n    activeIndex = activeSlideIndex;\n  }\n  const isNext = direction === 'next' || !direction;\n  const isPrev = direction === 'prev' || !direction;\n  let slidesPrepended = 0;\n  let slidesAppended = 0;\n  const activeColIndex = gridEnabled ? slides[activeSlideIndex].column : activeSlideIndex;\n  const activeColIndexWithShift = activeColIndex + (bothDirections && typeof setTranslate === 'undefined' ? -slidesPerView / 2 + 0.5 : 0);\n  // prepend last slides before start\n  if (activeColIndexWithShift < loopedSlides) {\n    slidesPrepended = Math.max(loopedSlides - activeColIndexWithShift, slidesPerGroup);\n    for (let i = 0; i < loopedSlides - activeColIndexWithShift; i += 1) {\n      const index = i - Math.floor(i / cols) * cols;\n      if (gridEnabled) {\n        const colIndexToPrepend = cols - index - 1;\n        for (let i = slides.length - 1; i >= 0; i -= 1) {\n          if (slides[i].column === colIndexToPrepend) prependSlidesIndexes.push(i);\n        }\n        // slides.forEach((slide, slideIndex) => {\n        //   if (slide.column === colIndexToPrepend) prependSlidesIndexes.push(slideIndex);\n        // });\n      } else {\n        prependSlidesIndexes.push(cols - index - 1);\n      }\n    }\n  } else if (activeColIndexWithShift + slidesPerView > cols - loopedSlides) {\n    slidesAppended = Math.max(activeColIndexWithShift - (cols - loopedSlides * 2), slidesPerGroup);\n    if (isInitialOverflow) {\n      slidesAppended = Math.max(slidesAppended, slidesPerView - cols + initialSlide + 1);\n    }\n    for (let i = 0; i < slidesAppended; i += 1) {\n      const index = i - Math.floor(i / cols) * cols;\n      if (gridEnabled) {\n        slides.forEach((slide, slideIndex) => {\n          if (slide.column === index) appendSlidesIndexes.push(slideIndex);\n        });\n      } else {\n        appendSlidesIndexes.push(index);\n      }\n    }\n  }\n  swiper.__preventObserver__ = true;\n  requestAnimationFrame(() => {\n    swiper.__preventObserver__ = false;\n  });\n  if (swiper.params.effect === 'cards' && slides.length < slidesPerView + loopedSlides * 2) {\n    if (appendSlidesIndexes.includes(activeSlideIndex)) {\n      appendSlidesIndexes.splice(appendSlidesIndexes.indexOf(activeSlideIndex), 1);\n    }\n    if (prependSlidesIndexes.includes(activeSlideIndex)) {\n      prependSlidesIndexes.splice(prependSlidesIndexes.indexOf(activeSlideIndex), 1);\n    }\n  }\n  if (isPrev) {\n    prependSlidesIndexes.forEach(index => {\n      slides[index].swiperLoopMoveDOM = true;\n      slidesEl.prepend(slides[index]);\n      slides[index].swiperLoopMoveDOM = false;\n    });\n  }\n  if (isNext) {\n    appendSlidesIndexes.forEach(index => {\n      slides[index].swiperLoopMoveDOM = true;\n      slidesEl.append(slides[index]);\n      slides[index].swiperLoopMoveDOM = false;\n    });\n  }\n  swiper.recalcSlides();\n  if (params.slidesPerView === 'auto') {\n    swiper.updateSlides();\n  } else if (gridEnabled && (prependSlidesIndexes.length > 0 && isPrev || appendSlidesIndexes.length > 0 && isNext)) {\n    swiper.slides.forEach((slide, slideIndex) => {\n      swiper.grid.updateSlide(slideIndex, slide, swiper.slides);\n    });\n  }\n  if (params.watchSlidesProgress) {\n    swiper.updateSlidesOffset();\n  }\n  if (slideTo) {\n    if (prependSlidesIndexes.length > 0 && isPrev) {\n      if (typeof slideRealIndex === 'undefined') {\n        const currentSlideTranslate = swiper.slidesGrid[activeIndex];\n        const newSlideTranslate = swiper.slidesGrid[activeIndex + slidesPrepended];\n        const diff = newSlideTranslate - currentSlideTranslate;\n        if (byMousewheel) {\n          swiper.setTranslate(swiper.translate - diff);\n        } else {\n          swiper.slideTo(activeIndex + Math.ceil(slidesPrepended), 0, false, true);\n          if (setTranslate) {\n            swiper.touchEventsData.startTranslate = swiper.touchEventsData.startTranslate - diff;\n            swiper.touchEventsData.currentTranslate = swiper.touchEventsData.currentTranslate - diff;\n          }\n        }\n      } else {\n        if (setTranslate) {\n          const shift = gridEnabled ? prependSlidesIndexes.length / params.grid.rows : prependSlidesIndexes.length;\n          swiper.slideTo(swiper.activeIndex + shift, 0, false, true);\n          swiper.touchEventsData.currentTranslate = swiper.translate;\n        }\n      }\n    } else if (appendSlidesIndexes.length > 0 && isNext) {\n      if (typeof slideRealIndex === 'undefined') {\n        const currentSlideTranslate = swiper.slidesGrid[activeIndex];\n        const newSlideTranslate = swiper.slidesGrid[activeIndex - slidesAppended];\n        const diff = newSlideTranslate - currentSlideTranslate;\n        if (byMousewheel) {\n          swiper.setTranslate(swiper.translate - diff);\n        } else {\n          swiper.slideTo(activeIndex - slidesAppended, 0, false, true);\n          if (setTranslate) {\n            swiper.touchEventsData.startTranslate = swiper.touchEventsData.startTranslate - diff;\n            swiper.touchEventsData.currentTranslate = swiper.touchEventsData.currentTranslate - diff;\n          }\n        }\n      } else {\n        const shift = gridEnabled ? appendSlidesIndexes.length / params.grid.rows : appendSlidesIndexes.length;\n        swiper.slideTo(swiper.activeIndex - shift, 0, false, true);\n      }\n    }\n  }\n  swiper.allowSlidePrev = allowSlidePrev;\n  swiper.allowSlideNext = allowSlideNext;\n  if (swiper.controller && swiper.controller.control && !byController) {\n    const loopParams = {\n      slideRealIndex,\n      direction,\n      setTranslate,\n      activeSlideIndex,\n      byController: true\n    };\n    if (Array.isArray(swiper.controller.control)) {\n      swiper.controller.control.forEach(c => {\n        if (!c.destroyed && c.params.loop) c.loopFix({\n          ...loopParams,\n          slideTo: c.params.slidesPerView === params.slidesPerView ? slideTo : false\n        });\n      });\n    } else if (swiper.controller.control instanceof swiper.constructor && swiper.controller.control.params.loop) {\n      swiper.controller.control.loopFix({\n        ...loopParams,\n        slideTo: swiper.controller.control.params.slidesPerView === params.slidesPerView ? slideTo : false\n      });\n    }\n  }\n  swiper.emit('loopFix');\n}\n\nfunction loopDestroy() {\n  const swiper = this;\n  const {\n    params,\n    slidesEl\n  } = swiper;\n  if (!params.loop || !slidesEl || swiper.virtual && swiper.params.virtual.enabled) return;\n  swiper.recalcSlides();\n  const newSlidesOrder = [];\n  swiper.slides.forEach(slideEl => {\n    const index = typeof slideEl.swiperSlideIndex === 'undefined' ? slideEl.getAttribute('data-swiper-slide-index') * 1 : slideEl.swiperSlideIndex;\n    newSlidesOrder[index] = slideEl;\n  });\n  swiper.slides.forEach(slideEl => {\n    slideEl.removeAttribute('data-swiper-slide-index');\n  });\n  newSlidesOrder.forEach(slideEl => {\n    slidesEl.append(slideEl);\n  });\n  swiper.recalcSlides();\n  swiper.slideTo(swiper.realIndex, 0);\n}\n\nvar loop = {\n  loopCreate,\n  loopFix,\n  loopDestroy\n};\n\nfunction setGrabCursor(moving) {\n  const swiper = this;\n  if (!swiper.params.simulateTouch || swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) return;\n  const el = swiper.params.touchEventsTarget === 'container' ? swiper.el : swiper.wrapperEl;\n  if (swiper.isElement) {\n    swiper.__preventObserver__ = true;\n  }\n  el.style.cursor = 'move';\n  el.style.cursor = moving ? 'grabbing' : 'grab';\n  if (swiper.isElement) {\n    requestAnimationFrame(() => {\n      swiper.__preventObserver__ = false;\n    });\n  }\n}\n\nfunction unsetGrabCursor() {\n  const swiper = this;\n  if (swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) {\n    return;\n  }\n  if (swiper.isElement) {\n    swiper.__preventObserver__ = true;\n  }\n  swiper[swiper.params.touchEventsTarget === 'container' ? 'el' : 'wrapperEl'].style.cursor = '';\n  if (swiper.isElement) {\n    requestAnimationFrame(() => {\n      swiper.__preventObserver__ = false;\n    });\n  }\n}\n\nvar grabCursor = {\n  setGrabCursor,\n  unsetGrabCursor\n};\n\n// Modified from https://stackoverflow.com/questions/54520554/custom-element-getrootnode-closest-function-crossing-multiple-parent-shadowd\nfunction closestElement(selector, base = this) {\n  function __closestFrom(el) {\n    if (!el || el === getDocument() || el === getWindow()) return null;\n    if (el.assignedSlot) el = el.assignedSlot;\n    const found = el.closest(selector);\n    if (!found && !el.getRootNode) {\n      return null;\n    }\n    return found || __closestFrom(el.getRootNode().host);\n  }\n  return __closestFrom(base);\n}\nfunction preventEdgeSwipe(swiper, event, startX) {\n  const window = getWindow();\n  const {\n    params\n  } = swiper;\n  const edgeSwipeDetection = params.edgeSwipeDetection;\n  const edgeSwipeThreshold = params.edgeSwipeThreshold;\n  if (edgeSwipeDetection && (startX <= edgeSwipeThreshold || startX >= window.innerWidth - edgeSwipeThreshold)) {\n    if (edgeSwipeDetection === 'prevent') {\n      event.preventDefault();\n      return true;\n    }\n    return false;\n  }\n  return true;\n}\nfunction onTouchStart(event) {\n  const swiper = this;\n  const document = getDocument();\n  let e = event;\n  if (e.originalEvent) e = e.originalEvent;\n  const data = swiper.touchEventsData;\n  if (e.type === 'pointerdown') {\n    if (data.pointerId !== null && data.pointerId !== e.pointerId) {\n      return;\n    }\n    data.pointerId = e.pointerId;\n  } else if (e.type === 'touchstart' && e.targetTouches.length === 1) {\n    data.touchId = e.targetTouches[0].identifier;\n  }\n  if (e.type === 'touchstart') {\n    // don't proceed touch event\n    preventEdgeSwipe(swiper, e, e.targetTouches[0].pageX);\n    return;\n  }\n  const {\n    params,\n    touches,\n    enabled\n  } = swiper;\n  if (!enabled) return;\n  if (!params.simulateTouch && e.pointerType === 'mouse') return;\n  if (swiper.animating && params.preventInteractionOnTransition) {\n    return;\n  }\n  if (!swiper.animating && params.cssMode && params.loop) {\n    swiper.loopFix();\n  }\n  let targetEl = e.target;\n  if (params.touchEventsTarget === 'wrapper') {\n    if (!elementIsChildOf(targetEl, swiper.wrapperEl)) return;\n  }\n  if ('which' in e && e.which === 3) return;\n  if ('button' in e && e.button > 0) return;\n  if (data.isTouched && data.isMoved) return;\n\n  // change target el for shadow root component\n  const swipingClassHasValue = !!params.noSwipingClass && params.noSwipingClass !== '';\n  // eslint-disable-next-line\n  const eventPath = e.composedPath ? e.composedPath() : e.path;\n  if (swipingClassHasValue && e.target && e.target.shadowRoot && eventPath) {\n    targetEl = eventPath[0];\n  }\n  const noSwipingSelector = params.noSwipingSelector ? params.noSwipingSelector : `.${params.noSwipingClass}`;\n  const isTargetShadow = !!(e.target && e.target.shadowRoot);\n\n  // use closestElement for shadow root element to get the actual closest for nested shadow root element\n  if (params.noSwiping && (isTargetShadow ? closestElement(noSwipingSelector, targetEl) : targetEl.closest(noSwipingSelector))) {\n    swiper.allowClick = true;\n    return;\n  }\n  if (params.swipeHandler) {\n    if (!targetEl.closest(params.swipeHandler)) return;\n  }\n  touches.currentX = e.pageX;\n  touches.currentY = e.pageY;\n  const startX = touches.currentX;\n  const startY = touches.currentY;\n\n  // Do NOT start if iOS edge swipe is detected. Otherwise iOS app cannot swipe-to-go-back anymore\n\n  if (!preventEdgeSwipe(swiper, e, startX)) {\n    return;\n  }\n  Object.assign(data, {\n    isTouched: true,\n    isMoved: false,\n    allowTouchCallbacks: true,\n    isScrolling: undefined,\n    startMoving: undefined\n  });\n  touches.startX = startX;\n  touches.startY = startY;\n  data.touchStartTime = now();\n  swiper.allowClick = true;\n  swiper.updateSize();\n  swiper.swipeDirection = undefined;\n  if (params.threshold > 0) data.allowThresholdMove = false;\n  let preventDefault = true;\n  if (targetEl.matches(data.focusableElements)) {\n    preventDefault = false;\n    if (targetEl.nodeName === 'SELECT') {\n      data.isTouched = false;\n    }\n  }\n  if (document.activeElement && document.activeElement.matches(data.focusableElements) && document.activeElement !== targetEl && (e.pointerType === 'mouse' || e.pointerType !== 'mouse' && !targetEl.matches(data.focusableElements))) {\n    document.activeElement.blur();\n  }\n  const shouldPreventDefault = preventDefault && swiper.allowTouchMove && params.touchStartPreventDefault;\n  if ((params.touchStartForcePreventDefault || shouldPreventDefault) && !targetEl.isContentEditable) {\n    e.preventDefault();\n  }\n  if (params.freeMode && params.freeMode.enabled && swiper.freeMode && swiper.animating && !params.cssMode) {\n    swiper.freeMode.onTouchStart();\n  }\n  swiper.emit('touchStart', e);\n}\n\nfunction onTouchMove(event) {\n  const document = getDocument();\n  const swiper = this;\n  const data = swiper.touchEventsData;\n  const {\n    params,\n    touches,\n    rtlTranslate: rtl,\n    enabled\n  } = swiper;\n  if (!enabled) return;\n  if (!params.simulateTouch && event.pointerType === 'mouse') return;\n  let e = event;\n  if (e.originalEvent) e = e.originalEvent;\n  if (e.type === 'pointermove') {\n    if (data.touchId !== null) return; // return from pointer if we use touch\n    const id = e.pointerId;\n    if (id !== data.pointerId) return;\n  }\n  let targetTouch;\n  if (e.type === 'touchmove') {\n    targetTouch = [...e.changedTouches].find(t => t.identifier === data.touchId);\n    if (!targetTouch || targetTouch.identifier !== data.touchId) return;\n  } else {\n    targetTouch = e;\n  }\n  if (!data.isTouched) {\n    if (data.startMoving && data.isScrolling) {\n      swiper.emit('touchMoveOpposite', e);\n    }\n    return;\n  }\n  const pageX = targetTouch.pageX;\n  const pageY = targetTouch.pageY;\n  if (e.preventedByNestedSwiper) {\n    touches.startX = pageX;\n    touches.startY = pageY;\n    return;\n  }\n  if (!swiper.allowTouchMove) {\n    if (!e.target.matches(data.focusableElements)) {\n      swiper.allowClick = false;\n    }\n    if (data.isTouched) {\n      Object.assign(touches, {\n        startX: pageX,\n        startY: pageY,\n        currentX: pageX,\n        currentY: pageY\n      });\n      data.touchStartTime = now();\n    }\n    return;\n  }\n  if (params.touchReleaseOnEdges && !params.loop) {\n    if (swiper.isVertical()) {\n      // Vertical\n      if (pageY < touches.startY && swiper.translate <= swiper.maxTranslate() || pageY > touches.startY && swiper.translate >= swiper.minTranslate()) {\n        data.isTouched = false;\n        data.isMoved = false;\n        return;\n      }\n    } else if (rtl && (pageX > touches.startX && -swiper.translate <= swiper.maxTranslate() || pageX < touches.startX && -swiper.translate >= swiper.minTranslate())) {\n      return;\n    } else if (!rtl && (pageX < touches.startX && swiper.translate <= swiper.maxTranslate() || pageX > touches.startX && swiper.translate >= swiper.minTranslate())) {\n      return;\n    }\n  }\n  if (document.activeElement && document.activeElement.matches(data.focusableElements) && document.activeElement !== e.target && e.pointerType !== 'mouse') {\n    document.activeElement.blur();\n  }\n  if (document.activeElement) {\n    if (e.target === document.activeElement && e.target.matches(data.focusableElements)) {\n      data.isMoved = true;\n      swiper.allowClick = false;\n      return;\n    }\n  }\n  if (data.allowTouchCallbacks) {\n    swiper.emit('touchMove', e);\n  }\n  touches.previousX = touches.currentX;\n  touches.previousY = touches.currentY;\n  touches.currentX = pageX;\n  touches.currentY = pageY;\n  const diffX = touches.currentX - touches.startX;\n  const diffY = touches.currentY - touches.startY;\n  if (swiper.params.threshold && Math.sqrt(diffX ** 2 + diffY ** 2) < swiper.params.threshold) return;\n  if (typeof data.isScrolling === 'undefined') {\n    let touchAngle;\n    if (swiper.isHorizontal() && touches.currentY === touches.startY || swiper.isVertical() && touches.currentX === touches.startX) {\n      data.isScrolling = false;\n    } else {\n      // eslint-disable-next-line\n      if (diffX * diffX + diffY * diffY >= 25) {\n        touchAngle = Math.atan2(Math.abs(diffY), Math.abs(diffX)) * 180 / Math.PI;\n        data.isScrolling = swiper.isHorizontal() ? touchAngle > params.touchAngle : 90 - touchAngle > params.touchAngle;\n      }\n    }\n  }\n  if (data.isScrolling) {\n    swiper.emit('touchMoveOpposite', e);\n  }\n  if (typeof data.startMoving === 'undefined') {\n    if (touches.currentX !== touches.startX || touches.currentY !== touches.startY) {\n      data.startMoving = true;\n    }\n  }\n  if (data.isScrolling || e.type === 'touchmove' && data.preventTouchMoveFromPointerMove) {\n    data.isTouched = false;\n    return;\n  }\n  if (!data.startMoving) {\n    return;\n  }\n  swiper.allowClick = false;\n  if (!params.cssMode && e.cancelable) {\n    e.preventDefault();\n  }\n  if (params.touchMoveStopPropagation && !params.nested) {\n    e.stopPropagation();\n  }\n  let diff = swiper.isHorizontal() ? diffX : diffY;\n  let touchesDiff = swiper.isHorizontal() ? touches.currentX - touches.previousX : touches.currentY - touches.previousY;\n  if (params.oneWayMovement) {\n    diff = Math.abs(diff) * (rtl ? 1 : -1);\n    touchesDiff = Math.abs(touchesDiff) * (rtl ? 1 : -1);\n  }\n  touches.diff = diff;\n  diff *= params.touchRatio;\n  if (rtl) {\n    diff = -diff;\n    touchesDiff = -touchesDiff;\n  }\n  const prevTouchesDirection = swiper.touchesDirection;\n  swiper.swipeDirection = diff > 0 ? 'prev' : 'next';\n  swiper.touchesDirection = touchesDiff > 0 ? 'prev' : 'next';\n  const isLoop = swiper.params.loop && !params.cssMode;\n  const allowLoopFix = swiper.touchesDirection === 'next' && swiper.allowSlideNext || swiper.touchesDirection === 'prev' && swiper.allowSlidePrev;\n  if (!data.isMoved) {\n    if (isLoop && allowLoopFix) {\n      swiper.loopFix({\n        direction: swiper.swipeDirection\n      });\n    }\n    data.startTranslate = swiper.getTranslate();\n    swiper.setTransition(0);\n    if (swiper.animating) {\n      const evt = new window.CustomEvent('transitionend', {\n        bubbles: true,\n        cancelable: true,\n        detail: {\n          bySwiperTouchMove: true\n        }\n      });\n      swiper.wrapperEl.dispatchEvent(evt);\n    }\n    data.allowMomentumBounce = false;\n    // Grab Cursor\n    if (params.grabCursor && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) {\n      swiper.setGrabCursor(true);\n    }\n    swiper.emit('sliderFirstMove', e);\n  }\n  let loopFixed;\n  new Date().getTime();\n  if (params._loopSwapReset !== false && data.isMoved && data.allowThresholdMove && prevTouchesDirection !== swiper.touchesDirection && isLoop && allowLoopFix && Math.abs(diff) >= 1) {\n    Object.assign(touches, {\n      startX: pageX,\n      startY: pageY,\n      currentX: pageX,\n      currentY: pageY,\n      startTranslate: data.currentTranslate\n    });\n    data.loopSwapReset = true;\n    data.startTranslate = data.currentTranslate;\n    return;\n  }\n  swiper.emit('sliderMove', e);\n  data.isMoved = true;\n  data.currentTranslate = diff + data.startTranslate;\n  let disableParentSwiper = true;\n  let resistanceRatio = params.resistanceRatio;\n  if (params.touchReleaseOnEdges) {\n    resistanceRatio = 0;\n  }\n  if (diff > 0) {\n    if (isLoop && allowLoopFix && !loopFixed && data.allowThresholdMove && data.currentTranslate > (params.centeredSlides ? swiper.minTranslate() - swiper.slidesSizesGrid[swiper.activeIndex + 1] - (params.slidesPerView !== 'auto' && swiper.slides.length - params.slidesPerView >= 2 ? swiper.slidesSizesGrid[swiper.activeIndex + 1] + swiper.params.spaceBetween : 0) - swiper.params.spaceBetween : swiper.minTranslate())) {\n      swiper.loopFix({\n        direction: 'prev',\n        setTranslate: true,\n        activeSlideIndex: 0\n      });\n    }\n    if (data.currentTranslate > swiper.minTranslate()) {\n      disableParentSwiper = false;\n      if (params.resistance) {\n        data.currentTranslate = swiper.minTranslate() - 1 + (-swiper.minTranslate() + data.startTranslate + diff) ** resistanceRatio;\n      }\n    }\n  } else if (diff < 0) {\n    if (isLoop && allowLoopFix && !loopFixed && data.allowThresholdMove && data.currentTranslate < (params.centeredSlides ? swiper.maxTranslate() + swiper.slidesSizesGrid[swiper.slidesSizesGrid.length - 1] + swiper.params.spaceBetween + (params.slidesPerView !== 'auto' && swiper.slides.length - params.slidesPerView >= 2 ? swiper.slidesSizesGrid[swiper.slidesSizesGrid.length - 1] + swiper.params.spaceBetween : 0) : swiper.maxTranslate())) {\n      swiper.loopFix({\n        direction: 'next',\n        setTranslate: true,\n        activeSlideIndex: swiper.slides.length - (params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : Math.ceil(parseFloat(params.slidesPerView, 10)))\n      });\n    }\n    if (data.currentTranslate < swiper.maxTranslate()) {\n      disableParentSwiper = false;\n      if (params.resistance) {\n        data.currentTranslate = swiper.maxTranslate() + 1 - (swiper.maxTranslate() - data.startTranslate - diff) ** resistanceRatio;\n      }\n    }\n  }\n  if (disableParentSwiper) {\n    e.preventedByNestedSwiper = true;\n  }\n\n  // Directions locks\n  if (!swiper.allowSlideNext && swiper.swipeDirection === 'next' && data.currentTranslate < data.startTranslate) {\n    data.currentTranslate = data.startTranslate;\n  }\n  if (!swiper.allowSlidePrev && swiper.swipeDirection === 'prev' && data.currentTranslate > data.startTranslate) {\n    data.currentTranslate = data.startTranslate;\n  }\n  if (!swiper.allowSlidePrev && !swiper.allowSlideNext) {\n    data.currentTranslate = data.startTranslate;\n  }\n\n  // Threshold\n  if (params.threshold > 0) {\n    if (Math.abs(diff) > params.threshold || data.allowThresholdMove) {\n      if (!data.allowThresholdMove) {\n        data.allowThresholdMove = true;\n        touches.startX = touches.currentX;\n        touches.startY = touches.currentY;\n        data.currentTranslate = data.startTranslate;\n        touches.diff = swiper.isHorizontal() ? touches.currentX - touches.startX : touches.currentY - touches.startY;\n        return;\n      }\n    } else {\n      data.currentTranslate = data.startTranslate;\n      return;\n    }\n  }\n  if (!params.followFinger || params.cssMode) return;\n\n  // Update active index in free mode\n  if (params.freeMode && params.freeMode.enabled && swiper.freeMode || params.watchSlidesProgress) {\n    swiper.updateActiveIndex();\n    swiper.updateSlidesClasses();\n  }\n  if (params.freeMode && params.freeMode.enabled && swiper.freeMode) {\n    swiper.freeMode.onTouchMove();\n  }\n  // Update progress\n  swiper.updateProgress(data.currentTranslate);\n  // Update translate\n  swiper.setTranslate(data.currentTranslate);\n}\n\nfunction onTouchEnd(event) {\n  const swiper = this;\n  const data = swiper.touchEventsData;\n  let e = event;\n  if (e.originalEvent) e = e.originalEvent;\n  let targetTouch;\n  const isTouchEvent = e.type === 'touchend' || e.type === 'touchcancel';\n  if (!isTouchEvent) {\n    if (data.touchId !== null) return; // return from pointer if we use touch\n    if (e.pointerId !== data.pointerId) return;\n    targetTouch = e;\n  } else {\n    targetTouch = [...e.changedTouches].find(t => t.identifier === data.touchId);\n    if (!targetTouch || targetTouch.identifier !== data.touchId) return;\n  }\n  if (['pointercancel', 'pointerout', 'pointerleave', 'contextmenu'].includes(e.type)) {\n    const proceed = ['pointercancel', 'contextmenu'].includes(e.type) && (swiper.browser.isSafari || swiper.browser.isWebView);\n    if (!proceed) {\n      return;\n    }\n  }\n  data.pointerId = null;\n  data.touchId = null;\n  const {\n    params,\n    touches,\n    rtlTranslate: rtl,\n    slidesGrid,\n    enabled\n  } = swiper;\n  if (!enabled) return;\n  if (!params.simulateTouch && e.pointerType === 'mouse') return;\n  if (data.allowTouchCallbacks) {\n    swiper.emit('touchEnd', e);\n  }\n  data.allowTouchCallbacks = false;\n  if (!data.isTouched) {\n    if (data.isMoved && params.grabCursor) {\n      swiper.setGrabCursor(false);\n    }\n    data.isMoved = false;\n    data.startMoving = false;\n    return;\n  }\n\n  // Return Grab Cursor\n  if (params.grabCursor && data.isMoved && data.isTouched && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) {\n    swiper.setGrabCursor(false);\n  }\n\n  // Time diff\n  const touchEndTime = now();\n  const timeDiff = touchEndTime - data.touchStartTime;\n\n  // Tap, doubleTap, Click\n  if (swiper.allowClick) {\n    const pathTree = e.path || e.composedPath && e.composedPath();\n    swiper.updateClickedSlide(pathTree && pathTree[0] || e.target, pathTree);\n    swiper.emit('tap click', e);\n    if (timeDiff < 300 && touchEndTime - data.lastClickTime < 300) {\n      swiper.emit('doubleTap doubleClick', e);\n    }\n  }\n  data.lastClickTime = now();\n  nextTick(() => {\n    if (!swiper.destroyed) swiper.allowClick = true;\n  });\n  if (!data.isTouched || !data.isMoved || !swiper.swipeDirection || touches.diff === 0 && !data.loopSwapReset || data.currentTranslate === data.startTranslate && !data.loopSwapReset) {\n    data.isTouched = false;\n    data.isMoved = false;\n    data.startMoving = false;\n    return;\n  }\n  data.isTouched = false;\n  data.isMoved = false;\n  data.startMoving = false;\n  let currentPos;\n  if (params.followFinger) {\n    currentPos = rtl ? swiper.translate : -swiper.translate;\n  } else {\n    currentPos = -data.currentTranslate;\n  }\n  if (params.cssMode) {\n    return;\n  }\n  if (params.freeMode && params.freeMode.enabled) {\n    swiper.freeMode.onTouchEnd({\n      currentPos\n    });\n    return;\n  }\n\n  // Find current slide\n  const swipeToLast = currentPos >= -swiper.maxTranslate() && !swiper.params.loop;\n  let stopIndex = 0;\n  let groupSize = swiper.slidesSizesGrid[0];\n  for (let i = 0; i < slidesGrid.length; i += i < params.slidesPerGroupSkip ? 1 : params.slidesPerGroup) {\n    const increment = i < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup;\n    if (typeof slidesGrid[i + increment] !== 'undefined') {\n      if (swipeToLast || currentPos >= slidesGrid[i] && currentPos < slidesGrid[i + increment]) {\n        stopIndex = i;\n        groupSize = slidesGrid[i + increment] - slidesGrid[i];\n      }\n    } else if (swipeToLast || currentPos >= slidesGrid[i]) {\n      stopIndex = i;\n      groupSize = slidesGrid[slidesGrid.length - 1] - slidesGrid[slidesGrid.length - 2];\n    }\n  }\n  let rewindFirstIndex = null;\n  let rewindLastIndex = null;\n  if (params.rewind) {\n    if (swiper.isBeginning) {\n      rewindLastIndex = params.virtual && params.virtual.enabled && swiper.virtual ? swiper.virtual.slides.length - 1 : swiper.slides.length - 1;\n    } else if (swiper.isEnd) {\n      rewindFirstIndex = 0;\n    }\n  }\n  // Find current slide size\n  const ratio = (currentPos - slidesGrid[stopIndex]) / groupSize;\n  const increment = stopIndex < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup;\n  if (timeDiff > params.longSwipesMs) {\n    // Long touches\n    if (!params.longSwipes) {\n      swiper.slideTo(swiper.activeIndex);\n      return;\n    }\n    if (swiper.swipeDirection === 'next') {\n      if (ratio >= params.longSwipesRatio) swiper.slideTo(params.rewind && swiper.isEnd ? rewindFirstIndex : stopIndex + increment);else swiper.slideTo(stopIndex);\n    }\n    if (swiper.swipeDirection === 'prev') {\n      if (ratio > 1 - params.longSwipesRatio) {\n        swiper.slideTo(stopIndex + increment);\n      } else if (rewindLastIndex !== null && ratio < 0 && Math.abs(ratio) > params.longSwipesRatio) {\n        swiper.slideTo(rewindLastIndex);\n      } else {\n        swiper.slideTo(stopIndex);\n      }\n    }\n  } else {\n    // Short swipes\n    if (!params.shortSwipes) {\n      swiper.slideTo(swiper.activeIndex);\n      return;\n    }\n    const isNavButtonTarget = swiper.navigation && (e.target === swiper.navigation.nextEl || e.target === swiper.navigation.prevEl);\n    if (!isNavButtonTarget) {\n      if (swiper.swipeDirection === 'next') {\n        swiper.slideTo(rewindFirstIndex !== null ? rewindFirstIndex : stopIndex + increment);\n      }\n      if (swiper.swipeDirection === 'prev') {\n        swiper.slideTo(rewindLastIndex !== null ? rewindLastIndex : stopIndex);\n      }\n    } else if (e.target === swiper.navigation.nextEl) {\n      swiper.slideTo(stopIndex + increment);\n    } else {\n      swiper.slideTo(stopIndex);\n    }\n  }\n}\n\nfunction onResize() {\n  const swiper = this;\n  const {\n    params,\n    el\n  } = swiper;\n  if (el && el.offsetWidth === 0) return;\n\n  // Breakpoints\n  if (params.breakpoints) {\n    swiper.setBreakpoint();\n  }\n\n  // Save locks\n  const {\n    allowSlideNext,\n    allowSlidePrev,\n    snapGrid\n  } = swiper;\n  const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n\n  // Disable locks on resize\n  swiper.allowSlideNext = true;\n  swiper.allowSlidePrev = true;\n  swiper.updateSize();\n  swiper.updateSlides();\n  swiper.updateSlidesClasses();\n  const isVirtualLoop = isVirtual && params.loop;\n  if ((params.slidesPerView === 'auto' || params.slidesPerView > 1) && swiper.isEnd && !swiper.isBeginning && !swiper.params.centeredSlides && !isVirtualLoop) {\n    const slides = isVirtual ? swiper.virtual.slides : swiper.slides;\n    swiper.slideTo(slides.length - 1, 0, false, true);\n  } else {\n    if (swiper.params.loop && !isVirtual) {\n      swiper.slideToLoop(swiper.realIndex, 0, false, true);\n    } else {\n      swiper.slideTo(swiper.activeIndex, 0, false, true);\n    }\n  }\n  if (swiper.autoplay && swiper.autoplay.running && swiper.autoplay.paused) {\n    clearTimeout(swiper.autoplay.resizeTimeout);\n    swiper.autoplay.resizeTimeout = setTimeout(() => {\n      if (swiper.autoplay && swiper.autoplay.running && swiper.autoplay.paused) {\n        swiper.autoplay.resume();\n      }\n    }, 500);\n  }\n  // Return locks after resize\n  swiper.allowSlidePrev = allowSlidePrev;\n  swiper.allowSlideNext = allowSlideNext;\n  if (swiper.params.watchOverflow && snapGrid !== swiper.snapGrid) {\n    swiper.checkOverflow();\n  }\n}\n\nfunction onClick(e) {\n  const swiper = this;\n  if (!swiper.enabled) return;\n  if (!swiper.allowClick) {\n    if (swiper.params.preventClicks) e.preventDefault();\n    if (swiper.params.preventClicksPropagation && swiper.animating) {\n      e.stopPropagation();\n      e.stopImmediatePropagation();\n    }\n  }\n}\n\nfunction onScroll() {\n  const swiper = this;\n  const {\n    wrapperEl,\n    rtlTranslate,\n    enabled\n  } = swiper;\n  if (!enabled) return;\n  swiper.previousTranslate = swiper.translate;\n  if (swiper.isHorizontal()) {\n    swiper.translate = -wrapperEl.scrollLeft;\n  } else {\n    swiper.translate = -wrapperEl.scrollTop;\n  }\n  // eslint-disable-next-line\n  if (swiper.translate === 0) swiper.translate = 0;\n  swiper.updateActiveIndex();\n  swiper.updateSlidesClasses();\n  let newProgress;\n  const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n  if (translatesDiff === 0) {\n    newProgress = 0;\n  } else {\n    newProgress = (swiper.translate - swiper.minTranslate()) / translatesDiff;\n  }\n  if (newProgress !== swiper.progress) {\n    swiper.updateProgress(rtlTranslate ? -swiper.translate : swiper.translate);\n  }\n  swiper.emit('setTranslate', swiper.translate, false);\n}\n\nfunction onLoad(e) {\n  const swiper = this;\n  processLazyPreloader(swiper, e.target);\n  if (swiper.params.cssMode || swiper.params.slidesPerView !== 'auto' && !swiper.params.autoHeight) {\n    return;\n  }\n  swiper.update();\n}\n\nfunction onDocumentTouchStart() {\n  const swiper = this;\n  if (swiper.documentTouchHandlerProceeded) return;\n  swiper.documentTouchHandlerProceeded = true;\n  if (swiper.params.touchReleaseOnEdges) {\n    swiper.el.style.touchAction = 'auto';\n  }\n}\n\nconst events = (swiper, method) => {\n  const document = getDocument();\n  const {\n    params,\n    el,\n    wrapperEl,\n    device\n  } = swiper;\n  const capture = !!params.nested;\n  const domMethod = method === 'on' ? 'addEventListener' : 'removeEventListener';\n  const swiperMethod = method;\n  if (!el || typeof el === 'string') return;\n\n  // Touch Events\n  document[domMethod]('touchstart', swiper.onDocumentTouchStart, {\n    passive: false,\n    capture\n  });\n  el[domMethod]('touchstart', swiper.onTouchStart, {\n    passive: false\n  });\n  el[domMethod]('pointerdown', swiper.onTouchStart, {\n    passive: false\n  });\n  document[domMethod]('touchmove', swiper.onTouchMove, {\n    passive: false,\n    capture\n  });\n  document[domMethod]('pointermove', swiper.onTouchMove, {\n    passive: false,\n    capture\n  });\n  document[domMethod]('touchend', swiper.onTouchEnd, {\n    passive: true\n  });\n  document[domMethod]('pointerup', swiper.onTouchEnd, {\n    passive: true\n  });\n  document[domMethod]('pointercancel', swiper.onTouchEnd, {\n    passive: true\n  });\n  document[domMethod]('touchcancel', swiper.onTouchEnd, {\n    passive: true\n  });\n  document[domMethod]('pointerout', swiper.onTouchEnd, {\n    passive: true\n  });\n  document[domMethod]('pointerleave', swiper.onTouchEnd, {\n    passive: true\n  });\n  document[domMethod]('contextmenu', swiper.onTouchEnd, {\n    passive: true\n  });\n\n  // Prevent Links Clicks\n  if (params.preventClicks || params.preventClicksPropagation) {\n    el[domMethod]('click', swiper.onClick, true);\n  }\n  if (params.cssMode) {\n    wrapperEl[domMethod]('scroll', swiper.onScroll);\n  }\n\n  // Resize handler\n  if (params.updateOnWindowResize) {\n    swiper[swiperMethod](device.ios || device.android ? 'resize orientationchange observerUpdate' : 'resize observerUpdate', onResize, true);\n  } else {\n    swiper[swiperMethod]('observerUpdate', onResize, true);\n  }\n\n  // Images loader\n  el[domMethod]('load', swiper.onLoad, {\n    capture: true\n  });\n};\nfunction attachEvents() {\n  const swiper = this;\n  const {\n    params\n  } = swiper;\n  swiper.onTouchStart = onTouchStart.bind(swiper);\n  swiper.onTouchMove = onTouchMove.bind(swiper);\n  swiper.onTouchEnd = onTouchEnd.bind(swiper);\n  swiper.onDocumentTouchStart = onDocumentTouchStart.bind(swiper);\n  if (params.cssMode) {\n    swiper.onScroll = onScroll.bind(swiper);\n  }\n  swiper.onClick = onClick.bind(swiper);\n  swiper.onLoad = onLoad.bind(swiper);\n  events(swiper, 'on');\n}\nfunction detachEvents() {\n  const swiper = this;\n  events(swiper, 'off');\n}\nvar events$1 = {\n  attachEvents,\n  detachEvents\n};\n\nconst isGridEnabled = (swiper, params) => {\n  return swiper.grid && params.grid && params.grid.rows > 1;\n};\nfunction setBreakpoint() {\n  const swiper = this;\n  const {\n    realIndex,\n    initialized,\n    params,\n    el\n  } = swiper;\n  const breakpoints = params.breakpoints;\n  if (!breakpoints || breakpoints && Object.keys(breakpoints).length === 0) return;\n  const document = getDocument();\n\n  // Get breakpoint for window/container width and update parameters\n  const breakpointsBase = params.breakpointsBase === 'window' || !params.breakpointsBase ? params.breakpointsBase : 'container';\n  const breakpointContainer = ['window', 'container'].includes(params.breakpointsBase) || !params.breakpointsBase ? swiper.el : document.querySelector(params.breakpointsBase);\n  const breakpoint = swiper.getBreakpoint(breakpoints, breakpointsBase, breakpointContainer);\n  if (!breakpoint || swiper.currentBreakpoint === breakpoint) return;\n  const breakpointOnlyParams = breakpoint in breakpoints ? breakpoints[breakpoint] : undefined;\n  const breakpointParams = breakpointOnlyParams || swiper.originalParams;\n  const wasMultiRow = isGridEnabled(swiper, params);\n  const isMultiRow = isGridEnabled(swiper, breakpointParams);\n  const wasGrabCursor = swiper.params.grabCursor;\n  const isGrabCursor = breakpointParams.grabCursor;\n  const wasEnabled = params.enabled;\n  if (wasMultiRow && !isMultiRow) {\n    el.classList.remove(`${params.containerModifierClass}grid`, `${params.containerModifierClass}grid-column`);\n    swiper.emitContainerClasses();\n  } else if (!wasMultiRow && isMultiRow) {\n    el.classList.add(`${params.containerModifierClass}grid`);\n    if (breakpointParams.grid.fill && breakpointParams.grid.fill === 'column' || !breakpointParams.grid.fill && params.grid.fill === 'column') {\n      el.classList.add(`${params.containerModifierClass}grid-column`);\n    }\n    swiper.emitContainerClasses();\n  }\n  if (wasGrabCursor && !isGrabCursor) {\n    swiper.unsetGrabCursor();\n  } else if (!wasGrabCursor && isGrabCursor) {\n    swiper.setGrabCursor();\n  }\n\n  // Toggle navigation, pagination, scrollbar\n  ['navigation', 'pagination', 'scrollbar'].forEach(prop => {\n    if (typeof breakpointParams[prop] === 'undefined') return;\n    const wasModuleEnabled = params[prop] && params[prop].enabled;\n    const isModuleEnabled = breakpointParams[prop] && breakpointParams[prop].enabled;\n    if (wasModuleEnabled && !isModuleEnabled) {\n      swiper[prop].disable();\n    }\n    if (!wasModuleEnabled && isModuleEnabled) {\n      swiper[prop].enable();\n    }\n  });\n  const directionChanged = breakpointParams.direction && breakpointParams.direction !== params.direction;\n  const needsReLoop = params.loop && (breakpointParams.slidesPerView !== params.slidesPerView || directionChanged);\n  const wasLoop = params.loop;\n  if (directionChanged && initialized) {\n    swiper.changeDirection();\n  }\n  extend(swiper.params, breakpointParams);\n  const isEnabled = swiper.params.enabled;\n  const hasLoop = swiper.params.loop;\n  Object.assign(swiper, {\n    allowTouchMove: swiper.params.allowTouchMove,\n    allowSlideNext: swiper.params.allowSlideNext,\n    allowSlidePrev: swiper.params.allowSlidePrev\n  });\n  if (wasEnabled && !isEnabled) {\n    swiper.disable();\n  } else if (!wasEnabled && isEnabled) {\n    swiper.enable();\n  }\n  swiper.currentBreakpoint = breakpoint;\n  swiper.emit('_beforeBreakpoint', breakpointParams);\n  if (initialized) {\n    if (needsReLoop) {\n      swiper.loopDestroy();\n      swiper.loopCreate(realIndex);\n      swiper.updateSlides();\n    } else if (!wasLoop && hasLoop) {\n      swiper.loopCreate(realIndex);\n      swiper.updateSlides();\n    } else if (wasLoop && !hasLoop) {\n      swiper.loopDestroy();\n    }\n  }\n  swiper.emit('breakpoint', breakpointParams);\n}\n\nfunction getBreakpoint(breakpoints, base = 'window', containerEl) {\n  if (!breakpoints || base === 'container' && !containerEl) return undefined;\n  let breakpoint = false;\n  const window = getWindow();\n  const currentHeight = base === 'window' ? window.innerHeight : containerEl.clientHeight;\n  const points = Object.keys(breakpoints).map(point => {\n    if (typeof point === 'string' && point.indexOf('@') === 0) {\n      const minRatio = parseFloat(point.substr(1));\n      const value = currentHeight * minRatio;\n      return {\n        value,\n        point\n      };\n    }\n    return {\n      value: point,\n      point\n    };\n  });\n  points.sort((a, b) => parseInt(a.value, 10) - parseInt(b.value, 10));\n  for (let i = 0; i < points.length; i += 1) {\n    const {\n      point,\n      value\n    } = points[i];\n    if (base === 'window') {\n      if (window.matchMedia(`(min-width: ${value}px)`).matches) {\n        breakpoint = point;\n      }\n    } else if (value <= containerEl.clientWidth) {\n      breakpoint = point;\n    }\n  }\n  return breakpoint || 'max';\n}\n\nvar breakpoints = {\n  setBreakpoint,\n  getBreakpoint\n};\n\nfunction prepareClasses(entries, prefix) {\n  const resultClasses = [];\n  entries.forEach(item => {\n    if (typeof item === 'object') {\n      Object.keys(item).forEach(classNames => {\n        if (item[classNames]) {\n          resultClasses.push(prefix + classNames);\n        }\n      });\n    } else if (typeof item === 'string') {\n      resultClasses.push(prefix + item);\n    }\n  });\n  return resultClasses;\n}\nfunction addClasses() {\n  const swiper = this;\n  const {\n    classNames,\n    params,\n    rtl,\n    el,\n    device\n  } = swiper;\n  // prettier-ignore\n  const suffixes = prepareClasses(['initialized', params.direction, {\n    'free-mode': swiper.params.freeMode && params.freeMode.enabled\n  }, {\n    'autoheight': params.autoHeight\n  }, {\n    'rtl': rtl\n  }, {\n    'grid': params.grid && params.grid.rows > 1\n  }, {\n    'grid-column': params.grid && params.grid.rows > 1 && params.grid.fill === 'column'\n  }, {\n    'android': device.android\n  }, {\n    'ios': device.ios\n  }, {\n    'css-mode': params.cssMode\n  }, {\n    'centered': params.cssMode && params.centeredSlides\n  }, {\n    'watch-progress': params.watchSlidesProgress\n  }], params.containerModifierClass);\n  classNames.push(...suffixes);\n  el.classList.add(...classNames);\n  swiper.emitContainerClasses();\n}\n\nfunction removeClasses() {\n  const swiper = this;\n  const {\n    el,\n    classNames\n  } = swiper;\n  if (!el || typeof el === 'string') return;\n  el.classList.remove(...classNames);\n  swiper.emitContainerClasses();\n}\n\nvar classes = {\n  addClasses,\n  removeClasses\n};\n\nfunction checkOverflow() {\n  const swiper = this;\n  const {\n    isLocked: wasLocked,\n    params\n  } = swiper;\n  const {\n    slidesOffsetBefore\n  } = params;\n  if (slidesOffsetBefore) {\n    const lastSlideIndex = swiper.slides.length - 1;\n    const lastSlideRightEdge = swiper.slidesGrid[lastSlideIndex] + swiper.slidesSizesGrid[lastSlideIndex] + slidesOffsetBefore * 2;\n    swiper.isLocked = swiper.size > lastSlideRightEdge;\n  } else {\n    swiper.isLocked = swiper.snapGrid.length === 1;\n  }\n  if (params.allowSlideNext === true) {\n    swiper.allowSlideNext = !swiper.isLocked;\n  }\n  if (params.allowSlidePrev === true) {\n    swiper.allowSlidePrev = !swiper.isLocked;\n  }\n  if (wasLocked && wasLocked !== swiper.isLocked) {\n    swiper.isEnd = false;\n  }\n  if (wasLocked !== swiper.isLocked) {\n    swiper.emit(swiper.isLocked ? 'lock' : 'unlock');\n  }\n}\nvar checkOverflow$1 = {\n  checkOverflow\n};\n\nvar defaults = {\n  init: true,\n  direction: 'horizontal',\n  oneWayMovement: false,\n  swiperElementNodeName: 'SWIPER-CONTAINER',\n  touchEventsTarget: 'wrapper',\n  initialSlide: 0,\n  speed: 300,\n  cssMode: false,\n  updateOnWindowResize: true,\n  resizeObserver: true,\n  nested: false,\n  createElements: false,\n  eventsPrefix: 'swiper',\n  enabled: true,\n  focusableElements: 'input, select, option, textarea, button, video, label',\n  // Overrides\n  width: null,\n  height: null,\n  //\n  preventInteractionOnTransition: false,\n  // ssr\n  userAgent: null,\n  url: null,\n  // To support iOS's swipe-to-go-back gesture (when being used in-app).\n  edgeSwipeDetection: false,\n  edgeSwipeThreshold: 20,\n  // Autoheight\n  autoHeight: false,\n  // Set wrapper width\n  setWrapperSize: false,\n  // Virtual Translate\n  virtualTranslate: false,\n  // Effects\n  effect: 'slide',\n  // 'slide' or 'fade' or 'cube' or 'coverflow' or 'flip'\n\n  // Breakpoints\n  breakpoints: undefined,\n  breakpointsBase: 'window',\n  // Slides grid\n  spaceBetween: 0,\n  slidesPerView: 1,\n  slidesPerGroup: 1,\n  slidesPerGroupSkip: 0,\n  slidesPerGroupAuto: false,\n  centeredSlides: false,\n  centeredSlidesBounds: false,\n  slidesOffsetBefore: 0,\n  // in px\n  slidesOffsetAfter: 0,\n  // in px\n  normalizeSlideIndex: true,\n  centerInsufficientSlides: false,\n  snapToSlideEdge: false,\n  // Disable swiper and hide navigation when container not overflow\n  watchOverflow: true,\n  // Round length\n  roundLengths: false,\n  // Touches\n  touchRatio: 1,\n  touchAngle: 45,\n  simulateTouch: true,\n  shortSwipes: true,\n  longSwipes: true,\n  longSwipesRatio: 0.5,\n  longSwipesMs: 300,\n  followFinger: true,\n  allowTouchMove: true,\n  threshold: 5,\n  touchMoveStopPropagation: false,\n  touchStartPreventDefault: true,\n  touchStartForcePreventDefault: false,\n  touchReleaseOnEdges: false,\n  // Unique Navigation Elements\n  uniqueNavElements: true,\n  // Resistance\n  resistance: true,\n  resistanceRatio: 0.85,\n  // Progress\n  watchSlidesProgress: false,\n  // Cursor\n  grabCursor: false,\n  // Clicks\n  preventClicks: true,\n  preventClicksPropagation: true,\n  slideToClickedSlide: false,\n  // loop\n  loop: false,\n  loopAddBlankSlides: true,\n  loopAdditionalSlides: 0,\n  loopPreventsSliding: true,\n  // rewind\n  rewind: false,\n  // Swiping/no swiping\n  allowSlidePrev: true,\n  allowSlideNext: true,\n  swipeHandler: null,\n  // '.swipe-handler',\n  noSwiping: true,\n  noSwipingClass: 'swiper-no-swiping',\n  noSwipingSelector: null,\n  // Passive Listeners\n  passiveListeners: true,\n  maxBackfaceHiddenSlides: 10,\n  // NS\n  containerModifierClass: 'swiper-',\n  // NEW\n  slideClass: 'swiper-slide',\n  slideBlankClass: 'swiper-slide-blank',\n  slideActiveClass: 'swiper-slide-active',\n  slideVisibleClass: 'swiper-slide-visible',\n  slideFullyVisibleClass: 'swiper-slide-fully-visible',\n  slideNextClass: 'swiper-slide-next',\n  slidePrevClass: 'swiper-slide-prev',\n  wrapperClass: 'swiper-wrapper',\n  lazyPreloaderClass: 'swiper-lazy-preloader',\n  lazyPreloadPrevNext: 0,\n  // Callbacks\n  runCallbacksOnInit: true,\n  // Internals\n  _emitClasses: false\n};\n\nfunction moduleExtendParams(params, allModulesParams) {\n  return function extendParams(obj = {}) {\n    const moduleParamName = Object.keys(obj)[0];\n    const moduleParams = obj[moduleParamName];\n    if (typeof moduleParams !== 'object' || moduleParams === null) {\n      extend(allModulesParams, obj);\n      return;\n    }\n    if (params[moduleParamName] === true) {\n      params[moduleParamName] = {\n        enabled: true\n      };\n    }\n    if (moduleParamName === 'navigation' && params[moduleParamName] && params[moduleParamName].enabled && !params[moduleParamName].prevEl && !params[moduleParamName].nextEl) {\n      params[moduleParamName].auto = true;\n    }\n    if (['pagination', 'scrollbar'].indexOf(moduleParamName) >= 0 && params[moduleParamName] && params[moduleParamName].enabled && !params[moduleParamName].el) {\n      params[moduleParamName].auto = true;\n    }\n    if (!(moduleParamName in params && 'enabled' in moduleParams)) {\n      extend(allModulesParams, obj);\n      return;\n    }\n    if (typeof params[moduleParamName] === 'object' && !('enabled' in params[moduleParamName])) {\n      params[moduleParamName].enabled = true;\n    }\n    if (!params[moduleParamName]) params[moduleParamName] = {\n      enabled: false\n    };\n    extend(allModulesParams, obj);\n  };\n}\n\n/* eslint no-param-reassign: \"off\" */\nconst prototypes = {\n  eventsEmitter,\n  update,\n  translate,\n  transition,\n  slide,\n  loop,\n  grabCursor,\n  events: events$1,\n  breakpoints,\n  checkOverflow: checkOverflow$1,\n  classes\n};\nconst extendedDefaults = {};\nclass Swiper {\n  constructor(...args) {\n    let el;\n    let params;\n    if (args.length === 1 && args[0].constructor && Object.prototype.toString.call(args[0]).slice(8, -1) === 'Object') {\n      params = args[0];\n    } else {\n      [el, params] = args;\n    }\n    if (!params) params = {};\n    params = extend({}, params);\n    if (el && !params.el) params.el = el;\n    const document = getDocument();\n    if (params.el && typeof params.el === 'string' && document.querySelectorAll(params.el).length > 1) {\n      const swipers = [];\n      document.querySelectorAll(params.el).forEach(containerEl => {\n        const newParams = extend({}, params, {\n          el: containerEl\n        });\n        swipers.push(new Swiper(newParams));\n      });\n      // eslint-disable-next-line no-constructor-return\n      return swipers;\n    }\n\n    // Swiper Instance\n    const swiper = this;\n    swiper.__swiper__ = true;\n    swiper.support = getSupport();\n    swiper.device = getDevice({\n      userAgent: params.userAgent\n    });\n    swiper.browser = getBrowser();\n    swiper.eventsListeners = {};\n    swiper.eventsAnyListeners = [];\n    swiper.modules = [...swiper.__modules__];\n    if (params.modules && Array.isArray(params.modules)) {\n      params.modules.forEach(mod => {\n        if (typeof mod === 'function' && swiper.modules.indexOf(mod) < 0) {\n          swiper.modules.push(mod);\n        }\n      });\n    }\n    const allModulesParams = {};\n    swiper.modules.forEach(mod => {\n      mod({\n        params,\n        swiper,\n        extendParams: moduleExtendParams(params, allModulesParams),\n        on: swiper.on.bind(swiper),\n        once: swiper.once.bind(swiper),\n        off: swiper.off.bind(swiper),\n        emit: swiper.emit.bind(swiper)\n      });\n    });\n\n    // Extend defaults with modules params\n    const swiperParams = extend({}, defaults, allModulesParams);\n\n    // Extend defaults with passed params\n    swiper.params = extend({}, swiperParams, extendedDefaults, params);\n    swiper.originalParams = extend({}, swiper.params);\n    swiper.passedParams = extend({}, params);\n\n    // add event listeners\n    if (swiper.params && swiper.params.on) {\n      Object.keys(swiper.params.on).forEach(eventName => {\n        swiper.on(eventName, swiper.params.on[eventName]);\n      });\n    }\n    if (swiper.params && swiper.params.onAny) {\n      swiper.onAny(swiper.params.onAny);\n    }\n\n    // Extend Swiper\n    Object.assign(swiper, {\n      enabled: swiper.params.enabled,\n      el,\n      // Classes\n      classNames: [],\n      // Slides\n      slides: [],\n      slidesGrid: [],\n      snapGrid: [],\n      slidesSizesGrid: [],\n      // isDirection\n      isHorizontal() {\n        return swiper.params.direction === 'horizontal';\n      },\n      isVertical() {\n        return swiper.params.direction === 'vertical';\n      },\n      // Indexes\n      activeIndex: 0,\n      realIndex: 0,\n      //\n      isBeginning: true,\n      isEnd: false,\n      // Props\n      translate: 0,\n      previousTranslate: 0,\n      progress: 0,\n      velocity: 0,\n      animating: false,\n      cssOverflowAdjustment() {\n        // Returns 0 unless `translate` is > 2**23\n        // Should be subtracted from css values to prevent overflow\n        return Math.trunc(this.translate / 2 ** 23) * 2 ** 23;\n      },\n      // Locks\n      allowSlideNext: swiper.params.allowSlideNext,\n      allowSlidePrev: swiper.params.allowSlidePrev,\n      // Touch Events\n      touchEventsData: {\n        isTouched: undefined,\n        isMoved: undefined,\n        allowTouchCallbacks: undefined,\n        touchStartTime: undefined,\n        isScrolling: undefined,\n        currentTranslate: undefined,\n        startTranslate: undefined,\n        allowThresholdMove: undefined,\n        // Form elements to match\n        focusableElements: swiper.params.focusableElements,\n        // Last click time\n        lastClickTime: 0,\n        clickTimeout: undefined,\n        // Velocities\n        velocities: [],\n        allowMomentumBounce: undefined,\n        startMoving: undefined,\n        pointerId: null,\n        touchId: null\n      },\n      // Clicks\n      allowClick: true,\n      // Touches\n      allowTouchMove: swiper.params.allowTouchMove,\n      touches: {\n        startX: 0,\n        startY: 0,\n        currentX: 0,\n        currentY: 0,\n        diff: 0\n      },\n      // Images\n      imagesToLoad: [],\n      imagesLoaded: 0\n    });\n    swiper.emit('_swiper');\n\n    // Init\n    if (swiper.params.init) {\n      swiper.init();\n    }\n\n    // Return app instance\n    // eslint-disable-next-line no-constructor-return\n    return swiper;\n  }\n  getDirectionLabel(property) {\n    if (this.isHorizontal()) {\n      return property;\n    }\n    // prettier-ignore\n    return {\n      'width': 'height',\n      'margin-top': 'margin-left',\n      'margin-bottom ': 'margin-right',\n      'margin-left': 'margin-top',\n      'margin-right': 'margin-bottom',\n      'padding-left': 'padding-top',\n      'padding-right': 'padding-bottom',\n      'marginRight': 'marginBottom'\n    }[property];\n  }\n  getSlideIndex(slideEl) {\n    const {\n      slidesEl,\n      params\n    } = this;\n    const slides = elementChildren(slidesEl, `.${params.slideClass}, swiper-slide`);\n    const firstSlideIndex = elementIndex(slides[0]);\n    return elementIndex(slideEl) - firstSlideIndex;\n  }\n  getSlideIndexByData(index) {\n    return this.getSlideIndex(this.slides.find(slideEl => slideEl.getAttribute('data-swiper-slide-index') * 1 === index));\n  }\n  getSlideIndexWhenGrid(index) {\n    if (this.grid && this.params.grid && this.params.grid.rows > 1) {\n      if (this.params.grid.fill === 'column') {\n        index = Math.floor(index / this.params.grid.rows);\n      } else if (this.params.grid.fill === 'row') {\n        index = index % Math.ceil(this.slides.length / this.params.grid.rows);\n      }\n    }\n    return index;\n  }\n  recalcSlides() {\n    const swiper = this;\n    const {\n      slidesEl,\n      params\n    } = swiper;\n    swiper.slides = elementChildren(slidesEl, `.${params.slideClass}, swiper-slide`);\n  }\n  enable() {\n    const swiper = this;\n    if (swiper.enabled) return;\n    swiper.enabled = true;\n    if (swiper.params.grabCursor) {\n      swiper.setGrabCursor();\n    }\n    swiper.emit('enable');\n  }\n  disable() {\n    const swiper = this;\n    if (!swiper.enabled) return;\n    swiper.enabled = false;\n    if (swiper.params.grabCursor) {\n      swiper.unsetGrabCursor();\n    }\n    swiper.emit('disable');\n  }\n  setProgress(progress, speed) {\n    const swiper = this;\n    progress = Math.min(Math.max(progress, 0), 1);\n    const min = swiper.minTranslate();\n    const max = swiper.maxTranslate();\n    const current = (max - min) * progress + min;\n    swiper.translateTo(current, typeof speed === 'undefined' ? 0 : speed);\n    swiper.updateActiveIndex();\n    swiper.updateSlidesClasses();\n  }\n  emitContainerClasses() {\n    const swiper = this;\n    if (!swiper.params._emitClasses || !swiper.el) return;\n    const cls = swiper.el.className.split(' ').filter(className => {\n      return className.indexOf('swiper') === 0 || className.indexOf(swiper.params.containerModifierClass) === 0;\n    });\n    swiper.emit('_containerClasses', cls.join(' '));\n  }\n  getSlideClasses(slideEl) {\n    const swiper = this;\n    if (swiper.destroyed) return '';\n    return slideEl.className.split(' ').filter(className => {\n      return className.indexOf('swiper-slide') === 0 || className.indexOf(swiper.params.slideClass) === 0;\n    }).join(' ');\n  }\n  emitSlidesClasses() {\n    const swiper = this;\n    if (!swiper.params._emitClasses || !swiper.el) return;\n    const updates = [];\n    swiper.slides.forEach(slideEl => {\n      const classNames = swiper.getSlideClasses(slideEl);\n      updates.push({\n        slideEl,\n        classNames\n      });\n      swiper.emit('_slideClass', slideEl, classNames);\n    });\n    swiper.emit('_slideClasses', updates);\n  }\n  slidesPerViewDynamic(view = 'current', exact = false) {\n    const swiper = this;\n    const {\n      params,\n      slides,\n      slidesGrid,\n      slidesSizesGrid,\n      size: swiperSize,\n      activeIndex\n    } = swiper;\n    let spv = 1;\n    if (typeof params.slidesPerView === 'number') return params.slidesPerView;\n    if (params.centeredSlides) {\n      let slideSize = slides[activeIndex] ? Math.ceil(slides[activeIndex].swiperSlideSize) : 0;\n      let breakLoop;\n      for (let i = activeIndex + 1; i < slides.length; i += 1) {\n        if (slides[i] && !breakLoop) {\n          slideSize += Math.ceil(slides[i].swiperSlideSize);\n          spv += 1;\n          if (slideSize > swiperSize) breakLoop = true;\n        }\n      }\n      for (let i = activeIndex - 1; i >= 0; i -= 1) {\n        if (slides[i] && !breakLoop) {\n          slideSize += slides[i].swiperSlideSize;\n          spv += 1;\n          if (slideSize > swiperSize) breakLoop = true;\n        }\n      }\n    } else {\n      // eslint-disable-next-line\n      if (view === 'current') {\n        for (let i = activeIndex + 1; i < slides.length; i += 1) {\n          const slideInView = exact ? slidesGrid[i] + slidesSizesGrid[i] - slidesGrid[activeIndex] < swiperSize : slidesGrid[i] - slidesGrid[activeIndex] < swiperSize;\n          if (slideInView) {\n            spv += 1;\n          }\n        }\n      } else {\n        // previous\n        for (let i = activeIndex - 1; i >= 0; i -= 1) {\n          const slideInView = slidesGrid[activeIndex] - slidesGrid[i] < swiperSize;\n          if (slideInView) {\n            spv += 1;\n          }\n        }\n      }\n    }\n    return spv;\n  }\n  update() {\n    const swiper = this;\n    if (!swiper || swiper.destroyed) return;\n    const {\n      snapGrid,\n      params\n    } = swiper;\n    // Breakpoints\n    if (params.breakpoints) {\n      swiper.setBreakpoint();\n    }\n    [...swiper.el.querySelectorAll('[loading=\"lazy\"]')].forEach(imageEl => {\n      if (imageEl.complete) {\n        processLazyPreloader(swiper, imageEl);\n      }\n    });\n    swiper.updateSize();\n    swiper.updateSlides();\n    swiper.updateProgress();\n    swiper.updateSlidesClasses();\n    function setTranslate() {\n      const translateValue = swiper.rtlTranslate ? swiper.translate * -1 : swiper.translate;\n      const newTranslate = Math.min(Math.max(translateValue, swiper.maxTranslate()), swiper.minTranslate());\n      swiper.setTranslate(newTranslate);\n      swiper.updateActiveIndex();\n      swiper.updateSlidesClasses();\n    }\n    let translated;\n    if (params.freeMode && params.freeMode.enabled && !params.cssMode) {\n      setTranslate();\n      if (params.autoHeight) {\n        swiper.updateAutoHeight();\n      }\n    } else {\n      if ((params.slidesPerView === 'auto' || params.slidesPerView > 1) && swiper.isEnd && !params.centeredSlides) {\n        const slides = swiper.virtual && params.virtual.enabled ? swiper.virtual.slides : swiper.slides;\n        translated = swiper.slideTo(slides.length - 1, 0, false, true);\n      } else {\n        translated = swiper.slideTo(swiper.activeIndex, 0, false, true);\n      }\n      if (!translated) {\n        setTranslate();\n      }\n    }\n    if (params.watchOverflow && snapGrid !== swiper.snapGrid) {\n      swiper.checkOverflow();\n    }\n    swiper.emit('update');\n  }\n  changeDirection(newDirection, needUpdate = true) {\n    const swiper = this;\n    const currentDirection = swiper.params.direction;\n    if (!newDirection) {\n      // eslint-disable-next-line\n      newDirection = currentDirection === 'horizontal' ? 'vertical' : 'horizontal';\n    }\n    if (newDirection === currentDirection || newDirection !== 'horizontal' && newDirection !== 'vertical') {\n      return swiper;\n    }\n    swiper.el.classList.remove(`${swiper.params.containerModifierClass}${currentDirection}`);\n    swiper.el.classList.add(`${swiper.params.containerModifierClass}${newDirection}`);\n    swiper.emitContainerClasses();\n    swiper.params.direction = newDirection;\n    swiper.slides.forEach(slideEl => {\n      if (newDirection === 'vertical') {\n        slideEl.style.width = '';\n      } else {\n        slideEl.style.height = '';\n      }\n    });\n    swiper.emit('changeDirection');\n    if (needUpdate) swiper.update();\n    return swiper;\n  }\n  changeLanguageDirection(direction) {\n    const swiper = this;\n    if (swiper.rtl && direction === 'rtl' || !swiper.rtl && direction === 'ltr') return;\n    swiper.rtl = direction === 'rtl';\n    swiper.rtlTranslate = swiper.params.direction === 'horizontal' && swiper.rtl;\n    if (swiper.rtl) {\n      swiper.el.classList.add(`${swiper.params.containerModifierClass}rtl`);\n      swiper.el.dir = 'rtl';\n    } else {\n      swiper.el.classList.remove(`${swiper.params.containerModifierClass}rtl`);\n      swiper.el.dir = 'ltr';\n    }\n    swiper.update();\n  }\n  mount(element) {\n    const swiper = this;\n    if (swiper.mounted) return true;\n\n    // Find el\n    let el = element || swiper.params.el;\n    if (typeof el === 'string') {\n      el = document.querySelector(el);\n    }\n    if (!el) {\n      return false;\n    }\n    el.swiper = swiper;\n    if (el.parentNode && el.parentNode.host && el.parentNode.host.nodeName === swiper.params.swiperElementNodeName.toUpperCase()) {\n      swiper.isElement = true;\n    }\n    const getWrapperSelector = () => {\n      return `.${(swiper.params.wrapperClass || '').trim().split(' ').join('.')}`;\n    };\n    const getWrapper = () => {\n      if (el && el.shadowRoot && el.shadowRoot.querySelector) {\n        const res = el.shadowRoot.querySelector(getWrapperSelector());\n        // Children needs to return slot items\n        return res;\n      }\n      return elementChildren(el, getWrapperSelector())[0];\n    };\n    // Find Wrapper\n    let wrapperEl = getWrapper();\n    if (!wrapperEl && swiper.params.createElements) {\n      wrapperEl = createElement('div', swiper.params.wrapperClass);\n      el.append(wrapperEl);\n      elementChildren(el, `.${swiper.params.slideClass}`).forEach(slideEl => {\n        wrapperEl.append(slideEl);\n      });\n    }\n    Object.assign(swiper, {\n      el,\n      wrapperEl,\n      slidesEl: swiper.isElement && !el.parentNode.host.slideSlots ? el.parentNode.host : wrapperEl,\n      hostEl: swiper.isElement ? el.parentNode.host : el,\n      mounted: true,\n      // RTL\n      rtl: el.dir.toLowerCase() === 'rtl' || elementStyle(el, 'direction') === 'rtl',\n      rtlTranslate: swiper.params.direction === 'horizontal' && (el.dir.toLowerCase() === 'rtl' || elementStyle(el, 'direction') === 'rtl'),\n      wrongRTL: elementStyle(wrapperEl, 'display') === '-webkit-box'\n    });\n    return true;\n  }\n  init(el) {\n    const swiper = this;\n    if (swiper.initialized) return swiper;\n    const mounted = swiper.mount(el);\n    if (mounted === false) return swiper;\n    swiper.emit('beforeInit');\n\n    // Set breakpoint\n    if (swiper.params.breakpoints) {\n      swiper.setBreakpoint();\n    }\n\n    // Add Classes\n    swiper.addClasses();\n\n    // Update size\n    swiper.updateSize();\n\n    // Update slides\n    swiper.updateSlides();\n    if (swiper.params.watchOverflow) {\n      swiper.checkOverflow();\n    }\n\n    // Set Grab Cursor\n    if (swiper.params.grabCursor && swiper.enabled) {\n      swiper.setGrabCursor();\n    }\n\n    // Slide To Initial Slide\n    if (swiper.params.loop && swiper.virtual && swiper.params.virtual.enabled) {\n      swiper.slideTo(swiper.params.initialSlide + swiper.virtual.slidesBefore, 0, swiper.params.runCallbacksOnInit, false, true);\n    } else {\n      swiper.slideTo(swiper.params.initialSlide, 0, swiper.params.runCallbacksOnInit, false, true);\n    }\n\n    // Create loop\n    if (swiper.params.loop) {\n      swiper.loopCreate(undefined, true);\n    }\n\n    // Attach events\n    swiper.attachEvents();\n    const lazyElements = [...swiper.el.querySelectorAll('[loading=\"lazy\"]')];\n    if (swiper.isElement) {\n      lazyElements.push(...swiper.hostEl.querySelectorAll('[loading=\"lazy\"]'));\n    }\n    lazyElements.forEach(imageEl => {\n      if (imageEl.complete) {\n        processLazyPreloader(swiper, imageEl);\n      } else {\n        imageEl.addEventListener('load', e => {\n          processLazyPreloader(swiper, e.target);\n        });\n      }\n    });\n    preload(swiper);\n\n    // Init Flag\n    swiper.initialized = true;\n    preload(swiper);\n\n    // Emit\n    swiper.emit('init');\n    swiper.emit('afterInit');\n    return swiper;\n  }\n  destroy(deleteInstance = true, cleanStyles = true) {\n    const swiper = this;\n    const {\n      params,\n      el,\n      wrapperEl,\n      slides\n    } = swiper;\n    if (typeof swiper.params === 'undefined' || swiper.destroyed) {\n      return null;\n    }\n    swiper.emit('beforeDestroy');\n\n    // Init Flag\n    swiper.initialized = false;\n\n    // Detach events\n    swiper.detachEvents();\n\n    // Destroy loop\n    if (params.loop) {\n      swiper.loopDestroy();\n    }\n\n    // Cleanup styles\n    if (cleanStyles) {\n      swiper.removeClasses();\n      if (el && typeof el !== 'string') {\n        el.removeAttribute('style');\n      }\n      if (wrapperEl) {\n        wrapperEl.removeAttribute('style');\n      }\n      if (slides && slides.length) {\n        slides.forEach(slideEl => {\n          slideEl.classList.remove(params.slideVisibleClass, params.slideFullyVisibleClass, params.slideActiveClass, params.slideNextClass, params.slidePrevClass);\n          slideEl.removeAttribute('style');\n          slideEl.removeAttribute('data-swiper-slide-index');\n        });\n      }\n    }\n    swiper.emit('destroy');\n\n    // Detach emitter events\n    Object.keys(swiper.eventsListeners).forEach(eventName => {\n      swiper.off(eventName);\n    });\n    if (deleteInstance !== false) {\n      if (swiper.el && typeof swiper.el !== 'string') {\n        swiper.el.swiper = null;\n      }\n      deleteProps(swiper);\n    }\n    swiper.destroyed = true;\n    return null;\n  }\n  static extendDefaults(newDefaults) {\n    extend(extendedDefaults, newDefaults);\n  }\n  static get extendedDefaults() {\n    return extendedDefaults;\n  }\n  static get defaults() {\n    return defaults;\n  }\n  static installModule(mod) {\n    if (!Swiper.prototype.__modules__) Swiper.prototype.__modules__ = [];\n    const modules = Swiper.prototype.__modules__;\n    if (typeof mod === 'function' && modules.indexOf(mod) < 0) {\n      modules.push(mod);\n    }\n  }\n  static use(module) {\n    if (Array.isArray(module)) {\n      module.forEach(m => Swiper.installModule(m));\n      return Swiper;\n    }\n    Swiper.installModule(module);\n    return Swiper;\n  }\n}\nObject.keys(prototypes).forEach(prototypeGroup => {\n  Object.keys(prototypes[prototypeGroup]).forEach(protoMethod => {\n    Swiper.prototype[protoMethod] = prototypes[prototypeGroup][protoMethod];\n  });\n});\nSwiper.use([Resize, Observer]);\n\nexport { Swiper as S, defaults as d };\n","import { c as createElementIfNotDefined } from '../shared/create-element-if-not-defined.mjs';\nimport { m as makeElementsArray, s as setInnerHTML } from '../shared/utils.mjs';\n\nconst arrowSvg = `<svg class=\"swiper-navigation-icon\" width=\"11\" height=\"20\" viewBox=\"0 0 11 20\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M0.38296 20.0762C0.111788 19.805 0.111788 19.3654 0.38296 19.0942L9.19758 10.2796L0.38296 1.46497C0.111788 1.19379 0.111788 0.754138 0.38296 0.482966C0.654131 0.211794 1.09379 0.211794 1.36496 0.482966L10.4341 9.55214C10.8359 9.9539 10.8359 10.6053 10.4341 11.007L1.36496 20.0762C1.09379 20.3474 0.654131 20.3474 0.38296 20.0762Z\" fill=\"currentColor\"/></svg>`;\nfunction Navigation({\n  swiper,\n  extendParams,\n  on,\n  emit\n}) {\n  extendParams({\n    navigation: {\n      nextEl: null,\n      prevEl: null,\n      addIcons: true,\n      hideOnClick: false,\n      disabledClass: 'swiper-button-disabled',\n      hiddenClass: 'swiper-button-hidden',\n      lockClass: 'swiper-button-lock',\n      navigationDisabledClass: 'swiper-navigation-disabled'\n    }\n  });\n  swiper.navigation = {\n    nextEl: null,\n    prevEl: null,\n    arrowSvg\n  };\n  function getEl(el) {\n    let res;\n    if (el && typeof el === 'string' && swiper.isElement) {\n      res = swiper.el.querySelector(el) || swiper.hostEl.querySelector(el);\n      if (res) return res;\n    }\n    if (el) {\n      if (typeof el === 'string') res = [...document.querySelectorAll(el)];\n      if (swiper.params.uniqueNavElements && typeof el === 'string' && res && res.length > 1 && swiper.el.querySelectorAll(el).length === 1) {\n        res = swiper.el.querySelector(el);\n      } else if (res && res.length === 1) {\n        res = res[0];\n      }\n    }\n    if (el && !res) return el;\n    // if (Array.isArray(res) && res.length === 1) res = res[0];\n    return res;\n  }\n  function toggleEl(el, disabled) {\n    const params = swiper.params.navigation;\n    el = makeElementsArray(el);\n    el.forEach(subEl => {\n      if (subEl) {\n        subEl.classList[disabled ? 'add' : 'remove'](...params.disabledClass.split(' '));\n        if (subEl.tagName === 'BUTTON') subEl.disabled = disabled;\n        if (swiper.params.watchOverflow && swiper.enabled) {\n          subEl.classList[swiper.isLocked ? 'add' : 'remove'](params.lockClass);\n        }\n      }\n    });\n  }\n  function update() {\n    // Update Navigation Buttons\n    const {\n      nextEl,\n      prevEl\n    } = swiper.navigation;\n    if (swiper.params.loop) {\n      toggleEl(prevEl, false);\n      toggleEl(nextEl, false);\n      return;\n    }\n    toggleEl(prevEl, swiper.isBeginning && !swiper.params.rewind);\n    toggleEl(nextEl, swiper.isEnd && !swiper.params.rewind);\n  }\n  function onPrevClick(e) {\n    e.preventDefault();\n    if (swiper.isBeginning && !swiper.params.loop && !swiper.params.rewind) return;\n    swiper.slidePrev();\n    emit('navigationPrev');\n  }\n  function onNextClick(e) {\n    e.preventDefault();\n    if (swiper.isEnd && !swiper.params.loop && !swiper.params.rewind) return;\n    swiper.slideNext();\n    emit('navigationNext');\n  }\n  function init() {\n    const params = swiper.params.navigation;\n    swiper.params.navigation = createElementIfNotDefined(swiper, swiper.originalParams.navigation, swiper.params.navigation, {\n      nextEl: 'swiper-button-next',\n      prevEl: 'swiper-button-prev'\n    });\n    if (!(params.nextEl || params.prevEl)) return;\n    let nextEl = getEl(params.nextEl);\n    let prevEl = getEl(params.prevEl);\n    Object.assign(swiper.navigation, {\n      nextEl,\n      prevEl\n    });\n    nextEl = makeElementsArray(nextEl);\n    prevEl = makeElementsArray(prevEl);\n    const initButton = (el, dir) => {\n      if (el) {\n        if (params.addIcons && el.matches('.swiper-button-next,.swiper-button-prev') && !el.querySelector('svg')) {\n          const tempEl = document.createElement('div');\n          setInnerHTML(tempEl, arrowSvg);\n          el.appendChild(tempEl.querySelector('svg'));\n          tempEl.remove();\n        }\n        el.addEventListener('click', dir === 'next' ? onNextClick : onPrevClick);\n      }\n      if (!swiper.enabled && el) {\n        el.classList.add(...params.lockClass.split(' '));\n      }\n    };\n    nextEl.forEach(el => initButton(el, 'next'));\n    prevEl.forEach(el => initButton(el, 'prev'));\n  }\n  function destroy() {\n    let {\n      nextEl,\n      prevEl\n    } = swiper.navigation;\n    nextEl = makeElementsArray(nextEl);\n    prevEl = makeElementsArray(prevEl);\n    const destroyButton = (el, dir) => {\n      el.removeEventListener('click', dir === 'next' ? onNextClick : onPrevClick);\n      el.classList.remove(...swiper.params.navigation.disabledClass.split(' '));\n    };\n    nextEl.forEach(el => destroyButton(el, 'next'));\n    prevEl.forEach(el => destroyButton(el, 'prev'));\n  }\n  on('init', () => {\n    if (swiper.params.navigation.enabled === false) {\n      // eslint-disable-next-line\n      disable();\n    } else {\n      init();\n      update();\n    }\n  });\n  on('toEdge fromEdge lock unlock', () => {\n    update();\n  });\n  on('destroy', () => {\n    destroy();\n  });\n  on('enable disable', () => {\n    let {\n      nextEl,\n      prevEl\n    } = swiper.navigation;\n    nextEl = makeElementsArray(nextEl);\n    prevEl = makeElementsArray(prevEl);\n    if (swiper.enabled) {\n      update();\n      return;\n    }\n    [...nextEl, ...prevEl].filter(el => !!el).forEach(el => el.classList.add(swiper.params.navigation.lockClass));\n  });\n  on('click', (_s, e) => {\n    let {\n      nextEl,\n      prevEl\n    } = swiper.navigation;\n    nextEl = makeElementsArray(nextEl);\n    prevEl = makeElementsArray(prevEl);\n    const targetEl = e.target;\n    let targetIsButton = prevEl.includes(targetEl) || nextEl.includes(targetEl);\n    if (swiper.isElement && !targetIsButton) {\n      const path = e.path || e.composedPath && e.composedPath();\n      if (path) {\n        targetIsButton = path.find(pathEl => nextEl.includes(pathEl) || prevEl.includes(pathEl));\n      }\n    }\n    if (swiper.params.navigation.hideOnClick && !targetIsButton) {\n      if (swiper.pagination && swiper.params.pagination && swiper.params.pagination.clickable && (swiper.pagination.el === targetEl || swiper.pagination.el.contains(targetEl))) return;\n      let isHidden;\n      if (nextEl.length) {\n        isHidden = nextEl[0].classList.contains(swiper.params.navigation.hiddenClass);\n      } else if (prevEl.length) {\n        isHidden = prevEl[0].classList.contains(swiper.params.navigation.hiddenClass);\n      }\n      if (isHidden === true) {\n        emit('navigationShow');\n      } else {\n        emit('navigationHide');\n      }\n      [...nextEl, ...prevEl].filter(el => !!el).forEach(el => el.classList.toggle(swiper.params.navigation.hiddenClass));\n    }\n  });\n  const enable = () => {\n    swiper.el.classList.remove(...swiper.params.navigation.navigationDisabledClass.split(' '));\n    init();\n    update();\n  };\n  const disable = () => {\n    swiper.el.classList.add(...swiper.params.navigation.navigationDisabledClass.split(' '));\n    destroy();\n  };\n  Object.assign(swiper.navigation, {\n    enable,\n    disable,\n    update,\n    init,\n    destroy\n  });\n}\n\nexport { Navigation as default };\n","import { e as elementChildren, c as createElement } from './utils.mjs';\n\nfunction createElementIfNotDefined(swiper, originalParams, params, checkProps) {\n  if (swiper.params.createElements) {\n    Object.keys(checkProps).forEach(key => {\n      if (!params[key] && params.auto === true) {\n        let element = elementChildren(swiper.el, `.${checkProps[key]}`)[0];\n        if (!element) {\n          element = createElement('div', checkProps[key]);\n          element.className = checkProps[key];\n          swiper.el.append(element);\n        }\n        params[key] = element;\n        originalParams[key] = element;\n      }\n    });\n  }\n  return params;\n}\n\nexport { createElementIfNotDefined as c };\n","import { g as getDocument } from '../shared/ssr-window.esm.mjs';\n\n/* eslint no-underscore-dangle: \"off\" */\n/* eslint no-use-before-define: \"off\" */\nfunction Autoplay({\n  swiper,\n  extendParams,\n  on,\n  emit,\n  params\n}) {\n  swiper.autoplay = {\n    running: false,\n    paused: false,\n    timeLeft: 0\n  };\n  extendParams({\n    autoplay: {\n      enabled: false,\n      delay: 3000,\n      waitForTransition: true,\n      disableOnInteraction: false,\n      stopOnLastSlide: false,\n      reverseDirection: false,\n      pauseOnMouseEnter: false\n    }\n  });\n  let timeout;\n  let raf;\n  let autoplayDelayTotal = params && params.autoplay ? params.autoplay.delay : 3000;\n  let autoplayDelayCurrent = params && params.autoplay ? params.autoplay.delay : 3000;\n  let autoplayTimeLeft;\n  let autoplayStartTime = new Date().getTime();\n  let wasPaused;\n  let isTouched;\n  let pausedByTouch;\n  let touchStartTimeout;\n  let pausedByInteraction;\n  let pausedByPointerEnter;\n  function onTransitionEnd(e) {\n    if (!swiper || swiper.destroyed || !swiper.wrapperEl) return;\n    if (e.target !== swiper.wrapperEl) return;\n    swiper.wrapperEl.removeEventListener('transitionend', onTransitionEnd);\n    if (pausedByPointerEnter || e.detail && e.detail.bySwiperTouchMove) {\n      return;\n    }\n    resume();\n  }\n  const calcTimeLeft = () => {\n    if (swiper.destroyed || !swiper.autoplay.running) return;\n    if (swiper.autoplay.paused) {\n      wasPaused = true;\n    } else if (wasPaused) {\n      autoplayDelayCurrent = autoplayTimeLeft;\n      wasPaused = false;\n    }\n    const timeLeft = swiper.autoplay.paused ? autoplayTimeLeft : autoplayStartTime + autoplayDelayCurrent - new Date().getTime();\n    swiper.autoplay.timeLeft = timeLeft;\n    emit('autoplayTimeLeft', timeLeft, timeLeft / autoplayDelayTotal);\n    raf = requestAnimationFrame(() => {\n      calcTimeLeft();\n    });\n  };\n  const getSlideDelay = () => {\n    let activeSlideEl;\n    if (swiper.virtual && swiper.params.virtual.enabled) {\n      activeSlideEl = swiper.slides.find(slideEl => slideEl.classList.contains('swiper-slide-active'));\n    } else {\n      activeSlideEl = swiper.slides[swiper.activeIndex];\n    }\n    if (!activeSlideEl) return undefined;\n    const currentSlideDelay = parseInt(activeSlideEl.getAttribute('data-swiper-autoplay'), 10);\n    return currentSlideDelay;\n  };\n  const getTotalDelay = () => {\n    let totalDelay = swiper.params.autoplay.delay;\n    const currentSlideDelay = getSlideDelay();\n    if (!Number.isNaN(currentSlideDelay) && currentSlideDelay > 0) {\n      totalDelay = currentSlideDelay;\n    }\n    return totalDelay;\n  };\n  const run = delayForce => {\n    if (swiper.destroyed || !swiper.autoplay.running) return;\n    cancelAnimationFrame(raf);\n    calcTimeLeft();\n    let delay = delayForce;\n    if (typeof delay === 'undefined') {\n      delay = getTotalDelay();\n      autoplayDelayTotal = delay;\n      autoplayDelayCurrent = delay;\n    }\n    autoplayTimeLeft = delay;\n    const speed = swiper.params.speed;\n    const proceed = () => {\n      if (!swiper || swiper.destroyed) return;\n      if (swiper.params.autoplay.reverseDirection) {\n        if (!swiper.isBeginning || swiper.params.loop || swiper.params.rewind) {\n          swiper.slidePrev(speed, true, true);\n          emit('autoplay');\n        } else if (!swiper.params.autoplay.stopOnLastSlide) {\n          swiper.slideTo(swiper.slides.length - 1, speed, true, true);\n          emit('autoplay');\n        }\n      } else {\n        if (!swiper.isEnd || swiper.params.loop || swiper.params.rewind) {\n          swiper.slideNext(speed, true, true);\n          emit('autoplay');\n        } else if (!swiper.params.autoplay.stopOnLastSlide) {\n          swiper.slideTo(0, speed, true, true);\n          emit('autoplay');\n        }\n      }\n      if (swiper.params.cssMode) {\n        autoplayStartTime = new Date().getTime();\n        requestAnimationFrame(() => {\n          run();\n        });\n      }\n    };\n    if (delay > 0) {\n      clearTimeout(timeout);\n      timeout = setTimeout(() => {\n        proceed();\n      }, delay);\n    } else {\n      requestAnimationFrame(() => {\n        proceed();\n      });\n    }\n\n    // eslint-disable-next-line\n    return delay;\n  };\n  const start = () => {\n    autoplayStartTime = new Date().getTime();\n    swiper.autoplay.running = true;\n    run();\n    emit('autoplayStart');\n  };\n  const stop = () => {\n    swiper.autoplay.running = false;\n    clearTimeout(timeout);\n    cancelAnimationFrame(raf);\n    emit('autoplayStop');\n  };\n  const pause = (internal, reset) => {\n    if (swiper.destroyed || !swiper.autoplay.running) return;\n    clearTimeout(timeout);\n    if (!internal) {\n      pausedByInteraction = true;\n    }\n    const proceed = () => {\n      emit('autoplayPause');\n      if (swiper.params.autoplay.waitForTransition) {\n        swiper.wrapperEl.addEventListener('transitionend', onTransitionEnd);\n      } else {\n        resume();\n      }\n    };\n    swiper.autoplay.paused = true;\n    if (reset) {\n      proceed();\n      return;\n    }\n    const delay = autoplayTimeLeft || swiper.params.autoplay.delay;\n    autoplayTimeLeft = delay - (new Date().getTime() - autoplayStartTime);\n    if (swiper.isEnd && autoplayTimeLeft < 0 && !swiper.params.loop) return;\n    if (autoplayTimeLeft < 0) autoplayTimeLeft = 0;\n    proceed();\n  };\n  const resume = () => {\n    if (swiper.isEnd && autoplayTimeLeft < 0 && !swiper.params.loop || swiper.destroyed || !swiper.autoplay.running) return;\n    autoplayStartTime = new Date().getTime();\n    if (pausedByInteraction) {\n      pausedByInteraction = false;\n      run(autoplayTimeLeft);\n    } else {\n      run();\n    }\n    swiper.autoplay.paused = false;\n    emit('autoplayResume');\n  };\n  const onVisibilityChange = () => {\n    if (swiper.destroyed || !swiper.autoplay.running) return;\n    const document = getDocument();\n    if (document.visibilityState === 'hidden') {\n      pausedByInteraction = true;\n      pause(true);\n    }\n    if (document.visibilityState === 'visible') {\n      resume();\n    }\n  };\n  const onPointerEnter = e => {\n    if (e.pointerType !== 'mouse') return;\n    pausedByInteraction = true;\n    pausedByPointerEnter = true;\n    if (swiper.animating || swiper.autoplay.paused) return;\n    pause(true);\n  };\n  const onPointerLeave = e => {\n    if (e.pointerType !== 'mouse') return;\n    pausedByPointerEnter = false;\n    if (swiper.autoplay.paused) {\n      resume();\n    }\n  };\n  const attachMouseEvents = () => {\n    if (swiper.params.autoplay.pauseOnMouseEnter) {\n      swiper.el.addEventListener('pointerenter', onPointerEnter);\n      swiper.el.addEventListener('pointerleave', onPointerLeave);\n    }\n  };\n  const detachMouseEvents = () => {\n    if (swiper.el && typeof swiper.el !== 'string') {\n      swiper.el.removeEventListener('pointerenter', onPointerEnter);\n      swiper.el.removeEventListener('pointerleave', onPointerLeave);\n    }\n  };\n  const attachDocumentEvents = () => {\n    const document = getDocument();\n    document.addEventListener('visibilitychange', onVisibilityChange);\n  };\n  const detachDocumentEvents = () => {\n    const document = getDocument();\n    document.removeEventListener('visibilitychange', onVisibilityChange);\n  };\n  on('init', () => {\n    if (swiper.params.autoplay.enabled) {\n      attachMouseEvents();\n      attachDocumentEvents();\n      start();\n    }\n  });\n  on('destroy', () => {\n    detachMouseEvents();\n    detachDocumentEvents();\n    if (swiper.autoplay.running) {\n      stop();\n    }\n  });\n  on('_freeModeStaticRelease', () => {\n    if (pausedByTouch || pausedByInteraction) {\n      resume();\n    }\n  });\n  on('_freeModeNoMomentumRelease', () => {\n    if (!swiper.params.autoplay.disableOnInteraction) {\n      pause(true, true);\n    } else {\n      stop();\n    }\n  });\n  on('beforeTransitionStart', (_s, speed, internal) => {\n    if (swiper.destroyed || !swiper.autoplay.running) return;\n    if (internal || !swiper.params.autoplay.disableOnInteraction) {\n      pause(true, true);\n    } else {\n      stop();\n    }\n  });\n  on('sliderFirstMove', () => {\n    if (swiper.destroyed || !swiper.autoplay.running) return;\n    if (swiper.params.autoplay.disableOnInteraction) {\n      stop();\n      return;\n    }\n    isTouched = true;\n    pausedByTouch = false;\n    pausedByInteraction = false;\n    touchStartTimeout = setTimeout(() => {\n      pausedByInteraction = true;\n      pausedByTouch = true;\n      pause(true);\n    }, 200);\n  });\n  on('touchEnd', () => {\n    if (swiper.destroyed || !swiper.autoplay.running || !isTouched) return;\n    clearTimeout(touchStartTimeout);\n    clearTimeout(timeout);\n    if (swiper.params.autoplay.disableOnInteraction) {\n      pausedByTouch = false;\n      isTouched = false;\n      return;\n    }\n    if (pausedByTouch && swiper.params.cssMode) resume();\n    pausedByTouch = false;\n    isTouched = false;\n  });\n  on('slideChange', () => {\n    if (swiper.destroyed || !swiper.autoplay.running) return;\n    if (swiper.autoplay.paused) {\n      autoplayTimeLeft = getTotalDelay();\n      autoplayDelayTotal = getTotalDelay();\n    }\n  });\n  Object.assign(swiper.autoplay, {\n    start,\n    stop,\n    pause,\n    resume\n  });\n}\n\nexport { Autoplay as default };\n","import * as Sentry from '@sentry/browser';\nimport Swiper from 'swiper';\nimport { Navigation, Autoplay } from 'swiper/modules';\n\n/**\n * Possible options to define in the template:\n *\n * Space between each slide item, in px (mandatory):\n *   data-swiper-space-between-sm-down=\"10\"\n *   data-swiper-space-between-sm-up=\"20\"\n *   data-swiper-space-between-md-up=\"24\"\n *   data-swiper-space-between-lg-up=\"32\"\n */\nexport default function () {\n    /** @type NodeListOf<HTMLElement> */\n    const carouselEls = document.querySelectorAll('.swiper');\n\n    carouselEls.forEach((carouselEl) => {\n        const spaceBetweenFallback = 24;\n\n        const options = {\n            spaceBetweenSmDown: carouselEl.dataset.swiperSpaceBetweenSmDown,\n            spaceBetweenSmUp: carouselEl.dataset.swiperSpaceBetweenSmUp,\n            spaceBetweenMdUp: carouselEl.dataset.swiperSpaceBetweenMdUp,\n            spaceBetweenLgUp: carouselEl.dataset.swiperSpaceBetweenLgUp,\n        };\n\n        Object.keys(options).forEach((key) => {\n            if (typeof options[key] !== 'string') {\n                options[key] = spaceBetweenFallback;\n                Sentry.captureMessage(\n                    'Missing or wrong data-swiper-space-between-* attribute',\n                    {\n                        level: 'error',\n                    },\n                );\n            }\n        });\n\n        let autoplayOptions = false;\n        if (carouselEl.dataset.swiperAutoplayDelay) {\n            autoplayOptions = {\n                delay: carouselEl.dataset.swiperAutoplayDelay,\n            };\n        }\n\n        // eslint-disable-next-line no-new\n        new Swiper(carouselEl, {\n            modules: [\n                Navigation,\n                Autoplay,\n            ],\n            navigation: {\n                prevEl: '.swiper-button-prev',\n                nextEl: '.swiper-button-next',\n                addIcons: false,\n            },\n            loop: !!carouselEl.dataset.swiperLoop,\n            speed: carouselEl.dataset.swiperSpeed || 300,\n            slidesPerView: 'auto',\n            spaceBetween: options.spaceBetweenSmDown,\n            autoplay: autoplayOptions,\n            breakpoints: {\n                576: {\n                    spaceBetween: options.spaceBetweenSmUp,\n                },\n                768: {\n                    spaceBetween: options.spaceBetweenMdUp,\n                },\n                1024: {\n                    spaceBetween: options.spaceBetweenLgUp,\n                },\n            },\n        });\n    });\n}\n","import { scrollTo } from 'scroll-js';\n\nconst removeActiveClass = (wrap, className) => {\n    const contents = wrap.querySelectorAll(`.${className}`);\n    contents.forEach((el) => el.classList.remove(className));\n};\n\nconst handleItemClick = async (wrap, item) => {\n    const LG_UP = 1024;\n    const HEADER_HEIGHT_LG_UP = 96;\n    const HEADER_HEIGHT_LG_DOWN = 48;\n\n    // Update tab item class\n    removeActiveClass(wrap, 'tabs__item--active');\n    item.classList.add('tabs__item--active');\n\n    // Center active tab item\n    const itemWidth = item.offsetWidth;\n    const wrapWidth = item.parentNode.offsetWidth;\n    item.parentNode.scrollLeft = item.offsetLeft - (wrapWidth / 2) + (itemWidth / 2);\n\n    // Scroll to beginning of content\n    await scrollTo(\n        document.body,\n        {\n            behavior: 'smooth',\n            top: wrap.offsetTop - (window.innerWidth\n            >= LG_UP ? HEADER_HEIGHT_LG_UP : HEADER_HEIGHT_LG_DOWN),\n        },\n    );\n\n    // Update tab content active class\n    removeActiveClass(wrap, 'tabs__content--active');\n    const content = wrap.querySelector(`[data-tabs-content=${item.dataset.tabsItem}]`);\n    content.classList.add('tabs__content--active');\n};\n\nconst tabs = () => {\n    const wrap = document.querySelector('.tabs__wrap');\n    if (wrap) {\n        const items = wrap.querySelectorAll('[data-tabs-item]');\n        items.forEach((item) => {\n            item.addEventListener(\n                'click',\n                () => handleItemClick(wrap, item),\n            );\n        });\n    }\n};\n\nexport default tabs;\n","import axios from './lib/axios.js';\n\n// This module is intended to unwrap Axios default export as named.\n// Keep top-level export same with static properties\n// so that it can keep same with es module or cjs\nconst {\n  Axios,\n  AxiosError,\n  CanceledError,\n  isCancel,\n  CancelToken,\n  VERSION,\n  all,\n  Cancel,\n  isAxiosError,\n  spread,\n  toFormData,\n  AxiosHeaders,\n  HttpStatusCode,\n  formToJSON,\n  getAdapter,\n  mergeConfig,\n  create,\n} = axios;\n\nexport {\n  axios as default,\n  create,\n  Axios,\n  AxiosError,\n  CanceledError,\n  isCancel,\n  CancelToken,\n  VERSION,\n  all,\n  Cancel,\n  isAxiosError,\n  spread,\n  toFormData,\n  AxiosHeaders,\n  HttpStatusCode,\n  formToJSON,\n  getAdapter,\n  mergeConfig,\n};\n","export default class IndicationPriceCalculator {\n    /**\n    * @param {Element|undefined} formElement\n    */\n    formElement\n\n    /**\n    * @type {Object<string, Object<string, number>>} prices - prices[buildingHeatedArea][waterHeating]\n    */\n\n    // Prices per KfW-458 reform: flat per kW class, identical with/without water\n    // heating. Derivation (Florian Stefanides, 15.07.2026): net ticket (basis\n    // + 16.100 € installation) × 1,19 VAT = gross, minus 22.400 € max subsidy\n    // (80% of the 28.000 € eligible-cost cap), rounded up to \"ab\" values.\n    // 12 kW class exists (34.032,81 € gross → 11.632,81 € → ab 11.700 €) but no\n    // bracket maps to it yet. Must stay in sync with tco-calculator src/lib/data/mappings.ts.\n    static prices = {\n        '0_100': {\n            'yes': {\n                'price': 8700,\n                'kw': 5\n            },\n            'no': {\n                'price': 8700,\n                'kw': 5\n            }\n        },\n        '101_150': {\n            'yes': {\n                'price': 8700,\n                'kw': 7\n            },\n            'no': {\n                'price': 8700,\n                'kw': 7\n            }\n        },\n        '151_200': {\n            'yes': {\n                'price': 9500,\n                'kw': 9\n            },\n            'no': {\n                'price': 9500,\n                'kw': 9\n            }\n        },\n        '201_300': {\n            'yes': {\n                'price': 9500,\n                'kw': 10\n            },\n            'no': {\n                'price': 9500,\n                'kw': 10\n            }\n        }\n    }\n\n    constructor(id) {\n        this.formElement = document.querySelector(`[data-calculator-id=\"${id}\"]`)\n        this.formElement.addEventListener('change', this.updatePrice.bind(this))\n    }\n\n    updatePrice() {\n        const priceElement = this.formElement.querySelector('[data-result-price]')\n        const kwElement = this.formElement.querySelector('[data-result-kw]');\n        const buildingHeatedArea = this.formElement.querySelector('[name=building_heated_area]').value\n        const waterHeating = this.formElement.querySelector('[name=water_heating]').value\n\n        const { price, kw } = IndicationPriceCalculator.prices[buildingHeatedArea][waterHeating];\n\n        priceElement.innerHTML = Intl.NumberFormat(\n            'de-DE',\n            {\n                style: 'currency',\n                currency: 'EUR',\n                minimumFractionDigits: 0,\n                maximumFractionDigits: 0\n            }\n        ).format(price);\n\n        kwElement.innerHTML = `${kw} kW`;\n    }\n}\n","/**\n * This approach is based on how VWO is integrated in Google Tag Manager:\n * https://help.vwo.com/hc/en-us/articles/900005594183-Integrating-VWO-With-GA4-via-Google-Tag-Manager\n*/\n\nimport Cookies from 'js-cookie';\nimport { localStorageCheck } from './localStorageCheck';\n\n/*\n    Gets the variation ID, which is either in the cookie or window object,\n    depending on what type of campaign (split or ab).\n */\nconst getVwoVariationId = (vwoExp, campaignId) => {\n    let variationId = Cookies.get(`_vis_opt_exp_${campaignId}_combi`);\n\n    if (typeof vwoExp[campaignId].combination_chosen !== 'undefined') {\n        variationId = vwoExp[campaignId].combination_chosen;\n    }\n\n    return variationId;\n};\n\n/*\n    Returns an array of all active VWO campaign and variation IDs\n */\nconst getVwoIds = () => {\n    const ids = [];\n\n    const { _vwo_exp_ids: vwoExpIds, _vwo_exp: vwoExp } = window;\n    if (vwoExpIds && vwoExp) {\n        vwoExpIds.forEach((id) => {\n            // VWO sets ready=true for running campaigns\n            if (vwoExp[id] && vwoExp[id].ready) {\n                const variationId = getVwoVariationId(vwoExp, id);\n                if (typeof variationId !== 'undefined') {\n                    ids.push({\n                        campaignId: id,\n                        variationId,\n                    });\n                }\n            }\n        });\n    }\n\n    return ids;\n};\n\n/*\n    Updates the session storage to include active VWO campaigns\n */\nconst updateSession = () => {\n    const { abTestSessionInitialised } = window;\n    if (abTestSessionInitialised === true) {\n        return;\n    }\n\n    const key = 'ab_test_session';\n    let session = sessionStorage.getItem(key);\n    if (!session) {\n        session = [];\n    } else {\n        session = JSON.parse(session);\n    }\n\n    const ids = getVwoIds();\n    if (ids.length > 0) {\n        session.push(...ids);\n        sessionStorage.setItem(key, JSON.stringify(session));\n        window.abTestSessionInitialised = true;\n    }\n};\n\nconst run = () => {\n    if (!localStorageCheck.isEnabled()) {\n        return;\n    }\n\n    // We need to wait for VWO to properly initialise, that's why we push it in the queue\n    window._vis_opt_queue = window._vis_opt_queue || []; // eslint-disable-line no-underscore-dangle\n    window._vis_opt_queue.push(updateSession); // eslint-disable-line no-underscore-dangle\n};\n\nexport default run;\n","import * as Sentry from '@sentry/browser';\nimport getSentryEnv from './utils/sentryEnv';\nimport axios from 'axios';\n\n// Not sure if this is useful but I followed\n// https://docs.sentry.io/platforms/javascript/guides/vue/best-practices/micro-frontends/\nconst EXTRA_KEY = 'ROUTE_TO';\n\nconst transport = Sentry.makeMultiplexedTransport(Sentry.makeFetchTransport, args => {\n  const event = args.getEvent();\n  if (\n    event &&\n    event.extra &&\n    EXTRA_KEY in event.extra &&\n    Array.isArray(event.extra[EXTRA_KEY])\n  ) {\n    return event.extra[EXTRA_KEY];\n  }\n  return [];\n});\n\nSentry.init({\n    dsn: 'https://cd8a34b1f85f4d08b726ca07e6f6bd43@sentry.io/77802',\n    transport,\n    environment: getSentryEnv(),\n    integrations: [\n        Sentry.browserTracingIntegration({\n            enableInp: true,\n        }),\n        Sentry.moduleMetadataIntegration(),\n    ],\n\n    ignoreErrors: [\n        // Meta in-app browser autofill bridge (Facebook in-app browser)\n        /setContactAutofillValuesFromBridge/,\n        // iom (Cookiebot / consent tooling — historical filters, were silently dead before)\n        /ReferenceError: Can't find variable: iom/,\n        /ReferenceError: iom is not defined/,\n        // Misc third-party / in-app browser noise\n        /Error invoking .*: Java object is gone/,\n        /\\(intermediate value\\)\\.resolve is undefined/,\n        // Browser-fired XHR aborts (navigation away mid-request)\n        /AxiosError: Request aborted/,\n    ],\n\n    beforeSend: event => {\n        if (event?.exception?.values?.[0].stacktrace?.frames) {\n          const frames = event.exception.values[0].stacktrace.frames;\n          // Find the last frame with module metadata containing a DSN\n          const routeTo = frames\n            .filter(frame => frame.module_metadata && frame.module_metadata.dsn)\n            .map(v => v.module_metadata)\n            .slice(-1); // using top frame only - you may want to customize this according to your needs\n\n          if (routeTo.length) {\n            event.extra = {\n              ...event.extra,\n              [EXTRA_KEY]: routeTo,\n            };\n          }\n        }\n\n        return event;\n      },\n    // We are keeping the tracing rate low for now, to not exceed our quota.\n    tracesSampleRate: 0.01,\n\n    // We only use tracing for frontend performance monitoring.\n    // Tracing requests is not really relevant to us at the moment.\n    tracePropagationTargets: [],\n});\n\n/**\n * Polyfills (mostly for IE11)\n */\nimport 'picturefill';\n\n/**\n * Features\n */\nimport Navigation from './features/Navigation';\nimport AppLoader from './features/AppLoader';\nimport DailyLeads from './features/DailyLeads';\nimport JobForm from './features/JobForm';\nimport TrustPilot from './features/TrustPilot';\nimport NewsletterForm from './features/NewsletterForm';\nimport ListFilter from './features/ListFilter';\nimport TechnologyDesktop from './features/Technology';\nimport VideoContent from './features/VideoContent';\nimport VideoPlayerHandler from './features/videoPlayerHandler';\nimport customerReferral from './features/CustomerReferral';\nimport customerReferralResult from './features/CustomerReferralResult';\nimport customerReferralEmail from './features/CustomerReferralEmail';\nimport conversionBanner from './features/ConversionBanner';\nimport invertCTA from './features/InvertCTA';\nimport header from './features/Header';\nimport scrollTo from './features/ScrollTo';\nimport lazyLoad from './features/LazyLoad';\nimport tracking from './features/Tracking';\nimport recruitingChannel from './features/RecruitingChannel';\nimport usercentricsConfig from './features/UsercentricsConfig';\nimport accordion from './features/Accordion';\nimport engagementOnPageLeadForm from './features/EngagementOnPageLeadForm';\nimport notificationBanner from './features/NotificationBanner';\nimport modal from './features/Modal';\nimport popover from './features/Popover';\nimport copyToClipboard from './features/CopyToClipboard';\nimport antiScam from './features/AntiScam';\nimport monitorCssAvailability from './features/MonitorCssAvailability';\nimport carousel from './features/Carousel';\nimport tabs from './features/Tabs';\nimport iframeAutoHeight from './features/IframeAutoHeight';\nimport ZipCodeForm from './features/ZipCodeForm';\nimport PressMailingForm from './features/PressMailingForm';\nimport IndicationPriceCalculator from './features/IndicationPriceCalculator';\nimport FlexRateCalculator from './features/FlexRateCalculator';\n\nimport abTestSession from './utils/abTestSession';\n\n/**\n * AB Tests\n */\n//\n\n/**\n * Exposed globally, for on-demand use.\n */\nwindow.TNS.website = {\n    // Classes\n    AppLoader,\n    DailyLeads,\n    JobForm,\n    ListFilter,\n    VideoContent,\n    ZipCodeForm,\n    PressMailingForm,\n    IndicationPriceCalculator,\n    FlexRateCalculator,\n\n    // Functions\n    customerReferral,\n    customerReferralResult,\n    customerReferralEmail,\n};\n\n/**\n * Executed on load of every pages.\n */\nconst setup = () => {\n    /**\n     * Navigation\n     */\n    if(document.querySelector('[data-navigation')) {\n        new Navigation();\n    }\n\n    /**\n     * Newsletter\n     */\n    if (document.querySelector('[data-form-newsletter]')) {\n        // eslint-disable-next-line no-new\n        new NewsletterForm();\n    }\n\n    /**\n     * Technology\n     */\n    if (document.querySelector('[data-technology-desktop]')) {\n        // eslint-disable-next-line no-new\n        new TechnologyDesktop();\n    }\n\n    /**\n     * Video player\n     */\n    if (document.querySelector('[data-video-player]')) {\n        // eslint-disable-next-line no-new\n        new VideoPlayerHandler();\n    }\n\n    /**\n     * TrustPilot\n     */\n    if (document.querySelector('[data-trustpilot]')) {\n        // eslint-disable-next-line no-new\n        new TrustPilot();\n    }\n\n    /**\n     * Engagement On Page Lead Form\n     */\n    const engagementForms = [\n        ...document.querySelectorAll('[data-engagement-on-page-lead-form]'),\n    ];\n\n    if (engagementForms.length > 0) {\n        engagementOnPageLeadForm(engagementForms);\n    }\n\n    tracking();\n    recruitingChannel();\n    modal();\n\n    // Antiscam (we keep it hidden in the middle of our bundle)\n    antiScam();\n\n    popover();\n    scrollTo();\n    accordion();\n    usercentricsConfig();\n    lazyLoad();\n    invertCTA();\n    header();\n    conversionBanner();\n    notificationBanner();\n    copyToClipboard();\n    monitorCssAvailability();\n    carousel();\n    tabs();\n    iframeAutoHeight();\n\n    abTestSession();\n\n    // Axios Interceptors\n    axios.interceptors.response.use(function (response) {\n        return response;\n    }, function (error) {\n        Sentry.withScope(scope => {\n            // Add additional information to Sentry\n            if (error.config?.url) {\n                scope.setTag('backend.endpoint', error.config.url);\n            }\n            if (error.response?.status) {\n                scope.setTag('backend.status_code', error.response.status);\n            }\n            if (error.response?.data?.error) {\n                scope.setTag('backend.error', error.response.data.error);\n            }\n\n            // Lower the level for some errors\n            if (\n                error?.response?.status < 500\n                || axios.isCancel(error)\n                || error.message.includes('Network Error')\n                || error.code === \"ERR_NETWORK\"\n            ) {\n                scope.setLevel('warning');\n            }\n\n            // Send to Sentry\n            scope.captureException(error);\n        })\n        // Pass the error to the next handler for UI feedback\n        return Promise.reject(error);\n    });\n\n    // AB Tests\n    //\n};\n\nwindow.addEventListener(\n    'DOMContentLoaded',\n    setup,\n);\n","import { eventFiltersIntegration, functionToStringIntegration, conversationIdIntegration, consoleIntegration, dedupeIntegration, getIntegrationsToSetup, stackParserFromStackParserOptions, setNormalizeStringifier, initAndBind } from '@sentry/core';\nimport { BrowserClient } from './client.js';\nimport { breadcrumbsIntegration } from './integrations/breadcrumbs.js';\nimport { browserApiErrorsIntegration } from './integrations/browserapierrors.js';\nimport { browserSessionIntegration } from './integrations/browsersession.js';\nimport { cultureContextIntegration } from './integrations/culturecontext.js';\nimport { globalHandlersIntegration } from './integrations/globalhandlers.js';\nimport { httpContextIntegration } from './integrations/httpcontext.js';\nimport { linkedErrorsIntegration } from './integrations/linkederrors.js';\nimport { defaultStackParser } from './stack-parsers.js';\nimport { makeFetchTransport } from './transports/fetch.js';\nimport { normalizeStringifyValue } from './normalizeStringifyValue.js';\nimport { checkAndWarnIfIsEmbeddedBrowserExtension } from './utils/detectBrowserExtension.js';\nimport { resolveBrowserTunnelOption } from './utils/managedTunnel.js';\n\nfunction getDefaultIntegrations(_options) {\n  return [\n    eventFiltersIntegration(),\n    functionToStringIntegration(),\n    conversationIdIntegration(),\n    browserApiErrorsIntegration(),\n    breadcrumbsIntegration(),\n    consoleIntegration(),\n    globalHandlersIntegration(),\n    linkedErrorsIntegration(),\n    dedupeIntegration(),\n    httpContextIntegration(),\n    cultureContextIntegration(),\n    browserSessionIntegration()\n  ];\n}\nfunction init(options = {}) {\n  const shouldDisableBecauseIsBrowserExtenstion = !options.skipBrowserExtensionCheck && checkAndWarnIfIsEmbeddedBrowserExtension();\n  let defaultIntegrations = options.defaultIntegrations == null ? getDefaultIntegrations() : options.defaultIntegrations;\n  const integrations = getIntegrationsToSetup({\n    integrations: options.integrations,\n    defaultIntegrations\n  });\n  const clientOptions = {\n    ...options,\n    ...resolveBrowserTunnelOption(options),\n    enabled: shouldDisableBecauseIsBrowserExtenstion ? false : options.enabled,\n    stackParser: stackParserFromStackParserOptions(options.stackParser || defaultStackParser),\n    integrations,\n    transport: options.transport || makeFetchTransport\n  };\n  setNormalizeStringifier(normalizeStringifyValue);\n  return initAndBind(BrowserClient, clientOptions);\n}\nfunction forceLoad() {\n}\nfunction onLoad(callback) {\n  callback();\n}\n\nexport { forceLoad, getDefaultIntegrations, init, onLoad };\n//# sourceMappingURL=sdk.js.map\n","import { getLocationHref } from '@sentry/browser-utils';\nimport { consoleSandbox } from '@sentry/core';\nimport { DEBUG_BUILD } from '../debug-build.js';\nimport { WINDOW } from '../helpers.js';\n\nfunction checkAndWarnIfIsEmbeddedBrowserExtension() {\n  if (_isEmbeddedBrowserExtension()) {\n    if (DEBUG_BUILD) {\n      consoleSandbox(() => {\n        console.error(\n          \"[Sentry] You cannot use Sentry.init() in a browser extension, see: https://docs.sentry.io/platforms/javascript/best-practices/browser-extensions/\"\n        );\n      });\n    }\n    return true;\n  }\n  return false;\n}\nfunction _isEmbeddedBrowserExtension() {\n  if (typeof WINDOW.window === \"undefined\") {\n    return false;\n  }\n  const _window = WINDOW;\n  if (_window.nw) {\n    return false;\n  }\n  const extensionObject = _window[\"chrome\"] || _window[\"browser\"];\n  if (!extensionObject?.runtime?.id) {\n    return false;\n  }\n  const href = getLocationHref();\n  const isDedicatedExtensionPage = WINDOW === WINDOW.top && /^(?:chrome-extension|moz-extension|ms-browser-extension|safari-web-extension):\\/\\//.test(href);\n  return !isDedicatedExtensionPage;\n}\n\nexport { checkAndWarnIfIsEmbeddedBrowserExtension };\n//# sourceMappingURL=detectBrowserExtension.js.map\n","import { GEN_AI_CONVERSATION_ID } from '@sentry/conventions/attributes';\nimport { getCurrentScope, getIsolationScope } from '../currentScopes.js';\nimport { defineIntegration } from '../integration.js';\nimport { spanToStaticSpanJSON } from '../utils/spanUtils.js';\n\nconst INTEGRATION_NAME = \"ConversationId\";\nconst _conversationIdIntegration = (() => {\n  return {\n    name: INTEGRATION_NAME,\n    setup(client) {\n      client.on(\"spanStart\", (span) => {\n        const scopeData = getCurrentScope().getScopeData();\n        const isolationScopeData = getIsolationScope().getScopeData();\n        const conversationId = scopeData.conversationId || isolationScopeData.conversationId;\n        if (conversationId) {\n          const { op, data: attributes, description: name } = spanToStaticSpanJSON(span);\n          if (!op?.startsWith(\"gen_ai.\") && !attributes[\"ai.operationId\"] && !name?.startsWith(\"ai.\")) {\n            return;\n          }\n          span.setAttribute(GEN_AI_CONVERSATION_ID, conversationId);\n        }\n      });\n    }\n  };\n});\nconst conversationIdIntegration = defineIntegration(_conversationIdIntegration);\n\nexport { conversationIdIntegration };\n//# sourceMappingURL=conversationId.js.map\n","import { defineIntegration, _INTERNAL_filterKeyValueData, safeSetSpanJSONAttributes, filterCollectedUrl } from '@sentry/core';\nimport { WINDOW, getHttpRequestData } from '../helpers.js';\nimport { HTTP_REQUEST_HEADER_KEY_BASE, URL_FULL, SENTRY_OP, SENTRY_IS_LOCALHOST, USER_AGENT_ORIGINAL } from '@sentry/conventions/attributes';\n\nconst httpContextIntegration = defineIntegration(() => {\n  return {\n    name: \"HttpContext\",\n    preprocessEvent(event, _hint, client) {\n      if (!WINDOW.navigator && !WINDOW.location && !WINDOW.document) {\n        return;\n      }\n      const { url, headers: collectedHeaders } = getHttpRequestData(client);\n      const behavior = client.getDataCollectionOptions().httpHeaders.request;\n      const userHeaders = Object.entries(event.request?.headers ?? {}).filter(([key]) => !(key in collectedHeaders));\n      const headers = {\n        ..._INTERNAL_filterKeyValueData(collectedHeaders, behavior),\n        ...Object.fromEntries(userHeaders)\n      };\n      event.request = {\n        url: filterCollectedUrl(url, client),\n        ...event.request,\n        ...Object.keys(headers).length > 0 ? { headers } : { headers: void 0 }\n      };\n    },\n    processSpan(span, client) {\n      if (!WINDOW.navigator && !WINDOW.location && !WINDOW.document) {\n        return;\n      }\n      const reqData = getHttpRequestData(client);\n      const headers = _INTERNAL_filterKeyValueData(\n        reqData.headers,\n        client.getDataCollectionOptions().httpHeaders.request\n      );\n      const referer = headers[\"Referer\"];\n      const { hostname, protocol } = WINDOW.location || {};\n      safeSetSpanJSONAttributes(span, {\n        // This attribute is used by the \"Filter out events from legacy browsers and crawlers\" features on the Sentry backend.\n        // Therefore, it's set on every span.\n        [USER_AGENT_ORIGINAL]: headers[\"User-Agent\"],\n        // Likewise for the \"Filter out localhost events\" feature. Deliberately inlined rather than\n        // sharing the server-side helper, which costs bundle size for request headers and IPs that\n        // don't exist here. Mirrors Relay's localhost filter (relay-filter/src/localhost.rs).\n        [SENTRY_IS_LOCALHOST]: protocol === \"file:\" || hostname === \"localhost\" || hostname === \"127.0.0.1\" || // `location.hostname` keeps the brackets for IPv6 hosts, so this is `[::1]`, not `::1`.\n        hostname === \"[::1]\" || !!hostname?.endsWith(\".localhost\"),\n        // These attributes, we only need on the segment span (analogous to the `request` context for events)\n        ...span.is_segment && {\n          // Coerce empty string to undefined so the helper's nullish check drops it,\n          // rather than writing an empty `url.full` attribute onto the span.\n          [URL_FULL]: span.attributes?.[SENTRY_OP] !== \"http.client\" ? filterCollectedUrl(reqData.url) : void 0,\n          [`${HTTP_REQUEST_HEADER_KEY_BASE}.referer`]: referer ? [referer] : void 0\n        }\n      });\n    }\n  };\n});\n\nexport { httpContextIntegration };\n//# sourceMappingURL=httpcontext.js.map\n","import { isClientClosed } from './client.js';\nimport { getClient, getCurrentScope } from './currentScopes.js';\nimport { DEBUG_BUILD } from './debug-build.js';\nimport { consoleSandbox, debug } from './utils/debug-logger.js';\n\nfunction initAndBind(clientClass, options) {\n  if (options.debug === true) {\n    if (DEBUG_BUILD) {\n      debug.enable();\n    } else {\n      consoleSandbox(() => {\n        console.warn(\"[Sentry] Cannot initialize SDK with `debug` option using a non-debug bundle.\");\n      });\n    }\n  }\n  warnIfClientIsActive();\n  const scope = getCurrentScope();\n  scope.update(options.initialScope);\n  const client = new clientClass(options);\n  setCurrentClient(client);\n  client.init();\n  return client;\n}\nfunction getActiveClient() {\n  const client = getClient();\n  return client && !isClientClosed(client) ? client : void 0;\n}\nfunction warnIfClientIsActive() {\n  if (getActiveClient()) {\n    consoleSandbox(() => {\n      console.warn(\n        \"[Sentry] `Sentry.init()` was called more than once. The new client replaces the active client, but the active client is not closed, so state from both can mix. Call `Sentry.init()` only once, or call `await Sentry.close()` before you call it again.\"\n      );\n    });\n  }\n}\nfunction setCurrentClient(client) {\n  getCurrentScope().setClient(client);\n}\n\nexport { getActiveClient, initAndBind, setCurrentClient, warnIfClientIsActive };\n//# sourceMappingURL=sdk.js.map\n","import { getActiveSpan, getRootSpan, spanToJSON, debug, SPAN_STATUS_ERROR } from '@sentry/core';\nimport { DEBUG_BUILD } from '../debug-build.js';\nimport { WINDOW } from '../helpers.js';\nimport { SENTRY_OP, SENTRY_CANCELLATION_REASON } from '@sentry/conventions/attributes';\n\nfunction registerBackgroundTabDetection() {\n  if (WINDOW.document) {\n    WINDOW.document.addEventListener(\"visibilitychange\", () => {\n      const activeSpan = getActiveSpan();\n      if (!activeSpan) {\n        return;\n      }\n      const rootSpan = getRootSpan(activeSpan);\n      if (WINDOW.document.hidden && rootSpan) {\n        const cancelledStatus = \"cancelled\";\n        const {\n          attributes: { [SENTRY_OP]: op },\n          status\n        } = spanToJSON(rootSpan);\n        if (DEBUG_BUILD) {\n          debug.log(`[Tracing] Transaction: ${cancelledStatus} -> since tab moved to the background, op: ${op}`);\n        }\n        if (status === \"ok\") {\n          rootSpan.setStatus({ code: SPAN_STATUS_ERROR, message: cancelledStatus });\n        }\n        rootSpan.setAttribute(SENTRY_CANCELLATION_REASON, \"document.hidden\");\n        rootSpan.end();\n      }\n    });\n  } else {\n    DEBUG_BUILD && debug.warn(\"[Tracing] Could not set up background tab detection due to lack of global document\");\n  }\n}\n\nexport { registerBackgroundTabDetection };\n//# sourceMappingURL=backgroundtab.js.map\n","import { defineIntegration } from '../integration.js';\nimport { stripMetadataFromStackFrames, addMetadataToStackFrames } from '../metadata.js';\nimport { forEachEnvelopeItem } from '../utils/envelope.js';\n\nconst moduleMetadataIntegration = defineIntegration(() => {\n  return {\n    name: \"ModuleMetadata\",\n    setup(client) {\n      client.on(\"beforeEnvelope\", (envelope) => {\n        forEachEnvelopeItem(envelope, (item, type) => {\n          if (type === \"event\") {\n            const event = Array.isArray(item) ? item[1] : void 0;\n            if (event) {\n              stripMetadataFromStackFrames(event);\n              item[1] = event;\n            }\n          }\n        });\n      });\n      client.on(\"applyFrameMetadata\", (event) => {\n        if (event.type) {\n          return;\n        }\n        const stackParser = client.getOptions().stackParser;\n        addMetadataToStackFrames(stackParser, event);\n      });\n    }\n  };\n});\n\nexport { moduleMetadataIntegration };\n//# sourceMappingURL=moduleMetadata.js.map\n","import axios from 'axios';\nimport { captureException, withScope } from '@sentry/browser';\n\nexport default class AppLoader {\n    constructor(appUrl, scriptType = 'text/javascript') {\n        this.appUrl = appUrl;\n        this.scriptType = scriptType;\n        this.urlsJs = null;\n        this.urlsCss = null;\n        this.getDocument();\n    }\n\n    extractUrlsFromHtml(html, mode) {\n        if (!html) {\n            return [];\n        }\n        const router = {\n            js: {\n                tagName: 'script',\n                attribute: 'src',\n            },\n            css: {\n                tagName: 'link',\n                attribute: 'href',\n            },\n        };\n\n        const urls = [];\n        const parser = new DOMParser();\n        const parsed = parser.parseFromString(\n            html,\n            'text/html',\n        );\n\n        const elements = parsed.getElementsByTagName(router[mode].tagName);\n\n        Array.from(elements).forEach((element) => {\n            const url = element[router[mode].attribute];\n\n            if (\n                !urls.includes(url)\n                && url.endsWith(mode)\n            ) {\n                urls.push(url);\n            }\n        });\n\n        return urls;\n    }\n\n    getDocument() {\n        axios.get(this.appUrl)\n            .then((response) => {\n                this.urlsJs = this.extractUrlsFromHtml(response?.data, 'js');\n                this.urlsCss = this.extractUrlsFromHtml(response?.data, 'css');\n                this.loaderJs(this.urlsJs);\n                this.loaderCss(this.urlsCss);\n            }).catch(() => {\n                // Not handled for now\n            });\n    }\n\n    loaderJs(urls) {\n        urls.forEach((url) => {\n            const script = document.createElement('script');\n            script.src = url;\n\n            /**\n             * We can use 'module' and 'text/javascript' for script.type\n             * Modern bundlers like Vite.js supports ES modules for their bundles.\n             * So, we should use 'module' for script.type\n             * For legacy cases we can use 'text/javascript'.\n             */\n            script.type = this.scriptType;\n            document.getElementsByTagName('head')[0].appendChild(script);\n        });\n    }\n\n    loaderCss(urls) {\n        urls.forEach((url) => {\n            const link = document.createElement('link');\n            link.href = url;\n            link.rel = 'stylesheet';\n            link.type = 'text/css';\n            document.getElementsByTagName('head')[0].appendChild(link);\n        });\n    }\n}\n","import axios from 'axios';\nimport Cookies from 'js-cookie';\n\nexport default class DailyLeads {\n    constructor() {\n        this.STATISTICS_ENDPOINT = window.TNS.config.dailyLeads.apiUrl;\n        this.COOKIE_NAME = 'daily-leads';\n\n        const cookieLeads = Cookies.get(this.COOKIE_NAME);\n        if (cookieLeads) {\n            this.updateDailyLeadsDigits(cookieLeads);\n        } else {\n            this.load();\n        }\n    }\n\n    load() {\n        return axios.get(\n            this.STATISTICS_ENDPOINT,\n        ).then(({ data }) => {\n            const leads = data.created_today.toString();\n            this.updateDailyLeadsDigits(leads);\n\n            const inOneMinute = new Date(new Date().getTime() + 60 * 1000);\n            Cookies.set(this.COOKIE_NAME, leads, {\n                expires: inOneMinute,\n            });\n        }).catch(() => {\n            // Silently fail\n        });\n    }\n\n    updateDailyLeadsDigits(digits) {\n        const digitElemInsertStartIndex = 4 - digits.length;\n        const dailyLeadsElems = document.querySelectorAll('[data-daily-leads]');\n\n        dailyLeadsElems.forEach((dailyLeadsElem) => {\n            const el = dailyLeadsElem;\n\n            const dailyLeadsElemItems = el.querySelectorAll('.daily-leads__digit');\n            let digitIndex = 0;\n\n            dailyLeadsElemItems.forEach(\n                (digitElem, index) => {\n                    if (index >= digitElemInsertStartIndex) {\n                        // eslint-disable-next-line no-param-reassign\n                        digitElem.innerHTML = digits[digitIndex];\n                        digitIndex += 1;\n                    }\n                },\n            );\n\n            el.style.display = 'block';\n        });\n    }\n}\n","import Cookies from 'js-cookie';\nimport MicroModal from 'micromodal';\nimport { scrollTo } from 'scroll-js';\nimport { captureException } from '@sentry/browser';\nimport validate from 'validate.js';\nimport { localStorageCheck } from '../utils/localStorageCheck';\nimport { eT } from './EventTracking';\n\nexport default class JobForm {\n    constructor(translations = {}) {\n        this.translations = translations;\n\n        this.API_URL = window.TNS.config.jobForm.apiUrl;\n        this.API_HEADERS = {\n            Accept: 'application/json',\n        };\n\n        this.form = document.getElementById('job_form');\n\n        this.form.addEventListener(\n            'submit',\n            (ev) => {\n                ev.preventDefault();\n                this.handleFormSubmit(this.form);\n            },\n        );\n\n        this.inputs = this.form.querySelectorAll(\n            'input[aria-required=\"true\"]',\n        );\n\n        this.inputs.forEach((input) => {\n            input.addEventListener('change', () => {\n                const errors = validate(this.form, this.constraints) || {};\n                this.handleClientErrorMessagesDisplay(input, errors[input.name]);\n            });\n        });\n\n        this.attributeInputs = this.form.querySelectorAll(\n            '[data-custom-attribute]',\n        );\n\n        this.submitBtn = this.form.querySelector(\n            'button[type=\"submit\"]',\n        );\n\n        const uploadBoxEl = this.form.querySelector(\n            '[data-job-form-upload-box]',\n        );\n\n        this.uploadBoxInputEl = uploadBoxEl.querySelector(\n            'input[type=file]',\n        );\n\n        this.uploadBoxBtnEl = uploadBoxEl.querySelector(\n            '[data-job-form-upload-btn]',\n        );\n\n        this.uploadBoxStatusAmountEl = uploadBoxEl.querySelector(\n            '[data-job-form-upload-box-status-amount]',\n        );\n\n        this.uploadBoxStatusFilesListEl = uploadBoxEl.querySelector(\n            '[data-job-form-upload-box-files-list]',\n        );\n\n        this.formInfoBoxServerErrorGlobal = this.form.querySelector(\n            '[data-job-form-server-error-global]',\n        );\n\n        this.constraints = {\n            first_name: {\n                presence: true,\n            },\n            last_name: {\n                presence: true,\n            },\n            email: {\n                presence: true,\n                email: true,\n            },\n            phone: {\n                presence: true,\n            },\n            terms: {\n                inclusion: {\n                    within: [true],\n                },\n            },\n            files: {\n                presence: this.uploadBoxInputEl.getAttribute('aria-required') === 'true',\n            },\n            education_other: {\n                presence: false,\n            },\n        };\n\n        this.payloadFiles = [];\n\n        this.init();\n    }\n\n    init() {\n        this.uploadBoxInputEl.addEventListener(\n            'change',\n            () => {\n                this.updateSelectedFilesAmount();\n                this.clearFilesList();\n                this.uploadFiles();\n                this.updateFilesButtonText();\n            },\n        );\n\n        this.initOptionalInputs();\n        this.initOtherInput('#education');\n    }\n\n    initOptionalInputs() {\n        const optionalInputs = this.form.querySelectorAll(\n            '.job-form__optional',\n        );\n\n        optionalInputs.forEach((input) => {\n            input.addEventListener('change', (e) => {\n                e.target.classList.toggle(\n                    'job-form__optional--has-value',\n                    !!e.target.value,\n                );\n            });\n        });\n    }\n\n    initOtherInput(selector) {\n        const input = this.form.querySelector(selector);\n        if (!input || !input.dataset.otherInput) {\n            return;\n        }\n\n        const otherInput = this.form.querySelector(`#${input.dataset.otherInput}`);\n        input.addEventListener('change', (e) => {\n            const isOther = e.target.value === 'other';\n            this.constraints.education_other.presence = isOther;\n\n            const parentEl = otherInput.parentNode.parentNode;\n            parentEl.classList.toggle(\n                'job-form__input-wrap--hidden',\n                !isOther,\n            );\n        });\n    }\n\n    trans(key) {\n        return key in this.translations ? this.translations[key] : key;\n    }\n\n    async uploadFiles() {\n        const url = `${this.API_URL}/personio-upload-document`;\n        const filesArray = Array.from(this.uploadBoxInputEl.files);\n\n        this.payloadFiles = [];\n        this.submitBtn.disabled = true;\n\n        await Promise.all(filesArray.map(async (file) => {\n            const fileEl = document.createElement('div');\n            const fileLabelEl = document.createElement('div');\n            const fileStatusEl = document.createElement('div');\n\n            fileEl.classList.add('job-form__files-list__item');\n            fileLabelEl.classList.add('job-form__files-list__label');\n            fileStatusEl.classList.add('job-form__files-list__status');\n            fileLabelEl.innerText = file.name;\n\n            fileEl.append(fileLabelEl);\n            fileEl.append(fileStatusEl);\n            this.uploadBoxStatusFilesListEl.append(fileEl);\n\n            try {\n                const formData = new FormData();\n                const options = {\n                    method: 'POST',\n                    body: formData,\n                    headers: this.API_HEADERS,\n                };\n\n                formData.append('file', file);\n\n                fileStatusEl.classList.add('job-form__files-list__status--pending');\n\n                const response = await fetch(url, options);\n\n                fileStatusEl.classList.remove('job-form__files-list__status--pending');\n\n                if (!response.ok) {\n                    const errorData = await response.json();\n                    fileStatusEl.innerText = `${this.trans('error')} (${errorData.error.reason})`;\n                    fileStatusEl.classList.add('job-form__files-list__status--error');\n                    return;\n                }\n\n                const responseData = await response.json();\n\n                this.payloadFiles.push({\n                    uuid: responseData.uuid,\n                    original_filename: responseData.original_filename,\n                    category: 'other',\n                });\n\n                fileStatusEl.innerText = this.trans('uploaded');\n                fileStatusEl.classList.add('job-form__files-list__status--success');\n            } catch (error) {\n                captureException(\n                    new Error(\n                        `Error during file upload (${file.name}): ${error.message}`,\n                    ),\n                );\n            }\n        }));\n\n        this.submitBtn.disabled = false;\n    }\n\n    updateSelectedFilesAmount() {\n        const translation = this.trans(\n            this.uploadBoxInputEl.files.length > 1 ? 'files' : 'file',\n        );\n\n        this.uploadBoxStatusAmountEl.innerText = `${this.uploadBoxInputEl.files.length} ${translation}`;\n    }\n\n    clearFilesList() {\n        this.uploadBoxStatusFilesListEl.style.display = 'block';\n        this.uploadBoxStatusFilesListEl.innerText = '';\n    }\n\n    updateFilesButtonText() {\n        this.uploadBoxBtnEl.innerText = this.trans(\n            this.uploadBoxInputEl.files.length > 0 ? 'change_files' : 'select_files',\n        );\n    }\n\n    preparePayload() {\n        const formData = new FormData(this.form);\n\n        const payload = {\n            job_position_id: formData.get('job_position_id'),\n            first_name: formData.get('first_name'),\n            last_name: formData.get('last_name'),\n            email: formData.get('email'),\n            files: this.payloadFiles,\n            attributes: [],\n        };\n\n        const checkboxes = {};\n        this.attributeInputs.forEach((el) => {\n            let { value } = el;\n            if (!value) {\n                return;\n            }\n\n            const { type, name, checked } = el;\n            if ((type === 'checkbox' || type === 'radio') && !checked) {\n                return;\n            }\n\n            const { customAttribute: id, otherInput } = el.dataset;\n            if (otherInput && value === 'other') {\n                return; // Ignore this, because it's defined by an additional text input\n            }\n\n            if (type === 'date') {\n                const date = new Date(value);\n                value = new Intl.DateTimeFormat('de-DE', {\n                    month: '2-digit',\n                    day: '2-digit',\n                    year: 'numeric',\n                }).format(date);\n            }\n\n            if (type === 'checkbox') {\n                // Checkbox needs to be transformed to multi select field\n                if (!checkboxes[id]) {\n                    checkboxes[id] = [name];\n                } else {\n                    checkboxes[id].push(name);\n                }\n            } else {\n                payload.attributes.push({\n                    id,\n                    value,\n                });\n            }\n        });\n\n        // Transform all checkboxes to multi select fields\n        Object.keys(checkboxes).forEach((id) => {\n            payload.attributes.push({\n                id,\n                value: checkboxes[id].join(','),\n            });\n        });\n\n        if (localStorageCheck.isEnabled()) {\n            const recruitingChannelId = Cookies.get('recruitingChannelId');\n            if (recruitingChannelId) {\n                payload.recruiting_channel_id = recruitingChannelId;\n            }\n        }\n\n        return payload;\n    }\n\n    async handleFormSubmit() {\n        const errors = validate(this.form, this.constraints);\n        this.checkForErrors(errors || {});\n\n        if (errors) {\n            this.scrollToFirstError();\n            return;\n        }\n\n        this.isLoading(true);\n        this.handleServerErrorMessageDisplay(false);\n\n        try {\n            const response = await fetch(`${this.API_URL}/personio-upload-application`, {\n                method: 'POST',\n                headers: {\n                    ...this.API_HEADERS,\n                    'Content-Type': 'application/json',\n                },\n                body: JSON.stringify(this.preparePayload()),\n            });\n\n            if (!response.ok) {\n                const errorData = await response.json();\n\n                if (errorData.error) {\n                    this.handleServerErrorMessageDisplay(true, errorData.error.reason);\n                }\n\n                if (errorData.errors) {\n                    this.handleServerErrorMessageDisplay(\n                        true,\n                        JSON.stringify(errorData.errors),\n                    );\n                }\n\n                this.isLoading(false);\n                return;\n            }\n\n            this.clearForm();\n            this.showServerSuccessMessage();\n            eT({\n                event: 'job_conversion',\n            });\n        } catch (error) {\n            this.handleServerErrorMessageDisplay(true);\n            captureException(new Error(`JobForm: ${JSON.stringify(error)}`));\n        }\n\n        this.isLoading(false);\n    }\n\n    scrollToFirstError() {\n        const firstErrorEl = document.getElementsByClassName('form-field-error__container')[0];\n\n        if (firstErrorEl) {\n            scrollTo(\n                document.body,\n                {\n                    behavior: 'smooth',\n                    top: firstErrorEl.offsetTop - 100,\n                },\n            );\n        }\n    }\n\n    clearForm() {\n        // Clear file input\n        this.uploadBoxInputEl.value = '';\n        const event = new Event('change');\n        this.uploadBoxInputEl.dispatchEvent(event);\n\n        // Clear text inputs\n        this.inputs.forEach((input) => {\n            // eslint-disable-next-line no-param-reassign\n            input.value = '';\n        });\n    }\n\n    isLoading(state) {\n        if (state) {\n            this.submitBtn.classList.add('t-btn-is-loading');\n        } else {\n            this.submitBtn.classList.remove('t-btn-is-loading');\n        }\n\n        this.submitBtn.disabled = state;\n    }\n\n    handleClientErrorMessagesDisplay(input, hasError) {\n        const parentEl = input.parentNode.parentNode;\n\n        if (hasError) {\n            parentEl.classList.add('form-field-error__container');\n        } else {\n            parentEl.classList.remove('form-field-error__container');\n        }\n    }\n\n    handleServerErrorMessageDisplay(hasError, errorMessage) {\n        this.formInfoBoxServerErrorGlobal.style.display = hasError ? 'block' : 'none';\n        this.formInfoBoxServerErrorGlobal.querySelector('.form-info-box__error-message')\n            .innerText = errorMessage || '';\n    }\n\n    showServerSuccessMessage() {\n        MicroModal.show('modal-job-form-success');\n    }\n\n    checkForErrors(errors) {\n        this.inputs.forEach((input) => {\n            this.handleClientErrorMessagesDisplay(input, errors[input.name]);\n        });\n    }\n}\n","import * as Sqrl from 'squirrelly';\nimport {\n    listFilterItemsModalTemplate,\n    listFilterScrollToButtonTemplate,\n} from '../templates/listFilter';\n\nexport default class ListFilter {\n    constructor(type) {\n        this.type = type;\n        this.capitalizedType = type[0].toUpperCase() + type.substring(1).toLowerCase();\n        this.activeFilters = ['all'];\n        this.activeLabels = ['Alle'];\n\n        this.listItems = document.querySelectorAll(`[data-list-filter-item-id-${this.type}]`);\n        this.selectedItems = document.querySelector(`[data-list-filter-selected-items-${this.type}]`);\n        this.modalContentPlaceholder = document.querySelector(`[data-list-filter-modal-content-${this.type}]`);\n\n        this.init();\n    }\n\n    init() {\n        this.updateEmptyMessage();\n        this.injectScrollToButton();\n        this.renderModalFilterItems();\n\n        const boundRunFilter = this.runFilter.bind(this);\n        this.listFilterControlItems = document.querySelectorAll(`[data-list-filter-modal-item-${this.type}]`);\n        this.listFilterControlItems.forEach((item) => {\n            item.addEventListener(\n                'change',\n                boundRunFilter,\n            );\n        });\n\n        /**\n         * Close the related popover if clicking on the button, as the user is now aware of it.\n         */\n        const modalJobFilterTriggerElement = document.querySelectorAll('[data-popover-trigger=\"modal-job-filter\"]');\n\n        const closePopover = () => {\n            const modalJobFilterPopoverElement = document.getElementById('popover-for-modal-job-filter');\n            if (modalJobFilterPopoverElement) {\n                modalJobFilterPopoverElement.removeAttribute('data-show');\n            }\n        };\n\n        modalJobFilterTriggerElement.forEach((item) => {\n            item.addEventListener(\n                'click',\n                closePopover,\n            );\n        });\n\n        this.selectedItems.innerHTML = this.activeLabels;\n    }\n\n    /**\n     * Inject \"scroll-to\" button into the DOM.\n     * This button will only appears on the page when the list is visible.\n     */\n    injectScrollToButton() {\n        let scrollToButtonEl = document.querySelector('[data-list-filter-scrollto-button]');\n\n        /**\n         * We do not want to inject the button if it already exists. Another ListFilter instance\n         * might already have injected one, in case of multiple filters.\n         */\n        if (scrollToButtonEl) {\n            return;\n        }\n\n        scrollToButtonEl = document.createElement('div');\n        scrollToButtonEl.innerHTML = Sqrl.render(\n            listFilterScrollToButtonTemplate,\n            {},\n        );\n        document.body.appendChild(scrollToButtonEl);\n\n        /**\n         * Show/Hide handling\n         */\n        const handleIntersection = (entries) => {\n            entries.forEach(entry => {\n                if (entry.intersectionRatio > 0) {\n                    scrollToButtonEl.classList.remove('hide');\n                } else {\n                    scrollToButtonEl.classList.add('hide');\n                }\n            });\n        };\n\n        const listFilterContainer = document.querySelector('[data-list-filter-container]');\n        const observerContainer = new IntersectionObserver(handleIntersection);\n\n        observerContainer.observe(listFilterContainer);\n    }\n\n    /**\n     * Renders filter options in respective modal box.\n     */\n    renderModalFilterItems() {\n        const items = [];\n        const added = [];\n\n        /**\n         * Finding all unique list filter items...\n         */\n        Array.prototype.forEach.call(\n            this.listItems,\n            (listItem) => {\n                const id = listItem.dataset[`listFilterItemId${this.capitalizedType}`];\n                const label = listItem.dataset[`listFilterItemLabel${this.capitalizedType}`];\n\n                if (added.includes(id)) {\n                    return;\n                }\n\n                items.push({\n                    id,\n                    label,\n                });\n\n                added.push(id);\n            },\n        );\n\n        /**\n         * ...and adding them to the modal box.\n         */\n        this.modalContentPlaceholder.innerHTML = Sqrl.render(\n            listFilterItemsModalTemplate,\n            {\n                type: this.type,\n                items,\n            },\n        );\n    }\n\n    /**\n     * Updates everything that is UI related.\n     * - Adds/removes selected items in filter button to give the user a feedback\n     * on currently selected options.\n     * - Handles checkboxes state.\n     */\n    updateUiState(event) {\n        const selectedValue = event.target.dataset[`listFilterModalItem${this.capitalizedType}`];\n        const selectedLabel = event.target.parentNode.getElementsByTagName('label')[0].innerHTML;\n\n        if (selectedValue === 'all') {\n            this.activeFilters = ['all'];\n            this.activeLabels = ['Alle'];\n\n            // Enforce checked state if clicked when already checked.\n            if (!event.target.checked) {\n                event.target.checked = true;\n            }\n\n            this.listFilterControlItems.forEach((listFilterControlItem, i) => {\n                if (i > 0) {\n                    listFilterControlItem.checked = false;\n                }\n            });\n        } else if (event.target.checked) {\n            // Update active filters state\n            this.activeLabels.push(selectedLabel.trim());\n            this.activeFilters.push(selectedValue);\n            this.activeLabels = this.activeLabels.filter(item => item !== 'Alle');\n            this.activeFilters = this.activeFilters.filter(item => item !== 'all');\n\n            // Uncheck \"Alle\"\n            this.listFilterControlItems[0].checked = false;\n        } else {\n            this.activeLabels = this.activeLabels.filter(item => item !== selectedLabel.trim());\n            this.activeFilters = this.activeFilters.filter(item => item !== selectedValue);\n\n            // If no item is selected, automatically check \"all\".\n            if (this.activeFilters.length === 0) {\n                this.activeFilters = ['all'];\n                this.activeLabels = ['Alle'];\n                this.listFilterControlItems[0].checked = true;\n            }\n        }\n\n        // Update filter button with current selection.\n        this.selectedItems.innerHTML = this.activeLabels.join(', ');\n    }\n\n    /**\n     * Add/Remove \"no position available\" message where needed.\n     * Only applies if the list has \"groups\" (.jobs-list__group).\n     */\n    updateEmptyMessage() {\n        const jobsGroups = document.querySelectorAll('.jobs-list__group');\n\n        jobsGroups.forEach((jobsGroup) => {\n            const visibleItemsInJobsGroup = jobsGroup.querySelectorAll(\n                '[data-list-filter-item-id-department]:not(.list-filter--hide)',\n            );\n            const emptyGroupMessage = jobsGroup.querySelector('.jobs-list__empty');\n\n            if (visibleItemsInJobsGroup.length > 0) {\n                emptyGroupMessage.classList.add('jobs-list__empty--hide');\n            } else {\n                emptyGroupMessage.classList.remove('jobs-list__empty--hide');\n            }\n        });\n    }\n\n    /**\n     * Process the list based on inputs provided.\n     */\n    runFilter(event) {\n        const selectedValue = event.target.dataset[`listFilterModalItem${this.capitalizedType}`];\n\n        this.updateUiState(event);\n\n        if (selectedValue === 'all') {\n            this.listItems.forEach((listFilterResultItem) => {\n                listFilterResultItem.classList.remove('list-filter--hide');\n            });\n        } else {\n            this.listItems.forEach((listFilterResultItem) => {\n                const itemId = listFilterResultItem.dataset[`listFilterItemId${this.capitalizedType}`];\n                if (this.activeFilters.includes(itemId)) {\n                    listFilterResultItem.classList.remove('list-filter--hide');\n                } else {\n                    listFilterResultItem.classList.add('list-filter--hide');\n                }\n            });\n\n            if (this.activeFilters.length === 1 && this.activeFilters[0] === 'all') {\n                this.listItems.forEach((listFilterResultItem) => {\n                    listFilterResultItem.classList.remove('list-filter--hide');\n                });\n            }\n        }\n\n        this.updateEmptyMessage();\n    }\n}\n","const listFilterItemsModalTemplate = `\n    <form class=\"jobs-list__modal-filter-list\">\n        <div class=\"checkbox checkbox--highlighted\">\n            <input type=\"checkbox\" name=\"job-filter\" id=\"job-filter-{{ it.type }}-all\"\n                   data-list-filter-modal-item-{{ it.type }}=\"all\" aria-selected=\"true\" checked>\n            <label for=\"job-filter-{{ it.type }}-all\" class=\"no-tap-highlight\">\n                Alle\n            </label>\n        </div>\n        {{ @each(it.items) => item }}\n            <div class=\"checkbox\">\n                <input type=\"checkbox\" name=\"job-filter\" id=\"job-filter-{{ it.type }}-{{ item.id }}\"\n                       data-list-filter-modal-item-{{ it.type }}=\"{{ item.id }}\" aria-selected=\"false\">\n                <label for=\"job-filter-{{ it.type }}-{{ item.id }}\" class=\"no-tap-highlight\">\n                    {{ item.label }}\n                </label>\n            </div>\n        {{ /each }}\n    </form>\n`;\n\nconst listFilterScrollToButtonTemplate = `\n    <div class=\"list-filter__scrollto-button\"\n         data-list-filter-scrollto-button\n         data-scroll-to=\"list-filter-title\"\n         data-scroll-to-offset=\"100\">\n        <i class=\"t-website-filter\"></i>\n    </div>\n`;\n\nexport {\n    listFilterItemsModalTemplate,\n    listFilterScrollToButtonTemplate,\n};\n","export default class VideoContent {\n    constructor(videoUUID) {\n        this.videoBlock = document.querySelector(`[data-video-content-block=\"${videoUUID}\"]`);\n\n        this.text2 = this.videoBlock.querySelector('[data-video-content-paragraph-more]');\n        this.toggleButton = this.videoBlock.querySelector('[data-video-content-toggle]');\n        if (this.toggleButton) {\n            this.readMoreLabel = this.toggleButton.dataset.videoContentLabelReadMore;\n            this.readLessLabel = this.toggleButton.dataset.videoContentLabelReadLess;\n            this.load();\n        }\n    }\n\n    load() {\n        this.toggleButton.addEventListener(\n            'click',\n            (e) => {\n                e.preventDefault();\n                if (this.text2.style.display === 'none') {\n                    this.toggleButton.innerHTML = this.readLessLabel;\n                    this.toggleButton.classList.remove('video-content__button--more');\n                    this.toggleButton.classList.add('video-content__button--less');\n                    this.text2.style.display = 'inline';\n                } else {\n                    this.text2.style.display = 'none';\n                    this.toggleButton.innerHTML = this.readMoreLabel;\n                    this.toggleButton.classList.remove('video-content__button--less');\n                    this.toggleButton.classList.add('video-content__button--more');\n                }\n            },\n        );\n    }\n}\n","import axios, { AxiosHeaders } from 'axios';\nimport validate from 'validate.js';\nimport { eT } from './EventTracking';\n\nexport default class ZipCodeForm {\n    constructor() {\n        this.API_URL = `${window.TNS.config.backend.url}/api/zipcode`;\n        this.TOKEN = window.TNS.config.backend.token;\n\n        this.formErrorGeneral = 'Bitte geben Sie eine gültige deutsche Postleitzahl an.';\n        this.formErrorDigits = 'Bitte geben Sie eine gültige 5-stellige deutsche Postleitzahl an.';\n\n        this.el = document.querySelector('[data-small-search-block]');\n        this.clientError = this.el.querySelector('.form-field-error__text');\n        this.serverError = this.el.querySelector('.form-info-box--error');\n        this.headline = this.el.querySelector('.zipcode-search-small__headline');\n        this.status = this.el.querySelector('.zipcode-search-small__status');\n\n        this.input = this.el.querySelector('input');\n        this.submitButton = this.el.querySelector('button[type=submit]');\n        this.form = this.el.querySelector('form');\n        this.form.addEventListener(\n            'submit',\n            async (ev) => {\n                ev.preventDefault();\n                await this.handleFormSubmit();\n            },\n        );\n\n        this.constraints = {\n            zipcode: {\n                presence: {\n                    message: this.formErrorDigits,\n                },\n                format: {\n                    pattern: /[0-9]{5}/,\n                    message: this.formErrorDigits,\n                },\n            },\n        };\n    }\n\n    updateResult(success) {\n        if (success) {\n            this.el.classList.add('zipcode-search-small--success');\n            this.headline.innerHTML = 'Ja, wir sind auch bei Ihnen vor Ort verfügbar!';\n        } else {\n            this.el.classList.add('zipcode-search-small--fail');\n            this.headline.innerHTML = 'Schade!';\n        }\n\n        eT({\n            event: success ? 'zipcode_operated_area' : 'zipcode_white_area',\n        });\n\n        const icon = `<i class=\"t-website-map-${success ? 'success' : 'fail'}\"></i>`;\n        this.status.innerHTML = `${icon} ${this.input.value}`;\n    }\n\n    updateButton(state) {\n        this.submitButton.disabled = state;\n        this.submitButton.classList.toggle('t-btn-is-loading', state);\n    }\n\n    updateClientError(error) {\n        this.clientError.innerHTML = error || '';\n        this.form.classList.toggle('form-field-error__container', !!error);\n    }\n\n    updateServerError(state) {\n        if (!state) {\n            this.serverError.style.display = 'none';\n        } else {\n            this.serverError.style.display = 'block';\n\n            eT({\n                event: 'zipcode_backend_error',\n            });\n        }\n    }\n\n    async handleFormSubmit() {\n        this.updateServerError(false);\n\n        const val = validate(this.form, this.constraints, {\n            fullMessages: false,\n        });\n\n        this.updateClientError((val && val.zipcode) ? val.zipcode.join(' ') : null);\n\n        if (!val) {\n            this.updateButton(true);\n\n            eT({\n                event: 'zipcode_search',\n                zipcode: this.input.value,\n            });\n\n            const headers = new AxiosHeaders({\n                Authorization: `Token ${this.TOKEN}`,\n            });\n\n            await axios.get(`${this.API_URL}/${this.input.value}/`, {\n                headers,\n            }).then((response) => {\n                const { operated_by_thermondo: success } = response.data;\n                this.updateResult(success);\n            }).catch((error) => {\n                if (error.response && error.response.status === 404) {\n                    // 404 means zip code could not be found in our database\n                    this.updateClientError(this.formErrorGeneral);\n                } else {\n                    this.updateServerError(true);\n                }\n\n                this.updateButton(false);\n            });\n        }\n    }\n}\n","import validate from 'validate.js';\nimport MicroModal from 'micromodal';\nimport { captureException, withScope } from '@sentry/browser';\n\nexport default class PressMailingForm {\n    constructor() {\n        this.API_URL = 'https://info.thermondo.de/l/963753/2023-08-15/4dvwg/';\n\n        this.form = document.querySelector('[data-press-mailing-section]');\n\n        this.form.addEventListener(\n            'submit',\n            (ev) => {\n                ev.preventDefault();\n                this.handleFormSubmit(this.form);\n            },\n        );\n\n        this.inputs = this.form.querySelectorAll('input');\n        this.inputs.forEach((input) => {\n            input.addEventListener('change', () => {\n                const errors = validate(this.form, this.constraints) || {};\n                this.handleClientErrorMessagesDisplay(input, errors[input.name]);\n            });\n        });\n\n        this.submitButton = this.form.querySelector('button[type=submit]');\n\n        this.constraints = {\n            first_name: {\n                presence: true,\n            },\n            last_name: {\n                presence: true,\n            },\n            email: {\n                presence: true,\n                email: true,\n            },\n            terms: {\n                inclusion: {\n                    within: [true],\n                },\n            },\n        };\n    }\n\n    handleClientErrorMessagesDisplay(input, hasError) {\n        const parentEl = input.parentNode.parentNode;\n        parentEl.classList.toggle('form-field-error__container', !!hasError);\n    }\n\n    updateButton(state) {\n        this.submitButton.disabled = state;\n        this.submitButton.classList.toggle('t-btn-is-loading', state);\n    }\n\n    async handleFormSubmit() {\n        const errors = validate(this.form, this.constraints);\n        this.checkForErrors(errors || {});\n\n        if (!errors) {\n            const formData = new FormData(this.form);\n            const formObject = new URLSearchParams({\n                'First Name': formData.get('first_name'),\n                'Last Name': formData.get('last_name'),\n                Email: formData.get('email'),\n            });\n            this.updateButton(true);\n\n            try {\n                const response = await fetch(this.API_URL, {\n                    body: formObject,\n                    method: 'post',\n                    mode: 'no-cors',\n                    headers: {\n                        'Content-Type': 'application/x-www-form-urlencoded',\n                    },\n                });\n                await response.text();\n                this.updateButton(false);\n                this.clearForm();\n                this.showSubscriptionMessage('success');\n            } catch (error) {\n                this.updateButton(false);\n                this.showSubscriptionMessage('failure');\n                withScope((scope) => {\n                    scope.setTag('backend.endpoint', this.API_URL);\n                    captureException(error);\n                });\n            }\n        }\n    }\n\n    checkForErrors(errors) {\n        this.inputs.forEach((input) => {\n            this.handleClientErrorMessagesDisplay(input, errors[input.name]);\n        });\n    }\n\n    clearForm() {\n        this.inputs.forEach((input) => {\n            if (input.type === 'checkbox') {\n                // eslint-disable-next-line no-param-reassign\n                input.checked = false;\n            } else {\n            // eslint-disable-next-line no-param-reassign\n                input.value = '';\n            }\n        });\n    }\n\n    showSubscriptionMessage(status) {\n        MicroModal.show('modal-press-form-success');\n        const success = document.querySelector('[data-success-result]');\n        const failure = document.querySelector('[data-failure-result]');\n        if (status === 'success') {\n            success.style.display = 'block';\n            failure.style.display = 'none';\n        } else {\n            success.style.display = 'none';\n            failure.style.display = 'block';\n        }\n    }\n}\n","import MicroModal from 'micromodal';\nimport IndicationPriceCalculator from './IndicationPriceCalculator';\n\nexport default class FlexRateCalculator extends IndicationPriceCalculator {\n    constructor(id) {\n        super(id);\n\n        this.resultElement = this.formElement.querySelector('[data-result-rate]');\n        this.updatePrice();\n\n        const modalOpen = this.formElement.querySelector('[data-modal-calculator-open]');\n        modalOpen.addEventListener('click', () => MicroModal.show(`modal-calculator-${id}`));\n    }\n\n    updatePrice() {\n        const annualInterestRate = 6.49;\n        const indicationPrice = super.updatePrice();\n        const loanTermInMonths = this.formElement.querySelector('[name=duration_in_month]').value;\n\n        // Format and display the monthly cost\n        this.resultElement.innerHTML = Intl.NumberFormat(\n            'de-DE',\n            {\n                style: 'currency',\n                currency: 'EUR',\n                minimumFractionDigits: 2,\n                maximumFractionDigits: 2,\n            },\n        ).format(this.calculateMonthlyRate(indicationPrice, annualInterestRate, loanTermInMonths));\n    }\n\n    calculateMonthlyRate(indicationPrice, annualInterestRate, loanTermInMonths) {\n        // Convert annual interest rate to monthly interest rate\n        const monthlyInterestRate = annualInterestRate / 12 / 100;\n\n        // Calculate the monthly payment using the formula https://bettersheets.co/formulas/pmt\n        // eslint-disable-next-line max-len,no-restricted-properties,no-mixed-operators\n        return indicationPrice * monthlyInterestRate / (1 - Math.pow(1 + monthlyInterestRate, -loanTermInMonths));\n    }\n}\n","import validate from 'validate.js';\nimport { captureException, withScope } from '@sentry/browser';\nimport { eT } from './EventTracking';\n\nfunction getCookie(name) {\n    const value = `; ${document.cookie}`;\n    const parts = value.split(`; ${name}=`);\n    if (parts.length === 2) return parts.pop().split(';').shift();\n    return null;\n}\n\nexport default class CustomerReferralEmail {\n    constructor() {\n        this.customerReferral = window.TNS.config.customerReferral;\n        this.API_URL = this.customerReferral.apiUrl;\n        this.form = document.querySelector('[data-customer-referral_email]');\n\n        // Bot protection: record load time\n        this.loadedAt = Date.now();\n\n        this.form.addEventListener(\n            'submit',\n            (ev) => {\n                ev.preventDefault();\n                this.handleFormSubmit(this.form);\n            },\n        );\n\n        this.inputs = this.form.querySelectorAll('input');\n        this.inputs.forEach((input) => {\n            input.addEventListener('change', () => {\n                const errors = validate(this.form, this.constraints) || {};\n                this.handleClientErrorMessagesDisplay(input, errors[input.name]);\n            });\n        });\n\n        this.submitButton = this.form.querySelector('button[type=submit]');\n\n        this.constraints = {\n            salutation: {\n                presence: true,\n            },\n            first_name: {\n                presence: true,\n            },\n            last_name: {\n                presence: true,\n            },\n            email: {\n                presence: true,\n                email: true,\n            },\n            acceptedTerms: {\n                inclusion: {\n                    within: [true],\n                },\n            },\n        };\n    }\n\n    handleClientErrorMessagesDisplay(input, hasError) {\n        const parentEl = input.parentNode.parentNode;\n        parentEl.classList.toggle('form-field-error__container', !!hasError);\n    }\n\n    isButtonLoadingState(state) {\n        this.submitButton.disabled = state;\n        this.submitButton.classList.toggle('t-btn-is-loading', state);\n    }\n\n    isSuspectedBot() {\n        // Honeypot: hidden field that real users never fill\n        const honeypot = this.form.querySelector('[name=\"website\"]');\n        if (honeypot && honeypot.value) {\n            return true;\n        }\n\n        // Timing: less than 3 seconds from page load to submit is not human\n        if (Date.now() - this.loadedAt < 3000) {\n            return true;\n        }\n\n        return false;\n    }\n\n    async handleFormSubmit() {\n        const errors = validate(this.form, this.constraints);\n        this.checkForErrors(errors || {});\n\n        if (!errors) {\n            if (this.isSuspectedBot()) {\n                // Fake success redirect — don't alert the bot\n                window.location.href = this.customerReferral.resultPage;\n                return;\n            }\n            this.isButtonLoadingState(true);\n            await this.getReferralId();\n        }\n    }\n\n    async getReferralId() {\n        const formData = new FormData(this.form);\n        const formObject = {\n            salutation: formData.get('salutation'),\n            first_name: formData.get('first_name'),\n            last_name: formData.get('last_name'),\n            email: formData.get('email'),\n            accepted_terms: true,\n        };\n        try {\n            const csrfToken = getCookie('csrftoken');\n            const response = await fetch(this.API_URL, {\n                body: JSON.stringify(formObject),\n                method: 'POST',\n                headers: {\n                    'Content-Type': 'application/json',\n                    'X-CSRFToken': csrfToken,\n                },\n            });\n            const data = await response.json();\n            if (!response.ok || !data.referral_id) {\n                throw new Error(data.error || 'Unexpected response');\n            }\n            eT({\n                event: 'referral_registration_success',\n            });\n            window.location.href = `${this.customerReferral.resultPage}?referral_id=${data.referral_id}`;\n            this.isButtonLoadingState(false);\n        } catch (error) {\n            this.isButtonLoadingState(false);\n            withScope((scope) => {\n                scope.setTag('backend.endpoint', this.API_URL);\n                captureException(error);\n            });\n        }\n    }\n\n    checkForErrors(errors) {\n        this.inputs.forEach((input) => {\n            this.handleClientErrorMessagesDisplay(input, errors[input.name]);\n        });\n    }\n}\n","export default function engagementOnPageLeadForm(forms) {\n    const handleChoiceClick = (choice, form) => {\n        const {\n            engagementOnPageLeadFormIsSelected: isSelected,\n            engagementOnPageLeadFormQuestion: question,\n            engagementOnPageLeadFormTargetPage: targetPage,\n        } = form.dataset;\n\n        if (isSelected) {\n            return; // Block double selection\n        }\n\n        form.setAttribute('data-engagement-on-page-lead-form-is-selected', true);\n\n        let checkmark;\n\n        checkmark = choice.querySelector('.checkmark__line');\n        checkmark.classList.add('checkmark__line--checked');\n\n        setTimeout(() => {\n            const loader = form.querySelector('.loader-overlay');\n            loader.style.display = 'block';\n\n            const fullUrl = new URL(targetPage);\n            fullUrl.searchParams.set(question, choice.dataset.param);\n\n            window.location.href = fullUrl.toString();\n        }, checkmark || isAbTest ? 400 : 0); // Wait for checkmark animation\n    };\n\n    forms.forEach((form) => {\n        const choices = [\n            ...form.querySelectorAll('button[data-param]'),\n        ];\n\n        choices.forEach((choice) => {\n            // Show checkmark then loader and redirect to lead form on click\n            choice.addEventListener(\n                'click', (event) => {\n                    event.preventDefault();\n                    handleChoiceClick(choice, form);\n                },\n            );\n        });\n    });\n\n    // Some browser might return to the page without a reload via the back button\n    window.addEventListener('pageshow', () => {\n        // Find all selected lead forms\n        const selectedForms = [\n            ...document.querySelectorAll('[data-engagement-on-page-lead-form-is-selected]'),\n        ];\n\n        // Hide checkmark and loaders of active forms\n        selectedForms.forEach((form) => {\n            form.removeAttribute('data-engagement-on-page-lead-form-is-selected');\n\n            const checkmark = form.querySelector('.checkmark__line--checked');\n            checkmark.classList.remove('checkmark__line--checked');\n\n            const loader = form.querySelector('.loader-overlay');\n            loader.style.display = 'none';\n        });\n    });\n}\n","/**\n * Resizes opt-in iframes (data-iframe-auto-height, see the Iframe block) to the\n * content height reported by the embedded page via postMessage:\n * { type: 'fr-height', height: <px> }.\n *\n * Messages are only accepted from the window loaded in a tracked iframe and\n * only when they originate from that iframe's own src origin.\n */\nexport default function iframeAutoHeight() {\n    const iframes = [...document.querySelectorAll('iframe[data-iframe-auto-height]')];\n\n    if (iframes.length === 0) {\n        return;\n    }\n\n    window.addEventListener('message', (event) => {\n        if (!event.data || event.data.type !== 'fr-height') {\n            return;\n        }\n\n        const iframe = iframes.find((el) => el.contentWindow === event.source);\n\n        if (!iframe || event.origin !== new URL(iframe.src).origin) {\n            return;\n        }\n\n        const height = Number(event.data.height);\n\n        if (!Number.isFinite(height) || height <= 0) {\n            return;\n        }\n\n        iframe.style.height = `${height}px`;\n    });\n}\n"],"names":["factory","__webpack_modules__","__unused_webpack_module","__nested_webpack_exports__","__nested_webpack_require_623__","d","default","clipboard","tiny_emitter","tiny_emitter_default","n","listen","listen_default","src_select","select_default","command","type","document","execCommand","err","actions_cut","target","selectedText","fakeCopyAction","value","options","fakeElement","isRTL","documentElement","getAttribute","createElement","style","fontSize","border","padding","margin","position","yPosition","window","pageYOffset","scrollTop","top","concat","setAttribute","createFakeElement","container","appendChild","remove","actions_copy","arguments","length","undefined","body","HTMLInputElement","includes","_typeof","obj","Symbol","iterator","constructor","prototype","clipboard_typeof","_defineProperties","props","i","descriptor","enumerable","configurable","writable","Object","defineProperty","key","_setPrototypeOf","o","p","setPrototypeOf","__proto__","_getPrototypeOf","getPrototypeOf","getAttributeValue","suffix","element","attribute","hasAttribute","Clipboard","_Emitter","subClass","superClass","TypeError","create","_inherits","Constructor","protoProps","staticProps","Derived","hasNativeReflectConstruct","_super","Reflect","construct","sham","Proxy","Date","toString","call","e","_isNativeReflectConstruct","result","Super","NewTarget","this","apply","self","ReferenceError","_assertThisInitialized","_possibleConstructorReturn","trigger","_this","instance","_classCallCheck","resolveOptions","listenClick","action","defaultAction","defaultTarget","text","defaultText","_this2","listener","onClick","delegateTarget","currentTarget","_options$action","Error","nodeType","actions_default","emit","clearSelection","focus","getSelection","removeAllRanges","selector","querySelector","destroy","actions","support","queryCommandSupported","forEach","module","Element","matches","proto","matchesSelector","mozMatchesSelector","msMatchesSelector","oMatchesSelector","webkitMatchesSelector","exports","parentNode","__unused_webpack_exports","__nested_webpack_require_15749__","closest","_delegate","callback","useCapture","listenerFn","addEventListener","removeEventListener","elements","bind","querySelectorAll","Array","map","node","HTMLElement","nodeList","string","String","fn","__nested_webpack_require_19113__","is","delegate","listenNode","listenNodeList","listenSelector","nodeName","isReadOnly","select","setSelectionRange","removeAttribute","selection","range","createRange","selectNodeContents","addRange","E","on","name","ctx","push","once","off","_","data","slice","evtArr","len","evts","liveEvents","TinyEmitter","__webpack_module_cache__","__nested_webpack_require_24495__","moduleId","getter","__esModule","a","definition","get","prop","hasOwnProperty","__WEBPACK_AMD_DEFINE_FACTORY__","__WEBPACK_AMD_DEFINE_RESULT__","enter","exit","progress","offset","raf","ticking","height","updateHeight","cH","clientHeight","wH","innerHeight","Math","max","updateScroll","targetFromTop","fraction","min","getOffsetHeight","filter","el","bottom","getBoundingClientRect","entered","exited","__ev_entered","__ev_progress","delta","onScroll","onResize","onLoad","selectionToArray","setupElements","parent","NodeList","selectAll","requestAnimationFrame","webkitRequestAnimationFrame","mozRequestAnimationFrame","msRequestAnimationFrame","setTimeout","console","error","__webpack_require__","reTrim","reIsBadHex","reIsBinary","reIsOctal","freeParseInt","parseInt","freeGlobal","globalThis","freeSelf","root","Function","objectToString","nativeMax","nativeMin","now","isObject","toNumber","isObjectLike","isSymbol","other","valueOf","replace","isBinary","test","func","wait","lastArgs","lastThis","maxWait","timerId","lastCallTime","lastInvokeTime","leading","maxing","trailing","invokeFunc","time","args","thisArg","shouldInvoke","timeSinceLastCall","timerExpired","trailingEdge","remainingWait","debounced","isInvoking","leadingEdge","cancel","clearTimeout","flush","timer","dummySrc","fixRespimg","findPictureImgs","mq","init","ua","navigator","userAgent","HTMLPictureElement","match","RegExp","$1","img","source","sizes","picture","toUpperCase","cloneNode","insertBefore","firstElementChild","removeChild","_pfLastSize","offsetWidth","imgs","matchMedia","addListener","srcset","readyState","eminpx","alwaysCheckWDescriptor","evalId","pf","isSupportTestReady","noop","image","getImgAttr","setImgAttr","removeImgAttr","docElem","types","cfg","algorithm","srcAttr","srcsetAttr","supportAbort","curSrcProp","regWDesc","regSize","setOptions","picturefillCFG","fsCss","isVwDirty","cssCache","sizeLengthCache","DPR","devicePixelRatio","units","px","in","anchor","alreadyRun","regexLeadingSpaces","regexLeadingCommasOrSpaces","regexLeadingNotSpaces","regexTrailingCommas","regexNonNegativeInteger","regexFloatingPoint","evt","capture","attachEvent","memoize","cache","input","isSpace","c","regLength","buildStr","image2","width1","isDomReady","timeout","timestamp","later","regReady","run","lastClientWidth","evalCSS","css","index","toLowerCase","parsedLength","setResolution","candidate","sizesattr","w","cWidth","calcListLength","res","picturefill","opt","plen","context","qsa","reevaluate","reselect","sel","selShort","setupRun","fillImg","teardownRun","chooseLowRes","lowerValue","higherValue","dprValue","isCached","bonusFactor","bonus","meanDensity","pow","sqrt","ascendingSort","b","getCandidateForSrc","src","set","candidates","parseSet","makeUrl","url","warn","implementation","hasFeature","ns","getTime","substr","supSrcset","supSizes","supPicture","complete","width","onload","onerror","u","setSize","href","matchesMedia","media","mMQ","calcLength","sourceSizeValue","supportsType","parseSize","sourceSizeStr","cands","collectCharacters","regEx","chars","exec","substring","pos","descriptors","currentDescriptor","state","inputLength","parseDescriptors","h","desc","lastChar","intVal","floatVal","pError","parseFloat","has1x","tokenize","charAt","parseSrcset","getEmValue","div","originalHTMLCSS","cssText","originalBodyCSS","sourceSizeListStr","uT","winningLength","strValue","unparsedSizesList","unparsedSizesListLength","unparsedSize","lastComponentValue","size","regexCssLengthWithUnits","regexCssCalc","isValidNonNegativeSourceSizeValue","s","str","chrctr","component","componentArray","listArray","parenDepth","inComment","pushComponent","pushComponentArray","parseComponentValues","pop","join","parseSizes","setRes","applySetCandidate","j","bestCandidate","curSrc","curCan","candidateSrc","abortCurSrc","imageData","dpr","sets","setSrcToCur","cached","sort","setSrc","origWidth","getSet","parseSets","srcsetAttribute","imageSet","isWDescripor","srcsetParsed","hasPicture","pic","sources","getElementsByTagName","getAllSourceElements","supported","parsed","extreme","evaled","srcSetCandidates","matchingSet","evaluated","applyBestCandidate","innerWidth","clientWidth","vw","vh","em","rem","fillImgs","last","shift","Image","detectTypeSupport","t","r","split","Promise","SyntaxError","l","f","rmWhitespace","lastIndex","prefixes","reduce","tags","g","v","m","trim","raw","async","search","y","x","S","F","I","indexOf","autoTrim","isArray","trimLeft","trimRight","R","T","plugins","processAST","useWith","varName","processFnString","defaultFilter","JSON","stringify","autoEscape","storage","nativeHelpers","define","reset","load","then","each","params","foreach","keys","include","templates","extends","content","useScope","if","try","block","N","O","helpers","filters","$","message","A","compile","compileScope","compileScopeIntoFunction","compileToString","defaultConfig","getConfig","parse","render","validate","attributes","constraints","extend","results","runValidations","some","isPromise","processValidationResults","attr","version","major","minor","patch","metadata","format","isEmpty","EMPTY_STRING_REGEXP","validatorName","validators","validator","validatorOptions","isDomElement","isJqueryElement","collectFormValues","getDeepObjectValue","globalOptions","errors","pruneEmptyErrors","expandMultipleErrors","convertErrorMessages","formatters","WrapErrors","wrapErrors","cleanAttributes","resolve","reject","waitForResults","single","fullMessages","memo","isNumber","isNaN","isFunction","isInteger","isBoolean","isDate","isDefined","isString","jquery","vals","FORMAT_REGEXP","m0","m1","m2","prettify","round","toFixed","stringifyValue","isHash","contains","unique","array","forEachKeyInKeypath","object","keypath","escape","form","inputs","option","values","item","sanitizeFormValue","checked","multiple","selected","_val","selectedIndex","nullify","capitalize","ret","msg","errorInfo","groupErrorsByAttribute","list","flattenErrorsToArray","whitelist","whitelistCreator","cleanRecursive","ow","buildObjectWhitelist","exposeModule","amd","presence","allowEmpty","maximum","minimum","tokenizer","val","wrongLength","count","tooShort","tooLong","notValid","numericality","checks","greaterThan","greaterThanOrEqualTo","equalTo","lessThan","lessThanOrEqualTo","divisibleBy","strict","pattern","onlyInteger","noStrings","notInteger","odd","notOdd","even","notEven","datetime","earliest","NaN","latest","dateOnly","tooEarly","date","tooLate","flags","inclusion","within","exclusion","email","PATTERN","equality","otherValue","comparator","v1","v2","schemes","allowLocal","allowDataUrl","regex","tld","originalOptions","check","messages","integer","number","boolean","detailed","flat","grouped","constraint","amdD","elements_selector","threshold","thresholds","data_src","data_srcset","data_sizes","data_bg","data_bg_hidpi","data_bg_multi","data_bg_multi_hidpi","data_bg_set","data_poster","class_applied","class_loading","class_loaded","class_error","class_entered","class_exited","unobserve_completed","unobserve_entered","cancel_on_exit","callback_enter","callback_exit","callback_applied","callback_loading","callback_loaded","callback_error","callback_finish","callback_cancel","use_native","restore_on_error","assign","CustomEvent","detail","createEvent","initCustomEvent","dispatchEvent","k","L","classList","add","C","llTempImage","M","_observer","unobserve","z","loadingCount","toLoadCount","children","tagName","G","D","H","V","B","J","P","U","q","K","Q","IMG","IFRAME","VIDEO","OBJECT","W","X","Y","llEvLisnrs","Z","ee","te","ae","ne","se","backgroundImage","le","oe","re","de","ce","HTMLImageElement","ue","ge","be","he","me","_settings","IntersectionObserver","isIntersecting","intersectionRatio","_e","rootMargin","_onlineHandler","update","loadAll","disconnect","observe","restoreAll","ie","resetStatus","lazyLoadOptions","cachedModule","id","loaded","hasOwn","toStringTag","nmd","paths","dn","getOwnPropertyDescriptor","getEnvelopeEndpointWithUrlEncodedAuth","dsn","tunnel","sdkInfo","protocol","port","host","path","getBaseApiEndpoint","projectId","_getIngestEndpoint","sentry_version","publicKey","sentry_key","sentry_client","URLSearchParams","_encodedAuth","DEBUG_BUILD","__SENTRY_DEBUG__","SDK_VERSION","GLOBAL_OBJ","getMainCarrier","getSentryCarrier","carrier","__SENTRY__","getGlobalSingleton","creator","CONSOLE_LEVELS","originalConsoleMethods","consoleSandbox","wrappedFuncs","wrappedLevels","level","originalConsoleMethod","isEnabled","_getLoggerSettings","enabled","_maybeLog","debug","enable","disable","log","ORG_ID_REGEX","DSN_REGEX","dsn_dsnToString","withPassword","pass","dsnFromString","lastPath","projectMatch","dsnFromComponents","components","extractOrgIdFromClient","client","getOptions","getDsn","org_id","orgId","extractOrgIdFromDsnHost","dsn_makeDsn","from","find","isValidProtocol","validateDsn","SENTRY_SKIP_NORMALIZATION","for","SENTRY_OVERRIDE_NORMALIZATION_DEPTH","isError","wat","isInstanceOf","isBuiltin","className","isErrorEvent","isDOMError","isParameterizedString","isPrimitive","isPlainObject","isEvent","Event","isRegExp","isThenable","Boolean","base","isRequest","request","Request","fill","replacementFactory","original","wrapped","markFunctionWrapped","object_addNonEnumerableProperty","getOriginalFunction","__sentry_original__","convertToPlainObject","stack","getOwnProperties","fromEntries","entries","WEBPACK_ERROR_REGEXP","STRIP_FRAME_REGEXP","createStackParser","parsers","sortedParsers","skipFirstLines","framesToPop","frames","lines","line","cleanedLine","parser","frame","localStack","getLastStackFrame","function","reverse","filename","stripSentryFramesAndReverse","arr","defaultFunctionName","getFunctionName","getFramesFromEvent","event","exception","stacktrace","stringifier","RESOLVED_RUNNER","normalize","depth","maxProperties","Infinity","visit","ERROR","normalizeToSize","maxSize","normalized","encodeURI","utf8Length","inner","WeakSet","has","delete","memoBuilder","unmemoize","Number","isFinite","stringified","startsWith","hasSkipNormalizationHint","overrideDepth","getNormalizationDepthOverrideHint","remainingDepth","valueWithToJSON","toJSON","numAdded","visitable","visitKey","visitValue","objName","getConstructorName","withRandomSafeContext","cb","sym","globalWithSymbol","safeMathRandom","random","safeDateNow","createEnvelope","headers","items","addItemToEnvelope","envelope","newItem","forEachEnvelopeItem","envelopeItems","envelopeItem","encodeUTF8","encodePolyfill","TextEncoder","encode","serializeEnvelope","envHeaders","parts","append","next","itemHeaders","payload","Uint8Array","stringifiedPayload","buffers","totalLength","acc","buf","merged","buffer","concatBuffers","createAttachmentEnvelopeItem","attachment","content_type","contentType","attachment_type","attachmentType","DATA_CATEGORY_OVERRIDES","sessions","client_report","user_report","profile_chunk","replay_event","replay_recording","check_in","raw_security","metric","envelopeItemTypeToDataCategory","_isOverriddenType","getSdkMetadataForEnvelopeHeader","metadataOrEvent","sdk","getDataCategoryByType","MULTIPLEXED_TRANSPORT_EXTRA_KEY","eventFromEnvelope","env","resolvedSyncPromise","SyncPromise","rejectedSyncPromise","reason","executor","_state","_handlers","_runExecutor","onfulfilled","onrejected","_executeHandlers","onfinally","isRejected","cachedHandlers","handler","_value","setResult","safeUnref","unref","SENTRY_BUFFER_FULL_ERROR","makePromiseBuffer","limit","Set","task","taskProducer","drain","drainPromise","allSettled","promises","race","createTransport","makeRequest","bufferSize","rateLimits","recordItemLoss","dataCategory","recordDroppedEvent","spans","item_count","send","filteredEnvelopeItems","limits","all","disabledUntil","isRateLimited","filteredEnvelope","recordEnvelopeLoss","envelopeContainsItemType","response","statusCode","updatedRateLimits","rateLimitHeader","retryAfterHeader","retryAfter","categories","namespaces","headerDelay","delay","category","header","headerDate","parseRetryAfterHeader","updateRateLimits","WINDOW","isNativeFunction","debug_build_DEBUG_BUILD","types_WINDOW","cachedImplementations","makeFetchTransport","nativeFetch","impl","sandbox","hidden","head","contentWindow","getNativeImplementation","pendingBodySize","pendingCount","requestSize","requestOptions","method","referrerPolicy","keepalive","fetchOptions","status","installedIntegrations","afterSetupIntegrations","integrations","integration","afterAllSetup","setupIntegration","integrationIndex","setupOnce","setup","preprocessEvent","hint","processEvent","processor","addEventProcessor","hook","span","isInternalException","__sentry__","getPossibleEventMessages","possibleMessages","lastException","emptyUuid","uuid4","crypto","gbl","msCrypto","getCrypto","randomUUID","getFirstException","getEventDescription","event_id","eventId","firstException","addExceptionTypeValue","addExceptionMechanism","newMechanism","applyExceptionMechanism","currentMechanism","mechanism","handled","checkOrSetAlreadyCaught","__sentry_captured__","isAlreadyCaptured","truncate","isMatchingPattern","requireExactStringMatch","stringMatchesSomePattern","testString","patterns","DEFAULT_IGNORE_ERRORS","eventFiltersIntegration","mergedOptions","clientOptions","_mergeOptions","_hint","ignoreTransactions","transaction","_isIgnoredTransaction","ignoreErrors","_isIgnoredError","_isUselessError","denyUrls","_getEventFilterUrl","_isDeniedUrl","allowUrls","_isAllowedUrl","_shouldDropEvent","internalOptions","disableErrorDefaults","rootException","parent_id","_getLastValidUrl","ONE_SECOND_IN_MS","dateTimestampInSeconds","_cachedTimestampInSecondsFn","_timeOriginSegments","safePerformanceNow","performance","_checkedForDriftInThisTask","performanceTimeToSeconds","monotonicTimeInMs","entryStartTimeInMs","origin","browserPerformanceTimeOrigin","timestampInSeconds","timeOrigin","correctedTimeOrigin","isFirstCall","lastCheckedPerformanceNow","performanceNow","dateNow","abs","splice","createUnixTimestampInSecondsFunc","segment","updateSession","session","user","ipAddress","ip_address","did","username","abnormal_mechanism","ignoreDuration","sid","started","duration","release","environment","merge","initialObj","mergeObj","levels","output","generateTraceId","generateSpanId","Scope","_notifyingListeners","_scopeListeners","_eventProcessors","_breadcrumbs","_attachments","_user","_tags","_attributes","_extra","_contexts","_sdkProcessingMetadata","_propagationContext","traceId","sampleRand","clone","newScope","_level","_session","_transactionName","_fingerprint","_client","_lastEventId","_conversationId","refs","setClient","setLastEventId","lastEventId","getClient","addScopeListener","setUser","_notifyScopeListeners","getUser","setConversationId","conversationId","setTags","setTag","setAttributes","newAttributes","setExtras","extras","setExtra","extra","setFingerprint","fingerprint","setLevel","setTransactionName","setContext","setSession","getSession","captureContext","scopeToMerge","scopeInstance","getScopeData","contexts","propagationContext","addBreadcrumb","breadcrumb","maxBreadcrumbs","maxCrumbs","mergedBreadcrumb","getLastBreadcrumb","clearBreadcrumbs","addAttachment","clearAttachments","breadcrumbs","attachments","eventProcessors","sdkProcessingMetadata","transactionName","setSDKProcessingMetadata","newData","setPropagationContext","getPropagationContext","captureException","syntheticException","originalException","captureMessage","captureEvent","SUPPRESS_TRACING_KEY","isActualPromise","kChainedCopy","AsyncContextStack","scope","isolationScope","assignedScope","assignedIsolationScope","_stack","_isolationScope","withScope","_pushScope","maybePromiseResult","_popScope","onSuccess","onError","chained","mutated","copyProps","chainAndCopyPromiseLike","getStackTop","getScope","getIsolationScope","getAsyncContextStack","sentry","withSetScope","withIsolationScope","suppressTracingInStack","getAsyncContextStrategy","acs","suppressTracing","withSetIsolationScope","getCurrentScope","getExternalPropagationContext","externalPropagationContextProvider","currentScopes_withScope","rest","currentScopes_getClient","getTraceContextFromScope","externalContext","trace_id","span_id","spanId","parentSpanId","propagationSpanId","traceContext","parent_span_id","SETUP_CLIENTS","WeakMap","functionToStringIntegration","originalFunctionToString","callOriginalFunctionToString","originalFunction","unwrappedFunction","Zt","$t","ei","wa","Ra","Na","jo","Wo","Fo","Ho","Jo","$o","tl","il","al","rl","nl","ll","pl","cl","dl","fl","wm","Cm","Gm","Bm","jm","ab","sb","lb","ub","db","gb","yb","_b","hb","vb","kb","wb","Pb","Lb","Kb","Cg","Kg","Vg","Fg","Hg","ey","sy","ry","dy","my","by","attributeValueToTypedAttributeValue","rawValue","useFallback","unit","maybeObj","attributeValue","primitiveType","getTypedAttributeValue","checkedUnit","stringValue","serializeAttributes","fallback","serializedAttributes","typedValue","estimateTypedAttributesSizeInBytes","weight","estimatePrimitiveSizeInBytes","SPAN_STATUS_TYPES","setHttpStatus","httpStatus","spanStatus","code","getSpanStatusFromHttpCode","setStatus","makeWeakRef","WeakRefImpl","WeakRef","derefWeakRef","ref","deref","SCOPE_ON_START_SPAN_FIELD","ISOLATION_SCOPE_ON_START_SPAN_FIELD","TRACER_PROVIDER_SPAN_FIELD","setCapturedScopesOnSpan","getCapturedScopesOnSpan","spanWithScopes","spanIsTracerProviderSpan","SENTRY_BAGGAGE_KEY_PREFIX","baggageHeaderToDynamicSamplingContext","baggageHeader","baggageObject","curr","currBaggageObject","baggageHeaderToObject","parseBaggageHeader","dynamicSamplingContext","baggageEntry","eqIdx","keyOrValue","decodeURIComponent","parseSampleRate","sampleRate","rate","TRACEPARENT_REGEXP","generateSentryTraceHeader","sampled","sampledString","generateTraceparentHeader","SCOPE_SPAN_FIELD","_setSpanForScope","spanToTransactionTraceContext","spanContext","op","links","spanToStaticSpanJSON","spanToTraceContext","isRemote","convertSpanLinksForEnvelope","traceFlags","restContext","getStreamedSpanLinks","spanTimeInputToSeconds","ensureTimestampInSeconds","spanIsSentrySpan","getStaticSpanJSON","spanIsOpenTelemetrySdkTraceBaseSpan","startTime","endTime","description","getOtelParentSpanId","start_timestamp","getStatusMessage","spanToJSON","getSpanJSON","end_timestamp","is_segment","spanIsSegment","getSimpleStatus","addStatusMessageAttribute","parentSpanContext","streamedSpanJsonToSerializedSpan","spanJson","link","castSpan","spanIsSampled","statusMessage","CHILD_SPANS_FIELD","ROOT_SPAN_FIELD","addChildSpanToSpan","childSpan","rootSpan","isRecording","getSpanDescendants","resultSet","addSpanChildren","span2","childSpans","getRootSpan","INTERNAL_getSegmentSpan","getActiveSpan","_getSpanForScope","safeCallback","recover","DEFAULT_BREADCRUMBS","beforeBreadcrumb","finalBreadcrumb","handlers","instrumented","addHandler","typeHandlers","maybeInstrument","instrumentFn","triggerHandlers","_filter","instrumentedLevels","instrumentConsole","firstArg","isFiltered","severityLevelFromString","consoleIntegration","unsubscribe","removeHandler","logger","formatConsoleArgs","assertionArgs","addConsoleBreadcrumb","addConsoleInstrumentationHandler","registerCleanup","unsubscribe2","addConsoleInstrumentationFilter","util","safeJoin","dedupeIntegration","previousEvent","currentEvent","currentMessage","previousMessage","_isSameFingerprint","_isSameStacktrace","_isSameMessageEvent","previousException","_getExceptionFromEvent","currentException","_isSameExceptionEvent","dedupe_shouldDropEvent","currentFrames","previousFrames","frameA","frameB","lineno","colno","currentFingerprint","previousFingerprint","DEFAULT_ENVIRONMENT","isBrowser","__SENTRY_BROWSER_BUNDLE__","process","isElectronNodeRenderer","createLogContainerEnvelopeItem","inferUserData","inferSetting","ingest_settings","infer_ip","infer_user_agent","_INTERNAL_flushLogsBuffer","maybeLogBuffer","logBuffer","_getBufferMap","_INTERNAL_getLogBuffer","logs","createLogEnvelope","_metadata","getDataCollectionOptions","userInfo","sendEnvelope","createMetricContainerEnvelopeItem","_INTERNAL_flushMetricsBuffer","maybeMetricBuffer","metricBuffer","internal_getBufferMap","_INTERNAL_getMetricBuffer","metrics","createMetricEnvelope","SEMANTIC_ATTRIBUTE_SENTRY_SAMPLE_RATE","SEMANTIC_ATTRIBUTE_SENTRY_PREVIOUS_TRACE_SAMPLE_RATE","SEMANTIC_ATTRIBUTE_SENTRY_MEASUREMENT_UNIT","SEMANTIC_ATTRIBUTE_SENTRY_MEASUREMENT_VALUE","semanticAttributes_SEMANTIC_ATTRIBUTE_SENTRY_CUSTOM_SPAN_NAME","hasSpansEnabled","maybeOptions","__SENTRY_TRACING__","tracesSampleRate","tracesSampler","NON_RECORDING_SPAN_FIELD","SentryNonRecordingSpan","_traceId","_spanId","dropReason","end","_timestamp","_key","_values","_status","updateName","_name","addEvent","_attributesOrStartTime","_startTime","addLink","_link","addLinks","_links","recordException","_exception","_time","spanIsNonRecordingSpan","FROZEN_DSC_FIELD","freezeDscOnSpan","dsc","getDynamicSamplingContextFromClient","public_key","getDynamicSamplingContextFromScope","getDynamicSamplingContextFromSpan","rootSpanJson","rootSpanAttributes","traceState","rootSpanSampleRate","applyLocalSampleRateToDsc","dsc2","sample_rate","frozenDsc","isNonRecordingRoot","isIgnoredRoot","capturedScope","scopeDsc","traceStateDsc","dscOnTraceState","sample_rand","isStaticBeforeSendSpanCallback","_static","applyBeforeSendSpanCallback","beforeSendSpan","createStreamedSpanEnvelope","serializedSpans","sent_at","toISOString","dscHasRequiredProps","trace","createSpanContainerItem","hasSpanStreamingEnabled","traceLifecycle","spanJsonToSerializedStreamedSpan","notifyEventProcessors","processors","onDrop","_notifyEventProcessors","processorName","callbackError","final","parsedStackResults","lastSentryKeysCount","lastNativeKeysCount","cachedFilenameDebugIds","escapedSpanTraceContexts","mergeScopeData","mergeData","mergeAndOverwriteScopeData","mergeVal","scopeData_getCombinedScopeData","currentScope","scopeData","prepareEvent","normalizeDepth","normalizeMaxBreadth","prepared","dist","maxValueLength","applyClientOptions","integrationNames","applyIntegrationsMetadata","stackParser","filenameDebugIdMap","sentryDebugIdMap","_sentryDebugIds","nativeDebugIdMap","_debugIds","sentryDebugIdKeys","nativeDebugIdKeys","processDebugIds","debugIdKeys","debugIdMap","debugId","parsedStack","stackFrame","getFilenameToDebugIdMap","debug_id","applyDebugIds","finalScope","getFinalScope","exceptions","capturedException","exception_id","addExceptionMechanismToCapturedException","clientEventProcessors","getEventProcessors","applyDataToEvent","applyFingerprintToEvent","mergedBreadcrumbs","applyBreadcrumbsToEvent","applySdkMetadataToEvent","applyScopeDataToEvent","applySpanToEvent","eventTraceContext","applyEscapedErrorSpanToEvent","isTransaction","spanCountBeforeProcessing","droppedSpanCount","abs_path","debug_meta","images","code_file","applyDebugMeta","maxBreadth","normalizeEvent","captureContextKeys","logIgnoredSpan","droppedSpan","shouldIgnoreSpan","ignoreSpans","isStringOrRegExp","hasAttributes","nameMatches","opMatches","attrsMatch","every","valuePattern","_matchesAttributeValue","actual","pat","reparentChildSpans","dropSpan","droppedSpanParentId","droppedSpanId","DEFAULTS","cookies","httpHeaders","httpBodies","urlQueryParams","graphQL","variables","genAI","outputs","mcp","databaseQueryData","queues","stackFrameVariables","frameContextLines","ALREADY_SEEN_ERROR","MISSING_RELEASE_FOR_SESSION_ERROR","INTERNAL_ERROR_SYMBOL","DO_NOT_SEND_EVENT_SYMBOL","CLOSED_CLIENT_SYMBOL","_makeInternalError","_makeDoNotSendEventError","_makeSampledOutError","_isInternalError","_isDoNotSendEventError","setupWeightBasedFlushing","afterCaptureHook","flushHook","estimateSizeFn","flushFn","flushTimeout","isTimerActive","flushInterval","_flushInterval","Client","_options","attachStacktrace","_integrations","_numProcessing","_outcomes","_hooks","_promiseBuffer","transportOptions","_dataCollection","dc","dataCollection","resolveDataCollectionOptions","_unhandledSessionStatus","_attachStacktraceIsDefault","_dsn","_transport","transport","estimateLogSizeInBytes","estimateMetricSizeInBytes","hintWithEventId","_process","eventFromException","_captureEvent","eventMessage","isMessage","promisedEvent","eventFromMessage","hasDefaultSyntheticStacktrace","capturedSpanScope","capturedSpanIsolationScope","captureSession","sendSession","getSdkMetadata","getTransport","clientFinished","_isClientDoneProcessing","transportFlushed","close","eventProcessor","_isEnabled","_setupIntegrations","beforeSendTransaction","getIntegrationByName","integrationName","getIntegrationNames","addIntegration","isAlreadyInstalled","beforeSetup","sendEvent","genAiSpanItem","hasGenAiSpans","genAiSpans","remainingSpans","extractGenAiSpansFromEvent","eventType","newSdkInfo","eventSdkInfo","packages","settings","_enhanceEventWithSdkInfo","envelopeHeaders","createEventEnvelopeHeaders","createEventEnvelope","sendResponse","clientReleaseOption","clientEnvironmentOption","sessionAttrs","attrs","createSessionEnvelope","sendClientReports","hookCallbacks","uniqueCallback","callbacks","dispose","setupIntegrations","_updateSessionFromEvent","unhandled","errored","ex","sessionNonTerminal","ticked","_prepareEvent","client_isErrorEvent","_processEvent","finalEvent","isTransactionEvent","beforeSendLabel","beforeSendDropReason","ignoredSpanCount","parsedSampleRate","isSampledOut","preparedSpanCount","beforeSend","processedEvent","errorEvent","profile_id","exclusive_time","measurements","convertTransactionEventToSpanJson","processedRootSpanJson","processedSpans","initialSpans","processBeforeSend","transactionInfo","transaction_info","_clearOutcomes","outcomes","quantity","_flushOutcomes","discarded_events","estimateAttributesSizeInBytes","client_estimatePrimitiveSizeInBytes","CLIENT_ROUTE_PROVIDERS","addAutoIpAddressToSession","_enhanceErrorWithSentryInfo","__sentry_fetch_url_host__","hasSentryFetchUrlHost","eventbuilder_exceptionFromError","eventbuilder_parseStackFrames","extractType","extractMessage","eventFromError","skipLines","reactMinifiedRegexp","getSkipFirstStackStringLines","getPopFirstTopFrames","isWebAssemblyException","WebAssembly","Exception","eventbuilder_eventFromUnknownInput","isUnhandledRejection","domException","synthetic","eventFromString","errorFromProp","__serialized__","getNonErrorObjectExceptionValue","eventFromPlainObject","stringifiedException","__sentry_template_string__","__sentry_template_values__","logentry","extractExceptionKeysForMessage","captureType","eventbuilder_getObjectClassName","FILTERED_VALUE","SENSITIVE_KEY_SNIPPETS","shouldFilterDataKey","behavior","additionalDenyTerms","lowerKey","denySnippets","lower","snippet","isSensitiveKey","matchesConfiguredTerm","deny","allow","term","filterKeyValueData","hintIsScopeOrFunction","hintIsScopeContext","parseEventHintOrCaptureContext","startSession","startingTime","user_agent","sessionToJSON","makeSession","currentSession","endSession","closeSession","_sendSessionUpdate","filterQueryParams","queryString","pair","separatorIndex","encodedKey","urlQueryParamsBehavior","filterCollectedUrl","fragmentStart","queryEnd","queryStart","prefix","query","filtered","filterUrlQuery","filterCollectedUrlQuery","getLocationHref_getLocationHref","location","helpers_WINDOW","ignoreOnError","ignoredErrorReports","shouldIgnoreOnError","findIndex","report","isSameErrorReport","column","wrap","wrapper","__sentry_wrapped__","sentryWrapped","_sentryWrappedDepth","wrappedArguments","arg","property","getHttpRequestData","referrer","Referer","BrowserClient","opts","optionsArg","__SENTRY_RELEASE__","SENTRY_RELEASE","parentSpanIsAlwaysRootSpan","names","name2","applySdkMetadata","SENTRY_SDK_SOURCE","super","routeProvider","provider","getRouteProvider","setRouteProvider","checkDrift","listeners","visibilityState","queueMicrotask","eventbuilder_eventFromMessage","platform","addFetchInstrumentationHandler","onFetchResolved","EdgeRuntime","Headers","Response","_isFetchSupported","fetch","doc","supportsNativeFetch","originalFetch","_thisArg","virtualError","fetchArgs","resource","getUrlFromResource","hasProp","parseFetchArgs","handlerData","fetchData","startTimestamp","getHeadersFromFetchArgs","endTimestamp","enhanceOption","enhanceFetchErrorMessages","hostname","URL","requestArgument","optionsArgument","getBreadcrumbLogLevelFromHttpStatusCode","isURLObjectRelative","url_parseStringToURLObject","urlBase","isRelative","canParse","fullUrlObject","pathname","hash","getUrlQuery","getUrlFragment","fragment","getUrlDomain","parseUrl","relative","stripDataUrlContent","includeDataPrefix","mimeType","isBase64","dataStart","dataPrefix","debounceTimerID","lastCapturedEventType","lastCapturedEventTargetId","getCapture","instrumentDOM","triggerDOMHandler","globalDOMEventHandler","makeDOMEventHandler","globalObject","originalAddEventListener","__sentry_instrumentation_handlers__","handlerForType","captureListeners","bubbleListeners","listenerCount","signal","sticky","originalRemoveEventListener","globalListener","getEventTarget","isContentEditable","shouldSkipDOMEvent","_sentryId","isSimilarToLastCapturedEvent","global","SENTRY_XHR_DATA_KEY","addXhrInstrumentationHandler","instrumentXHR","XMLHttpRequest","xhrproto","open","originalOpen","xhrOpenThisArg","xhrOpenArgArray","parseXhrUrlArg","request_headers","__sentry_own_request__","onreadystatechangeHandler","xhrInfo","status_code","xhr","onreadystatechange","originalOnreadystatechange","onreadystatechangeThisArg","onreadystatechangeArgArray","setRequestHeader","originalSetRequestHeader","setRequestHeaderThisArg","setRequestHeaderArgArray","originalSend","sendThisArg","sendArgArray","sentryXhrData","lastHref","addHistoryInstrumentationHandler","instrumentHistory","historyReplacementFunction","originalHistoryFunction","to","urlOrPath","getAbsoluteUrl","history","accessors","Node","dataset","_safeRead","htmlTreeAsString","elem","currentElem","MAX_TRAVERSE_HEIGHT","out","separator","sepLength","nextStr","keyAttrs","maskAttributeFn","maxStringLength","_htmlElementAsString","keyAttrPairs","keyAttr","classes","getComponentName","maxTraverseHeight","prod_debug_build_DEBUG_BUILD","breadcrumbsIntegration","dom","componentName","serializeAttribute","_isEvent","_getDomBreadcrumbHandler","_getXhrBreadcrumbHandler","_getFetchBreadcrumbHandler","parsedLoc","parsedFrom","parsedTo","_getHistoryBreadcrumbHandler","_getSentryBreadcrumbHandler","DEFAULT_EVENT_TARGET","browserApiErrorsIntegration","eventTarget","setInterval","unregisterOriginalCallbacks","_wrapTimeFunction","_wrapRAF","_wrapXHR","eventTargetOption","integrationOptions","eventName","handleEvent","unregisterOriginalCallback","originalEventHandler","_wrapEventTarget","originalCallback","wrapOptions","addPageListener","removePageListener","getNavigationEntry","checkResponseStart","navigationEntry","getEntriesByType","responseStart","getActivationStart","navEntry","activationStart","firstHiddenTime","onHiddenFunctions","onVisibilityUpdate","onHiddenFunction","timeStamp","browserSessionIntegration","lifecycle","initialSessionSent","rIC","requestIdleCallback","called","runOnce","whenIdleOrHidden","previousUser","maybeNewUser","captureSpan","spanJSON","segmentSpan","serializedSegmentSpan","spanIsolationScope","spanScope","finalScopeData","safeSetSpanJSONAttributes","commonSpanAttributes","applyCommonSpanAttributes","profile","cloud_resource","culture","body_size","profiler_id","locale","timezone","angular","react","scopeContextsToSpanAttributes","segmentSpanJSON","applySdkMetadataToSegmentSpan","_segmentSpan","originalAttributes","includeScopeAttributes","getCultureContext","intl","Intl","DateTimeFormat","resolvedOptions","timeZone","calendar","_oldOnErrorHandler","addGlobalErrorInstrumentationHandler","instrumentError","__SENTRY_INSTRUMENTED__","_oldOnUnhandledRejectionHandler","addGlobalUnhandledRejectionInstrumentationHandler","instrumentUnhandledRejection","onunhandledrejection","globalHandlersIntegration","stackTraceLimit","ev","ev0","ev0s","ev0sf","getFilenameFromUrl","in_app","_enhanceEventWithInitialFrame","_installGlobalOnErrorHandler","globalHandlerLog","_getUnhandledRejectionError","_installGlobalOnUnhandledRejectionHandler","applyAggregateErrorsToEvent","exceptionFromErrorImplementation","aggregateExceptionsFromError","prevExceptions","exceptionId","newExceptions","applyExceptionGroupFieldsForParentException","newException","newExceptionId","applyExceptionGroupFieldsForChildException","isExceptionGroup","childError","isSuppressedError","is_exception_group","parentId","linkedErrorsIntegration","createFrame","chromeRegexNoFnName","chromeRegex","chromeEvalRegex","chromeDataUriRegex","geckoREgex","geckoEvalRegex","defaultStackParser","dataUriMatch","noFnParts","line2","col","subMatch","extractSafariExtensionDetails","isSafariExtension","isSafariWebExtension","HTML_ELEMENT_CONSTRUCTOR_NAME_REGEX","normalizeStringifyValue","is_isElement","normalizeStringifyValue_getConstructorName","resolveBrowserTunnelOption","tunnelOptions","dsnComponents","tunnelPath","charCodeAt","imul","fnv1a32","getTunnelPath","resolvedTunnel","basePath","normalizeTunnelBasePath","trailingSlash","SpanBuffer","_traceBuckets","Map","maxSpanLimit","maxTraceWeightInBytes","_maxSpanLimit","_maxTraceWeight","bucket","clear","firstLink","estimateSerializedSpanSizeInBytes","_removeTrace","cleanedSpans","cleanSpanJSON","spanStreaming_INTEGRATION_NAME","setMeasurement","activeSpan","timedEventsToMeasurements","events","getSegmentSpanCaptureStrategy","segmentSpanCaptureStrategy","MAX_SPAN_COUNT","SentrySpan","_startPerformanceNow","_parentSpanId","_sampled","_events","_isStandaloneSpan","isStandalone","_frozen","updateStartTime","timeInput","timeInputToSeconds","INTERNAL_setSegmentNameSourceIfSegment","_endTime","_getEndTimeFromDuration","logSpanEnd","_onSpanEnded","attributesOrStartTime","isSpanTimeInput","isStandaloneSpan","serializedSpan2","commonAttributes","captureStandaloneSpanWithStaticCallback","serializedSpan","sendStandaloneSpan","strategy2","scope2","onChildSpanEnded","_convertSpanToTransaction","strategy","onSegmentSpanEnded","transactionEvent","isFullFinishedSpan","normalizedRequest","onSpanCaptured","droppedUnfinishedSpanCount","descendant","isSpanAlreadyCaptured","otelTimeInputToSeconds","startInactiveSpan","spanArguments","initialCtx","experimental","standalone","parseSentrySpanArguments","forceTransaction","parentSpan","customParentSpan","customScope","withActiveSpan","getParentSpan","onlyIfParent","startMissingRequiredParentSpan","resolvedParentSpan","scopePropagationContext","_shouldIgnoreStreamedSpan","isTracingSuppressed","ignoredSpan","_isTracingSuppressed","_startChildSpan","parentSampled","_startRootSpan","isRootSpan","infoParts","op2","description2","logSpanStart","createChildOrRootSpan","getAcs","mutableSpanSamplingData","spanAttributes","spanName","decision","finalParentSampled","finalAttributes","currentPropagationContext","localSampleRateWasApplied","samplingContext","resolved","samplerResult","inheritOrSampleWith","fallbackSampleRate","parentSampleRate","resolveSampleRate","shouldSample","sampleSpan","outcomeReason","spanIsIgnored","clientsWithIntegration","_INTERNAL_ensureBrowserSpanStreaming","flushOnSegmentEnd","spanStreamingIntegration","browserSpanApi_startInactiveSpan","TRACING_DEFAULTS","idleTimeout","finalTimeout","childSpanTimeout","errorsInstrumented","op_E","op_S","op_d","op_l","op_D","op_L","op_p","op_P","op_m","op_M","op_b","CE","PAGELOAD_SPAN_NAME_FALLBACK","NAVIGATION_SPAN_NAME_FALLBACK","UI_LONG_TASK_SPAN_NAME_FALLBACK","UI_WEBVITAL_LCP_SPAN_NAME_FALLBACK","UI_WEBVITAL_CLS_SPAN_NAME_FALLBACK","BROWSER_NAVIGATION_TIMING_SPAN_NAMES","BOT_USER_AGENT_RE","web_vitals_t","web_vitals_n","web_vitals_e","persisted","web_vitals_i","rating","web_vitals_o","web_vitals_s","web_vitals_a","web_vitals_r","web_vitals_c","web_vitals_f","prerendering","web_vitals_h","web_vitals_d","onHidden","web_vitals_l","navigationId","wasDiscarded","floor","navigationType","navigationInteractionId","navigationURL","navigationStartTime","web_vitals_g","web_vitals_u","web_vitals_v","hadRecentInput","at","web_vitals_m","PerformanceObserver","supportedEntryTypes","getEntries","buffered","web_vitals_p","PerformanceSoftNavigation","getLargestInteractionContentfulPaint","reportSoftNavs","web_vitals_b","web_vitals_T","web_vitals_y","web_vitals_","web_vitals_E","web_vitals_M","reportAllChanges","presentationTime","paintTime","interactionId","web_vitals_L","web_vitals_w","web_vitals_I","web_vitals_k","web_vitals_C","web_vitals_F","web_vitals_N","interactionCount","web_vitals_S","web_vitals_q","cancelIdleCallback","web_vitals_A","web_vitals_H","web_vitals_O","web_vitals_W","web_vitals_$","performanceObserver_handlers","performanceObserver_instrumented","_previousCls","_previousLcp","_previousTtfb","_previousInp","_previousFcp","stopListeners","_reportSoftNavs","_reportBfcache","addClsInstrumentationHandler","stopOnCallback","addMetricObserver","instrumentCls","addLcpInstrumentationHandler","instrumentLcp","addInpInstrumentationHandler","instrumentInp","addPerformanceInstrumentationHandler","performanceObserver_addHandler","durationThreshold","performanceObserver_triggerHandlers","instrumentPerformanceObserver","getCleanupCallback","unlessBfcacheDisabled","entryType","takeRecords","web_vitals_P","largestContentfulPaint","renderTime","isTrusted","web_vitals_U","instrumentTtfb","web_vitals_D","instrumentFcp","PerformanceEventTiming","web_vitals_x","previousValue","stopOnCleanup","isPerformanceEventTiming","entry","isMeasurementValue","startAndEndSpan","startTimeInSeconds","parentStartTime","getBrowserPerformanceAPI","msToSec","supportsWebVital","resourceTimingToSpanAttributes","resourceTiming","timingSpanData","nextHopProtocol","char","extractNetworkProtocol","getAbsoluteTime","redirectStart","redirectEnd","workerStart","fetchStart","domainLookupStart","domainLookupEnd","connectStart","secureConnectionStart","connectEnd","requestStart","responseEnd","_performanceCursor","_navigationTimeToSeconds","NAVIGATION_TIMING_SPAN_OPS","secureConnection","domainLookup","unloadEvent","redirect","connect","domContentLoadedEvent","loadEvent","_addPerformanceNavigationTiming","spanStreamingEnabled","eventEnd","_getEndPropertyNameForNavigationTiming","start","filteredUrl","redirectCount","lru_LRUMap","_maxSize","_cache","nextKey","_pendingNavigation","_pendingInteraction","_lastInteractionTimestamp","_interactionIdToNavigationSpan","_navigationIdToNavigationSpan","_correlationStarted","interactionMatches","entryStartTime","interactionTimestamp","supportsSoftNavigations","isValidLcpMetric","lcpValue","_lcpEntry","_clsEntry","_navigationType","_measurements","startTrackingWebVitals","trackCls","trackLcp","lcpCleanupCallback","clsCleanupCallback","ttfbCleanupCallback","fcpCleanupCallback","fpCleanupCallback","firstHidden","firstVisibilityStateHiddenTime","getVisibilityWatcher","resetWebVitalState","LAST_INTERACTIONS","INTERACTIONS_SPAN_MAP","UNKNOWN_ELEMENT_NAME","ELEMENT_NAME_TIMESTAMP_MAP","INP_ENTRY_MAP","click","pointerdown","pointerup","mousedown","mouseup","touchstart","touchend","mouseover","mouseout","mouseenter","mouseleave","pointerover","pointerout","pointerenter","pointerleave","dragstart","dragend","drag","dragenter","dragleave","dragover","drop","keydown","keyup","keypress","_emitWebVitalSpan","metricName","passedAttributes","softNavigationId","segmentName","replay","replayId","getReplayId","getRecordingMode","getReplayAttributes","listenForWebVitalReportEvents","collectorCallback","pageloadSpan","collected","_runCollectorCallbackOnce","unsubscribeStartNavigation","isRedirect","unsubscribeAfterStartPageLoadSpan","INTERACTION_TYPE_TO_SPAN_OP","hover","press","INTERACTION_TYPE_TO_SPAN_NAME_FALLBACK","trackWebVitalPerNavigation","addInstrumentationHandler","bfcacheNavigationSpan","navigationSpan","getNavigationSpanForMetric","_sendLcpSpan","navigationStart","loadTime","_sendClsSpan","clsValue","firstSourceNode","isPlausibleInp","findInpEntry","_sendInpSpan","inpValue","attributedSpan","entryInteractionType","interactionType","cachedContext","spanToUse","elementName","WEB_VITALS_INTEGRATION_NAME","webVitalsIntegration","ignore","softNavigations","bfcacheNavigations","ignored","reportBfcache","perNavigation","onInteraction","passive","bindInteractionToNavigationSpan","pending","startSoftNavigationCorrelation","trackClsOnPageloadSpan","trackLcpOnPageloadSpan","finalizeWebVitals","pageloadSpans","recordClsOnPageloadSpan","recordLcpOnPageloadSpan","_measurements2","_addTtfbRequestTimeToMeasurements","fp","_rebaseFpAgainstActivationStart","setAttr","shortWebVitalName","customAttrName","attrKey","measurementName","cls","lcp","measurement","_setWebVitalAttributes","addWebVitalsToSpan","lcpEntry","lcpNavigationType","cleanupLcpHandler","trackLcpAsSpan","clsEntry","clsNavigationType","cleanupClsHandler","trackClsAsSpan","trackInpAsSpan","interactionEvents","captureElementFromEvent","firstKey","handleEntries","activeRootSpan","nearbyName","resolveElementNameFromEntry","registerInpInteractionListener","PREVIOUS_TRACE_KEY","spanContextSampled","getTraceData","exports_isEnabled","isTwpPlaceholder","sentryTrace","spanToTraceHeader","scopeToTraceHeader","baggage","objectKey","objectValue","currentIndex","encodeURIComponent","newBaggageHeader","objectToBaggageHeader","dscKey","dscValue","dynamicSamplingContextToSentryBaggageHeader","traceData","propagateTraceparent","traceparent","spanToTraceparentHeader","scopeToTraceparentHeader","instrumentFetchRequest","shouldCreateSpan","shouldAttachHeaders","instrumentFetchRequestOptions","shouldCreateSpanResult","__span","contentLength","contentLengthNum","endSpan","onRequestSpanEnd","_callOnRequestSpanEnd","spanOrigin","hasParent","shouldEmitSpan","isStreamed","domain","sanitizedUrl2","getFetchSpanAttributes","parsedUrl","sanitizedUrl","newUrl","password","getSanitizedUrlStringFromUrlObject","getSpanStartOptions","spanForTraceHeaders","fetchOptionsObj","traceHeaders","originalHeaders","isHeaders","newHeaders","prevBaggageHeader","baggageHeaderHasSentryBaggageValues","isHeadersInitTupleArray","prevBaggageHeaderWithSentryValues","existingSentryTraceHeader","existingTraceparentHeader","existingBaggageHeader","newBaggageHeaders","headerItem","_INTERNAL_getTracingHeadersForFetchRequest","fetchHint","NORMALIZED_REGEXP_CACHE","normalizeRegExpTarget","ignoreCase","normalizedPattern","matchesTracePropagationTargets","tracePropagationTargets","lowerCaseValue","lowerCaseTarget","parseXhrResponseHeaders","getAllResponseHeaders","getFullURL","createHeadersSafely","defaultRequestInstrumentationOptions","traceFetch","traceXHR","enableHTTPTimings","HTTP_TIMING_WAIT_MS","addHTTPTimings","onEntryFound","unsubscribePerformanceObsever","originalEnd","capturedEndTimestamp","isEnded","endSpanAndCleanup","fallbackTimeout","initiatorType","isPerformanceResourceTiming","endsWith","DEFAULT_BROWSER_TRACING_OPTIONS","instrumentNavigation","instrumentBfcacheRestore","instrumentPageLoad","markBackgroundSpan","enableLongTask","enableLongAnimationFrame","enableInp","ignoreResourceSpans","detectRedirects","linkPreviousTrace","consistentTraceSampling","enableReportPageLoaded","startBrowserTracingNavigationSpan","spanOptions","isRedirect2","isFallbackSpanName","getActiveIdleSpan","getMetaContent","metaName","optionalWindowDocument","metaTag","getServerTiming","navigation","serverTiming","entry2","ACTIVE_IDLE_SPAN_PROPERTY","setActiveIdleSpan","filenameMetadataMap","parsedStacks","sentryEnv","utils_toString","utils_hasOwnProperty","isUnsafeObjectKey","isPrototypeBoundary","hasOwnInPrototypeChain","thing","seen","kindOf","kindOfTest","typeOfTest","isUndefined","isBuffer","isArrayBuffer","utils_isString","utils_isPlainObject","isFile","isBlob","isFileList","isSet","utils_G","FormDataCtor","FormData","isURLSearchParams","isReadableStream","utils_isRequest","isResponse","utils_isHeaders","allOwnKeys","getOwnPropertyNames","_global","isContextDefined","isTypedArray","TypedArray","isHTMLForm","propertyIsEnumerable","utils_isRegExp","reduceDescriptors","reducer","getOwnPropertyDescriptors","reducedDescriptors","defineProperties","isAsyncFn","_setImmediate","setImmediateSupported","setImmediate","postMessageSupported","postMessage","token","asap","nextTick","isIterable","utils","isFormData","kind","isArrayBufferView","ArrayBuffer","isView","isEmptyObject","isReactNativeBlob","uri","isReactNative","formData","getParts","isStream","pipe","utils_merge","objs","caseless","skipUndefined","lowerCaseKeys","assignValue","targetKey","knownKey","existing","getOwnPropertySymbols","symbols","symbol","stripBOM","inherits","superConstructor","toFlatObject","sourceObj","destObj","propFilter","searchString","toArray","isSafeInteger","indexes","forEachEntry","_iterator","done","matchAll","regExp","hasOwnProp","getSafeProp","toSafeFlatObject","sourcePrototype","isExtensible","isSafeAndFullyMutable","current","freezeMethods","toObjectSet","arrayOrString","delimiter","toCamelCase","p1","p2","toFiniteNumber","defaultValue","findKey","isSpecCompliantForm","toJSONObject","visited","reducedValue","catch","isSafeIterable","ignoreDuplicateOf","parseHeaders","rawHeaders","hasKey","INVALID_UNICODE_HEADER_VALUE_CHARS","INVALID_BYTE_STRING_HEADER_VALUE_CHARS","sanitizeValue","invalidChars","trimSPorHTAB","toByteStringHeaderObject","byteStringHeaders","sanitizeByteStringHeaderValue","$internals","normalizeHeader","normalizeValue","sanitizeHeaderValue","parameterNameRE","trimOWS","headerSlot","matchHeaderValue","isHeaderNameFilter","AxiosHeaders","valueOrRewrite","rewrite","setHeader","_header","_rewrite","lHeader","setHeaders","dest","tokens","tokensRE","parseTokens","matcher","deleted","deleteHeader","formatHeader","targets","asStrings","getSetCookie","parseParameters","parameters","quoted","escaped","parseParameter","part","equals","normalizedName","parameterValue","decoded","decodeQuotedString","first","computed","accessor","defineAccessor","accessorName","methodName","arg1","arg2","arg3","buildAccessors","mapped","headerValue","core_AxiosHeaders","REDACTED","stringifySafely","$causeStack","AxiosError","config","customProps","aggregateErrorMessage","axiosError","sourceStack","targetStack","causeStack","appendCauseStack","isAxiosError","redactKeys","redact","serializedConfig","lowerKeys","hasOwnOrPrototypeToJSON","redactConfig","fileName","lineNumber","columnNumber","ERR_BAD_OPTION_VALUE","ERR_BAD_OPTION","ECONNABORTED","ETIMEDOUT","ECONNREFUSED","ERR_NETWORK","ERR_FR_TOO_MANY_REDIRECTS","ERR_DEPRECATED","ERR_BAD_RESPONSE","ERR_BAD_REQUEST","ERR_CANCELED","ERR_NOT_SUPPORT","ERR_INVALID_URL","ERR_FORM_DATA_DEPTH_EXCEEDED","core_AxiosError","isVisitable","removeBrackets","renderKey","dots","predicates","helpers_toFormData","metaTokens","visitor","defaultVisitor","_Blob","Blob","maxDepth","useBlob","convertValue","throwIfMaxDepthExceeded","ancestors","currentValue","stringifyWithDepthLimit","isFlatArray","exposedHelpers","build","charMap","AxiosURLSearchParams","_pairs","AxiosURLSearchParams_prototype","encoder","_encode","helpers_AxiosURLSearchParams","buildURL_encode","buildURL","serialize","serializeFn","serializedParams","hashmarkIndex","InterceptorManager_$internals","countHandlers","trimHandlers","syncHandlerEntries","manager","internals","handlersRef","handlerEntries","handlersLength","core_InterceptorManager","iterationDepth","nextId","use","fulfilled","rejected","synchronous","runWhen","eject","handlerId","normalizeHandlerId","defaults_transitional","silentJSONParsing","forcedJSONParsing","clarifyTimeoutError","legacyInterceptorReqResOrdering","advertiseZstdAcceptEncoding","validateStatusUndefinedResolves","encodeBasicAuthUsername","browser","protocols","hasBrowserEnv","_navigator","hasStandardBrowserEnv","product","hasStandardBrowserWebWorkerEnv","WorkerGlobalScope","importScripts","utils_namespaceObject","throwIfDepthExceeded","arrayToObject","normalizeArray","helpers_formDataToJSON","buildPath","isNumericKey","isLast","parsePropPath","normalizeArrays","core_methodList","freeze","own","defaults","transitional","adapter","transformRequest","getContentType","hasJSONContentType","isObjectPayload","setContentType","formSerializer","isNode","toURLEncodedForm","_FormData","defaults_stringifySafely","transformResponse","responseType","JSONRequested","strictJSONParsing","xsrfCookieName","xsrfHeaderName","maxContentLength","maxBodyLength","validateStatus","common","Accept","lib_defaults","transformData","fns","isCancel","__CANCEL__","cancel_CanceledError","settle","urlParserControlCharacters","normalizeURLForProtocolCheck","parseProtocol","decodeCookieValue","write","expires","secure","sameSite","cookie","toUTCString","read","cookieString","eq","readAsync","store","cookieStore","progressEventReducer","isDownloadStream","freq","bytesNotified","_speedometer","samplesCount","bytes","timestamps","firstSampleTS","tail","chunkLength","startedAt","bytesCount","passed","helpers_speedometer","invoke","helpers_throttle","rawLoaded","total","lengthComputable","progressBytes","estimated","progressEventDecorator","throttled","asyncDecorator","scheduler","isURLSameOrigin","baseURI","malformedHttpProtocol","assertValidHttpProtocolURL","normalizedURL","redactedURL","fragmentIndex","redactedURLWithoutFragment","parameterName","redactSensitiveURLParts","buildFullPath","baseURL","requestedURL","allowAbsoluteUrls","isRelativeUrl","relativeURL","combineURLs","headersToObject","ownEnumerableKeys","getMergedValue","mergeDeepProperties","valueFromConfig2","defaultToConfig2","mergeDirectKeys","config1","config2","hasOwnPropertyDescriptor","mergeMap","copies","empty","copy","bases","baseKeys","sourceKeys","hasSource","previous","active","assertParamsAcyclic","paramsSerializer","timeoutErrorMessage","withCredentials","withXSRFToken","onUploadProgress","onDownloadProgress","decompress","beforeRedirect","httpAgent","httpsAgent","cancelToken","socketPath","allowedSocketPaths","responseEncoding","mergeConfig","configValue","transitional2","transitional1","getMergedTransitionalOption","FORM_DATA_CONTENT_HEADERS","resolveConfig_encodeUTF8","hex","fromCharCode","readCookie","helpers_resolveConfig","readXsrfCookie","newConfig","auth","encodeUsername","btoa","getHeaders","formHeaders","policy","setFormDataHeaders","xsrfValue","useAsyncXsrf","_config","requestData","requestHeaders","onCanceled","timeoutId","uploadThrottled","downloadThrottled","flushUpload","flushDownload","flushDownloadWithEvent","upload","onloadend","responseURL","responseHeaders","responseText","statusText","onabort","ontimeout","abort","subscribe","aborted","sendRequest","deadline","abortOnTimeout","scheduleTimeout","remaining","headerName","helpers_composeSignals","signals","controller","AbortController","unsubscribeSignal","streamChunk","chunk","chunkSize","byteLength","trackStream","stream","onProgress","onFinish","iterable","asyncIterator","reader","getReader","readStream","readBytes","_onFinish","ReadableStream","pull","loadedBytes","enqueue","return","highWaterMark","CRLF","normalizeLines","escapeName","stringBytes","FormDataError","isHexDigit","charCode","isPercentEncodedByte","hexValue","isBase64Char","isBase64Whitespace","estimatePercentDecodedBase64Bytes","significant","invalid","estimateBase64BufferAllocation","remainder","base64Bytes","DEFAULT_REQUEST_OPTIONS","mode","integrity","priority","fetch_isFunction","decodeURIComponentSafe","envFetch","isFetchSupported","isRequestSupported","isResponseSupported","isReadableStreamSupported","encodeText","arrayBuffer","supportsRequestStream","duplexAccessed","duplex","hasContentType","supportsResponseStream","requestDefaults","resolvers","getBodyLength","maxRedirects","hasMaxContentLength","hasMaxBodyLength","_fetch","composedSignal","toAbortSignal","requestContentLength","pendingBodyError","pendingResponseError","maxBodyLengthError","configAuth","parsedURL","protocolIndex","urlToCheck","maybeWithAuthCredentials","estimateBase64","base64Pattern","comma","meta","estimateDataURLBytes","estimateDataURLDecodedBytes","formContentType","formBoundary","boundary","limitError","generateString","getRandomValues","footer","checkLength","valueLength","partLength","blobParts","formDataToBlob","createMultipartBody","outboundLength","mustEnforceStreamBody","trackRequestStream","getContentLength","resolveBodyLength","contentTypeHeader","_request","isCredentialsSupported","safeFetchOptions","credentials","declaredLength","isStreamResponse","responseContentLength","bytesRead","onChunkProgress","responseData","materializedSize","canceledError","networkError","cause","seedCache","getFetch","configuredEnv","seeds","seed","knownAdapters","http","renderReason","isResolvedHandle","adapters","nameOrAdapter","rejectedReasons","reasons","throwIfCancellationRequested","throwIfRequested","elapsedSince","dispatchRequest","deprecatedWarnings","formatMessage","spelling","correctSpelling","assertOptions","schema","allowUnknown","Axios_validators","isHeadersBucket","Axios","instanceConfig","interceptors","configOrUrl","dummy","captureStackTrace","dummyStack","firstNewlineIndex","secondNewlineIndex","duplicateCheckSuffix","currentStack","causeIndex","getCauseStackIndex","stackHead","causeSection","baseUrl","withXsrfToken","commonHeaders","methodHeaders","contextHeaders","requestInterceptorChain","synchronousRequestInterceptors","interceptor","unshift","responseInterceptorChain","promise","chain","onFulfilled","onRejected","rejectedResult","rejectedError","getUri","generateHTTPMethod","isForm","core_Axios","CancelToken","resolvePromise","_listeners","_resolve","cancel_CancelToken","HttpStatusCode","Continue","SwitchingProtocols","Processing","EarlyHints","Ok","Created","Accepted","NonAuthoritativeInformation","NoContent","ResetContent","PartialContent","MultiStatus","AlreadyReported","ImUsed","MultipleChoices","MovedPermanently","Found","SeeOther","NotModified","UseProxy","Unused","TemporaryRedirect","PermanentRedirect","BadRequest","Unauthorized","PaymentRequired","Forbidden","NotFound","MethodNotAllowed","NotAcceptable","ProxyAuthenticationRequired","RequestTimeout","Conflict","Gone","LengthRequired","PreconditionFailed","PayloadTooLarge","ContentTooLarge","UriTooLong","UnsupportedMediaType","RangeNotSatisfiable","ExpectationFailed","ImATeapot","MisdirectedRequest","UnprocessableEntity","UnprocessableContent","Locked","FailedDependency","TooEarly","UpgradeRequired","PreconditionRequired","TooManyRequests","RequestHeaderFieldsTooLarge","UnavailableForLegalReasons","InternalServerError","NotImplemented","BadGateway","ServiceUnavailable","GatewayTimeout","HttpVersionNotSupported","VariantAlsoNegotiates","InsufficientStorage","LoopDetected","NotExtended","NetworkAuthenticationRequired","WebServerReturnsAnUnknownError","WebServerIsDown","ConnectionTimedOut","OriginIsUnreachable","TimeoutOccurred","SslHandshakeFailed","InvalidSslCertificate","helpers_HttpStatusCode","axios","createInstance","CanceledError","VERSION","toFormData","Cancel","spread","formToJSON","getAdapter","lib_axios","Navigation","breakpoint","debounceToggleFlyout","debounce","toggleFlyout","menuIsOpen","currentFlyout","isMobile","animationStacks","reducedMotion","Sentry","initMenuLinks","initMobileMenu","initDesktopFlyout","initKeyboard","initMoreButtons","initBackButtons","initViewportListener","initBackdrop","mainMenuList","li","handleMouseEnter","cancelAllAnimations","closeChildren","handleClick","handleBurgerMenuButtonClick","handleClickMore","handleClickBack","closeMobileMenu","handleKeyboard","handleEnterKey","handleEscapeKey","activeElement","activeMenu","blur","openElement","liElement","submenu","openFlyout","flyout","handleFocusOut","preventDefault","focusSlide","closeFlyout","activeBackdrop","fadeIn","fadeOut","removeBackdrop","currentOpened","closeElement","openMobileMenu","relatedTarget","lists","finished","openingMobileMenu","slide0","animation","closingMobileMenu","closeSiblingElements","child","waitForAnimationToEnd","lastAnimation","playState","submenuId","getClosestSlide","slide","animate","transform","navigationSlide","easing","defaultDuration","backdrop","opacity","js_cookie_assign","api","js_cookie_init","converter","defaultAttributes","stringifiedAttributes","attributeName","jar","found","withAttributes","withConverter","toPrimitive","openTrigger","identifier","generateId","targetModal","triggers","onShow","onClose","closeTrigger","openClass","disableScroll","disableFocus","awaitCloseAnimation","awaitOpenAnimation","debugMode","modal","getElementById","modalId","showModal","onKeydown","setFocusToFirstNode","registerTriggers","closeModal","unregisterTriggers","removeEventListeners","toggleScrolling","addEventListeners","overflow","touchAction","stopPropagation","keyCode","retainFocus","getFocusableNodes","offsetParent","shiftKey","initModal","show","closeAll","removeModal","scrollTo","_arguments","generator","Window","sanitizeScrollOptions","scroll","easeFunc","currentTime","getDocument","setScrollPosition","currentScrollPosition","getScrollPosition","scrollProperty","getScrollPropertyByElement","getEasing","step","MicroModal","easingMap","linear","localStorageCheck","localStorage","setItem","removeItem","eventTracking","eventObject","dataLayer","argument","eventObjectBuilder","TrustPilot","moveModals","widgetEl","trustpilotModalId","moved","Newsletter","LIANA_API_URL","LIANA_MAILING_LIST_ID","LIANA_CONSENT","formInputs","emailFieldEl","termsInputEl","submitBtn","modalContents","terms","handleClientErrorMessagesDisplay","showTerms","handleFormSubmit","clearForm","display","checkForErrors","isLoading","post","finally","modalContent","formNewsletterModalContent","disabled","hasError","parentEl","TechnologyDesktop","instanceEl","menuEls","titlePlaceholder","textPlaceholder","linkPlaceholder","handleMenu","technologyDesktopMenuKey","textContent","Sqrl","menuEl","__create","__defProp","__getOwnPropDesc","__getOwnPropNames","__getProtoOf","__hasOwnProp","__commonJSMin","mod","__toESM","isNodeMode","except","__copyProps","import_rangetouch","addCSS","thumbWidth","watch","rangeTouch","MutationObserver","addedNodes","childList","subtree","userSelect","webKitUserSelect","changedTouches","clientX","left","bubbles","RangeTouch","getConstructor","instanceOf","isNullOrUndefined","plyr_isObject","plyr_isString","plyr_isFunction","plyr_isArray","isNodeList","is_default","nullOrUndefined","weakMap","ownerDocument","textNode","Text","keyboardEvent","KeyboardEvent","cue","TextTrackCue","VTTCue","track","TextTrack","transitionEndEvent","WebkitTransition","MozTransition","OTransition","transition","repaint","offsetHeight","getDeep","plyr_extend","plyr_wrap","sibling","nextSibling","plyr_setAttributes","insertElement","removeElement","emptyElement","childNodes","lastChild","replaceElement","newChild","oldChild","replaceChild","getAttributesFromSelector","existingAttributes","class","toggleHidden","hide","toggleClass","force","hasClass","getElements","getElement","setFocus","focusVisible","preventScroll","defaultCodecs","audio","video","ui","rangeInput","pip","pictureInPictureEnabled","disablePictureInPicture","airplay","WebKitPlaybackTargetAvailabilityEvent","playsinline","mime","mediaType","isHTML5","canPlayType","textTracks","touch","transitions","supportsPassiveListeners","toggleListener","toggle","eventListeners","plyr_on","onceCallback","triggerEvent","plyr","unbindListeners","ready","silencePromise","dedupe","prev","supportsCSS","declaration","CSS","supports","standardRatios","validateAspectRatio","reduceAspectRatio","ratio","getDivider","divider","getAspectRatio","embed","videoWidth","videoHeight","setAspectRatio","isVideo","aspectRatio","paddingBottom","isVimeo","vimeo","premium","getComputedStyle","fullscreen","classNames","videoFixedRatio","roundAspectRatio","tolerance","closestRatio","html5","getSources","getQualityOptions","quality","forced","player","speed","onChange","paused","preload","playbackRate","play","cancelRequests","blankVideo","browser_default","isIE","documentMode","isEdge","isWebKit","isIPhone","maxTouchPoints","isIPadOS","isIos","replaceAll","toTitleCase","getHTML","innerHTML","resources","youtube","i18n","seekTime","title","_defineProperty","toPropertyKey","Storage","getItem","json","plyr_fetch","loadSprite","hasId","exists","insertAdjacentElement","useStorage","getHours","trunc","formatTime","displayHours","inverted","hours","mins","secs","getSeconds","controls","getIconUrl","iconUrl","cors","svg4everybody","findElements","selectors","buttons","pause","restart","rewind","fastForward","mute","captions","seek","volume","seekTooltip","tooltip","toggleNativeControls","createIcon","namespace","iconPath","iconPrefix","icon","createElementNS","focusable","setAttributeNS","createLabel","createBadge","badge","menu","createButton","buttonType","toPascalCase","plyr_toCamelCase","label","labelPressed","iconPressed","control","button","autocomplete","role","updateRangeFill","createProgress","suffixKey","played","createTime","bindMenuItemShortcuts","menuItem","isRadioButton","showMenuPanel","nextElementSibling","previousElementSibling","lastElementChild","focusFirstMenuItem","createMenuItem","flex","currentTrack","updateTimeDisplay","updateVolume","setRange","muted","pressed","updateProgress","setProgress","nodeValue","percent","setProperty","updateSeekTooltip","_this$config$markers","tooltips","tipElement","visible","clientRect","scrollLeft","pageX","point","markers","points","insertAdjacentHTML","timeUpdate","invert","invertTime","seeking","durationUpdate","hasDuration","displayDuration","setMarkers","toggleMenuButton","setting","updateSetting","pane","panels","getLabel","setQualityMenu","checkMenu","getBadge","sorting","setCaptionsMenu","tracks","getTracks","toggled","language","setSpeedMenu","minimumSpeed","maximumSpeed","popup","firstItem","toggleMenu","composedPath","isMenuItem","getMenuSize","tab","scrollWidth","scrollHeight","restore","propertyName","setDownloadUrl","download","progressContainer","home","backButton","urls","isEmbed","inject","seektime","addProperty","controlPressed","labels","setMediaMetadata","mediaSession","MediaMetadata","mediaMetadata","artist","album","artwork","_this$config$markers2","containerFragment","createDocumentFragment","pointsFragment","tipVisible","toggleTip","markerElement","marker","tip","plyr_parseUrl","safe","buildUrlParams","isYouTube","blob","createObjectURL","languages","userLanguage","trackEvents","currentTrackNode","languageExists","updateCues","setLanguage","activeClass","findTrack","enableTextTrack","sortIsDefault","sorted","getCurrentTrack","cues","activeCues","getCueAsHTML","cueText","caption","plyr_defaults","autoplay","autopause","toggleInvert","clickToPlay","hideControls","resetOnEnd","disableContextMenu","loop","keyboard","focused","iosNative","seekLabel","unmute","enableCaptions","disableCaptions","enterFullscreen","exitFullscreen","frameTitle","menuBack","normal","advertisement","qualityBadge","iframe","googleIMA","editable","embedContainer","poster","posterEnabled","ads","playing","stopped","loading","isTouch","uiSupported","noTransition","previewThumbnails","thumbContainer","thumbContainerShown","imageContainer","timeContainer","scrubbingContainer","scrubbingContainerShown","publisherId","tagUrl","byline","portrait","transparent","customControls","rel","showinfo","iv_load_policy","modestbranding","noCookie","providers","plyr_noop","Console","Fullscreen","_window$scrollX","_window$scrollY","scrollPosition","scrollX","scrollY","viewport","hasProperty","cleanupViewport","forceFallback","nativeSupported","requestFullscreen","webkitEnterFullscreen","toggleFallback","navigationUI","cancelFullScreen","parentElement","closest$1","proxy","trapFocus","fullscreenEnabled","webkitFullscreenEnabled","mozFullScreenEnabled","msFullscreenEnabled","useNative","pre","getRootNode","fullscreenElement","shadowRoot","_this$player$elements","loadImage","minWidth","naturalWidth","plyr_ui","addStyleHook","checkPlaying","setTitle","setPoster","togglePoster","backgroundSize","toggleControls","checkLoading","timers","controlsElement","recentTouchSeek","lastSeekTime","migrateStyles","getPropertyValue","removeProperty","toggleMuted","lastVolume","Listeners","handleKey","firstTouch","setGutter","useNativeAspectRatio","maxWidth","viewportWidth","viewportHeight","resized","isAudio","ended","togglePlay","proxyEvents","defaultHandler","customHandlerKey","customHandler","returned","hasCustomHandler","inputEvent","forward","toggleCaptions","rect","seekTo","startMove","endMove","startScrubbing","endScrubbing","webkitDirectionInvertedFromDevice","deltaX","deltaY","direction","sign","increaseVolume","lastKey","focusTimer","lastKeyDown","altKey","ctrlKey","metaKey","repeat","increment","decreaseVolume","usingNative","import_loadjs_umd","loadjs","devnull","bundleIdCache","bundleResultCache","bundleCallbackQueue","publish","bundleId","pathsNotFound","executeCallbacks","depsNotFound","success","loadFile","callbackFn","numTries","isLegacyIECss","hasModuleSupport","maxTries","numRetries","beforeCallbackFn","before","pathStripped","relList","as","onbeforeload","sheet","defaultPrevented","loadFn","numWaiting","loadFiles","returnPromise","deps","bundleIds","loadScript","assurePlaybackState$1","hasPlayed","Vimeo","frameParams","parseHash","hashParam","sidedock","gesture","parseId$1","thumbnail_url","Player","disableTextTrack","stop","restorePause","setVolume","setCurrentTime","setPlaybackRate","setMuted","currentSrc","setLoop","getVideoUrl","getVideoWidth","getVideoHeight","dimensions","setAutopause","getVideoTitle","getCurrentTime","getDuration","getTextTracks","strippedCues","firstChild","stripHTML","getPaused","seconds","assurePlaybackState","getHost","YT","onYouTubeIframeAPIReady","getTitle","videoId","currentId","parseId","posterSrc","playerVars","hl","disablekb","cc_load_policy","cc_lang_pref","widget_referrer","onPlaybackRateChange","getPlaybackRate","onReady","playVideo","pauseVideo","stopVideo","speeds","getAvailablePlaybackRates","clearInterval","buffering","getVideoLoadedFraction","lastBuffered","onStateChange","unMute","Ads","google","ima","displayContainer","startSafetyTimer","managerPromise","clearSafetyTimer","setupIMA","setVpaidMode","ImaSdkSettings","VpaidMode","ENABLED","setLocale","setDisableCustomPlaybackForIOS10Plus","AdDisplayContainer","loader","AdsLoader","AdsManagerLoadedEvent","Type","ADS_MANAGER_LOADED","onAdsManagerLoaded","AdErrorEvent","AD_ERROR","onAdError","requestAds","AdsRequest","adTagUrl","linearAdSlotWidth","linearAdSlotHeight","nonLinearAdSlotWidth","nonLinearAdSlotHeight","forceNonLinearFullSlot","setAdWillPlayMuted","countdownTimer","getRemainingTime","AdsRenderingSettings","restoreCustomPlaybackStateOnAdBreakComplete","enablePreloading","getAdsManager","cuePoints","getCuePoints","AdEvent","onAdEvent","cuePoint","seekElement","cuePercentage","ad","getAd","adData","getAdData","LOADED","pollCountdown","isLinear","STARTED","ALL_ADS_COMPLETED","loadAds","contentComplete","CONTENT_PAUSE_REQUESTED","pauseContent","CONTENT_RESUME_REQUESTED","resumeContent","LOG","adError","getMessage","addCuePoints","seekedTime","discardAdBreak","resize","ViewMode","NORMAL","initialize","initialized","zIndex","safetyTimer","AV_PUBLISHERID","AV_CHANNELID","AV_URL","AV_WIDTH","AV_HEIGHT","AV_CDIM2","clamp","parseVtt","vttDataString","processedList","lineSplit","matchTimes","fitRatio","outer","PreviewThumbnails","getThumbnails","determineContainerAutoSizing","sortAndResolve","thumbnails","getThumbnail","thumbnail","urlPrefix","lastIndexOf","tempImage","naturalHeight","_this$player$config$m","percentage","mousePosX","thumb","showImageAtCurrentTime","toggleThumbContainer","mouseDown","toggleScrubbingContainer","ceil","lastTime","scrubbing","setScrubbingContainerSize","setThumbContainerSizeAndPos","thumbNum","hasThumb","qualityIndex","loadedImages","showingThumb","thumbFilename","thumbUrl","currentImageElement","showImage","removeOldImages","loadingImage","usingSprites","previewImage","showingThumbFilename","newImage","setImageSizeAndOffset","currentImageContainer","preloadNearby","getHigherQuality","currentImage","removeDelay","deleting","oldThumbFilename","thumbnailsClone","foundOne","newThumbFilename","thumbURL","currentQualityIndex","previewImageHeight","thumbContainerHeight","clearShowing","sizeSpecifiedInCSS","thumbAspectRatio","thumbHeight","setThumbContainerPos","scrubberRect","containerRect","right","clamped","multiplier","lastMouseMoveTime","currentScrubbingImageElement","currentThumbnailImageElement","insertElements","change","crossorigin","Plyr","webkitShowPlaybackTargetPicker","isHidden","hiding","soft","unload","failed","jQuery","getProviderByUrl","truthy","searchParams","inputIsValid","fauxDuration","realDuration","hasAudio","mozHasAudio","webkitAudioDecodedByteCount","audioTracks","updateStorage","webkitSetPresentationMode","requestPictureInPicture","exitPictureInPicture","webkitPresentationMode","pictureInPictureElement","setPreviewThumbnails","thumbnailSource","VideoPlayerHandler","handleError","plyrInstances","plyrInstance","setPlayerOptions","pauseAllVideos","videoPlayerAutoplay","videoPlayerLoop","videoPlayerMuted","videoPlayerCustomControls","videoPlayerControls","videoPlayerFullscreen","videoPlayerRatio","dnt","activePlyrInstance","getQueryParameters","decode","queryParams","CustomerReferral","sessionStorageEnabled","sessionStorage","referralId","getQueryParams","referral_id","CustomerReferralResult","referralLink","copyButton","writeText","mail","shareable","baseHref","utmSource","shareableMessage","messageType","ConversionBanner","lf_submitted","leadFormSubmitted","activeTimer","conversionBanner","getElementsByClassName","scrollStateSnapshot","inversionHeight","InvertCTA","ctaButton","Header","ScrollTo","isStickyHeader","scrollToEl","scrollToOffset","offsetLg","scrollToOffsetLg","isLg","offsetTop","LazyLoad","Tracking","COOKIE_OPTIONS_GLOBAL","COOKIE_MAP","thermondo__page_referrer__first_visit","thermondo__page_referrer__last_visit","thermondo__page_landing__first_visit","thermondo__page_landing__last_visit","thermondo__date__first_visit","thermondo__date__last_visit","thermondo__medium__first_visit","thermondo__medium__last_visit","thermondo__source__first_visit","thermondo__source__last_visit","thermondo__campaign__first_visit","thermondo__campaign__last_visit","thermondo__term__first_visit","thermondo__term__last_visit","thermondo__bundesland__first_visit","thermondo__bundesland__last_visit","google_analytics__gclid","user_device__is_mobile","user_device__user_agent","msclkid","isTrackingSessionStarted","Cookies","utm_medium","utm_source","utm_campaign","utm_term","utm_bundesland","setIsMobile","reg","gclid","fbclid","OutbrainClickId","tbclid","cto_pld","RecruitingChannel","GOOGLE_ORGANIC_SEARCH_ENGINES","COOKIE_OPTIONS","isCookieUndefinedOrNone","cookieName","handleRecruitingChannelIdCookie","recruitingChannelId","recruiting_channel_id","rule","UsercentricsConfig","UC_UI","showSecondLayer","_toPropertyKey","_createClass","prim","_toPrimitive","commonjsGlobal","evEmitter","EvEmitter","onceEvents","_onceEvents","emitEvent","onceListeners","allOff","ID_COUNTER","ARIA_ATTRIBUTES","expanded","HandorgelFold","handorgel","handorgelFold","_bindEvents","_initAria","_initialOpen","_initialFocus","collapsible","_updateAria","headerOpenClass","contentOpenClass","_opened","headerOpenedClass","contentOpenedClass","_closed","headerDisabledClass","contentDisabledClass","_unbindEvents","_cleanAria","headerFocusClass","contentFocusClass","initialOpenAttribute","initialOpenTransition","initialOpenTransitionDelay","_handleFocus","ariaEnabled","newValue","_property","_newValue","keyboardInteraction","which","bFocus","bBlur","_handleBlur","bClick","_handleButtonClick","bKeydown","_handleButtonKeydown","cKeydown","_handleContentKeydown","cTransition","_handleContentTransitionEnd","ID_COUNTER$1","Handorgel","_EventEmitter","folds","defaultOptions","headerElements","_queryElements","contentElements","fold","contents","foldsLength","currentFocusedIndex","carouselFocus","openFold","multiSelectable","foldOpen","_handleFoldOpen","Accordion","accordionEl","MapShim","getIndex","class_1","__entries__","_i","_a","ResizeObserver_es_isBrowser","global$1","requestAnimationFrame$1","transitionKeys","mutationObserverSupported","ResizeObserverController","connected_","mutationEventsAdded_","mutationsObserver_","observers_","onTransitionEnd_","refresh","leadingCall","trailingCall","resolvePending","timeoutCallback","ResizeObserver_es_throttle","addObserver","observer","connect_","removeObserver","observers","disconnect_","updateObservers_","activeObservers","gatherActive","hasActive","broadcastActive","characterData","getInstance","instance_","defineConfigurable","getWindowOf","defaultView","emptyRect","createRectInit","toFloat","getBordersSize","styles","positions","isSVGGraphicsElement","SVGGraphicsElement","SVGElement","getBBox","getContentRect","bbox","getSVGContentRect","paddings","positions_1","getPaddings","horizPad","vertPad","boxSizing","isDocumentElement","vertScrollbar","horizScrollbar","getHTMLElementContentRect","ResizeObservation","broadcastWidth","broadcastHeight","contentRect_","isActive","broadcastRect","ResizeObserverEntry","rectInit","Constr","contentRect","DOMRectReadOnly","ResizeObserverSPI","callbackCtx","activeObservations_","observations_","callback_","controller_","callbackCtx_","observations","clearActive","observation","ResizeObserver_es_ResizeObserver","ResizeObserver","ResizeObserver_es","NotificationBanner","isHome","headerDefault","headerLight","banner","adjustHeaderPosition","TNS","breakpoints","lg","paddingTop","Modal","getWindow","instanceOf_isElement","isHTMLElement","isShadowRoot","ShadowRoot","math_max","math_min","getUAString","uaData","userAgentData","brands","brand","includeScale","isFixedStrategy","scaleX","scaleY","visualViewport","addVisualOffsets","offsetLeft","getWindowScroll","win","pageXOffset","getNodeName","getDocumentElement","getComputedStyle_getComputedStyle","isScrollParent","_getComputedStyle","overflowX","overflowY","getCompositeRect","elementOrVirtualElement","isFixed","isOffsetParentAnElement","offsetParentIsScaled","isElementScaled","offsets","clientLeft","clientTop","getWindowScrollBarX","getLayoutRect","getParentNode","assignedSlot","getScrollParent","listScrollParents","_element$ownerDocumen","scrollParent","isBody","updatedList","isTableElement","getTrueOffsetParent","getOffsetParent","isFirefox","currentNode","perspective","contain","willChange","getContainingBlock","enums_top","basePlacements","placements","placement","modifierPhases","order","modifiers","modifier","requires","requiresIfExists","dep","depModifier","DEFAULT_OPTIONS","areValidElements","_len","popperGenerator","generatorOptions","_generatorOptions","_generatorOptions$def","defaultModifiers","_generatorOptions$def2","reference","popper","orderedModifiers","modifiersData","effectCleanupFns","isDestroyed","setOptionsAction","cleanupModifierEffects","scrollParents","contextElement","phase","orderModifiers","_ref","_ref$options","effect","cleanupFn","forceUpdate","_state$elements","rects","_state$orderedModifie","_state$orderedModifie2","onFirstUpdate","getBasePlacement","getVariation","getMainAxisFromPlacement","unsetSides","mapToStyles","_ref2","_Object$assign2","popperRect","variation","gpuAcceleration","adaptive","roundOffsets","_offsets$x","_offsets$y","_ref3","hasX","hasY","sideX","sideY","heightProp","widthProp","_Object$assign","commonStyles","_ref4","roundOffsetsByDPR","popper_lite_createPopper","_options$scroll","_options$resize","basePlacement","commonX","commonY","mainAxis","computeOffsets","_ref5","_options$gpuAccelerat","_options$adaptive","_options$roundOffsets","popperOffsets","arrow","initialStyles","modifiers_arrow","_state$modifiersData$","arrowElement","axis","paddingObject","hashMap","toPaddingObject","arrowRect","minProp","maxProp","endDiff","startDiff","arrowOffsetParent","clientSize","centerToReference","center","axisProp","centerOffset","_options$element","rootNode","isSameNode","modifiers_offset","_options$offset","invertDistance","skidding","distance","distanceAndSkiddingToXY","_data$state$placement","mediaQueries","getBreakpoint","breakpointName","currentBreakpoint","getNextBreakpoint","until","breakpointTo","Popover","referenceElement","popoverElement","popoverTrigger","popoverOptions","MediaQueries","popoverSeenAndClosedByUser","enterView","createPopper","CopyToClipboard","copyToClipboardElem","atobString","locationString","hostnameString","antiscamValidDomainEl","reportNonAllowedDomainToSentry","AntiScam","iconHome","MonitorCssAvailability","cssUrl","ssr_window_esm_isObject","ssr_window_esm_extend","noExtend","ssrDocument","initEvent","importNode","ssrWindow","replaceState","pushState","go","back","screen","cancelAnimationFrame","ssr_window_esm_getWindow","utils_isObject","utils_extend","nextSource","keysArray","nextIndex","__swiper__","setCSSProperty","varValue","animateCSSModeScroll","swiper","targetPosition","side","startPosition","translate","wrapperEl","scrollSnapType","cssModeFrameID","dir","isOutOfBound","easeProgress","cos","PI","currentPosition","elementChildren","HTMLSlotElement","assignedElements","showWarning","utils_createElement","tag","classesToTokens","elementStyle","elementIndex","previousSibling","elementOuterSize","includeMargins","makeElementsArray","swiper_core_support","deviceCached","swiper_core_browser","getSupport","smoothScroll","DocumentTouch","calcSupport","getDevice","overrides","device","ios","android","screenWidth","screenHeight","ipad","ipod","iphone","windows","macos","os","calcDevice","getBrowser","needPerspectiveFix","isSafari","num","isWebView","isSafariBrowser","need3dFix","calcBrowser","eventsEmitter","eventsListeners","destroyed","onceHandler","__emitterProxy","onAny","eventsAnyListeners","offAny","eventHandler","toggleSlideClasses$1","slideEl","condition","toggleSlideClasses","processLazyPreloader","imageEl","isElement","slideClass","lazyEl","lazyPreloaderClass","lazyPreloaderManaged","unlazy","slides","amount","lazyPreloadPrevNext","slidesPerView","slidesPerViewDynamic","activeIndex","grid","rows","activeColumn","preloadColumns","slideIndexLastInView","realIndex","updateSize","isHorizontal","isVertical","updateSlides","getDirectionPropertyValue","getDirectionLabel","slidesEl","rtlTranslate","rtl","wrongRTL","isVirtual","virtual","previousSlidesLength","slidesLength","snapGrid","slidesGrid","slidesSizesGrid","offsetBefore","slidesOffsetBefore","offsetAfter","slidesOffsetAfter","previousSnapGridLength","previousSlidesGridLength","swiperSize","spaceBetween","slidePosition","prevSlideSize","virtualSize","marginLeft","marginRight","marginBottom","marginTop","centeredSlides","cssMode","gridEnabled","slideSize","initSlides","unsetSlides","shouldResetSlideSize","updateSlide","slidesPerViewAutoSlideSize","roundLengths","slideStyles","currentTransform","currentWebKitTransform","webkitTransform","paddingLeft","paddingRight","swiperSlideSize","slidesPerGroup","slidesPerGroupSkip","setWrapperSize","updateWrapperSize","isFractionalSlidesPerView","shouldSnapToSlideEdge","snapToSlideEdge","lastAllowedSnapIndex","minVisibleSlides","accumulatedSize","newSlidesGrid","slidesGridItem","groups","slidesBefore","slidesAfter","groupSize","slideIndex","centeredSlidesBounds","allSlidesSize","slideSizeValue","maxSnap","snap","centerInsufficientSlides","allSlidesOffset","snapIndex","addToSnapGrid","addToSlidesGrid","watchOverflow","checkOverflow","watchSlidesProgress","updateSlidesOffset","backFaceHiddenClass","containerModifierClass","hasClassBackfaceClassAdded","maxBackfaceHiddenSlides","updateAutoHeight","activeSlides","newHeight","setTransition","getSlideByIndex","getSlideIndexByData","visibleSlides","minusOffset","swiperSlideOffset","cssOverflowAdjustment","updateSlidesProgress","offsetCenter","visibleSlidesIndexes","slideOffset","slideProgress","minTranslate","originalSlideProgress","slideBefore","slideAfter","isFullyVisible","isVisible","slideVisibleClass","slideFullyVisibleClass","originalProgress","translatesDiff","maxTranslate","isBeginning","isEnd","progressLoop","wasBeginning","wasEnd","isBeginningRounded","isEndRounded","firstSlideIndex","lastSlideIndex","firstSlideTranslate","lastSlideTranslate","translateMax","translateAbs","autoHeight","updateSlidesClasses","getFilteredSlide","activeSlide","prevSlide","nextSlide","nextEls","elementNextAll","prevEls","elementPrevAll","slideActiveClass","slideNextClass","slidePrevClass","emitSlidesClasses","updateActiveIndex","newActiveIndex","previousIndex","previousRealIndex","previousSnapIndex","getVirtualRealIndex","aIndex","normalizeSlideIndex","getActiveIndexByTranslate","skip","firstSlideInColumn","activeSlideIndex","runCallbacksOnInit","updateClickedSlide","pathEl","slideFound","clickedSlide","clickedIndex","slideToClickedSlide","transitionEmit","runCallbacks","slideTo","internal","initial","animating","preventInteractionOnTransition","normalizedTranslate","normalizedGrid","normalizedGridNext","allowSlideNext","allowSlidePrev","setTranslate","transitionStart","transitionEnd","isH","_immediateVirtual","_cssModeVirtualInitialSet","initialSlide","onSlideToWrapperTransitionEnd","slideToLoop","newIndex","targetSlideIndex","cols","bothDirections","needLoopFix","loopFix","slideRealIndex","slideNext","perGroup","slidesPerGroupAuto","loopPreventsSliding","_clientLeft","slidePrev","normalizedSnapGrid","isFreeMode","freeMode","prevSnap","prevSnapIndex","prevIndex","slideReset","slideToClosest","currentSnap","slideToIndex","getSlideIndexWhenGrid","slideSelector","isGrid","getSlideIndex","loopCreate","loopAddBlankSlides","slideBlankClass","recalcSlides","clearBlankSlides","shouldFillGroup","shouldFillGrid","addBlankSlides","amountOfSlides","byController","byMousewheel","loopedSlides","loopAdditionalSlides","prependSlidesIndexes","appendSlidesIndexes","isInitialOverflow","isNext","isPrev","slidesPrepended","slidesAppended","activeColIndexWithShift","colIndexToPrepend","__preventObserver__","swiperLoopMoveDOM","prepend","currentSlideTranslate","diff","touchEventsData","startTranslate","currentTranslate","loopParams","loopDestroy","newSlidesOrder","swiperSlideIndex","preventEdgeSwipe","startX","edgeSwipeDetection","edgeSwipeThreshold","onTouchStart","originalEvent","pointerId","targetTouches","touchId","touches","simulateTouch","pointerType","targetEl","touchEventsTarget","isChild","slot","elementsQueue","elementToCheck","elementIsChildOfSlot","elementIsChildOf","isTouched","isMoved","swipingClassHasValue","noSwipingClass","eventPath","noSwipingSelector","isTargetShadow","noSwiping","__closestFrom","closestElement","allowClick","swipeHandler","currentX","currentY","pageY","startY","allowTouchCallbacks","isScrolling","startMoving","touchStartTime","swipeDirection","allowThresholdMove","focusableElements","shouldPreventDefault","allowTouchMove","touchStartPreventDefault","touchStartForcePreventDefault","onTouchMove","targetTouch","preventedByNestedSwiper","touchReleaseOnEdges","previousX","previousY","diffX","diffY","touchAngle","atan2","preventTouchMoveFromPointerMove","cancelable","touchMoveStopPropagation","nested","touchesDiff","oneWayMovement","touchRatio","prevTouchesDirection","touchesDirection","isLoop","allowLoopFix","getTranslate","bySwiperTouchMove","allowMomentumBounce","grabCursor","setGrabCursor","_loopSwapReset","loopSwapReset","disableParentSwiper","resistanceRatio","resistance","followFinger","onTouchEnd","touchEndTime","timeDiff","pathTree","lastClickTime","currentPos","swipeToLast","stopIndex","rewindFirstIndex","rewindLastIndex","longSwipesMs","longSwipes","longSwipesRatio","shortSwipes","nextEl","prevEl","setBreakpoint","isVirtualLoop","running","resizeTimeout","resume","preventClicks","preventClicksPropagation","stopImmediatePropagation","newProgress","previousTranslate","swiper_core_onLoad","onDocumentTouchStart","documentTouchHandlerProceeded","domMethod","swiperMethod","updateOnWindowResize","isGridEnabled","breakpointsBase","breakpointContainer","breakpointParams","originalParams","wasMultiRow","isMultiRow","wasGrabCursor","isGrabCursor","wasEnabled","emitContainerClasses","unsetGrabCursor","wasModuleEnabled","isModuleEnabled","directionChanged","needsReLoop","wasLoop","changeDirection","hasLoop","containerEl","currentHeight","minRatio","swiper_core_defaults","swiperElementNodeName","resizeObserver","createElements","eventsPrefix","virtualTranslate","uniqueNavElements","passiveListeners","wrapperClass","_emitClasses","moduleExtendParams","allModulesParams","moduleParamName","moduleParams","auto","prototypes","matrix","curTransform","transformMatrix","curStyle","currentStyle","utils_getComputedStyle","WebKitCSSMatrix","MozTransform","OTransform","MsTransform","msTransform","m41","m42","translateTo","translateBounds","newTranslate","onTranslateToWrapperTransitionEnd","transitionDuration","transitionDelay","moving","isLocked","cursor","attachEvents","detachEvents","wasLocked","lastSlideRightEdge","addClasses","suffixes","resultClasses","prepareClasses","autoheight","centered","removeClasses","extendedDefaults","Swiper","swipers","newParams","modules","__modules__","extendParams","swiperParams","passedParams","velocity","clickTimeout","velocities","imagesToLoad","imagesLoaded","getSlideClasses","updates","view","exact","spv","breakLoop","translateValue","translated","newDirection","needUpdate","currentDirection","changeLanguageDirection","mount","mounted","getWrapperSelector","slideSlots","hostEl","lazyElements","deleteInstance","cleanStyles","deleteProps","extendDefaults","newDefaults","installModule","prototypeGroup","protoMethod","animationFrame","resizeHandler","orientationChangeHandler","newWidth","contentBoxSize","inlineSize","blockSize","attach","WebkitMutationObserver","mutations","observerUpdate","observeParents","observeSlideChildren","containerParents","parents","elementParents","arrowSvg","navigation_Navigation","getEl","toggleEl","subEl","disabledClass","lockClass","onPrevClick","onNextClick","checkProps","createElementIfNotDefined","initButton","addIcons","tempEl","html","trustedTypes","createPolicy","createHTML","setInnerHTML","destroyButton","hideOnClick","hiddenClass","navigationDisabledClass","_s","targetIsButton","pagination","clickable","Autoplay","timeLeft","waitForTransition","disableOnInteraction","stopOnLastSlide","reverseDirection","pauseOnMouseEnter","autoplayTimeLeft","wasPaused","pausedByTouch","touchStartTimeout","pausedByInteraction","pausedByPointerEnter","autoplayDelayTotal","autoplayDelayCurrent","autoplayStartTime","onTransitionEnd","calcTimeLeft","getTotalDelay","totalDelay","currentSlideDelay","activeSlideEl","getSlideDelay","delayForce","proceed","onVisibilityChange","onPointerEnter","onPointerLeave","Carousel","carouselEl","spaceBetweenSmDown","swiperSpaceBetweenSmDown","spaceBetweenSmUp","swiperSpaceBetweenSmUp","spaceBetweenMdUp","swiperSpaceBetweenMdUp","spaceBetweenLgUp","swiperSpaceBetweenLgUp","autoplayOptions","swiperAutoplayDelay","swiperLoop","swiperSpeed","removeActiveClass","axios_Axios","axios_AxiosError","axios_CanceledError","axios_isCancel","axios_CancelToken","axios_all","axios_isAxiosError","axios_spread","axios_toFormData","axios_AxiosHeaders","axios_HttpStatusCode","axios_getAdapter","axios_mergeConfig","IndicationPriceCalculator","formElement","static","yes","price","kw","no","updatePrice","priceElement","kwElement","buildingHeatedArea","waterHeating","prices","NumberFormat","currency","minimumFractionDigits","maximumFractionDigits","abTestSessionInitialised","ids","getVwoIds","_vwo_exp_ids","vwoExpIds","_vwo_exp","vwoExp","variationId","getVwoVariationId","campaignId","combination_chosen","EXTRA_KEY","fallbackTransport","otherTransports","actualMatcher","getEvent","validatedDsn","makeOverrideReleaseTransport","transports","transportsWithFallback","overrideDsn","allTransports","shouldDisableBecauseIsBrowserExtenstion","skipBrowserExtensionCheck","_window","nw","extensionObject","runtime","_isEmbeddedBrowserExtension","defaultIntegrations","isolationScopeData","collectedHeaders","userHeaders","processSpan","reqData","referer","processSegmentSpan","userIntegrations","isDefaultInstance","resolvedUserIntegrations","integrationsByName","currentInstance","existingInstance","filterDuplicates","getIntegrationsToSetup","clientClass","isClientClosed","getActiveClient","initialScope","setCurrentClient","initAndBind","getSentryEnv","webVitals","beforeStartSpan","shouldCreateSpanForRequest","onRequestSpanStart","_isBot","nav","isBotUserAgent","lastInteractionTimestamp","_pageloadSpan","_createRouteSpan","startSpanOptions","makeActive","isPageloadSpan","initialSpanName","finalStartSpanOptions","urlObject","idleSpan","activities","_idleTimeoutID","_childSpanTimeoutID","_finished","_finishReason","_autoFinishAllowed","disableAutoFinish","_cleanupHooks","trimIdleSpanEndTimestamp","previousActiveSpan","_cancelIdleTimeout","_cancelChildSpanTimeout","_restartIdleTimeout","_restartChildSpanTimeout","onIdleSpanEnded","cleanup","currentStatus","discardedSpans","childSpanJSON","childEndTimestamp","childStartTimestamp","spanStartedBeforeIdleSpanEnd","spanEndedBeforeFinalTimeout","stringifiedSpan","removeChildSpanFromSpan","definedEndTimestamp","spanEndTimestamp","latestSpanEndTimestamp","currentSpanJson","spanStartTimestamp","startedSpan","endedSpan","spanToAllowAutoFinish","startIdleSpan","emitFinish","errorCallback","registerSpanErrorInstrumentation","scripts","parentStartTimestamp","parentOp","longestScript","longest","script","invoker","invokerType","sourceURL","sourceFunctionName","sourceCharPosition","parentAttributes","interactionHandler","performanceEntries","transactionStartTime","requestStartTimestamp","responseEndTimestamp","responseStartTimestamp","_addRequest","_addNavigationSpans","_addPaintSpan","resourceUrl","ignoredResourceSpanOps","properties","entryKey","attributeKey","entryVal","_setResourceRequestAttributes","attributesWithResourceTiming","_addResourceSpans","connection","effectiveType","rtt","deviceMemory","hardwareConcurrency","_trackNavigator","addPerformanceEntries","oldPropagationContext","navigationOptions","maybeEndActiveSpan","traceOptions","traceparentData","extractTraceparentData","parsedSampleRand","getSampleRandFromTraceparentAndDsc","propagationContextFromHeaders","startingUrl","useSessionStorage","inMemoryPreviousTraceInfo","previousTraceInfo","getPreviousTraceFromSessionStorage","updatedPreviousTraceInfo","oldSampleRate","getSampleRate","previousTraceSpanCtx","addPreviousTraceSpanLink","storePreviousTraceInSessionStorage","isFirstTraceOnPageload","mutableSamplingContextData","linkTraces","pageloadSpanOptions","startBrowserTracingPageLoadSpan","navigationIsRedirect","spanData","cancelledStatus","shouldAttachHeadersWithTargets","targetUrl","resolvedUrl","currentOrigin","isSameOriginRequest","isRelativeSameOriginRequest","createdSpan","fullUrl","sanitizedFullUrl","shouldAttachHeaders2","__sentry_xhr_span_id__","urlForSpanName","streamedName","sentryTraceHeader","sentryBaggageHeader","traceparentHeader","__sentry_xhr_v3__","originalBaggageHeader","setHeaderOnXhr","addTracingHeadersToXhrRequest","xhrCallback","instrumentOutgoingRequests","module_metadata","stripMetadataFromStackFrames","_sentryModuleMetadata","ensureMetadataStacksAreParsed","getMetadataForUrl","addMetadataToStackFrames","routeTo","website","AppLoader","appUrl","scriptType","urlsJs","urlsCss","extractUrlsFromHtml","router","js","DOMParser","parseFromString","loaderJs","loaderCss","DailyLeads","STATISTICS_ENDPOINT","dailyLeads","apiUrl","COOKIE_NAME","cookieLeads","updateDailyLeadsDigits","leads","created_today","inOneMinute","digits","digitElemInsertStartIndex","dailyLeadsElem","dailyLeadsElemItems","digitIndex","digitElem","JobForm","translations","API_URL","jobForm","API_HEADERS","attributeInputs","uploadBoxEl","uploadBoxInputEl","uploadBoxBtnEl","uploadBoxStatusAmountEl","uploadBoxStatusFilesListEl","formInfoBoxServerErrorGlobal","first_name","last_name","phone","files","education_other","payloadFiles","updateSelectedFilesAmount","clearFilesList","uploadFiles","updateFilesButtonText","initOptionalInputs","initOtherInput","otherInput","isOther","trans","filesArray","fileEl","fileLabelEl","fileStatusEl","innerText","file","ok","errorData","uuid","original_filename","translation","preparePayload","job_position_id","checkboxes","customAttribute","month","day","year","scrollToFirstError","handleServerErrorMessageDisplay","showServerSuccessMessage","eT","firstErrorEl","errorMessage","ListFilter","capitalizedType","activeFilters","activeLabels","listItems","selectedItems","modalContentPlaceholder","updateEmptyMessage","injectScrollToButton","renderModalFilterItems","boundRunFilter","runFilter","listFilterControlItems","modalJobFilterTriggerElement","closePopover","modalJobFilterPopoverElement","scrollToButtonEl","listFilterContainer","added","listItem","updateUiState","selectedValue","selectedLabel","listFilterControlItem","jobsGroup","visibleItemsInJobsGroup","emptyGroupMessage","listFilterResultItem","itemId","VideoContent","videoUUID","videoBlock","text2","toggleButton","readMoreLabel","videoContentLabelReadMore","readLessLabel","videoContentLabelReadLess","ZipCodeForm","backend","TOKEN","formErrorGeneral","formErrorDigits","clientError","serverError","headline","submitButton","zipcode","updateResult","updateButton","updateClientError","updateServerError","Authorization","operated_by_thermondo","PressMailingForm","formObject","Email","showSubscriptionMessage","failure","FlexRateCalculator","resultElement","indicationPrice","loanTermInMonths","calculateMonthlyRate","annualInterestRate","monthlyInterestRate","customerReferral","customerReferralResult","customerReferralEmail","loadedAt","salutation","acceptedTerms","isButtonLoadingState","isSuspectedBot","honeypot","resultPage","getReferralId","accepted_terms","csrfToken","getCookie","NewsletterForm","engagementForms","choice","handleChoiceClick","engagementOnPageLeadFormIsSelected","isSelected","engagementOnPageLeadFormQuestion","question","engagementOnPageLeadFormTargetPage","targetPage","checkmark","param","isAbTest","tracking","recruitingChannel","antiScam","popover","accordion","usercentricsConfig","lazyLoad","invertCTA","notificationBanner","copyToClipboard","monitorCssAvailability","carousel","tabs","itemWidth","wrapWidth","tabsItem","handleItemClick","iframes","iframeAutoHeight","_vis_opt_queue"],"mappings":"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R,aAAA,EACA+E,SAAA,GACAqC,OAAA,EACA8C,OAAA,EACAtyF,SAAA,KACA+zF,iBAAA,EACAJ,YAAA,EACA0F,cAAA,EACArP,MAAA,KACAsP,aAAA,EACAC,cAAA,EACAC,YAAA,EACAC,oBAAA,EACA9L,YAAA,EACAoC,WAAA,OACApB,QAAA,qCACAzC,WAAA,uCACAV,QAAA,CACA59H,QAAA,IACAmB,QAAA,CACA,KACA,KACA,KACA,KACA,KACA,IACA,IACA,IACA,IACA,KAEA08H,QAAA,EACAG,SAAA,MAEA8N,KAAA,CAASh4B,QAAA,GACTiqB,MAAA,CACAxxG,SAAA,EACAprB,QAAA,CACA,GACA,IACA,EACA,KACA,IACA,KACA,EACA,IAGA4qI,SAAA,CACAC,SAAA,EACAviE,QAAA,GAEA07D,SAAA,CACAtE,UAAA,EACAc,MAAA,GAEAD,SAAA,CACA5tB,QAAA,EACAqzB,SAAA,OACA5vG,QAAA,GAEA4lG,WAAA,CACAviG,SAAA,EACAukB,UAAA,EACA8sF,WAAA,GAEAtmH,QAAA,CACAiV,SAAA,EACA32B,IAAA,QAEA48H,SAAA,CACA,aACA,OACA,WACA,eACA,OACA,SACA,WACA,WACA,MACA,UACA,cAEAxmE,SAAA,CACA,WACA,UACA,SAEAilE,KAAA,CACAgC,QAAA,UACAC,OAAA,qBACAnD,KAAA,OACAiD,MAAA,QACAG,YAAA,sBACAG,KAAA,OACAuK,UAAA,8BACAxI,OAAA,SACA9hD,SAAA,WACAivC,YAAA,eACAz+E,SAAA,WACAwvF,OAAA,SACAH,KAAA,OACA0K,OAAA,SACAC,eAAA,kBACAC,gBAAA,mBACAlE,SAAA,WACAmE,gBAAA,mBACAC,eAAA,kBACAC,WAAA,qBACA9K,SAAA,WACArnE,SAAA,WACA8/D,IAAA,MACAsS,SAAA,2BACA1O,MAAA,QACA2O,OAAA,SACA9O,QAAA,UACAkO,KAAA,OACAnjD,MAAA,QACAn9B,IAAA,MACAziB,IAAA,MACAjjB,MAAA,QACA8tG,SAAA,WACAh5F,QAAA,UACA+xG,cAAA,KACAC,aAAA,CACA,UACA,UACA,U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","debugId":"c19e77c7-afb6-50bd-94d5-d5ac93c61ed5"}