{"version":3,"file":"main.6290fab90dea77b44063.js","mappings":"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","sources":["webpack:///../../node_modules/@honeybadger-io/js/dist/browser/honeybadger.js","webpack:///../../node_modules/@honeybadger-io/react/dist/honeybadger-react.esm.js","webpack:///../../node_modules/accounting/accounting.js","webpack:///../../node_modules/i18n-js/app/assets/javascripts/i18n.js","webpack:///../../node_modules/jquery.cookie/jquery.cookie.js","webpack:///../../node_modules/moment/locale/da.js","webpack:///../../node_modules/moment/moment.js","webpack:///../../node_modules/object-assign/index.js","webpack:///../../node_modules/react-dom/index.js","webpack:///../../node_modules/react/index.js","webpack:///../../node_modules/scheduler/cjs/scheduler.production.min.js","webpack:///../../node_modules/scheduler/index.js","webpack:///../../config/webpack/availableLocales.js","webpack:///./boot/common/exportReact.js","webpack:///./boot/common/i18nSetup.js","webpack:///./boot/common/reactMount.js","webpack:///./boot/common/setMomentLocale.js","webpack:///./boot/main/hookActionSpecificSetup.js","webpack:///../../node_modules/@datadog/browser-core/esm/tools/experimentalFeatures.js","webpack:///../../node_modules/@datadog/browser-rum-core/esm/browser/performanceObservable.js","webpack:///../../node_modules/@datadog/browser-core/esm/boot/init.js","webpack:///../../node_modules/@datadog/browser-core/esm/tools/monitor.js","webpack:///../../node_modules/@datadog/browser-core/esm/tools/utils/timeUtils.js","webpack:///../../node_modules/@datadog/browser-core/esm/tools/utils/urlPolyfill.js","webpack:///../../node_modules/@datadog/browser-core/esm/browser/fetchObservable.js","webpack:///../../node_modules/@datadog/browser-core/esm/browser/cookie.js","webpack:///../../node_modules/@datadog/browser-core/esm/tools/utils/browserDetection.js","webpack:///../../node_modules/@datadog/browser-core/esm/domain/session/sessionStoreOperations.js","webpack:///../../node_modules/@datadog/browser-rum-core/esm/domain/tracing/identifier.js","webpack:///../../node_modules/@datadog/browser-rum-core/esm/domain/assembly.js","webpack:///../../node_modules/@datadog/browser-core/esm/browser/xhrObservable.js","webpack:///../../node_modules/@datadog/browser-rum-core/esm/domain/action/getActionNameFromElement.js","webpack:///../../node_modules/@datadog/browser-rum-core/esm/domain/getSelectorFromElement.js","webpack:///../../node_modules/@datadog/browser-rum-core/esm/domain/view/viewMetrics/interactionCountPolyfill.js","webpack:///../../node_modules/@datadog/browser-rum-core/esm/browser/viewportObservable.js","webpack:///../../node_modules/@datadog/browser-rum-core/esm/domain/startCustomerDataTelemetry.js","webpack:///../../node_modules/@datadog/browser-rum/esm/domain/replayStats.js","webpack:///../../node_modules/@datadog/browser-rum/esm/domain/record/trackers/trackMouseInteraction.js","webpack:///./utils/getCookies.js","webpack:///./utils/cookieConsent.js","webpack:///../../node_modules/uuid/dist/esm-browser/stringify.js","webpack:///../../node_modules/uuid/dist/esm-browser/regex.js","webpack:///../../node_modules/uuid/dist/esm-browser/parse.js","webpack:///../../node_modules/uuid/dist/esm-browser/validate.js","webpack:///../../node_modules/uuid/dist/esm-browser/sha1.js","webpack:///../../node_modules/uuid/dist/esm-browser/v5.js","webpack:///../../node_modules/uuid/dist/esm-browser/v35.js","webpack:///./utils/trackingUserId.js","webpack:///./boot/main/globalSetup/analytics/remarketing.js","webpack:///./boot/main/globalSetup/initializeAnalytics.js","webpack:///./boot/main/globalSetup/external-tools.js","webpack:///./boot/main/globalSetup/stickySidebar.js","webpack:///../../node_modules/@datadog/browser-core/esm/tools/display.js","webpack:///../../node_modules/@datadog/browser-core/esm/tools/catchUserErrors.js","webpack:///../../node_modules/@datadog/browser-core/esm/tools/utils/polyfills.js","webpack:///../../node_modules/@datadog/browser-core/esm/tools/getGlobalObject.js","webpack:///../../node_modules/@datadog/browser-core/esm/tools/utils/byteUtils.js","webpack:///../../node_modules/@datadog/browser-core/esm/tools/getZoneJsOriginalValue.js","webpack:///../../node_modules/@datadog/browser-core/esm/tools/timer.js","webpack:///../../node_modules/@datadog/browser-core/esm/tools/utils/functionUtils.js","webpack:///../../node_modules/@datadog/browser-core/esm/tools/serialisation/jsonStringify.js","webpack:///../../node_modules/@datadog/browser-core/esm/tools/utils/objectUtils.js","webpack:///../../node_modules/@datadog/browser-core/esm/domain/context/customerDataTracker.js","webpack:///../../node_modules/@datadog/browser-core/esm/tools/utils/typeUtils.js","webpack:///../../node_modules/@datadog/browser-core/esm/tools/mergeInto.js","webpack:///../../node_modules/@datadog/browser-core/esm/tools/serialisation/sanitize.js","webpack:///../../node_modules/@datadog/browser-core/esm/tools/observable.js","webpack:///../../node_modules/@datadog/browser-core/esm/domain/context/contextManager.js","webpack:///../../node_modules/@datadog/browser-core/esm/domain/trackingConsent.js","webpack:///../../node_modules/@datadog/browser-core/esm/browser/addEventListener.js","webpack:///../../node_modules/@datadog/browser-core/esm/domain/context/storeContextManager.js","webpack:///../../node_modules/@datadog/browser-core/esm/tools/encoder.js","webpack:///../../node_modules/@datadog/browser-core/esm/tools/stackTrace/computeStackTrace.js","webpack:///../../node_modules/@datadog/browser-core/esm/tools/stackTrace/handlingStack.js","webpack:///../../node_modules/@datadog/browser-core/esm/domain/error/error.js","webpack:///../../node_modules/@datadog/browser-core/esm/domain/configuration/intakeSites.js","webpack:///../../node_modules/@datadog/browser-core/esm/tools/utils/numberUtils.js","webpack:///../../node_modules/@datadog/browser-core/esm/tools/sendToExtension.js","webpack:///../../node_modules/@datadog/browser-core/esm/domain/connectivity/connectivity.js","webpack:///../../node_modules/@datadog/browser-core/esm/tools/utils/arrayUtils.js","webpack:///../../node_modules/@datadog/browser-core/esm/tools/boundedBuffer.js","webpack:///../../node_modules/@datadog/browser-core/esm/domain/telemetry/rawTelemetryEvent.types.js","webpack:///../../node_modules/@datadog/browser-core/esm/domain/telemetry/telemetry.js","webpack:///../../node_modules/@datadog/browser-core/esm/domain/user/user.js","webpack:///../../node_modules/@datadog/browser-core/esm/boot/displayAlreadyInitializedError.js","webpack:///../../node_modules/@datadog/browser-core/esm/tools/utils/stringUtils.js","webpack:///../../node_modules/@datadog/browser-rum-core/esm/domain/vital/vitalCollection.js","webpack:///../../node_modules/@datadog/browser-core/esm/transport/eventBridge.js","webpack:///../../node_modules/@datadog/browser-core/esm/tools/instrumentMethod.js","webpack:///../../node_modules/@datadog/browser-core/esm/domain/synthetics/syntheticsWorkerValues.js","webpack:///../../node_modules/@datadog/browser-core/esm/domain/session/storeStrategies/sessionStoreStrategy.js","webpack:///../../node_modules/@datadog/browser-core/esm/domain/session/sessionConstants.js","webpack:///../../node_modules/@datadog/browser-core/esm/domain/session/sessionStateValidation.js","webpack:///../../node_modules/@datadog/browser-core/esm/domain/session/sessionState.js","webpack:///../../node_modules/@datadog/browser-core/esm/domain/session/storeStrategies/sessionInCookie.js","webpack:///../../node_modules/@datadog/browser-core/esm/domain/session/storeStrategies/sessionInLocalStorage.js","webpack:///../../node_modules/@datadog/browser-core/esm/domain/configuration/endpointBuilder.js","webpack:///../../node_modules/@datadog/browser-core/esm/domain/configuration/tags.js","webpack:///../../node_modules/@datadog/browser-core/esm/domain/configuration/configuration.js","webpack:///../../node_modules/@datadog/browser-core/esm/tools/matchOption.js","webpack:///../../node_modules/@datadog/browser-rum-core/esm/browser/crypto.js","webpack:///../../node_modules/@datadog/browser-rum-core/esm/domain/tracing/tracer.js","webpack:///../../node_modules/@datadog/browser-rum-core/esm/domain/tracing/sampler.js","webpack:///../../node_modules/@datadog/browser-rum-core/esm/domain/configuration/configuration.js","webpack:///../../node_modules/@datadog/browser-rum-core/esm/domain/configuration/remoteConfiguration.js","webpack:///../../node_modules/@datadog/browser-core/esm/browser/pageExitObservable.js","webpack:///../../node_modules/@datadog/browser-rum-core/esm/browser/domMutationObservable.js","webpack:///../../node_modules/@datadog/browser-core/esm/domain/error/error.types.js","webpack:///../../node_modules/@datadog/browser-core/esm/domain/eventRateLimiter/createEventRateLimiter.js","webpack:///../../node_modules/@datadog/browser-rum-core/esm/domain/limitModification.js","webpack:///../../node_modules/@datadog/browser-core/esm/tools/abstractLifeCycle.js","webpack:///../../node_modules/@datadog/browser-core/esm/tools/valueHistory.js","webpack:///../../node_modules/@datadog/browser-rum-core/esm/domain/resource/resourceUtils.js","webpack:///../../node_modules/@datadog/browser-core/esm/domain/configuration/transportConfiguration.js","webpack:///../../node_modules/@datadog/browser-rum-core/esm/domain/requestCollection.js","webpack:///../../node_modules/@datadog/browser-rum-core/esm/domain/discardNegativeDuration.js","webpack:///../../node_modules/@datadog/browser-rum-core/esm/domain/trackEventCounts.js","webpack:///../../node_modules/@datadog/browser-rum-core/esm/browser/firstInputPolyfill.js","webpack:///../../node_modules/@datadog/browser-rum-core/esm/domain/waitPageActivityEnd.js","webpack:///../../node_modules/@datadog/browser-rum-core/esm/browser/polyfills.js","webpack:///../../node_modules/@datadog/browser-rum-core/esm/browser/htmlDomUtils.js","webpack:///../../node_modules/@datadog/browser-rum-core/esm/domain/privacy.js","webpack:///../../node_modules/@datadog/browser-rum-core/esm/domain/action/listenActionEvents.js","webpack:///../../node_modules/@datadog/browser-rum-core/esm/domain/action/computeFrustration.js","webpack:///../../node_modules/@datadog/browser-rum-core/esm/domain/action/interactionSelectorCache.js","webpack:///../../node_modules/@datadog/browser-rum-core/esm/domain/action/trackClickActions.js","webpack:///../../node_modules/@datadog/browser-rum-core/esm/domain/action/actionCollection.js","webpack:///../../node_modules/@datadog/browser-core/esm/domain/console/consoleObservable.js","webpack:///../../node_modules/@datadog/browser-core/esm/domain/report/reportObservable.js","webpack:///../../node_modules/@datadog/browser-core/esm/tools/requestIdleCallback.js","webpack:///../../node_modules/@datadog/browser-rum-core/esm/domain/resource/matchRequestResourceEntry.js","webpack:///../../node_modules/@datadog/browser-core/esm/browser/runOnReadyState.js","webpack:///../../node_modules/@datadog/browser-rum-core/esm/domain/tracing/getDocumentTraceId.js","webpack:///../../node_modules/@datadog/browser-rum-core/esm/browser/performanceUtils.js","webpack:///../../node_modules/@datadog/browser-rum-core/esm/domain/resource/retrieveInitialDocumentResourceTiming.js","webpack:///../../node_modules/@datadog/browser-rum-core/esm/domain/resource/resourceCollection.js","webpack:///../../node_modules/@datadog/browser-rum-core/esm/domain/view/viewMetrics/trackFirstContentfulPaint.js","webpack:///../../node_modules/@datadog/browser-rum-core/esm/domain/view/viewMetrics/trackLargestContentfulPaint.js","webpack:///../../node_modules/@datadog/browser-rum-core/esm/domain/view/viewMetrics/trackFirstHidden.js","webpack:///../../node_modules/@datadog/browser-rum-core/esm/domain/view/viewMetrics/trackCumulativeLayoutShift.js","webpack:///../../node_modules/@datadog/browser-rum-core/esm/domain/view/viewMetrics/trackInteractionToNextPaint.js","webpack:///../../node_modules/@datadog/browser-rum-core/esm/browser/scroll.js","webpack:///../../node_modules/@datadog/browser-rum-core/esm/domain/view/trackViews.js","webpack:///../../node_modules/@datadog/browser-core/esm/domain/session/sessionManager.js","webpack:///../../node_modules/@datadog/browser-rum-core/esm/domain/rumSessionManager.js","webpack:///../../node_modules/@datadog/browser-core/esm/transport/batch.js","webpack:///../../node_modules/@datadog/browser-core/esm/transport/sendWithRetryStrategy.js","webpack:///../../node_modules/@datadog/browser-core/esm/tools/utils/responseUtils.js","webpack:///../../node_modules/@datadog/browser-core/esm/transport/httpRequest.js","webpack:///../../node_modules/@datadog/browser-rum-core/esm/browser/locationChangeObservable.js","webpack:///../../node_modules/@datadog/browser-rum-core/esm/domain/contexts/pageStateHistory.js","webpack:///../../node_modules/@datadog/browser-rum-core/esm/browser/cookieObservable.js","webpack:///../../node_modules/@datadog/browser-rum-core/esm/domain/contexts/ciVisibilityContext.js","webpack:///../../node_modules/@datadog/browser-rum/esm/domain/record/serialization/serializationUtils.js","webpack:///../../node_modules/@datadog/browser-rum/esm/domain/record/serialization/serializeStyleSheets.js","webpack:///../../node_modules/@datadog/browser-rum/esm/domain/record/serialization/serializeAttribute.js","webpack:///../../node_modules/@datadog/browser-rum/esm/domain/record/serialization/serializeAttributes.js","webpack:///../../node_modules/@datadog/browser-rum/esm/domain/record/serialization/serializeNode.js","webpack:///../../node_modules/@datadog/browser-rum/esm/types/sessionReplayConstants.js","webpack:///../../node_modules/@datadog/browser-rum/esm/domain/record/eventsUtils.js","webpack:///../../node_modules/@datadog/browser-rum/esm/domain/record/viewports.js","webpack:///../../node_modules/@datadog/browser-rum/esm/domain/record/assembly.js","webpack:///../../node_modules/@datadog/browser-rum/esm/domain/record/trackers/trackMove.js","webpack:///../../node_modules/@datadog/browser-rum/esm/domain/record/trackers/trackScroll.js","webpack:///../../node_modules/@datadog/browser-rum/esm/domain/record/trackers/trackStyleSheet.js","webpack:///../../node_modules/@datadog/browser-rum/esm/domain/record/trackers/trackInput.js","webpack:///../../node_modules/@datadog/browser-rum/esm/domain/record/trackers/trackMutation.js","webpack:///../../node_modules/@datadog/browser-rum/esm/domain/record/mutationBatch.js","webpack:///../../node_modules/@datadog/browser-rum/esm/domain/record/shadowRootsController.js","webpack:///../../node_modules/@datadog/browser-rum/esm/domain/deflate/deflateEncoder.js","webpack:///../../node_modules/@datadog/browser-rum/esm/domain/deflate/deflateWorker.js","webpack:///../../node_modules/@datadog/browser-rum/esm/boot/isBrowserSupported.js","webpack:///../../node_modules/@datadog/browser-rum/esm/entries/main.js","webpack:///../../node_modules/@datadog/browser-rum-core/esm/boot/rumPublicApi.js","webpack:///../../node_modules/@datadog/browser-rum-core/esm/domain/contexts/commonContext.js","webpack:///../../node_modules/@datadog/browser-rum-core/esm/boot/preStartRum.js","webpack:///../../node_modules/@datadog/browser-core/esm/domain/session/sessionStore.js","webpack:///../../node_modules/@datadog/browser-rum-core/esm/domain/plugins.js","webpack:///../../node_modules/@datadog/browser-rum-core/esm/boot/startRum.js","webpack:///../../node_modules/@datadog/browser-rum-core/esm/domain/error/trackConsoleError.js","webpack:///../../node_modules/@datadog/browser-core/esm/domain/error/trackRuntimeError.js","webpack:///../../node_modules/@datadog/browser-rum-core/esm/domain/error/errorCollection.js","webpack:///../../node_modules/@datadog/browser-rum-core/esm/domain/contexts/internalContext.js","webpack:///../../node_modules/@datadog/browser-rum-core/esm/domain/lifeCycle.js","webpack:///../../node_modules/@datadog/browser-rum-core/esm/domain/contexts/featureFlagContext.js","webpack:///../../node_modules/@datadog/browser-core/esm/domain/session/oldCookiesMigration.js","webpack:///../../node_modules/@datadog/browser-rum-core/esm/transport/startRumEventBridge.js","webpack:///../../node_modules/@datadog/browser-rum-core/esm/transport/startRumBatch.js","webpack:///../../node_modules/@datadog/browser-core/esm/transport/startBatchWithReplica.js","webpack:///../../node_modules/@datadog/browser-core/esm/transport/flushController.js","webpack:///../../node_modules/@datadog/browser-rum-core/esm/browser/windowOpenObservable.js","webpack:///../../node_modules/@datadog/browser-rum-core/esm/domain/contexts/viewHistory.js","webpack:///../../node_modules/@datadog/browser-rum-core/esm/domain/contexts/displayContext.js","webpack:///../../node_modules/@datadog/browser-rum-core/esm/domain/contexts/urlContexts.js","webpack:///../../node_modules/@datadog/browser-rum-core/esm/domain/action/clickChain.js","webpack:///../../node_modules/@datadog/browser-rum-core/esm/domain/contexts/syntheticsContext.js","webpack:///../../node_modules/@datadog/browser-rum-core/esm/domain/view/viewCollection.js","webpack:///../../node_modules/@datadog/browser-rum-core/esm/domain/view/viewMetrics/trackScrollMetrics.js","webpack:///../../node_modules/@datadog/browser-rum-core/esm/domain/view/viewMetrics/trackNavigationTimings.js","webpack:///../../node_modules/@datadog/browser-rum-core/esm/domain/view/viewMetrics/trackCommonViewMetrics.js","webpack:///../../node_modules/@datadog/browser-rum-core/esm/domain/view/viewMetrics/trackInitialViewMetrics.js","webpack:///../../node_modules/@datadog/browser-rum-core/esm/domain/view/viewMetrics/trackFirstInput.js","webpack:///../../node_modules/@datadog/browser-rum-core/esm/domain/view/trackViewEventCounts.js","webpack:///../../node_modules/@datadog/browser-rum-core/esm/domain/view/viewMetrics/trackLoadingTime.js","webpack:///../../node_modules/@datadog/browser-core/esm/tools/taskQueue.js","webpack:///../../node_modules/@datadog/browser-rum-core/esm/domain/longAnimationFrame/longAnimationFrameCollection.js","webpack:///../../node_modules/@datadog/browser-rum-core/esm/domain/longTask/longTaskCollection.js","webpack:///../../node_modules/@datadog/browser-rum-core/esm/domain/error/trackReportError.js","webpack:///../../node_modules/@datadog/browser-core/esm/tools/readBytesFromStream.js","webpack:///../../node_modules/@datadog/browser-rum/esm/boot/recorderApi.js","webpack:///../../node_modules/@datadog/browser-rum/esm/boot/preStartStrategy.js","webpack:///../../node_modules/@datadog/browser-rum/esm/boot/postStartStrategy.js","webpack:///../../node_modules/@datadog/browser-rum/esm/domain/getSessionReplayLink.js","webpack:///../../node_modules/@datadog/browser-rum-core/esm/domain/getSessionReplayUrl.js","webpack:///../../node_modules/@datadog/browser-rum/esm/boot/startRecording.js","webpack:///../../node_modules/@datadog/browser-rum/esm/domain/segmentCollection/segmentCollection.js","webpack:///../../node_modules/@datadog/browser-rum/esm/domain/startRecordBridge.js","webpack:///../../node_modules/@datadog/browser-rum/esm/domain/segmentCollection/buildReplayPayload.js","webpack:///../../node_modules/@datadog/browser-rum/esm/domain/segmentCollection/segment.js","webpack:///../../node_modules/@datadog/browser-rum/esm/domain/record/record.js","webpack:///../../node_modules/@datadog/browser-rum/esm/domain/record/elementsScrollPositions.js","webpack:///../../node_modules/@datadog/browser-rum/esm/domain/record/startFullSnapshots.js","webpack:///../../node_modules/@datadog/browser-rum/esm/domain/record/recordIds.js","webpack:///../../node_modules/@datadog/browser-rum/esm/domain/record/trackers/trackViewportResize.js","webpack:///../../node_modules/@datadog/browser-rum/esm/domain/record/trackers/trackFrustration.js","webpack:///../../node_modules/@datadog/browser-rum/esm/domain/record/trackers/trackViewEnd.js","webpack:///../../node_modules/@datadog/browser-rum/esm/domain/record/serialization/serializeDocument.js","webpack:///../../node_modules/@datadog/browser-rum/esm/domain/record/trackers/trackMediaInteraction.js","webpack:///../../node_modules/@datadog/browser-rum/esm/domain/record/trackers/trackFocus.js","webpack:///./boot/main/globalSetup/setupDatadog.js","webpack:///./boot/main/globalSetup/setupHoneybadger.js","webpack:///./boot/main/globalSetup/index.js","webpack:///./boot/main/globalSetup/foundation.js","webpack:///./admin/instructionVideoEmbed/components/InstructionVideoEmbed.js","webpack:///./boot/main/components.lazy.js","webpack:///./boot/main/exposeComponents.js","webpack:///./boot/main/actionEntryPoints.js","webpack:///./boot/main/index.js","webpack:///./boot/vendor.js","webpack:///./boot/webpackPublicPath.js","webpack:///./common/components/Button.js","webpack:///./common/components/ErrorComponent.js","webpack:///./common/json/extract/match.js","webpack:///./common/json/extract/array.js","webpack:///./common/json/extract/array/items.js","webpack:///./common/json/extract/object.js","webpack:///./common/json/extract/object/record.js","webpack:///./common/json/extract/object/map.js","webpack:///./common/json/extract/nullable.js","webpack:///./common/json/extract/withDefault.js","webpack:///./common/json/extract/oneOf.js","webpack:///./common/json/extract/exactly.js","webpack:///./common/json/extract/rails/decimal.js","webpack:///./common/json/extract/rails/id.js","webpack:///./common/json/extract/failure.js","webpack:///./common/json/extract/primitive.js","webpack:///./common/json/extract/dates.js","webpack:///./common/json/extract/locale.js","webpack:///./common/json/extract/money.js","webpack:///./common/types/locale.js","webpack:///./common/types/money.js","webpack:///./site/allSites.js","webpack:///./site/currentSite.js","webpack:///./utils/analytics.js","webpack:///./utils/analyticsModules/analyticsLinkTracking.js","webpack:///./utils/currencyUtils.js","webpack:///./utils/satisfiesMediaQuery.js","webpack:///../../lib/javascript/putki/index.js","webpack:///../../node_modules/what-input/dist/what-input.js","webpack:///external var \"Modernizr\"","webpack:///external var \"jQuery\"","webpack:///../../node_modules/classnames/index.js"],"sourcesContent":["(function (global, factory) {\n\ttypeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n\ttypeof define === 'function' && define.amd ? define(factory) :\n\t(global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.Honeybadger = factory());\n})(this, (function () { 'use strict';\n\n\tvar commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};\n\n\tfunction getDefaultExportFromCjs (x) {\n\t\treturn x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x;\n\t}\n\n\tfunction getAugmentedNamespace(n) {\n\t  var f = n.default;\n\t\tif (typeof f == \"function\") {\n\t\t\tvar a = function () {\n\t\t\t\treturn f.apply(this, arguments);\n\t\t\t};\n\t\t\ta.prototype = f.prototype;\n\t  } else a = {};\n\t  Object.defineProperty(a, '__esModule', {value: true});\n\t\tObject.keys(n).forEach(function (k) {\n\t\t\tvar d = Object.getOwnPropertyDescriptor(n, k);\n\t\t\tObject.defineProperty(a, k, d.get ? d : {\n\t\t\t\tenumerable: true,\n\t\t\t\tget: function () {\n\t\t\t\t\treturn n[k];\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\t\treturn a;\n\t}\n\n\tvar browser$1 = {};\n\n\tvar src = {};\n\n\tvar events = {};\n\n\tvar util$1 = {};\n\n\tvar UNKNOWN_FUNCTION = '<unknown>';\n\t/**\n\t * This parses the different stack traces and puts them into one format\n\t * This borrows heavily from TraceKit (https://github.com/csnover/TraceKit)\n\t */\n\n\tfunction parse(stackString) {\n\t  var lines = stackString.split('\\n');\n\t  return lines.reduce(function (stack, line) {\n\t    var parseResult = parseChrome(line) || parseWinjs(line) || parseGecko(line) || parseNode(line) || parseJSC(line);\n\n\t    if (parseResult) {\n\t      stack.push(parseResult);\n\t    }\n\n\t    return stack;\n\t  }, []);\n\t}\n\tvar chromeRe = /^\\s*at (.*?) ?\\(((?:file|https?|blob|chrome-extension|native|eval|webpack|<anonymous>|\\/|[a-z]:\\\\|\\\\\\\\).*?)(?::(\\d+))?(?::(\\d+))?\\)?\\s*$/i;\n\tvar chromeEvalRe = /\\((\\S*)(?::(\\d+))(?::(\\d+))\\)/;\n\n\tfunction parseChrome(line) {\n\t  var parts = chromeRe.exec(line);\n\n\t  if (!parts) {\n\t    return null;\n\t  }\n\n\t  var isNative = parts[2] && parts[2].indexOf('native') === 0; // start of line\n\n\t  var isEval = parts[2] && parts[2].indexOf('eval') === 0; // start of line\n\n\t  var submatch = chromeEvalRe.exec(parts[2]);\n\n\t  if (isEval && submatch != null) {\n\t    // throw out eval line/column and use top-most line/column number\n\t    parts[2] = submatch[1]; // url\n\n\t    parts[3] = submatch[2]; // line\n\n\t    parts[4] = submatch[3]; // column\n\t  }\n\n\t  return {\n\t    file: !isNative ? parts[2] : null,\n\t    methodName: parts[1] || UNKNOWN_FUNCTION,\n\t    arguments: isNative ? [parts[2]] : [],\n\t    lineNumber: parts[3] ? +parts[3] : null,\n\t    column: parts[4] ? +parts[4] : null\n\t  };\n\t}\n\n\tvar winjsRe = /^\\s*at (?:((?:\\[object object\\])?.+) )?\\(?((?:file|ms-appx|https?|webpack|blob):.*?):(\\d+)(?::(\\d+))?\\)?\\s*$/i;\n\n\tfunction parseWinjs(line) {\n\t  var parts = winjsRe.exec(line);\n\n\t  if (!parts) {\n\t    return null;\n\t  }\n\n\t  return {\n\t    file: parts[2],\n\t    methodName: parts[1] || UNKNOWN_FUNCTION,\n\t    arguments: [],\n\t    lineNumber: +parts[3],\n\t    column: parts[4] ? +parts[4] : null\n\t  };\n\t}\n\n\tvar geckoRe = /^\\s*(.*?)(?:\\((.*?)\\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|\\[native).*?|[^@]*bundle)(?::(\\d+))?(?::(\\d+))?\\s*$/i;\n\tvar geckoEvalRe = /(\\S+) line (\\d+)(?: > eval line \\d+)* > eval/i;\n\n\tfunction parseGecko(line) {\n\t  var parts = geckoRe.exec(line);\n\n\t  if (!parts) {\n\t    return null;\n\t  }\n\n\t  var isEval = parts[3] && parts[3].indexOf(' > eval') > -1;\n\t  var submatch = geckoEvalRe.exec(parts[3]);\n\n\t  if (isEval && submatch != null) {\n\t    // throw out eval line/column and use top-most line number\n\t    parts[3] = submatch[1];\n\t    parts[4] = submatch[2];\n\t    parts[5] = null; // no column when eval\n\t  }\n\n\t  return {\n\t    file: parts[3],\n\t    methodName: parts[1] || UNKNOWN_FUNCTION,\n\t    arguments: parts[2] ? parts[2].split(',') : [],\n\t    lineNumber: parts[4] ? +parts[4] : null,\n\t    column: parts[5] ? +parts[5] : null\n\t  };\n\t}\n\n\tvar javaScriptCoreRe = /^\\s*(?:([^@]*)(?:\\((.*?)\\))?@)?(\\S.*?):(\\d+)(?::(\\d+))?\\s*$/i;\n\n\tfunction parseJSC(line) {\n\t  var parts = javaScriptCoreRe.exec(line);\n\n\t  if (!parts) {\n\t    return null;\n\t  }\n\n\t  return {\n\t    file: parts[3],\n\t    methodName: parts[1] || UNKNOWN_FUNCTION,\n\t    arguments: [],\n\t    lineNumber: +parts[4],\n\t    column: parts[5] ? +parts[5] : null\n\t  };\n\t}\n\n\tvar nodeRe = /^\\s*at (?:((?:\\[object object\\])?[^\\\\/]+(?: \\[as \\S+\\])?) )?\\(?(.*?):(\\d+)(?::(\\d+))?\\)?\\s*$/i;\n\n\tfunction parseNode(line) {\n\t  var parts = nodeRe.exec(line);\n\n\t  if (!parts) {\n\t    return null;\n\t  }\n\n\t  return {\n\t    file: parts[2],\n\t    methodName: parts[1] || UNKNOWN_FUNCTION,\n\t    arguments: [],\n\t    lineNumber: +parts[3],\n\t    column: parts[4] ? +parts[4] : null\n\t  };\n\t}\n\n\tvar stackTraceParser_esm = /*#__PURE__*/Object.freeze({\n\t\t__proto__: null,\n\t\tparse: parse\n\t});\n\n\tvar require$$0$1 = /*@__PURE__*/getAugmentedNamespace(stackTraceParser_esm);\n\n\t(function (exports) {\n\t\tvar __createBinding = (commonjsGlobal && commonjsGlobal.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n\t\t    if (k2 === undefined) k2 = k;\n\t\t    var desc = Object.getOwnPropertyDescriptor(m, k);\n\t\t    if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n\t\t      desc = { enumerable: true, get: function() { return m[k]; } };\n\t\t    }\n\t\t    Object.defineProperty(o, k2, desc);\n\t\t}) : (function(o, m, k, k2) {\n\t\t    if (k2 === undefined) k2 = k;\n\t\t    o[k2] = m[k];\n\t\t}));\n\t\tvar __setModuleDefault = (commonjsGlobal && commonjsGlobal.__setModuleDefault) || (Object.create ? (function(o, v) {\n\t\t    Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n\t\t}) : function(o, v) {\n\t\t    o[\"default\"] = v;\n\t\t});\n\t\tvar __importStar = (commonjsGlobal && commonjsGlobal.__importStar) || function (mod) {\n\t\t    if (mod && mod.__esModule) return mod;\n\t\t    var result = {};\n\t\t    if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n\t\t    __setModuleDefault(result, mod);\n\t\t    return result;\n\t\t};\n\t\tvar __awaiter = (commonjsGlobal && commonjsGlobal.__awaiter) || function (thisArg, _arguments, P, generator) {\n\t\t    function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n\t\t    return new (P || (P = Promise))(function (resolve, reject) {\n\t\t        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n\t\t        function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n\t\t        function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n\t\t        step((generator = generator.apply(thisArg, _arguments || [])).next());\n\t\t    });\n\t\t};\n\t\tvar __generator = (commonjsGlobal && commonjsGlobal.__generator) || function (thisArg, body) {\n\t\t    var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n\t\t    return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n\t\t    function verb(n) { return function (v) { return step([n, v]); }; }\n\t\t    function step(op) {\n\t\t        if (f) throw new TypeError(\"Generator is already executing.\");\n\t\t        while (_) try {\n\t\t            if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n\t\t            if (y = 0, t) op = [op[0] & 2, t.value];\n\t\t            switch (op[0]) {\n\t\t                case 0: case 1: t = op; break;\n\t\t                case 4: _.label++; return { value: op[1], done: false };\n\t\t                case 5: _.label++; y = op[1]; op = [0]; continue;\n\t\t                case 7: op = _.ops.pop(); _.trys.pop(); continue;\n\t\t                default:\n\t\t                    if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n\t\t                    if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n\t\t                    if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n\t\t                    if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n\t\t                    if (t[2]) _.ops.pop();\n\t\t                    _.trys.pop(); continue;\n\t\t            }\n\t\t            op = body.call(thisArg, _);\n\t\t        } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n\t\t        if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n\t\t    }\n\t\t};\n\t\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\t\texports.logDeprecatedMethod = exports.globalThisOrWindow = exports.isBrowserConfig = exports.clone = exports.formatCGIData = exports.filterUrl = exports.filter = exports.generateStackTrace = exports.endpoint = exports.instrumentConsole = exports.instrument = exports.isErrorObject = exports.makeNotice = exports.logger = exports.sanitize = exports.shallowClone = exports.runAfterNotifyHandlers = exports.runBeforeNotifyHandlers = exports.getSourceForBacktrace = exports.getCauses = exports.calculateBacktraceShift = exports.DEFAULT_BACKTRACE_SHIFT = exports.makeBacktrace = exports.objectIsExtensible = exports.objectIsEmpty = exports.mergeNotice = exports.merge = void 0;\n\t\t/* eslint-disable prefer-rest-params */\n\t\tvar stackTraceParser = __importStar(require$$0$1);\n\t\tfunction merge(obj1, obj2) {\n\t\t    var result = {};\n\t\t    for (var k in obj1) {\n\t\t        result[k] = obj1[k];\n\t\t    }\n\t\t    for (var k in obj2) {\n\t\t        result[k] = obj2[k];\n\t\t    }\n\t\t    return result;\n\t\t}\n\t\texports.merge = merge;\n\t\tfunction mergeNotice(notice1, notice2) {\n\t\t    var result = merge(notice1, notice2);\n\t\t    if (notice1.context && notice2.context) {\n\t\t        result.context = merge(notice1.context, notice2.context);\n\t\t    }\n\t\t    return result;\n\t\t}\n\t\texports.mergeNotice = mergeNotice;\n\t\tfunction objectIsEmpty(obj) {\n\t\t    for (var k in obj) {\n\t\t        if (Object.prototype.hasOwnProperty.call(obj, k)) {\n\t\t            return false;\n\t\t        }\n\t\t    }\n\t\t    return true;\n\t\t}\n\t\texports.objectIsEmpty = objectIsEmpty;\n\t\tfunction objectIsExtensible(obj) {\n\t\t    if (typeof Object.isExtensible !== 'function') {\n\t\t        return true;\n\t\t    }\n\t\t    return Object.isExtensible(obj);\n\t\t}\n\t\texports.objectIsExtensible = objectIsExtensible;\n\t\tfunction makeBacktrace(stack, filterHbSourceCode, logger) {\n\t\t    if (filterHbSourceCode === void 0) { filterHbSourceCode = false; }\n\t\t    if (logger === void 0) { logger = console; }\n\t\t    if (!stack) {\n\t\t        return [];\n\t\t    }\n\t\t    try {\n\t\t        var backtrace = stackTraceParser\n\t\t            .parse(stack)\n\t\t            .map(function (line) {\n\t\t            return {\n\t\t                file: line.file,\n\t\t                method: line.methodName,\n\t\t                number: line.lineNumber,\n\t\t                column: line.column\n\t\t            };\n\t\t        });\n\t\t        if (filterHbSourceCode) {\n\t\t            backtrace.splice(0, calculateBacktraceShift(backtrace));\n\t\t        }\n\t\t        return backtrace;\n\t\t    }\n\t\t    catch (err) {\n\t\t        logger.debug(err);\n\t\t        return [];\n\t\t    }\n\t\t}\n\t\texports.makeBacktrace = makeBacktrace;\n\t\tfunction isFrameFromHbSourceCode(frame) {\n\t\t    var hasHbFile = false;\n\t\t    var hasHbMethod = false;\n\t\t    if (frame.file) {\n\t\t        hasHbFile = frame.file.toLowerCase().indexOf('@honeybadger-io') > -1;\n\t\t    }\n\t\t    if (frame.method) {\n\t\t        hasHbMethod = frame.method.toLowerCase().indexOf('@honeybadger-io') > -1;\n\t\t    }\n\t\t    return hasHbFile || hasHbMethod;\n\t\t}\n\t\texports.DEFAULT_BACKTRACE_SHIFT = 3;\n\t\t/**\n\t\t * If {@link generateStackTrace} is used, we want to exclude frames that come from\n\t\t * Honeybadger's source code.\n\t\t *\n\t\t * Logic:\n\t\t * - For each frame, increment the shift if source code is from Honeybadger\n\t\t * - If a frame from an <anonymous> file is encountered increment the shift ONLY if between Honeybadger source code\n\t\t *   (i.e. previous and next frames are from Honeybadger)\n\t\t * - Exit when frame encountered is not from Honeybadger source code\n\t\t *\n\t\t * Note: this will not always work, especially in browser versions where code\n\t\t *       is minified, uglified and bundled.\n\t\t *       For those cases we default to 3:\n\t\t *       - generateStackTrace\n\t\t *       - makeNotice\n\t\t *       - notify\n\t\t */\n\t\tfunction calculateBacktraceShift(backtrace) {\n\t\t    var shift = 0;\n\t\t    for (var i = 0; i < backtrace.length; i++) {\n\t\t        var frame = backtrace[i];\n\t\t        if (isFrameFromHbSourceCode(frame)) {\n\t\t            shift++;\n\t\t            continue;\n\t\t        }\n\t\t        if (!frame.file || frame.file === '<anonymous>') {\n\t\t            var nextFrame = backtrace[i + 1];\n\t\t            if (nextFrame && isFrameFromHbSourceCode(nextFrame)) {\n\t\t                shift++;\n\t\t                continue;\n\t\t            }\n\t\t        }\n\t\t        break;\n\t\t    }\n\t\t    return shift || exports.DEFAULT_BACKTRACE_SHIFT;\n\t\t}\n\t\texports.calculateBacktraceShift = calculateBacktraceShift;\n\t\tfunction getCauses(notice, logger) {\n\t\t    if (notice.cause) {\n\t\t        var causes = [];\n\t\t        var cause = notice;\n\t\t        // @ts-ignore this throws an error if tsconfig.json has strict: true\n\t\t        while (causes.length < 3 && (cause = cause.cause)) {\n\t\t            causes.push({\n\t\t                class: cause.name,\n\t\t                message: cause.message,\n\t\t                backtrace: typeof cause.stack == 'string' ? makeBacktrace(cause.stack, false, logger) : null\n\t\t            });\n\t\t        }\n\t\t        return causes;\n\t\t    }\n\t\t    return [];\n\t\t}\n\t\texports.getCauses = getCauses;\n\t\tfunction getSourceForBacktrace(backtrace, getSourceFileHandler) {\n\t\t    return __awaiter(this, void 0, void 0, function () {\n\t\t        var result, index, trace, fileContent;\n\t\t        return __generator(this, function (_a) {\n\t\t            switch (_a.label) {\n\t\t                case 0:\n\t\t                    result = [];\n\t\t                    if (!getSourceFileHandler || !backtrace || !backtrace.length) {\n\t\t                        return [2 /*return*/, result];\n\t\t                    }\n\t\t                    index = 0;\n\t\t                    _a.label = 1;\n\t\t                case 1:\n\t\t                    if (!backtrace.length) return [3 /*break*/, 3];\n\t\t                    trace = backtrace.splice(0)[index];\n\t\t                    return [4 /*yield*/, getSourceFileHandler(trace.file)];\n\t\t                case 2:\n\t\t                    fileContent = _a.sent();\n\t\t                    result[index] = getSourceCodeSnippet(fileContent, trace.number, trace.column, 2);\n\t\t                    index++;\n\t\t                    return [3 /*break*/, 1];\n\t\t                case 3: return [2 /*return*/, result];\n\t\t            }\n\t\t        });\n\t\t    });\n\t\t}\n\t\texports.getSourceForBacktrace = getSourceForBacktrace;\n\t\tfunction runBeforeNotifyHandlers(notice, handlers) {\n\t\t    var results = [];\n\t\t    var result = true;\n\t\t    for (var i = 0, len = handlers.length; i < len; i++) {\n\t\t        var handler = handlers[i];\n\t\t        var handlerResult = handler(notice);\n\t\t        if (handlerResult === false) {\n\t\t            result = false;\n\t\t        }\n\t\t        results.push(handlerResult);\n\t\t    }\n\t\t    return {\n\t\t        results: results,\n\t\t        result: result\n\t\t    };\n\t\t}\n\t\texports.runBeforeNotifyHandlers = runBeforeNotifyHandlers;\n\t\tfunction runAfterNotifyHandlers(notice, handlers, error) {\n\t\t    if (notice && notice.afterNotify) {\n\t\t        notice.afterNotify(error, notice);\n\t\t    }\n\t\t    for (var i = 0, len = handlers.length; i < len; i++) {\n\t\t        handlers[i](error, notice);\n\t\t    }\n\t\t    return true;\n\t\t}\n\t\texports.runAfterNotifyHandlers = runAfterNotifyHandlers;\n\t\t// Returns a new object with properties from other object.\n\t\tfunction shallowClone(obj) {\n\t\t    if (typeof (obj) !== 'object' || obj === null) {\n\t\t        return {};\n\t\t    }\n\t\t    var result = {};\n\t\t    for (var k in obj) {\n\t\t        result[k] = obj[k];\n\t\t    }\n\t\t    return result;\n\t\t}\n\t\texports.shallowClone = shallowClone;\n\t\tfunction sanitize(obj, maxDepth) {\n\t\t    if (maxDepth === void 0) { maxDepth = 8; }\n\t\t    var seenObjects = [];\n\t\t    function seen(obj) {\n\t\t        if (!obj || typeof (obj) !== 'object') {\n\t\t            return false;\n\t\t        }\n\t\t        for (var i = 0; i < seenObjects.length; i++) {\n\t\t            var value = seenObjects[i];\n\t\t            if (value === obj) {\n\t\t                return true;\n\t\t            }\n\t\t        }\n\t\t        seenObjects.push(obj);\n\t\t        return false;\n\t\t    }\n\t\t    function canSerialize(obj) {\n\t\t        var typeOfObj = typeof obj;\n\t\t        // Functions are TMI\n\t\t        if (/function/.test(typeOfObj)) {\n\t\t            // Let special toJSON method pass as it's used by JSON.stringify (#722)\n\t\t            return obj.name === 'toJSON';\n\t\t        }\n\t\t        // Symbols can't convert to strings.\n\t\t        if (/symbol/.test(typeOfObj)) {\n\t\t            return false;\n\t\t        }\n\t\t        if (obj === null) {\n\t\t            return false;\n\t\t        }\n\t\t        // No prototype, likely created with `Object.create(null)`.\n\t\t        if (typeof obj === 'object' && typeof obj.hasOwnProperty === 'undefined') {\n\t\t            return false;\n\t\t        }\n\t\t        return true;\n\t\t    }\n\t\t    function serialize(obj, depth) {\n\t\t        if (depth === void 0) { depth = 0; }\n\t\t        if (depth >= maxDepth) {\n\t\t            return '[DEPTH]';\n\t\t        }\n\t\t        // Inspect invalid types\n\t\t        if (!canSerialize(obj)) {\n\t\t            return Object.prototype.toString.call(obj);\n\t\t        }\n\t\t        // Halt circular references\n\t\t        if (seen(obj)) {\n\t\t            return '[RECURSION]';\n\t\t        }\n\t\t        // Serialize inside arrays\n\t\t        if (Array.isArray(obj)) {\n\t\t            return obj.map(function (o) { return safeSerialize(o, depth + 1); });\n\t\t        }\n\t\t        // Serialize inside objects\n\t\t        if (typeof (obj) === 'object') {\n\t\t            var ret = {};\n\t\t            for (var k in obj) {\n\t\t                var v = obj[k];\n\t\t                if (Object.prototype.hasOwnProperty.call(obj, k) && (k != null) && (v != null)) {\n\t\t                    ret[k] = safeSerialize(v, depth + 1);\n\t\t                }\n\t\t            }\n\t\t            return ret;\n\t\t        }\n\t\t        // Return everything else untouched\n\t\t        return obj;\n\t\t    }\n\t\t    function safeSerialize(obj, depth) {\n\t\t        if (depth === void 0) { depth = 0; }\n\t\t        try {\n\t\t            return serialize(obj, depth);\n\t\t        }\n\t\t        catch (e) {\n\t\t            return \"[ERROR] \".concat(e);\n\t\t        }\n\t\t    }\n\t\t    return safeSerialize(obj);\n\t\t}\n\t\texports.sanitize = sanitize;\n\t\tfunction logger(client) {\n\t\t    var log = function (method) {\n\t\t        return function () {\n\t\t            var _a;\n\t\t            var args = [];\n\t\t            for (var _i = 0; _i < arguments.length; _i++) {\n\t\t                args[_i] = arguments[_i];\n\t\t            }\n\t\t            if (method === 'debug') {\n\t\t                if (!client.config.debug) {\n\t\t                    return;\n\t\t                }\n\t\t                // Log at default level so that you don't need to also enable verbose\n\t\t                // logging in Chrome.\n\t\t                method = 'log';\n\t\t            }\n\t\t            args.unshift('[Honeybadger]');\n\t\t            (_a = client.config.logger)[method].apply(_a, args);\n\t\t        };\n\t\t    };\n\t\t    return {\n\t\t        log: log('log'),\n\t\t        info: log('info'),\n\t\t        debug: log('debug'),\n\t\t        warn: log('warn'),\n\t\t        error: log('error')\n\t\t    };\n\t\t}\n\t\texports.logger = logger;\n\t\t/**\n\t\t * Converts any object into a notice object (which at minimum has the same\n\t\t * properties as Error, but supports additional Honeybadger properties.)\n\t\t */\n\t\tfunction makeNotice(thing) {\n\t\t    var notice;\n\t\t    if (!thing) {\n\t\t        notice = {};\n\t\t    }\n\t\t    else if (isErrorObject(thing)) {\n\t\t        var e = thing;\n\t\t        notice = merge(thing, { name: e.name, message: e.message, stack: e.stack, cause: e.cause });\n\t\t    }\n\t\t    else if (typeof thing === 'object') {\n\t\t        notice = shallowClone(thing);\n\t\t    }\n\t\t    else {\n\t\t        var m = String(thing);\n\t\t        notice = { message: m };\n\t\t    }\n\t\t    return notice;\n\t\t}\n\t\texports.makeNotice = makeNotice;\n\t\tfunction isErrorObject(thing) {\n\t\t    return thing instanceof Error\n\t\t        || Object.prototype.toString.call(thing) === '[object Error]'; // Important for cross-realm objects\n\t\t}\n\t\texports.isErrorObject = isErrorObject;\n\t\t/**\n\t\t * Instrument an existing function inside an object (usually global).\n\t\t * @param {!Object} object\n\t\t * @param {!String} name\n\t\t * @param {!Function} replacement\n\t\t */\n\t\t// eslint-disable-next-line @typescript-eslint/no-explicit-any\n\t\tfunction instrument(object, name, replacement) {\n\t\t    if (!object || !name || !replacement || !(name in object)) {\n\t\t        return;\n\t\t    }\n\t\t    try {\n\t\t        var original = object[name];\n\t\t        while (original && original.__hb_original) {\n\t\t            original = original.__hb_original;\n\t\t        }\n\t\t        object[name] = replacement(original);\n\t\t        object[name].__hb_original = original;\n\t\t    }\n\t\t    catch (_e) {\n\t\t        // Ignores errors where \"original\" is a restricted object (see #1001)\n\t\t        // Uncaught Error: Permission denied to access property \"__hb_original\"\n\t\t        // Also ignores:\n\t\t        //   Error: TypeError: Cannot set property onunhandledrejection of [object Object] which has only a getter\n\t\t        //   User-Agent: Mozilla/5.0 (Linux; Android 10; SAMSUNG SM-G960F) AppleWebKit/537.36 (KHTML, like Gecko) SamsungBrowser/12.1 Chrome/79.0.3945.136 Mobile Safari/537.36\n\t\t    }\n\t\t}\n\t\texports.instrument = instrument;\n\t\tvar _consoleAlreadyInstrumented = false;\n\t\tvar listeners = [];\n\t\t// eslint-disable-next-line @typescript-eslint/no-explicit-any\n\t\tfunction instrumentConsole(_window, handler) {\n\t\t    if (!_window || !_window.console || !handler) {\n\t\t        return;\n\t\t    }\n\t\t    listeners.push(handler);\n\t\t    if (_consoleAlreadyInstrumented) {\n\t\t        return;\n\t\t    }\n\t\t    _consoleAlreadyInstrumented = true;\n\t\t    ['debug', 'info', 'warn', 'error', 'log'].forEach(function (level) {\n\t\t        instrument(_window.console, level, function hbLogger(original) {\n\t\t            return function () {\n\t\t                var args = Array.prototype.slice.call(arguments);\n\t\t                listeners.forEach(function (listener) {\n\t\t                    try {\n\t\t                        listener(level, args);\n\t\t                    }\n\t\t                    catch (_e) {\n\t\t                        // ignore\n\t\t                        // should never reach here because instrument method already wraps with try/catch block\n\t\t                    }\n\t\t                });\n\t\t                if (typeof original === 'function') {\n\t\t                    Function.prototype.apply.call(original, _window.console, arguments);\n\t\t                }\n\t\t            };\n\t\t        });\n\t\t    });\n\t\t}\n\t\texports.instrumentConsole = instrumentConsole;\n\t\tfunction endpoint(base, path) {\n\t\t    var endpoint = base.trim().replace(/\\/$/, '');\n\t\t    path = path.trim().replace(/(^\\/|\\/$)/g, '');\n\t\t    return \"\".concat(endpoint, \"/\").concat(path);\n\t\t}\n\t\texports.endpoint = endpoint;\n\t\tfunction generateStackTrace() {\n\t\t    try {\n\t\t        throw new Error('');\n\t\t    }\n\t\t    catch (e) {\n\t\t        if (e.stack) {\n\t\t            return e.stack;\n\t\t        }\n\t\t    }\n\t\t    var maxStackSize = 10;\n\t\t    var stack = [];\n\t\t    var curr = arguments.callee;\n\t\t    while (curr && stack.length < maxStackSize) {\n\t\t        if (/function(?:\\s+([\\w$]+))+\\s*\\(/.test(curr.toString())) {\n\t\t            stack.push(RegExp.$1 || '<anonymous>');\n\t\t        }\n\t\t        else {\n\t\t            stack.push('<anonymous>');\n\t\t        }\n\t\t        try {\n\t\t            curr = curr.caller;\n\t\t        }\n\t\t        catch (e) {\n\t\t            break;\n\t\t        }\n\t\t    }\n\t\t    return stack.join('\\n');\n\t\t}\n\t\texports.generateStackTrace = generateStackTrace;\n\t\tfunction filter(obj, filters) {\n\t\t    if (!is('Object', obj)) {\n\t\t        return;\n\t\t    }\n\t\t    if (!is('Array', filters)) {\n\t\t        filters = [];\n\t\t    }\n\t\t    var seen = [];\n\t\t    function filter(obj) {\n\t\t        var k, newObj;\n\t\t        if (is('Object', obj) || is('Array', obj)) {\n\t\t            if (seen.indexOf(obj) !== -1) {\n\t\t                return '[CIRCULAR DATA STRUCTURE]';\n\t\t            }\n\t\t            seen.push(obj);\n\t\t        }\n\t\t        if (is('Object', obj)) {\n\t\t            newObj = {};\n\t\t            for (k in obj) {\n\t\t                if (filterMatch(k, filters)) {\n\t\t                    newObj[k] = '[FILTERED]';\n\t\t                }\n\t\t                else {\n\t\t                    newObj[k] = filter(obj[k]);\n\t\t                }\n\t\t            }\n\t\t            return newObj;\n\t\t        }\n\t\t        if (is('Array', obj)) {\n\t\t            return obj.map(function (v) {\n\t\t                return filter(v);\n\t\t            });\n\t\t        }\n\t\t        if (is('Function', obj)) {\n\t\t            return '[FUNC]';\n\t\t        }\n\t\t        return obj;\n\t\t    }\n\t\t    return filter(obj);\n\t\t}\n\t\texports.filter = filter;\n\t\tfunction filterMatch(key, filters) {\n\t\t    for (var i = 0; i < filters.length; i++) {\n\t\t        if (key.toLowerCase().indexOf(filters[i].toLowerCase()) !== -1) {\n\t\t            return true;\n\t\t        }\n\t\t    }\n\t\t    return false;\n\t\t}\n\t\tfunction is(type, obj) {\n\t\t    var klass = Object.prototype.toString.call(obj).slice(8, -1);\n\t\t    return obj !== undefined && obj !== null && klass === type;\n\t\t}\n\t\tfunction filterUrl(url, filters) {\n\t\t    if (!filters) {\n\t\t        return url;\n\t\t    }\n\t\t    if (typeof url !== 'string') {\n\t\t        return url;\n\t\t    }\n\t\t    var query = url.split(/\\?/, 2)[1];\n\t\t    if (!query) {\n\t\t        return url;\n\t\t    }\n\t\t    var result = url;\n\t\t    query.split(/[&]\\s?/).forEach(function (pair) {\n\t\t        var _a = pair.split('=', 2), key = _a[0], value = _a[1];\n\t\t        if (filterMatch(key, filters)) {\n\t\t            result = result.replace(\"\".concat(key, \"=\").concat(value), \"\".concat(key, \"=[FILTERED]\"));\n\t\t        }\n\t\t    });\n\t\t    return result;\n\t\t}\n\t\texports.filterUrl = filterUrl;\n\t\tfunction formatCGIData(vars, prefix) {\n\t\t    if (prefix === void 0) { prefix = ''; }\n\t\t    var formattedVars = {};\n\t\t    Object.keys(vars).forEach(function (key) {\n\t\t        var formattedKey = prefix + key.replace(/\\W/g, '_').toUpperCase();\n\t\t        formattedVars[formattedKey] = vars[key];\n\t\t    });\n\t\t    return formattedVars;\n\t\t}\n\t\texports.formatCGIData = formatCGIData;\n\t\tfunction clone(obj) {\n\t\t    return JSON.parse(JSON.stringify(obj));\n\t\t}\n\t\texports.clone = clone;\n\t\tvar THRESHOLD_COLUMN_NUMBER = 10000;\n\t\tvar THRESHOLD_LINE_LENGTH = 10000;\n\t\tvar THRESHOLD_FILE_SIZE = 200000; // 200KB threshold\n\t\tfunction getThresholdExceededSnippet(lineNumber) {\n\t\t    var _a;\n\t\t    return _a = {}, _a[lineNumber] = 'SOURCE_SIZE_TOO_LARGE', _a;\n\t\t}\n\t\tfunction getSourceCodeSnippet(fileData, lineNumber, columnNumber, sourceRadius) {\n\t\t    if (sourceRadius === void 0) { sourceRadius = 2; }\n\t\t    if (!fileData) {\n\t\t        return null;\n\t\t    }\n\t\t    // If column number is provided and very high, it's likely a bundled/minified file\n\t\t    if (columnNumber && columnNumber > THRESHOLD_COLUMN_NUMBER) {\n\t\t        return getThresholdExceededSnippet(lineNumber);\n\t\t    }\n\t\t    // If file is very large, it's likely bundled\n\t\t    if (fileData.length > THRESHOLD_FILE_SIZE) {\n\t\t        return getThresholdExceededSnippet(lineNumber);\n\t\t    }\n\t\t    var lines = fileData.split('\\n');\n\t\t    // add one empty line because array index starts from 0, but error line number is counted from 1\n\t\t    lines.unshift('');\n\t\t    // Check if the target line is extremely long\n\t\t    var targetLine = lines[lineNumber];\n\t\t    if (targetLine && targetLine.length > THRESHOLD_LINE_LENGTH) {\n\t\t        return getThresholdExceededSnippet(lineNumber);\n\t\t    }\n\t\t    var start = lineNumber - sourceRadius;\n\t\t    var end = lineNumber + sourceRadius;\n\t\t    var result = {};\n\t\t    for (var i = start; i <= end; i++) {\n\t\t        var line = lines[i];\n\t\t        if (typeof line === 'string') {\n\t\t            result[i] = line;\n\t\t        }\n\t\t    }\n\t\t    return result;\n\t\t}\n\t\tfunction isBrowserConfig(config) {\n\t\t    return config.async !== undefined;\n\t\t}\n\t\texports.isBrowserConfig = isBrowserConfig;\n\t\t/** globalThis has fairly good support. But just in case, lets check its defined.\n\t\t * @see {https://caniuse.com/?search=globalThis}\n\t\t */\n\t\tfunction globalThisOrWindow() {\n\t\t    if (typeof globalThis !== 'undefined') {\n\t\t        return globalThis;\n\t\t    }\n\t\t    if (typeof self !== 'undefined') {\n\t\t        return self;\n\t\t    }\n\t\t    return window;\n\t\t}\n\t\texports.globalThisOrWindow = globalThisOrWindow;\n\t\tvar _deprecatedMethodCalls = {};\n\t\t/**\n\t\t * Logs a deprecation warning, every X calls to the method.\n\t\t */\n\t\tfunction logDeprecatedMethod(logger, oldMethod, newMethod, callCountThreshold) {\n\t\t    if (callCountThreshold === void 0) { callCountThreshold = 100; }\n\t\t    var key = \"\".concat(oldMethod, \"-\").concat(newMethod);\n\t\t    if (typeof _deprecatedMethodCalls[key] === 'undefined') {\n\t\t        _deprecatedMethodCalls[key] = 0;\n\t\t    }\n\t\t    if (_deprecatedMethodCalls[key] % callCountThreshold !== 0) {\n\t\t        _deprecatedMethodCalls[key]++;\n\t\t        return;\n\t\t    }\n\t\t    var msg = \"Deprecation warning: \".concat(oldMethod, \" has been deprecated; please use \").concat(newMethod, \" instead.\");\n\t\t    logger.warn(msg);\n\t\t    _deprecatedMethodCalls[key]++;\n\t\t}\n\t\texports.logDeprecatedMethod = logDeprecatedMethod;\n\t\t\n\t} (util$1));\n\n\tObject.defineProperty(events, \"__esModule\", { value: true });\n\tvar util_1$4 = util$1;\n\tfunction default_1$4(_window) {\n\t    if (_window === void 0) { _window = (0, util_1$4.globalThisOrWindow)(); }\n\t    return {\n\t        shouldReloadOnConfigure: false,\n\t        load: function (client) {\n\t            function sendEventsToInsights() {\n\t                return client.config.eventsEnabled;\n\t            }\n\t            if (!sendEventsToInsights()) {\n\t                return;\n\t            }\n\t            (0, util_1$4.instrumentConsole)(_window, function (level, args) {\n\t                if (!sendEventsToInsights()) {\n\t                    return;\n\t                }\n\t                if (args.length === 0) {\n\t                    return;\n\t                }\n\t                var data = {\n\t                    severity: level,\n\t                };\n\t                if (typeof args[0] === 'string') {\n\t                    data.message = args[0];\n\t                    data.args = args.slice(1);\n\t                }\n\t                else {\n\t                    data.args = args;\n\t                }\n\t                client.event('log', data);\n\t            });\n\t        }\n\t    };\n\t}\n\tevents.default = default_1$4;\n\n\tvar client = {};\n\n\tvar store = {};\n\n\tObject.defineProperty(store, \"__esModule\", { value: true });\n\tstore.GlobalStore = void 0;\n\tvar util_1$3 = util$1;\n\tvar GlobalStore = /** @class */ (function () {\n\t    function GlobalStore(contents, breadcrumbsLimit) {\n\t        this.contents = contents;\n\t        this.breadcrumbsLimit = breadcrumbsLimit;\n\t    }\n\t    GlobalStore.create = function (contents, breadcrumbsLimit) {\n\t        return new GlobalStore(contents, breadcrumbsLimit);\n\t    };\n\t    GlobalStore.prototype.available = function () {\n\t        return true;\n\t    };\n\t    GlobalStore.prototype.getContents = function (key) {\n\t        var value = key ? this.contents[key] : this.contents;\n\t        return JSON.parse(JSON.stringify(value));\n\t    };\n\t    GlobalStore.prototype.setContext = function (context) {\n\t        this.contents.context = (0, util_1$3.merge)(this.contents.context, context || {});\n\t    };\n\t    GlobalStore.prototype.addBreadcrumb = function (breadcrumb) {\n\t        if (this.contents.breadcrumbs.length == this.breadcrumbsLimit) {\n\t            this.contents.breadcrumbs.shift();\n\t        }\n\t        this.contents.breadcrumbs.push(breadcrumb);\n\t    };\n\t    GlobalStore.prototype.clear = function () {\n\t        this.contents.context = {};\n\t        this.contents.breadcrumbs = [];\n\t    };\n\t    GlobalStore.prototype.run = function (callback) {\n\t        return callback();\n\t    };\n\t    return GlobalStore;\n\t}());\n\tstore.GlobalStore = GlobalStore;\n\n\tvar throttled_events_logger = {};\n\n\tclass NdJson {\n\t    static parse(data) {\n\t        const lines = data.trim().split('\\n');\n\t        return lines.map(line => JSON.parse(line));\n\t    }\n\t    static stringify(data) {\n\t        return data.map(item => JSON.stringify(item)).join('\\n');\n\t    }\n\t}\n\n\tvar module = /*#__PURE__*/Object.freeze({\n\t\t__proto__: null,\n\t\tNdJson: NdJson\n\t});\n\n\tvar require$$0 = /*@__PURE__*/getAugmentedNamespace(module);\n\n\tvar defaults = {};\n\n\tObject.defineProperty(defaults, \"__esModule\", { value: true });\n\tdefaults.CONFIG = void 0;\n\tdefaults.CONFIG = {\n\t    apiKey: null,\n\t    endpoint: 'https://api.honeybadger.io',\n\t    appEndpoint: 'https://app.honeybadger.io',\n\t    environment: null,\n\t    hostname: null,\n\t    projectRoot: null,\n\t    component: null,\n\t    action: null,\n\t    revision: null,\n\t    reportData: null,\n\t    breadcrumbsEnabled: true,\n\t    // we could decide the value of eventsEnabled based on `env` and `developmentEnvironments`\n\t    eventsEnabled: false,\n\t    maxBreadcrumbs: 40,\n\t    maxObjectDepth: 8,\n\t    logger: console,\n\t    developmentEnvironments: ['dev', 'development', 'test'],\n\t    debug: false,\n\t    tags: null,\n\t    enableUncaught: true,\n\t    enableUnhandledRejection: true,\n\t    afterUncaught: function () { return true; },\n\t    filters: ['creditcard', 'password'],\n\t    __plugins: [],\n\t};\n\n\tvar __assign$2 = (commonjsGlobal && commonjsGlobal.__assign) || function () {\n\t    __assign$2 = Object.assign || function(t) {\n\t        for (var s, i = 1, n = arguments.length; i < n; i++) {\n\t            s = arguments[i];\n\t            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n\t                t[p] = s[p];\n\t        }\n\t        return t;\n\t    };\n\t    return __assign$2.apply(this, arguments);\n\t};\n\tvar __awaiter$2 = (commonjsGlobal && commonjsGlobal.__awaiter) || function (thisArg, _arguments, P, generator) {\n\t    function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n\t    return new (P || (P = Promise))(function (resolve, reject) {\n\t        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n\t        function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n\t        function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n\t        step((generator = generator.apply(thisArg, _arguments || [])).next());\n\t    });\n\t};\n\tvar __generator$2 = (commonjsGlobal && commonjsGlobal.__generator) || function (thisArg, body) {\n\t    var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n\t    return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n\t    function verb(n) { return function (v) { return step([n, v]); }; }\n\t    function step(op) {\n\t        if (f) throw new TypeError(\"Generator is already executing.\");\n\t        while (_) try {\n\t            if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n\t            if (y = 0, t) op = [op[0] & 2, t.value];\n\t            switch (op[0]) {\n\t                case 0: case 1: t = op; break;\n\t                case 4: _.label++; return { value: op[1], done: false };\n\t                case 5: _.label++; y = op[1]; op = [0]; continue;\n\t                case 7: op = _.ops.pop(); _.trys.pop(); continue;\n\t                default:\n\t                    if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n\t                    if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n\t                    if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n\t                    if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n\t                    if (t[2]) _.ops.pop();\n\t                    _.trys.pop(); continue;\n\t            }\n\t            op = body.call(thisArg, _);\n\t        } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n\t        if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n\t    }\n\t};\n\tObject.defineProperty(throttled_events_logger, \"__esModule\", { value: true });\n\tthrottled_events_logger.ThrottledEventsLogger = void 0;\n\tvar json_nd_1 = require$$0;\n\tvar util_1$2 = util$1;\n\tvar defaults_1$1 = defaults;\n\tvar ThrottledEventsLogger = /** @class */ (function () {\n\t    function ThrottledEventsLogger(config, transport) {\n\t        this.config = config;\n\t        this.transport = transport;\n\t        this.queue = [];\n\t        this.isProcessing = false;\n\t        this.config = __assign$2(__assign$2({}, defaults_1$1.CONFIG), config);\n\t        this.logger = this.originalLogger();\n\t    }\n\t    ThrottledEventsLogger.prototype.configure = function (opts) {\n\t        for (var k in opts) {\n\t            this.config[k] = opts[k];\n\t        }\n\t    };\n\t    ThrottledEventsLogger.prototype.log = function (payload) {\n\t        this.queue.push(payload);\n\t        if (!this.isProcessing) {\n\t            this.processQueue();\n\t        }\n\t    };\n\t    ThrottledEventsLogger.prototype.flushAsync = function () {\n\t        this.logger.debug('[Honeybadger] Flushing events');\n\t        return this.send();\n\t    };\n\t    ThrottledEventsLogger.prototype.processQueue = function () {\n\t        var _this = this;\n\t        if (this.queue.length === 0 || this.isProcessing) {\n\t            return;\n\t        }\n\t        this.isProcessing = true;\n\t        this.send()\n\t            .then(function () {\n\t            setTimeout(function () {\n\t                _this.isProcessing = false;\n\t                _this.processQueue();\n\t            }, 50);\n\t        })\n\t            .catch(function (error) {\n\t            _this.logger.error('[Honeybadger] Error making HTTP request:', error);\n\t            // Continue processing the queue even if there's an error\n\t            setTimeout(function () {\n\t                _this.isProcessing = false;\n\t                _this.processQueue();\n\t            }, 50);\n\t        });\n\t    };\n\t    ThrottledEventsLogger.prototype.send = function () {\n\t        return __awaiter$2(this, void 0, void 0, function () {\n\t            var eventsData, data;\n\t            return __generator$2(this, function (_a) {\n\t                if (this.queue.length === 0) {\n\t                    return [2 /*return*/];\n\t                }\n\t                eventsData = this.queue.slice();\n\t                this.queue = [];\n\t                data = json_nd_1.NdJson.stringify(eventsData);\n\t                return [2 /*return*/, this.makeHttpRequest(data)];\n\t            });\n\t        });\n\t    };\n\t    ThrottledEventsLogger.prototype.makeHttpRequest = function (data) {\n\t        return __awaiter$2(this, void 0, void 0, function () {\n\t            var _this = this;\n\t            return __generator$2(this, function (_a) {\n\t                return [2 /*return*/, this.transport\n\t                        .send({\n\t                        headers: {\n\t                            'X-API-Key': this.config.apiKey,\n\t                            'Content-Type': 'application/json',\n\t                        },\n\t                        method: 'POST',\n\t                        endpoint: (0, util_1$2.endpoint)(this.config.endpoint, '/v1/events'),\n\t                        maxObjectDepth: this.config.maxObjectDepth,\n\t                        logger: this.logger,\n\t                    }, data)\n\t                        .then(function () {\n\t                        if (_this.config.debug) {\n\t                            _this.logger.debug('[Honeybadger] Events sent successfully');\n\t                        }\n\t                    })\n\t                        .catch(function (err) {\n\t                        _this.logger.error(\"[Honeybadger] Error sending events: \".concat(err.message));\n\t                    })];\n\t            });\n\t        });\n\t    };\n\t    /**\n\t     * todo: improve this\n\t     *\n\t     * The EventsLogger overrides the console methods to enable automatic instrumentation\n\t     * of console logs to the Honeybadger API.\n\t     * So if we want to log something in here we need to use the original methods.\n\t     */\n\t    ThrottledEventsLogger.prototype.originalLogger = function () {\n\t        var _a, _b, _c, _d, _e;\n\t        return {\n\t            // eslint-disable-next-line @typescript-eslint/no-explicit-any\n\t            log: (_a = console.log.__hb_original) !== null && _a !== void 0 ? _a : console.log,\n\t            // eslint-disable-next-line @typescript-eslint/no-explicit-any\n\t            info: (_b = console.info.__hb_original) !== null && _b !== void 0 ? _b : console.info,\n\t            // eslint-disable-next-line @typescript-eslint/no-explicit-any\n\t            debug: (_c = console.debug.__hb_original) !== null && _c !== void 0 ? _c : console.debug,\n\t            // eslint-disable-next-line @typescript-eslint/no-explicit-any\n\t            warn: (_d = console.warn.__hb_original) !== null && _d !== void 0 ? _d : console.warn,\n\t            // eslint-disable-next-line @typescript-eslint/no-explicit-any\n\t            error: (_e = console.error.__hb_original) !== null && _e !== void 0 ? _e : console.error,\n\t        };\n\t    };\n\t    return ThrottledEventsLogger;\n\t}());\n\tthrottled_events_logger.ThrottledEventsLogger = ThrottledEventsLogger;\n\n\tvar __assign$1 = (commonjsGlobal && commonjsGlobal.__assign) || function () {\n\t    __assign$1 = Object.assign || function(t) {\n\t        for (var s, i = 1, n = arguments.length; i < n; i++) {\n\t            s = arguments[i];\n\t            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n\t                t[p] = s[p];\n\t        }\n\t        return t;\n\t    };\n\t    return __assign$1.apply(this, arguments);\n\t};\n\tvar __awaiter$1 = (commonjsGlobal && commonjsGlobal.__awaiter) || function (thisArg, _arguments, P, generator) {\n\t    function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n\t    return new (P || (P = Promise))(function (resolve, reject) {\n\t        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n\t        function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n\t        function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n\t        step((generator = generator.apply(thisArg, _arguments || [])).next());\n\t    });\n\t};\n\tvar __generator$1 = (commonjsGlobal && commonjsGlobal.__generator) || function (thisArg, body) {\n\t    var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n\t    return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n\t    function verb(n) { return function (v) { return step([n, v]); }; }\n\t    function step(op) {\n\t        if (f) throw new TypeError(\"Generator is already executing.\");\n\t        while (_) try {\n\t            if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n\t            if (y = 0, t) op = [op[0] & 2, t.value];\n\t            switch (op[0]) {\n\t                case 0: case 1: t = op; break;\n\t                case 4: _.label++; return { value: op[1], done: false };\n\t                case 5: _.label++; y = op[1]; op = [0]; continue;\n\t                case 7: op = _.ops.pop(); _.trys.pop(); continue;\n\t                default:\n\t                    if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n\t                    if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n\t                    if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n\t                    if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n\t                    if (t[2]) _.ops.pop();\n\t                    _.trys.pop(); continue;\n\t            }\n\t            op = body.call(thisArg, _);\n\t        } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n\t        if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n\t    }\n\t};\n\tObject.defineProperty(client, \"__esModule\", { value: true });\n\tclient.Client = void 0;\n\tvar util_1$1 = util$1;\n\tvar store_1 = store;\n\tvar throttled_events_logger_1 = throttled_events_logger;\n\tvar defaults_1 = defaults;\n\t// Split at commas and spaces\n\tvar TAG_SEPARATOR = /,|\\s+/;\n\t// Checks for non-blank characters\n\tvar NOT_BLANK = /\\S/;\n\tvar Client = /** @class */ (function () {\n\t    function Client(opts, transport) {\n\t        if (opts === void 0) { opts = {}; }\n\t        this.__pluginsLoaded = false;\n\t        this.__store = null;\n\t        this.__beforeNotifyHandlers = [];\n\t        this.__afterNotifyHandlers = [];\n\t        this.__notifier = {\n\t            name: '@honeybadger-io/core',\n\t            url: 'https://github.com/honeybadger-io/honeybadger-js/tree/master/packages/core',\n\t            version: '6.12.3'\n\t        };\n\t        this.config = __assign$1(__assign$1({}, defaults_1.CONFIG), opts);\n\t        this.__initStore();\n\t        this.__transport = transport;\n\t        this.__eventsLogger = new throttled_events_logger_1.ThrottledEventsLogger(this.config, this.__transport);\n\t        this.logger = (0, util_1$1.logger)(this);\n\t    }\n\t    Client.prototype.getVersion = function () {\n\t        return this.__notifier.version;\n\t    };\n\t    Client.prototype.getNotifier = function () {\n\t        return this.__notifier;\n\t    };\n\t    /**\n\t     * CAREFUL: When adding a new notifier or updating the name of an existing notifier,\n\t     * the Honeybadger rails project may need its mappings updated.\n\t     * See https://github.com/honeybadger-io/honeybadger/blob/master/app/presenters/breadcrumbs_presenter.rb\n\t     *     https://github.com/honeybadger-io/honeybadger/blob/master/app/models/parser/java_script.rb\n\t     *     https://github.com/honeybadger-io/honeybadger/blob/master/app/models/language.rb\n\t     **/\n\t    Client.prototype.setNotifier = function (notifier) {\n\t        this.__notifier = notifier;\n\t    };\n\t    Client.prototype.configure = function (opts) {\n\t        if (opts === void 0) { opts = {}; }\n\t        for (var k in opts) {\n\t            this.config[k] = opts[k];\n\t        }\n\t        this.__eventsLogger.configure(this.config);\n\t        this.loadPlugins();\n\t        return this;\n\t    };\n\t    Client.prototype.loadPlugins = function () {\n\t        var _this = this;\n\t        var pluginsToLoad = this.__pluginsLoaded\n\t            ? this.config.__plugins.filter(function (plugin) { return plugin.shouldReloadOnConfigure; })\n\t            : this.config.__plugins;\n\t        pluginsToLoad.forEach(function (plugin) { return plugin.load(_this); });\n\t        this.__pluginsLoaded = true;\n\t    };\n\t    Client.prototype.__initStore = function () {\n\t        this.__store = new store_1.GlobalStore({ context: {}, breadcrumbs: [] }, this.config.maxBreadcrumbs);\n\t    };\n\t    Client.prototype.beforeNotify = function (handler) {\n\t        this.__beforeNotifyHandlers.push(handler);\n\t        return this;\n\t    };\n\t    Client.prototype.afterNotify = function (handler) {\n\t        this.__afterNotifyHandlers.push(handler);\n\t        return this;\n\t    };\n\t    Client.prototype.setContext = function (context) {\n\t        if (typeof context === 'object' && context != null) {\n\t            this.__store.setContext(context);\n\t        }\n\t        return this;\n\t    };\n\t    Client.prototype.resetContext = function (context) {\n\t        this.logger.warn('Deprecation warning: `Honeybadger.resetContext()` has been deprecated; please use `Honeybadger.clear()` instead.');\n\t        this.__store.clear();\n\t        if (typeof context === 'object' && context !== null) {\n\t            this.__store.setContext(context);\n\t        }\n\t        return this;\n\t    };\n\t    Client.prototype.clear = function () {\n\t        this.__store.clear();\n\t        return this;\n\t    };\n\t    Client.prototype.notify = function (noticeable, name, extra) {\n\t        var _this = this;\n\t        if (name === void 0) { name = undefined; }\n\t        if (extra === void 0) { extra = undefined; }\n\t        var notice = this.makeNotice(noticeable, name, extra);\n\t        // we need to have the source file data before the beforeNotifyHandlers,\n\t        // in case they modify them\n\t        var sourceCodeData = notice && notice.backtrace ? notice.backtrace.map(function (trace) { return (0, util_1$1.shallowClone)(trace); }) : null;\n\t        var preConditionsResult = this.__runPreconditions(notice);\n\t        if (preConditionsResult instanceof Error) {\n\t            (0, util_1$1.runAfterNotifyHandlers)(notice, this.__afterNotifyHandlers, preConditionsResult);\n\t            return false;\n\t        }\n\t        if (preConditionsResult instanceof Promise) {\n\t            preConditionsResult.then(function (result) {\n\t                if (result instanceof Error) {\n\t                    (0, util_1$1.runAfterNotifyHandlers)(notice, _this.__afterNotifyHandlers, result);\n\t                    return false;\n\t                }\n\t                return _this.__send(notice, sourceCodeData);\n\t            });\n\t            return true;\n\t        }\n\t        this.__send(notice, sourceCodeData).catch(function (_err) { });\n\t        return true;\n\t    };\n\t    /**\n\t     * An async version of {@link notify} that resolves only after the notice has been reported to Honeybadger.\n\t     * Implemented using the {@link afterNotify} hook.\n\t     * Rejects if for any reason the report failed to be reported.\n\t     * Useful in serverless environments (AWS Lambda).\n\t     */\n\t    Client.prototype.notifyAsync = function (noticeable, name, extra) {\n\t        var _this = this;\n\t        if (name === void 0) { name = undefined; }\n\t        if (extra === void 0) { extra = undefined; }\n\t        return new Promise(function (resolve, reject) {\n\t            var applyAfterNotify = function (partialNotice) {\n\t                var originalAfterNotify = partialNotice.afterNotify;\n\t                partialNotice.afterNotify = function (err) {\n\t                    originalAfterNotify === null || originalAfterNotify === void 0 ? void 0 : originalAfterNotify.call(_this, err);\n\t                    if (err) {\n\t                        return reject(err);\n\t                    }\n\t                    resolve();\n\t                };\n\t            };\n\t            // We have to respect any afterNotify hooks that come from the arguments\n\t            var objectToOverride;\n\t            if (noticeable.afterNotify) {\n\t                objectToOverride = noticeable;\n\t            }\n\t            else if (name && name.afterNotify) {\n\t                objectToOverride = name;\n\t            }\n\t            else if (extra && extra.afterNotify) {\n\t                objectToOverride = extra;\n\t            }\n\t            else if (name && typeof name === 'object') {\n\t                objectToOverride = name;\n\t            }\n\t            else if (extra) {\n\t                objectToOverride = extra;\n\t            }\n\t            else {\n\t                objectToOverride = name = {};\n\t            }\n\t            applyAfterNotify(objectToOverride);\n\t            _this.notify(noticeable, name, extra);\n\t        });\n\t    };\n\t    Client.prototype.makeNotice = function (noticeable, name, extra) {\n\t        if (name === void 0) { name = undefined; }\n\t        if (extra === void 0) { extra = undefined; }\n\t        var notice = (0, util_1$1.makeNotice)(noticeable);\n\t        if (name && !(typeof name === 'object')) {\n\t            var n = String(name);\n\t            name = { name: n };\n\t        }\n\t        if (name) {\n\t            notice = (0, util_1$1.mergeNotice)(notice, name);\n\t        }\n\t        if (typeof extra === 'object' && extra !== null) {\n\t            notice = (0, util_1$1.mergeNotice)(notice, extra);\n\t        }\n\t        if ((0, util_1$1.objectIsEmpty)(notice)) {\n\t            return null;\n\t        }\n\t        var context = this.__store.getContents('context');\n\t        var noticeTags = this.__constructTags(notice.tags);\n\t        var contextTags = this.__constructTags(context['tags']);\n\t        var configTags = this.__constructTags(this.config.tags);\n\t        // Turning into a Set will remove duplicates\n\t        var tags = noticeTags.concat(contextTags).concat(configTags);\n\t        var uniqueTags = tags.filter(function (item, index) { return tags.indexOf(item) === index; });\n\t        notice = (0, util_1$1.merge)(notice, {\n\t            name: notice.name || 'Error',\n\t            context: (0, util_1$1.merge)(context, notice.context),\n\t            projectRoot: notice.projectRoot || this.config.projectRoot,\n\t            environment: notice.environment || this.config.environment,\n\t            component: notice.component || this.config.component,\n\t            action: notice.action || this.config.action,\n\t            revision: notice.revision || this.config.revision,\n\t            tags: uniqueTags,\n\t        });\n\t        // If we're passed a custom backtrace array, use it\n\t        // Otherwise we make one.\n\t        if (!Array.isArray(notice.backtrace) || !notice.backtrace.length) {\n\t            if (typeof notice.stack !== 'string' || !notice.stack.trim()) {\n\t                notice.stack = (0, util_1$1.generateStackTrace)();\n\t                notice.backtrace = (0, util_1$1.makeBacktrace)(notice.stack, true, this.logger);\n\t            }\n\t            else {\n\t                notice.backtrace = (0, util_1$1.makeBacktrace)(notice.stack, false, this.logger);\n\t            }\n\t        }\n\t        return notice;\n\t    };\n\t    Client.prototype.addBreadcrumb = function (message, opts) {\n\t        if (!this.config.breadcrumbsEnabled) {\n\t            return;\n\t        }\n\t        opts = opts || {};\n\t        var metadata = (0, util_1$1.shallowClone)(opts.metadata);\n\t        var category = opts.category || 'custom';\n\t        var timestamp = new Date().toISOString();\n\t        this.__store.addBreadcrumb({\n\t            category: category,\n\t            message: message,\n\t            metadata: metadata,\n\t            timestamp: timestamp\n\t        });\n\t        return this;\n\t    };\n\t    /**\n\t     * @deprecated Use {@link event} instead.\n\t     */\n\t    Client.prototype.logEvent = function (data) {\n\t        (0, util_1$1.logDeprecatedMethod)(this.logger, 'Honeybadger.logEvent', 'Honeybadger.event');\n\t        this.event('log', data);\n\t    };\n\t    Client.prototype.event = function (type, data) {\n\t        var _a;\n\t        if (typeof type === 'object') {\n\t            data = type;\n\t            type = (_a = type['event_type']) !== null && _a !== void 0 ? _a : undefined;\n\t        }\n\t        this.__eventsLogger.log(__assign$1({ event_type: type, ts: new Date().toISOString() }, data));\n\t    };\n\t    /**\n\t     * This method currently flushes the event (Insights) queue.\n\t     * In the future, it should also flush the error queue (assuming an error throttler is implemented).\n\t     */\n\t    Client.prototype.flushAsync = function () {\n\t        return this.__eventsLogger.flushAsync();\n\t    };\n\t    Client.prototype.__getBreadcrumbs = function () {\n\t        return this.__store.getContents('breadcrumbs').slice();\n\t    };\n\t    Client.prototype.__getContext = function () {\n\t        return this.__store.getContents('context');\n\t    };\n\t    Client.prototype.__developmentMode = function () {\n\t        if (this.config.reportData === true) {\n\t            return false;\n\t        }\n\t        return (this.config.environment && this.config.developmentEnvironments.includes(this.config.environment));\n\t    };\n\t    Client.prototype.__buildPayload = function (notice) {\n\t        var headers = (0, util_1$1.filter)(notice.headers, this.config.filters) || {};\n\t        var cgiData = (0, util_1$1.filter)(__assign$1(__assign$1({}, notice.cgiData), (0, util_1$1.formatCGIData)(headers, 'HTTP_')), this.config.filters);\n\t        return {\n\t            notifier: this.__notifier,\n\t            breadcrumbs: {\n\t                enabled: !!this.config.breadcrumbsEnabled,\n\t                trail: notice.__breadcrumbs || []\n\t            },\n\t            error: {\n\t                class: notice.name,\n\t                message: notice.message,\n\t                backtrace: notice.backtrace,\n\t                fingerprint: notice.fingerprint,\n\t                tags: notice.tags,\n\t                causes: (0, util_1$1.getCauses)(notice, this.logger),\n\t            },\n\t            request: {\n\t                url: (0, util_1$1.filterUrl)(notice.url, this.config.filters),\n\t                component: notice.component,\n\t                action: notice.action,\n\t                context: notice.context,\n\t                cgi_data: cgiData,\n\t                params: (0, util_1$1.filter)(notice.params, this.config.filters) || {},\n\t                session: (0, util_1$1.filter)(notice.session, this.config.filters) || {}\n\t            },\n\t            server: {\n\t                project_root: notice.projectRoot,\n\t                environment_name: notice.environment,\n\t                revision: notice.revision,\n\t                hostname: this.config.hostname,\n\t                time: new Date().toUTCString()\n\t            },\n\t            details: notice.details || {}\n\t        };\n\t    };\n\t    Client.prototype.__constructTags = function (tags) {\n\t        if (!tags) {\n\t            return [];\n\t        }\n\t        return tags.toString().split(TAG_SEPARATOR).filter(function (tag) { return NOT_BLANK.test(tag); });\n\t    };\n\t    Client.prototype.__runPreconditions = function (notice) {\n\t        var _this = this;\n\t        var preConditionError = null;\n\t        if (!notice) {\n\t            this.logger.debug('failed to build error report');\n\t            preConditionError = new Error('failed to build error report');\n\t        }\n\t        if (this.config.reportData === false) {\n\t            this.logger.debug('skipping error report: honeybadger.js is disabled', notice);\n\t            preConditionError = new Error('honeybadger.js is disabled');\n\t        }\n\t        if (this.__developmentMode()) {\n\t            this.logger.log('honeybadger.js is in development mode; the following error report will be sent in production.', notice);\n\t            preConditionError = new Error('honeybadger.js is in development mode');\n\t        }\n\t        if (!this.config.apiKey) {\n\t            this.logger.warn('could not send error report: no API key has been configured', notice);\n\t            preConditionError = new Error('missing API key');\n\t        }\n\t        var beforeNotifyResult = (0, util_1$1.runBeforeNotifyHandlers)(notice, this.__beforeNotifyHandlers);\n\t        if (!preConditionError && !beforeNotifyResult.result) {\n\t            this.logger.debug('skipping error report: one or more beforeNotify handlers returned false', notice);\n\t            preConditionError = new Error('beforeNotify handlers returned false');\n\t        }\n\t        if (beforeNotifyResult.results.length && beforeNotifyResult.results.some(function (result) { return result instanceof Promise; })) {\n\t            return Promise.allSettled(beforeNotifyResult.results)\n\t                .then(function (results) {\n\t                if (!preConditionError && (results.some(function (result) { return result.status === 'rejected' || result.value === false; }))) {\n\t                    _this.logger.debug('skipping error report: one or more beforeNotify handlers returned false', notice);\n\t                    preConditionError = new Error('beforeNotify handlers (async) returned false');\n\t                }\n\t                if (preConditionError) {\n\t                    return preConditionError;\n\t                }\n\t            });\n\t        }\n\t        return preConditionError;\n\t    };\n\t    Client.prototype.__send = function (notice, originalBacktrace) {\n\t        var _this = this;\n\t        if (this.config.breadcrumbsEnabled) {\n\t            this.addBreadcrumb('Honeybadger Notice', {\n\t                category: 'notice',\n\t                metadata: {\n\t                    message: notice.message,\n\t                    name: notice.name,\n\t                    stack: notice.stack\n\t                }\n\t            });\n\t            notice.__breadcrumbs = this.__store.getContents('breadcrumbs');\n\t        }\n\t        else {\n\t            notice.__breadcrumbs = [];\n\t        }\n\t        return (0, util_1$1.getSourceForBacktrace)(originalBacktrace, this.__getSourceFileHandler)\n\t            .then(function (sourcePerTrace) { return __awaiter$1(_this, void 0, void 0, function () {\n\t            var payload;\n\t            return __generator$1(this, function (_a) {\n\t                sourcePerTrace.forEach(function (source, index) {\n\t                    notice.backtrace[index].source = source;\n\t                });\n\t                payload = this.__buildPayload(notice);\n\t                return [2 /*return*/, this.__transport\n\t                        .send({\n\t                        headers: {\n\t                            'X-API-Key': this.config.apiKey,\n\t                            'Content-Type': 'application/json',\n\t                            'Accept': 'text/json, application/json'\n\t                        },\n\t                        method: 'POST',\n\t                        endpoint: (0, util_1$1.endpoint)(this.config.endpoint, '/v1/notices/js'),\n\t                        maxObjectDepth: this.config.maxObjectDepth,\n\t                        logger: this.logger,\n\t                    }, payload)];\n\t            });\n\t        }); })\n\t            .then(function (res) {\n\t            if (res.statusCode !== 201) {\n\t                (0, util_1$1.runAfterNotifyHandlers)(notice, _this.__afterNotifyHandlers, new Error(\"Bad HTTP response: \".concat(res.statusCode)));\n\t                _this.logger.warn(\"Error report failed: unknown response from server. code=\".concat(res.statusCode));\n\t                return false;\n\t            }\n\t            var uuid = JSON.parse(res.body).id;\n\t            (0, util_1$1.runAfterNotifyHandlers)((0, util_1$1.merge)(notice, {\n\t                id: uuid\n\t            }), _this.__afterNotifyHandlers);\n\t            var noticeUrl = (0, util_1$1.endpoint)(_this.config.appEndpoint, \"notice/\".concat(uuid));\n\t            _this.logger.info(\"Error report sent \\u26A1 \".concat(noticeUrl));\n\t            return true;\n\t        })\n\t            .catch(function (err) {\n\t            _this.logger.error('Error report failed: an unknown error occurred.', \"message=\".concat(err.message));\n\t            (0, util_1$1.runAfterNotifyHandlers)(notice, _this.__afterNotifyHandlers, err);\n\t            return false;\n\t        });\n\t    };\n\t    return Client;\n\t}());\n\tclient.Client = Client;\n\n\tvar types = {};\n\n\tObject.defineProperty(types, \"__esModule\", { value: true });\n\n\t(function (exports) {\n\t\tvar __createBinding = (commonjsGlobal && commonjsGlobal.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n\t\t    if (k2 === undefined) k2 = k;\n\t\t    var desc = Object.getOwnPropertyDescriptor(m, k);\n\t\t    if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n\t\t      desc = { enumerable: true, get: function() { return m[k]; } };\n\t\t    }\n\t\t    Object.defineProperty(o, k2, desc);\n\t\t}) : (function(o, m, k, k2) {\n\t\t    if (k2 === undefined) k2 = k;\n\t\t    o[k2] = m[k];\n\t\t}));\n\t\tvar __setModuleDefault = (commonjsGlobal && commonjsGlobal.__setModuleDefault) || (Object.create ? (function(o, v) {\n\t\t    Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n\t\t}) : function(o, v) {\n\t\t    o[\"default\"] = v;\n\t\t});\n\t\tvar __exportStar = (commonjsGlobal && commonjsGlobal.__exportStar) || function(m, exports) {\n\t\t    for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n\t\t};\n\t\tvar __importStar = (commonjsGlobal && commonjsGlobal.__importStar) || function (mod) {\n\t\t    if (mod && mod.__esModule) return mod;\n\t\t    var result = {};\n\t\t    if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n\t\t    __setModuleDefault(result, mod);\n\t\t    return result;\n\t\t};\n\t\tvar __importDefault = (commonjsGlobal && commonjsGlobal.__importDefault) || function (mod) {\n\t\t    return (mod && mod.__esModule) ? mod : { \"default\": mod };\n\t\t};\n\t\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\t\texports.Plugins = exports.Defaults = exports.Util = exports.Types = exports.Client = void 0;\n\t\tvar events_1 = __importDefault(events);\n\t\tvar client_1 = client;\n\t\tObject.defineProperty(exports, \"Client\", { enumerable: true, get: function () { return client_1.Client; } });\n\t\t__exportStar(store, exports);\n\t\texports.Types = __importStar(types);\n\t\texports.Util = __importStar(util$1);\n\t\texports.Defaults = __importStar(defaults);\n\t\texports.Plugins = {\n\t\t    events: events_1.default\n\t\t};\n\t\t\n\t} (src));\n\n\tvar util = {};\n\n\tObject.defineProperty(util, \"__esModule\", { value: true });\n\tutil.preferCatch = util.encodeCookie = util.decodeCookie = util.localURLPathname = util.parseURL = util.nativeFetch = util.stringTextOfElement = util.stringSelectorOfElement = util.stringNameOfElement = void 0;\n\tvar core_1$7 = src;\n\tvar globalThisOrWindow$7 = core_1$7.Util.globalThisOrWindow;\n\t/**\n\t * Converts an HTMLElement into a human-readable string.\n\t * @param {!HTMLElement} element\n\t * @return {string}\n\t */\n\tfunction stringNameOfElement(element) {\n\t    if (!element || !element.tagName) {\n\t        return '';\n\t    }\n\t    var name = element.tagName.toLowerCase();\n\t    // Ignore the root <html> element in selectors and events.\n\t    if (name === 'html') {\n\t        return '';\n\t    }\n\t    if (element.id) {\n\t        name += \"#\".concat(element.id);\n\t    }\n\t    var stringClassNames = element.getAttribute('class');\n\t    if (stringClassNames) {\n\t        stringClassNames.split(/\\s+/).forEach(function (className) {\n\t            name += \".\".concat(className);\n\t        });\n\t    }\n\t    ['alt', 'name', 'title', 'type'].forEach(function (attrName) {\n\t        var attr = element.getAttribute(attrName);\n\t        if (attr) {\n\t            name += \"[\".concat(attrName, \"=\\\"\").concat(attr, \"\\\"]\");\n\t        }\n\t    });\n\t    var siblings = getSiblings(element);\n\t    if (siblings.length > 1) {\n\t        name += \":nth-child(\".concat(Array.prototype.indexOf.call(siblings, element) + 1, \")\");\n\t    }\n\t    return name;\n\t}\n\tutil.stringNameOfElement = stringNameOfElement;\n\tfunction stringSelectorOfElement(element) {\n\t    var name = stringNameOfElement(element);\n\t    if (element.parentNode && element.parentNode.tagName) {\n\t        var parentName = stringSelectorOfElement(element.parentNode);\n\t        if (parentName.length > 0) {\n\t            return \"\".concat(parentName, \" > \").concat(name);\n\t        }\n\t    }\n\t    return name;\n\t}\n\tutil.stringSelectorOfElement = stringSelectorOfElement;\n\tfunction stringTextOfElement(element) {\n\t    var text = element.textContent || element.innerText || '';\n\t    if (!text && (element.type === 'submit' || element.type === 'button')) {\n\t        text = element.value;\n\t    }\n\t    return truncate(text.trim(), 300);\n\t}\n\tutil.stringTextOfElement = stringTextOfElement;\n\tfunction nativeFetch() {\n\t    var global = globalThisOrWindow$7();\n\t    if (!global.fetch) {\n\t        return false;\n\t    }\n\t    if (isNative(global.fetch)) {\n\t        return true;\n\t    }\n\t    if (typeof document === 'undefined') {\n\t        return false;\n\t    }\n\t    // If fetch isn't native, it may be wrapped by someone else. Try to get\n\t    // a pristine function from an iframe.\n\t    try {\n\t        var sandbox = document.createElement('iframe');\n\t        sandbox.style.display = 'none';\n\t        document.head.appendChild(sandbox);\n\t        var result = sandbox.contentWindow.fetch && isNative(sandbox.contentWindow.fetch);\n\t        document.head.removeChild(sandbox);\n\t        return result;\n\t    }\n\t    catch (err) {\n\t        if (console && console.warn) {\n\t            console.warn('failed to detect native fetch via iframe: ' + err);\n\t        }\n\t    }\n\t    return false;\n\t}\n\tutil.nativeFetch = nativeFetch;\n\tfunction isNative(func) {\n\t    return func.toString().indexOf('native') !== -1;\n\t}\n\tfunction parseURL(url) {\n\t    // Regexp: https://tools.ietf.org/html/rfc3986#appendix-B\n\t    var match = url.match(/^(([^:/?#]+):)?(\\/\\/([^/?#]*))?([^?#]*)(\\?([^#]*))?(#(.*))?$/) || {};\n\t    return {\n\t        protocol: match[2],\n\t        host: match[4],\n\t        pathname: match[5]\n\t    };\n\t}\n\tutil.parseURL = parseURL;\n\tfunction localURLPathname(url) {\n\t    var parsed = parseURL(url);\n\t    var parsedDocURL = parseURL(document.URL);\n\t    // URL must be relative\n\t    if (!parsed.host || !parsed.protocol) {\n\t        return parsed.pathname;\n\t    }\n\t    // Same domain\n\t    if (parsed.protocol === parsedDocURL.protocol && parsed.host === parsedDocURL.host) {\n\t        return parsed.pathname;\n\t    }\n\t    // x-domain\n\t    return \"\".concat(parsed.protocol, \"://\").concat(parsed.host).concat(parsed.pathname);\n\t}\n\tutil.localURLPathname = localURLPathname;\n\tfunction decodeCookie(string) {\n\t    var result = {};\n\t    string.split(/[;,]\\s?/).forEach(function (pair) {\n\t        var _a = pair.split('=', 2), key = _a[0], value = _a[1];\n\t        result[key] = value;\n\t    });\n\t    return result;\n\t}\n\tutil.decodeCookie = decodeCookie;\n\tfunction encodeCookie(object) {\n\t    if (typeof object !== 'object') {\n\t        return undefined;\n\t    }\n\t    var cookies = [];\n\t    for (var k in object) {\n\t        cookies.push(k + '=' + object[k]);\n\t    }\n\t    return cookies.join(';');\n\t}\n\tutil.encodeCookie = encodeCookie;\n\t// Helpers\n\tfunction getSiblings(element) {\n\t    try {\n\t        var nodes = element.parentNode.childNodes;\n\t        var siblings_1 = [];\n\t        Array.prototype.forEach.call(nodes, function (node) {\n\t            if (node.tagName && node.tagName === element.tagName) {\n\t                siblings_1.push(node);\n\t            }\n\t        });\n\t        return siblings_1;\n\t    }\n\t    catch (e) {\n\t        return [];\n\t    }\n\t}\n\tfunction truncate(string, length) {\n\t    if (string.length > length) {\n\t        string = string.substr(0, length) + '...';\n\t    }\n\t    return string;\n\t}\n\t// Used to decide which error handling method to use when wrapping async\n\t// handlers: try/catch, or `window.onerror`. When available, `window.onerror`\n\t// will provide more information in modern browsers.\n\tutil.preferCatch = (function () {\n\t    var preferCatch = true;\n\t    // In case we're in an environment without access to \"window\", lets make sure theres a window.\n\t    if (typeof window === 'undefined')\n\t        return preferCatch;\n\t    // IE < 10\n\t    if (!window.atob) {\n\t        preferCatch = false;\n\t    }\n\t    // Modern browsers support the full ErrorEvent API\n\t    // See https://developer.mozilla.org/en-US/docs/Web/API/ErrorEvent\n\t    if (window.ErrorEvent) {\n\t        try {\n\t            if ((new window.ErrorEvent('')).colno === 0) {\n\t                preferCatch = false;\n\t            }\n\t            // eslint-disable-next-line no-empty\n\t        }\n\t        catch (_e) { }\n\t    }\n\t    return preferCatch;\n\t})();\n\n\tvar onerror = {};\n\n\tObject.defineProperty(onerror, \"__esModule\", { value: true });\n\tonerror.onError = onerror.ignoreNextOnError = void 0;\n\t/* eslint-disable prefer-rest-params */\n\tvar core_1$6 = src;\n\tvar instrument$4 = core_1$6.Util.instrument, makeNotice = core_1$6.Util.makeNotice, globalThisOrWindow$6 = core_1$6.Util.globalThisOrWindow;\n\tvar ignoreOnError = 0;\n\tvar currentTimeout;\n\tfunction ignoreNextOnError() {\n\t    ignoreOnError += 1;\n\t    clearTimeout(currentTimeout);\n\t    currentTimeout = setTimeout(function () {\n\t        ignoreOnError = 0;\n\t    });\n\t}\n\tonerror.ignoreNextOnError = ignoreNextOnError;\n\t// eslint-disable-next-line @typescript-eslint/no-explicit-any\n\tfunction onError(_window) {\n\t    if (_window === void 0) { _window = globalThisOrWindow$6(); }\n\t    return {\n\t        load: function (client) {\n\t            instrument$4(_window, 'onerror', function (original) {\n\t                var onerror = function (msg, url, line, col, err) {\n\t                    client.logger.debug('window.onerror callback invoked', arguments);\n\t                    if (ignoreOnError > 0) {\n\t                        client.logger.debug('Ignoring window.onerror (error likely reported earlier)', arguments);\n\t                        ignoreOnError -= 1;\n\t                        return;\n\t                    }\n\t                    // See https://developer.mozilla.org/en/docs/Web/API/GlobalEventHandlers/onerror#Notes\n\t                    if (line === 0 && /Script error\\.?/.test(msg)) {\n\t                        if (client.config.enableUncaught) {\n\t                            // Log only if the user wants to report uncaught errors\n\t                            client.logger.warn('Ignoring cross-domain script error: enable CORS to track these types of errors', arguments);\n\t                        }\n\t                        return;\n\t                    }\n\t                    var notice = makeNotice(err);\n\t                    if (!notice.name) {\n\t                        notice.name = 'window.onerror';\n\t                    }\n\t                    if (!notice.message) {\n\t                        notice.message = msg;\n\t                    }\n\t                    if (!notice.stack) {\n\t                        // Simulate v8 stack\n\t                        notice.stack = [notice.message, '\\n    at ? (', url || 'unknown', ':', line || 0, ':', col || 0, ')'].join('');\n\t                    }\n\t                    client.addBreadcrumb((notice.name === 'window.onerror' || !notice.name) ? 'window.onerror' : \"window.onerror: \".concat(notice.name), {\n\t                        category: 'error',\n\t                        metadata: {\n\t                            name: notice.name,\n\t                            message: notice.message,\n\t                            stack: notice.stack\n\t                        }\n\t                    });\n\t                    if (client.config.enableUncaught) {\n\t                        client.notify(notice);\n\t                    }\n\t                };\n\t                return function (msg, url, line, col, err) {\n\t                    onerror(msg, url, line, col, err);\n\t                    if (typeof original === 'function') {\n\t                        return original.apply(_window, arguments);\n\t                    }\n\t                    return false;\n\t                };\n\t            });\n\t        }\n\t    };\n\t}\n\tonerror.onError = onError;\n\n\tvar onunhandledrejection = {};\n\n\tObject.defineProperty(onunhandledrejection, \"__esModule\", { value: true });\n\t/* eslint-disable prefer-rest-params */\n\tvar core_1$5 = src;\n\tvar instrument$3 = core_1$5.Util.instrument, globalThisOrWindow$5 = core_1$5.Util.globalThisOrWindow;\n\t// eslint-disable-next-line @typescript-eslint/no-explicit-any\n\tfunction default_1$3(_window) {\n\t    if (_window === void 0) { _window = globalThisOrWindow$5(); }\n\t    return {\n\t        load: function (client) {\n\t            if (!client.config.enableUnhandledRejection) {\n\t                return;\n\t            }\n\t            instrument$3(_window, 'onunhandledrejection', function (original) {\n\t                // See https://developer.mozilla.org/en-US/docs/Web/API/Window/unhandledrejection_event\n\t                function onunhandledrejection(promiseRejectionEvent) {\n\t                    var _a;\n\t                    client.logger.debug('window.onunhandledrejection callback invoked', arguments);\n\t                    if (!client.config.enableUnhandledRejection) {\n\t                        return;\n\t                    }\n\t                    var reason = promiseRejectionEvent.reason;\n\t                    if (reason instanceof Error) {\n\t                        // simulate v8 stack\n\t                        // const fileName = reason.fileName || 'unknown'\n\t                        // const lineNumber = reason.lineNumber || 0\n\t                        var fileName = 'unknown';\n\t                        var lineNumber = 0;\n\t                        var stackFallback = \"\".concat(reason.message, \"\\n    at ? (\").concat(fileName, \":\").concat(lineNumber, \")\");\n\t                        var stack = reason.stack || stackFallback;\n\t                        var err = {\n\t                            name: reason.name,\n\t                            message: \"UnhandledPromiseRejectionWarning: \".concat(reason),\n\t                            stack: stack\n\t                        };\n\t                        client.addBreadcrumb(\"window.onunhandledrejection: \".concat(err.name), {\n\t                            category: 'error',\n\t                            metadata: err\n\t                        });\n\t                        client.notify(err);\n\t                        return;\n\t                    }\n\t                    var message = typeof reason === 'string' ? reason : ((_a = JSON.stringify(reason)) !== null && _a !== void 0 ? _a : 'Unspecified reason');\n\t                    client.notify({\n\t                        name: 'window.onunhandledrejection',\n\t                        message: \"UnhandledPromiseRejectionWarning: \".concat(message)\n\t                    });\n\t                }\n\t                return function (promiseRejectionEvent) {\n\t                    onunhandledrejection(promiseRejectionEvent);\n\t                    if (typeof original === 'function') {\n\t                        original.apply(this, arguments);\n\t                    }\n\t                };\n\t            });\n\t        }\n\t    };\n\t}\n\tonunhandledrejection.default = default_1$3;\n\n\tvar breadcrumbs = {};\n\n\tObject.defineProperty(breadcrumbs, \"__esModule\", { value: true });\n\t/* eslint-disable prefer-rest-params */\n\tvar core_1$4 = src;\n\tvar util_1 = util;\n\tvar sanitize$1 = core_1$4.Util.sanitize, instrument$2 = core_1$4.Util.instrument, instrumentConsole = core_1$4.Util.instrumentConsole, globalThisOrWindow$4 = core_1$4.Util.globalThisOrWindow;\n\tfunction default_1$2(_window) {\n\t    if (_window === void 0) { _window = globalThisOrWindow$4(); }\n\t    return {\n\t        load: function (client) {\n\t            function breadcrumbsEnabled(type) {\n\t                if (client.config.breadcrumbsEnabled === true) {\n\t                    return true;\n\t                }\n\t                if (type) {\n\t                    return client.config.breadcrumbsEnabled[type] === true;\n\t                }\n\t                return client.config.breadcrumbsEnabled !== false;\n\t            }\n\t            // Breadcrumbs: instrument console\n\t            (function () {\n\t                if (!breadcrumbsEnabled('console')) {\n\t                    return;\n\t                }\n\t                function inspectArray(obj) {\n\t                    if (!Array.isArray(obj)) {\n\t                        return '';\n\t                    }\n\t                    return obj.map(function (value) {\n\t                        try {\n\t                            return String(value);\n\t                        }\n\t                        catch (e) {\n\t                            return '[unknown]';\n\t                        }\n\t                    }).join(' ');\n\t                }\n\t                instrumentConsole(_window, function (level, args) {\n\t                    var message = inspectArray(args);\n\t                    var opts = {\n\t                        category: 'log',\n\t                        metadata: {\n\t                            level: level,\n\t                            arguments: sanitize$1(args, 3)\n\t                        }\n\t                    };\n\t                    client.addBreadcrumb(message, opts);\n\t                });\n\t            })();\n\t            // Breadcrumbs: instrument click events\n\t            (function () {\n\t                if (!breadcrumbsEnabled('dom')) {\n\t                    return;\n\t                }\n\t                if (typeof _window.addEventListener !== 'function') {\n\t                    return;\n\t                }\n\t                _window.addEventListener('click', function (event) {\n\t                    var message, selector, text;\n\t                    try {\n\t                        message = (0, util_1.stringNameOfElement)(event.target);\n\t                        selector = (0, util_1.stringSelectorOfElement)(event.target);\n\t                        text = (0, util_1.stringTextOfElement)(event.target);\n\t                    }\n\t                    catch (e) {\n\t                        message = 'UI Click';\n\t                        selector = '[unknown]';\n\t                        text = '[unknown]';\n\t                    }\n\t                    // There's nothing to display\n\t                    if (message.length === 0) {\n\t                        return;\n\t                    }\n\t                    client.addBreadcrumb(message, {\n\t                        category: 'ui.click',\n\t                        metadata: {\n\t                            selector: selector,\n\t                            text: text,\n\t                            event: event\n\t                        }\n\t                    });\n\t                }, _window.location ? true : false); // In CloudFlare workers useCapture must be false. window.location is a hacky way to detect it.\n\t            })();\n\t            // Breadcrumbs: instrument XMLHttpRequest\n\t            (function () {\n\t                if (!breadcrumbsEnabled('network')) {\n\t                    return;\n\t                }\n\t                // Some environments may not support XMLHttpRequest.\n\t                if (typeof XMLHttpRequest === 'undefined') {\n\t                    return;\n\t                }\n\t                // -- On xhr.open: capture initial metadata\n\t                instrument$2(XMLHttpRequest.prototype, 'open', function (original) {\n\t                    return function () {\n\t                        // eslint-disable-next-line @typescript-eslint/no-this-alias\n\t                        var xhr = this;\n\t                        var rawUrl = arguments[1];\n\t                        // in case of url being URL object (which is valid input) we need to stringify it\n\t                        var url = typeof rawUrl === 'string' ? rawUrl : String(rawUrl);\n\t                        var method = typeof arguments[0] === 'string' ? arguments[0].toUpperCase() : arguments[0];\n\t                        var message = \"\".concat(method, \" \").concat((0, util_1.localURLPathname)(url));\n\t                        this.__hb_xhr = {\n\t                            type: 'xhr',\n\t                            method: method,\n\t                            url: url,\n\t                            message: message\n\t                        };\n\t                        if (typeof original === 'function') {\n\t                            original.apply(xhr, arguments);\n\t                        }\n\t                    };\n\t                });\n\t                // -- On xhr.send: set up xhr.onreadystatechange to report breadcrumb\n\t                instrument$2(XMLHttpRequest.prototype, 'send', function (original) {\n\t                    return function () {\n\t                        // eslint-disable-next-line @typescript-eslint/no-this-alias\n\t                        var xhr = this;\n\t                        function onreadystatechangeHandler() {\n\t                            if (xhr.readyState === 4) {\n\t                                var message = void 0;\n\t                                if (xhr.__hb_xhr) {\n\t                                    xhr.__hb_xhr.status_code = xhr.status;\n\t                                    message = xhr.__hb_xhr.message;\n\t                                    delete xhr.__hb_xhr.message;\n\t                                }\n\t                                client.addBreadcrumb(message || 'XMLHttpRequest', {\n\t                                    category: 'request',\n\t                                    metadata: xhr.__hb_xhr\n\t                                });\n\t                            }\n\t                        }\n\t                        if ('onreadystatechange' in xhr && typeof xhr.onreadystatechange === 'function') {\n\t                            instrument$2(xhr, 'onreadystatechange', function (original) {\n\t                                return function () {\n\t                                    onreadystatechangeHandler();\n\t                                    if (typeof original === 'function') {\n\t                                        // eslint-disable-next-line prefer-rest-params\n\t                                        original.apply(this, arguments);\n\t                                    }\n\t                                };\n\t                            });\n\t                        }\n\t                        else {\n\t                            xhr.onreadystatechange = onreadystatechangeHandler;\n\t                        }\n\t                        if (typeof original === 'function') {\n\t                            // eslint-disable-next-line prefer-rest-params\n\t                            original.apply(xhr, arguments);\n\t                        }\n\t                    };\n\t                });\n\t            })();\n\t            // Breadcrumbs: instrument fetch\n\t            (function () {\n\t                if (!breadcrumbsEnabled('network')) {\n\t                    return;\n\t                }\n\t                if (!(0, util_1.nativeFetch)()) {\n\t                    // Polyfills use XHR.\n\t                    return;\n\t                }\n\t                instrument$2(_window, 'fetch', function (original) {\n\t                    return function () {\n\t                        // eslint-disable-next-line prefer-rest-params\n\t                        var input = arguments[0];\n\t                        var method = 'GET';\n\t                        var url;\n\t                        if (typeof input === 'string') {\n\t                            url = input;\n\t                        }\n\t                        else if ('Request' in _window && input instanceof Request) {\n\t                            url = input.url;\n\t                            if (input.method) {\n\t                                method = input.method;\n\t                            }\n\t                        }\n\t                        else {\n\t                            url = String(input);\n\t                        }\n\t                        if (arguments[1] && arguments[1].method) {\n\t                            method = arguments[1].method;\n\t                        }\n\t                        if (typeof method === 'string') {\n\t                            method = method.toUpperCase();\n\t                        }\n\t                        // localURLPathname cant be constructed for CF workers due to reliance on \"document\".\n\t                        var message = \"\".concat(method, \" \").concat(typeof document === 'undefined' ? url : (0, util_1.localURLPathname)(url));\n\t                        var metadata = {\n\t                            type: 'fetch',\n\t                            method: method,\n\t                            url: url\n\t                        };\n\t                        return original\n\t                            .apply(this, arguments)\n\t                            .then(function (response) {\n\t                            metadata['status_code'] = response.status;\n\t                            client.addBreadcrumb(message, {\n\t                                category: 'request',\n\t                                metadata: metadata\n\t                            });\n\t                            return response;\n\t                        })\n\t                            .catch(function (error) {\n\t                            client.addBreadcrumb('fetch error', {\n\t                                category: 'error',\n\t                                metadata: metadata\n\t                            });\n\t                            throw error;\n\t                        });\n\t                    };\n\t                });\n\t            })();\n\t            // Breadcrumbs: instrument navigation\n\t            (function () {\n\t                if (!breadcrumbsEnabled('navigation')) {\n\t                    return;\n\t                }\n\t                if (_window.location == null) {\n\t                    // Most likely in a CF worker, we should be listening to fetch requests instead.\n\t                    return;\n\t                }\n\t                // The last known href of the current page\n\t                var lastHref = _window.location.href;\n\t                function recordUrlChange(from, to) {\n\t                    lastHref = to;\n\t                    client.addBreadcrumb('Page changed', {\n\t                        category: 'navigation',\n\t                        metadata: {\n\t                            from: from,\n\t                            to: to\n\t                        }\n\t                    });\n\t                }\n\t                if (typeof addEventListener === 'function') {\n\t                    addEventListener('popstate', function (_event) {\n\t                        recordUrlChange(lastHref, _window.location.href);\n\t                    });\n\t                }\n\t                if (typeof _window.history === 'undefined') {\n\t                    return;\n\t                }\n\t                // https://developer.mozilla.org/en-US/docs/Web/API/History/pushState\n\t                // https://developer.mozilla.org/en-US/docs/Web/API/History/replaceState\n\t                function historyWrapper(original) {\n\t                    return function () {\n\t                        var url = arguments.length > 2 ? arguments[2] : undefined;\n\t                        if (url) {\n\t                            recordUrlChange(lastHref, String(url));\n\t                        }\n\t                        return original.apply(this, arguments);\n\t                    };\n\t                }\n\t                instrument$2(_window.history, 'pushState', historyWrapper);\n\t                instrument$2(_window.history, 'replaceState', historyWrapper);\n\t            })();\n\t        }\n\t    };\n\t}\n\tbreadcrumbs.default = default_1$2;\n\n\tvar timers = {};\n\n\tObject.defineProperty(timers, \"__esModule\", { value: true });\n\t/* eslint-disable prefer-rest-params */\n\tvar core_1$3 = src;\n\tvar instrument$1 = core_1$3.Util.instrument, globalThisOrWindow$3 = core_1$3.Util.globalThisOrWindow;\n\tfunction default_1$1(_window) {\n\t    if (_window === void 0) { _window = globalThisOrWindow$3(); }\n\t    return {\n\t        load: function (client) {\n\t            // Wrap timers\n\t            (function () {\n\t                function instrumentTimer(wrapOpts) {\n\t                    return function (original) {\n\t                        // See https://developer.mozilla.org/en-US/docs/Web/API/WindowTimers/setTimeout\n\t                        return function (func, delay) {\n\t                            if (typeof func === 'function') {\n\t                                var args_1 = Array.prototype.slice.call(arguments, 2);\n\t                                func = client.__wrap(func, wrapOpts);\n\t                                return original(function () {\n\t                                    func.apply(void 0, args_1);\n\t                                }, delay);\n\t                            }\n\t                            else {\n\t                                return original(func, delay);\n\t                            }\n\t                        };\n\t                    };\n\t                }\n\t                instrument$1(_window, 'setTimeout', instrumentTimer({ component: 'setTimeout' }));\n\t                instrument$1(_window, 'setInterval', instrumentTimer({ component: 'setInterval' }));\n\t            })();\n\t        }\n\t    };\n\t}\n\ttimers.default = default_1$1;\n\n\tvar event_listeners = {};\n\n\tObject.defineProperty(event_listeners, \"__esModule\", { value: true });\n\tvar core_1$2 = src;\n\tvar instrument = core_1$2.Util.instrument, globalThisOrWindow$2 = core_1$2.Util.globalThisOrWindow;\n\tfunction default_1(_window) {\n\t    if (_window === void 0) { _window = globalThisOrWindow$2(); }\n\t    return {\n\t        load: function (client) {\n\t            // Wrap event listeners\n\t            // Event targets borrowed from bugsnag-js:\n\t            // See https://github.com/bugsnag/bugsnag-js/blob/d55af916a4d3c7757f979d887f9533fe1a04cc93/src/bugsnag.js#L542\n\t            var targets = ['EventTarget', 'Window', 'Node', 'ApplicationCache', 'AudioTrackList', 'ChannelMergerNode', 'CryptoOperation', 'EventSource', 'FileReader', 'HTMLUnknownElement', 'IDBDatabase', 'IDBRequest', 'IDBTransaction', 'KeyOperation', 'MediaController', 'MessagePort', 'ModalWindow', 'Notification', 'SVGElementInstance', 'Screen', 'TextTrack', 'TextTrackCue', 'TextTrackList', 'WebSocket', 'WebSocketWorker', 'Worker', 'XMLHttpRequest', 'XMLHttpRequestEventTarget', 'XMLHttpRequestUpload'];\n\t            targets.forEach(function (prop) {\n\t                var prototype = _window[prop] && _window[prop].prototype;\n\t                if (prototype && Object.prototype.hasOwnProperty.call(prototype, 'addEventListener')) {\n\t                    instrument(prototype, 'addEventListener', function (original) {\n\t                        var wrapOpts = { component: \"\".concat(prop, \".prototype.addEventListener\") };\n\t                        // See https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener\n\t                        return function (type, listener, useCapture, wantsUntrusted) {\n\t                            try {\n\t                                if (listener && listener.handleEvent != null) {\n\t                                    listener.handleEvent = client.__wrap(listener.handleEvent, wrapOpts);\n\t                                }\n\t                            }\n\t                            catch (e) {\n\t                                // Ignore 'Permission denied to access property \"handleEvent\"' errors.\n\t                                client.logger.error(e);\n\t                            }\n\t                            return original.call(this, type, client.__wrap(listener, wrapOpts), useCapture, wantsUntrusted);\n\t                        };\n\t                    });\n\t                    instrument(prototype, 'removeEventListener', function (original) {\n\t                        return function (type, listener, useCapture, wantsUntrusted) {\n\t                            original.call(this, type, listener, useCapture, wantsUntrusted);\n\t                            return original.call(this, type, client.__wrap(listener), useCapture, wantsUntrusted);\n\t                        };\n\t                    });\n\t                }\n\t            });\n\t        }\n\t    };\n\t}\n\tevent_listeners.default = default_1;\n\n\tvar transport = {};\n\n\tvar __awaiter = (commonjsGlobal && commonjsGlobal.__awaiter) || function (thisArg, _arguments, P, generator) {\n\t    function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n\t    return new (P || (P = Promise))(function (resolve, reject) {\n\t        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n\t        function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n\t        function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n\t        step((generator = generator.apply(thisArg, _arguments || [])).next());\n\t    });\n\t};\n\tvar __generator = (commonjsGlobal && commonjsGlobal.__generator) || function (thisArg, body) {\n\t    var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n\t    return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n\t    function verb(n) { return function (v) { return step([n, v]); }; }\n\t    function step(op) {\n\t        if (f) throw new TypeError(\"Generator is already executing.\");\n\t        while (_) try {\n\t            if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n\t            if (y = 0, t) op = [op[0] & 2, t.value];\n\t            switch (op[0]) {\n\t                case 0: case 1: t = op; break;\n\t                case 4: _.label++; return { value: op[1], done: false };\n\t                case 5: _.label++; y = op[1]; op = [0]; continue;\n\t                case 7: op = _.ops.pop(); _.trys.pop(); continue;\n\t                default:\n\t                    if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n\t                    if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n\t                    if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n\t                    if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n\t                    if (t[2]) _.ops.pop();\n\t                    _.trys.pop(); continue;\n\t            }\n\t            op = body.call(thisArg, _);\n\t        } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n\t        if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n\t    }\n\t};\n\tObject.defineProperty(transport, \"__esModule\", { value: true });\n\ttransport.BrowserTransport = void 0;\n\tvar core_1$1 = src;\n\tvar sanitize = core_1$1.Util.sanitize, globalThisOrWindow$1 = core_1$1.Util.globalThisOrWindow;\n\t/**\n\t * Helper function to get typesafe Object.entries()\n\t * https://twitter.com/mattpocockuk/status/1502264005251018754?lang=en\n\t */\n\tfunction objectEntries(obj) {\n\t    return Object.entries(obj);\n\t}\n\tvar BrowserTransport = /** @class */ (function () {\n\t    function BrowserTransport(headers) {\n\t        if (headers === void 0) { headers = {}; }\n\t        this.headers = {};\n\t        this.headers = headers;\n\t    }\n\t    BrowserTransport.prototype.defaultHeaders = function () {\n\t        return this.headers;\n\t    };\n\t    BrowserTransport.prototype.send = function (options, payload) {\n\t        return __awaiter(this, void 0, void 0, function () {\n\t            var headerArray, headers, requestInit, response, body;\n\t            return __generator(this, function (_a) {\n\t                switch (_a.label) {\n\t                    case 0:\n\t                        headerArray = options.headers ? objectEntries(options.headers) : [];\n\t                        headers = this.defaultHeaders();\n\t                        headerArray.forEach(function (_a) {\n\t                            var key = _a[0], value = _a[1];\n\t                            if (key != null && value != null) {\n\t                                headers[String(key)] = String(value);\n\t                            }\n\t                        });\n\t                        requestInit = {\n\t                            method: options.method,\n\t                            headers: headers\n\t                        };\n\t                        // GET methods cannot have a body.\n\t                        if (options.method === 'POST' && payload) {\n\t                            requestInit.body = typeof payload === 'string' ? payload : JSON.stringify(sanitize(payload, options.maxObjectDepth));\n\t                        }\n\t                        return [4 /*yield*/, globalThisOrWindow$1().fetch(options.endpoint, requestInit)];\n\t                    case 1:\n\t                        response = _a.sent();\n\t                        return [4 /*yield*/, response.text()];\n\t                    case 2:\n\t                        body = _a.sent();\n\t                        return [2 /*return*/, Promise.resolve({ statusCode: response.status, body: body })];\n\t                }\n\t            });\n\t        });\n\t    };\n\t    return BrowserTransport;\n\t}());\n\ttransport.BrowserTransport = BrowserTransport;\n\n\tvar feedbackForm = {};\n\n\tvar __assign = (commonjsGlobal && commonjsGlobal.__assign) || function () {\n\t    __assign = Object.assign || function(t) {\n\t        for (var s, i = 1, n = arguments.length; i < n; i++) {\n\t            s = arguments[i];\n\t            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n\t                t[p] = s[p];\n\t        }\n\t        return t;\n\t    };\n\t    return __assign.apply(this, arguments);\n\t};\n\tObject.defineProperty(feedbackForm, \"__esModule\", { value: true });\n\tfeedbackForm.BrowserFeedbackForm = void 0;\n\tvar core_1 = src;\n\tvar globalThisOrWindow = core_1.Util.globalThisOrWindow;\n\tvar BrowserFeedbackForm = /** @class */ (function () {\n\t    function BrowserFeedbackForm(config, logger, scriptUrl) {\n\t        this.config = config;\n\t        this.logger = logger;\n\t        this.scriptUrl = scriptUrl;\n\t    }\n\t    /* ROLLUP_STRIP_CODE_CHROME_EXTENSION_START */\n\t    BrowserFeedbackForm.prototype.appendUserFeedbackTag = function (window, options) {\n\t        if (options === void 0) { options = {}; }\n\t        var script = window.document.createElement('script');\n\t        script.setAttribute('src', this.scriptUrl);\n\t        script.setAttribute('async', 'true');\n\t        if (options.onLoad) {\n\t            script.onload = options.onLoad;\n\t        }\n\t        (commonjsGlobal.document.head || commonjsGlobal.document.body).appendChild(script);\n\t    };\n\t    BrowserFeedbackForm.prototype.isUserFeedbackUrlAlreadyVisible = function () {\n\t        var global = globalThisOrWindow();\n\t        var feedbackScriptUrl = this.scriptUrl;\n\t        for (var i = 0; i < global.document.scripts.length; i++) {\n\t            var script = global.document.scripts[i];\n\t            if (script.src === feedbackScriptUrl) {\n\t                return true;\n\t            }\n\t        }\n\t        return false;\n\t    };\n\t    /* ROLLUP_STRIP_CODE_CHROME_EXTENSION_END */\n\t    BrowserFeedbackForm.prototype.show = function (lastNoticeId, options) {\n\t        if (options === void 0) { options = {}; }\n\t        if (typeof (this.appendUserFeedbackTag) !== 'function') {\n\t            this.logger.debug('Feedback form is not available in this environment');\n\t            return;\n\t        }\n\t        if (!this.config || !this.config.apiKey) {\n\t            this.logger.debug('Client not initialized');\n\t            return;\n\t        }\n\t        if (!lastNoticeId) {\n\t            this.logger.debug(\"Can't show user feedback form without a notice already reported\");\n\t            return;\n\t        }\n\t        var global = globalThisOrWindow();\n\t        if (typeof global.document === 'undefined') {\n\t            this.logger.debug('global.document is undefined. Cannot attach script');\n\t            return;\n\t        }\n\t        if (this.isUserFeedbackUrlAlreadyVisible()) {\n\t            this.logger.debug('User feedback form is already visible');\n\t            return;\n\t        }\n\t        global['honeybadgerUserFeedbackOptions'] = __assign(__assign({}, options), { apiKey: this.config.apiKey, endpoint: this.config.userFeedbackEndpoint, noticeId: lastNoticeId });\n\t        this.appendUserFeedbackTag(global, options);\n\t    };\n\t    return BrowserFeedbackForm;\n\t}());\n\tfeedbackForm.BrowserFeedbackForm = BrowserFeedbackForm;\n\n\t(function (exports) {\n\t\tvar __extends = (commonjsGlobal && commonjsGlobal.__extends) || (function () {\n\t\t    var extendStatics = function (d, b) {\n\t\t        extendStatics = Object.setPrototypeOf ||\n\t\t            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n\t\t            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n\t\t        return extendStatics(d, b);\n\t\t    };\n\t\t    return function (d, b) {\n\t\t        if (typeof b !== \"function\" && b !== null)\n\t\t            throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n\t\t        extendStatics(d, b);\n\t\t        function __() { this.constructor = d; }\n\t\t        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n\t\t    };\n\t\t})();\n\t\tvar __assign = (commonjsGlobal && commonjsGlobal.__assign) || function () {\n\t\t    __assign = Object.assign || function(t) {\n\t\t        for (var s, i = 1, n = arguments.length; i < n; i++) {\n\t\t            s = arguments[i];\n\t\t            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n\t\t                t[p] = s[p];\n\t\t        }\n\t\t        return t;\n\t\t    };\n\t\t    return __assign.apply(this, arguments);\n\t\t};\n\t\tvar __awaiter = (commonjsGlobal && commonjsGlobal.__awaiter) || function (thisArg, _arguments, P, generator) {\n\t\t    function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n\t\t    return new (P || (P = Promise))(function (resolve, reject) {\n\t\t        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n\t\t        function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n\t\t        function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n\t\t        step((generator = generator.apply(thisArg, _arguments || [])).next());\n\t\t    });\n\t\t};\n\t\tvar __generator = (commonjsGlobal && commonjsGlobal.__generator) || function (thisArg, body) {\n\t\t    var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n\t\t    return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n\t\t    function verb(n) { return function (v) { return step([n, v]); }; }\n\t\t    function step(op) {\n\t\t        if (f) throw new TypeError(\"Generator is already executing.\");\n\t\t        while (_) try {\n\t\t            if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n\t\t            if (y = 0, t) op = [op[0] & 2, t.value];\n\t\t            switch (op[0]) {\n\t\t                case 0: case 1: t = op; break;\n\t\t                case 4: _.label++; return { value: op[1], done: false };\n\t\t                case 5: _.label++; y = op[1]; op = [0]; continue;\n\t\t                case 7: op = _.ops.pop(); _.trys.pop(); continue;\n\t\t                default:\n\t\t                    if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n\t\t                    if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n\t\t                    if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n\t\t                    if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n\t\t                    if (t[2]) _.ops.pop();\n\t\t                    _.trys.pop(); continue;\n\t\t            }\n\t\t            op = body.call(thisArg, _);\n\t\t        } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n\t\t        if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n\t\t    }\n\t\t};\n\t\tvar __importDefault = (commonjsGlobal && commonjsGlobal.__importDefault) || function (mod) {\n\t\t    return (mod && mod.__esModule) ? mod : { \"default\": mod };\n\t\t};\n\t\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\t\texports.Types = exports.getUserFeedbackScriptUrl = void 0;\n\t\tvar core_1 = src;\n\t\tvar util_1 = util;\n\t\tvar onerror_1 = onerror;\n\t\tvar onunhandledrejection_1 = __importDefault(onunhandledrejection);\n\t\tvar breadcrumbs_1 = __importDefault(breadcrumbs);\n\t\tvar timers_1 = __importDefault(timers);\n\t\tvar event_listeners_1 = __importDefault(event_listeners);\n\t\tvar transport_1 = transport;\n\t\tvar feedback_form_1 = feedbackForm;\n\t\tvar merge = core_1.Util.merge, filter = core_1.Util.filter, objectIsExtensible = core_1.Util.objectIsExtensible, globalThisOrWindow = core_1.Util.globalThisOrWindow;\n\t\tvar getProjectRoot = function () {\n\t\t    var global = globalThisOrWindow();\n\t\t    var projectRoot = '';\n\t\t    // Cloudflare workers do not have access to location API.\n\t\t    if (global.location != null) {\n\t\t        projectRoot = global.location.protocol + '//' + global.location.host;\n\t\t    }\n\t\t    return projectRoot;\n\t\t};\n\t\tvar getUserFeedbackScriptUrl = function (version) {\n\t\t    var majorMinorVersion = version.split('.').slice(0, 2).join('.');\n\t\t    return \"https://js.honeybadger.io/v\".concat(majorMinorVersion, \"/honeybadger-feedback-form.js\");\n\t\t};\n\t\texports.getUserFeedbackScriptUrl = getUserFeedbackScriptUrl;\n\t\tvar Honeybadger = /** @class */ (function (_super) {\n\t\t    __extends(Honeybadger, _super);\n\t\t    function Honeybadger(opts) {\n\t\t        if (opts === void 0) { opts = {}; }\n\t\t        var _this = _super.call(this, __assign({ userFeedbackEndpoint: 'https://api.honeybadger.io/v2/feedback', async: true, maxErrors: null, projectRoot: getProjectRoot() }, opts), new transport_1.BrowserTransport({\n\t\t            'User-Agent': userAgent(),\n\t\t        })) || this;\n\t\t        /** @internal */\n\t\t        _this.__errorsSent = 0;\n\t\t        /** @internal */\n\t\t        _this.__lastWrapErr = undefined;\n\t\t        /** @internal */\n\t\t        _this.__lastNoticeId = undefined;\n\t\t        /** @internal */\n\t\t        _this.__beforeNotifyHandlers = [\n\t\t            function (notice) {\n\t\t                if (_this.__exceedsMaxErrors()) {\n\t\t                    _this.logger.debug('Dropping notice: max errors exceeded', notice);\n\t\t                    return false;\n\t\t                }\n\t\t                if (notice && !notice.url && typeof document !== 'undefined') {\n\t\t                    notice.url = document.URL;\n\t\t                }\n\t\t                _this.__incrementErrorsCount();\n\t\t                return true;\n\t\t            }\n\t\t        ];\n\t\t        _this.__afterNotifyHandlers = [\n\t\t            function (_error, notice) {\n\t\t                if (notice) {\n\t\t                    _this.__lastNoticeId = notice.id;\n\t\t                }\n\t\t            }\n\t\t        ];\n\t\t        return _this;\n\t\t    }\n\t\t    Honeybadger.prototype.configure = function (opts) {\n\t\t        if (opts === void 0) { opts = {}; }\n\t\t        return _super.prototype.configure.call(this, opts);\n\t\t    };\n\t\t    Honeybadger.prototype.resetMaxErrors = function () {\n\t\t        return (this.__errorsSent = 0);\n\t\t    };\n\t\t    Honeybadger.prototype.factory = function (opts) {\n\t\t        // eslint-disable-next-line @typescript-eslint/no-explicit-any\n\t\t        var clone = new Honeybadger(opts);\n\t\t        clone.setNotifier(this.getNotifier());\n\t\t        return clone;\n\t\t    };\n\t\t    Honeybadger.prototype.checkIn = function (_id) {\n\t\t        throw new Error('Honeybadger.checkIn() is not supported on the browser');\n\t\t    };\n\t\t    Honeybadger.prototype.showUserFeedbackForm = function (options) {\n\t\t        if (options === void 0) { options = {}; }\n\t\t        return __awaiter(this, void 0, void 0, function () {\n\t\t            var form;\n\t\t            return __generator(this, function (_a) {\n\t\t                form = new feedback_form_1.BrowserFeedbackForm(this.config, this.logger, this.getUserFeedbackSubmitUrl());\n\t\t                form.show(this.__lastNoticeId, options);\n\t\t                return [2 /*return*/];\n\t\t            });\n\t\t        });\n\t\t    };\n\t\t    Honeybadger.prototype.getUserFeedbackSubmitUrl = function () {\n\t\t        return (0, exports.getUserFeedbackScriptUrl)(this.getVersion());\n\t\t    };\n\t\t    /** @internal */\n\t\t    Honeybadger.prototype.__buildPayload = function (notice) {\n\t\t        var cgiData = {\n\t\t            HTTP_USER_AGENT: undefined,\n\t\t            HTTP_REFERER: undefined,\n\t\t            HTTP_COOKIE: undefined\n\t\t        };\n\t\t        if (typeof navigator !== 'undefined' && navigator.userAgent) {\n\t\t            cgiData.HTTP_USER_AGENT = navigator.userAgent;\n\t\t        }\n\t\t        if (typeof document !== 'undefined' && document.referrer.match(/\\S/)) {\n\t\t            cgiData.HTTP_REFERER = document.referrer;\n\t\t        }\n\t\t        var cookiesObject;\n\t\t        if (typeof notice.cookies === 'string') {\n\t\t            cookiesObject = (0, util_1.decodeCookie)(notice.cookies);\n\t\t        }\n\t\t        else {\n\t\t            cookiesObject = notice.cookies;\n\t\t        }\n\t\t        if (cookiesObject) {\n\t\t            cgiData.HTTP_COOKIE = (0, util_1.encodeCookie)(filter(cookiesObject, this.config.filters));\n\t\t        }\n\t\t        var payload = _super.prototype.__buildPayload.call(this, notice);\n\t\t        payload.request.cgi_data = merge(cgiData, payload.request.cgi_data);\n\t\t        return payload;\n\t\t    };\n\t\t    /**\n\t\t     * wrap always returns the same function so that callbacks can be removed via\n\t\t     * removeEventListener.\n\t\t     * @internal\n\t\t     */\n\t\t    Honeybadger.prototype.__wrap = function (f, opts) {\n\t\t        if (opts === void 0) { opts = {}; }\n\t\t        var func = f;\n\t\t        if (!opts) {\n\t\t            opts = {};\n\t\t        }\n\t\t        try {\n\t\t            if (typeof func !== 'function') {\n\t\t                return func;\n\t\t            }\n\t\t            if (!objectIsExtensible(func)) {\n\t\t                return func;\n\t\t            }\n\t\t            if (!func.___hb) {\n\t\t                // eslint-disable-next-line @typescript-eslint/no-this-alias\n\t\t                var client_1 = this;\n\t\t                func.___hb = function () {\n\t\t                    if (util_1.preferCatch) {\n\t\t                        try {\n\t\t                            // eslint-disable-next-line prefer-rest-params\n\t\t                            return func.apply(this, arguments);\n\t\t                        }\n\t\t                        catch (err) {\n\t\t                            if (client_1.__lastWrapErr === err) {\n\t\t                                throw (err);\n\t\t                            }\n\t\t                            client_1.__lastWrapErr = err;\n\t\t                            (0, onerror_1.ignoreNextOnError)();\n\t\t                            client_1.addBreadcrumb(opts.component ? \"\".concat(opts.component, \": \").concat(err.name) : err.name, {\n\t\t                                category: 'error',\n\t\t                                metadata: {\n\t\t                                    message: err.message,\n\t\t                                    name: err.name,\n\t\t                                    stack: err.stack\n\t\t                                }\n\t\t                            });\n\t\t                            if (client_1.config.enableUncaught) {\n\t\t                                client_1.notify(err);\n\t\t                            }\n\t\t                            throw (err);\n\t\t                        }\n\t\t                    }\n\t\t                    else {\n\t\t                        // eslint-disable-next-line prefer-rest-params\n\t\t                        return func.apply(this, arguments);\n\t\t                    }\n\t\t                };\n\t\t            }\n\t\t            func.___hb.___hb = func.___hb;\n\t\t            return func.___hb;\n\t\t        }\n\t\t        catch (_e) {\n\t\t            return func;\n\t\t        }\n\t\t    };\n\t\t    /** @internal */\n\t\t    Honeybadger.prototype.__incrementErrorsCount = function () {\n\t\t        return this.__errorsSent++;\n\t\t    };\n\t\t    /** @internal */\n\t\t    Honeybadger.prototype.__exceedsMaxErrors = function () {\n\t\t        return this.config.maxErrors && this.__errorsSent >= this.config.maxErrors;\n\t\t    };\n\t\t    return Honeybadger;\n\t\t}(core_1.Client));\n\t\tvar NOTIFIER = {\n\t\t    name: '@honeybadger-io/js',\n\t\t    url: 'https://github.com/honeybadger-io/honeybadger-js/tree/master/packages/js',\n\t\t    version: '6.12.3'\n\t\t};\n\t\tvar userAgent = function () {\n\t\t    if (typeof navigator !== 'undefined') {\n\t\t        return \"Honeybadger JS Browser Client \".concat(NOTIFIER.version, \"; \").concat(navigator.userAgent);\n\t\t    }\n\t\t    return \"Honeybadger JS Browser Client \".concat(NOTIFIER.version, \"; n/a; n/a\");\n\t\t};\n\t\tvar singleton = new Honeybadger({\n\t\t    __plugins: [\n\t\t        (0, onerror_1.onError)(),\n\t\t        (0, onunhandledrejection_1.default)(),\n\t\t        (0, timers_1.default)(),\n\t\t        (0, event_listeners_1.default)(),\n\t\t        (0, breadcrumbs_1.default)(),\n\t\t        core_1.Plugins.events(),\n\t\t    ]\n\t\t});\n\t\tsingleton.setNotifier(NOTIFIER);\n\t\tvar core_2 = src;\n\t\tObject.defineProperty(exports, \"Types\", { enumerable: true, get: function () { return core_2.Types; } });\n\t\texports.default = singleton;\n\t\t\n\t} (browser$1));\n\n\tvar browser = /*@__PURE__*/getDefaultExportFromCjs(browser$1);\n\n\treturn browser;\n\n}));\n//# sourceMappingURL=honeybadger.js.map\n","import Honeybadger from '@honeybadger-io/js';\nexport { default as Honeybadger } from '@honeybadger-io/js';\nimport React, { Component } from 'react';\n\nfunction DefaultErrorComponent({ error, info }) {\n    return (React.createElement(\"div\", { className: 'error' },\n        React.createElement(\"div\", null, \"An Error Occurred\"),\n        React.createElement(\"div\", null, error ? error.toString() : ''),\n        React.createElement(\"div\", null, info ? JSON.stringify(info, null, 2) : '')));\n}\n\nclass HoneybadgerErrorBoundary extends Component {\n    constructor(props) {\n        super(props);\n        this.state = {\n            error: null,\n            info: null,\n            errorOccurred: false\n        };\n    }\n    static getDerivedStateFromError(error) {\n        return { error: error, errorOccurred: true, info: null };\n    }\n    componentDidMount() {\n        this.props.honeybadger.afterNotify((error, _notice) => {\n            if (!error && this.props.showUserFeedbackFormOnError) {\n                this.props.honeybadger.showUserFeedbackForm();\n            }\n        });\n    }\n    componentDidCatch(error, errorInfo) {\n        this.setState({ error, info: errorInfo });\n        this.props.honeybadger.notify(error, { context: errorInfo });\n    }\n    getErrorComponent() {\n        return this.props.ErrorComponent\n            ? React.createElement(this.props.ErrorComponent, { ...this.state })\n            : React.createElement(DefaultErrorComponent, { ...this.state });\n    }\n    render() {\n        return (React.createElement(React.Fragment, null, this.state.errorOccurred\n            ? this.getErrorComponent()\n            : this.props.children));\n    }\n}\nHoneybadgerErrorBoundary.defaultProps = {\n    showUserFeedbackFormOnError: false\n};\n\nconst NOTIFIER = {\n    name: '@honeybadger-io/react',\n    url: 'https://github.com/honeybadger-io/honeybadger-js/tree/master/packages/react',\n    version: '6.1.27'\n};\nHoneybadger.setNotifier(NOTIFIER);\n\nexport { HoneybadgerErrorBoundary };\n//# sourceMappingURL=honeybadger-react.esm.js.map\n","/*!\n * accounting.js v0.4.1\n * Copyright 2014 Open Exchange Rates\n *\n * Freely distributable under the MIT license.\n * Portions of accounting.js are inspired or borrowed from underscore.js\n *\n * Full details and documentation:\n * http://openexchangerates.github.io/accounting.js/\n */\n\n(function(root, undefined) {\n\n\t/* --- Setup --- */\n\n\t// Create the local library object, to be exported or referenced globally later\n\tvar lib = {};\n\n\t// Current version\n\tlib.version = '0.4.1';\n\n\n\t/* --- Exposed settings --- */\n\n\t// The library's settings configuration object. Contains default parameters for\n\t// currency and number formatting\n\tlib.settings = {\n\t\tcurrency: {\n\t\t\tsymbol : \"$\",\t\t// default currency symbol is '$'\n\t\t\tformat : \"%s%v\",\t// controls output: %s = symbol, %v = value (can be object, see docs)\n\t\t\tdecimal : \".\",\t\t// decimal point separator\n\t\t\tthousand : \",\",\t\t// thousands separator\n\t\t\tprecision : 2,\t\t// decimal places\n\t\t\tgrouping : 3\t\t// digit grouping (not implemented yet)\n\t\t},\n\t\tnumber: {\n\t\t\tprecision : 0,\t\t// default precision on numbers is 0\n\t\t\tgrouping : 3,\t\t// digit grouping (not implemented yet)\n\t\t\tthousand : \",\",\n\t\t\tdecimal : \".\"\n\t\t}\n\t};\n\n\n\t/* --- Internal Helper Methods --- */\n\n\t// Store reference to possibly-available ECMAScript 5 methods for later\n\tvar nativeMap = Array.prototype.map,\n\t\tnativeIsArray = Array.isArray,\n\t\ttoString = Object.prototype.toString;\n\n\t/**\n\t * Tests whether supplied parameter is a string\n\t * from underscore.js\n\t */\n\tfunction isString(obj) {\n\t\treturn !!(obj === '' || (obj && obj.charCodeAt && obj.substr));\n\t}\n\n\t/**\n\t * Tests whether supplied parameter is a string\n\t * from underscore.js, delegates to ECMA5's native Array.isArray\n\t */\n\tfunction isArray(obj) {\n\t\treturn nativeIsArray ? nativeIsArray(obj) : toString.call(obj) === '[object Array]';\n\t}\n\n\t/**\n\t * Tests whether supplied parameter is a true object\n\t */\n\tfunction isObject(obj) {\n\t\treturn obj && toString.call(obj) === '[object Object]';\n\t}\n\n\t/**\n\t * Extends an object with a defaults object, similar to underscore's _.defaults\n\t *\n\t * Used for abstracting parameter handling from API methods\n\t */\n\tfunction defaults(object, defs) {\n\t\tvar key;\n\t\tobject = object || {};\n\t\tdefs = defs || {};\n\t\t// Iterate over object non-prototype properties:\n\t\tfor (key in defs) {\n\t\t\tif (defs.hasOwnProperty(key)) {\n\t\t\t\t// Replace values with defaults only if undefined (allow empty/zero values):\n\t\t\t\tif (object[key] == null) object[key] = defs[key];\n\t\t\t}\n\t\t}\n\t\treturn object;\n\t}\n\n\t/**\n\t * Implementation of `Array.map()` for iteration loops\n\t *\n\t * Returns a new Array as a result of calling `iterator` on each array value.\n\t * Defers to native Array.map if available\n\t */\n\tfunction map(obj, iterator, context) {\n\t\tvar results = [], i, j;\n\n\t\tif (!obj) return results;\n\n\t\t// Use native .map method if it exists:\n\t\tif (nativeMap && obj.map === nativeMap) return obj.map(iterator, context);\n\n\t\t// Fallback for native .map:\n\t\tfor (i = 0, j = obj.length; i < j; i++ ) {\n\t\t\tresults[i] = iterator.call(context, obj[i], i, obj);\n\t\t}\n\t\treturn results;\n\t}\n\n\t/**\n\t * Check and normalise the value of precision (must be positive integer)\n\t */\n\tfunction checkPrecision(val, base) {\n\t\tval = Math.round(Math.abs(val));\n\t\treturn isNaN(val)? base : val;\n\t}\n\n\n\t/**\n\t * Parses a format string or object and returns format obj for use in rendering\n\t *\n\t * `format` is either a string with the default (positive) format, or object\n\t * containing `pos` (required), `neg` and `zero` values (or a function returning\n\t * either a string or object)\n\t *\n\t * Either string or format.pos must contain \"%v\" (value) to be valid\n\t */\n\tfunction checkCurrencyFormat(format) {\n\t\tvar defaults = lib.settings.currency.format;\n\n\t\t// Allow function as format parameter (should return string or object):\n\t\tif ( typeof format === \"function\" ) format = format();\n\n\t\t// Format can be a string, in which case `value` (\"%v\") must be present:\n\t\tif ( isString( format ) && format.match(\"%v\") ) {\n\n\t\t\t// Create and return positive, negative and zero formats:\n\t\t\treturn {\n\t\t\t\tpos : format,\n\t\t\t\tneg : format.replace(\"-\", \"\").replace(\"%v\", \"-%v\"),\n\t\t\t\tzero : format\n\t\t\t};\n\n\t\t// If no format, or object is missing valid positive value, use defaults:\n\t\t} else if ( !format || !format.pos || !format.pos.match(\"%v\") ) {\n\n\t\t\t// If defaults is a string, casts it to an object for faster checking next time:\n\t\t\treturn ( !isString( defaults ) ) ? defaults : lib.settings.currency.format = {\n\t\t\t\tpos : defaults,\n\t\t\t\tneg : defaults.replace(\"%v\", \"-%v\"),\n\t\t\t\tzero : defaults\n\t\t\t};\n\n\t\t}\n\t\t// Otherwise, assume format was fine:\n\t\treturn format;\n\t}\n\n\n\t/* --- API Methods --- */\n\n\t/**\n\t * Takes a string/array of strings, removes all formatting/cruft and returns the raw float value\n\t * Alias: `accounting.parse(string)`\n\t *\n\t * Decimal must be included in the regular expression to match floats (defaults to\n\t * accounting.settings.number.decimal), so if the number uses a non-standard decimal \n\t * separator, provide it as the second argument.\n\t *\n\t * Also matches bracketed negatives (eg. \"$ (1.99)\" => -1.99)\n\t *\n\t * Doesn't throw any errors (`NaN`s become 0) but this may change in future\n\t */\n\tvar unformat = lib.unformat = lib.parse = function(value, decimal) {\n\t\t// Recursively unformat arrays:\n\t\tif (isArray(value)) {\n\t\t\treturn map(value, function(val) {\n\t\t\t\treturn unformat(val, decimal);\n\t\t\t});\n\t\t}\n\n\t\t// Fails silently (need decent errors):\n\t\tvalue = value || 0;\n\n\t\t// Return the value as-is if it's already a number:\n\t\tif (typeof value === \"number\") return value;\n\n\t\t// Default decimal point comes from settings, but could be set to eg. \",\" in opts:\n\t\tdecimal = decimal || lib.settings.number.decimal;\n\n\t\t // Build regex to strip out everything except digits, decimal point and minus sign:\n\t\tvar regex = new RegExp(\"[^0-9-\" + decimal + \"]\", [\"g\"]),\n\t\t\tunformatted = parseFloat(\n\t\t\t\t(\"\" + value)\n\t\t\t\t.replace(/\\((.*)\\)/, \"-$1\") // replace bracketed values with negatives\n\t\t\t\t.replace(regex, '')         // strip out any cruft\n\t\t\t\t.replace(decimal, '.')      // make sure decimal point is standard\n\t\t\t);\n\n\t\t// This will fail silently which may cause trouble, let's wait and see:\n\t\treturn !isNaN(unformatted) ? unformatted : 0;\n\t};\n\n\n\t/**\n\t * Implementation of toFixed() that treats floats more like decimals\n\t *\n\t * Fixes binary rounding issues (eg. (0.615).toFixed(2) === \"0.61\") that present\n\t * problems for accounting- and finance-related software.\n\t */\n\tvar toFixed = lib.toFixed = function(value, precision) {\n\t\tprecision = checkPrecision(precision, lib.settings.number.precision);\n\t\tvar power = Math.pow(10, precision);\n\n\t\t// Multiply up by precision, round accurately, then divide and use native toFixed():\n\t\treturn (Math.round(lib.unformat(value) * power) / power).toFixed(precision);\n\t};\n\n\n\t/**\n\t * Format a number, with comma-separated thousands and custom precision/decimal places\n\t * Alias: `accounting.format()`\n\t *\n\t * Localise by overriding the precision and thousand / decimal separators\n\t * 2nd parameter `precision` can be an object matching `settings.number`\n\t */\n\tvar formatNumber = lib.formatNumber = lib.format = function(number, precision, thousand, decimal) {\n\t\t// Resursively format arrays:\n\t\tif (isArray(number)) {\n\t\t\treturn map(number, function(val) {\n\t\t\t\treturn formatNumber(val, precision, thousand, decimal);\n\t\t\t});\n\t\t}\n\n\t\t// Clean up number:\n\t\tnumber = unformat(number);\n\n\t\t// Build options object from second param (if object) or all params, extending defaults:\n\t\tvar opts = defaults(\n\t\t\t\t(isObject(precision) ? precision : {\n\t\t\t\t\tprecision : precision,\n\t\t\t\t\tthousand : thousand,\n\t\t\t\t\tdecimal : decimal\n\t\t\t\t}),\n\t\t\t\tlib.settings.number\n\t\t\t),\n\n\t\t\t// Clean up precision\n\t\t\tusePrecision = checkPrecision(opts.precision),\n\n\t\t\t// Do some calc:\n\t\t\tnegative = number < 0 ? \"-\" : \"\",\n\t\t\tbase = parseInt(toFixed(Math.abs(number || 0), usePrecision), 10) + \"\",\n\t\t\tmod = base.length > 3 ? base.length % 3 : 0;\n\n\t\t// Format the number:\n\t\treturn negative + (mod ? base.substr(0, mod) + opts.thousand : \"\") + base.substr(mod).replace(/(\\d{3})(?=\\d)/g, \"$1\" + opts.thousand) + (usePrecision ? opts.decimal + toFixed(Math.abs(number), usePrecision).split('.')[1] : \"\");\n\t};\n\n\n\t/**\n\t * Format a number into currency\n\t *\n\t * Usage: accounting.formatMoney(number, symbol, precision, thousandsSep, decimalSep, format)\n\t * defaults: (0, \"$\", 2, \",\", \".\", \"%s%v\")\n\t *\n\t * Localise by overriding the symbol, precision, thousand / decimal separators and format\n\t * Second param can be an object matching `settings.currency` which is the easiest way.\n\t *\n\t * To do: tidy up the parameters\n\t */\n\tvar formatMoney = lib.formatMoney = function(number, symbol, precision, thousand, decimal, format) {\n\t\t// Resursively format arrays:\n\t\tif (isArray(number)) {\n\t\t\treturn map(number, function(val){\n\t\t\t\treturn formatMoney(val, symbol, precision, thousand, decimal, format);\n\t\t\t});\n\t\t}\n\n\t\t// Clean up number:\n\t\tnumber = unformat(number);\n\n\t\t// Build options object from second param (if object) or all params, extending defaults:\n\t\tvar opts = defaults(\n\t\t\t\t(isObject(symbol) ? symbol : {\n\t\t\t\t\tsymbol : symbol,\n\t\t\t\t\tprecision : precision,\n\t\t\t\t\tthousand : thousand,\n\t\t\t\t\tdecimal : decimal,\n\t\t\t\t\tformat : format\n\t\t\t\t}),\n\t\t\t\tlib.settings.currency\n\t\t\t),\n\n\t\t\t// Check format (returns object with pos, neg and zero):\n\t\t\tformats = checkCurrencyFormat(opts.format),\n\n\t\t\t// Choose which format to use for this value:\n\t\t\tuseFormat = number > 0 ? formats.pos : number < 0 ? formats.neg : formats.zero;\n\n\t\t// Return with currency symbol added:\n\t\treturn useFormat.replace('%s', opts.symbol).replace('%v', formatNumber(Math.abs(number), checkPrecision(opts.precision), opts.thousand, opts.decimal));\n\t};\n\n\n\t/**\n\t * Format a list of numbers into an accounting column, padding with whitespace\n\t * to line up currency symbols, thousand separators and decimals places\n\t *\n\t * List should be an array of numbers\n\t * Second parameter can be an object containing keys that match the params\n\t *\n\t * Returns array of accouting-formatted number strings of same length\n\t *\n\t * NB: `white-space:pre` CSS rule is required on the list container to prevent\n\t * browsers from collapsing the whitespace in the output strings.\n\t */\n\tlib.formatColumn = function(list, symbol, precision, thousand, decimal, format) {\n\t\tif (!list) return [];\n\n\t\t// Build options object from second param (if object) or all params, extending defaults:\n\t\tvar opts = defaults(\n\t\t\t\t(isObject(symbol) ? symbol : {\n\t\t\t\t\tsymbol : symbol,\n\t\t\t\t\tprecision : precision,\n\t\t\t\t\tthousand : thousand,\n\t\t\t\t\tdecimal : decimal,\n\t\t\t\t\tformat : format\n\t\t\t\t}),\n\t\t\t\tlib.settings.currency\n\t\t\t),\n\n\t\t\t// Check format (returns object with pos, neg and zero), only need pos for now:\n\t\t\tformats = checkCurrencyFormat(opts.format),\n\n\t\t\t// Whether to pad at start of string or after currency symbol:\n\t\t\tpadAfterSymbol = formats.pos.indexOf(\"%s\") < formats.pos.indexOf(\"%v\") ? true : false,\n\n\t\t\t// Store value for the length of the longest string in the column:\n\t\t\tmaxLength = 0,\n\n\t\t\t// Format the list according to options, store the length of the longest string:\n\t\t\tformatted = map(list, function(val, i) {\n\t\t\t\tif (isArray(val)) {\n\t\t\t\t\t// Recursively format columns if list is a multi-dimensional array:\n\t\t\t\t\treturn lib.formatColumn(val, opts);\n\t\t\t\t} else {\n\t\t\t\t\t// Clean up the value\n\t\t\t\t\tval = unformat(val);\n\n\t\t\t\t\t// Choose which format to use for this value (pos, neg or zero):\n\t\t\t\t\tvar useFormat = val > 0 ? formats.pos : val < 0 ? formats.neg : formats.zero,\n\n\t\t\t\t\t\t// Format this value, push into formatted list and save the length:\n\t\t\t\t\t\tfVal = useFormat.replace('%s', opts.symbol).replace('%v', formatNumber(Math.abs(val), checkPrecision(opts.precision), opts.thousand, opts.decimal));\n\n\t\t\t\t\tif (fVal.length > maxLength) maxLength = fVal.length;\n\t\t\t\t\treturn fVal;\n\t\t\t\t}\n\t\t\t});\n\n\t\t// Pad each number in the list and send back the column of numbers:\n\t\treturn map(formatted, function(val, i) {\n\t\t\t// Only if this is a string (not a nested array, which would have already been padded):\n\t\t\tif (isString(val) && val.length < maxLength) {\n\t\t\t\t// Depending on symbol position, pad after symbol or at index 0:\n\t\t\t\treturn padAfterSymbol ? val.replace(opts.symbol, opts.symbol+(new Array(maxLength - val.length + 1).join(\" \"))) : (new Array(maxLength - val.length + 1).join(\" \")) + val;\n\t\t\t}\n\t\t\treturn val;\n\t\t});\n\t};\n\n\n\t/* --- Module Definition --- */\n\n\t// Export accounting for CommonJS. If being loaded as an AMD module, define it as such.\n\t// Otherwise, just add `accounting` to the global object\n\tif (typeof exports !== 'undefined') {\n\t\tif (typeof module !== 'undefined' && module.exports) {\n\t\t\texports = module.exports = lib;\n\t\t}\n\t\texports.accounting = lib;\n\t} else if (typeof define === 'function' && define.amd) {\n\t\t// Return the library as an AMD module:\n\t\tdefine([], function() {\n\t\t\treturn lib;\n\t\t});\n\t} else {\n\t\t// Use accounting.noConflict to restore `accounting` back to its original value.\n\t\t// Returns a reference to the library's `accounting` object;\n\t\t// e.g. `var numbers = accounting.noConflict();`\n\t\tlib.noConflict = (function(oldAccounting) {\n\t\t\treturn function() {\n\t\t\t\t// Reset the value of the root's `accounting` variable:\n\t\t\t\troot.accounting = oldAccounting;\n\t\t\t\t// Delete the noConflict method:\n\t\t\t\tlib.noConflict = undefined;\n\t\t\t\t// Return reference to the library to re-assign it:\n\t\t\t\treturn lib;\n\t\t\t};\n\t\t})(root.accounting);\n\n\t\t// Declare `fx` on the root (global/window) object:\n\t\troot['accounting'] = lib;\n\t}\n\n\t// Root will be `window` in browser or `global` on the server:\n}(this));\n","// I18n.js\n// =======\n//\n// This small library provides the Rails I18n API on the Javascript.\n// You don't actually have to use Rails (or even Ruby) to use I18n.js.\n// Just make sure you export all translations in an object like this:\n//\n//     I18n.translations.en = {\n//       hello: \"Hello World\"\n//     };\n//\n// See tests for specific formatting like numbers and dates.\n//\n\n// Using UMD pattern from\n// https://github.com/umdjs/umd#regular-module\n// `returnExports.js` version\n;(function (root, factory) {\n  if (typeof define === 'function' && define.amd) {\n    // AMD. Register as an anonymous module.\n    define(\"i18n\", function(){ return factory(root);});\n  } else if (typeof module === 'object' && module.exports) {\n    // Node. Does not work with strict CommonJS, but\n    // only CommonJS-like environments that support module.exports,\n    // like Node.\n    module.exports = factory(root);\n  } else {\n    // Browser globals (root is window)\n    root.I18n = factory(root);\n  }\n}(this, function(global) {\n  \"use strict\";\n\n  // Use previously defined object if exists in current scope\n  var I18n = global && global.I18n || {};\n\n  // Just cache the Array#slice function.\n  var slice = Array.prototype.slice;\n\n  // Apply number padding.\n  var padding = function(number) {\n    return (\"0\" + number.toString()).substr(-2);\n  };\n\n  // Improved toFixed number rounding function with support for unprecise floating points\n  // JavaScript's standard toFixed function does not round certain numbers correctly (for example 0.105 with precision 2).\n  var toFixed = function(number, precision) {\n    return decimalAdjust('round', number, -precision).toFixed(precision);\n  };\n\n  // Is a given variable an object?\n  // Borrowed from Underscore.js\n  var isObject = function(obj) {\n    var type = typeof obj;\n    return type === 'function' || type === 'object'\n  };\n\n  var isFunction = function(func) {\n    var type = typeof func;\n    return type === 'function'\n  };\n\n  // Check if value is different than undefined and null;\n  var isSet = function(value) {\n    return typeof(value) !== 'undefined' && value !== null;\n  };\n\n  // Is a given value an array?\n  // Borrowed from Underscore.js\n  var isArray = function(val) {\n    if (Array.isArray) {\n      return Array.isArray(val);\n    }\n    return Object.prototype.toString.call(val) === '[object Array]';\n  };\n\n  var isString = function(val) {\n    return typeof val === 'string' || Object.prototype.toString.call(val) === '[object String]';\n  };\n\n  var isNumber = function(val) {\n    return typeof val === 'number' || Object.prototype.toString.call(val) === '[object Number]';\n  };\n\n  var isBoolean = function(val) {\n    return val === true || val === false;\n  };\n\n  var isNull = function(val) {\n    return val === null;\n  };\n\n  var decimalAdjust = function(type, value, exp) {\n    // If the exp is undefined or zero...\n    if (typeof exp === 'undefined' || +exp === 0) {\n      return Math[type](value);\n    }\n    value = +value;\n    exp = +exp;\n    // If the value is not a number or the exp is not an integer...\n    if (isNaN(value) || !(typeof exp === 'number' && exp % 1 === 0)) {\n      return NaN;\n    }\n    // Shift\n    value = value.toString().split('e');\n    value = Math[type](+(value[0] + 'e' + (value[1] ? (+value[1] - exp) : -exp)));\n    // Shift back\n    value = value.toString().split('e');\n    return +(value[0] + 'e' + (value[1] ? (+value[1] + exp) : exp));\n  };\n\n  var lazyEvaluate = function(message, scope) {\n    if (isFunction(message)) {\n      return message(scope);\n    } else {\n      return message;\n    }\n  };\n\n  var merge = function (dest, obj) {\n    var key, value;\n    for (key in obj) if (obj.hasOwnProperty(key)) {\n      value = obj[key];\n      if (isString(value) || isNumber(value) || isBoolean(value) || isArray(value) || isNull(value)) {\n        dest[key] = value;\n      } else {\n        if (dest[key] == null) dest[key] = {};\n        merge(dest[key], value);\n      }\n    }\n    return dest;\n  };\n\n  // Set default days/months translations.\n  var DATE = {\n      day_names: [\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"]\n    , abbr_day_names: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"]\n    , month_names: [null, \"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"]\n    , abbr_month_names: [null, \"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"]\n    , meridian: [\"AM\", \"PM\"]\n  };\n\n  // Set default number format.\n  var NUMBER_FORMAT = {\n      precision: 3\n    , separator: \".\"\n    , delimiter: \",\"\n    , strip_insignificant_zeros: false\n  };\n\n  // Set default currency format.\n  var CURRENCY_FORMAT = {\n      unit: \"$\"\n    , precision: 2\n    , format: \"%u%n\"\n    , sign_first: true\n    , delimiter: \",\"\n    , separator: \".\"\n  };\n\n  // Set default percentage format.\n  var PERCENTAGE_FORMAT = {\n      unit: \"%\"\n    , precision: 3\n    , format: \"%n%u\"\n    , separator: \".\"\n    , delimiter: \"\"\n  };\n\n  // Set default size units.\n  var SIZE_UNITS = [null, \"kb\", \"mb\", \"gb\", \"tb\"];\n\n  // Other default options\n  var DEFAULT_OPTIONS = {\n    // Set default locale. This locale will be used when fallback is enabled and\n    // the translation doesn't exist in a particular locale.\n      defaultLocale: \"en\"\n    // Set the current locale to `en`.\n    , locale: \"en\"\n    // Set the translation key separator.\n    , defaultSeparator: \".\"\n    // Set the placeholder format. Accepts `{{placeholder}}` and `%{placeholder}`.\n    , placeholder: /(?:\\{\\{|%\\{)(.*?)(?:\\}\\}?)/gm\n    // Set if engine should fallback to the default locale when a translation\n    // is missing.\n    , fallbacks: false\n    // Set the default translation object.\n    , translations: {}\n    // Set missing translation behavior. 'message' will display a message\n    // that the translation is missing, 'guess' will try to guess the string\n    , missingBehaviour: 'message'\n    // if you use missingBehaviour with 'message', but want to know that the\n    // string is actually missing for testing purposes, you can prefix the\n    // guessed string by setting the value here. By default, no prefix!\n    , missingTranslationPrefix: ''\n  };\n\n  // Set default locale. This locale will be used when fallback is enabled and\n  // the translation doesn't exist in a particular locale.\n  I18n.reset = function() {\n    var key;\n    for (key in DEFAULT_OPTIONS) {\n      this[key] = DEFAULT_OPTIONS[key];\n    }\n  };\n\n  // Much like `reset`, but only assign options if not already assigned\n  I18n.initializeOptions = function() {\n    var key;\n    for (key in DEFAULT_OPTIONS) if (!isSet(this[key])) {\n      this[key] = DEFAULT_OPTIONS[key];\n    }\n  };\n  I18n.initializeOptions();\n\n  // Return a list of all locales that must be tried before returning the\n  // missing translation message. By default, this will consider the inline option,\n  // current locale and fallback locale.\n  //\n  //     I18n.locales.get(\"de-DE\");\n  //     // [\"de-DE\", \"de\", \"en\"]\n  //\n  // You can define custom rules for any locale. Just make sure you return a array\n  // containing all locales.\n  //\n  //     // Default the Wookie locale to English.\n  //     I18n.locales[\"wk\"] = function(locale) {\n  //       return [\"en\"];\n  //     };\n  //\n  I18n.locales = {};\n\n  // Retrieve locales based on inline locale, current locale or default to\n  // I18n's detection.\n  I18n.locales.get = function(locale) {\n    var result = this[locale] || this[I18n.locale] || this[\"default\"];\n\n    if (isFunction(result)) {\n      result = result(locale);\n    }\n\n    if (isArray(result) === false) {\n      result = [result];\n    }\n\n    return result;\n  };\n\n  // The default locale list.\n  I18n.locales[\"default\"] = function(locale) {\n    var locales = []\n      , list = []\n    ;\n\n    // Handle the inline locale option that can be provided to\n    // the `I18n.t` options.\n    if (locale) {\n      locales.push(locale);\n    }\n\n    // Add the current locale to the list.\n    if (!locale && I18n.locale) {\n      locales.push(I18n.locale);\n    }\n\n    // Add the default locale if fallback strategy is enabled.\n    if (I18n.fallbacks && I18n.defaultLocale) {\n      locales.push(I18n.defaultLocale);\n    }\n\n    // Locale code format 1:\n    // According to RFC4646 (https://www.ietf.org/rfc/rfc4646.txt)\n    // language codes for Traditional Chinese should be `zh-Hant`\n    //\n    // But due to backward compatibility\n    // We use older version of IETF language tag\n    // @see https://www.w3.org/TR/html401/struct/dirlang.html\n    // @see https://en.wikipedia.org/wiki/IETF_language_tag\n    //\n    // Format: `language-code = primary-code ( \"-\" subcode )*`\n    //\n    // primary-code uses ISO639-1\n    // @see https://en.wikipedia.org/wiki/List_of_ISO_639-1_codes\n    // @see https://www.iso.org/iso/home/standards/language_codes.htm\n    //\n    // subcode uses ISO 3166-1 alpha-2\n    // @see https://en.wikipedia.org/wiki/ISO_3166\n    // @see https://www.iso.org/iso/country_codes.htm\n    //\n    // @note\n    //   subcode can be in upper case or lower case\n    //   defining it in upper case is a convention only\n\n\n    // Locale code format 2:\n    // Format: `code = primary-code ( \"-\" region-code )*`\n    // primary-code uses ISO 639-1\n    // script-code uses ISO 15924\n    // region-code uses ISO 3166-1 alpha-2\n    // Example: zh-Hant-TW, en-HK, zh-Hant-CN\n    //\n    // It is similar to RFC4646 (or actually the same),\n    // but seems to be limited to language, script, region\n\n    // Compute each locale with its country code.\n    // So this will return an array containing\n    // `de-DE` and `de`\n    // or\n    // `zh-hans-tw`, `zh-hans`, `zh`\n    // locales.\n    locales.forEach(function(locale) {\n      var localeParts = locale.split(\"-\");\n      var firstFallback = null;\n      var secondFallback = null;\n      if (localeParts.length === 3) {\n        firstFallback = [\n          localeParts[0],\n          localeParts[1]\n        ].join(\"-\");\n        secondFallback = localeParts[0];\n      }\n      else if (localeParts.length === 2) {\n        firstFallback = localeParts[0];\n      }\n\n      if (list.indexOf(locale) === -1) {\n        list.push(locale);\n      }\n\n      if (! I18n.fallbacks) {\n        return;\n      }\n\n      [\n        firstFallback,\n        secondFallback\n      ].forEach(function(nullableFallbackLocale) {\n        // We don't want null values\n        if (typeof nullableFallbackLocale === \"undefined\") { return; }\n        if (nullableFallbackLocale === null) { return; }\n        // We don't want duplicate values\n        //\n        // Comparing with `locale` first is faster than\n        // checking whether value's presence in the list\n        if (nullableFallbackLocale === locale) { return; }\n        if (list.indexOf(nullableFallbackLocale) !== -1) { return; }\n\n        list.push(nullableFallbackLocale);\n      });\n    });\n\n    // No locales set? English it is.\n    if (!locales.length) {\n      locales.push(\"en\");\n    }\n\n    return list;\n  };\n\n  // Hold pluralization rules.\n  I18n.pluralization = {};\n\n  // Return the pluralizer for a specific locale.\n  // If no specify locale is found, then I18n's default will be used.\n  I18n.pluralization.get = function(locale) {\n    return this[locale] || this[I18n.locale] || this[\"default\"];\n  };\n\n  // The default pluralizer rule.\n  // It detects the `zero`, `one`, and `other` scopes.\n  I18n.pluralization[\"default\"] = function(count) {\n    switch (count) {\n      case 0: return [\"zero\", \"other\"];\n      case 1: return [\"one\"];\n      default: return [\"other\"];\n    }\n  };\n\n  // Return current locale. If no locale has been set, then\n  // the current locale will be the default locale.\n  I18n.currentLocale = function() {\n    return this.locale || this.defaultLocale;\n  };\n\n  // Check if value is different than undefined and null;\n  I18n.isSet = isSet;\n\n  // Find and process the translation using the provided scope and options.\n  // This is used internally by some functions and should not be used as an\n  // public API.\n  I18n.lookup = function(scope, options) {\n    options = options || {};\n\n    var locales = this.locales.get(options.locale).slice()\n      , locale\n      , scopes\n      , fullScope\n      , translations\n    ;\n\n    fullScope = this.getFullScope(scope, options);\n\n    while (locales.length) {\n      locale = locales.shift();\n      scopes = fullScope.split(options.separator || this.defaultSeparator);\n      translations = this.translations[locale];\n\n      if (!translations) {\n        continue;\n      }\n      while (scopes.length) {\n        translations = translations[scopes.shift()];\n\n        if (translations === undefined || translations === null) {\n          break;\n        }\n      }\n\n      if (translations !== undefined && translations !== null) {\n        return translations;\n      }\n    }\n\n    if (isSet(options.defaultValue)) {\n      return lazyEvaluate(options.defaultValue, scope);\n    }\n  };\n\n  // lookup pluralization rule key into translations\n  I18n.pluralizationLookupWithoutFallback = function(count, locale, translations) {\n    var pluralizer = this.pluralization.get(locale)\n      , pluralizerKeys = pluralizer(count)\n      , pluralizerKey\n      , message;\n\n    if (translations && isObject(translations)) {\n      while (pluralizerKeys.length) {\n        pluralizerKey = pluralizerKeys.shift();\n        if (isSet(translations[pluralizerKey])) {\n          message = translations[pluralizerKey];\n          break;\n        }\n      }\n    }\n\n    return message;\n  };\n\n  // Lookup dedicated to pluralization\n  I18n.pluralizationLookup = function(count, scope, options) {\n    options = options || {};\n    var locales = this.locales.get(options.locale).slice()\n      , locale\n      , scopes\n      , translations\n      , message\n    ;\n    scope = this.getFullScope(scope, options);\n\n    while (locales.length) {\n      locale = locales.shift();\n      scopes = scope.split(options.separator || this.defaultSeparator);\n      translations = this.translations[locale];\n\n      if (!translations) {\n        continue;\n      }\n\n      while (scopes.length) {\n        translations = translations[scopes.shift()];\n        if (!isObject(translations)) {\n          break;\n        }\n        if (scopes.length === 0) {\n          message = this.pluralizationLookupWithoutFallback(count, locale, translations);\n        }\n      }\n      if (typeof message !== \"undefined\" && message !== null) {\n        break;\n      }\n    }\n\n    if (typeof message === \"undefined\" || message === null) {\n      if (isSet(options.defaultValue)) {\n        if (isObject(options.defaultValue)) {\n          message = this.pluralizationLookupWithoutFallback(count, options.locale, options.defaultValue);\n        } else {\n          message = options.defaultValue;\n        }\n        translations = options.defaultValue;\n      }\n    }\n\n    return { message: message, translations: translations };\n  };\n\n  // Rails changed the way the meridian is stored.\n  // It started with `date.meridian` returning an array,\n  // then it switched to `time.am` and `time.pm`.\n  // This function abstracts this difference and returns\n  // the correct meridian or the default value when none is provided.\n  I18n.meridian = function() {\n    var time = this.lookup(\"time\");\n    var date = this.lookup(\"date\");\n\n    if (time && time.am && time.pm) {\n      return [time.am, time.pm];\n    } else if (date && date.meridian) {\n      return date.meridian;\n    } else {\n      return DATE.meridian;\n    }\n  };\n\n  // Merge serveral hash options, checking if value is set before\n  // overwriting any value. The precedence is from left to right.\n  //\n  //     I18n.prepareOptions({name: \"John Doe\"}, {name: \"Mary Doe\", role: \"user\"});\n  //     #=> {name: \"John Doe\", role: \"user\"}\n  //\n  I18n.prepareOptions = function() {\n    var args = slice.call(arguments)\n      , options = {}\n      , subject\n    ;\n\n    while (args.length) {\n      subject = args.shift();\n\n      if (typeof(subject) != \"object\") {\n        continue;\n      }\n\n      for (var attr in subject) {\n        if (!subject.hasOwnProperty(attr)) {\n          continue;\n        }\n\n        if (isSet(options[attr])) {\n          continue;\n        }\n\n        options[attr] = subject[attr];\n      }\n    }\n\n    return options;\n  };\n\n  // Generate a list of translation options for default fallbacks.\n  // `defaultValue` is also deleted from options as it is returned as part of\n  // the translationOptions array.\n  I18n.createTranslationOptions = function(scope, options) {\n    var translationOptions = [{scope: scope}];\n\n    // Defaults should be an array of hashes containing either\n    // fallback scopes or messages\n    if (isSet(options.defaults)) {\n      translationOptions = translationOptions.concat(options.defaults);\n    }\n\n    // Maintain support for defaultValue. Since it is always a message\n    // insert it in to the translation options as such.\n    if (isSet(options.defaultValue)) {\n      translationOptions.push({ message: options.defaultValue });\n    }\n\n    return translationOptions;\n  };\n\n  // Translate the given scope with the provided options.\n  I18n.translate = function(scope, options) {\n    options = options || {};\n\n    var translationOptions = this.createTranslationOptions(scope, options);\n\n    var translation;\n    var usedScope = scope;\n\n    var optionsWithoutDefault = this.prepareOptions(options)\n    delete optionsWithoutDefault.defaultValue\n\n    // Iterate through the translation options until a translation\n    // or message is found.\n    var translationFound =\n      translationOptions.some(function(translationOption) {\n        if (isSet(translationOption.scope)) {\n          usedScope = translationOption.scope;\n          translation = this.lookup(usedScope, optionsWithoutDefault);\n        } else if (isSet(translationOption.message)) {\n          translation = lazyEvaluate(translationOption.message, scope);\n        }\n\n        if (translation !== undefined && translation !== null) {\n          return true;\n        }\n      }, this);\n\n    if (!translationFound) {\n      return this.missingTranslation(scope, options);\n    }\n\n    if (typeof(translation) === \"string\") {\n      translation = this.interpolate(translation, options);\n    } else if (isArray(translation)) {\n      translation = translation.map(function(t) {\n        return (typeof(t) === \"string\" ? this.interpolate(t, options) : t);\n      }, this);\n    } else if (isObject(translation) && isSet(options.count)) {\n      translation = this.pluralize(options.count, usedScope, options);\n    }\n\n    return translation;\n  };\n\n  // This function interpolates the all variables in the given message.\n  I18n.interpolate = function(message, options) {\n    if (message == null) {\n      return message;\n    }\n\n    options = options || {};\n    var matches = message.match(this.placeholder)\n      , placeholder\n      , value\n      , name\n      , regex\n    ;\n\n    if (!matches) {\n      return message;\n    }\n\n    while (matches.length) {\n      placeholder = matches.shift();\n      name = placeholder.replace(this.placeholder, \"$1\");\n\n      if (isSet(options[name])) {\n        value = options[name].toString().replace(/\\$/gm, \"_#$#_\");\n      } else if (name in options) {\n        value = this.nullPlaceholder(placeholder, message, options);\n      } else {\n        value = this.missingPlaceholder(placeholder, message, options);\n      }\n\n      regex = new RegExp(placeholder.replace(/{/gm, \"\\\\{\").replace(/}/gm, \"\\\\}\"));\n      message = message.replace(regex, value);\n    }\n\n    return message.replace(/_#\\$#_/g, \"$\");\n  };\n\n  // Pluralize the given scope using the `count` value.\n  // The pluralized translation may have other placeholders,\n  // which will be retrieved from `options`.\n  I18n.pluralize = function(count, scope, options) {\n    options = this.prepareOptions({count: String(count)}, options)\n    var pluralizer, result;\n\n    result = this.pluralizationLookup(count, scope, options);\n    if (typeof result.translations === \"undefined\" || result.translations == null) {\n      return this.missingTranslation(scope, options);\n    }\n\n    if (typeof result.message !== \"undefined\" && result.message != null) {\n      return this.interpolate(result.message, options);\n    }\n    else {\n      pluralizer = this.pluralization.get(options.locale);\n      return this.missingTranslation(scope + '.' + pluralizer(count)[0], options);\n    }\n  };\n\n  // Return a missing translation message for the given parameters.\n  I18n.missingTranslation = function(scope, options) {\n    //guess intended string\n    if(this.missingBehaviour === 'guess'){\n      //get only the last portion of the scope\n      var s = scope.split('.').slice(-1)[0];\n      //replace underscore with space && camelcase with space and lowercase letter\n      return (this.missingTranslationPrefix.length > 0 ? this.missingTranslationPrefix : '') +\n          s.replace(/_/g,' ').replace(/([a-z])([A-Z])/g,\n          function(match, p1, p2) {return p1 + ' ' + p2.toLowerCase()} );\n    }\n\n    var localeForTranslation = (options != null && options.locale != null) ? options.locale : this.currentLocale();\n    var fullScope           = this.getFullScope(scope, options);\n    var fullScopeWithLocale = [localeForTranslation, fullScope].join(options.separator || this.defaultSeparator);\n\n    return '[missing \"' + fullScopeWithLocale + '\" translation]';\n  };\n\n  // Return a missing placeholder message for given parameters\n  I18n.missingPlaceholder = function(placeholder, message, options) {\n    return \"[missing \" + placeholder + \" value]\";\n  };\n\n  I18n.nullPlaceholder = function() {\n    return I18n.missingPlaceholder.apply(I18n, arguments);\n  };\n\n  // Format number using localization rules.\n  // The options will be retrieved from the `number.format` scope.\n  // If this isn't present, then the following options will be used:\n  //\n  // - `precision`: `3`\n  // - `separator`: `\".\"`\n  // - `delimiter`: `\",\"`\n  // - `strip_insignificant_zeros`: `false`\n  //\n  // You can also override these options by providing the `options` argument.\n  //\n  I18n.toNumber = function(number, options) {\n    options = this.prepareOptions(\n        options\n      , this.lookup(\"number.format\")\n      , NUMBER_FORMAT\n    );\n\n    var negative = number < 0\n      , string = toFixed(Math.abs(number), options.precision).toString()\n      , parts = string.split(\".\")\n      , precision\n      , buffer = []\n      , formattedNumber\n      , format = options.format || \"%n\"\n      , sign = negative ? \"-\" : \"\"\n    ;\n\n    number = parts[0];\n    precision = parts[1];\n\n    while (number.length > 0) {\n      buffer.unshift(number.substr(Math.max(0, number.length - 3), 3));\n      number = number.substr(0, number.length -3);\n    }\n\n    formattedNumber = buffer.join(options.delimiter);\n\n    if (options.strip_insignificant_zeros && precision) {\n      precision = precision.replace(/0+$/, \"\");\n    }\n\n    if (options.precision > 0 && precision) {\n      formattedNumber += options.separator + precision;\n    }\n\n    if (options.sign_first) {\n      format = \"%s\" + format;\n    }\n    else {\n      format = format.replace(\"%n\", \"%s%n\");\n    }\n\n    formattedNumber = format\n      .replace(\"%u\", options.unit)\n      .replace(\"%n\", formattedNumber)\n      .replace(\"%s\", sign)\n    ;\n\n    return formattedNumber;\n  };\n\n  // Format currency with localization rules.\n  // The options will be retrieved from the `number.currency.format` and\n  // `number.format` scopes, in that order.\n  //\n  // Any missing option will be retrieved from the `I18n.toNumber` defaults and\n  // the following options:\n  //\n  // - `unit`: `\"$\"`\n  // - `precision`: `2`\n  // - `format`: `\"%u%n\"`\n  // - `delimiter`: `\",\"`\n  // - `separator`: `\".\"`\n  //\n  // You can also override these options by providing the `options` argument.\n  //\n  I18n.toCurrency = function(number, options) {\n    options = this.prepareOptions(\n        options\n      , this.lookup(\"number.currency.format\", options)\n      , this.lookup(\"number.format\", options)\n      , CURRENCY_FORMAT\n    );\n\n    return this.toNumber(number, options);\n  };\n\n  // Localize several values.\n  // You can provide the following scopes: `currency`, `number`, or `percentage`.\n  // If you provide a scope that matches the `/^(date|time)/` regular expression\n  // then the `value` will be converted by using the `I18n.toTime` function.\n  //\n  // It will default to the value's `toString` function.\n  //\n  I18n.localize = function(scope, value, options) {\n    options || (options = {});\n\n    switch (scope) {\n      case \"currency\":\n        return this.toCurrency(value, options);\n      case \"number\":\n        scope = this.lookup(\"number.format\", options);\n        return this.toNumber(value, scope);\n      case \"percentage\":\n        return this.toPercentage(value, options);\n      default:\n        var localizedValue;\n\n        if (scope.match(/^(date|time)/)) {\n          localizedValue = this.toTime(scope, value, options);\n        } else {\n          localizedValue = value.toString();\n        }\n\n        return this.interpolate(localizedValue, options);\n    }\n  };\n\n  // Parse a given `date` string into a JavaScript Date object.\n  // This function is time zone aware.\n  //\n  // The following string formats are recognized:\n  //\n  //    yyyy-mm-dd\n  //    yyyy-mm-dd[ T]hh:mm::ss\n  //    yyyy-mm-dd[ T]hh:mm::ss\n  //    yyyy-mm-dd[ T]hh:mm::ssZ\n  //    yyyy-mm-dd[ T]hh:mm::ss+0000\n  //    yyyy-mm-dd[ T]hh:mm::ss+00:00\n  //    yyyy-mm-dd[ T]hh:mm::ss.123Z\n  //\n  I18n.parseDate = function(date) {\n    var matches, convertedDate, fraction;\n    // A date input of `null` or `undefined` will be returned as-is\n    if (date == null) {\n      return date;\n    }\n    // we have a date, so just return it.\n    if (typeof(date) === \"object\") {\n      return date;\n    }\n\n    matches = date.toString().match(/(\\d{4})-(\\d{2})-(\\d{2})(?:[ T](\\d{2}):(\\d{2}):(\\d{2})([\\.,]\\d{1,3})?)?(Z|\\+00:?00)?/);\n\n    if (matches) {\n      for (var i = 1; i <= 6; i++) {\n        matches[i] = parseInt(matches[i], 10) || 0;\n      }\n\n      // month starts on 0\n      matches[2] -= 1;\n\n      fraction = matches[7] ? 1000 * (\"0\" + matches[7]) : null;\n\n      if (matches[8]) {\n        convertedDate = new Date(Date.UTC(matches[1], matches[2], matches[3], matches[4], matches[5], matches[6], fraction));\n      } else {\n        convertedDate = new Date(matches[1], matches[2], matches[3], matches[4], matches[5], matches[6], fraction);\n      }\n    } else if (typeof(date) == \"number\") {\n      // UNIX timestamp\n      convertedDate = new Date();\n      convertedDate.setTime(date);\n    } else if (date.match(/([A-Z][a-z]{2}) ([A-Z][a-z]{2}) (\\d+) (\\d+:\\d+:\\d+) ([+-]\\d+) (\\d+)/)) {\n      // This format `Wed Jul 20 13:03:39 +0000 2011` is parsed by\n      // webkit/firefox, but not by IE, so we must parse it manually.\n      convertedDate = new Date();\n      convertedDate.setTime(Date.parse([\n        RegExp.$1, RegExp.$2, RegExp.$3, RegExp.$6, RegExp.$4, RegExp.$5\n      ].join(\" \")));\n    } else if (date.match(/\\d+ \\d+:\\d+:\\d+ [+-]\\d+ \\d+/)) {\n      // a valid javascript format with timezone info\n      convertedDate = new Date();\n      convertedDate.setTime(Date.parse(date));\n    } else {\n      // an arbitrary javascript string\n      convertedDate = new Date();\n      convertedDate.setTime(Date.parse(date));\n    }\n\n    return convertedDate;\n  };\n\n  // Formats time according to the directives in the given format string.\n  // The directives begins with a percent (%) character. Any text not listed as a\n  // directive will be passed through to the output string.\n  //\n  // The accepted formats are:\n  //\n  //     %a     - The abbreviated weekday name (Sun)\n  //     %A     - The full weekday name (Sunday)\n  //     %b     - The abbreviated month name (Jan)\n  //     %B     - The full month name (January)\n  //     %c     - The preferred local date and time representation\n  //     %d     - Day of the month (01..31)\n  //     %-d    - Day of the month (1..31)\n  //     %H     - Hour of the day, 24-hour clock (00..23)\n  //     %-H/%k - Hour of the day, 24-hour clock (0..23)\n  //     %I     - Hour of the day, 12-hour clock (01..12)\n  //     %-I/%l - Hour of the day, 12-hour clock (1..12)\n  //     %m     - Month of the year (01..12)\n  //     %-m    - Month of the year (1..12)\n  //     %M     - Minute of the hour (00..59)\n  //     %-M    - Minute of the hour (0..59)\n  //     %p     - Meridian indicator (AM  or  PM)\n  //     %P     - Meridian indicator (am  or  pm)\n  //     %S     - Second of the minute (00..60)\n  //     %-S    - Second of the minute (0..60)\n  //     %w     - Day of the week (Sunday is 0, 0..6)\n  //     %y     - Year without a century (00..99)\n  //     %-y    - Year without a century (0..99)\n  //     %Y     - Year with century\n  //     %z/%Z  - Timezone offset (+0545)\n  //\n  I18n.strftime = function(date, format, options) {\n    var options = this.lookup(\"date\", options)\n      , meridianOptions = I18n.meridian()\n    ;\n\n    if (!options) {\n      options = {};\n    }\n\n    options = this.prepareOptions(options, DATE);\n\n    if (isNaN(date.getTime())) {\n      throw new Error('I18n.strftime() requires a valid date object, but received an invalid date.');\n    }\n\n    var weekDay = date.getDay()\n      , day = date.getDate()\n      , year = date.getFullYear()\n      , month = date.getMonth() + 1\n      , hour = date.getHours()\n      , hour12 = hour\n      , meridian = hour > 11 ? 1 : 0\n      , secs = date.getSeconds()\n      , mins = date.getMinutes()\n      , offset = date.getTimezoneOffset()\n      , absOffsetHours = Math.floor(Math.abs(offset / 60))\n      , absOffsetMinutes = Math.abs(offset) - (absOffsetHours * 60)\n      , timezoneoffset = (offset > 0 ? \"-\" : \"+\") +\n          (absOffsetHours.toString().length < 2 ? \"0\" + absOffsetHours : absOffsetHours) +\n          (absOffsetMinutes.toString().length < 2 ? \"0\" + absOffsetMinutes : absOffsetMinutes)\n    ;\n\n    if (hour12 > 12) {\n      hour12 = hour12 - 12;\n    } else if (hour12 === 0) {\n      hour12 = 12;\n    }\n\n    format = format.replace(\"%a\", options.abbr_day_names[weekDay]);\n    format = format.replace(\"%A\", options.day_names[weekDay]);\n    format = format.replace(\"%b\", options.abbr_month_names[month]);\n    format = format.replace(\"%B\", options.month_names[month]);\n    format = format.replace(\"%d\", padding(day));\n    format = format.replace(\"%e\", day);\n    format = format.replace(\"%-d\", day);\n    format = format.replace(\"%H\", padding(hour));\n    format = format.replace(\"%-H\", hour);\n    format = format.replace(\"%k\", hour);\n    format = format.replace(\"%I\", padding(hour12));\n    format = format.replace(\"%-I\", hour12);\n    format = format.replace(\"%l\", hour12);\n    format = format.replace(\"%m\", padding(month));\n    format = format.replace(\"%-m\", month);\n    format = format.replace(\"%M\", padding(mins));\n    format = format.replace(\"%-M\", mins);\n    format = format.replace(\"%p\", meridianOptions[meridian]);\n    format = format.replace(\"%P\", meridianOptions[meridian].toLowerCase());\n    format = format.replace(\"%S\", padding(secs));\n    format = format.replace(\"%-S\", secs);\n    format = format.replace(\"%w\", weekDay);\n    format = format.replace(\"%y\", padding(year));\n    format = format.replace(\"%-y\", padding(year).replace(/^0+/, \"\"));\n    format = format.replace(\"%Y\", year);\n    format = format.replace(\"%z\", timezoneoffset);\n    format = format.replace(\"%Z\", timezoneoffset);\n\n    return format;\n  };\n\n  // Convert the given dateString into a formatted date.\n  I18n.toTime = function(scope, dateString, options) {\n    var date = this.parseDate(dateString)\n      , format = this.lookup(scope, options)\n    ;\n\n    // A date input of `null` or `undefined` will be returned as-is\n    if (date == null) {\n      return date;\n    }\n\n    var date_string = date.toString()\n    if (date_string.match(/invalid/i)) {\n      return date_string;\n    }\n\n    if (!format) {\n      return date_string;\n    }\n\n    return this.strftime(date, format, options);\n  };\n\n  // Convert a number into a formatted percentage value.\n  I18n.toPercentage = function(number, options) {\n    options = this.prepareOptions(\n        options\n      , this.lookup(\"number.percentage.format\", options)\n      , this.lookup(\"number.format\", options)\n      , PERCENTAGE_FORMAT\n    );\n\n    return this.toNumber(number, options);\n  };\n\n  // Convert a number into a readable size representation.\n  I18n.toHumanSize = function(number, options) {\n    var kb = 1024\n      , size = number\n      , iterations = 0\n      , unit\n      , precision\n      , fullScope\n    ;\n\n    while (size >= kb && iterations < 4) {\n      size = size / kb;\n      iterations += 1;\n    }\n\n    if (iterations === 0) {\n      fullScope = this.getFullScope(\"number.human.storage_units.units.byte\", options);\n      unit = this.t(fullScope, {count: size});\n      precision = 0;\n    } else {\n      fullScope = this.getFullScope(\"number.human.storage_units.units.\" + SIZE_UNITS[iterations], options);\n      unit = this.t(fullScope);\n      precision = (size - Math.floor(size) === 0) ? 0 : 1;\n    }\n\n    options = this.prepareOptions(\n        options\n      , {unit: unit, precision: precision, format: \"%n%u\", delimiter: \"\"}\n    );\n\n    return this.toNumber(size, options);\n  };\n\n  I18n.getFullScope = function(scope, options) {\n    options = options || {};\n\n    // Deal with the scope as an array.\n    if (isArray(scope)) {\n      scope = scope.join(options.separator || this.defaultSeparator);\n    }\n\n    // Deal with the scope option provided through the second argument.\n    //\n    //    I18n.t('hello', {scope: 'greetings'});\n    //\n    if (options.scope) {\n      scope = [options.scope, scope].join(options.separator || this.defaultSeparator);\n    }\n\n    return scope;\n  };\n  /**\n   * Merge obj1 with obj2 (shallow merge), without modifying inputs\n   * @param {Object} obj1\n   * @param {Object} obj2\n   * @returns {Object} Merged values of obj1 and obj2\n   *\n   * In order to support ES3, `Object.prototype.hasOwnProperty.call` is used\n   * Idea is from:\n   * https://stackoverflow.com/questions/8157700/object-has-no-hasownproperty-method-i-e-its-undefined-ie8\n   */\n  I18n.extend = function ( obj1, obj2 ) {\n    if (typeof(obj1) === \"undefined\" && typeof(obj2) === \"undefined\") {\n      return {};\n    }\n    return merge(obj1, obj2);\n  };\n\n  // Set aliases, so we can save some typing.\n  I18n.t = I18n.translate.bind(I18n);\n  I18n.l = I18n.localize.bind(I18n);\n  I18n.p = I18n.pluralize.bind(I18n);\n\n  return I18n;\n}));\n","/*!\n * jQuery Cookie Plugin v1.4.1\n * https://github.com/carhartl/jquery-cookie\n *\n * Copyright 2013 Klaus Hartl\n * Released under the MIT license\n */\n(function (factory) {\n\tif (typeof define === 'function' && define.amd) {\n\t\t// AMD\n\t\tdefine(['jquery'], factory);\n\t} else if (typeof exports === 'object') {\n\t\t// CommonJS\n\t\tfactory(require('jquery'));\n\t} else {\n\t\t// Browser globals\n\t\tfactory(jQuery);\n\t}\n}(function ($) {\n\n\tvar pluses = /\\+/g;\n\n\tfunction encode(s) {\n\t\treturn config.raw ? s : encodeURIComponent(s);\n\t}\n\n\tfunction decode(s) {\n\t\treturn config.raw ? s : decodeURIComponent(s);\n\t}\n\n\tfunction stringifyCookieValue(value) {\n\t\treturn encode(config.json ? JSON.stringify(value) : String(value));\n\t}\n\n\tfunction parseCookieValue(s) {\n\t\tif (s.indexOf('\"') === 0) {\n\t\t\t// This is a quoted cookie as according to RFC2068, unescape...\n\t\t\ts = s.slice(1, -1).replace(/\\\\\"/g, '\"').replace(/\\\\\\\\/g, '\\\\');\n\t\t}\n\n\t\ttry {\n\t\t\t// Replace server-side written pluses with spaces.\n\t\t\t// If we can't decode the cookie, ignore it, it's unusable.\n\t\t\t// If we can't parse the cookie, ignore it, it's unusable.\n\t\t\ts = decodeURIComponent(s.replace(pluses, ' '));\n\t\t\treturn config.json ? JSON.parse(s) : s;\n\t\t} catch(e) {}\n\t}\n\n\tfunction read(s, converter) {\n\t\tvar value = config.raw ? s : parseCookieValue(s);\n\t\treturn $.isFunction(converter) ? converter(value) : value;\n\t}\n\n\tvar config = $.cookie = function (key, value, options) {\n\n\t\t// Write\n\n\t\tif (value !== undefined && !$.isFunction(value)) {\n\t\t\toptions = $.extend({}, config.defaults, options);\n\n\t\t\tif (typeof options.expires === 'number') {\n\t\t\t\tvar days = options.expires, t = options.expires = new Date();\n\t\t\t\tt.setTime(+t + days * 864e+5);\n\t\t\t}\n\n\t\t\treturn (document.cookie = [\n\t\t\t\tencode(key), '=', stringifyCookieValue(value),\n\t\t\t\toptions.expires ? '; expires=' + options.expires.toUTCString() : '', // use expires attribute, max-age is not supported by IE\n\t\t\t\toptions.path    ? '; path=' + options.path : '',\n\t\t\t\toptions.domain  ? '; domain=' + options.domain : '',\n\t\t\t\toptions.secure  ? '; secure' : ''\n\t\t\t].join(''));\n\t\t}\n\n\t\t// Read\n\n\t\tvar result = key ? undefined : {};\n\n\t\t// To prevent the for loop in the first place assign an empty array\n\t\t// in case there are no cookies at all. Also prevents odd result when\n\t\t// calling $.cookie().\n\t\tvar cookies = document.cookie ? document.cookie.split('; ') : [];\n\n\t\tfor (var i = 0, l = cookies.length; i < l; i++) {\n\t\t\tvar parts = cookies[i].split('=');\n\t\t\tvar name = decode(parts.shift());\n\t\t\tvar cookie = parts.join('=');\n\n\t\t\tif (key && key === name) {\n\t\t\t\t// If second argument (value) is a function it's a converter...\n\t\t\t\tresult = read(cookie, value);\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\t// Prevent storing a cookie that we couldn't decode.\n\t\t\tif (!key && (cookie = read(cookie)) !== undefined) {\n\t\t\t\tresult[name] = cookie;\n\t\t\t}\n\t\t}\n\n\t\treturn result;\n\t};\n\n\tconfig.defaults = {};\n\n\t$.removeCookie = function (key, options) {\n\t\tif ($.cookie(key) === undefined) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Must not alter options, thus extending a fresh object...\n\t\t$.cookie(key, '', $.extend({}, options, { expires: -1 }));\n\t\treturn !$.cookie(key);\n\t};\n\n}));\n","//! moment.js locale configuration\n//! locale : Danish [da]\n//! author : Ulrik Nielsen : https://github.com/mrbase\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var da = moment.defineLocale('da', {\n        months: 'januar_februar_marts_april_maj_juni_juli_august_september_oktober_november_december'.split(\n            '_'\n        ),\n        monthsShort: 'jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec'.split('_'),\n        weekdays: 'søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag'.split('_'),\n        weekdaysShort: 'søn_man_tir_ons_tor_fre_lør'.split('_'),\n        weekdaysMin: 'sø_ma_ti_on_to_fr_lø'.split('_'),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD.MM.YYYY',\n            LL: 'D. MMMM YYYY',\n            LLL: 'D. MMMM YYYY HH:mm',\n            LLLL: 'dddd [d.] D. MMMM YYYY [kl.] HH:mm',\n        },\n        calendar: {\n            sameDay: '[i dag kl.] LT',\n            nextDay: '[i morgen kl.] LT',\n            nextWeek: 'på dddd [kl.] LT',\n            lastDay: '[i går kl.] LT',\n            lastWeek: '[i] dddd[s kl.] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'om %s',\n            past: '%s siden',\n            s: 'få sekunder',\n            ss: '%d sekunder',\n            m: 'et minut',\n            mm: '%d minutter',\n            h: 'en time',\n            hh: '%d timer',\n            d: 'en dag',\n            dd: '%d dage',\n            M: 'en måned',\n            MM: '%d måneder',\n            y: 'et år',\n            yy: '%d år',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n        ordinal: '%d.',\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return da;\n\n})));\n","//! moment.js\n//! version : 2.29.4\n//! authors : Tim Wood, Iskren Chernev, Moment.js contributors\n//! license : MIT\n//! momentjs.com\n\n;(function (global, factory) {\n    typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n    typeof define === 'function' && define.amd ? define(factory) :\n    global.moment = factory()\n}(this, (function () { 'use strict';\n\n    var hookCallback;\n\n    function hooks() {\n        return hookCallback.apply(null, arguments);\n    }\n\n    // This is done to register the method called with moment()\n    // without creating circular dependencies.\n    function setHookCallback(callback) {\n        hookCallback = callback;\n    }\n\n    function isArray(input) {\n        return (\n            input instanceof Array ||\n            Object.prototype.toString.call(input) === '[object Array]'\n        );\n    }\n\n    function isObject(input) {\n        // IE8 will treat undefined and null as object if it wasn't for\n        // input != null\n        return (\n            input != null &&\n            Object.prototype.toString.call(input) === '[object Object]'\n        );\n    }\n\n    function hasOwnProp(a, b) {\n        return Object.prototype.hasOwnProperty.call(a, b);\n    }\n\n    function isObjectEmpty(obj) {\n        if (Object.getOwnPropertyNames) {\n            return Object.getOwnPropertyNames(obj).length === 0;\n        } else {\n            var k;\n            for (k in obj) {\n                if (hasOwnProp(obj, k)) {\n                    return false;\n                }\n            }\n            return true;\n        }\n    }\n\n    function isUndefined(input) {\n        return input === void 0;\n    }\n\n    function isNumber(input) {\n        return (\n            typeof input === 'number' ||\n            Object.prototype.toString.call(input) === '[object Number]'\n        );\n    }\n\n    function isDate(input) {\n        return (\n            input instanceof Date ||\n            Object.prototype.toString.call(input) === '[object Date]'\n        );\n    }\n\n    function map(arr, fn) {\n        var res = [],\n            i,\n            arrLen = arr.length;\n        for (i = 0; i < arrLen; ++i) {\n            res.push(fn(arr[i], i));\n        }\n        return res;\n    }\n\n    function extend(a, b) {\n        for (var i in b) {\n            if (hasOwnProp(b, i)) {\n                a[i] = b[i];\n            }\n        }\n\n        if (hasOwnProp(b, 'toString')) {\n            a.toString = b.toString;\n        }\n\n        if (hasOwnProp(b, 'valueOf')) {\n            a.valueOf = b.valueOf;\n        }\n\n        return a;\n    }\n\n    function createUTC(input, format, locale, strict) {\n        return createLocalOrUTC(input, format, locale, strict, true).utc();\n    }\n\n    function defaultParsingFlags() {\n        // We need to deep clone this object.\n        return {\n            empty: false,\n            unusedTokens: [],\n            unusedInput: [],\n            overflow: -2,\n            charsLeftOver: 0,\n            nullInput: false,\n            invalidEra: null,\n            invalidMonth: null,\n            invalidFormat: false,\n            userInvalidated: false,\n            iso: false,\n            parsedDateParts: [],\n            era: null,\n            meridiem: null,\n            rfc2822: false,\n            weekdayMismatch: false,\n        };\n    }\n\n    function getParsingFlags(m) {\n        if (m._pf == null) {\n            m._pf = defaultParsingFlags();\n        }\n        return m._pf;\n    }\n\n    var some;\n    if (Array.prototype.some) {\n        some = Array.prototype.some;\n    } else {\n        some = function (fun) {\n            var t = Object(this),\n                len = t.length >>> 0,\n                i;\n\n            for (i = 0; i < len; i++) {\n                if (i in t && fun.call(this, t[i], i, t)) {\n                    return true;\n                }\n            }\n\n            return false;\n        };\n    }\n\n    function isValid(m) {\n        if (m._isValid == null) {\n            var flags = getParsingFlags(m),\n                parsedParts = some.call(flags.parsedDateParts, function (i) {\n                    return i != null;\n                }),\n                isNowValid =\n                    !isNaN(m._d.getTime()) &&\n                    flags.overflow < 0 &&\n                    !flags.empty &&\n                    !flags.invalidEra &&\n                    !flags.invalidMonth &&\n                    !flags.invalidWeekday &&\n                    !flags.weekdayMismatch &&\n                    !flags.nullInput &&\n                    !flags.invalidFormat &&\n                    !flags.userInvalidated &&\n                    (!flags.meridiem || (flags.meridiem && parsedParts));\n\n            if (m._strict) {\n                isNowValid =\n                    isNowValid &&\n                    flags.charsLeftOver === 0 &&\n                    flags.unusedTokens.length === 0 &&\n                    flags.bigHour === undefined;\n            }\n\n            if (Object.isFrozen == null || !Object.isFrozen(m)) {\n                m._isValid = isNowValid;\n            } else {\n                return isNowValid;\n            }\n        }\n        return m._isValid;\n    }\n\n    function createInvalid(flags) {\n        var m = createUTC(NaN);\n        if (flags != null) {\n            extend(getParsingFlags(m), flags);\n        } else {\n            getParsingFlags(m).userInvalidated = true;\n        }\n\n        return m;\n    }\n\n    // Plugins that add properties should also add the key here (null value),\n    // so we can properly clone ourselves.\n    var momentProperties = (hooks.momentProperties = []),\n        updateInProgress = false;\n\n    function copyConfig(to, from) {\n        var i,\n            prop,\n            val,\n            momentPropertiesLen = momentProperties.length;\n\n        if (!isUndefined(from._isAMomentObject)) {\n            to._isAMomentObject = from._isAMomentObject;\n        }\n        if (!isUndefined(from._i)) {\n            to._i = from._i;\n        }\n        if (!isUndefined(from._f)) {\n            to._f = from._f;\n        }\n        if (!isUndefined(from._l)) {\n            to._l = from._l;\n        }\n        if (!isUndefined(from._strict)) {\n            to._strict = from._strict;\n        }\n        if (!isUndefined(from._tzm)) {\n            to._tzm = from._tzm;\n        }\n        if (!isUndefined(from._isUTC)) {\n            to._isUTC = from._isUTC;\n        }\n        if (!isUndefined(from._offset)) {\n            to._offset = from._offset;\n        }\n        if (!isUndefined(from._pf)) {\n            to._pf = getParsingFlags(from);\n        }\n        if (!isUndefined(from._locale)) {\n            to._locale = from._locale;\n        }\n\n        if (momentPropertiesLen > 0) {\n            for (i = 0; i < momentPropertiesLen; i++) {\n                prop = momentProperties[i];\n                val = from[prop];\n                if (!isUndefined(val)) {\n                    to[prop] = val;\n                }\n            }\n        }\n\n        return to;\n    }\n\n    // Moment prototype object\n    function Moment(config) {\n        copyConfig(this, config);\n        this._d = new Date(config._d != null ? config._d.getTime() : NaN);\n        if (!this.isValid()) {\n            this._d = new Date(NaN);\n        }\n        // Prevent infinite loop in case updateOffset creates new moment\n        // objects.\n        if (updateInProgress === false) {\n            updateInProgress = true;\n            hooks.updateOffset(this);\n            updateInProgress = false;\n        }\n    }\n\n    function isMoment(obj) {\n        return (\n            obj instanceof Moment || (obj != null && obj._isAMomentObject != null)\n        );\n    }\n\n    function warn(msg) {\n        if (\n            hooks.suppressDeprecationWarnings === false &&\n            typeof console !== 'undefined' &&\n            console.warn\n        ) {\n            console.warn('Deprecation warning: ' + msg);\n        }\n    }\n\n    function deprecate(msg, fn) {\n        var firstTime = true;\n\n        return extend(function () {\n            if (hooks.deprecationHandler != null) {\n                hooks.deprecationHandler(null, msg);\n            }\n            if (firstTime) {\n                var args = [],\n                    arg,\n                    i,\n                    key,\n                    argLen = arguments.length;\n                for (i = 0; i < argLen; i++) {\n                    arg = '';\n                    if (typeof arguments[i] === 'object') {\n                        arg += '\\n[' + i + '] ';\n                        for (key in arguments[0]) {\n                            if (hasOwnProp(arguments[0], key)) {\n                                arg += key + ': ' + arguments[0][key] + ', ';\n                            }\n                        }\n                        arg = arg.slice(0, -2); // Remove trailing comma and space\n                    } else {\n                        arg = arguments[i];\n                    }\n                    args.push(arg);\n                }\n                warn(\n                    msg +\n                        '\\nArguments: ' +\n                        Array.prototype.slice.call(args).join('') +\n                        '\\n' +\n                        new Error().stack\n                );\n                firstTime = false;\n            }\n            return fn.apply(this, arguments);\n        }, fn);\n    }\n\n    var deprecations = {};\n\n    function deprecateSimple(name, msg) {\n        if (hooks.deprecationHandler != null) {\n            hooks.deprecationHandler(name, msg);\n        }\n        if (!deprecations[name]) {\n            warn(msg);\n            deprecations[name] = true;\n        }\n    }\n\n    hooks.suppressDeprecationWarnings = false;\n    hooks.deprecationHandler = null;\n\n    function isFunction(input) {\n        return (\n            (typeof Function !== 'undefined' && input instanceof Function) ||\n            Object.prototype.toString.call(input) === '[object Function]'\n        );\n    }\n\n    function set(config) {\n        var prop, i;\n        for (i in config) {\n            if (hasOwnProp(config, i)) {\n                prop = config[i];\n                if (isFunction(prop)) {\n                    this[i] = prop;\n                } else {\n                    this['_' + i] = prop;\n                }\n            }\n        }\n        this._config = config;\n        // Lenient ordinal parsing accepts just a number in addition to\n        // number + (possibly) stuff coming from _dayOfMonthOrdinalParse.\n        // TODO: Remove \"ordinalParse\" fallback in next major release.\n        this._dayOfMonthOrdinalParseLenient = new RegExp(\n            (this._dayOfMonthOrdinalParse.source || this._ordinalParse.source) +\n                '|' +\n                /\\d{1,2}/.source\n        );\n    }\n\n    function mergeConfigs(parentConfig, childConfig) {\n        var res = extend({}, parentConfig),\n            prop;\n        for (prop in childConfig) {\n            if (hasOwnProp(childConfig, prop)) {\n                if (isObject(parentConfig[prop]) && isObject(childConfig[prop])) {\n                    res[prop] = {};\n                    extend(res[prop], parentConfig[prop]);\n                    extend(res[prop], childConfig[prop]);\n                } else if (childConfig[prop] != null) {\n                    res[prop] = childConfig[prop];\n                } else {\n                    delete res[prop];\n                }\n            }\n        }\n        for (prop in parentConfig) {\n            if (\n                hasOwnProp(parentConfig, prop) &&\n                !hasOwnProp(childConfig, prop) &&\n                isObject(parentConfig[prop])\n            ) {\n                // make sure changes to properties don't modify parent config\n                res[prop] = extend({}, res[prop]);\n            }\n        }\n        return res;\n    }\n\n    function Locale(config) {\n        if (config != null) {\n            this.set(config);\n        }\n    }\n\n    var keys;\n\n    if (Object.keys) {\n        keys = Object.keys;\n    } else {\n        keys = function (obj) {\n            var i,\n                res = [];\n            for (i in obj) {\n                if (hasOwnProp(obj, i)) {\n                    res.push(i);\n                }\n            }\n            return res;\n        };\n    }\n\n    var defaultCalendar = {\n        sameDay: '[Today at] LT',\n        nextDay: '[Tomorrow at] LT',\n        nextWeek: 'dddd [at] LT',\n        lastDay: '[Yesterday at] LT',\n        lastWeek: '[Last] dddd [at] LT',\n        sameElse: 'L',\n    };\n\n    function calendar(key, mom, now) {\n        var output = this._calendar[key] || this._calendar['sameElse'];\n        return isFunction(output) ? output.call(mom, now) : output;\n    }\n\n    function zeroFill(number, targetLength, forceSign) {\n        var absNumber = '' + Math.abs(number),\n            zerosToFill = targetLength - absNumber.length,\n            sign = number >= 0;\n        return (\n            (sign ? (forceSign ? '+' : '') : '-') +\n            Math.pow(10, Math.max(0, zerosToFill)).toString().substr(1) +\n            absNumber\n        );\n    }\n\n    var formattingTokens =\n            /(\\[[^\\[]*\\])|(\\\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|N{1,5}|YYYYYY|YYYYY|YYYY|YY|y{2,4}|yo?|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g,\n        localFormattingTokens = /(\\[[^\\[]*\\])|(\\\\)?(LTS|LT|LL?L?L?|l{1,4})/g,\n        formatFunctions = {},\n        formatTokenFunctions = {};\n\n    // token:    'M'\n    // padded:   ['MM', 2]\n    // ordinal:  'Mo'\n    // callback: function () { this.month() + 1 }\n    function addFormatToken(token, padded, ordinal, callback) {\n        var func = callback;\n        if (typeof callback === 'string') {\n            func = function () {\n                return this[callback]();\n            };\n        }\n        if (token) {\n            formatTokenFunctions[token] = func;\n        }\n        if (padded) {\n            formatTokenFunctions[padded[0]] = function () {\n                return zeroFill(func.apply(this, arguments), padded[1], padded[2]);\n            };\n        }\n        if (ordinal) {\n            formatTokenFunctions[ordinal] = function () {\n                return this.localeData().ordinal(\n                    func.apply(this, arguments),\n                    token\n                );\n            };\n        }\n    }\n\n    function removeFormattingTokens(input) {\n        if (input.match(/\\[[\\s\\S]/)) {\n            return input.replace(/^\\[|\\]$/g, '');\n        }\n        return input.replace(/\\\\/g, '');\n    }\n\n    function makeFormatFunction(format) {\n        var array = format.match(formattingTokens),\n            i,\n            length;\n\n        for (i = 0, length = array.length; i < length; i++) {\n            if (formatTokenFunctions[array[i]]) {\n                array[i] = formatTokenFunctions[array[i]];\n            } else {\n                array[i] = removeFormattingTokens(array[i]);\n            }\n        }\n\n        return function (mom) {\n            var output = '',\n                i;\n            for (i = 0; i < length; i++) {\n                output += isFunction(array[i])\n                    ? array[i].call(mom, format)\n                    : array[i];\n            }\n            return output;\n        };\n    }\n\n    // format date using native date object\n    function formatMoment(m, format) {\n        if (!m.isValid()) {\n            return m.localeData().invalidDate();\n        }\n\n        format = expandFormat(format, m.localeData());\n        formatFunctions[format] =\n            formatFunctions[format] || makeFormatFunction(format);\n\n        return formatFunctions[format](m);\n    }\n\n    function expandFormat(format, locale) {\n        var i = 5;\n\n        function replaceLongDateFormatTokens(input) {\n            return locale.longDateFormat(input) || input;\n        }\n\n        localFormattingTokens.lastIndex = 0;\n        while (i >= 0 && localFormattingTokens.test(format)) {\n            format = format.replace(\n                localFormattingTokens,\n                replaceLongDateFormatTokens\n            );\n            localFormattingTokens.lastIndex = 0;\n            i -= 1;\n        }\n\n        return format;\n    }\n\n    var defaultLongDateFormat = {\n        LTS: 'h:mm:ss A',\n        LT: 'h:mm A',\n        L: 'MM/DD/YYYY',\n        LL: 'MMMM D, YYYY',\n        LLL: 'MMMM D, YYYY h:mm A',\n        LLLL: 'dddd, MMMM D, YYYY h:mm A',\n    };\n\n    function longDateFormat(key) {\n        var format = this._longDateFormat[key],\n            formatUpper = this._longDateFormat[key.toUpperCase()];\n\n        if (format || !formatUpper) {\n            return format;\n        }\n\n        this._longDateFormat[key] = formatUpper\n            .match(formattingTokens)\n            .map(function (tok) {\n                if (\n                    tok === 'MMMM' ||\n                    tok === 'MM' ||\n                    tok === 'DD' ||\n                    tok === 'dddd'\n                ) {\n                    return tok.slice(1);\n                }\n                return tok;\n            })\n            .join('');\n\n        return this._longDateFormat[key];\n    }\n\n    var defaultInvalidDate = 'Invalid date';\n\n    function invalidDate() {\n        return this._invalidDate;\n    }\n\n    var defaultOrdinal = '%d',\n        defaultDayOfMonthOrdinalParse = /\\d{1,2}/;\n\n    function ordinal(number) {\n        return this._ordinal.replace('%d', number);\n    }\n\n    var defaultRelativeTime = {\n        future: 'in %s',\n        past: '%s ago',\n        s: 'a few seconds',\n        ss: '%d seconds',\n        m: 'a minute',\n        mm: '%d minutes',\n        h: 'an hour',\n        hh: '%d hours',\n        d: 'a day',\n        dd: '%d days',\n        w: 'a week',\n        ww: '%d weeks',\n        M: 'a month',\n        MM: '%d months',\n        y: 'a year',\n        yy: '%d years',\n    };\n\n    function relativeTime(number, withoutSuffix, string, isFuture) {\n        var output = this._relativeTime[string];\n        return isFunction(output)\n            ? output(number, withoutSuffix, string, isFuture)\n            : output.replace(/%d/i, number);\n    }\n\n    function pastFuture(diff, output) {\n        var format = this._relativeTime[diff > 0 ? 'future' : 'past'];\n        return isFunction(format) ? format(output) : format.replace(/%s/i, output);\n    }\n\n    var aliases = {};\n\n    function addUnitAlias(unit, shorthand) {\n        var lowerCase = unit.toLowerCase();\n        aliases[lowerCase] = aliases[lowerCase + 's'] = aliases[shorthand] = unit;\n    }\n\n    function normalizeUnits(units) {\n        return typeof units === 'string'\n            ? aliases[units] || aliases[units.toLowerCase()]\n            : undefined;\n    }\n\n    function normalizeObjectUnits(inputObject) {\n        var normalizedInput = {},\n            normalizedProp,\n            prop;\n\n        for (prop in inputObject) {\n            if (hasOwnProp(inputObject, prop)) {\n                normalizedProp = normalizeUnits(prop);\n                if (normalizedProp) {\n                    normalizedInput[normalizedProp] = inputObject[prop];\n                }\n            }\n        }\n\n        return normalizedInput;\n    }\n\n    var priorities = {};\n\n    function addUnitPriority(unit, priority) {\n        priorities[unit] = priority;\n    }\n\n    function getPrioritizedUnits(unitsObj) {\n        var units = [],\n            u;\n        for (u in unitsObj) {\n            if (hasOwnProp(unitsObj, u)) {\n                units.push({ unit: u, priority: priorities[u] });\n            }\n        }\n        units.sort(function (a, b) {\n            return a.priority - b.priority;\n        });\n        return units;\n    }\n\n    function isLeapYear(year) {\n        return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0;\n    }\n\n    function absFloor(number) {\n        if (number < 0) {\n            // -0 -> 0\n            return Math.ceil(number) || 0;\n        } else {\n            return Math.floor(number);\n        }\n    }\n\n    function toInt(argumentForCoercion) {\n        var coercedNumber = +argumentForCoercion,\n            value = 0;\n\n        if (coercedNumber !== 0 && isFinite(coercedNumber)) {\n            value = absFloor(coercedNumber);\n        }\n\n        return value;\n    }\n\n    function makeGetSet(unit, keepTime) {\n        return function (value) {\n            if (value != null) {\n                set$1(this, unit, value);\n                hooks.updateOffset(this, keepTime);\n                return this;\n            } else {\n                return get(this, unit);\n            }\n        };\n    }\n\n    function get(mom, unit) {\n        return mom.isValid()\n            ? mom._d['get' + (mom._isUTC ? 'UTC' : '') + unit]()\n            : NaN;\n    }\n\n    function set$1(mom, unit, value) {\n        if (mom.isValid() && !isNaN(value)) {\n            if (\n                unit === 'FullYear' &&\n                isLeapYear(mom.year()) &&\n                mom.month() === 1 &&\n                mom.date() === 29\n            ) {\n                value = toInt(value);\n                mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](\n                    value,\n                    mom.month(),\n                    daysInMonth(value, mom.month())\n                );\n            } else {\n                mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](value);\n            }\n        }\n    }\n\n    // MOMENTS\n\n    function stringGet(units) {\n        units = normalizeUnits(units);\n        if (isFunction(this[units])) {\n            return this[units]();\n        }\n        return this;\n    }\n\n    function stringSet(units, value) {\n        if (typeof units === 'object') {\n            units = normalizeObjectUnits(units);\n            var prioritized = getPrioritizedUnits(units),\n                i,\n                prioritizedLen = prioritized.length;\n            for (i = 0; i < prioritizedLen; i++) {\n                this[prioritized[i].unit](units[prioritized[i].unit]);\n            }\n        } else {\n            units = normalizeUnits(units);\n            if (isFunction(this[units])) {\n                return this[units](value);\n            }\n        }\n        return this;\n    }\n\n    var match1 = /\\d/, //       0 - 9\n        match2 = /\\d\\d/, //      00 - 99\n        match3 = /\\d{3}/, //     000 - 999\n        match4 = /\\d{4}/, //    0000 - 9999\n        match6 = /[+-]?\\d{6}/, // -999999 - 999999\n        match1to2 = /\\d\\d?/, //       0 - 99\n        match3to4 = /\\d\\d\\d\\d?/, //     999 - 9999\n        match5to6 = /\\d\\d\\d\\d\\d\\d?/, //   99999 - 999999\n        match1to3 = /\\d{1,3}/, //       0 - 999\n        match1to4 = /\\d{1,4}/, //       0 - 9999\n        match1to6 = /[+-]?\\d{1,6}/, // -999999 - 999999\n        matchUnsigned = /\\d+/, //       0 - inf\n        matchSigned = /[+-]?\\d+/, //    -inf - inf\n        matchOffset = /Z|[+-]\\d\\d:?\\d\\d/gi, // +00:00 -00:00 +0000 -0000 or Z\n        matchShortOffset = /Z|[+-]\\d\\d(?::?\\d\\d)?/gi, // +00 -00 +00:00 -00:00 +0000 -0000 or Z\n        matchTimestamp = /[+-]?\\d+(\\.\\d{1,3})?/, // 123456789 123456789.123\n        // any word (or two) characters or numbers including two/three word month in arabic.\n        // includes scottish gaelic two word and hyphenated months\n        matchWord =\n            /[0-9]{0,256}['a-z\\u00A0-\\u05FF\\u0700-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFF07\\uFF10-\\uFFEF]{1,256}|[\\u0600-\\u06FF\\/]{1,256}(\\s*?[\\u0600-\\u06FF]{1,256}){1,2}/i,\n        regexes;\n\n    regexes = {};\n\n    function addRegexToken(token, regex, strictRegex) {\n        regexes[token] = isFunction(regex)\n            ? regex\n            : function (isStrict, localeData) {\n                  return isStrict && strictRegex ? strictRegex : regex;\n              };\n    }\n\n    function getParseRegexForToken(token, config) {\n        if (!hasOwnProp(regexes, token)) {\n            return new RegExp(unescapeFormat(token));\n        }\n\n        return regexes[token](config._strict, config._locale);\n    }\n\n    // Code from http://stackoverflow.com/questions/3561493/is-there-a-regexp-escape-function-in-javascript\n    function unescapeFormat(s) {\n        return regexEscape(\n            s\n                .replace('\\\\', '')\n                .replace(\n                    /\\\\(\\[)|\\\\(\\])|\\[([^\\]\\[]*)\\]|\\\\(.)/g,\n                    function (matched, p1, p2, p3, p4) {\n                        return p1 || p2 || p3 || p4;\n                    }\n                )\n        );\n    }\n\n    function regexEscape(s) {\n        return s.replace(/[-\\/\\\\^$*+?.()|[\\]{}]/g, '\\\\$&');\n    }\n\n    var tokens = {};\n\n    function addParseToken(token, callback) {\n        var i,\n            func = callback,\n            tokenLen;\n        if (typeof token === 'string') {\n            token = [token];\n        }\n        if (isNumber(callback)) {\n            func = function (input, array) {\n                array[callback] = toInt(input);\n            };\n        }\n        tokenLen = token.length;\n        for (i = 0; i < tokenLen; i++) {\n            tokens[token[i]] = func;\n        }\n    }\n\n    function addWeekParseToken(token, callback) {\n        addParseToken(token, function (input, array, config, token) {\n            config._w = config._w || {};\n            callback(input, config._w, config, token);\n        });\n    }\n\n    function addTimeToArrayFromToken(token, input, config) {\n        if (input != null && hasOwnProp(tokens, token)) {\n            tokens[token](input, config._a, config, token);\n        }\n    }\n\n    var YEAR = 0,\n        MONTH = 1,\n        DATE = 2,\n        HOUR = 3,\n        MINUTE = 4,\n        SECOND = 5,\n        MILLISECOND = 6,\n        WEEK = 7,\n        WEEKDAY = 8;\n\n    function mod(n, x) {\n        return ((n % x) + x) % x;\n    }\n\n    var indexOf;\n\n    if (Array.prototype.indexOf) {\n        indexOf = Array.prototype.indexOf;\n    } else {\n        indexOf = function (o) {\n            // I know\n            var i;\n            for (i = 0; i < this.length; ++i) {\n                if (this[i] === o) {\n                    return i;\n                }\n            }\n            return -1;\n        };\n    }\n\n    function daysInMonth(year, month) {\n        if (isNaN(year) || isNaN(month)) {\n            return NaN;\n        }\n        var modMonth = mod(month, 12);\n        year += (month - modMonth) / 12;\n        return modMonth === 1\n            ? isLeapYear(year)\n                ? 29\n                : 28\n            : 31 - ((modMonth % 7) % 2);\n    }\n\n    // FORMATTING\n\n    addFormatToken('M', ['MM', 2], 'Mo', function () {\n        return this.month() + 1;\n    });\n\n    addFormatToken('MMM', 0, 0, function (format) {\n        return this.localeData().monthsShort(this, format);\n    });\n\n    addFormatToken('MMMM', 0, 0, function (format) {\n        return this.localeData().months(this, format);\n    });\n\n    // ALIASES\n\n    addUnitAlias('month', 'M');\n\n    // PRIORITY\n\n    addUnitPriority('month', 8);\n\n    // PARSING\n\n    addRegexToken('M', match1to2);\n    addRegexToken('MM', match1to2, match2);\n    addRegexToken('MMM', function (isStrict, locale) {\n        return locale.monthsShortRegex(isStrict);\n    });\n    addRegexToken('MMMM', function (isStrict, locale) {\n        return locale.monthsRegex(isStrict);\n    });\n\n    addParseToken(['M', 'MM'], function (input, array) {\n        array[MONTH] = toInt(input) - 1;\n    });\n\n    addParseToken(['MMM', 'MMMM'], function (input, array, config, token) {\n        var month = config._locale.monthsParse(input, token, config._strict);\n        // if we didn't find a month name, mark the date as invalid.\n        if (month != null) {\n            array[MONTH] = month;\n        } else {\n            getParsingFlags(config).invalidMonth = input;\n        }\n    });\n\n    // LOCALES\n\n    var defaultLocaleMonths =\n            'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n                '_'\n            ),\n        defaultLocaleMonthsShort =\n            'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n        MONTHS_IN_FORMAT = /D[oD]?(\\[[^\\[\\]]*\\]|\\s)+MMMM?/,\n        defaultMonthsShortRegex = matchWord,\n        defaultMonthsRegex = matchWord;\n\n    function localeMonths(m, format) {\n        if (!m) {\n            return isArray(this._months)\n                ? this._months\n                : this._months['standalone'];\n        }\n        return isArray(this._months)\n            ? this._months[m.month()]\n            : this._months[\n                  (this._months.isFormat || MONTHS_IN_FORMAT).test(format)\n                      ? 'format'\n                      : 'standalone'\n              ][m.month()];\n    }\n\n    function localeMonthsShort(m, format) {\n        if (!m) {\n            return isArray(this._monthsShort)\n                ? this._monthsShort\n                : this._monthsShort['standalone'];\n        }\n        return isArray(this._monthsShort)\n            ? this._monthsShort[m.month()]\n            : this._monthsShort[\n                  MONTHS_IN_FORMAT.test(format) ? 'format' : 'standalone'\n              ][m.month()];\n    }\n\n    function handleStrictParse(monthName, format, strict) {\n        var i,\n            ii,\n            mom,\n            llc = monthName.toLocaleLowerCase();\n        if (!this._monthsParse) {\n            // this is not used\n            this._monthsParse = [];\n            this._longMonthsParse = [];\n            this._shortMonthsParse = [];\n            for (i = 0; i < 12; ++i) {\n                mom = createUTC([2000, i]);\n                this._shortMonthsParse[i] = this.monthsShort(\n                    mom,\n                    ''\n                ).toLocaleLowerCase();\n                this._longMonthsParse[i] = this.months(mom, '').toLocaleLowerCase();\n            }\n        }\n\n        if (strict) {\n            if (format === 'MMM') {\n                ii = indexOf.call(this._shortMonthsParse, llc);\n                return ii !== -1 ? ii : null;\n            } else {\n                ii = indexOf.call(this._longMonthsParse, llc);\n                return ii !== -1 ? ii : null;\n            }\n        } else {\n            if (format === 'MMM') {\n                ii = indexOf.call(this._shortMonthsParse, llc);\n                if (ii !== -1) {\n                    return ii;\n                }\n                ii = indexOf.call(this._longMonthsParse, llc);\n                return ii !== -1 ? ii : null;\n            } else {\n                ii = indexOf.call(this._longMonthsParse, llc);\n                if (ii !== -1) {\n                    return ii;\n                }\n                ii = indexOf.call(this._shortMonthsParse, llc);\n                return ii !== -1 ? ii : null;\n            }\n        }\n    }\n\n    function localeMonthsParse(monthName, format, strict) {\n        var i, mom, regex;\n\n        if (this._monthsParseExact) {\n            return handleStrictParse.call(this, monthName, format, strict);\n        }\n\n        if (!this._monthsParse) {\n            this._monthsParse = [];\n            this._longMonthsParse = [];\n            this._shortMonthsParse = [];\n        }\n\n        // TODO: add sorting\n        // Sorting makes sure if one month (or abbr) is a prefix of another\n        // see sorting in computeMonthsParse\n        for (i = 0; i < 12; i++) {\n            // make the regex if we don't have it already\n            mom = createUTC([2000, i]);\n            if (strict && !this._longMonthsParse[i]) {\n                this._longMonthsParse[i] = new RegExp(\n                    '^' + this.months(mom, '').replace('.', '') + '$',\n                    'i'\n                );\n                this._shortMonthsParse[i] = new RegExp(\n                    '^' + this.monthsShort(mom, '').replace('.', '') + '$',\n                    'i'\n                );\n            }\n            if (!strict && !this._monthsParse[i]) {\n                regex =\n                    '^' + this.months(mom, '') + '|^' + this.monthsShort(mom, '');\n                this._monthsParse[i] = new RegExp(regex.replace('.', ''), 'i');\n            }\n            // test the regex\n            if (\n                strict &&\n                format === 'MMMM' &&\n                this._longMonthsParse[i].test(monthName)\n            ) {\n                return i;\n            } else if (\n                strict &&\n                format === 'MMM' &&\n                this._shortMonthsParse[i].test(monthName)\n            ) {\n                return i;\n            } else if (!strict && this._monthsParse[i].test(monthName)) {\n                return i;\n            }\n        }\n    }\n\n    // MOMENTS\n\n    function setMonth(mom, value) {\n        var dayOfMonth;\n\n        if (!mom.isValid()) {\n            // No op\n            return mom;\n        }\n\n        if (typeof value === 'string') {\n            if (/^\\d+$/.test(value)) {\n                value = toInt(value);\n            } else {\n                value = mom.localeData().monthsParse(value);\n                // TODO: Another silent failure?\n                if (!isNumber(value)) {\n                    return mom;\n                }\n            }\n        }\n\n        dayOfMonth = Math.min(mom.date(), daysInMonth(mom.year(), value));\n        mom._d['set' + (mom._isUTC ? 'UTC' : '') + 'Month'](value, dayOfMonth);\n        return mom;\n    }\n\n    function getSetMonth(value) {\n        if (value != null) {\n            setMonth(this, value);\n            hooks.updateOffset(this, true);\n            return this;\n        } else {\n            return get(this, 'Month');\n        }\n    }\n\n    function getDaysInMonth() {\n        return daysInMonth(this.year(), this.month());\n    }\n\n    function monthsShortRegex(isStrict) {\n        if (this._monthsParseExact) {\n            if (!hasOwnProp(this, '_monthsRegex')) {\n                computeMonthsParse.call(this);\n            }\n            if (isStrict) {\n                return this._monthsShortStrictRegex;\n            } else {\n                return this._monthsShortRegex;\n            }\n        } else {\n            if (!hasOwnProp(this, '_monthsShortRegex')) {\n                this._monthsShortRegex = defaultMonthsShortRegex;\n            }\n            return this._monthsShortStrictRegex && isStrict\n                ? this._monthsShortStrictRegex\n                : this._monthsShortRegex;\n        }\n    }\n\n    function monthsRegex(isStrict) {\n        if (this._monthsParseExact) {\n            if (!hasOwnProp(this, '_monthsRegex')) {\n                computeMonthsParse.call(this);\n            }\n            if (isStrict) {\n                return this._monthsStrictRegex;\n            } else {\n                return this._monthsRegex;\n            }\n        } else {\n            if (!hasOwnProp(this, '_monthsRegex')) {\n                this._monthsRegex = defaultMonthsRegex;\n            }\n            return this._monthsStrictRegex && isStrict\n                ? this._monthsStrictRegex\n                : this._monthsRegex;\n        }\n    }\n\n    function computeMonthsParse() {\n        function cmpLenRev(a, b) {\n            return b.length - a.length;\n        }\n\n        var shortPieces = [],\n            longPieces = [],\n            mixedPieces = [],\n            i,\n            mom;\n        for (i = 0; i < 12; i++) {\n            // make the regex if we don't have it already\n            mom = createUTC([2000, i]);\n            shortPieces.push(this.monthsShort(mom, ''));\n            longPieces.push(this.months(mom, ''));\n            mixedPieces.push(this.months(mom, ''));\n            mixedPieces.push(this.monthsShort(mom, ''));\n        }\n        // Sorting makes sure if one month (or abbr) is a prefix of another it\n        // will match the longer piece.\n        shortPieces.sort(cmpLenRev);\n        longPieces.sort(cmpLenRev);\n        mixedPieces.sort(cmpLenRev);\n        for (i = 0; i < 12; i++) {\n            shortPieces[i] = regexEscape(shortPieces[i]);\n            longPieces[i] = regexEscape(longPieces[i]);\n        }\n        for (i = 0; i < 24; i++) {\n            mixedPieces[i] = regexEscape(mixedPieces[i]);\n        }\n\n        this._monthsRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n        this._monthsShortRegex = this._monthsRegex;\n        this._monthsStrictRegex = new RegExp(\n            '^(' + longPieces.join('|') + ')',\n            'i'\n        );\n        this._monthsShortStrictRegex = new RegExp(\n            '^(' + shortPieces.join('|') + ')',\n            'i'\n        );\n    }\n\n    // FORMATTING\n\n    addFormatToken('Y', 0, 0, function () {\n        var y = this.year();\n        return y <= 9999 ? zeroFill(y, 4) : '+' + y;\n    });\n\n    addFormatToken(0, ['YY', 2], 0, function () {\n        return this.year() % 100;\n    });\n\n    addFormatToken(0, ['YYYY', 4], 0, 'year');\n    addFormatToken(0, ['YYYYY', 5], 0, 'year');\n    addFormatToken(0, ['YYYYYY', 6, true], 0, 'year');\n\n    // ALIASES\n\n    addUnitAlias('year', 'y');\n\n    // PRIORITIES\n\n    addUnitPriority('year', 1);\n\n    // PARSING\n\n    addRegexToken('Y', matchSigned);\n    addRegexToken('YY', match1to2, match2);\n    addRegexToken('YYYY', match1to4, match4);\n    addRegexToken('YYYYY', match1to6, match6);\n    addRegexToken('YYYYYY', match1to6, match6);\n\n    addParseToken(['YYYYY', 'YYYYYY'], YEAR);\n    addParseToken('YYYY', function (input, array) {\n        array[YEAR] =\n            input.length === 2 ? hooks.parseTwoDigitYear(input) : toInt(input);\n    });\n    addParseToken('YY', function (input, array) {\n        array[YEAR] = hooks.parseTwoDigitYear(input);\n    });\n    addParseToken('Y', function (input, array) {\n        array[YEAR] = parseInt(input, 10);\n    });\n\n    // HELPERS\n\n    function daysInYear(year) {\n        return isLeapYear(year) ? 366 : 365;\n    }\n\n    // HOOKS\n\n    hooks.parseTwoDigitYear = function (input) {\n        return toInt(input) + (toInt(input) > 68 ? 1900 : 2000);\n    };\n\n    // MOMENTS\n\n    var getSetYear = makeGetSet('FullYear', true);\n\n    function getIsLeapYear() {\n        return isLeapYear(this.year());\n    }\n\n    function createDate(y, m, d, h, M, s, ms) {\n        // can't just apply() to create a date:\n        // https://stackoverflow.com/q/181348\n        var date;\n        // the date constructor remaps years 0-99 to 1900-1999\n        if (y < 100 && y >= 0) {\n            // preserve leap years using a full 400 year cycle, then reset\n            date = new Date(y + 400, m, d, h, M, s, ms);\n            if (isFinite(date.getFullYear())) {\n                date.setFullYear(y);\n            }\n        } else {\n            date = new Date(y, m, d, h, M, s, ms);\n        }\n\n        return date;\n    }\n\n    function createUTCDate(y) {\n        var date, args;\n        // the Date.UTC function remaps years 0-99 to 1900-1999\n        if (y < 100 && y >= 0) {\n            args = Array.prototype.slice.call(arguments);\n            // preserve leap years using a full 400 year cycle, then reset\n            args[0] = y + 400;\n            date = new Date(Date.UTC.apply(null, args));\n            if (isFinite(date.getUTCFullYear())) {\n                date.setUTCFullYear(y);\n            }\n        } else {\n            date = new Date(Date.UTC.apply(null, arguments));\n        }\n\n        return date;\n    }\n\n    // start-of-first-week - start-of-year\n    function firstWeekOffset(year, dow, doy) {\n        var // first-week day -- which january is always in the first week (4 for iso, 1 for other)\n            fwd = 7 + dow - doy,\n            // first-week day local weekday -- which local weekday is fwd\n            fwdlw = (7 + createUTCDate(year, 0, fwd).getUTCDay() - dow) % 7;\n\n        return -fwdlw + fwd - 1;\n    }\n\n    // https://en.wikipedia.org/wiki/ISO_week_date#Calculating_a_date_given_the_year.2C_week_number_and_weekday\n    function dayOfYearFromWeeks(year, week, weekday, dow, doy) {\n        var localWeekday = (7 + weekday - dow) % 7,\n            weekOffset = firstWeekOffset(year, dow, doy),\n            dayOfYear = 1 + 7 * (week - 1) + localWeekday + weekOffset,\n            resYear,\n            resDayOfYear;\n\n        if (dayOfYear <= 0) {\n            resYear = year - 1;\n            resDayOfYear = daysInYear(resYear) + dayOfYear;\n        } else if (dayOfYear > daysInYear(year)) {\n            resYear = year + 1;\n            resDayOfYear = dayOfYear - daysInYear(year);\n        } else {\n            resYear = year;\n            resDayOfYear = dayOfYear;\n        }\n\n        return {\n            year: resYear,\n            dayOfYear: resDayOfYear,\n        };\n    }\n\n    function weekOfYear(mom, dow, doy) {\n        var weekOffset = firstWeekOffset(mom.year(), dow, doy),\n            week = Math.floor((mom.dayOfYear() - weekOffset - 1) / 7) + 1,\n            resWeek,\n            resYear;\n\n        if (week < 1) {\n            resYear = mom.year() - 1;\n            resWeek = week + weeksInYear(resYear, dow, doy);\n        } else if (week > weeksInYear(mom.year(), dow, doy)) {\n            resWeek = week - weeksInYear(mom.year(), dow, doy);\n            resYear = mom.year() + 1;\n        } else {\n            resYear = mom.year();\n            resWeek = week;\n        }\n\n        return {\n            week: resWeek,\n            year: resYear,\n        };\n    }\n\n    function weeksInYear(year, dow, doy) {\n        var weekOffset = firstWeekOffset(year, dow, doy),\n            weekOffsetNext = firstWeekOffset(year + 1, dow, doy);\n        return (daysInYear(year) - weekOffset + weekOffsetNext) / 7;\n    }\n\n    // FORMATTING\n\n    addFormatToken('w', ['ww', 2], 'wo', 'week');\n    addFormatToken('W', ['WW', 2], 'Wo', 'isoWeek');\n\n    // ALIASES\n\n    addUnitAlias('week', 'w');\n    addUnitAlias('isoWeek', 'W');\n\n    // PRIORITIES\n\n    addUnitPriority('week', 5);\n    addUnitPriority('isoWeek', 5);\n\n    // PARSING\n\n    addRegexToken('w', match1to2);\n    addRegexToken('ww', match1to2, match2);\n    addRegexToken('W', match1to2);\n    addRegexToken('WW', match1to2, match2);\n\n    addWeekParseToken(\n        ['w', 'ww', 'W', 'WW'],\n        function (input, week, config, token) {\n            week[token.substr(0, 1)] = toInt(input);\n        }\n    );\n\n    // HELPERS\n\n    // LOCALES\n\n    function localeWeek(mom) {\n        return weekOfYear(mom, this._week.dow, this._week.doy).week;\n    }\n\n    var defaultLocaleWeek = {\n        dow: 0, // Sunday is the first day of the week.\n        doy: 6, // The week that contains Jan 6th is the first week of the year.\n    };\n\n    function localeFirstDayOfWeek() {\n        return this._week.dow;\n    }\n\n    function localeFirstDayOfYear() {\n        return this._week.doy;\n    }\n\n    // MOMENTS\n\n    function getSetWeek(input) {\n        var week = this.localeData().week(this);\n        return input == null ? week : this.add((input - week) * 7, 'd');\n    }\n\n    function getSetISOWeek(input) {\n        var week = weekOfYear(this, 1, 4).week;\n        return input == null ? week : this.add((input - week) * 7, 'd');\n    }\n\n    // FORMATTING\n\n    addFormatToken('d', 0, 'do', 'day');\n\n    addFormatToken('dd', 0, 0, function (format) {\n        return this.localeData().weekdaysMin(this, format);\n    });\n\n    addFormatToken('ddd', 0, 0, function (format) {\n        return this.localeData().weekdaysShort(this, format);\n    });\n\n    addFormatToken('dddd', 0, 0, function (format) {\n        return this.localeData().weekdays(this, format);\n    });\n\n    addFormatToken('e', 0, 0, 'weekday');\n    addFormatToken('E', 0, 0, 'isoWeekday');\n\n    // ALIASES\n\n    addUnitAlias('day', 'd');\n    addUnitAlias('weekday', 'e');\n    addUnitAlias('isoWeekday', 'E');\n\n    // PRIORITY\n    addUnitPriority('day', 11);\n    addUnitPriority('weekday', 11);\n    addUnitPriority('isoWeekday', 11);\n\n    // PARSING\n\n    addRegexToken('d', match1to2);\n    addRegexToken('e', match1to2);\n    addRegexToken('E', match1to2);\n    addRegexToken('dd', function (isStrict, locale) {\n        return locale.weekdaysMinRegex(isStrict);\n    });\n    addRegexToken('ddd', function (isStrict, locale) {\n        return locale.weekdaysShortRegex(isStrict);\n    });\n    addRegexToken('dddd', function (isStrict, locale) {\n        return locale.weekdaysRegex(isStrict);\n    });\n\n    addWeekParseToken(['dd', 'ddd', 'dddd'], function (input, week, config, token) {\n        var weekday = config._locale.weekdaysParse(input, token, config._strict);\n        // if we didn't get a weekday name, mark the date as invalid\n        if (weekday != null) {\n            week.d = weekday;\n        } else {\n            getParsingFlags(config).invalidWeekday = input;\n        }\n    });\n\n    addWeekParseToken(['d', 'e', 'E'], function (input, week, config, token) {\n        week[token] = toInt(input);\n    });\n\n    // HELPERS\n\n    function parseWeekday(input, locale) {\n        if (typeof input !== 'string') {\n            return input;\n        }\n\n        if (!isNaN(input)) {\n            return parseInt(input, 10);\n        }\n\n        input = locale.weekdaysParse(input);\n        if (typeof input === 'number') {\n            return input;\n        }\n\n        return null;\n    }\n\n    function parseIsoWeekday(input, locale) {\n        if (typeof input === 'string') {\n            return locale.weekdaysParse(input) % 7 || 7;\n        }\n        return isNaN(input) ? null : input;\n    }\n\n    // LOCALES\n    function shiftWeekdays(ws, n) {\n        return ws.slice(n, 7).concat(ws.slice(0, n));\n    }\n\n    var defaultLocaleWeekdays =\n            'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),\n        defaultLocaleWeekdaysShort = 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n        defaultLocaleWeekdaysMin = 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n        defaultWeekdaysRegex = matchWord,\n        defaultWeekdaysShortRegex = matchWord,\n        defaultWeekdaysMinRegex = matchWord;\n\n    function localeWeekdays(m, format) {\n        var weekdays = isArray(this._weekdays)\n            ? this._weekdays\n            : this._weekdays[\n                  m && m !== true && this._weekdays.isFormat.test(format)\n                      ? 'format'\n                      : 'standalone'\n              ];\n        return m === true\n            ? shiftWeekdays(weekdays, this._week.dow)\n            : m\n            ? weekdays[m.day()]\n            : weekdays;\n    }\n\n    function localeWeekdaysShort(m) {\n        return m === true\n            ? shiftWeekdays(this._weekdaysShort, this._week.dow)\n            : m\n            ? this._weekdaysShort[m.day()]\n            : this._weekdaysShort;\n    }\n\n    function localeWeekdaysMin(m) {\n        return m === true\n            ? shiftWeekdays(this._weekdaysMin, this._week.dow)\n            : m\n            ? this._weekdaysMin[m.day()]\n            : this._weekdaysMin;\n    }\n\n    function handleStrictParse$1(weekdayName, format, strict) {\n        var i,\n            ii,\n            mom,\n            llc = weekdayName.toLocaleLowerCase();\n        if (!this._weekdaysParse) {\n            this._weekdaysParse = [];\n            this._shortWeekdaysParse = [];\n            this._minWeekdaysParse = [];\n\n            for (i = 0; i < 7; ++i) {\n                mom = createUTC([2000, 1]).day(i);\n                this._minWeekdaysParse[i] = this.weekdaysMin(\n                    mom,\n                    ''\n                ).toLocaleLowerCase();\n                this._shortWeekdaysParse[i] = this.weekdaysShort(\n                    mom,\n                    ''\n                ).toLocaleLowerCase();\n                this._weekdaysParse[i] = this.weekdays(mom, '').toLocaleLowerCase();\n            }\n        }\n\n        if (strict) {\n            if (format === 'dddd') {\n                ii = indexOf.call(this._weekdaysParse, llc);\n                return ii !== -1 ? ii : null;\n            } else if (format === 'ddd') {\n                ii = indexOf.call(this._shortWeekdaysParse, llc);\n                return ii !== -1 ? ii : null;\n            } else {\n                ii = indexOf.call(this._minWeekdaysParse, llc);\n                return ii !== -1 ? ii : null;\n            }\n        } else {\n            if (format === 'dddd') {\n                ii = indexOf.call(this._weekdaysParse, llc);\n                if (ii !== -1) {\n                    return ii;\n                }\n                ii = indexOf.call(this._shortWeekdaysParse, llc);\n                if (ii !== -1) {\n                    return ii;\n                }\n                ii = indexOf.call(this._minWeekdaysParse, llc);\n                return ii !== -1 ? ii : null;\n            } else if (format === 'ddd') {\n                ii = indexOf.call(this._shortWeekdaysParse, llc);\n                if (ii !== -1) {\n                    return ii;\n                }\n                ii = indexOf.call(this._weekdaysParse, llc);\n                if (ii !== -1) {\n                    return ii;\n                }\n                ii = indexOf.call(this._minWeekdaysParse, llc);\n                return ii !== -1 ? ii : null;\n            } else {\n                ii = indexOf.call(this._minWeekdaysParse, llc);\n                if (ii !== -1) {\n                    return ii;\n                }\n                ii = indexOf.call(this._weekdaysParse, llc);\n                if (ii !== -1) {\n                    return ii;\n                }\n                ii = indexOf.call(this._shortWeekdaysParse, llc);\n                return ii !== -1 ? ii : null;\n            }\n        }\n    }\n\n    function localeWeekdaysParse(weekdayName, format, strict) {\n        var i, mom, regex;\n\n        if (this._weekdaysParseExact) {\n            return handleStrictParse$1.call(this, weekdayName, format, strict);\n        }\n\n        if (!this._weekdaysParse) {\n            this._weekdaysParse = [];\n            this._minWeekdaysParse = [];\n            this._shortWeekdaysParse = [];\n            this._fullWeekdaysParse = [];\n        }\n\n        for (i = 0; i < 7; i++) {\n            // make the regex if we don't have it already\n\n            mom = createUTC([2000, 1]).day(i);\n            if (strict && !this._fullWeekdaysParse[i]) {\n                this._fullWeekdaysParse[i] = new RegExp(\n                    '^' + this.weekdays(mom, '').replace('.', '\\\\.?') + '$',\n                    'i'\n                );\n                this._shortWeekdaysParse[i] = new RegExp(\n                    '^' + this.weekdaysShort(mom, '').replace('.', '\\\\.?') + '$',\n                    'i'\n                );\n                this._minWeekdaysParse[i] = new RegExp(\n                    '^' + this.weekdaysMin(mom, '').replace('.', '\\\\.?') + '$',\n                    'i'\n                );\n            }\n            if (!this._weekdaysParse[i]) {\n                regex =\n                    '^' +\n                    this.weekdays(mom, '') +\n                    '|^' +\n                    this.weekdaysShort(mom, '') +\n                    '|^' +\n                    this.weekdaysMin(mom, '');\n                this._weekdaysParse[i] = new RegExp(regex.replace('.', ''), 'i');\n            }\n            // test the regex\n            if (\n                strict &&\n                format === 'dddd' &&\n                this._fullWeekdaysParse[i].test(weekdayName)\n            ) {\n                return i;\n            } else if (\n                strict &&\n                format === 'ddd' &&\n                this._shortWeekdaysParse[i].test(weekdayName)\n            ) {\n                return i;\n            } else if (\n                strict &&\n                format === 'dd' &&\n                this._minWeekdaysParse[i].test(weekdayName)\n            ) {\n                return i;\n            } else if (!strict && this._weekdaysParse[i].test(weekdayName)) {\n                return i;\n            }\n        }\n    }\n\n    // MOMENTS\n\n    function getSetDayOfWeek(input) {\n        if (!this.isValid()) {\n            return input != null ? this : NaN;\n        }\n        var day = this._isUTC ? this._d.getUTCDay() : this._d.getDay();\n        if (input != null) {\n            input = parseWeekday(input, this.localeData());\n            return this.add(input - day, 'd');\n        } else {\n            return day;\n        }\n    }\n\n    function getSetLocaleDayOfWeek(input) {\n        if (!this.isValid()) {\n            return input != null ? this : NaN;\n        }\n        var weekday = (this.day() + 7 - this.localeData()._week.dow) % 7;\n        return input == null ? weekday : this.add(input - weekday, 'd');\n    }\n\n    function getSetISODayOfWeek(input) {\n        if (!this.isValid()) {\n            return input != null ? this : NaN;\n        }\n\n        // behaves the same as moment#day except\n        // as a getter, returns 7 instead of 0 (1-7 range instead of 0-6)\n        // as a setter, sunday should belong to the previous week.\n\n        if (input != null) {\n            var weekday = parseIsoWeekday(input, this.localeData());\n            return this.day(this.day() % 7 ? weekday : weekday - 7);\n        } else {\n            return this.day() || 7;\n        }\n    }\n\n    function weekdaysRegex(isStrict) {\n        if (this._weekdaysParseExact) {\n            if (!hasOwnProp(this, '_weekdaysRegex')) {\n                computeWeekdaysParse.call(this);\n            }\n            if (isStrict) {\n                return this._weekdaysStrictRegex;\n            } else {\n                return this._weekdaysRegex;\n            }\n        } else {\n            if (!hasOwnProp(this, '_weekdaysRegex')) {\n                this._weekdaysRegex = defaultWeekdaysRegex;\n            }\n            return this._weekdaysStrictRegex && isStrict\n                ? this._weekdaysStrictRegex\n                : this._weekdaysRegex;\n        }\n    }\n\n    function weekdaysShortRegex(isStrict) {\n        if (this._weekdaysParseExact) {\n            if (!hasOwnProp(this, '_weekdaysRegex')) {\n                computeWeekdaysParse.call(this);\n            }\n            if (isStrict) {\n                return this._weekdaysShortStrictRegex;\n            } else {\n                return this._weekdaysShortRegex;\n            }\n        } else {\n            if (!hasOwnProp(this, '_weekdaysShortRegex')) {\n                this._weekdaysShortRegex = defaultWeekdaysShortRegex;\n            }\n            return this._weekdaysShortStrictRegex && isStrict\n                ? this._weekdaysShortStrictRegex\n                : this._weekdaysShortRegex;\n        }\n    }\n\n    function weekdaysMinRegex(isStrict) {\n        if (this._weekdaysParseExact) {\n            if (!hasOwnProp(this, '_weekdaysRegex')) {\n                computeWeekdaysParse.call(this);\n            }\n            if (isStrict) {\n                return this._weekdaysMinStrictRegex;\n            } else {\n                return this._weekdaysMinRegex;\n            }\n        } else {\n            if (!hasOwnProp(this, '_weekdaysMinRegex')) {\n                this._weekdaysMinRegex = defaultWeekdaysMinRegex;\n            }\n            return this._weekdaysMinStrictRegex && isStrict\n                ? this._weekdaysMinStrictRegex\n                : this._weekdaysMinRegex;\n        }\n    }\n\n    function computeWeekdaysParse() {\n        function cmpLenRev(a, b) {\n            return b.length - a.length;\n        }\n\n        var minPieces = [],\n            shortPieces = [],\n            longPieces = [],\n            mixedPieces = [],\n            i,\n            mom,\n            minp,\n            shortp,\n            longp;\n        for (i = 0; i < 7; i++) {\n            // make the regex if we don't have it already\n            mom = createUTC([2000, 1]).day(i);\n            minp = regexEscape(this.weekdaysMin(mom, ''));\n            shortp = regexEscape(this.weekdaysShort(mom, ''));\n            longp = regexEscape(this.weekdays(mom, ''));\n            minPieces.push(minp);\n            shortPieces.push(shortp);\n            longPieces.push(longp);\n            mixedPieces.push(minp);\n            mixedPieces.push(shortp);\n            mixedPieces.push(longp);\n        }\n        // Sorting makes sure if one weekday (or abbr) is a prefix of another it\n        // will match the longer piece.\n        minPieces.sort(cmpLenRev);\n        shortPieces.sort(cmpLenRev);\n        longPieces.sort(cmpLenRev);\n        mixedPieces.sort(cmpLenRev);\n\n        this._weekdaysRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n        this._weekdaysShortRegex = this._weekdaysRegex;\n        this._weekdaysMinRegex = this._weekdaysRegex;\n\n        this._weekdaysStrictRegex = new RegExp(\n            '^(' + longPieces.join('|') + ')',\n            'i'\n        );\n        this._weekdaysShortStrictRegex = new RegExp(\n            '^(' + shortPieces.join('|') + ')',\n            'i'\n        );\n        this._weekdaysMinStrictRegex = new RegExp(\n            '^(' + minPieces.join('|') + ')',\n            'i'\n        );\n    }\n\n    // FORMATTING\n\n    function hFormat() {\n        return this.hours() % 12 || 12;\n    }\n\n    function kFormat() {\n        return this.hours() || 24;\n    }\n\n    addFormatToken('H', ['HH', 2], 0, 'hour');\n    addFormatToken('h', ['hh', 2], 0, hFormat);\n    addFormatToken('k', ['kk', 2], 0, kFormat);\n\n    addFormatToken('hmm', 0, 0, function () {\n        return '' + hFormat.apply(this) + zeroFill(this.minutes(), 2);\n    });\n\n    addFormatToken('hmmss', 0, 0, function () {\n        return (\n            '' +\n            hFormat.apply(this) +\n            zeroFill(this.minutes(), 2) +\n            zeroFill(this.seconds(), 2)\n        );\n    });\n\n    addFormatToken('Hmm', 0, 0, function () {\n        return '' + this.hours() + zeroFill(this.minutes(), 2);\n    });\n\n    addFormatToken('Hmmss', 0, 0, function () {\n        return (\n            '' +\n            this.hours() +\n            zeroFill(this.minutes(), 2) +\n            zeroFill(this.seconds(), 2)\n        );\n    });\n\n    function meridiem(token, lowercase) {\n        addFormatToken(token, 0, 0, function () {\n            return this.localeData().meridiem(\n                this.hours(),\n                this.minutes(),\n                lowercase\n            );\n        });\n    }\n\n    meridiem('a', true);\n    meridiem('A', false);\n\n    // ALIASES\n\n    addUnitAlias('hour', 'h');\n\n    // PRIORITY\n    addUnitPriority('hour', 13);\n\n    // PARSING\n\n    function matchMeridiem(isStrict, locale) {\n        return locale._meridiemParse;\n    }\n\n    addRegexToken('a', matchMeridiem);\n    addRegexToken('A', matchMeridiem);\n    addRegexToken('H', match1to2);\n    addRegexToken('h', match1to2);\n    addRegexToken('k', match1to2);\n    addRegexToken('HH', match1to2, match2);\n    addRegexToken('hh', match1to2, match2);\n    addRegexToken('kk', match1to2, match2);\n\n    addRegexToken('hmm', match3to4);\n    addRegexToken('hmmss', match5to6);\n    addRegexToken('Hmm', match3to4);\n    addRegexToken('Hmmss', match5to6);\n\n    addParseToken(['H', 'HH'], HOUR);\n    addParseToken(['k', 'kk'], function (input, array, config) {\n        var kInput = toInt(input);\n        array[HOUR] = kInput === 24 ? 0 : kInput;\n    });\n    addParseToken(['a', 'A'], function (input, array, config) {\n        config._isPm = config._locale.isPM(input);\n        config._meridiem = input;\n    });\n    addParseToken(['h', 'hh'], function (input, array, config) {\n        array[HOUR] = toInt(input);\n        getParsingFlags(config).bigHour = true;\n    });\n    addParseToken('hmm', function (input, array, config) {\n        var pos = input.length - 2;\n        array[HOUR] = toInt(input.substr(0, pos));\n        array[MINUTE] = toInt(input.substr(pos));\n        getParsingFlags(config).bigHour = true;\n    });\n    addParseToken('hmmss', function (input, array, config) {\n        var pos1 = input.length - 4,\n            pos2 = input.length - 2;\n        array[HOUR] = toInt(input.substr(0, pos1));\n        array[MINUTE] = toInt(input.substr(pos1, 2));\n        array[SECOND] = toInt(input.substr(pos2));\n        getParsingFlags(config).bigHour = true;\n    });\n    addParseToken('Hmm', function (input, array, config) {\n        var pos = input.length - 2;\n        array[HOUR] = toInt(input.substr(0, pos));\n        array[MINUTE] = toInt(input.substr(pos));\n    });\n    addParseToken('Hmmss', function (input, array, config) {\n        var pos1 = input.length - 4,\n            pos2 = input.length - 2;\n        array[HOUR] = toInt(input.substr(0, pos1));\n        array[MINUTE] = toInt(input.substr(pos1, 2));\n        array[SECOND] = toInt(input.substr(pos2));\n    });\n\n    // LOCALES\n\n    function localeIsPM(input) {\n        // IE8 Quirks Mode & IE7 Standards Mode do not allow accessing strings like arrays\n        // Using charAt should be more compatible.\n        return (input + '').toLowerCase().charAt(0) === 'p';\n    }\n\n    var defaultLocaleMeridiemParse = /[ap]\\.?m?\\.?/i,\n        // Setting the hour should keep the time, because the user explicitly\n        // specified which hour they want. So trying to maintain the same hour (in\n        // a new timezone) makes sense. Adding/subtracting hours does not follow\n        // this rule.\n        getSetHour = makeGetSet('Hours', true);\n\n    function localeMeridiem(hours, minutes, isLower) {\n        if (hours > 11) {\n            return isLower ? 'pm' : 'PM';\n        } else {\n            return isLower ? 'am' : 'AM';\n        }\n    }\n\n    var baseConfig = {\n        calendar: defaultCalendar,\n        longDateFormat: defaultLongDateFormat,\n        invalidDate: defaultInvalidDate,\n        ordinal: defaultOrdinal,\n        dayOfMonthOrdinalParse: defaultDayOfMonthOrdinalParse,\n        relativeTime: defaultRelativeTime,\n\n        months: defaultLocaleMonths,\n        monthsShort: defaultLocaleMonthsShort,\n\n        week: defaultLocaleWeek,\n\n        weekdays: defaultLocaleWeekdays,\n        weekdaysMin: defaultLocaleWeekdaysMin,\n        weekdaysShort: defaultLocaleWeekdaysShort,\n\n        meridiemParse: defaultLocaleMeridiemParse,\n    };\n\n    // internal storage for locale config files\n    var locales = {},\n        localeFamilies = {},\n        globalLocale;\n\n    function commonPrefix(arr1, arr2) {\n        var i,\n            minl = Math.min(arr1.length, arr2.length);\n        for (i = 0; i < minl; i += 1) {\n            if (arr1[i] !== arr2[i]) {\n                return i;\n            }\n        }\n        return minl;\n    }\n\n    function normalizeLocale(key) {\n        return key ? key.toLowerCase().replace('_', '-') : key;\n    }\n\n    // pick the locale from the array\n    // try ['en-au', 'en-gb'] as 'en-au', 'en-gb', 'en', as in move through the list trying each\n    // substring from most specific to least, but move to the next array item if it's a more specific variant than the current root\n    function chooseLocale(names) {\n        var i = 0,\n            j,\n            next,\n            locale,\n            split;\n\n        while (i < names.length) {\n            split = normalizeLocale(names[i]).split('-');\n            j = split.length;\n            next = normalizeLocale(names[i + 1]);\n            next = next ? next.split('-') : null;\n            while (j > 0) {\n                locale = loadLocale(split.slice(0, j).join('-'));\n                if (locale) {\n                    return locale;\n                }\n                if (\n                    next &&\n                    next.length >= j &&\n                    commonPrefix(split, next) >= j - 1\n                ) {\n                    //the next array item is better than a shallower substring of this one\n                    break;\n                }\n                j--;\n            }\n            i++;\n        }\n        return globalLocale;\n    }\n\n    function isLocaleNameSane(name) {\n        // Prevent names that look like filesystem paths, i.e contain '/' or '\\'\n        return name.match('^[^/\\\\\\\\]*$') != null;\n    }\n\n    function loadLocale(name) {\n        var oldLocale = null,\n            aliasedRequire;\n        // TODO: Find a better way to register and load all the locales in Node\n        if (\n            locales[name] === undefined &&\n            typeof module !== 'undefined' &&\n            module &&\n            module.exports &&\n            isLocaleNameSane(name)\n        ) {\n            try {\n                oldLocale = globalLocale._abbr;\n                aliasedRequire = require;\n                aliasedRequire('./locale/' + name);\n                getSetGlobalLocale(oldLocale);\n            } catch (e) {\n                // mark as not found to avoid repeating expensive file require call causing high CPU\n                // when trying to find en-US, en_US, en-us for every format call\n                locales[name] = null; // null means not found\n            }\n        }\n        return locales[name];\n    }\n\n    // This function will load locale and then set the global locale.  If\n    // no arguments are passed in, it will simply return the current global\n    // locale key.\n    function getSetGlobalLocale(key, values) {\n        var data;\n        if (key) {\n            if (isUndefined(values)) {\n                data = getLocale(key);\n            } else {\n                data = defineLocale(key, values);\n            }\n\n            if (data) {\n                // moment.duration._locale = moment._locale = data;\n                globalLocale = data;\n            } else {\n                if (typeof console !== 'undefined' && console.warn) {\n                    //warn user if arguments are passed but the locale could not be set\n                    console.warn(\n                        'Locale ' + key + ' not found. Did you forget to load it?'\n                    );\n                }\n            }\n        }\n\n        return globalLocale._abbr;\n    }\n\n    function defineLocale(name, config) {\n        if (config !== null) {\n            var locale,\n                parentConfig = baseConfig;\n            config.abbr = name;\n            if (locales[name] != null) {\n                deprecateSimple(\n                    'defineLocaleOverride',\n                    'use moment.updateLocale(localeName, config) to change ' +\n                        'an existing locale. moment.defineLocale(localeName, ' +\n                        'config) should only be used for creating a new locale ' +\n                        'See http://momentjs.com/guides/#/warnings/define-locale/ for more info.'\n                );\n                parentConfig = locales[name]._config;\n            } else if (config.parentLocale != null) {\n                if (locales[config.parentLocale] != null) {\n                    parentConfig = locales[config.parentLocale]._config;\n                } else {\n                    locale = loadLocale(config.parentLocale);\n                    if (locale != null) {\n                        parentConfig = locale._config;\n                    } else {\n                        if (!localeFamilies[config.parentLocale]) {\n                            localeFamilies[config.parentLocale] = [];\n                        }\n                        localeFamilies[config.parentLocale].push({\n                            name: name,\n                            config: config,\n                        });\n                        return null;\n                    }\n                }\n            }\n            locales[name] = new Locale(mergeConfigs(parentConfig, config));\n\n            if (localeFamilies[name]) {\n                localeFamilies[name].forEach(function (x) {\n                    defineLocale(x.name, x.config);\n                });\n            }\n\n            // backwards compat for now: also set the locale\n            // make sure we set the locale AFTER all child locales have been\n            // created, so we won't end up with the child locale set.\n            getSetGlobalLocale(name);\n\n            return locales[name];\n        } else {\n            // useful for testing\n            delete locales[name];\n            return null;\n        }\n    }\n\n    function updateLocale(name, config) {\n        if (config != null) {\n            var locale,\n                tmpLocale,\n                parentConfig = baseConfig;\n\n            if (locales[name] != null && locales[name].parentLocale != null) {\n                // Update existing child locale in-place to avoid memory-leaks\n                locales[name].set(mergeConfigs(locales[name]._config, config));\n            } else {\n                // MERGE\n                tmpLocale = loadLocale(name);\n                if (tmpLocale != null) {\n                    parentConfig = tmpLocale._config;\n                }\n                config = mergeConfigs(parentConfig, config);\n                if (tmpLocale == null) {\n                    // updateLocale is called for creating a new locale\n                    // Set abbr so it will have a name (getters return\n                    // undefined otherwise).\n                    config.abbr = name;\n                }\n                locale = new Locale(config);\n                locale.parentLocale = locales[name];\n                locales[name] = locale;\n            }\n\n            // backwards compat for now: also set the locale\n            getSetGlobalLocale(name);\n        } else {\n            // pass null for config to unupdate, useful for tests\n            if (locales[name] != null) {\n                if (locales[name].parentLocale != null) {\n                    locales[name] = locales[name].parentLocale;\n                    if (name === getSetGlobalLocale()) {\n                        getSetGlobalLocale(name);\n                    }\n                } else if (locales[name] != null) {\n                    delete locales[name];\n                }\n            }\n        }\n        return locales[name];\n    }\n\n    // returns locale data\n    function getLocale(key) {\n        var locale;\n\n        if (key && key._locale && key._locale._abbr) {\n            key = key._locale._abbr;\n        }\n\n        if (!key) {\n            return globalLocale;\n        }\n\n        if (!isArray(key)) {\n            //short-circuit everything else\n            locale = loadLocale(key);\n            if (locale) {\n                return locale;\n            }\n            key = [key];\n        }\n\n        return chooseLocale(key);\n    }\n\n    function listLocales() {\n        return keys(locales);\n    }\n\n    function checkOverflow(m) {\n        var overflow,\n            a = m._a;\n\n        if (a && getParsingFlags(m).overflow === -2) {\n            overflow =\n                a[MONTH] < 0 || a[MONTH] > 11\n                    ? MONTH\n                    : a[DATE] < 1 || a[DATE] > daysInMonth(a[YEAR], a[MONTH])\n                    ? DATE\n                    : a[HOUR] < 0 ||\n                      a[HOUR] > 24 ||\n                      (a[HOUR] === 24 &&\n                          (a[MINUTE] !== 0 ||\n                              a[SECOND] !== 0 ||\n                              a[MILLISECOND] !== 0))\n                    ? HOUR\n                    : a[MINUTE] < 0 || a[MINUTE] > 59\n                    ? MINUTE\n                    : a[SECOND] < 0 || a[SECOND] > 59\n                    ? SECOND\n                    : a[MILLISECOND] < 0 || a[MILLISECOND] > 999\n                    ? MILLISECOND\n                    : -1;\n\n            if (\n                getParsingFlags(m)._overflowDayOfYear &&\n                (overflow < YEAR || overflow > DATE)\n            ) {\n                overflow = DATE;\n            }\n            if (getParsingFlags(m)._overflowWeeks && overflow === -1) {\n                overflow = WEEK;\n            }\n            if (getParsingFlags(m)._overflowWeekday && overflow === -1) {\n                overflow = WEEKDAY;\n            }\n\n            getParsingFlags(m).overflow = overflow;\n        }\n\n        return m;\n    }\n\n    // iso 8601 regex\n    // 0000-00-00 0000-W00 or 0000-W00-0 + T + 00 or 00:00 or 00:00:00 or 00:00:00.000 + +00:00 or +0000 or +00)\n    var extendedIsoRegex =\n            /^\\s*((?:[+-]\\d{6}|\\d{4})-(?:\\d\\d-\\d\\d|W\\d\\d-\\d|W\\d\\d|\\d\\d\\d|\\d\\d))(?:(T| )(\\d\\d(?::\\d\\d(?::\\d\\d(?:[.,]\\d+)?)?)?)([+-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?$/,\n        basicIsoRegex =\n            /^\\s*((?:[+-]\\d{6}|\\d{4})(?:\\d\\d\\d\\d|W\\d\\d\\d|W\\d\\d|\\d\\d\\d|\\d\\d|))(?:(T| )(\\d\\d(?:\\d\\d(?:\\d\\d(?:[.,]\\d+)?)?)?)([+-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?$/,\n        tzRegex = /Z|[+-]\\d\\d(?::?\\d\\d)?/,\n        isoDates = [\n            ['YYYYYY-MM-DD', /[+-]\\d{6}-\\d\\d-\\d\\d/],\n            ['YYYY-MM-DD', /\\d{4}-\\d\\d-\\d\\d/],\n            ['GGGG-[W]WW-E', /\\d{4}-W\\d\\d-\\d/],\n            ['GGGG-[W]WW', /\\d{4}-W\\d\\d/, false],\n            ['YYYY-DDD', /\\d{4}-\\d{3}/],\n            ['YYYY-MM', /\\d{4}-\\d\\d/, false],\n            ['YYYYYYMMDD', /[+-]\\d{10}/],\n            ['YYYYMMDD', /\\d{8}/],\n            ['GGGG[W]WWE', /\\d{4}W\\d{3}/],\n            ['GGGG[W]WW', /\\d{4}W\\d{2}/, false],\n            ['YYYYDDD', /\\d{7}/],\n            ['YYYYMM', /\\d{6}/, false],\n            ['YYYY', /\\d{4}/, false],\n        ],\n        // iso time formats and regexes\n        isoTimes = [\n            ['HH:mm:ss.SSSS', /\\d\\d:\\d\\d:\\d\\d\\.\\d+/],\n            ['HH:mm:ss,SSSS', /\\d\\d:\\d\\d:\\d\\d,\\d+/],\n            ['HH:mm:ss', /\\d\\d:\\d\\d:\\d\\d/],\n            ['HH:mm', /\\d\\d:\\d\\d/],\n            ['HHmmss.SSSS', /\\d\\d\\d\\d\\d\\d\\.\\d+/],\n            ['HHmmss,SSSS', /\\d\\d\\d\\d\\d\\d,\\d+/],\n            ['HHmmss', /\\d\\d\\d\\d\\d\\d/],\n            ['HHmm', /\\d\\d\\d\\d/],\n            ['HH', /\\d\\d/],\n        ],\n        aspNetJsonRegex = /^\\/?Date\\((-?\\d+)/i,\n        // RFC 2822 regex: For details see https://tools.ietf.org/html/rfc2822#section-3.3\n        rfc2822 =\n            /^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),?\\s)?(\\d{1,2})\\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\\s(\\d{2,4})\\s(\\d\\d):(\\d\\d)(?::(\\d\\d))?\\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|([+-]\\d{4}))$/,\n        obsOffsets = {\n            UT: 0,\n            GMT: 0,\n            EDT: -4 * 60,\n            EST: -5 * 60,\n            CDT: -5 * 60,\n            CST: -6 * 60,\n            MDT: -6 * 60,\n            MST: -7 * 60,\n            PDT: -7 * 60,\n            PST: -8 * 60,\n        };\n\n    // date from iso format\n    function configFromISO(config) {\n        var i,\n            l,\n            string = config._i,\n            match = extendedIsoRegex.exec(string) || basicIsoRegex.exec(string),\n            allowTime,\n            dateFormat,\n            timeFormat,\n            tzFormat,\n            isoDatesLen = isoDates.length,\n            isoTimesLen = isoTimes.length;\n\n        if (match) {\n            getParsingFlags(config).iso = true;\n            for (i = 0, l = isoDatesLen; i < l; i++) {\n                if (isoDates[i][1].exec(match[1])) {\n                    dateFormat = isoDates[i][0];\n                    allowTime = isoDates[i][2] !== false;\n                    break;\n                }\n            }\n            if (dateFormat == null) {\n                config._isValid = false;\n                return;\n            }\n            if (match[3]) {\n                for (i = 0, l = isoTimesLen; i < l; i++) {\n                    if (isoTimes[i][1].exec(match[3])) {\n                        // match[2] should be 'T' or space\n                        timeFormat = (match[2] || ' ') + isoTimes[i][0];\n                        break;\n                    }\n                }\n                if (timeFormat == null) {\n                    config._isValid = false;\n                    return;\n                }\n            }\n            if (!allowTime && timeFormat != null) {\n                config._isValid = false;\n                return;\n            }\n            if (match[4]) {\n                if (tzRegex.exec(match[4])) {\n                    tzFormat = 'Z';\n                } else {\n                    config._isValid = false;\n                    return;\n                }\n            }\n            config._f = dateFormat + (timeFormat || '') + (tzFormat || '');\n            configFromStringAndFormat(config);\n        } else {\n            config._isValid = false;\n        }\n    }\n\n    function extractFromRFC2822Strings(\n        yearStr,\n        monthStr,\n        dayStr,\n        hourStr,\n        minuteStr,\n        secondStr\n    ) {\n        var result = [\n            untruncateYear(yearStr),\n            defaultLocaleMonthsShort.indexOf(monthStr),\n            parseInt(dayStr, 10),\n            parseInt(hourStr, 10),\n            parseInt(minuteStr, 10),\n        ];\n\n        if (secondStr) {\n            result.push(parseInt(secondStr, 10));\n        }\n\n        return result;\n    }\n\n    function untruncateYear(yearStr) {\n        var year = parseInt(yearStr, 10);\n        if (year <= 49) {\n            return 2000 + year;\n        } else if (year <= 999) {\n            return 1900 + year;\n        }\n        return year;\n    }\n\n    function preprocessRFC2822(s) {\n        // Remove comments and folding whitespace and replace multiple-spaces with a single space\n        return s\n            .replace(/\\([^()]*\\)|[\\n\\t]/g, ' ')\n            .replace(/(\\s\\s+)/g, ' ')\n            .replace(/^\\s\\s*/, '')\n            .replace(/\\s\\s*$/, '');\n    }\n\n    function checkWeekday(weekdayStr, parsedInput, config) {\n        if (weekdayStr) {\n            // TODO: Replace the vanilla JS Date object with an independent day-of-week check.\n            var weekdayProvided = defaultLocaleWeekdaysShort.indexOf(weekdayStr),\n                weekdayActual = new Date(\n                    parsedInput[0],\n                    parsedInput[1],\n                    parsedInput[2]\n                ).getDay();\n            if (weekdayProvided !== weekdayActual) {\n                getParsingFlags(config).weekdayMismatch = true;\n                config._isValid = false;\n                return false;\n            }\n        }\n        return true;\n    }\n\n    function calculateOffset(obsOffset, militaryOffset, numOffset) {\n        if (obsOffset) {\n            return obsOffsets[obsOffset];\n        } else if (militaryOffset) {\n            // the only allowed military tz is Z\n            return 0;\n        } else {\n            var hm = parseInt(numOffset, 10),\n                m = hm % 100,\n                h = (hm - m) / 100;\n            return h * 60 + m;\n        }\n    }\n\n    // date and time from ref 2822 format\n    function configFromRFC2822(config) {\n        var match = rfc2822.exec(preprocessRFC2822(config._i)),\n            parsedArray;\n        if (match) {\n            parsedArray = extractFromRFC2822Strings(\n                match[4],\n                match[3],\n                match[2],\n                match[5],\n                match[6],\n                match[7]\n            );\n            if (!checkWeekday(match[1], parsedArray, config)) {\n                return;\n            }\n\n            config._a = parsedArray;\n            config._tzm = calculateOffset(match[8], match[9], match[10]);\n\n            config._d = createUTCDate.apply(null, config._a);\n            config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);\n\n            getParsingFlags(config).rfc2822 = true;\n        } else {\n            config._isValid = false;\n        }\n    }\n\n    // date from 1) ASP.NET, 2) ISO, 3) RFC 2822 formats, or 4) optional fallback if parsing isn't strict\n    function configFromString(config) {\n        var matched = aspNetJsonRegex.exec(config._i);\n        if (matched !== null) {\n            config._d = new Date(+matched[1]);\n            return;\n        }\n\n        configFromISO(config);\n        if (config._isValid === false) {\n            delete config._isValid;\n        } else {\n            return;\n        }\n\n        configFromRFC2822(config);\n        if (config._isValid === false) {\n            delete config._isValid;\n        } else {\n            return;\n        }\n\n        if (config._strict) {\n            config._isValid = false;\n        } else {\n            // Final attempt, use Input Fallback\n            hooks.createFromInputFallback(config);\n        }\n    }\n\n    hooks.createFromInputFallback = deprecate(\n        'value provided is not in a recognized RFC2822 or ISO format. moment construction falls back to js Date(), ' +\n            'which is not reliable across all browsers and versions. Non RFC2822/ISO date formats are ' +\n            'discouraged. Please refer to http://momentjs.com/guides/#/warnings/js-date/ for more info.',\n        function (config) {\n            config._d = new Date(config._i + (config._useUTC ? ' UTC' : ''));\n        }\n    );\n\n    // Pick the first defined of two or three arguments.\n    function defaults(a, b, c) {\n        if (a != null) {\n            return a;\n        }\n        if (b != null) {\n            return b;\n        }\n        return c;\n    }\n\n    function currentDateArray(config) {\n        // hooks is actually the exported moment object\n        var nowValue = new Date(hooks.now());\n        if (config._useUTC) {\n            return [\n                nowValue.getUTCFullYear(),\n                nowValue.getUTCMonth(),\n                nowValue.getUTCDate(),\n            ];\n        }\n        return [nowValue.getFullYear(), nowValue.getMonth(), nowValue.getDate()];\n    }\n\n    // convert an array to a date.\n    // the array should mirror the parameters below\n    // note: all values past the year are optional and will default to the lowest possible value.\n    // [year, month, day , hour, minute, second, millisecond]\n    function configFromArray(config) {\n        var i,\n            date,\n            input = [],\n            currentDate,\n            expectedWeekday,\n            yearToUse;\n\n        if (config._d) {\n            return;\n        }\n\n        currentDate = currentDateArray(config);\n\n        //compute day of the year from weeks and weekdays\n        if (config._w && config._a[DATE] == null && config._a[MONTH] == null) {\n            dayOfYearFromWeekInfo(config);\n        }\n\n        //if the day of the year is set, figure out what it is\n        if (config._dayOfYear != null) {\n            yearToUse = defaults(config._a[YEAR], currentDate[YEAR]);\n\n            if (\n                config._dayOfYear > daysInYear(yearToUse) ||\n                config._dayOfYear === 0\n            ) {\n                getParsingFlags(config)._overflowDayOfYear = true;\n            }\n\n            date = createUTCDate(yearToUse, 0, config._dayOfYear);\n            config._a[MONTH] = date.getUTCMonth();\n            config._a[DATE] = date.getUTCDate();\n        }\n\n        // Default to current date.\n        // * if no year, month, day of month are given, default to today\n        // * if day of month is given, default month and year\n        // * if month is given, default only year\n        // * if year is given, don't default anything\n        for (i = 0; i < 3 && config._a[i] == null; ++i) {\n            config._a[i] = input[i] = currentDate[i];\n        }\n\n        // Zero out whatever was not defaulted, including time\n        for (; i < 7; i++) {\n            config._a[i] = input[i] =\n                config._a[i] == null ? (i === 2 ? 1 : 0) : config._a[i];\n        }\n\n        // Check for 24:00:00.000\n        if (\n            config._a[HOUR] === 24 &&\n            config._a[MINUTE] === 0 &&\n            config._a[SECOND] === 0 &&\n            config._a[MILLISECOND] === 0\n        ) {\n            config._nextDay = true;\n            config._a[HOUR] = 0;\n        }\n\n        config._d = (config._useUTC ? createUTCDate : createDate).apply(\n            null,\n            input\n        );\n        expectedWeekday = config._useUTC\n            ? config._d.getUTCDay()\n            : config._d.getDay();\n\n        // Apply timezone offset from input. The actual utcOffset can be changed\n        // with parseZone.\n        if (config._tzm != null) {\n            config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);\n        }\n\n        if (config._nextDay) {\n            config._a[HOUR] = 24;\n        }\n\n        // check for mismatching day of week\n        if (\n            config._w &&\n            typeof config._w.d !== 'undefined' &&\n            config._w.d !== expectedWeekday\n        ) {\n            getParsingFlags(config).weekdayMismatch = true;\n        }\n    }\n\n    function dayOfYearFromWeekInfo(config) {\n        var w, weekYear, week, weekday, dow, doy, temp, weekdayOverflow, curWeek;\n\n        w = config._w;\n        if (w.GG != null || w.W != null || w.E != null) {\n            dow = 1;\n            doy = 4;\n\n            // TODO: We need to take the current isoWeekYear, but that depends on\n            // how we interpret now (local, utc, fixed offset). So create\n            // a now version of current config (take local/utc/offset flags, and\n            // create now).\n            weekYear = defaults(\n                w.GG,\n                config._a[YEAR],\n                weekOfYear(createLocal(), 1, 4).year\n            );\n            week = defaults(w.W, 1);\n            weekday = defaults(w.E, 1);\n            if (weekday < 1 || weekday > 7) {\n                weekdayOverflow = true;\n            }\n        } else {\n            dow = config._locale._week.dow;\n            doy = config._locale._week.doy;\n\n            curWeek = weekOfYear(createLocal(), dow, doy);\n\n            weekYear = defaults(w.gg, config._a[YEAR], curWeek.year);\n\n            // Default to current week.\n            week = defaults(w.w, curWeek.week);\n\n            if (w.d != null) {\n                // weekday -- low day numbers are considered next week\n                weekday = w.d;\n                if (weekday < 0 || weekday > 6) {\n                    weekdayOverflow = true;\n                }\n            } else if (w.e != null) {\n                // local weekday -- counting starts from beginning of week\n                weekday = w.e + dow;\n                if (w.e < 0 || w.e > 6) {\n                    weekdayOverflow = true;\n                }\n            } else {\n                // default to beginning of week\n                weekday = dow;\n            }\n        }\n        if (week < 1 || week > weeksInYear(weekYear, dow, doy)) {\n            getParsingFlags(config)._overflowWeeks = true;\n        } else if (weekdayOverflow != null) {\n            getParsingFlags(config)._overflowWeekday = true;\n        } else {\n            temp = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy);\n            config._a[YEAR] = temp.year;\n            config._dayOfYear = temp.dayOfYear;\n        }\n    }\n\n    // constant that refers to the ISO standard\n    hooks.ISO_8601 = function () {};\n\n    // constant that refers to the RFC 2822 form\n    hooks.RFC_2822 = function () {};\n\n    // date from string and format string\n    function configFromStringAndFormat(config) {\n        // TODO: Move this to another part of the creation flow to prevent circular deps\n        if (config._f === hooks.ISO_8601) {\n            configFromISO(config);\n            return;\n        }\n        if (config._f === hooks.RFC_2822) {\n            configFromRFC2822(config);\n            return;\n        }\n        config._a = [];\n        getParsingFlags(config).empty = true;\n\n        // This array is used to make a Date, either with `new Date` or `Date.UTC`\n        var string = '' + config._i,\n            i,\n            parsedInput,\n            tokens,\n            token,\n            skipped,\n            stringLength = string.length,\n            totalParsedInputLength = 0,\n            era,\n            tokenLen;\n\n        tokens =\n            expandFormat(config._f, config._locale).match(formattingTokens) || [];\n        tokenLen = tokens.length;\n        for (i = 0; i < tokenLen; i++) {\n            token = tokens[i];\n            parsedInput = (string.match(getParseRegexForToken(token, config)) ||\n                [])[0];\n            if (parsedInput) {\n                skipped = string.substr(0, string.indexOf(parsedInput));\n                if (skipped.length > 0) {\n                    getParsingFlags(config).unusedInput.push(skipped);\n                }\n                string = string.slice(\n                    string.indexOf(parsedInput) + parsedInput.length\n                );\n                totalParsedInputLength += parsedInput.length;\n            }\n            // don't parse if it's not a known token\n            if (formatTokenFunctions[token]) {\n                if (parsedInput) {\n                    getParsingFlags(config).empty = false;\n                } else {\n                    getParsingFlags(config).unusedTokens.push(token);\n                }\n                addTimeToArrayFromToken(token, parsedInput, config);\n            } else if (config._strict && !parsedInput) {\n                getParsingFlags(config).unusedTokens.push(token);\n            }\n        }\n\n        // add remaining unparsed input length to the string\n        getParsingFlags(config).charsLeftOver =\n            stringLength - totalParsedInputLength;\n        if (string.length > 0) {\n            getParsingFlags(config).unusedInput.push(string);\n        }\n\n        // clear _12h flag if hour is <= 12\n        if (\n            config._a[HOUR] <= 12 &&\n            getParsingFlags(config).bigHour === true &&\n            config._a[HOUR] > 0\n        ) {\n            getParsingFlags(config).bigHour = undefined;\n        }\n\n        getParsingFlags(config).parsedDateParts = config._a.slice(0);\n        getParsingFlags(config).meridiem = config._meridiem;\n        // handle meridiem\n        config._a[HOUR] = meridiemFixWrap(\n            config._locale,\n            config._a[HOUR],\n            config._meridiem\n        );\n\n        // handle era\n        era = getParsingFlags(config).era;\n        if (era !== null) {\n            config._a[YEAR] = config._locale.erasConvertYear(era, config._a[YEAR]);\n        }\n\n        configFromArray(config);\n        checkOverflow(config);\n    }\n\n    function meridiemFixWrap(locale, hour, meridiem) {\n        var isPm;\n\n        if (meridiem == null) {\n            // nothing to do\n            return hour;\n        }\n        if (locale.meridiemHour != null) {\n            return locale.meridiemHour(hour, meridiem);\n        } else if (locale.isPM != null) {\n            // Fallback\n            isPm = locale.isPM(meridiem);\n            if (isPm && hour < 12) {\n                hour += 12;\n            }\n            if (!isPm && hour === 12) {\n                hour = 0;\n            }\n            return hour;\n        } else {\n            // this is not supposed to happen\n            return hour;\n        }\n    }\n\n    // date from string and array of format strings\n    function configFromStringAndArray(config) {\n        var tempConfig,\n            bestMoment,\n            scoreToBeat,\n            i,\n            currentScore,\n            validFormatFound,\n            bestFormatIsValid = false,\n            configfLen = config._f.length;\n\n        if (configfLen === 0) {\n            getParsingFlags(config).invalidFormat = true;\n            config._d = new Date(NaN);\n            return;\n        }\n\n        for (i = 0; i < configfLen; i++) {\n            currentScore = 0;\n            validFormatFound = false;\n            tempConfig = copyConfig({}, config);\n            if (config._useUTC != null) {\n                tempConfig._useUTC = config._useUTC;\n            }\n            tempConfig._f = config._f[i];\n            configFromStringAndFormat(tempConfig);\n\n            if (isValid(tempConfig)) {\n                validFormatFound = true;\n            }\n\n            // if there is any input that was not parsed add a penalty for that format\n            currentScore += getParsingFlags(tempConfig).charsLeftOver;\n\n            //or tokens\n            currentScore += getParsingFlags(tempConfig).unusedTokens.length * 10;\n\n            getParsingFlags(tempConfig).score = currentScore;\n\n            if (!bestFormatIsValid) {\n                if (\n                    scoreToBeat == null ||\n                    currentScore < scoreToBeat ||\n                    validFormatFound\n                ) {\n                    scoreToBeat = currentScore;\n                    bestMoment = tempConfig;\n                    if (validFormatFound) {\n                        bestFormatIsValid = true;\n                    }\n                }\n            } else {\n                if (currentScore < scoreToBeat) {\n                    scoreToBeat = currentScore;\n                    bestMoment = tempConfig;\n                }\n            }\n        }\n\n        extend(config, bestMoment || tempConfig);\n    }\n\n    function configFromObject(config) {\n        if (config._d) {\n            return;\n        }\n\n        var i = normalizeObjectUnits(config._i),\n            dayOrDate = i.day === undefined ? i.date : i.day;\n        config._a = map(\n            [i.year, i.month, dayOrDate, i.hour, i.minute, i.second, i.millisecond],\n            function (obj) {\n                return obj && parseInt(obj, 10);\n            }\n        );\n\n        configFromArray(config);\n    }\n\n    function createFromConfig(config) {\n        var res = new Moment(checkOverflow(prepareConfig(config)));\n        if (res._nextDay) {\n            // Adding is smart enough around DST\n            res.add(1, 'd');\n            res._nextDay = undefined;\n        }\n\n        return res;\n    }\n\n    function prepareConfig(config) {\n        var input = config._i,\n            format = config._f;\n\n        config._locale = config._locale || getLocale(config._l);\n\n        if (input === null || (format === undefined && input === '')) {\n            return createInvalid({ nullInput: true });\n        }\n\n        if (typeof input === 'string') {\n            config._i = input = config._locale.preparse(input);\n        }\n\n        if (isMoment(input)) {\n            return new Moment(checkOverflow(input));\n        } else if (isDate(input)) {\n            config._d = input;\n        } else if (isArray(format)) {\n            configFromStringAndArray(config);\n        } else if (format) {\n            configFromStringAndFormat(config);\n        } else {\n            configFromInput(config);\n        }\n\n        if (!isValid(config)) {\n            config._d = null;\n        }\n\n        return config;\n    }\n\n    function configFromInput(config) {\n        var input = config._i;\n        if (isUndefined(input)) {\n            config._d = new Date(hooks.now());\n        } else if (isDate(input)) {\n            config._d = new Date(input.valueOf());\n        } else if (typeof input === 'string') {\n            configFromString(config);\n        } else if (isArray(input)) {\n            config._a = map(input.slice(0), function (obj) {\n                return parseInt(obj, 10);\n            });\n            configFromArray(config);\n        } else if (isObject(input)) {\n            configFromObject(config);\n        } else if (isNumber(input)) {\n            // from milliseconds\n            config._d = new Date(input);\n        } else {\n            hooks.createFromInputFallback(config);\n        }\n    }\n\n    function createLocalOrUTC(input, format, locale, strict, isUTC) {\n        var c = {};\n\n        if (format === true || format === false) {\n            strict = format;\n            format = undefined;\n        }\n\n        if (locale === true || locale === false) {\n            strict = locale;\n            locale = undefined;\n        }\n\n        if (\n            (isObject(input) && isObjectEmpty(input)) ||\n            (isArray(input) && input.length === 0)\n        ) {\n            input = undefined;\n        }\n        // object construction must be done this way.\n        // https://github.com/moment/moment/issues/1423\n        c._isAMomentObject = true;\n        c._useUTC = c._isUTC = isUTC;\n        c._l = locale;\n        c._i = input;\n        c._f = format;\n        c._strict = strict;\n\n        return createFromConfig(c);\n    }\n\n    function createLocal(input, format, locale, strict) {\n        return createLocalOrUTC(input, format, locale, strict, false);\n    }\n\n    var prototypeMin = deprecate(\n            'moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/',\n            function () {\n                var other = createLocal.apply(null, arguments);\n                if (this.isValid() && other.isValid()) {\n                    return other < this ? this : other;\n                } else {\n                    return createInvalid();\n                }\n            }\n        ),\n        prototypeMax = deprecate(\n            'moment().max is deprecated, use moment.min instead. http://momentjs.com/guides/#/warnings/min-max/',\n            function () {\n                var other = createLocal.apply(null, arguments);\n                if (this.isValid() && other.isValid()) {\n                    return other > this ? this : other;\n                } else {\n                    return createInvalid();\n                }\n            }\n        );\n\n    // Pick a moment m from moments so that m[fn](other) is true for all\n    // other. This relies on the function fn to be transitive.\n    //\n    // moments should either be an array of moment objects or an array, whose\n    // first element is an array of moment objects.\n    function pickBy(fn, moments) {\n        var res, i;\n        if (moments.length === 1 && isArray(moments[0])) {\n            moments = moments[0];\n        }\n        if (!moments.length) {\n            return createLocal();\n        }\n        res = moments[0];\n        for (i = 1; i < moments.length; ++i) {\n            if (!moments[i].isValid() || moments[i][fn](res)) {\n                res = moments[i];\n            }\n        }\n        return res;\n    }\n\n    // TODO: Use [].sort instead?\n    function min() {\n        var args = [].slice.call(arguments, 0);\n\n        return pickBy('isBefore', args);\n    }\n\n    function max() {\n        var args = [].slice.call(arguments, 0);\n\n        return pickBy('isAfter', args);\n    }\n\n    var now = function () {\n        return Date.now ? Date.now() : +new Date();\n    };\n\n    var ordering = [\n        'year',\n        'quarter',\n        'month',\n        'week',\n        'day',\n        'hour',\n        'minute',\n        'second',\n        'millisecond',\n    ];\n\n    function isDurationValid(m) {\n        var key,\n            unitHasDecimal = false,\n            i,\n            orderLen = ordering.length;\n        for (key in m) {\n            if (\n                hasOwnProp(m, key) &&\n                !(\n                    indexOf.call(ordering, key) !== -1 &&\n                    (m[key] == null || !isNaN(m[key]))\n                )\n            ) {\n                return false;\n            }\n        }\n\n        for (i = 0; i < orderLen; ++i) {\n            if (m[ordering[i]]) {\n                if (unitHasDecimal) {\n                    return false; // only allow non-integers for smallest unit\n                }\n                if (parseFloat(m[ordering[i]]) !== toInt(m[ordering[i]])) {\n                    unitHasDecimal = true;\n                }\n            }\n        }\n\n        return true;\n    }\n\n    function isValid$1() {\n        return this._isValid;\n    }\n\n    function createInvalid$1() {\n        return createDuration(NaN);\n    }\n\n    function Duration(duration) {\n        var normalizedInput = normalizeObjectUnits(duration),\n            years = normalizedInput.year || 0,\n            quarters = normalizedInput.quarter || 0,\n            months = normalizedInput.month || 0,\n            weeks = normalizedInput.week || normalizedInput.isoWeek || 0,\n            days = normalizedInput.day || 0,\n            hours = normalizedInput.hour || 0,\n            minutes = normalizedInput.minute || 0,\n            seconds = normalizedInput.second || 0,\n            milliseconds = normalizedInput.millisecond || 0;\n\n        this._isValid = isDurationValid(normalizedInput);\n\n        // representation for dateAddRemove\n        this._milliseconds =\n            +milliseconds +\n            seconds * 1e3 + // 1000\n            minutes * 6e4 + // 1000 * 60\n            hours * 1000 * 60 * 60; //using 1000 * 60 * 60 instead of 36e5 to avoid floating point rounding errors https://github.com/moment/moment/issues/2978\n        // Because of dateAddRemove treats 24 hours as different from a\n        // day when working around DST, we need to store them separately\n        this._days = +days + weeks * 7;\n        // It is impossible to translate months into days without knowing\n        // which months you are are talking about, so we have to store\n        // it separately.\n        this._months = +months + quarters * 3 + years * 12;\n\n        this._data = {};\n\n        this._locale = getLocale();\n\n        this._bubble();\n    }\n\n    function isDuration(obj) {\n        return obj instanceof Duration;\n    }\n\n    function absRound(number) {\n        if (number < 0) {\n            return Math.round(-1 * number) * -1;\n        } else {\n            return Math.round(number);\n        }\n    }\n\n    // compare two arrays, return the number of differences\n    function compareArrays(array1, array2, dontConvert) {\n        var len = Math.min(array1.length, array2.length),\n            lengthDiff = Math.abs(array1.length - array2.length),\n            diffs = 0,\n            i;\n        for (i = 0; i < len; i++) {\n            if (\n                (dontConvert && array1[i] !== array2[i]) ||\n                (!dontConvert && toInt(array1[i]) !== toInt(array2[i]))\n            ) {\n                diffs++;\n            }\n        }\n        return diffs + lengthDiff;\n    }\n\n    // FORMATTING\n\n    function offset(token, separator) {\n        addFormatToken(token, 0, 0, function () {\n            var offset = this.utcOffset(),\n                sign = '+';\n            if (offset < 0) {\n                offset = -offset;\n                sign = '-';\n            }\n            return (\n                sign +\n                zeroFill(~~(offset / 60), 2) +\n                separator +\n                zeroFill(~~offset % 60, 2)\n            );\n        });\n    }\n\n    offset('Z', ':');\n    offset('ZZ', '');\n\n    // PARSING\n\n    addRegexToken('Z', matchShortOffset);\n    addRegexToken('ZZ', matchShortOffset);\n    addParseToken(['Z', 'ZZ'], function (input, array, config) {\n        config._useUTC = true;\n        config._tzm = offsetFromString(matchShortOffset, input);\n    });\n\n    // HELPERS\n\n    // timezone chunker\n    // '+10:00' > ['10',  '00']\n    // '-1530'  > ['-15', '30']\n    var chunkOffset = /([\\+\\-]|\\d\\d)/gi;\n\n    function offsetFromString(matcher, string) {\n        var matches = (string || '').match(matcher),\n            chunk,\n            parts,\n            minutes;\n\n        if (matches === null) {\n            return null;\n        }\n\n        chunk = matches[matches.length - 1] || [];\n        parts = (chunk + '').match(chunkOffset) || ['-', 0, 0];\n        minutes = +(parts[1] * 60) + toInt(parts[2]);\n\n        return minutes === 0 ? 0 : parts[0] === '+' ? minutes : -minutes;\n    }\n\n    // Return a moment from input, that is local/utc/zone equivalent to model.\n    function cloneWithOffset(input, model) {\n        var res, diff;\n        if (model._isUTC) {\n            res = model.clone();\n            diff =\n                (isMoment(input) || isDate(input)\n                    ? input.valueOf()\n                    : createLocal(input).valueOf()) - res.valueOf();\n            // Use low-level api, because this fn is low-level api.\n            res._d.setTime(res._d.valueOf() + diff);\n            hooks.updateOffset(res, false);\n            return res;\n        } else {\n            return createLocal(input).local();\n        }\n    }\n\n    function getDateOffset(m) {\n        // On Firefox.24 Date#getTimezoneOffset returns a floating point.\n        // https://github.com/moment/moment/pull/1871\n        return -Math.round(m._d.getTimezoneOffset());\n    }\n\n    // HOOKS\n\n    // This function will be called whenever a moment is mutated.\n    // It is intended to keep the offset in sync with the timezone.\n    hooks.updateOffset = function () {};\n\n    // MOMENTS\n\n    // keepLocalTime = true means only change the timezone, without\n    // affecting the local hour. So 5:31:26 +0300 --[utcOffset(2, true)]-->\n    // 5:31:26 +0200 It is possible that 5:31:26 doesn't exist with offset\n    // +0200, so we adjust the time as needed, to be valid.\n    //\n    // Keeping the time actually adds/subtracts (one hour)\n    // from the actual represented time. That is why we call updateOffset\n    // a second time. In case it wants us to change the offset again\n    // _changeInProgress == true case, then we have to adjust, because\n    // there is no such time in the given timezone.\n    function getSetOffset(input, keepLocalTime, keepMinutes) {\n        var offset = this._offset || 0,\n            localAdjust;\n        if (!this.isValid()) {\n            return input != null ? this : NaN;\n        }\n        if (input != null) {\n            if (typeof input === 'string') {\n                input = offsetFromString(matchShortOffset, input);\n                if (input === null) {\n                    return this;\n                }\n            } else if (Math.abs(input) < 16 && !keepMinutes) {\n                input = input * 60;\n            }\n            if (!this._isUTC && keepLocalTime) {\n                localAdjust = getDateOffset(this);\n            }\n            this._offset = input;\n            this._isUTC = true;\n            if (localAdjust != null) {\n                this.add(localAdjust, 'm');\n            }\n            if (offset !== input) {\n                if (!keepLocalTime || this._changeInProgress) {\n                    addSubtract(\n                        this,\n                        createDuration(input - offset, 'm'),\n                        1,\n                        false\n                    );\n                } else if (!this._changeInProgress) {\n                    this._changeInProgress = true;\n                    hooks.updateOffset(this, true);\n                    this._changeInProgress = null;\n                }\n            }\n            return this;\n        } else {\n            return this._isUTC ? offset : getDateOffset(this);\n        }\n    }\n\n    function getSetZone(input, keepLocalTime) {\n        if (input != null) {\n            if (typeof input !== 'string') {\n                input = -input;\n            }\n\n            this.utcOffset(input, keepLocalTime);\n\n            return this;\n        } else {\n            return -this.utcOffset();\n        }\n    }\n\n    function setOffsetToUTC(keepLocalTime) {\n        return this.utcOffset(0, keepLocalTime);\n    }\n\n    function setOffsetToLocal(keepLocalTime) {\n        if (this._isUTC) {\n            this.utcOffset(0, keepLocalTime);\n            this._isUTC = false;\n\n            if (keepLocalTime) {\n                this.subtract(getDateOffset(this), 'm');\n            }\n        }\n        return this;\n    }\n\n    function setOffsetToParsedOffset() {\n        if (this._tzm != null) {\n            this.utcOffset(this._tzm, false, true);\n        } else if (typeof this._i === 'string') {\n            var tZone = offsetFromString(matchOffset, this._i);\n            if (tZone != null) {\n                this.utcOffset(tZone);\n            } else {\n                this.utcOffset(0, true);\n            }\n        }\n        return this;\n    }\n\n    function hasAlignedHourOffset(input) {\n        if (!this.isValid()) {\n            return false;\n        }\n        input = input ? createLocal(input).utcOffset() : 0;\n\n        return (this.utcOffset() - input) % 60 === 0;\n    }\n\n    function isDaylightSavingTime() {\n        return (\n            this.utcOffset() > this.clone().month(0).utcOffset() ||\n            this.utcOffset() > this.clone().month(5).utcOffset()\n        );\n    }\n\n    function isDaylightSavingTimeShifted() {\n        if (!isUndefined(this._isDSTShifted)) {\n            return this._isDSTShifted;\n        }\n\n        var c = {},\n            other;\n\n        copyConfig(c, this);\n        c = prepareConfig(c);\n\n        if (c._a) {\n            other = c._isUTC ? createUTC(c._a) : createLocal(c._a);\n            this._isDSTShifted =\n                this.isValid() && compareArrays(c._a, other.toArray()) > 0;\n        } else {\n            this._isDSTShifted = false;\n        }\n\n        return this._isDSTShifted;\n    }\n\n    function isLocal() {\n        return this.isValid() ? !this._isUTC : false;\n    }\n\n    function isUtcOffset() {\n        return this.isValid() ? this._isUTC : false;\n    }\n\n    function isUtc() {\n        return this.isValid() ? this._isUTC && this._offset === 0 : false;\n    }\n\n    // ASP.NET json date format regex\n    var aspNetRegex = /^(-|\\+)?(?:(\\d*)[. ])?(\\d+):(\\d+)(?::(\\d+)(\\.\\d*)?)?$/,\n        // from http://docs.closure-library.googlecode.com/git/closure_goog_date_date.js.source.html\n        // somewhat more in line with 4.4.3.2 2004 spec, but allows decimal anywhere\n        // and further modified to allow for strings containing both week and day\n        isoRegex =\n            /^(-|\\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/;\n\n    function createDuration(input, key) {\n        var duration = input,\n            // matching against regexp is expensive, do it on demand\n            match = null,\n            sign,\n            ret,\n            diffRes;\n\n        if (isDuration(input)) {\n            duration = {\n                ms: input._milliseconds,\n                d: input._days,\n                M: input._months,\n            };\n        } else if (isNumber(input) || !isNaN(+input)) {\n            duration = {};\n            if (key) {\n                duration[key] = +input;\n            } else {\n                duration.milliseconds = +input;\n            }\n        } else if ((match = aspNetRegex.exec(input))) {\n            sign = match[1] === '-' ? -1 : 1;\n            duration = {\n                y: 0,\n                d: toInt(match[DATE]) * sign,\n                h: toInt(match[HOUR]) * sign,\n                m: toInt(match[MINUTE]) * sign,\n                s: toInt(match[SECOND]) * sign,\n                ms: toInt(absRound(match[MILLISECOND] * 1000)) * sign, // the millisecond decimal point is included in the match\n            };\n        } else if ((match = isoRegex.exec(input))) {\n            sign = match[1] === '-' ? -1 : 1;\n            duration = {\n                y: parseIso(match[2], sign),\n                M: parseIso(match[3], sign),\n                w: parseIso(match[4], sign),\n                d: parseIso(match[5], sign),\n                h: parseIso(match[6], sign),\n                m: parseIso(match[7], sign),\n                s: parseIso(match[8], sign),\n            };\n        } else if (duration == null) {\n            // checks for null or undefined\n            duration = {};\n        } else if (\n            typeof duration === 'object' &&\n            ('from' in duration || 'to' in duration)\n        ) {\n            diffRes = momentsDifference(\n                createLocal(duration.from),\n                createLocal(duration.to)\n            );\n\n            duration = {};\n            duration.ms = diffRes.milliseconds;\n            duration.M = diffRes.months;\n        }\n\n        ret = new Duration(duration);\n\n        if (isDuration(input) && hasOwnProp(input, '_locale')) {\n            ret._locale = input._locale;\n        }\n\n        if (isDuration(input) && hasOwnProp(input, '_isValid')) {\n            ret._isValid = input._isValid;\n        }\n\n        return ret;\n    }\n\n    createDuration.fn = Duration.prototype;\n    createDuration.invalid = createInvalid$1;\n\n    function parseIso(inp, sign) {\n        // We'd normally use ~~inp for this, but unfortunately it also\n        // converts floats to ints.\n        // inp may be undefined, so careful calling replace on it.\n        var res = inp && parseFloat(inp.replace(',', '.'));\n        // apply sign while we're at it\n        return (isNaN(res) ? 0 : res) * sign;\n    }\n\n    function positiveMomentsDifference(base, other) {\n        var res = {};\n\n        res.months =\n            other.month() - base.month() + (other.year() - base.year()) * 12;\n        if (base.clone().add(res.months, 'M').isAfter(other)) {\n            --res.months;\n        }\n\n        res.milliseconds = +other - +base.clone().add(res.months, 'M');\n\n        return res;\n    }\n\n    function momentsDifference(base, other) {\n        var res;\n        if (!(base.isValid() && other.isValid())) {\n            return { milliseconds: 0, months: 0 };\n        }\n\n        other = cloneWithOffset(other, base);\n        if (base.isBefore(other)) {\n            res = positiveMomentsDifference(base, other);\n        } else {\n            res = positiveMomentsDifference(other, base);\n            res.milliseconds = -res.milliseconds;\n            res.months = -res.months;\n        }\n\n        return res;\n    }\n\n    // TODO: remove 'name' arg after deprecation is removed\n    function createAdder(direction, name) {\n        return function (val, period) {\n            var dur, tmp;\n            //invert the arguments, but complain about it\n            if (period !== null && !isNaN(+period)) {\n                deprecateSimple(\n                    name,\n                    'moment().' +\n                        name +\n                        '(period, number) is deprecated. Please use moment().' +\n                        name +\n                        '(number, period). ' +\n                        'See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info.'\n                );\n                tmp = val;\n                val = period;\n                period = tmp;\n            }\n\n            dur = createDuration(val, period);\n            addSubtract(this, dur, direction);\n            return this;\n        };\n    }\n\n    function addSubtract(mom, duration, isAdding, updateOffset) {\n        var milliseconds = duration._milliseconds,\n            days = absRound(duration._days),\n            months = absRound(duration._months);\n\n        if (!mom.isValid()) {\n            // No op\n            return;\n        }\n\n        updateOffset = updateOffset == null ? true : updateOffset;\n\n        if (months) {\n            setMonth(mom, get(mom, 'Month') + months * isAdding);\n        }\n        if (days) {\n            set$1(mom, 'Date', get(mom, 'Date') + days * isAdding);\n        }\n        if (milliseconds) {\n            mom._d.setTime(mom._d.valueOf() + milliseconds * isAdding);\n        }\n        if (updateOffset) {\n            hooks.updateOffset(mom, days || months);\n        }\n    }\n\n    var add = createAdder(1, 'add'),\n        subtract = createAdder(-1, 'subtract');\n\n    function isString(input) {\n        return typeof input === 'string' || input instanceof String;\n    }\n\n    // type MomentInput = Moment | Date | string | number | (number | string)[] | MomentInputObject | void; // null | undefined\n    function isMomentInput(input) {\n        return (\n            isMoment(input) ||\n            isDate(input) ||\n            isString(input) ||\n            isNumber(input) ||\n            isNumberOrStringArray(input) ||\n            isMomentInputObject(input) ||\n            input === null ||\n            input === undefined\n        );\n    }\n\n    function isMomentInputObject(input) {\n        var objectTest = isObject(input) && !isObjectEmpty(input),\n            propertyTest = false,\n            properties = [\n                'years',\n                'year',\n                'y',\n                'months',\n                'month',\n                'M',\n                'days',\n                'day',\n                'd',\n                'dates',\n                'date',\n                'D',\n                'hours',\n                'hour',\n                'h',\n                'minutes',\n                'minute',\n                'm',\n                'seconds',\n                'second',\n                's',\n                'milliseconds',\n                'millisecond',\n                'ms',\n            ],\n            i,\n            property,\n            propertyLen = properties.length;\n\n        for (i = 0; i < propertyLen; i += 1) {\n            property = properties[i];\n            propertyTest = propertyTest || hasOwnProp(input, property);\n        }\n\n        return objectTest && propertyTest;\n    }\n\n    function isNumberOrStringArray(input) {\n        var arrayTest = isArray(input),\n            dataTypeTest = false;\n        if (arrayTest) {\n            dataTypeTest =\n                input.filter(function (item) {\n                    return !isNumber(item) && isString(input);\n                }).length === 0;\n        }\n        return arrayTest && dataTypeTest;\n    }\n\n    function isCalendarSpec(input) {\n        var objectTest = isObject(input) && !isObjectEmpty(input),\n            propertyTest = false,\n            properties = [\n                'sameDay',\n                'nextDay',\n                'lastDay',\n                'nextWeek',\n                'lastWeek',\n                'sameElse',\n            ],\n            i,\n            property;\n\n        for (i = 0; i < properties.length; i += 1) {\n            property = properties[i];\n            propertyTest = propertyTest || hasOwnProp(input, property);\n        }\n\n        return objectTest && propertyTest;\n    }\n\n    function getCalendarFormat(myMoment, now) {\n        var diff = myMoment.diff(now, 'days', true);\n        return diff < -6\n            ? 'sameElse'\n            : diff < -1\n            ? 'lastWeek'\n            : diff < 0\n            ? 'lastDay'\n            : diff < 1\n            ? 'sameDay'\n            : diff < 2\n            ? 'nextDay'\n            : diff < 7\n            ? 'nextWeek'\n            : 'sameElse';\n    }\n\n    function calendar$1(time, formats) {\n        // Support for single parameter, formats only overload to the calendar function\n        if (arguments.length === 1) {\n            if (!arguments[0]) {\n                time = undefined;\n                formats = undefined;\n            } else if (isMomentInput(arguments[0])) {\n                time = arguments[0];\n                formats = undefined;\n            } else if (isCalendarSpec(arguments[0])) {\n                formats = arguments[0];\n                time = undefined;\n            }\n        }\n        // We want to compare the start of today, vs this.\n        // Getting start-of-today depends on whether we're local/utc/offset or not.\n        var now = time || createLocal(),\n            sod = cloneWithOffset(now, this).startOf('day'),\n            format = hooks.calendarFormat(this, sod) || 'sameElse',\n            output =\n                formats &&\n                (isFunction(formats[format])\n                    ? formats[format].call(this, now)\n                    : formats[format]);\n\n        return this.format(\n            output || this.localeData().calendar(format, this, createLocal(now))\n        );\n    }\n\n    function clone() {\n        return new Moment(this);\n    }\n\n    function isAfter(input, units) {\n        var localInput = isMoment(input) ? input : createLocal(input);\n        if (!(this.isValid() && localInput.isValid())) {\n            return false;\n        }\n        units = normalizeUnits(units) || 'millisecond';\n        if (units === 'millisecond') {\n            return this.valueOf() > localInput.valueOf();\n        } else {\n            return localInput.valueOf() < this.clone().startOf(units).valueOf();\n        }\n    }\n\n    function isBefore(input, units) {\n        var localInput = isMoment(input) ? input : createLocal(input);\n        if (!(this.isValid() && localInput.isValid())) {\n            return false;\n        }\n        units = normalizeUnits(units) || 'millisecond';\n        if (units === 'millisecond') {\n            return this.valueOf() < localInput.valueOf();\n        } else {\n            return this.clone().endOf(units).valueOf() < localInput.valueOf();\n        }\n    }\n\n    function isBetween(from, to, units, inclusivity) {\n        var localFrom = isMoment(from) ? from : createLocal(from),\n            localTo = isMoment(to) ? to : createLocal(to);\n        if (!(this.isValid() && localFrom.isValid() && localTo.isValid())) {\n            return false;\n        }\n        inclusivity = inclusivity || '()';\n        return (\n            (inclusivity[0] === '('\n                ? this.isAfter(localFrom, units)\n                : !this.isBefore(localFrom, units)) &&\n            (inclusivity[1] === ')'\n                ? this.isBefore(localTo, units)\n                : !this.isAfter(localTo, units))\n        );\n    }\n\n    function isSame(input, units) {\n        var localInput = isMoment(input) ? input : createLocal(input),\n            inputMs;\n        if (!(this.isValid() && localInput.isValid())) {\n            return false;\n        }\n        units = normalizeUnits(units) || 'millisecond';\n        if (units === 'millisecond') {\n            return this.valueOf() === localInput.valueOf();\n        } else {\n            inputMs = localInput.valueOf();\n            return (\n                this.clone().startOf(units).valueOf() <= inputMs &&\n                inputMs <= this.clone().endOf(units).valueOf()\n            );\n        }\n    }\n\n    function isSameOrAfter(input, units) {\n        return this.isSame(input, units) || this.isAfter(input, units);\n    }\n\n    function isSameOrBefore(input, units) {\n        return this.isSame(input, units) || this.isBefore(input, units);\n    }\n\n    function diff(input, units, asFloat) {\n        var that, zoneDelta, output;\n\n        if (!this.isValid()) {\n            return NaN;\n        }\n\n        that = cloneWithOffset(input, this);\n\n        if (!that.isValid()) {\n            return NaN;\n        }\n\n        zoneDelta = (that.utcOffset() - this.utcOffset()) * 6e4;\n\n        units = normalizeUnits(units);\n\n        switch (units) {\n            case 'year':\n                output = monthDiff(this, that) / 12;\n                break;\n            case 'month':\n                output = monthDiff(this, that);\n                break;\n            case 'quarter':\n                output = monthDiff(this, that) / 3;\n                break;\n            case 'second':\n                output = (this - that) / 1e3;\n                break; // 1000\n            case 'minute':\n                output = (this - that) / 6e4;\n                break; // 1000 * 60\n            case 'hour':\n                output = (this - that) / 36e5;\n                break; // 1000 * 60 * 60\n            case 'day':\n                output = (this - that - zoneDelta) / 864e5;\n                break; // 1000 * 60 * 60 * 24, negate dst\n            case 'week':\n                output = (this - that - zoneDelta) / 6048e5;\n                break; // 1000 * 60 * 60 * 24 * 7, negate dst\n            default:\n                output = this - that;\n        }\n\n        return asFloat ? output : absFloor(output);\n    }\n\n    function monthDiff(a, b) {\n        if (a.date() < b.date()) {\n            // end-of-month calculations work correct when the start month has more\n            // days than the end month.\n            return -monthDiff(b, a);\n        }\n        // difference in months\n        var wholeMonthDiff = (b.year() - a.year()) * 12 + (b.month() - a.month()),\n            // b is in (anchor - 1 month, anchor + 1 month)\n            anchor = a.clone().add(wholeMonthDiff, 'months'),\n            anchor2,\n            adjust;\n\n        if (b - anchor < 0) {\n            anchor2 = a.clone().add(wholeMonthDiff - 1, 'months');\n            // linear across the month\n            adjust = (b - anchor) / (anchor - anchor2);\n        } else {\n            anchor2 = a.clone().add(wholeMonthDiff + 1, 'months');\n            // linear across the month\n            adjust = (b - anchor) / (anchor2 - anchor);\n        }\n\n        //check for negative zero, return zero if negative zero\n        return -(wholeMonthDiff + adjust) || 0;\n    }\n\n    hooks.defaultFormat = 'YYYY-MM-DDTHH:mm:ssZ';\n    hooks.defaultFormatUtc = 'YYYY-MM-DDTHH:mm:ss[Z]';\n\n    function toString() {\n        return this.clone().locale('en').format('ddd MMM DD YYYY HH:mm:ss [GMT]ZZ');\n    }\n\n    function toISOString(keepOffset) {\n        if (!this.isValid()) {\n            return null;\n        }\n        var utc = keepOffset !== true,\n            m = utc ? this.clone().utc() : this;\n        if (m.year() < 0 || m.year() > 9999) {\n            return formatMoment(\n                m,\n                utc\n                    ? 'YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]'\n                    : 'YYYYYY-MM-DD[T]HH:mm:ss.SSSZ'\n            );\n        }\n        if (isFunction(Date.prototype.toISOString)) {\n            // native implementation is ~50x faster, use it when we can\n            if (utc) {\n                return this.toDate().toISOString();\n            } else {\n                return new Date(this.valueOf() + this.utcOffset() * 60 * 1000)\n                    .toISOString()\n                    .replace('Z', formatMoment(m, 'Z'));\n            }\n        }\n        return formatMoment(\n            m,\n            utc ? 'YYYY-MM-DD[T]HH:mm:ss.SSS[Z]' : 'YYYY-MM-DD[T]HH:mm:ss.SSSZ'\n        );\n    }\n\n    /**\n     * Return a human readable representation of a moment that can\n     * also be evaluated to get a new moment which is the same\n     *\n     * @link https://nodejs.org/dist/latest/docs/api/util.html#util_custom_inspect_function_on_objects\n     */\n    function inspect() {\n        if (!this.isValid()) {\n            return 'moment.invalid(/* ' + this._i + ' */)';\n        }\n        var func = 'moment',\n            zone = '',\n            prefix,\n            year,\n            datetime,\n            suffix;\n        if (!this.isLocal()) {\n            func = this.utcOffset() === 0 ? 'moment.utc' : 'moment.parseZone';\n            zone = 'Z';\n        }\n        prefix = '[' + func + '(\"]';\n        year = 0 <= this.year() && this.year() <= 9999 ? 'YYYY' : 'YYYYYY';\n        datetime = '-MM-DD[T]HH:mm:ss.SSS';\n        suffix = zone + '[\")]';\n\n        return this.format(prefix + year + datetime + suffix);\n    }\n\n    function format(inputString) {\n        if (!inputString) {\n            inputString = this.isUtc()\n                ? hooks.defaultFormatUtc\n                : hooks.defaultFormat;\n        }\n        var output = formatMoment(this, inputString);\n        return this.localeData().postformat(output);\n    }\n\n    function from(time, withoutSuffix) {\n        if (\n            this.isValid() &&\n            ((isMoment(time) && time.isValid()) || createLocal(time).isValid())\n        ) {\n            return createDuration({ to: this, from: time })\n                .locale(this.locale())\n                .humanize(!withoutSuffix);\n        } else {\n            return this.localeData().invalidDate();\n        }\n    }\n\n    function fromNow(withoutSuffix) {\n        return this.from(createLocal(), withoutSuffix);\n    }\n\n    function to(time, withoutSuffix) {\n        if (\n            this.isValid() &&\n            ((isMoment(time) && time.isValid()) || createLocal(time).isValid())\n        ) {\n            return createDuration({ from: this, to: time })\n                .locale(this.locale())\n                .humanize(!withoutSuffix);\n        } else {\n            return this.localeData().invalidDate();\n        }\n    }\n\n    function toNow(withoutSuffix) {\n        return this.to(createLocal(), withoutSuffix);\n    }\n\n    // If passed a locale key, it will set the locale for this\n    // instance.  Otherwise, it will return the locale configuration\n    // variables for this instance.\n    function locale(key) {\n        var newLocaleData;\n\n        if (key === undefined) {\n            return this._locale._abbr;\n        } else {\n            newLocaleData = getLocale(key);\n            if (newLocaleData != null) {\n                this._locale = newLocaleData;\n            }\n            return this;\n        }\n    }\n\n    var lang = deprecate(\n        'moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.',\n        function (key) {\n            if (key === undefined) {\n                return this.localeData();\n            } else {\n                return this.locale(key);\n            }\n        }\n    );\n\n    function localeData() {\n        return this._locale;\n    }\n\n    var MS_PER_SECOND = 1000,\n        MS_PER_MINUTE = 60 * MS_PER_SECOND,\n        MS_PER_HOUR = 60 * MS_PER_MINUTE,\n        MS_PER_400_YEARS = (365 * 400 + 97) * 24 * MS_PER_HOUR;\n\n    // actual modulo - handles negative numbers (for dates before 1970):\n    function mod$1(dividend, divisor) {\n        return ((dividend % divisor) + divisor) % divisor;\n    }\n\n    function localStartOfDate(y, m, d) {\n        // the date constructor remaps years 0-99 to 1900-1999\n        if (y < 100 && y >= 0) {\n            // preserve leap years using a full 400 year cycle, then reset\n            return new Date(y + 400, m, d) - MS_PER_400_YEARS;\n        } else {\n            return new Date(y, m, d).valueOf();\n        }\n    }\n\n    function utcStartOfDate(y, m, d) {\n        // Date.UTC remaps years 0-99 to 1900-1999\n        if (y < 100 && y >= 0) {\n            // preserve leap years using a full 400 year cycle, then reset\n            return Date.UTC(y + 400, m, d) - MS_PER_400_YEARS;\n        } else {\n            return Date.UTC(y, m, d);\n        }\n    }\n\n    function startOf(units) {\n        var time, startOfDate;\n        units = normalizeUnits(units);\n        if (units === undefined || units === 'millisecond' || !this.isValid()) {\n            return this;\n        }\n\n        startOfDate = this._isUTC ? utcStartOfDate : localStartOfDate;\n\n        switch (units) {\n            case 'year':\n                time = startOfDate(this.year(), 0, 1);\n                break;\n            case 'quarter':\n                time = startOfDate(\n                    this.year(),\n                    this.month() - (this.month() % 3),\n                    1\n                );\n                break;\n            case 'month':\n                time = startOfDate(this.year(), this.month(), 1);\n                break;\n            case 'week':\n                time = startOfDate(\n                    this.year(),\n                    this.month(),\n                    this.date() - this.weekday()\n                );\n                break;\n            case 'isoWeek':\n                time = startOfDate(\n                    this.year(),\n                    this.month(),\n                    this.date() - (this.isoWeekday() - 1)\n                );\n                break;\n            case 'day':\n            case 'date':\n                time = startOfDate(this.year(), this.month(), this.date());\n                break;\n            case 'hour':\n                time = this._d.valueOf();\n                time -= mod$1(\n                    time + (this._isUTC ? 0 : this.utcOffset() * MS_PER_MINUTE),\n                    MS_PER_HOUR\n                );\n                break;\n            case 'minute':\n                time = this._d.valueOf();\n                time -= mod$1(time, MS_PER_MINUTE);\n                break;\n            case 'second':\n                time = this._d.valueOf();\n                time -= mod$1(time, MS_PER_SECOND);\n                break;\n        }\n\n        this._d.setTime(time);\n        hooks.updateOffset(this, true);\n        return this;\n    }\n\n    function endOf(units) {\n        var time, startOfDate;\n        units = normalizeUnits(units);\n        if (units === undefined || units === 'millisecond' || !this.isValid()) {\n            return this;\n        }\n\n        startOfDate = this._isUTC ? utcStartOfDate : localStartOfDate;\n\n        switch (units) {\n            case 'year':\n                time = startOfDate(this.year() + 1, 0, 1) - 1;\n                break;\n            case 'quarter':\n                time =\n                    startOfDate(\n                        this.year(),\n                        this.month() - (this.month() % 3) + 3,\n                        1\n                    ) - 1;\n                break;\n            case 'month':\n                time = startOfDate(this.year(), this.month() + 1, 1) - 1;\n                break;\n            case 'week':\n                time =\n                    startOfDate(\n                        this.year(),\n                        this.month(),\n                        this.date() - this.weekday() + 7\n                    ) - 1;\n                break;\n            case 'isoWeek':\n                time =\n                    startOfDate(\n                        this.year(),\n                        this.month(),\n                        this.date() - (this.isoWeekday() - 1) + 7\n                    ) - 1;\n                break;\n            case 'day':\n            case 'date':\n                time = startOfDate(this.year(), this.month(), this.date() + 1) - 1;\n                break;\n            case 'hour':\n                time = this._d.valueOf();\n                time +=\n                    MS_PER_HOUR -\n                    mod$1(\n                        time + (this._isUTC ? 0 : this.utcOffset() * MS_PER_MINUTE),\n                        MS_PER_HOUR\n                    ) -\n                    1;\n                break;\n            case 'minute':\n                time = this._d.valueOf();\n                time += MS_PER_MINUTE - mod$1(time, MS_PER_MINUTE) - 1;\n                break;\n            case 'second':\n                time = this._d.valueOf();\n                time += MS_PER_SECOND - mod$1(time, MS_PER_SECOND) - 1;\n                break;\n        }\n\n        this._d.setTime(time);\n        hooks.updateOffset(this, true);\n        return this;\n    }\n\n    function valueOf() {\n        return this._d.valueOf() - (this._offset || 0) * 60000;\n    }\n\n    function unix() {\n        return Math.floor(this.valueOf() / 1000);\n    }\n\n    function toDate() {\n        return new Date(this.valueOf());\n    }\n\n    function toArray() {\n        var m = this;\n        return [\n            m.year(),\n            m.month(),\n            m.date(),\n            m.hour(),\n            m.minute(),\n            m.second(),\n            m.millisecond(),\n        ];\n    }\n\n    function toObject() {\n        var m = this;\n        return {\n            years: m.year(),\n            months: m.month(),\n            date: m.date(),\n            hours: m.hours(),\n            minutes: m.minutes(),\n            seconds: m.seconds(),\n            milliseconds: m.milliseconds(),\n        };\n    }\n\n    function toJSON() {\n        // new Date(NaN).toJSON() === null\n        return this.isValid() ? this.toISOString() : null;\n    }\n\n    function isValid$2() {\n        return isValid(this);\n    }\n\n    function parsingFlags() {\n        return extend({}, getParsingFlags(this));\n    }\n\n    function invalidAt() {\n        return getParsingFlags(this).overflow;\n    }\n\n    function creationData() {\n        return {\n            input: this._i,\n            format: this._f,\n            locale: this._locale,\n            isUTC: this._isUTC,\n            strict: this._strict,\n        };\n    }\n\n    addFormatToken('N', 0, 0, 'eraAbbr');\n    addFormatToken('NN', 0, 0, 'eraAbbr');\n    addFormatToken('NNN', 0, 0, 'eraAbbr');\n    addFormatToken('NNNN', 0, 0, 'eraName');\n    addFormatToken('NNNNN', 0, 0, 'eraNarrow');\n\n    addFormatToken('y', ['y', 1], 'yo', 'eraYear');\n    addFormatToken('y', ['yy', 2], 0, 'eraYear');\n    addFormatToken('y', ['yyy', 3], 0, 'eraYear');\n    addFormatToken('y', ['yyyy', 4], 0, 'eraYear');\n\n    addRegexToken('N', matchEraAbbr);\n    addRegexToken('NN', matchEraAbbr);\n    addRegexToken('NNN', matchEraAbbr);\n    addRegexToken('NNNN', matchEraName);\n    addRegexToken('NNNNN', matchEraNarrow);\n\n    addParseToken(\n        ['N', 'NN', 'NNN', 'NNNN', 'NNNNN'],\n        function (input, array, config, token) {\n            var era = config._locale.erasParse(input, token, config._strict);\n            if (era) {\n                getParsingFlags(config).era = era;\n            } else {\n                getParsingFlags(config).invalidEra = input;\n            }\n        }\n    );\n\n    addRegexToken('y', matchUnsigned);\n    addRegexToken('yy', matchUnsigned);\n    addRegexToken('yyy', matchUnsigned);\n    addRegexToken('yyyy', matchUnsigned);\n    addRegexToken('yo', matchEraYearOrdinal);\n\n    addParseToken(['y', 'yy', 'yyy', 'yyyy'], YEAR);\n    addParseToken(['yo'], function (input, array, config, token) {\n        var match;\n        if (config._locale._eraYearOrdinalRegex) {\n            match = input.match(config._locale._eraYearOrdinalRegex);\n        }\n\n        if (config._locale.eraYearOrdinalParse) {\n            array[YEAR] = config._locale.eraYearOrdinalParse(input, match);\n        } else {\n            array[YEAR] = parseInt(input, 10);\n        }\n    });\n\n    function localeEras(m, format) {\n        var i,\n            l,\n            date,\n            eras = this._eras || getLocale('en')._eras;\n        for (i = 0, l = eras.length; i < l; ++i) {\n            switch (typeof eras[i].since) {\n                case 'string':\n                    // truncate time\n                    date = hooks(eras[i].since).startOf('day');\n                    eras[i].since = date.valueOf();\n                    break;\n            }\n\n            switch (typeof eras[i].until) {\n                case 'undefined':\n                    eras[i].until = +Infinity;\n                    break;\n                case 'string':\n                    // truncate time\n                    date = hooks(eras[i].until).startOf('day').valueOf();\n                    eras[i].until = date.valueOf();\n                    break;\n            }\n        }\n        return eras;\n    }\n\n    function localeErasParse(eraName, format, strict) {\n        var i,\n            l,\n            eras = this.eras(),\n            name,\n            abbr,\n            narrow;\n        eraName = eraName.toUpperCase();\n\n        for (i = 0, l = eras.length; i < l; ++i) {\n            name = eras[i].name.toUpperCase();\n            abbr = eras[i].abbr.toUpperCase();\n            narrow = eras[i].narrow.toUpperCase();\n\n            if (strict) {\n                switch (format) {\n                    case 'N':\n                    case 'NN':\n                    case 'NNN':\n                        if (abbr === eraName) {\n                            return eras[i];\n                        }\n                        break;\n\n                    case 'NNNN':\n                        if (name === eraName) {\n                            return eras[i];\n                        }\n                        break;\n\n                    case 'NNNNN':\n                        if (narrow === eraName) {\n                            return eras[i];\n                        }\n                        break;\n                }\n            } else if ([name, abbr, narrow].indexOf(eraName) >= 0) {\n                return eras[i];\n            }\n        }\n    }\n\n    function localeErasConvertYear(era, year) {\n        var dir = era.since <= era.until ? +1 : -1;\n        if (year === undefined) {\n            return hooks(era.since).year();\n        } else {\n            return hooks(era.since).year() + (year - era.offset) * dir;\n        }\n    }\n\n    function getEraName() {\n        var i,\n            l,\n            val,\n            eras = this.localeData().eras();\n        for (i = 0, l = eras.length; i < l; ++i) {\n            // truncate time\n            val = this.clone().startOf('day').valueOf();\n\n            if (eras[i].since <= val && val <= eras[i].until) {\n                return eras[i].name;\n            }\n            if (eras[i].until <= val && val <= eras[i].since) {\n                return eras[i].name;\n            }\n        }\n\n        return '';\n    }\n\n    function getEraNarrow() {\n        var i,\n            l,\n            val,\n            eras = this.localeData().eras();\n        for (i = 0, l = eras.length; i < l; ++i) {\n            // truncate time\n            val = this.clone().startOf('day').valueOf();\n\n            if (eras[i].since <= val && val <= eras[i].until) {\n                return eras[i].narrow;\n            }\n            if (eras[i].until <= val && val <= eras[i].since) {\n                return eras[i].narrow;\n            }\n        }\n\n        return '';\n    }\n\n    function getEraAbbr() {\n        var i,\n            l,\n            val,\n            eras = this.localeData().eras();\n        for (i = 0, l = eras.length; i < l; ++i) {\n            // truncate time\n            val = this.clone().startOf('day').valueOf();\n\n            if (eras[i].since <= val && val <= eras[i].until) {\n                return eras[i].abbr;\n            }\n            if (eras[i].until <= val && val <= eras[i].since) {\n                return eras[i].abbr;\n            }\n        }\n\n        return '';\n    }\n\n    function getEraYear() {\n        var i,\n            l,\n            dir,\n            val,\n            eras = this.localeData().eras();\n        for (i = 0, l = eras.length; i < l; ++i) {\n            dir = eras[i].since <= eras[i].until ? +1 : -1;\n\n            // truncate time\n            val = this.clone().startOf('day').valueOf();\n\n            if (\n                (eras[i].since <= val && val <= eras[i].until) ||\n                (eras[i].until <= val && val <= eras[i].since)\n            ) {\n                return (\n                    (this.year() - hooks(eras[i].since).year()) * dir +\n                    eras[i].offset\n                );\n            }\n        }\n\n        return this.year();\n    }\n\n    function erasNameRegex(isStrict) {\n        if (!hasOwnProp(this, '_erasNameRegex')) {\n            computeErasParse.call(this);\n        }\n        return isStrict ? this._erasNameRegex : this._erasRegex;\n    }\n\n    function erasAbbrRegex(isStrict) {\n        if (!hasOwnProp(this, '_erasAbbrRegex')) {\n            computeErasParse.call(this);\n        }\n        return isStrict ? this._erasAbbrRegex : this._erasRegex;\n    }\n\n    function erasNarrowRegex(isStrict) {\n        if (!hasOwnProp(this, '_erasNarrowRegex')) {\n            computeErasParse.call(this);\n        }\n        return isStrict ? this._erasNarrowRegex : this._erasRegex;\n    }\n\n    function matchEraAbbr(isStrict, locale) {\n        return locale.erasAbbrRegex(isStrict);\n    }\n\n    function matchEraName(isStrict, locale) {\n        return locale.erasNameRegex(isStrict);\n    }\n\n    function matchEraNarrow(isStrict, locale) {\n        return locale.erasNarrowRegex(isStrict);\n    }\n\n    function matchEraYearOrdinal(isStrict, locale) {\n        return locale._eraYearOrdinalRegex || matchUnsigned;\n    }\n\n    function computeErasParse() {\n        var abbrPieces = [],\n            namePieces = [],\n            narrowPieces = [],\n            mixedPieces = [],\n            i,\n            l,\n            eras = this.eras();\n\n        for (i = 0, l = eras.length; i < l; ++i) {\n            namePieces.push(regexEscape(eras[i].name));\n            abbrPieces.push(regexEscape(eras[i].abbr));\n            narrowPieces.push(regexEscape(eras[i].narrow));\n\n            mixedPieces.push(regexEscape(eras[i].name));\n            mixedPieces.push(regexEscape(eras[i].abbr));\n            mixedPieces.push(regexEscape(eras[i].narrow));\n        }\n\n        this._erasRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n        this._erasNameRegex = new RegExp('^(' + namePieces.join('|') + ')', 'i');\n        this._erasAbbrRegex = new RegExp('^(' + abbrPieces.join('|') + ')', 'i');\n        this._erasNarrowRegex = new RegExp(\n            '^(' + narrowPieces.join('|') + ')',\n            'i'\n        );\n    }\n\n    // FORMATTING\n\n    addFormatToken(0, ['gg', 2], 0, function () {\n        return this.weekYear() % 100;\n    });\n\n    addFormatToken(0, ['GG', 2], 0, function () {\n        return this.isoWeekYear() % 100;\n    });\n\n    function addWeekYearFormatToken(token, getter) {\n        addFormatToken(0, [token, token.length], 0, getter);\n    }\n\n    addWeekYearFormatToken('gggg', 'weekYear');\n    addWeekYearFormatToken('ggggg', 'weekYear');\n    addWeekYearFormatToken('GGGG', 'isoWeekYear');\n    addWeekYearFormatToken('GGGGG', 'isoWeekYear');\n\n    // ALIASES\n\n    addUnitAlias('weekYear', 'gg');\n    addUnitAlias('isoWeekYear', 'GG');\n\n    // PRIORITY\n\n    addUnitPriority('weekYear', 1);\n    addUnitPriority('isoWeekYear', 1);\n\n    // PARSING\n\n    addRegexToken('G', matchSigned);\n    addRegexToken('g', matchSigned);\n    addRegexToken('GG', match1to2, match2);\n    addRegexToken('gg', match1to2, match2);\n    addRegexToken('GGGG', match1to4, match4);\n    addRegexToken('gggg', match1to4, match4);\n    addRegexToken('GGGGG', match1to6, match6);\n    addRegexToken('ggggg', match1to6, match6);\n\n    addWeekParseToken(\n        ['gggg', 'ggggg', 'GGGG', 'GGGGG'],\n        function (input, week, config, token) {\n            week[token.substr(0, 2)] = toInt(input);\n        }\n    );\n\n    addWeekParseToken(['gg', 'GG'], function (input, week, config, token) {\n        week[token] = hooks.parseTwoDigitYear(input);\n    });\n\n    // MOMENTS\n\n    function getSetWeekYear(input) {\n        return getSetWeekYearHelper.call(\n            this,\n            input,\n            this.week(),\n            this.weekday(),\n            this.localeData()._week.dow,\n            this.localeData()._week.doy\n        );\n    }\n\n    function getSetISOWeekYear(input) {\n        return getSetWeekYearHelper.call(\n            this,\n            input,\n            this.isoWeek(),\n            this.isoWeekday(),\n            1,\n            4\n        );\n    }\n\n    function getISOWeeksInYear() {\n        return weeksInYear(this.year(), 1, 4);\n    }\n\n    function getISOWeeksInISOWeekYear() {\n        return weeksInYear(this.isoWeekYear(), 1, 4);\n    }\n\n    function getWeeksInYear() {\n        var weekInfo = this.localeData()._week;\n        return weeksInYear(this.year(), weekInfo.dow, weekInfo.doy);\n    }\n\n    function getWeeksInWeekYear() {\n        var weekInfo = this.localeData()._week;\n        return weeksInYear(this.weekYear(), weekInfo.dow, weekInfo.doy);\n    }\n\n    function getSetWeekYearHelper(input, week, weekday, dow, doy) {\n        var weeksTarget;\n        if (input == null) {\n            return weekOfYear(this, dow, doy).year;\n        } else {\n            weeksTarget = weeksInYear(input, dow, doy);\n            if (week > weeksTarget) {\n                week = weeksTarget;\n            }\n            return setWeekAll.call(this, input, week, weekday, dow, doy);\n        }\n    }\n\n    function setWeekAll(weekYear, week, weekday, dow, doy) {\n        var dayOfYearData = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy),\n            date = createUTCDate(dayOfYearData.year, 0, dayOfYearData.dayOfYear);\n\n        this.year(date.getUTCFullYear());\n        this.month(date.getUTCMonth());\n        this.date(date.getUTCDate());\n        return this;\n    }\n\n    // FORMATTING\n\n    addFormatToken('Q', 0, 'Qo', 'quarter');\n\n    // ALIASES\n\n    addUnitAlias('quarter', 'Q');\n\n    // PRIORITY\n\n    addUnitPriority('quarter', 7);\n\n    // PARSING\n\n    addRegexToken('Q', match1);\n    addParseToken('Q', function (input, array) {\n        array[MONTH] = (toInt(input) - 1) * 3;\n    });\n\n    // MOMENTS\n\n    function getSetQuarter(input) {\n        return input == null\n            ? Math.ceil((this.month() + 1) / 3)\n            : this.month((input - 1) * 3 + (this.month() % 3));\n    }\n\n    // FORMATTING\n\n    addFormatToken('D', ['DD', 2], 'Do', 'date');\n\n    // ALIASES\n\n    addUnitAlias('date', 'D');\n\n    // PRIORITY\n    addUnitPriority('date', 9);\n\n    // PARSING\n\n    addRegexToken('D', match1to2);\n    addRegexToken('DD', match1to2, match2);\n    addRegexToken('Do', function (isStrict, locale) {\n        // TODO: Remove \"ordinalParse\" fallback in next major release.\n        return isStrict\n            ? locale._dayOfMonthOrdinalParse || locale._ordinalParse\n            : locale._dayOfMonthOrdinalParseLenient;\n    });\n\n    addParseToken(['D', 'DD'], DATE);\n    addParseToken('Do', function (input, array) {\n        array[DATE] = toInt(input.match(match1to2)[0]);\n    });\n\n    // MOMENTS\n\n    var getSetDayOfMonth = makeGetSet('Date', true);\n\n    // FORMATTING\n\n    addFormatToken('DDD', ['DDDD', 3], 'DDDo', 'dayOfYear');\n\n    // ALIASES\n\n    addUnitAlias('dayOfYear', 'DDD');\n\n    // PRIORITY\n    addUnitPriority('dayOfYear', 4);\n\n    // PARSING\n\n    addRegexToken('DDD', match1to3);\n    addRegexToken('DDDD', match3);\n    addParseToken(['DDD', 'DDDD'], function (input, array, config) {\n        config._dayOfYear = toInt(input);\n    });\n\n    // HELPERS\n\n    // MOMENTS\n\n    function getSetDayOfYear(input) {\n        var dayOfYear =\n            Math.round(\n                (this.clone().startOf('day') - this.clone().startOf('year')) / 864e5\n            ) + 1;\n        return input == null ? dayOfYear : this.add(input - dayOfYear, 'd');\n    }\n\n    // FORMATTING\n\n    addFormatToken('m', ['mm', 2], 0, 'minute');\n\n    // ALIASES\n\n    addUnitAlias('minute', 'm');\n\n    // PRIORITY\n\n    addUnitPriority('minute', 14);\n\n    // PARSING\n\n    addRegexToken('m', match1to2);\n    addRegexToken('mm', match1to2, match2);\n    addParseToken(['m', 'mm'], MINUTE);\n\n    // MOMENTS\n\n    var getSetMinute = makeGetSet('Minutes', false);\n\n    // FORMATTING\n\n    addFormatToken('s', ['ss', 2], 0, 'second');\n\n    // ALIASES\n\n    addUnitAlias('second', 's');\n\n    // PRIORITY\n\n    addUnitPriority('second', 15);\n\n    // PARSING\n\n    addRegexToken('s', match1to2);\n    addRegexToken('ss', match1to2, match2);\n    addParseToken(['s', 'ss'], SECOND);\n\n    // MOMENTS\n\n    var getSetSecond = makeGetSet('Seconds', false);\n\n    // FORMATTING\n\n    addFormatToken('S', 0, 0, function () {\n        return ~~(this.millisecond() / 100);\n    });\n\n    addFormatToken(0, ['SS', 2], 0, function () {\n        return ~~(this.millisecond() / 10);\n    });\n\n    addFormatToken(0, ['SSS', 3], 0, 'millisecond');\n    addFormatToken(0, ['SSSS', 4], 0, function () {\n        return this.millisecond() * 10;\n    });\n    addFormatToken(0, ['SSSSS', 5], 0, function () {\n        return this.millisecond() * 100;\n    });\n    addFormatToken(0, ['SSSSSS', 6], 0, function () {\n        return this.millisecond() * 1000;\n    });\n    addFormatToken(0, ['SSSSSSS', 7], 0, function () {\n        return this.millisecond() * 10000;\n    });\n    addFormatToken(0, ['SSSSSSSS', 8], 0, function () {\n        return this.millisecond() * 100000;\n    });\n    addFormatToken(0, ['SSSSSSSSS', 9], 0, function () {\n        return this.millisecond() * 1000000;\n    });\n\n    // ALIASES\n\n    addUnitAlias('millisecond', 'ms');\n\n    // PRIORITY\n\n    addUnitPriority('millisecond', 16);\n\n    // PARSING\n\n    addRegexToken('S', match1to3, match1);\n    addRegexToken('SS', match1to3, match2);\n    addRegexToken('SSS', match1to3, match3);\n\n    var token, getSetMillisecond;\n    for (token = 'SSSS'; token.length <= 9; token += 'S') {\n        addRegexToken(token, matchUnsigned);\n    }\n\n    function parseMs(input, array) {\n        array[MILLISECOND] = toInt(('0.' + input) * 1000);\n    }\n\n    for (token = 'S'; token.length <= 9; token += 'S') {\n        addParseToken(token, parseMs);\n    }\n\n    getSetMillisecond = makeGetSet('Milliseconds', false);\n\n    // FORMATTING\n\n    addFormatToken('z', 0, 0, 'zoneAbbr');\n    addFormatToken('zz', 0, 0, 'zoneName');\n\n    // MOMENTS\n\n    function getZoneAbbr() {\n        return this._isUTC ? 'UTC' : '';\n    }\n\n    function getZoneName() {\n        return this._isUTC ? 'Coordinated Universal Time' : '';\n    }\n\n    var proto = Moment.prototype;\n\n    proto.add = add;\n    proto.calendar = calendar$1;\n    proto.clone = clone;\n    proto.diff = diff;\n    proto.endOf = endOf;\n    proto.format = format;\n    proto.from = from;\n    proto.fromNow = fromNow;\n    proto.to = to;\n    proto.toNow = toNow;\n    proto.get = stringGet;\n    proto.invalidAt = invalidAt;\n    proto.isAfter = isAfter;\n    proto.isBefore = isBefore;\n    proto.isBetween = isBetween;\n    proto.isSame = isSame;\n    proto.isSameOrAfter = isSameOrAfter;\n    proto.isSameOrBefore = isSameOrBefore;\n    proto.isValid = isValid$2;\n    proto.lang = lang;\n    proto.locale = locale;\n    proto.localeData = localeData;\n    proto.max = prototypeMax;\n    proto.min = prototypeMin;\n    proto.parsingFlags = parsingFlags;\n    proto.set = stringSet;\n    proto.startOf = startOf;\n    proto.subtract = subtract;\n    proto.toArray = toArray;\n    proto.toObject = toObject;\n    proto.toDate = toDate;\n    proto.toISOString = toISOString;\n    proto.inspect = inspect;\n    if (typeof Symbol !== 'undefined' && Symbol.for != null) {\n        proto[Symbol.for('nodejs.util.inspect.custom')] = function () {\n            return 'Moment<' + this.format() + '>';\n        };\n    }\n    proto.toJSON = toJSON;\n    proto.toString = toString;\n    proto.unix = unix;\n    proto.valueOf = valueOf;\n    proto.creationData = creationData;\n    proto.eraName = getEraName;\n    proto.eraNarrow = getEraNarrow;\n    proto.eraAbbr = getEraAbbr;\n    proto.eraYear = getEraYear;\n    proto.year = getSetYear;\n    proto.isLeapYear = getIsLeapYear;\n    proto.weekYear = getSetWeekYear;\n    proto.isoWeekYear = getSetISOWeekYear;\n    proto.quarter = proto.quarters = getSetQuarter;\n    proto.month = getSetMonth;\n    proto.daysInMonth = getDaysInMonth;\n    proto.week = proto.weeks = getSetWeek;\n    proto.isoWeek = proto.isoWeeks = getSetISOWeek;\n    proto.weeksInYear = getWeeksInYear;\n    proto.weeksInWeekYear = getWeeksInWeekYear;\n    proto.isoWeeksInYear = getISOWeeksInYear;\n    proto.isoWeeksInISOWeekYear = getISOWeeksInISOWeekYear;\n    proto.date = getSetDayOfMonth;\n    proto.day = proto.days = getSetDayOfWeek;\n    proto.weekday = getSetLocaleDayOfWeek;\n    proto.isoWeekday = getSetISODayOfWeek;\n    proto.dayOfYear = getSetDayOfYear;\n    proto.hour = proto.hours = getSetHour;\n    proto.minute = proto.minutes = getSetMinute;\n    proto.second = proto.seconds = getSetSecond;\n    proto.millisecond = proto.milliseconds = getSetMillisecond;\n    proto.utcOffset = getSetOffset;\n    proto.utc = setOffsetToUTC;\n    proto.local = setOffsetToLocal;\n    proto.parseZone = setOffsetToParsedOffset;\n    proto.hasAlignedHourOffset = hasAlignedHourOffset;\n    proto.isDST = isDaylightSavingTime;\n    proto.isLocal = isLocal;\n    proto.isUtcOffset = isUtcOffset;\n    proto.isUtc = isUtc;\n    proto.isUTC = isUtc;\n    proto.zoneAbbr = getZoneAbbr;\n    proto.zoneName = getZoneName;\n    proto.dates = deprecate(\n        'dates accessor is deprecated. Use date instead.',\n        getSetDayOfMonth\n    );\n    proto.months = deprecate(\n        'months accessor is deprecated. Use month instead',\n        getSetMonth\n    );\n    proto.years = deprecate(\n        'years accessor is deprecated. Use year instead',\n        getSetYear\n    );\n    proto.zone = deprecate(\n        'moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/',\n        getSetZone\n    );\n    proto.isDSTShifted = deprecate(\n        'isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information',\n        isDaylightSavingTimeShifted\n    );\n\n    function createUnix(input) {\n        return createLocal(input * 1000);\n    }\n\n    function createInZone() {\n        return createLocal.apply(null, arguments).parseZone();\n    }\n\n    function preParsePostFormat(string) {\n        return string;\n    }\n\n    var proto$1 = Locale.prototype;\n\n    proto$1.calendar = calendar;\n    proto$1.longDateFormat = longDateFormat;\n    proto$1.invalidDate = invalidDate;\n    proto$1.ordinal = ordinal;\n    proto$1.preparse = preParsePostFormat;\n    proto$1.postformat = preParsePostFormat;\n    proto$1.relativeTime = relativeTime;\n    proto$1.pastFuture = pastFuture;\n    proto$1.set = set;\n    proto$1.eras = localeEras;\n    proto$1.erasParse = localeErasParse;\n    proto$1.erasConvertYear = localeErasConvertYear;\n    proto$1.erasAbbrRegex = erasAbbrRegex;\n    proto$1.erasNameRegex = erasNameRegex;\n    proto$1.erasNarrowRegex = erasNarrowRegex;\n\n    proto$1.months = localeMonths;\n    proto$1.monthsShort = localeMonthsShort;\n    proto$1.monthsParse = localeMonthsParse;\n    proto$1.monthsRegex = monthsRegex;\n    proto$1.monthsShortRegex = monthsShortRegex;\n    proto$1.week = localeWeek;\n    proto$1.firstDayOfYear = localeFirstDayOfYear;\n    proto$1.firstDayOfWeek = localeFirstDayOfWeek;\n\n    proto$1.weekdays = localeWeekdays;\n    proto$1.weekdaysMin = localeWeekdaysMin;\n    proto$1.weekdaysShort = localeWeekdaysShort;\n    proto$1.weekdaysParse = localeWeekdaysParse;\n\n    proto$1.weekdaysRegex = weekdaysRegex;\n    proto$1.weekdaysShortRegex = weekdaysShortRegex;\n    proto$1.weekdaysMinRegex = weekdaysMinRegex;\n\n    proto$1.isPM = localeIsPM;\n    proto$1.meridiem = localeMeridiem;\n\n    function get$1(format, index, field, setter) {\n        var locale = getLocale(),\n            utc = createUTC().set(setter, index);\n        return locale[field](utc, format);\n    }\n\n    function listMonthsImpl(format, index, field) {\n        if (isNumber(format)) {\n            index = format;\n            format = undefined;\n        }\n\n        format = format || '';\n\n        if (index != null) {\n            return get$1(format, index, field, 'month');\n        }\n\n        var i,\n            out = [];\n        for (i = 0; i < 12; i++) {\n            out[i] = get$1(format, i, field, 'month');\n        }\n        return out;\n    }\n\n    // ()\n    // (5)\n    // (fmt, 5)\n    // (fmt)\n    // (true)\n    // (true, 5)\n    // (true, fmt, 5)\n    // (true, fmt)\n    function listWeekdaysImpl(localeSorted, format, index, field) {\n        if (typeof localeSorted === 'boolean') {\n            if (isNumber(format)) {\n                index = format;\n                format = undefined;\n            }\n\n            format = format || '';\n        } else {\n            format = localeSorted;\n            index = format;\n            localeSorted = false;\n\n            if (isNumber(format)) {\n                index = format;\n                format = undefined;\n            }\n\n            format = format || '';\n        }\n\n        var locale = getLocale(),\n            shift = localeSorted ? locale._week.dow : 0,\n            i,\n            out = [];\n\n        if (index != null) {\n            return get$1(format, (index + shift) % 7, field, 'day');\n        }\n\n        for (i = 0; i < 7; i++) {\n            out[i] = get$1(format, (i + shift) % 7, field, 'day');\n        }\n        return out;\n    }\n\n    function listMonths(format, index) {\n        return listMonthsImpl(format, index, 'months');\n    }\n\n    function listMonthsShort(format, index) {\n        return listMonthsImpl(format, index, 'monthsShort');\n    }\n\n    function listWeekdays(localeSorted, format, index) {\n        return listWeekdaysImpl(localeSorted, format, index, 'weekdays');\n    }\n\n    function listWeekdaysShort(localeSorted, format, index) {\n        return listWeekdaysImpl(localeSorted, format, index, 'weekdaysShort');\n    }\n\n    function listWeekdaysMin(localeSorted, format, index) {\n        return listWeekdaysImpl(localeSorted, format, index, 'weekdaysMin');\n    }\n\n    getSetGlobalLocale('en', {\n        eras: [\n            {\n                since: '0001-01-01',\n                until: +Infinity,\n                offset: 1,\n                name: 'Anno Domini',\n                narrow: 'AD',\n                abbr: 'AD',\n            },\n            {\n                since: '0000-12-31',\n                until: -Infinity,\n                offset: 1,\n                name: 'Before Christ',\n                narrow: 'BC',\n                abbr: 'BC',\n            },\n        ],\n        dayOfMonthOrdinalParse: /\\d{1,2}(th|st|nd|rd)/,\n        ordinal: function (number) {\n            var b = number % 10,\n                output =\n                    toInt((number % 100) / 10) === 1\n                        ? 'th'\n                        : b === 1\n                        ? 'st'\n                        : b === 2\n                        ? 'nd'\n                        : b === 3\n                        ? 'rd'\n                        : 'th';\n            return number + output;\n        },\n    });\n\n    // Side effect imports\n\n    hooks.lang = deprecate(\n        'moment.lang is deprecated. Use moment.locale instead.',\n        getSetGlobalLocale\n    );\n    hooks.langData = deprecate(\n        'moment.langData is deprecated. Use moment.localeData instead.',\n        getLocale\n    );\n\n    var mathAbs = Math.abs;\n\n    function abs() {\n        var data = this._data;\n\n        this._milliseconds = mathAbs(this._milliseconds);\n        this._days = mathAbs(this._days);\n        this._months = mathAbs(this._months);\n\n        data.milliseconds = mathAbs(data.milliseconds);\n        data.seconds = mathAbs(data.seconds);\n        data.minutes = mathAbs(data.minutes);\n        data.hours = mathAbs(data.hours);\n        data.months = mathAbs(data.months);\n        data.years = mathAbs(data.years);\n\n        return this;\n    }\n\n    function addSubtract$1(duration, input, value, direction) {\n        var other = createDuration(input, value);\n\n        duration._milliseconds += direction * other._milliseconds;\n        duration._days += direction * other._days;\n        duration._months += direction * other._months;\n\n        return duration._bubble();\n    }\n\n    // supports only 2.0-style add(1, 's') or add(duration)\n    function add$1(input, value) {\n        return addSubtract$1(this, input, value, 1);\n    }\n\n    // supports only 2.0-style subtract(1, 's') or subtract(duration)\n    function subtract$1(input, value) {\n        return addSubtract$1(this, input, value, -1);\n    }\n\n    function absCeil(number) {\n        if (number < 0) {\n            return Math.floor(number);\n        } else {\n            return Math.ceil(number);\n        }\n    }\n\n    function bubble() {\n        var milliseconds = this._milliseconds,\n            days = this._days,\n            months = this._months,\n            data = this._data,\n            seconds,\n            minutes,\n            hours,\n            years,\n            monthsFromDays;\n\n        // if we have a mix of positive and negative values, bubble down first\n        // check: https://github.com/moment/moment/issues/2166\n        if (\n            !(\n                (milliseconds >= 0 && days >= 0 && months >= 0) ||\n                (milliseconds <= 0 && days <= 0 && months <= 0)\n            )\n        ) {\n            milliseconds += absCeil(monthsToDays(months) + days) * 864e5;\n            days = 0;\n            months = 0;\n        }\n\n        // The following code bubbles up values, see the tests for\n        // examples of what that means.\n        data.milliseconds = milliseconds % 1000;\n\n        seconds = absFloor(milliseconds / 1000);\n        data.seconds = seconds % 60;\n\n        minutes = absFloor(seconds / 60);\n        data.minutes = minutes % 60;\n\n        hours = absFloor(minutes / 60);\n        data.hours = hours % 24;\n\n        days += absFloor(hours / 24);\n\n        // convert days to months\n        monthsFromDays = absFloor(daysToMonths(days));\n        months += monthsFromDays;\n        days -= absCeil(monthsToDays(monthsFromDays));\n\n        // 12 months -> 1 year\n        years = absFloor(months / 12);\n        months %= 12;\n\n        data.days = days;\n        data.months = months;\n        data.years = years;\n\n        return this;\n    }\n\n    function daysToMonths(days) {\n        // 400 years have 146097 days (taking into account leap year rules)\n        // 400 years have 12 months === 4800\n        return (days * 4800) / 146097;\n    }\n\n    function monthsToDays(months) {\n        // the reverse of daysToMonths\n        return (months * 146097) / 4800;\n    }\n\n    function as(units) {\n        if (!this.isValid()) {\n            return NaN;\n        }\n        var days,\n            months,\n            milliseconds = this._milliseconds;\n\n        units = normalizeUnits(units);\n\n        if (units === 'month' || units === 'quarter' || units === 'year') {\n            days = this._days + milliseconds / 864e5;\n            months = this._months + daysToMonths(days);\n            switch (units) {\n                case 'month':\n                    return months;\n                case 'quarter':\n                    return months / 3;\n                case 'year':\n                    return months / 12;\n            }\n        } else {\n            // handle milliseconds separately because of floating point math errors (issue #1867)\n            days = this._days + Math.round(monthsToDays(this._months));\n            switch (units) {\n                case 'week':\n                    return days / 7 + milliseconds / 6048e5;\n                case 'day':\n                    return days + milliseconds / 864e5;\n                case 'hour':\n                    return days * 24 + milliseconds / 36e5;\n                case 'minute':\n                    return days * 1440 + milliseconds / 6e4;\n                case 'second':\n                    return days * 86400 + milliseconds / 1000;\n                // Math.floor prevents floating point math errors here\n                case 'millisecond':\n                    return Math.floor(days * 864e5) + milliseconds;\n                default:\n                    throw new Error('Unknown unit ' + units);\n            }\n        }\n    }\n\n    // TODO: Use this.as('ms')?\n    function valueOf$1() {\n        if (!this.isValid()) {\n            return NaN;\n        }\n        return (\n            this._milliseconds +\n            this._days * 864e5 +\n            (this._months % 12) * 2592e6 +\n            toInt(this._months / 12) * 31536e6\n        );\n    }\n\n    function makeAs(alias) {\n        return function () {\n            return this.as(alias);\n        };\n    }\n\n    var asMilliseconds = makeAs('ms'),\n        asSeconds = makeAs('s'),\n        asMinutes = makeAs('m'),\n        asHours = makeAs('h'),\n        asDays = makeAs('d'),\n        asWeeks = makeAs('w'),\n        asMonths = makeAs('M'),\n        asQuarters = makeAs('Q'),\n        asYears = makeAs('y');\n\n    function clone$1() {\n        return createDuration(this);\n    }\n\n    function get$2(units) {\n        units = normalizeUnits(units);\n        return this.isValid() ? this[units + 's']() : NaN;\n    }\n\n    function makeGetter(name) {\n        return function () {\n            return this.isValid() ? this._data[name] : NaN;\n        };\n    }\n\n    var milliseconds = makeGetter('milliseconds'),\n        seconds = makeGetter('seconds'),\n        minutes = makeGetter('minutes'),\n        hours = makeGetter('hours'),\n        days = makeGetter('days'),\n        months = makeGetter('months'),\n        years = makeGetter('years');\n\n    function weeks() {\n        return absFloor(this.days() / 7);\n    }\n\n    var round = Math.round,\n        thresholds = {\n            ss: 44, // a few seconds to seconds\n            s: 45, // seconds to minute\n            m: 45, // minutes to hour\n            h: 22, // hours to day\n            d: 26, // days to month/week\n            w: null, // weeks to month\n            M: 11, // months to year\n        };\n\n    // helper function for moment.fn.from, moment.fn.fromNow, and moment.duration.fn.humanize\n    function substituteTimeAgo(string, number, withoutSuffix, isFuture, locale) {\n        return locale.relativeTime(number || 1, !!withoutSuffix, string, isFuture);\n    }\n\n    function relativeTime$1(posNegDuration, withoutSuffix, thresholds, locale) {\n        var duration = createDuration(posNegDuration).abs(),\n            seconds = round(duration.as('s')),\n            minutes = round(duration.as('m')),\n            hours = round(duration.as('h')),\n            days = round(duration.as('d')),\n            months = round(duration.as('M')),\n            weeks = round(duration.as('w')),\n            years = round(duration.as('y')),\n            a =\n                (seconds <= thresholds.ss && ['s', seconds]) ||\n                (seconds < thresholds.s && ['ss', seconds]) ||\n                (minutes <= 1 && ['m']) ||\n                (minutes < thresholds.m && ['mm', minutes]) ||\n                (hours <= 1 && ['h']) ||\n                (hours < thresholds.h && ['hh', hours]) ||\n                (days <= 1 && ['d']) ||\n                (days < thresholds.d && ['dd', days]);\n\n        if (thresholds.w != null) {\n            a =\n                a ||\n                (weeks <= 1 && ['w']) ||\n                (weeks < thresholds.w && ['ww', weeks]);\n        }\n        a = a ||\n            (months <= 1 && ['M']) ||\n            (months < thresholds.M && ['MM', months]) ||\n            (years <= 1 && ['y']) || ['yy', years];\n\n        a[2] = withoutSuffix;\n        a[3] = +posNegDuration > 0;\n        a[4] = locale;\n        return substituteTimeAgo.apply(null, a);\n    }\n\n    // This function allows you to set the rounding function for relative time strings\n    function getSetRelativeTimeRounding(roundingFunction) {\n        if (roundingFunction === undefined) {\n            return round;\n        }\n        if (typeof roundingFunction === 'function') {\n            round = roundingFunction;\n            return true;\n        }\n        return false;\n    }\n\n    // This function allows you to set a threshold for relative time strings\n    function getSetRelativeTimeThreshold(threshold, limit) {\n        if (thresholds[threshold] === undefined) {\n            return false;\n        }\n        if (limit === undefined) {\n            return thresholds[threshold];\n        }\n        thresholds[threshold] = limit;\n        if (threshold === 's') {\n            thresholds.ss = limit - 1;\n        }\n        return true;\n    }\n\n    function humanize(argWithSuffix, argThresholds) {\n        if (!this.isValid()) {\n            return this.localeData().invalidDate();\n        }\n\n        var withSuffix = false,\n            th = thresholds,\n            locale,\n            output;\n\n        if (typeof argWithSuffix === 'object') {\n            argThresholds = argWithSuffix;\n            argWithSuffix = false;\n        }\n        if (typeof argWithSuffix === 'boolean') {\n            withSuffix = argWithSuffix;\n        }\n        if (typeof argThresholds === 'object') {\n            th = Object.assign({}, thresholds, argThresholds);\n            if (argThresholds.s != null && argThresholds.ss == null) {\n                th.ss = argThresholds.s - 1;\n            }\n        }\n\n        locale = this.localeData();\n        output = relativeTime$1(this, !withSuffix, th, locale);\n\n        if (withSuffix) {\n            output = locale.pastFuture(+this, output);\n        }\n\n        return locale.postformat(output);\n    }\n\n    var abs$1 = Math.abs;\n\n    function sign(x) {\n        return (x > 0) - (x < 0) || +x;\n    }\n\n    function toISOString$1() {\n        // for ISO strings we do not use the normal bubbling rules:\n        //  * milliseconds bubble up until they become hours\n        //  * days do not bubble at all\n        //  * months bubble up until they become years\n        // This is because there is no context-free conversion between hours and days\n        // (think of clock changes)\n        // and also not between days and months (28-31 days per month)\n        if (!this.isValid()) {\n            return this.localeData().invalidDate();\n        }\n\n        var seconds = abs$1(this._milliseconds) / 1000,\n            days = abs$1(this._days),\n            months = abs$1(this._months),\n            minutes,\n            hours,\n            years,\n            s,\n            total = this.asSeconds(),\n            totalSign,\n            ymSign,\n            daysSign,\n            hmsSign;\n\n        if (!total) {\n            // this is the same as C#'s (Noda) and python (isodate)...\n            // but not other JS (goog.date)\n            return 'P0D';\n        }\n\n        // 3600 seconds -> 60 minutes -> 1 hour\n        minutes = absFloor(seconds / 60);\n        hours = absFloor(minutes / 60);\n        seconds %= 60;\n        minutes %= 60;\n\n        // 12 months -> 1 year\n        years = absFloor(months / 12);\n        months %= 12;\n\n        // inspired by https://github.com/dordille/moment-isoduration/blob/master/moment.isoduration.js\n        s = seconds ? seconds.toFixed(3).replace(/\\.?0+$/, '') : '';\n\n        totalSign = total < 0 ? '-' : '';\n        ymSign = sign(this._months) !== sign(total) ? '-' : '';\n        daysSign = sign(this._days) !== sign(total) ? '-' : '';\n        hmsSign = sign(this._milliseconds) !== sign(total) ? '-' : '';\n\n        return (\n            totalSign +\n            'P' +\n            (years ? ymSign + years + 'Y' : '') +\n            (months ? ymSign + months + 'M' : '') +\n            (days ? daysSign + days + 'D' : '') +\n            (hours || minutes || seconds ? 'T' : '') +\n            (hours ? hmsSign + hours + 'H' : '') +\n            (minutes ? hmsSign + minutes + 'M' : '') +\n            (seconds ? hmsSign + s + 'S' : '')\n        );\n    }\n\n    var proto$2 = Duration.prototype;\n\n    proto$2.isValid = isValid$1;\n    proto$2.abs = abs;\n    proto$2.add = add$1;\n    proto$2.subtract = subtract$1;\n    proto$2.as = as;\n    proto$2.asMilliseconds = asMilliseconds;\n    proto$2.asSeconds = asSeconds;\n    proto$2.asMinutes = asMinutes;\n    proto$2.asHours = asHours;\n    proto$2.asDays = asDays;\n    proto$2.asWeeks = asWeeks;\n    proto$2.asMonths = asMonths;\n    proto$2.asQuarters = asQuarters;\n    proto$2.asYears = asYears;\n    proto$2.valueOf = valueOf$1;\n    proto$2._bubble = bubble;\n    proto$2.clone = clone$1;\n    proto$2.get = get$2;\n    proto$2.milliseconds = milliseconds;\n    proto$2.seconds = seconds;\n    proto$2.minutes = minutes;\n    proto$2.hours = hours;\n    proto$2.days = days;\n    proto$2.weeks = weeks;\n    proto$2.months = months;\n    proto$2.years = years;\n    proto$2.humanize = humanize;\n    proto$2.toISOString = toISOString$1;\n    proto$2.toString = toISOString$1;\n    proto$2.toJSON = toISOString$1;\n    proto$2.locale = locale;\n    proto$2.localeData = localeData;\n\n    proto$2.toIsoString = deprecate(\n        'toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)',\n        toISOString$1\n    );\n    proto$2.lang = lang;\n\n    // FORMATTING\n\n    addFormatToken('X', 0, 0, 'unix');\n    addFormatToken('x', 0, 0, 'valueOf');\n\n    // PARSING\n\n    addRegexToken('x', matchSigned);\n    addRegexToken('X', matchTimestamp);\n    addParseToken('X', function (input, array, config) {\n        config._d = new Date(parseFloat(input) * 1000);\n    });\n    addParseToken('x', function (input, array, config) {\n        config._d = new Date(toInt(input));\n    });\n\n    //! moment.js\n\n    hooks.version = '2.29.4';\n\n    setHookCallback(createLocal);\n\n    hooks.fn = proto;\n    hooks.min = min;\n    hooks.max = max;\n    hooks.now = now;\n    hooks.utc = createUTC;\n    hooks.unix = createUnix;\n    hooks.months = listMonths;\n    hooks.isDate = isDate;\n    hooks.locale = getSetGlobalLocale;\n    hooks.invalid = createInvalid;\n    hooks.duration = createDuration;\n    hooks.isMoment = isMoment;\n    hooks.weekdays = listWeekdays;\n    hooks.parseZone = createInZone;\n    hooks.localeData = getLocale;\n    hooks.isDuration = isDuration;\n    hooks.monthsShort = listMonthsShort;\n    hooks.weekdaysMin = listWeekdaysMin;\n    hooks.defineLocale = defineLocale;\n    hooks.updateLocale = updateLocale;\n    hooks.locales = listLocales;\n    hooks.weekdaysShort = listWeekdaysShort;\n    hooks.normalizeUnits = normalizeUnits;\n    hooks.relativeTimeRounding = getSetRelativeTimeRounding;\n    hooks.relativeTimeThreshold = getSetRelativeTimeThreshold;\n    hooks.calendarFormat = getCalendarFormat;\n    hooks.prototype = proto;\n\n    // currently HTML5 input type only supports 24-hour formats\n    hooks.HTML5_FMT = {\n        DATETIME_LOCAL: 'YYYY-MM-DDTHH:mm', // <input type=\"datetime-local\" />\n        DATETIME_LOCAL_SECONDS: 'YYYY-MM-DDTHH:mm:ss', // <input type=\"datetime-local\" step=\"1\" />\n        DATETIME_LOCAL_MS: 'YYYY-MM-DDTHH:mm:ss.SSS', // <input type=\"datetime-local\" step=\"0.001\" />\n        DATE: 'YYYY-MM-DD', // <input type=\"date\" />\n        TIME: 'HH:mm', // <input type=\"time\" />\n        TIME_SECONDS: 'HH:mm:ss', // <input type=\"time\" step=\"1\" />\n        TIME_MS: 'HH:mm:ss.SSS', // <input type=\"time\" step=\"0.001\" />\n        WEEK: 'GGGG-[W]WW', // <input type=\"week\" />\n        MONTH: 'YYYY-MM', // <input type=\"month\" />\n    };\n\n    return hooks;\n\n})));\n","/*\nobject-assign\n(c) Sindre Sorhus\n@license MIT\n*/\n\n'use strict';\n/* eslint-disable no-unused-vars */\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nvar propIsEnumerable = Object.prototype.propertyIsEnumerable;\n\nfunction toObject(val) {\n\tif (val === null || val === undefined) {\n\t\tthrow new TypeError('Object.assign cannot be called with null or undefined');\n\t}\n\n\treturn Object(val);\n}\n\nfunction shouldUseNative() {\n\ttry {\n\t\tif (!Object.assign) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Detect buggy property enumeration order in older V8 versions.\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=4118\n\t\tvar test1 = new String('abc');  // eslint-disable-line no-new-wrappers\n\t\ttest1[5] = 'de';\n\t\tif (Object.getOwnPropertyNames(test1)[0] === '5') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test2 = {};\n\t\tfor (var i = 0; i < 10; i++) {\n\t\t\ttest2['_' + String.fromCharCode(i)] = i;\n\t\t}\n\t\tvar order2 = Object.getOwnPropertyNames(test2).map(function (n) {\n\t\t\treturn test2[n];\n\t\t});\n\t\tif (order2.join('') !== '0123456789') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test3 = {};\n\t\t'abcdefghijklmnopqrst'.split('').forEach(function (letter) {\n\t\t\ttest3[letter] = letter;\n\t\t});\n\t\tif (Object.keys(Object.assign({}, test3)).join('') !==\n\t\t\t\t'abcdefghijklmnopqrst') {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t} catch (err) {\n\t\t// We don't expect any of the above to throw, but better to be safe.\n\t\treturn false;\n\t}\n}\n\nmodule.exports = shouldUseNative() ? Object.assign : function (target, source) {\n\tvar from;\n\tvar to = toObject(target);\n\tvar symbols;\n\n\tfor (var s = 1; s < arguments.length; s++) {\n\t\tfrom = Object(arguments[s]);\n\n\t\tfor (var key in from) {\n\t\t\tif (hasOwnProperty.call(from, key)) {\n\t\t\t\tto[key] = from[key];\n\t\t\t}\n\t\t}\n\n\t\tif (getOwnPropertySymbols) {\n\t\t\tsymbols = getOwnPropertySymbols(from);\n\t\t\tfor (var i = 0; i < symbols.length; i++) {\n\t\t\t\tif (propIsEnumerable.call(from, symbols[i])) {\n\t\t\t\t\tto[symbols[i]] = from[symbols[i]];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn to;\n};\n","'use strict';\n\nfunction checkDCE() {\n  /* global __REACT_DEVTOOLS_GLOBAL_HOOK__ */\n  if (\n    typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ === 'undefined' ||\n    typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE !== 'function'\n  ) {\n    return;\n  }\n  if (process.env.NODE_ENV !== 'production') {\n    // This branch is unreachable because this function is only called\n    // in production, but the condition is true only in development.\n    // Therefore if the branch is still here, dead code elimination wasn't\n    // properly applied.\n    // Don't change the message. React DevTools relies on it. Also make sure\n    // this message doesn't occur elsewhere in this function, or it will cause\n    // a false positive.\n    throw new Error('^_^');\n  }\n  try {\n    // Verify that the code above has been dead code eliminated (DCE'd).\n    __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(checkDCE);\n  } catch (err) {\n    // DevTools shouldn't crash React, no matter what.\n    // We should still report in case we break this code.\n    console.error(err);\n  }\n}\n\nif (process.env.NODE_ENV === 'production') {\n  // DCE check should happen before ReactDOM bundle executes so that\n  // DevTools can report bad minification during injection.\n  checkDCE();\n  module.exports = require('./cjs/react-dom.production.min.js');\n} else {\n  module.exports = require('./cjs/react-dom.development.js');\n}\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n  module.exports = require('./cjs/react.production.min.js');\n} else {\n  module.exports = require('./cjs/react.development.js');\n}\n","/** @license React v0.19.1\n * scheduler.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';var f,g,h,k,l;\nif(\"undefined\"===typeof window||\"function\"!==typeof MessageChannel){var p=null,q=null,t=function(){if(null!==p)try{var a=exports.unstable_now();p(!0,a);p=null}catch(b){throw setTimeout(t,0),b;}},u=Date.now();exports.unstable_now=function(){return Date.now()-u};f=function(a){null!==p?setTimeout(f,0,a):(p=a,setTimeout(t,0))};g=function(a,b){q=setTimeout(a,b)};h=function(){clearTimeout(q)};k=function(){return!1};l=exports.unstable_forceFrameRate=function(){}}else{var w=window.performance,x=window.Date,\ny=window.setTimeout,z=window.clearTimeout;if(\"undefined\"!==typeof console){var A=window.cancelAnimationFrame;\"function\"!==typeof window.requestAnimationFrame&&console.error(\"This browser doesn't support requestAnimationFrame. Make sure that you load a polyfill in older browsers. https://fb.me/react-polyfills\");\"function\"!==typeof A&&console.error(\"This browser doesn't support cancelAnimationFrame. Make sure that you load a polyfill in older browsers. https://fb.me/react-polyfills\")}if(\"object\"===\ntypeof w&&\"function\"===typeof w.now)exports.unstable_now=function(){return w.now()};else{var B=x.now();exports.unstable_now=function(){return x.now()-B}}var C=!1,D=null,E=-1,F=5,G=0;k=function(){return exports.unstable_now()>=G};l=function(){};exports.unstable_forceFrameRate=function(a){0>a||125<a?console.error(\"forceFrameRate takes a positive int between 0 and 125, forcing framerates higher than 125 fps is not unsupported\"):F=0<a?Math.floor(1E3/a):5};var H=new MessageChannel,I=H.port2;H.port1.onmessage=\nfunction(){if(null!==D){var a=exports.unstable_now();G=a+F;try{D(!0,a)?I.postMessage(null):(C=!1,D=null)}catch(b){throw I.postMessage(null),b;}}else C=!1};f=function(a){D=a;C||(C=!0,I.postMessage(null))};g=function(a,b){E=y(function(){a(exports.unstable_now())},b)};h=function(){z(E);E=-1}}function J(a,b){var c=a.length;a.push(b);a:for(;;){var d=c-1>>>1,e=a[d];if(void 0!==e&&0<K(e,b))a[d]=b,a[c]=e,c=d;else break a}}function L(a){a=a[0];return void 0===a?null:a}\nfunction M(a){var b=a[0];if(void 0!==b){var c=a.pop();if(c!==b){a[0]=c;a:for(var d=0,e=a.length;d<e;){var m=2*(d+1)-1,n=a[m],v=m+1,r=a[v];if(void 0!==n&&0>K(n,c))void 0!==r&&0>K(r,n)?(a[d]=r,a[v]=c,d=v):(a[d]=n,a[m]=c,d=m);else if(void 0!==r&&0>K(r,c))a[d]=r,a[v]=c,d=v;else break a}}return b}return null}function K(a,b){var c=a.sortIndex-b.sortIndex;return 0!==c?c:a.id-b.id}var N=[],O=[],P=1,Q=null,R=3,S=!1,T=!1,U=!1;\nfunction V(a){for(var b=L(O);null!==b;){if(null===b.callback)M(O);else if(b.startTime<=a)M(O),b.sortIndex=b.expirationTime,J(N,b);else break;b=L(O)}}function W(a){U=!1;V(a);if(!T)if(null!==L(N))T=!0,f(X);else{var b=L(O);null!==b&&g(W,b.startTime-a)}}\nfunction X(a,b){T=!1;U&&(U=!1,h());S=!0;var c=R;try{V(b);for(Q=L(N);null!==Q&&(!(Q.expirationTime>b)||a&&!k());){var d=Q.callback;if(null!==d){Q.callback=null;R=Q.priorityLevel;var e=d(Q.expirationTime<=b);b=exports.unstable_now();\"function\"===typeof e?Q.callback=e:Q===L(N)&&M(N);V(b)}else M(N);Q=L(N)}if(null!==Q)var m=!0;else{var n=L(O);null!==n&&g(W,n.startTime-b);m=!1}return m}finally{Q=null,R=c,S=!1}}\nfunction Y(a){switch(a){case 1:return-1;case 2:return 250;case 5:return 1073741823;case 4:return 1E4;default:return 5E3}}var Z=l;exports.unstable_IdlePriority=5;exports.unstable_ImmediatePriority=1;exports.unstable_LowPriority=4;exports.unstable_NormalPriority=3;exports.unstable_Profiling=null;exports.unstable_UserBlockingPriority=2;exports.unstable_cancelCallback=function(a){a.callback=null};exports.unstable_continueExecution=function(){T||S||(T=!0,f(X))};\nexports.unstable_getCurrentPriorityLevel=function(){return R};exports.unstable_getFirstCallbackNode=function(){return L(N)};exports.unstable_next=function(a){switch(R){case 1:case 2:case 3:var b=3;break;default:b=R}var c=R;R=b;try{return a()}finally{R=c}};exports.unstable_pauseExecution=function(){};exports.unstable_requestPaint=Z;exports.unstable_runWithPriority=function(a,b){switch(a){case 1:case 2:case 3:case 4:case 5:break;default:a=3}var c=R;R=a;try{return b()}finally{R=c}};\nexports.unstable_scheduleCallback=function(a,b,c){var d=exports.unstable_now();if(\"object\"===typeof c&&null!==c){var e=c.delay;e=\"number\"===typeof e&&0<e?d+e:d;c=\"number\"===typeof c.timeout?c.timeout:Y(a)}else c=Y(a),e=d;c=e+c;a={id:P++,callback:b,priorityLevel:a,startTime:e,expirationTime:c,sortIndex:-1};e>d?(a.sortIndex=e,J(O,a),null===L(N)&&a===L(O)&&(U?h():U=!0,g(W,e-d))):(a.sortIndex=c,J(N,a),T||S||(T=!0,f(X)));return a};\nexports.unstable_shouldYield=function(){var a=exports.unstable_now();V(a);var b=L(N);return b!==Q&&null!==Q&&null!==b&&null!==b.callback&&b.startTime<=a&&b.expirationTime<Q.expirationTime||k()};exports.unstable_wrapCallback=function(a){var b=R;return function(){var c=R;R=b;try{return a.apply(this,arguments)}finally{R=c}}};\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n  module.exports = require('./cjs/scheduler.production.min.js');\n} else {\n  module.exports = require('./cjs/scheduler.development.js');\n}\n","// @flow\n// NOTE: This file is also imported from frontend JS application so that this\n//       file is the only one acting as the source of truth of what are the\n//       available locales!\n\n// Use a tuple type for locales as that disallows both adding new locales\n// or removing old locales without changing types.\n\n// Note: this file is not auto-formatted with Prettier as it would remove the\n// flow comments\n\nconst locales /*: ['fi', 'sv', 'en', 'da', 'pl', 'es', 'de', 'tra'] */ = [\n  'fi',\n  'sv',\n  'en',\n  'da',\n  'pl',\n  'es',\n  'de',\n  'tra'\n];\n\n/*::\nexport type Locale = 'fi' | 'sv' | 'en' | 'da' | 'pl' | 'es' | 'de' | 'tra';\n\n// This makes sure that all defined locales are specified in Locale type above\n(locales.map(locale => (locale: Locale)));\n*/\n\nmodule.exports = { locales };\n","import * as React from 'react';\nwindow.React = React;\n","import i18nFallbacks from 'railsRoot/config/i18n_fallbacks.json';\nimport I18n from 'i18n-js';\n\nexport default function i18nSetup() {\n  window.I18n = I18n;\n  I18n.locale = __LOCALE__;\n  I18n.defaultLocale = 'fi';\n  I18n.translations = I18N_RUNTIME_TRANSLATIONS;\n  I18n.placeholder = /%\\{(.*?)\\}/gm;\n\n  // Configure runtime I18n.t to test each fallback locale in the\n  // defined order before falling back to the default missing translation\n  // logic -- which most likely would show an error.\n  //\n  // This replicates the logic we see on Rails side.\n  const originalMissingTranslation = I18n.missingTranslation;\n  I18n.missingTranslation = function (scope, options) {\n    // English translation doesn't define fallback locales, so we\n    // default to an empty array of fallback locales to not crash when\n    // fallback locales don't exist.\n    //\n    // This makes a missing translation error show up in case I18n.t\n    // ends up using a translation that doesn't exist and we use English.\n    const fallbackLocales = i18nFallbacks[this.locale] || [];\n    if (options.__usedFallbackLocales >= fallbackLocales.length) {\n      return originalMissingTranslation.call(this, scope, options);\n    }\n    const nextFallbackLocaleIndex =\n      typeof options.__usedFallbackLocales === 'undefined'\n        ? 0\n        : options.__usedFallbackLocales + 1;\n    return I18n.t(scope, {\n      ...options,\n      locale: fallbackLocales[nextFallbackLocaleIndex],\n      __usedFallbackLocales: nextFallbackLocaleIndex\n    });\n  };\n\n  // We want missing placeholders to not output anything in order for the In-Context\n  // translation mode to pick the original translation as it was in the language under\n  // translation -- that is, we want to effectively disable interpolation altogether.\n  if (__LOCALE__ === 'tra') {\n    I18n.missingPlaceholder = placeholder => placeholder;\n  }\n}\n","// @flow\n\nimport * as React from 'react';\nimport ReactDOM from 'react-dom';\nimport Honeybadger from '@honeybadger-io/js';\n\nimport { HoneybadgerErrorBoundary } from '@honeybadger-io/react';\nimport ErrorComponent from 'common/components/ErrorComponent.js';\n\ntype AnyProps = {| [string]: any |};\n\ntype ComponentMap = any;\ntype LazyComponentMap = any;\n\nexport function exposeComponents(mountableComponents: ComponentMap) {\n  window.Venuu.REACT_COMPONENTS = {\n    ...window.Venuu.REACT_COMPONENTS,\n    ...mountableComponents\n  };\n}\n\nexport function exposeLazyComponents(mountableComponents: LazyComponentMap) {\n  window.Venuu.REACT_LAZY_COMPONENTS = {\n    ...window.Venuu.REACT_LAZY_COMPONENTS,\n    ...mountableComponents\n  };\n}\n\nexport function createElement(\n  component: React.ComponentType<AnyProps>,\n  props: AnyProps\n): React.Node {\n  // $FlowFixMe[not-a-function] -- Suppressed during Flow upgrade to 0.241.0. Delete this comment to view the error.\n  return React.createElement(component, props);\n}\n\nconst mountComponentFromNode = (node: HTMLElement) => {\n  const componentName = node.getAttribute('data-react-class');\n  const componentId = node.getAttribute('data-component-id');\n  if (!componentName || !componentId) {\n    throw new Error(\"Can't mount react node\");\n  }\n  const props = window.Venuu.REACT_PROPS[`${componentName}:${componentId}`];\n  mountComponent(componentName, props, node);\n};\n\nfunction mountComponent(\n  componentName: string,\n  props: AnyProps,\n  node: HTMLElement\n) {\n  const normalComponent =\n    window.Venuu.REACT_COMPONENTS &&\n    window.Venuu.REACT_COMPONENTS[componentName];\n  const loadLazyComponent =\n    window.Venuu.REACT_LAZY_COMPONENTS &&\n    window.Venuu.REACT_LAZY_COMPONENTS[componentName];\n\n  if (normalComponent) {\n    render(normalComponent, props, node);\n  } else if (loadLazyComponent) {\n    loadLazyComponent()\n      .then(component => {\n        render(component, props, node);\n      })\n      .catch(err => {\n        // eslint-disable-next-line no-console\n        console.error(err);\n      });\n  } else {\n    throw new Error(\n      `Could not find mountable component ${componentName}. ` +\n        'You need to expose it through REACT_COMPONENTS or REACT_LAZY_COMPONENTS.'\n    );\n  }\n}\n\nfunction render(component: any, props: AnyProps, node: HTMLElement) {\n  try {\n    Honeybadger.setContext({ component: component.name, props });\n    // $FlowFixMe[incompatible-type] createElement() has a too wide potential return type\n    const element: React.Element<React.ElementType> = createElement(\n      component,\n      props\n    );\n    // TODO: Call ReactDOM.hydrate instead when the component has been server-rendered\n    ReactDOM.render(\n      <HoneybadgerErrorBoundary\n        honeybadger={Honeybadger}\n        ErrorComponent={ErrorComponent}\n      >\n        {element}\n      </HoneybadgerErrorBoundary>,\n      node\n    );\n  } finally {\n    Honeybadger.setContext({ component: null, props: null });\n  }\n}\n\nexport function mountAllComponents() {\n  const reactNodes = document.querySelectorAll('[data-react-class]');\n\n  // YYyeah, document.querySelectorAll doesn't return an Array but a NodeList object. And that\n  // fucker naturally doesn't support .map function, because DOM API sucks balls, so we have to\n  // rely on normal for-loop to iterate the nodes.\n  // https://developer.mozilla.org/en-US/docs/Web/API/NodeList#Why_is_NodeList_not_an_Array\n  for (let i = 0; i < reactNodes.length; i++) {\n    mountComponentFromNode(reactNodes[i]);\n  }\n}\n","// Setup moment.js locale bundle-wide\nimport moment from 'moment';\nimport 'moment/locale/current';\nmoment.locale(__LOCALE__ === 'en' ? 'en-gb' : __LOCALE__);\n","// @flow\n\nimport Honeybadger from '@honeybadger-io/js';\nimport { retrieve } from 'putki';\nimport actionEntryPoints from './actionEntryPoints';\nimport $ from 'jquery';\n\nfunction buildModuleName(controller: string, action: string) {\n  const camelCaseController = controller.replace(/(_\\w)/g, match =>\n    match[1].toUpperCase()\n  );\n  const upcaseAction = action.replace(/^./, match => match.toUpperCase());\n  return `${camelCaseController}${upcaseAction}`;\n}\n\nfunction actionAlias(action: string): string {\n  const crudAliases: { [string]: ?string } = {\n    update: 'edit',\n    create: 'new'\n  };\n  return crudAliases[action] || action;\n}\n\nfunction findScript(controller: string, action: string) {\n  const moduleNameWithAction = buildModuleName(controller, actionAlias(action));\n  const moduleNameWithoutAction = buildModuleName(controller, '');\n\n  if (typeof actionEntryPoints[moduleNameWithAction] === 'function') {\n    const actionFunc = actionEntryPoints[moduleNameWithAction];\n    return actionFunc();\n  }\n\n  if (typeof actionEntryPoints[moduleNameWithoutAction] === 'function') {\n    const actionFunc = actionEntryPoints[moduleNameWithoutAction];\n    return actionFunc();\n  }\n\n  return Promise.resolve({ default: () => {} });\n}\n\nconst controller = retrieve('controller');\nconst action = retrieve('action');\n\nif (typeof controller === 'string' && typeof action === 'string') {\n  findScript(controller, action)\n    .then(module => module.default)\n    .then(initializer => {\n      $(document).ready(() => {\n        try {\n          initializer();\n        } catch (err) {\n          Honeybadger.notify(err);\n          // The error is thrown as that was what honeybadger-js v2.x used to do when\n          // we were wrapping the initializer with Honeybadger.wrap().\n          //\n          // It doesn't make much sense as nothing is going to catch this error.\n          //\n          // TODO: Handle an initializer error gracefully.\n          throw err;\n        }\n      });\n    })\n    .catch(err => {\n      // eslint-disable-next-line no-console\n      console.error(err);\n    });\n}\n","/**\n * LIMITATION:\n * For NPM setup, this feature flag singleton is shared between RUM and Logs product.\n * This means that an experimental flag set on the RUM product will be set on the Logs product.\n * So keep in mind that in certain configurations, your experimental feature flag may affect other products.\n *\n * FORMAT:\n * All feature flags should be snake_cased\n */\n// We want to use a real enum (i.e. not a const enum) here, to be able to check whether an arbitrary\n// string is an expected feature flag\nimport { objectHasValue } from './utils/objectUtils';\n// eslint-disable-next-line no-restricted-syntax\nexport var ExperimentalFeature;\n(function (ExperimentalFeature) {\n    ExperimentalFeature[\"WRITABLE_RESOURCE_GRAPHQL\"] = \"writable_resource_graphql\";\n    ExperimentalFeature[\"REMOTE_CONFIGURATION\"] = \"remote_configuration\";\n    ExperimentalFeature[\"LONG_ANIMATION_FRAME\"] = \"long_animation_frame\";\n    ExperimentalFeature[\"ANONYMOUS_USER_TRACKING\"] = \"anonymous_user_tracking\";\n    ExperimentalFeature[\"ACTION_NAME_MASKING\"] = \"action_name_masking\";\n    ExperimentalFeature[\"CONSISTENT_TRACE_SAMPLING\"] = \"consistent_trace_sampling\";\n    ExperimentalFeature[\"DELAY_VIEWPORT_COLLECTION\"] = \"delay_viewport_collection\";\n})(ExperimentalFeature || (ExperimentalFeature = {}));\nvar enabledExperimentalFeatures = new Set();\nexport function initFeatureFlags(enableExperimentalFeatures) {\n    if (Array.isArray(enableExperimentalFeatures)) {\n        addExperimentalFeatures(enableExperimentalFeatures.filter(function (flag) {\n            return objectHasValue(ExperimentalFeature, flag);\n        }));\n    }\n}\nexport function addExperimentalFeatures(enabledFeatures) {\n    enabledFeatures.forEach(function (flag) {\n        enabledExperimentalFeatures.add(flag);\n    });\n}\nexport function isExperimentalFeatureEnabled(featureName) {\n    return enabledExperimentalFeatures.has(featureName);\n}\nexport function resetExperimentalFeatures() {\n    enabledExperimentalFeatures.clear();\n}\nexport function getExperimentalFeatures() {\n    return enabledExperimentalFeatures;\n}\n//# sourceMappingURL=experimentalFeatures.js.map","import { addEventListener, Observable, setTimeout, clearTimeout, monitor, includes } from '@datadog/browser-core';\nimport { hasValidResourceEntryDuration, isAllowedRequestUrl } from '../domain/resource/resourceUtils';\nimport { retrieveFirstInputTiming } from './firstInputPolyfill';\n// We want to use a real enum (i.e. not a const enum) here, to be able to check whether an arbitrary\n// string is an expected performance entry\n// eslint-disable-next-line no-restricted-syntax\nexport var RumPerformanceEntryType;\n(function (RumPerformanceEntryType) {\n    RumPerformanceEntryType[\"EVENT\"] = \"event\";\n    RumPerformanceEntryType[\"FIRST_INPUT\"] = \"first-input\";\n    RumPerformanceEntryType[\"LARGEST_CONTENTFUL_PAINT\"] = \"largest-contentful-paint\";\n    RumPerformanceEntryType[\"LAYOUT_SHIFT\"] = \"layout-shift\";\n    RumPerformanceEntryType[\"LONG_TASK\"] = \"longtask\";\n    RumPerformanceEntryType[\"LONG_ANIMATION_FRAME\"] = \"long-animation-frame\";\n    RumPerformanceEntryType[\"NAVIGATION\"] = \"navigation\";\n    RumPerformanceEntryType[\"PAINT\"] = \"paint\";\n    RumPerformanceEntryType[\"RESOURCE\"] = \"resource\";\n})(RumPerformanceEntryType || (RumPerformanceEntryType = {}));\nexport function createPerformanceObservable(configuration, options) {\n    return new Observable(function (observable) {\n        if (!window.PerformanceObserver) {\n            return;\n        }\n        var handlePerformanceEntries = function (entries) {\n            var rumPerformanceEntries = filterRumPerformanceEntries(entries);\n            if (rumPerformanceEntries.length > 0) {\n                observable.notify(rumPerformanceEntries);\n            }\n        };\n        var timeoutId;\n        var isObserverInitializing = true;\n        var observer = new PerformanceObserver(monitor(function (entries) {\n            // In Safari the performance observer callback is synchronous.\n            // Because the buffered performance entry list can be quite large we delay the computation to prevent the SDK from blocking the main thread on init\n            if (isObserverInitializing) {\n                timeoutId = setTimeout(function () { return handlePerformanceEntries(entries.getEntries()); });\n            }\n            else {\n                handlePerformanceEntries(entries.getEntries());\n            }\n        }));\n        try {\n            observer.observe(options);\n        }\n        catch (_a) {\n            // Some old browser versions (<= chrome 74 ) don't support the PerformanceObserver type and buffered options\n            // In these cases, fallback to getEntriesByType and PerformanceObserver with entryTypes\n            // TODO: remove this fallback in the next major version\n            var fallbackSupportedEntryTypes = [\n                RumPerformanceEntryType.RESOURCE,\n                RumPerformanceEntryType.NAVIGATION,\n                RumPerformanceEntryType.LONG_TASK,\n                RumPerformanceEntryType.PAINT,\n            ];\n            if (includes(fallbackSupportedEntryTypes, options.type)) {\n                if (options.buffered) {\n                    timeoutId = setTimeout(function () { return handlePerformanceEntries(performance.getEntriesByType(options.type)); });\n                }\n                try {\n                    observer.observe({ entryTypes: [options.type] });\n                }\n                catch (_b) {\n                    // Old versions of Safari are throwing \"entryTypes contained only unsupported types\"\n                    // errors when observing only unsupported entry types.\n                    //\n                    // We could use `supportPerformanceTimingEvent` to make sure we don't invoke\n                    // `observer.observe` with an unsupported entry type, but Safari 11 and 12 don't support\n                    // `Performance.supportedEntryTypes`, so doing so would lose support for these versions\n                    // even if they do support the entry type.\n                    return;\n                }\n            }\n        }\n        isObserverInitializing = false;\n        manageResourceTimingBufferFull(configuration);\n        var stopFirstInputTiming;\n        if (!supportPerformanceTimingEvent(RumPerformanceEntryType.FIRST_INPUT) &&\n            options.type === RumPerformanceEntryType.FIRST_INPUT) {\n            ;\n            (stopFirstInputTiming = retrieveFirstInputTiming(configuration, function (timing) {\n                handlePerformanceEntries([timing]);\n            }).stop);\n        }\n        return function () {\n            observer.disconnect();\n            if (stopFirstInputTiming) {\n                stopFirstInputTiming();\n            }\n            clearTimeout(timeoutId);\n        };\n    });\n}\nvar resourceTimingBufferFullListener;\nfunction manageResourceTimingBufferFull(configuration) {\n    if (!resourceTimingBufferFullListener && supportPerformanceObject() && 'addEventListener' in performance) {\n        // https://bugzilla.mozilla.org/show_bug.cgi?id=1559377\n        resourceTimingBufferFullListener = addEventListener(configuration, performance, 'resourcetimingbufferfull', function () {\n            performance.clearResourceTimings();\n        });\n    }\n    return function () {\n        resourceTimingBufferFullListener === null || resourceTimingBufferFullListener === void 0 ? void 0 : resourceTimingBufferFullListener.stop();\n    };\n}\nfunction supportPerformanceObject() {\n    return window.performance !== undefined && 'getEntries' in performance;\n}\nexport function supportPerformanceTimingEvent(entryType) {\n    return (window.PerformanceObserver &&\n        PerformanceObserver.supportedEntryTypes !== undefined &&\n        PerformanceObserver.supportedEntryTypes.includes(entryType));\n}\nfunction filterRumPerformanceEntries(entries) {\n    return entries.filter(function (entry) { return !isForbiddenResource(entry); });\n}\nfunction isForbiddenResource(entry) {\n    return (entry.entryType === RumPerformanceEntryType.RESOURCE &&\n        (!isAllowedRequestUrl(entry.name) || !hasValidResourceEntryDuration(entry)));\n}\n//# sourceMappingURL=performanceObservable.js.map","import { catchUserErrors } from '../tools/catchUserErrors';\nimport { setDebugMode } from '../tools/monitor';\nimport { assign } from '../tools/utils/polyfills';\nimport { display } from '../tools/display';\nexport function makePublicApi(stub) {\n    var publicApi = assign({\n        version: \"5.35.1\",\n        // This API method is intentionally not monitored, since the only thing executed is the\n        // user-provided 'callback'.  All SDK usages executed in the callback should be monitored, and\n        // we don't want to interfere with the user uncaught exceptions.\n        onReady: function (callback) {\n            callback();\n        },\n    }, stub);\n    // Add a \"hidden\" property to set debug mode. We define it that way to hide it\n    // as much as possible but of course it's not a real protection.\n    Object.defineProperty(publicApi, '_setDebug', {\n        get: function () {\n            return setDebugMode;\n        },\n        enumerable: false,\n    });\n    return publicApi;\n}\nexport function defineGlobal(global, name, api) {\n    var existingGlobalVariable = global[name];\n    if (existingGlobalVariable && !existingGlobalVariable.q && existingGlobalVariable.version) {\n        display.warn('SDK is loaded more than once. This is unsupported and might have unexpected behavior.');\n    }\n    global[name] = api;\n    if (existingGlobalVariable && existingGlobalVariable.q) {\n        existingGlobalVariable.q.forEach(function (fn) { return catchUserErrors(fn, 'onReady callback threw an error:')(); });\n    }\n}\n//# sourceMappingURL=init.js.map","var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {\n    if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n        if (ar || !(i in from)) {\n            if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n            ar[i] = from[i];\n        }\n    }\n    return to.concat(ar || Array.prototype.slice.call(from));\n};\nimport { display } from './display';\nvar onMonitorErrorCollected;\nvar debugMode = false;\nexport function startMonitorErrorCollection(newOnMonitorErrorCollected) {\n    onMonitorErrorCollected = newOnMonitorErrorCollected;\n}\nexport function setDebugMode(newDebugMode) {\n    debugMode = newDebugMode;\n}\nexport function resetMonitor() {\n    onMonitorErrorCollected = undefined;\n    debugMode = false;\n}\nexport function monitored(_, __, descriptor) {\n    var originalMethod = descriptor.value;\n    descriptor.value = function () {\n        var args = [];\n        for (var _i = 0; _i < arguments.length; _i++) {\n            args[_i] = arguments[_i];\n        }\n        var decorated = onMonitorErrorCollected ? monitor(originalMethod) : originalMethod;\n        return decorated.apply(this, args);\n    };\n}\nexport function monitor(fn) {\n    return function () {\n        // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n        return callMonitored(fn, this, arguments);\n    }; // consider output type has input type\n}\nexport function callMonitored(fn, context, args) {\n    try {\n        // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n        return fn.apply(context, args);\n    }\n    catch (e) {\n        displayIfDebugEnabled(e);\n        if (onMonitorErrorCollected) {\n            try {\n                onMonitorErrorCollected(e);\n            }\n            catch (e) {\n                displayIfDebugEnabled(e);\n            }\n        }\n    }\n}\nexport function displayIfDebugEnabled() {\n    var args = [];\n    for (var _i = 0; _i < arguments.length; _i++) {\n        args[_i] = arguments[_i];\n    }\n    if (debugMode) {\n        display.error.apply(display, __spreadArray(['[MONITOR]'], args, false));\n    }\n}\n//# sourceMappingURL=monitor.js.map","import { isNumber, round } from './numberUtils';\nexport var ONE_SECOND = 1000;\nexport var ONE_MINUTE = 60 * ONE_SECOND;\nexport var ONE_HOUR = 60 * ONE_MINUTE;\nexport var ONE_DAY = 24 * ONE_HOUR;\nexport var ONE_YEAR = 365 * ONE_DAY;\nexport function relativeToClocks(relative) {\n    return { relative: relative, timeStamp: getCorrectedTimeStamp(relative) };\n}\nexport function timeStampToClocks(timeStamp) {\n    return { relative: getRelativeTime(timeStamp), timeStamp: timeStamp };\n}\nfunction getCorrectedTimeStamp(relativeTime) {\n    var correctedOrigin = (dateNow() - performance.now());\n    // apply correction only for positive drift\n    if (correctedOrigin > getNavigationStart()) {\n        return Math.round(addDuration(correctedOrigin, relativeTime));\n    }\n    return getTimeStamp(relativeTime);\n}\nexport function currentDrift() {\n    return Math.round(dateNow() - addDuration(getNavigationStart(), performance.now()));\n}\nexport function toServerDuration(duration) {\n    if (!isNumber(duration)) {\n        return duration;\n    }\n    return round(duration * 1e6, 0);\n}\nexport function dateNow() {\n    // Do not use `Date.now` because sometimes websites are wrongly \"polyfilling\" it. For example, we\n    // had some users using a very old version of `datejs`, which patched `Date.now` to return a Date\n    // instance instead of a timestamp[1]. Those users are unlikely to fix this, so let's handle this\n    // case ourselves.\n    // [1]: https://github.com/datejs/Datejs/blob/97f5c7c58c5bc5accdab8aa7602b6ac56462d778/src/core-debug.js#L14-L16\n    return new Date().getTime();\n}\nexport function timeStampNow() {\n    return dateNow();\n}\nexport function relativeNow() {\n    return performance.now();\n}\nexport function clocksNow() {\n    return { relative: relativeNow(), timeStamp: timeStampNow() };\n}\nexport function clocksOrigin() {\n    return { relative: 0, timeStamp: getNavigationStart() };\n}\nexport function elapsed(start, end) {\n    return (end - start);\n}\nexport function addDuration(a, b) {\n    return a + b;\n}\n/**\n * Get the time since the navigation was started.\n *\n * Note: this does not use `performance.timeOrigin` because it doesn't seem to reflect the actual\n * time on which the navigation has started: it may be much farther in the past, at least in Firefox 71.\n * Related issue in Firefox: https://bugzilla.mozilla.org/show_bug.cgi?id=1429926\n */\nexport function getRelativeTime(timestamp) {\n    return (timestamp - getNavigationStart());\n}\nexport function getTimeStamp(relativeTime) {\n    return Math.round(addDuration(getNavigationStart(), relativeTime));\n}\nexport function looksLikeRelativeTime(time) {\n    return time < ONE_YEAR;\n}\n/**\n * Navigation start slightly change on some rare cases\n */\nvar navigationStart;\nfunction getNavigationStart() {\n    if (navigationStart === undefined) {\n        navigationStart = performance.timing.navigationStart;\n    }\n    return navigationStart;\n}\n//# sourceMappingURL=timeUtils.js.map","import { jsonStringify } from '../serialisation/jsonStringify';\nexport function normalizeUrl(url) {\n    return buildUrl(url, location.href).href;\n}\nexport function isValidUrl(url) {\n    try {\n        return !!buildUrl(url);\n    }\n    catch (_a) {\n        return false;\n    }\n}\nexport function getPathName(url) {\n    var pathname = buildUrl(url).pathname;\n    return pathname[0] === '/' ? pathname : \"/\".concat(pathname);\n}\nexport function buildUrl(url, base) {\n    var supportedURL = getSupportedUrl();\n    if (supportedURL) {\n        try {\n            return base !== undefined ? new supportedURL(url, base) : new supportedURL(url);\n        }\n        catch (error) {\n            throw new Error(\"Failed to construct URL: \".concat(String(error), \" \").concat(jsonStringify({ url: url, base: base })));\n        }\n    }\n    if (base === undefined && !/:/.test(url)) {\n        throw new Error(\"Invalid URL: '\".concat(url, \"'\"));\n    }\n    var doc = document;\n    var anchorElement = doc.createElement('a');\n    if (base !== undefined) {\n        doc = document.implementation.createHTMLDocument('');\n        var baseElement = doc.createElement('base');\n        baseElement.href = base;\n        doc.head.appendChild(baseElement);\n        doc.body.appendChild(anchorElement);\n    }\n    anchorElement.href = url;\n    return anchorElement;\n}\nvar originalURL = URL;\nvar isURLSupported;\nfunction getSupportedUrl() {\n    if (isURLSupported === undefined) {\n        try {\n            var url = new originalURL('http://test/path');\n            isURLSupported = url.href === 'http://test/path';\n        }\n        catch (_a) {\n            isURLSupported = false;\n        }\n    }\n    return isURLSupported ? originalURL : undefined;\n}\n//# sourceMappingURL=urlPolyfill.js.map","import { instrumentMethod } from '../tools/instrumentMethod';\nimport { monitor } from '../tools/monitor';\nimport { Observable } from '../tools/observable';\nimport { assign } from '../tools/utils/polyfills';\nimport { clocksNow } from '../tools/utils/timeUtils';\nimport { normalizeUrl } from '../tools/utils/urlPolyfill';\nvar fetchObservable;\nexport function initFetchObservable() {\n    if (!fetchObservable) {\n        fetchObservable = createFetchObservable();\n    }\n    return fetchObservable;\n}\nexport function resetFetchObservable() {\n    fetchObservable = undefined;\n}\nfunction createFetchObservable() {\n    return new Observable(function (observable) {\n        if (!window.fetch) {\n            return;\n        }\n        var stop = instrumentMethod(window, 'fetch', function (call) { return beforeSend(call, observable); }, {\n            computeHandlingStack: true,\n        }).stop;\n        return stop;\n    });\n}\nfunction beforeSend(_a, observable) {\n    var parameters = _a.parameters, onPostCall = _a.onPostCall, handlingStack = _a.handlingStack;\n    var input = parameters[0], init = parameters[1];\n    var methodFromParams = init && init.method;\n    if (methodFromParams === undefined && input instanceof Request) {\n        methodFromParams = input.method;\n    }\n    var method = methodFromParams !== undefined ? String(methodFromParams).toUpperCase() : 'GET';\n    var url = input instanceof Request ? input.url : normalizeUrl(String(input));\n    var startClocks = clocksNow();\n    var context = {\n        state: 'start',\n        init: init,\n        input: input,\n        method: method,\n        startClocks: startClocks,\n        url: url,\n        handlingStack: handlingStack,\n    };\n    observable.notify(context);\n    // Those properties can be changed by observable subscribers\n    parameters[0] = context.input;\n    parameters[1] = context.init;\n    onPostCall(function (responsePromise) { return afterSend(observable, responsePromise, context); });\n}\nfunction afterSend(observable, responsePromise, startContext) {\n    var context = startContext;\n    function reportFetch(partialContext) {\n        context.state = 'resolve';\n        assign(context, partialContext);\n        observable.notify(context);\n    }\n    responsePromise.then(monitor(function (response) {\n        reportFetch({\n            response: response,\n            responseType: response.type,\n            status: response.status,\n            isAborted: false,\n        });\n    }), monitor(function (error) {\n        var _a, _b;\n        reportFetch({\n            status: 0,\n            isAborted: ((_b = (_a = context.init) === null || _a === void 0 ? void 0 : _a.signal) === null || _b === void 0 ? void 0 : _b.aborted) || (error instanceof DOMException && error.code === DOMException.ABORT_ERR),\n            error: error,\n        });\n    }));\n}\n//# sourceMappingURL=fetchObservable.js.map","import { display } from '../tools/display';\nimport { ONE_MINUTE, ONE_SECOND } from '../tools/utils/timeUtils';\nimport { findCommaSeparatedValue, findCommaSeparatedValues, generateUUID } from '../tools/utils/stringUtils';\nexport function setCookie(name, value, expireDelay, options) {\n    if (expireDelay === void 0) { expireDelay = 0; }\n    var date = new Date();\n    date.setTime(date.getTime() + expireDelay);\n    var expires = \"expires=\".concat(date.toUTCString());\n    var sameSite = options && options.crossSite ? 'none' : 'strict';\n    var domain = options && options.domain ? \";domain=\".concat(options.domain) : '';\n    var secure = options && options.secure ? ';secure' : '';\n    var partitioned = options && options.partitioned ? ';partitioned' : '';\n    document.cookie = \"\".concat(name, \"=\").concat(value, \";\").concat(expires, \";path=/;samesite=\").concat(sameSite).concat(domain).concat(secure).concat(partitioned);\n}\nexport function getCookie(name) {\n    return findCommaSeparatedValue(document.cookie, name);\n}\nvar initCookieParsed;\n/**\n * Returns a cached value of the cookie. Use this during SDK initialization (and whenever possible)\n * to avoid accessing document.cookie multiple times.\n */\nexport function getInitCookie(name) {\n    if (!initCookieParsed) {\n        initCookieParsed = findCommaSeparatedValues(document.cookie);\n    }\n    return initCookieParsed.get(name);\n}\nexport function resetInitCookies() {\n    initCookieParsed = undefined;\n}\nexport function deleteCookie(name, options) {\n    setCookie(name, '', 0, options);\n}\nexport function areCookiesAuthorized(options) {\n    if (document.cookie === undefined || document.cookie === null) {\n        return false;\n    }\n    try {\n        // Use a unique cookie name to avoid issues when the SDK is initialized multiple times during\n        // the test cookie lifetime\n        var testCookieName = \"dd_cookie_test_\".concat(generateUUID());\n        var testCookieValue = 'test';\n        setCookie(testCookieName, testCookieValue, ONE_MINUTE, options);\n        var isCookieCorrectlySet = getCookie(testCookieName) === testCookieValue;\n        deleteCookie(testCookieName, options);\n        return isCookieCorrectlySet;\n    }\n    catch (error) {\n        display.error(error);\n        return false;\n    }\n}\n/**\n * No API to retrieve it, number of levels for subdomain and suffix are unknown\n * strategy: find the minimal domain on which cookies are allowed to be set\n * https://web.dev/same-site-same-origin/#site\n */\nvar getCurrentSiteCache;\nexport function getCurrentSite() {\n    if (getCurrentSiteCache === undefined) {\n        // Use a unique cookie name to avoid issues when the SDK is initialized multiple times during\n        // the test cookie lifetime\n        var testCookieName = \"dd_site_test_\".concat(generateUUID());\n        var testCookieValue = 'test';\n        var domainLevels = window.location.hostname.split('.');\n        var candidateDomain = domainLevels.pop();\n        while (domainLevels.length && !getCookie(testCookieName)) {\n            candidateDomain = \"\".concat(domainLevels.pop(), \".\").concat(candidateDomain);\n            setCookie(testCookieName, testCookieValue, ONE_SECOND, { domain: candidateDomain });\n        }\n        deleteCookie(testCookieName, { domain: candidateDomain });\n        getCurrentSiteCache = candidateDomain;\n    }\n    return getCurrentSiteCache;\n}\n//# sourceMappingURL=cookie.js.map","export function isIE() {\n    return detectBrowserCached() === 0 /* Browser.IE */;\n}\nexport function isChromium() {\n    return detectBrowserCached() === 1 /* Browser.CHROMIUM */;\n}\nexport function isSafari() {\n    return detectBrowserCached() === 2 /* Browser.SAFARI */;\n}\nvar browserCache;\nfunction detectBrowserCached() {\n    return browserCache !== null && browserCache !== void 0 ? browserCache : (browserCache = detectBrowser());\n}\n// Exported only for tests\nexport function detectBrowser(browserWindow) {\n    var _a;\n    if (browserWindow === void 0) { browserWindow = window; }\n    var userAgent = browserWindow.navigator.userAgent;\n    if (browserWindow.chrome || /HeadlessChrome/.test(userAgent)) {\n        return 1 /* Browser.CHROMIUM */;\n    }\n    if (\n    // navigator.vendor is deprecated, but it is the most resilient way we found to detect\n    // \"Apple maintained browsers\" (AKA Safari). If one day it gets removed, we still have the\n    // useragent test as a semi-working fallback.\n    ((_a = browserWindow.navigator.vendor) === null || _a === void 0 ? void 0 : _a.indexOf('Apple')) === 0 ||\n        (/safari/i.test(userAgent) && !/chrome|android/i.test(userAgent))) {\n        return 2 /* Browser.SAFARI */;\n    }\n    if (browserWindow.document.documentMode) {\n        return 0 /* Browser.IE */;\n    }\n    return 3 /* Browser.OTHER */;\n}\n//# sourceMappingURL=browserDetection.js.map","import { setTimeout } from '../../tools/timer';\nimport { generateUUID } from '../../tools/utils/stringUtils';\nimport { assign } from '../../tools/utils/polyfills';\nimport { expandSessionState, isSessionInExpiredState } from './sessionState';\nexport var LOCK_RETRY_DELAY = 10;\nexport var LOCK_MAX_TRIES = 100;\nvar bufferedOperations = [];\nvar ongoingOperations;\nexport function processSessionStoreOperations(operations, sessionStoreStrategy, numberOfRetries) {\n    var _a;\n    if (numberOfRetries === void 0) { numberOfRetries = 0; }\n    var isLockEnabled = sessionStoreStrategy.isLockEnabled, persistSession = sessionStoreStrategy.persistSession, expireSession = sessionStoreStrategy.expireSession;\n    var persistWithLock = function (session) { return persistSession(assign({}, session, { lock: currentLock })); };\n    var retrieveStore = function () {\n        var session = sessionStoreStrategy.retrieveSession();\n        var lock = session.lock;\n        if (session.lock) {\n            delete session.lock;\n        }\n        return {\n            session: session,\n            lock: lock,\n        };\n    };\n    if (!ongoingOperations) {\n        ongoingOperations = operations;\n    }\n    if (operations !== ongoingOperations) {\n        bufferedOperations.push(operations);\n        return;\n    }\n    if (isLockEnabled && numberOfRetries >= LOCK_MAX_TRIES) {\n        next(sessionStoreStrategy);\n        return;\n    }\n    var currentLock;\n    var currentStore = retrieveStore();\n    if (isLockEnabled) {\n        // if someone has lock, retry later\n        if (currentStore.lock) {\n            retryLater(operations, sessionStoreStrategy, numberOfRetries);\n            return;\n        }\n        // acquire lock\n        currentLock = generateUUID();\n        persistWithLock(currentStore.session);\n        // if lock is not acquired, retry later\n        currentStore = retrieveStore();\n        if (currentStore.lock !== currentLock) {\n            retryLater(operations, sessionStoreStrategy, numberOfRetries);\n            return;\n        }\n    }\n    var processedSession = operations.process(currentStore.session);\n    if (isLockEnabled) {\n        // if lock corrupted after process, retry later\n        currentStore = retrieveStore();\n        if (currentStore.lock !== currentLock) {\n            retryLater(operations, sessionStoreStrategy, numberOfRetries);\n            return;\n        }\n    }\n    if (processedSession) {\n        if (isSessionInExpiredState(processedSession)) {\n            expireSession(processedSession);\n        }\n        else {\n            expandSessionState(processedSession);\n            if (isLockEnabled) {\n                persistWithLock(processedSession);\n            }\n            else {\n                persistSession(processedSession);\n            }\n        }\n    }\n    if (isLockEnabled) {\n        // correctly handle lock around expiration would require to handle this case properly at several levels\n        // since we don't have evidence of lock issues around expiration, let's just not do the corruption check for it\n        if (!(processedSession && isSessionInExpiredState(processedSession))) {\n            // if lock corrupted after persist, retry later\n            currentStore = retrieveStore();\n            if (currentStore.lock !== currentLock) {\n                retryLater(operations, sessionStoreStrategy, numberOfRetries);\n                return;\n            }\n            persistSession(currentStore.session);\n            processedSession = currentStore.session;\n        }\n    }\n    // call after even if session is not persisted in order to perform operations on\n    // up-to-date session state value => the value could have been modified by another tab\n    (_a = operations.after) === null || _a === void 0 ? void 0 : _a.call(operations, processedSession || currentStore.session);\n    next(sessionStoreStrategy);\n}\nfunction retryLater(operations, sessionStore, currentNumberOfRetries) {\n    setTimeout(function () {\n        processSessionStoreOperations(operations, sessionStore, currentNumberOfRetries + 1);\n    }, LOCK_RETRY_DELAY);\n}\nfunction next(sessionStore) {\n    ongoingOperations = undefined;\n    var nextOperations = bufferedOperations.shift();\n    if (nextOperations) {\n        processSessionStoreOperations(nextOperations, sessionStore);\n    }\n}\n//# sourceMappingURL=sessionStoreOperations.js.map","import { ExperimentalFeature, isExperimentalFeatureEnabled } from '@datadog/browser-core';\nimport { getCrypto } from '../../browser/crypto';\nexport function createTraceIdentifier() {\n    return createIdentifier(64);\n}\nexport function createSpanIdentifier() {\n    return createIdentifier(63);\n}\nvar createIdentifierImplementationCache;\nfunction createIdentifier(bits) {\n    if (!createIdentifierImplementationCache) {\n        createIdentifierImplementationCache =\n            isExperimentalFeatureEnabled(ExperimentalFeature.CONSISTENT_TRACE_SAMPLING) && areBigIntIdentifiersSupported()\n                ? createIdentifierUsingBigInt\n                : createIdentifierUsingUint32Array;\n    }\n    return createIdentifierImplementationCache(bits);\n}\nexport function areBigIntIdentifiersSupported() {\n    try {\n        crypto.getRandomValues(new BigUint64Array(1));\n        return true;\n    }\n    catch (_a) {\n        return false;\n    }\n}\nfunction createIdentifierUsingBigInt(bits) {\n    var id = crypto.getRandomValues(new BigUint64Array(1))[0];\n    if (bits === 63) {\n        // eslint-disable-next-line no-bitwise\n        id >>= BigInt('1');\n    }\n    return id;\n}\n// TODO: remove this when all browser we support have BigInt support\nfunction createIdentifierUsingUint32Array(bits) {\n    var buffer = getCrypto().getRandomValues(new Uint32Array(2));\n    if (bits === 63) {\n        // eslint-disable-next-line no-bitwise\n        buffer[buffer.length - 1] >>>= 1; // force 63-bit\n    }\n    return {\n        toString: function (radix) {\n            if (radix === void 0) { radix = 10; }\n            var high = buffer[1];\n            var low = buffer[0];\n            var str = '';\n            do {\n                var mod = (high % radix) * 4294967296 + low;\n                high = Math.floor(high / radix);\n                low = Math.floor(mod / radix);\n                str = (mod % radix).toString(radix) + str;\n            } while (high || low);\n            return str;\n        },\n    };\n}\nexport function toPaddedHexadecimalString(id) {\n    var traceId = id.toString(16);\n    // TODO: replace with String.prototype.padStart when we drop IE11 support\n    return Array(17 - traceId.length).join('0') + traceId;\n}\n//# sourceMappingURL=identifier.js.map","import { combine, isEmptyObject, timeStampNow, currentDrift, display, createEventRateLimiter, canUseEventBridge, assign, round, isExperimentalFeatureEnabled, ExperimentalFeature, getConnectivity, } from '@datadog/browser-core';\nimport { getSyntheticsContext } from './contexts/syntheticsContext';\nimport { limitModification } from './limitModification';\nvar VIEW_MODIFIABLE_FIELD_PATHS = {\n    'view.name': 'string',\n    'view.url': 'string',\n    'view.referrer': 'string',\n};\nvar USER_CUSTOMIZABLE_FIELD_PATHS = {\n    context: 'object',\n};\nvar ROOT_MODIFIABLE_FIELD_PATHS = {\n    service: 'string',\n    version: 'string',\n};\nvar modifiableFieldPathsByEvent;\nexport function startRumAssembly(configuration, lifeCycle, sessionManager, viewHistory, urlContexts, actionContexts, displayContext, ciVisibilityContext, getCommonContext, reportError) {\n    var _a, _b;\n    modifiableFieldPathsByEvent = (_a = {},\n        _a[\"view\" /* RumEventType.VIEW */] = assign({}, USER_CUSTOMIZABLE_FIELD_PATHS, VIEW_MODIFIABLE_FIELD_PATHS),\n        _a[\"error\" /* RumEventType.ERROR */] = assign({\n            'error.message': 'string',\n            'error.stack': 'string',\n            'error.resource.url': 'string',\n            'error.fingerprint': 'string',\n        }, USER_CUSTOMIZABLE_FIELD_PATHS, VIEW_MODIFIABLE_FIELD_PATHS, ROOT_MODIFIABLE_FIELD_PATHS),\n        _a[\"resource\" /* RumEventType.RESOURCE */] = assign({\n            'resource.url': 'string',\n        }, isExperimentalFeatureEnabled(ExperimentalFeature.WRITABLE_RESOURCE_GRAPHQL)\n            ? {\n                'resource.graphql': 'object',\n            }\n            : {}, USER_CUSTOMIZABLE_FIELD_PATHS, VIEW_MODIFIABLE_FIELD_PATHS, ROOT_MODIFIABLE_FIELD_PATHS),\n        _a[\"action\" /* RumEventType.ACTION */] = assign({\n            'action.target.name': 'string',\n        }, USER_CUSTOMIZABLE_FIELD_PATHS, VIEW_MODIFIABLE_FIELD_PATHS, ROOT_MODIFIABLE_FIELD_PATHS),\n        _a[\"long_task\" /* RumEventType.LONG_TASK */] = assign({}, USER_CUSTOMIZABLE_FIELD_PATHS, VIEW_MODIFIABLE_FIELD_PATHS),\n        _a[\"vital\" /* RumEventType.VITAL */] = assign({}, USER_CUSTOMIZABLE_FIELD_PATHS, VIEW_MODIFIABLE_FIELD_PATHS),\n        _a);\n    var eventRateLimiters = (_b = {},\n        _b[\"error\" /* RumEventType.ERROR */] = createEventRateLimiter(\"error\" /* RumEventType.ERROR */, configuration.eventRateLimiterThreshold, reportError),\n        _b[\"action\" /* RumEventType.ACTION */] = createEventRateLimiter(\"action\" /* RumEventType.ACTION */, configuration.eventRateLimiterThreshold, reportError),\n        _b[\"vital\" /* RumEventType.VITAL */] = createEventRateLimiter(\"vital\" /* RumEventType.VITAL */, configuration.eventRateLimiterThreshold, reportError),\n        _b);\n    var syntheticsContext = getSyntheticsContext();\n    lifeCycle.subscribe(12 /* LifeCycleEventType.RAW_RUM_EVENT_COLLECTED */, function (_a) {\n        var startTime = _a.startTime, rawRumEvent = _a.rawRumEvent, domainContext = _a.domainContext, savedCommonContext = _a.savedCommonContext, customerContext = _a.customerContext;\n        var viewHistoryEntry = viewHistory.findView(startTime);\n        var urlContext = urlContexts.findUrl(startTime);\n        var session = sessionManager.findTrackedSession(startTime);\n        if (session && viewHistoryEntry && urlContext) {\n            var commonContext = savedCommonContext || getCommonContext();\n            var actionId = actionContexts.findActionId(startTime);\n            var rumContext = {\n                _dd: {\n                    format_version: 2,\n                    drift: currentDrift(),\n                    configuration: {\n                        session_sample_rate: round(configuration.sessionSampleRate, 3),\n                        session_replay_sample_rate: round(configuration.sessionReplaySampleRate, 3),\n                    },\n                    browser_sdk_version: canUseEventBridge() ? \"5.35.1\" : undefined,\n                },\n                application: {\n                    id: configuration.applicationId,\n                },\n                date: timeStampNow(),\n                service: viewHistoryEntry.service || configuration.service,\n                version: viewHistoryEntry.version || configuration.version,\n                source: 'browser',\n                session: {\n                    id: session.id,\n                    type: syntheticsContext\n                        ? \"synthetics\" /* SessionType.SYNTHETICS */\n                        : ciVisibilityContext.get()\n                            ? \"ci_test\" /* SessionType.CI_TEST */\n                            : \"user\" /* SessionType.USER */,\n                },\n                view: {\n                    id: viewHistoryEntry.id,\n                    name: viewHistoryEntry.name,\n                    url: urlContext.url,\n                    referrer: urlContext.referrer,\n                },\n                action: needToAssembleWithAction(rawRumEvent) && actionId ? { id: actionId } : undefined,\n                synthetics: syntheticsContext,\n                ci_test: ciVisibilityContext.get(),\n                display: displayContext.get(),\n                connectivity: getConnectivity(),\n            };\n            var serverRumEvent = combine(rumContext, rawRumEvent);\n            serverRumEvent.context = combine(commonContext.context, viewHistoryEntry.context, customerContext);\n            if (!('has_replay' in serverRumEvent.session)) {\n                ;\n                serverRumEvent.session.has_replay = commonContext.hasReplay;\n            }\n            if (serverRumEvent.type === 'view') {\n                ;\n                serverRumEvent.session.sampled_for_replay =\n                    session.sessionReplay === 1 /* SessionReplayState.SAMPLED */;\n            }\n            if (\n            // TODO: remove ff and should always add anonymous user id\n            isExperimentalFeatureEnabled(ExperimentalFeature.ANONYMOUS_USER_TRACKING) &&\n                !commonContext.user.anonymous_id) {\n                commonContext.user.anonymous_id = session.anonymousId;\n            }\n            if (!isEmptyObject(commonContext.user)) {\n                ;\n                serverRumEvent.usr = commonContext.user;\n            }\n            if (shouldSend(serverRumEvent, configuration.beforeSend, domainContext, eventRateLimiters)) {\n                if (isEmptyObject(serverRumEvent.context)) {\n                    delete serverRumEvent.context;\n                }\n                lifeCycle.notify(13 /* LifeCycleEventType.RUM_EVENT_COLLECTED */, serverRumEvent);\n            }\n        }\n    });\n}\nfunction shouldSend(event, beforeSend, domainContext, eventRateLimiters) {\n    var _a;\n    if (beforeSend) {\n        var result = limitModification(event, modifiableFieldPathsByEvent[event.type], function (event) {\n            return beforeSend(event, domainContext);\n        });\n        if (result === false && event.type !== \"view\" /* RumEventType.VIEW */) {\n            return false;\n        }\n        if (result === false) {\n            display.warn(\"Can't dismiss view events using beforeSend!\");\n        }\n    }\n    var rateLimitReached = (_a = eventRateLimiters[event.type]) === null || _a === void 0 ? void 0 : _a.isLimitReached();\n    return !rateLimitReached;\n}\nfunction needToAssembleWithAction(event) {\n    return [\"error\" /* RumEventType.ERROR */, \"resource\" /* RumEventType.RESOURCE */, \"long_task\" /* RumEventType.LONG_TASK */].indexOf(event.type) !== -1;\n}\n//# sourceMappingURL=assembly.js.map","import { instrumentMethod } from '../tools/instrumentMethod';\nimport { Observable } from '../tools/observable';\nimport { elapsed, clocksNow, timeStampNow } from '../tools/utils/timeUtils';\nimport { normalizeUrl } from '../tools/utils/urlPolyfill';\nimport { shallowClone } from '../tools/utils/objectUtils';\nimport { addEventListener } from './addEventListener';\nvar xhrObservable;\nvar xhrContexts = new WeakMap();\nexport function initXhrObservable(configuration) {\n    if (!xhrObservable) {\n        xhrObservable = createXhrObservable(configuration);\n    }\n    return xhrObservable;\n}\nfunction createXhrObservable(configuration) {\n    return new Observable(function (observable) {\n        var stopInstrumentingStart = instrumentMethod(XMLHttpRequest.prototype, 'open', openXhr).stop;\n        var stopInstrumentingSend = instrumentMethod(XMLHttpRequest.prototype, 'send', function (call) {\n            sendXhr(call, configuration, observable);\n        }, { computeHandlingStack: true }).stop;\n        var stopInstrumentingAbort = instrumentMethod(XMLHttpRequest.prototype, 'abort', abortXhr).stop;\n        return function () {\n            stopInstrumentingStart();\n            stopInstrumentingSend();\n            stopInstrumentingAbort();\n        };\n    });\n}\nfunction openXhr(_a) {\n    var xhr = _a.target, _b = _a.parameters, method = _b[0], url = _b[1];\n    xhrContexts.set(xhr, {\n        state: 'open',\n        method: String(method).toUpperCase(),\n        url: normalizeUrl(String(url)),\n    });\n}\nfunction sendXhr(_a, configuration, observable) {\n    var xhr = _a.target, handlingStack = _a.handlingStack;\n    var context = xhrContexts.get(xhr);\n    if (!context) {\n        return;\n    }\n    var startContext = context;\n    startContext.state = 'start';\n    startContext.startClocks = clocksNow();\n    startContext.isAborted = false;\n    startContext.xhr = xhr;\n    startContext.handlingStack = handlingStack;\n    var hasBeenReported = false;\n    var stopInstrumentingOnReadyStateChange = instrumentMethod(xhr, 'onreadystatechange', function () {\n        if (xhr.readyState === XMLHttpRequest.DONE) {\n            // Try to report the XHR as soon as possible, because the XHR may be mutated by the\n            // application during a future event. For example, Angular is calling .abort() on\n            // completed requests during an onreadystatechange event, so the status becomes '0'\n            // before the request is collected.\n            onEnd();\n        }\n    }).stop;\n    var onEnd = function () {\n        unsubscribeLoadEndListener();\n        stopInstrumentingOnReadyStateChange();\n        if (hasBeenReported) {\n            return;\n        }\n        hasBeenReported = true;\n        var completeContext = context;\n        completeContext.state = 'complete';\n        completeContext.duration = elapsed(startContext.startClocks.timeStamp, timeStampNow());\n        completeContext.status = xhr.status;\n        observable.notify(shallowClone(completeContext));\n    };\n    var unsubscribeLoadEndListener = addEventListener(configuration, xhr, 'loadend', onEnd).stop;\n    observable.notify(startContext);\n}\nfunction abortXhr(_a) {\n    var xhr = _a.target;\n    var context = xhrContexts.get(xhr);\n    if (context) {\n        context.isAborted = true;\n    }\n}\n//# sourceMappingURL=xhrObservable.js.map","import { safeTruncate, isIE, find } from '@datadog/browser-core';\nimport { getParentElement } from '../../browser/polyfills';\nimport { NodePrivacyLevel, getPrivacySelector } from '../privacy';\n/**\n * Get the action name from the attribute 'data-dd-action-name' on the element or any of its parent.\n * It can also be retrieved from a user defined attribute.\n */\nexport var DEFAULT_PROGRAMMATIC_ACTION_NAME_ATTRIBUTE = 'data-dd-action-name';\nexport var ACTION_NAME_PLACEHOLDER = 'Masked Element';\nexport function getActionNameFromElement(element, _a, nodePrivacyLevel) {\n    var enablePrivacyForActionName = _a.enablePrivacyForActionName, userProgrammaticAttribute = _a.actionNameAttribute;\n    // Proceed to get the action name in two steps:\n    // * first, get the name programmatically, explicitly defined by the user.\n    // * then, if privacy is set to mask, return a placeholder for the undefined.\n    // * if privacy is not set to mask, use strategies that are known to return good results.\n    //   Those strategies will be used on the element and a few parents, but it's likely that they won't succeed at all.\n    // * if no name is found this way, use strategies returning less accurate names as a fallback.\n    //   Those are much likely to succeed.\n    var defaultActionName = getActionNameFromElementProgrammatically(element, DEFAULT_PROGRAMMATIC_ACTION_NAME_ATTRIBUTE) ||\n        (userProgrammaticAttribute && getActionNameFromElementProgrammatically(element, userProgrammaticAttribute));\n    if (defaultActionName) {\n        return { name: defaultActionName, nameSource: \"custom_attribute\" /* ActionNameSource.CUSTOM_ATTRIBUTE */ };\n    }\n    else if (nodePrivacyLevel === NodePrivacyLevel.MASK) {\n        return { name: ACTION_NAME_PLACEHOLDER, nameSource: \"mask_placeholder\" /* ActionNameSource.MASK_PLACEHOLDER */ };\n    }\n    return (getActionNameFromElementForStrategies(element, userProgrammaticAttribute, priorityStrategies, enablePrivacyForActionName) ||\n        getActionNameFromElementForStrategies(element, userProgrammaticAttribute, fallbackStrategies, enablePrivacyForActionName) || { name: '', nameSource: \"blank\" /* ActionNameSource.BLANK */ });\n}\nfunction getActionNameFromElementProgrammatically(targetElement, programmaticAttribute) {\n    var elementWithAttribute;\n    // We don't use getActionNameFromElementForStrategies here, because we want to consider all parents,\n    // without limit. It is up to the user to declare a relevant naming strategy.\n    // If available, use element.closest() to match get the attribute from the element or any of its\n    // parent.  Else fallback to a more traditional implementation.\n    if (supportsElementClosest()) {\n        elementWithAttribute = targetElement.closest(\"[\".concat(programmaticAttribute, \"]\"));\n    }\n    else {\n        var element = targetElement;\n        while (element) {\n            if (element.hasAttribute(programmaticAttribute)) {\n                elementWithAttribute = element;\n                break;\n            }\n            element = getParentElement(element);\n        }\n    }\n    if (!elementWithAttribute) {\n        return;\n    }\n    var name = elementWithAttribute.getAttribute(programmaticAttribute);\n    return truncate(normalizeWhitespace(name.trim()));\n}\nvar priorityStrategies = [\n    // associated LABEL text\n    function (element, userProgrammaticAttribute, privacy) {\n        // IE does not support element.labels, so we fallback to a CSS selector based on the element id\n        // instead\n        if (supportsLabelProperty()) {\n            if ('labels' in element && element.labels && element.labels.length > 0) {\n                return getActionNameFromTextualContent(element.labels[0], userProgrammaticAttribute);\n            }\n        }\n        else if (element.id) {\n            var label = element.ownerDocument &&\n                find(element.ownerDocument.querySelectorAll('label'), function (label) { return label.htmlFor === element.id; });\n            return label && getActionNameFromTextualContent(label, userProgrammaticAttribute, privacy);\n        }\n    },\n    // INPUT button (and associated) value\n    function (element) {\n        if (element.nodeName === 'INPUT') {\n            var input = element;\n            var type = input.getAttribute('type');\n            if (type === 'button' || type === 'submit' || type === 'reset') {\n                return { name: input.value, nameSource: \"text_content\" /* ActionNameSource.TEXT_CONTENT */ };\n            }\n        }\n    },\n    // BUTTON, LABEL or button-like element text\n    function (element, userProgrammaticAttribute, privacyEnabledActionName) {\n        if (element.nodeName === 'BUTTON' || element.nodeName === 'LABEL' || element.getAttribute('role') === 'button') {\n            return getActionNameFromTextualContent(element, userProgrammaticAttribute, privacyEnabledActionName);\n        }\n    },\n    function (element) { return getActionNameFromStandardAttribute(element, 'aria-label'); },\n    // associated element text designated by the aria-labelledby attribute\n    function (element, userProgrammaticAttribute, privacyEnabledActionName) {\n        var labelledByAttribute = element.getAttribute('aria-labelledby');\n        if (labelledByAttribute) {\n            return {\n                name: labelledByAttribute\n                    .split(/\\s+/)\n                    .map(function (id) { return getElementById(element, id); })\n                    .filter(function (label) { return Boolean(label); })\n                    .map(function (element) { return getTextualContent(element, userProgrammaticAttribute, privacyEnabledActionName); })\n                    .join(' '),\n                nameSource: \"text_content\" /* ActionNameSource.TEXT_CONTENT */,\n            };\n        }\n    },\n    function (element) { return getActionNameFromStandardAttribute(element, 'alt'); },\n    function (element) { return getActionNameFromStandardAttribute(element, 'name'); },\n    function (element) { return getActionNameFromStandardAttribute(element, 'title'); },\n    function (element) { return getActionNameFromStandardAttribute(element, 'placeholder'); },\n    // SELECT first OPTION text\n    function (element, userProgrammaticAttribute) {\n        if ('options' in element && element.options.length > 0) {\n            return getActionNameFromTextualContent(element.options[0], userProgrammaticAttribute);\n        }\n    },\n];\nvar fallbackStrategies = [\n    function (element, userProgrammaticAttribute, privacyEnabledActionName) {\n        return getActionNameFromTextualContent(element, userProgrammaticAttribute, privacyEnabledActionName);\n    },\n];\n/**\n * Iterates over the target element and its parent, using the strategies list to get an action name.\n * Each strategies are applied on each element, stopping as soon as a non-empty value is returned.\n */\nvar MAX_PARENTS_TO_CONSIDER = 10;\nfunction getActionNameFromElementForStrategies(targetElement, userProgrammaticAttribute, strategies, privacyEnabledActionName) {\n    var element = targetElement;\n    var recursionCounter = 0;\n    while (recursionCounter <= MAX_PARENTS_TO_CONSIDER &&\n        element &&\n        element.nodeName !== 'BODY' &&\n        element.nodeName !== 'HTML' &&\n        element.nodeName !== 'HEAD') {\n        for (var _i = 0, strategies_1 = strategies; _i < strategies_1.length; _i++) {\n            var strategy = strategies_1[_i];\n            var actionName = strategy(element, userProgrammaticAttribute, privacyEnabledActionName);\n            if (actionName) {\n                var name_1 = actionName.name, nameSource = actionName.nameSource;\n                var trimmedName = name_1 && name_1.trim();\n                if (trimmedName) {\n                    return { name: truncate(normalizeWhitespace(trimmedName)), nameSource: nameSource };\n                }\n            }\n        }\n        // Consider a FORM as a contextual limit to get the action name.  This is experimental and may\n        // be reconsidered in the future.\n        if (element.nodeName === 'FORM') {\n            break;\n        }\n        element = getParentElement(element);\n        recursionCounter += 1;\n    }\n}\nfunction normalizeWhitespace(s) {\n    return s.replace(/\\s+/g, ' ');\n}\nfunction truncate(s) {\n    return s.length > 100 ? \"\".concat(safeTruncate(s, 100), \" [...]\") : s;\n}\nfunction getElementById(refElement, id) {\n    // Use the element ownerDocument here, because tests are executed in an iframe, so\n    // document.getElementById won't work.\n    return refElement.ownerDocument ? refElement.ownerDocument.getElementById(id) : null;\n}\nfunction getActionNameFromStandardAttribute(element, attribute) {\n    return {\n        name: element.getAttribute(attribute) || '',\n        nameSource: \"standard_attribute\" /* ActionNameSource.STANDARD_ATTRIBUTE */,\n    };\n}\nfunction getActionNameFromTextualContent(element, userProgrammaticAttribute, privacyEnabledActionName) {\n    return {\n        name: getTextualContent(element, userProgrammaticAttribute, privacyEnabledActionName) || '',\n        nameSource: \"text_content\" /* ActionNameSource.TEXT_CONTENT */,\n    };\n}\nfunction getTextualContent(element, userProgrammaticAttribute, privacyEnabledActionName) {\n    if (element.isContentEditable) {\n        return;\n    }\n    if ('innerText' in element) {\n        var text_1 = element.innerText;\n        var removeTextFromElements = function (query) {\n            var list = element.querySelectorAll(query);\n            for (var index = 0; index < list.length; index += 1) {\n                var element_1 = list[index];\n                if ('innerText' in element_1) {\n                    var textToReplace = element_1.innerText;\n                    if (textToReplace && textToReplace.trim().length > 0) {\n                        text_1 = text_1.replace(textToReplace, '');\n                    }\n                }\n            }\n        };\n        if (!supportsInnerTextScriptAndStyleRemoval()) {\n            // remove the inner text of SCRIPT and STYLES from the result. This is a bit dirty, but should\n            // be relatively fast and work in most cases.\n            removeTextFromElements('script, style');\n        }\n        // remove the text of elements with programmatic attribute value\n        removeTextFromElements(\"[\".concat(DEFAULT_PROGRAMMATIC_ACTION_NAME_ATTRIBUTE, \"]\"));\n        if (userProgrammaticAttribute) {\n            removeTextFromElements(\"[\".concat(userProgrammaticAttribute, \"]\"));\n        }\n        if (privacyEnabledActionName) {\n            // remove the text of elements with privacy override\n            removeTextFromElements(\"\".concat(getPrivacySelector(NodePrivacyLevel.HIDDEN), \", \").concat(getPrivacySelector(NodePrivacyLevel.MASK)));\n        }\n        return text_1;\n    }\n    return element.textContent;\n}\n/**\n * Returns true if element.innerText excludes the text from inline SCRIPT and STYLE element. This\n * should be the case everywhere except on Internet Explorer 10 and 11 (see [1])\n *\n * The innerText property relies on what is actually rendered to compute its output, so to check if\n * it actually excludes SCRIPT and STYLE content, a solution would be to create a style element, set\n * its content to '*', inject it in the document body, and check if the style element innerText\n * property returns '*'. Using a new `document` instance won't work as it is not rendered.\n *\n * This solution requires specific CSP rules (see [2]) to be set by the customer. We want to avoid\n * this, so instead we rely on browser detection. In case of false negative, the impact should be\n * low, since we rely on this result to remove the SCRIPT and STYLE innerText (which will be empty)\n * from a parent element innerText.\n *\n * [1]: https://web.archive.org/web/20210602165716/http://perfectionkills.com/the-poor-misunderstood-innerText/#diff-with-textContent\n * [2]: https://github.com/DataDog/browser-sdk/issues/1084\n */\nfunction supportsInnerTextScriptAndStyleRemoval() {\n    return !isIE();\n}\n/**\n * Returns true if the browser supports the element.labels property.  This should be the case\n * everywhere except on Internet Explorer.\n * Note: The result is computed lazily, because we don't want any DOM access when the SDK is\n * evaluated.\n */\nvar supportsLabelPropertyResult;\nfunction supportsLabelProperty() {\n    if (supportsLabelPropertyResult === undefined) {\n        supportsLabelPropertyResult = 'labels' in HTMLInputElement.prototype;\n    }\n    return supportsLabelPropertyResult;\n}\n/**\n * Returns true if the browser supports the element.closest method.  This should be the case\n * everywhere except on Internet Explorer.\n * Note: The result is computed lazily, because we don't want any DOM access when the SDK is\n * evaluated.\n */\nvar supportsElementClosestResult;\nfunction supportsElementClosest() {\n    if (supportsElementClosestResult === undefined) {\n        supportsElementClosestResult = 'closest' in HTMLElement.prototype;\n    }\n    return supportsElementClosestResult;\n}\n//# sourceMappingURL=getActionNameFromElement.js.map","import { cssEscape, elementMatches, getClassList, getParentElement } from '../browser/polyfills';\nimport { DEFAULT_PROGRAMMATIC_ACTION_NAME_ATTRIBUTE } from './action/getActionNameFromElement';\n/**\n * Stable attributes are attributes that are commonly used to identify parts of a UI (ex:\n * component). Those attribute values should not be generated randomly (hardcoded most of the time)\n * and stay the same across deploys. They are not necessarily unique across the document.\n */\nexport var STABLE_ATTRIBUTES = [\n    DEFAULT_PROGRAMMATIC_ACTION_NAME_ATTRIBUTE,\n    // Common test attributes (list provided by google recorder)\n    'data-testid',\n    'data-test',\n    'data-qa',\n    'data-cy',\n    'data-test-id',\n    'data-qa-id',\n    'data-testing',\n    // FullStory decorator attributes:\n    'data-component',\n    'data-element',\n    'data-source-file',\n];\n// Selectors to use if they target a single element on the whole document. Those selectors are\n// considered as \"stable\" and uniquely identify an element regardless of the page state. If we find\n// one, we should consider the selector \"complete\" and stop iterating over ancestors.\nvar GLOBALLY_UNIQUE_SELECTOR_GETTERS = [getStableAttributeSelector, getIDSelector];\n// Selectors to use if they target a single element among an element descendants. Those selectors\n// are more brittle than \"globally unique\" selectors and should be combined with ancestor selectors\n// to improve specificity.\nvar UNIQUE_AMONG_CHILDREN_SELECTOR_GETTERS = [\n    getStableAttributeSelector,\n    getClassSelector,\n    getTagNameSelector,\n];\nexport function getSelectorFromElement(targetElement, actionNameAttribute) {\n    if (!isConnected(targetElement)) {\n        // We cannot compute a selector for a detached element, as we don't have access to all of its\n        // parents, and we cannot determine if it's unique in the document.\n        return;\n    }\n    var targetElementSelector;\n    var currentElement = targetElement;\n    while (currentElement && currentElement.nodeName !== 'HTML') {\n        var globallyUniqueSelector = findSelector(currentElement, GLOBALLY_UNIQUE_SELECTOR_GETTERS, isSelectorUniqueGlobally, actionNameAttribute, targetElementSelector);\n        if (globallyUniqueSelector) {\n            return globallyUniqueSelector;\n        }\n        var uniqueSelectorAmongChildren = findSelector(currentElement, UNIQUE_AMONG_CHILDREN_SELECTOR_GETTERS, isSelectorUniqueAmongSiblings, actionNameAttribute, targetElementSelector);\n        targetElementSelector =\n            uniqueSelectorAmongChildren || combineSelector(getPositionSelector(currentElement), targetElementSelector);\n        currentElement = getParentElement(currentElement);\n    }\n    return targetElementSelector;\n}\nfunction isGeneratedValue(value) {\n    // To compute the \"URL path group\", the backend replaces every URL path parts as a question mark\n    // if it thinks the part is an identifier. The condition it uses is to checks whether a digit is\n    // present.\n    //\n    // Here, we use the same strategy: if the value contains a digit, we consider it generated. This\n    // strategy might be a bit naive and fail in some cases, but there are many fallbacks to generate\n    // CSS selectors so it should be fine most of the time.\n    return /[0-9]/.test(value);\n}\nfunction getIDSelector(element) {\n    if (element.id && !isGeneratedValue(element.id)) {\n        return \"#\".concat(cssEscape(element.id));\n    }\n}\nfunction getClassSelector(element) {\n    if (element.tagName === 'BODY') {\n        return;\n    }\n    var classList = getClassList(element);\n    for (var i = 0; i < classList.length; i += 1) {\n        var className = classList[i];\n        if (isGeneratedValue(className)) {\n            continue;\n        }\n        return \"\".concat(cssEscape(element.tagName), \".\").concat(cssEscape(className));\n    }\n}\nfunction getTagNameSelector(element) {\n    return cssEscape(element.tagName);\n}\nfunction getStableAttributeSelector(element, actionNameAttribute) {\n    if (actionNameAttribute) {\n        var selector = getAttributeSelector(actionNameAttribute);\n        if (selector) {\n            return selector;\n        }\n    }\n    for (var _i = 0, STABLE_ATTRIBUTES_1 = STABLE_ATTRIBUTES; _i < STABLE_ATTRIBUTES_1.length; _i++) {\n        var attributeName = STABLE_ATTRIBUTES_1[_i];\n        var selector = getAttributeSelector(attributeName);\n        if (selector) {\n            return selector;\n        }\n    }\n    function getAttributeSelector(attributeName) {\n        if (element.hasAttribute(attributeName)) {\n            return \"\".concat(cssEscape(element.tagName), \"[\").concat(attributeName, \"=\\\"\").concat(cssEscape(element.getAttribute(attributeName)), \"\\\"]\");\n        }\n    }\n}\nfunction getPositionSelector(element) {\n    var sibling = getParentElement(element).firstElementChild;\n    var elementIndex = 1;\n    while (sibling && sibling !== element) {\n        if (sibling.tagName === element.tagName) {\n            elementIndex += 1;\n        }\n        sibling = sibling.nextElementSibling;\n    }\n    return \"\".concat(cssEscape(element.tagName), \":nth-of-type(\").concat(elementIndex, \")\");\n}\nfunction findSelector(element, selectorGetters, predicate, actionNameAttribute, childSelector) {\n    for (var _i = 0, selectorGetters_1 = selectorGetters; _i < selectorGetters_1.length; _i++) {\n        var selectorGetter = selectorGetters_1[_i];\n        var elementSelector = selectorGetter(element, actionNameAttribute);\n        if (!elementSelector) {\n            continue;\n        }\n        if (predicate(element, elementSelector, childSelector)) {\n            return combineSelector(elementSelector, childSelector);\n        }\n    }\n}\n/**\n * Check whether the selector is unique among the whole document.\n */\nfunction isSelectorUniqueGlobally(element, elementSelector, childSelector) {\n    return element.ownerDocument.querySelectorAll(combineSelector(elementSelector, childSelector)).length === 1;\n}\n/**\n * Check whether the selector is unique among the element siblings. In other words, it returns true\n * if \"ELEMENT_PARENT > CHILD_SELECTOR\" returns a single element.\n *\n * @param {Element} currentElement - the element being considered while iterating over the target\n * element ancestors.\n *\n * @param {string} currentElementSelector - a selector that matches the current element. That\n * selector is not a composed selector (i.e. it might be a single tag name, class name...).\n *\n * @param {string|undefined} childSelector - child selector is a selector that targets a descendant\n * of the current element. When undefined, the current element is the target element.\n *\n * # Scope selector usage\n *\n * When composed together, the final selector will be joined with `>` operators to make sure we\n * target direct descendants at each level. In this function, we'll use `querySelector` to check if\n * a selector matches descendants of the current element. But by default, the query selector match\n * elements at any level. Example:\n *\n * ```html\n * <main>\n *   <div>\n *     <span></span>\n *   </div>\n *   <marquee>\n *     <div>\n *       <span></span>\n *     </div>\n *   </marquee>\n * </main>\n * ```\n *\n * `sibling.querySelector('DIV > SPAN')` will match both span elements, so we would consider the\n * selector to be not unique, even if it is unique when we'll compose it with the parent with a `>`\n * operator (`MAIN > DIV > SPAN`).\n *\n * To avoid this, we can use the `:scope` selector to make sure the selector starts from the current\n * sibling (i.e. `sibling.querySelector('DIV:scope > SPAN')` will only match the first span).\n *\n * The result will be less accurate on browsers that don't support :scope (i. e. IE): it will check\n * for any element matching the selector contained in the parent (in other words,\n * \"ELEMENT_PARENT CHILD_SELECTOR\" returns a single element), regardless of whether the selector is\n * a direct descendant of the element parent. This should not impact results too much: if it\n * inaccurately returns false, we'll just fall back to another strategy.\n *\n * [1]: https://developer.mozilla.org/fr/docs/Web/CSS/:scope\n *\n * # Performance considerations\n *\n * We compute selectors in performance-critical operations (ex: during a click), so we need to make\n * sure the function is as fast as possible. We observed that naively using `querySelectorAll` to\n * check if the selector matches more than 1 element is quite expensive, so we want to avoid it.\n *\n * Because we are iterating the DOM upward and we use that function at every level, we know the\n * child selector is already unique among the current element children, so we don't need to check\n * for the current element subtree.\n *\n * Instead, we can focus on the current element siblings. If we find a single element matching the\n * selector within a sibling, we know that it's not unique. This allows us to use `querySelector`\n * (or `matches`, when the current element is the target element) instead of `querySelectorAll`.\n */\nexport function isSelectorUniqueAmongSiblings(currentElement, currentElementSelector, childSelector) {\n    var isSiblingMatching;\n    if (childSelector === undefined) {\n        // If the child selector is undefined (meaning `currentElement` is the target element, not one\n        // of its ancestor), we need to use `matches` to check if the sibling is matching the selector,\n        // as `querySelector` only returns a descendant of the element.\n        isSiblingMatching = function (sibling) { return elementMatches(sibling, currentElementSelector); };\n    }\n    else {\n        var scopedSelector_1 = supportScopeSelector()\n            ? combineSelector(\"\".concat(currentElementSelector, \":scope\"), childSelector)\n            : combineSelector(currentElementSelector, childSelector);\n        isSiblingMatching = function (sibling) { return sibling.querySelector(scopedSelector_1) !== null; };\n    }\n    var parent = getParentElement(currentElement);\n    var sibling = parent.firstElementChild;\n    while (sibling) {\n        if (sibling !== currentElement && isSiblingMatching(sibling)) {\n            return false;\n        }\n        sibling = sibling.nextElementSibling;\n    }\n    return true;\n}\nfunction combineSelector(parent, child) {\n    return child ? \"\".concat(parent, \">\").concat(child) : parent;\n}\nvar supportScopeSelectorCache;\nexport function supportScopeSelector() {\n    if (supportScopeSelectorCache === undefined) {\n        try {\n            document.querySelector(':scope');\n            supportScopeSelectorCache = true;\n        }\n        catch (_a) {\n            supportScopeSelectorCache = false;\n        }\n    }\n    return supportScopeSelectorCache;\n}\n/**\n * Polyfill-utility for the `isConnected` property not supported in IE11\n */\nfunction isConnected(element) {\n    if ('isConnected' in\n        // cast is to make sure `element` is not inferred as `never` after the check\n        element) {\n        return element.isConnected;\n    }\n    return element.ownerDocument.documentElement.contains(element);\n}\n//# sourceMappingURL=getSelectorFromElement.js.map","/**\n * performance.interactionCount polyfill\n *\n * The interactionCount is an integer which counts the total number of distinct user interactions,\n * for which there was a unique interactionId.\n *\n * The interactionCount polyfill is an estimate based on a convention specific to Chrome. Cf: https://github.com/GoogleChrome/web-vitals/pull/213\n * This is currently not an issue as the polyfill is only used for INP which is currently only supported on Chrome.\n * Hopefully when/if other browsers will support INP, they will also implement performance.interactionCount at the same time, so we won't need that polyfill.\n *\n * Reference implementation: https://github.com/GoogleChrome/web-vitals/blob/main/src/lib/polyfills/interactionCountPolyfill.ts\n */\nimport { monitor } from '@datadog/browser-core';\nvar observer;\nvar interactionCountEstimate = 0;\nvar minKnownInteractionId = Infinity;\nvar maxKnownInteractionId = 0;\nexport function initInteractionCountPolyfill() {\n    if ('interactionCount' in performance || observer) {\n        return;\n    }\n    observer = new window.PerformanceObserver(monitor(function (entries) {\n        entries.getEntries().forEach(function (e) {\n            var entry = e;\n            if (entry.interactionId) {\n                minKnownInteractionId = Math.min(minKnownInteractionId, entry.interactionId);\n                maxKnownInteractionId = Math.max(maxKnownInteractionId, entry.interactionId);\n                interactionCountEstimate = (maxKnownInteractionId - minKnownInteractionId) / 7 + 1;\n            }\n        });\n    }));\n    observer.observe({ type: 'event', buffered: true, durationThreshold: 0 });\n}\n/**\n * Returns the `interactionCount` value using the native API (if available)\n * or the polyfill estimate in this module.\n */\nexport var getInteractionCount = function () {\n    return observer ? interactionCountEstimate : window.performance.interactionCount || 0;\n};\n//# sourceMappingURL=interactionCountPolyfill.js.map","import { Observable, throttle, addEventListener } from '@datadog/browser-core';\nvar viewportObservable;\nexport function initViewportObservable(configuration) {\n    if (!viewportObservable) {\n        viewportObservable = createViewportObservable(configuration);\n    }\n    return viewportObservable;\n}\nexport function createViewportObservable(configuration) {\n    return new Observable(function (observable) {\n        var updateDimension = throttle(function () {\n            observable.notify(getViewportDimension());\n        }, 200).throttled;\n        return addEventListener(configuration, window, \"resize\" /* DOM_EVENT.RESIZE */, updateDimension, { capture: true, passive: true })\n            .stop;\n    });\n}\n// excludes the width and height of any rendered classic scrollbar that is fixed to the visual viewport\nexport function getViewportDimension() {\n    var visual = window.visualViewport;\n    if (visual) {\n        return {\n            width: Number(visual.width * visual.scale),\n            height: Number(visual.height * visual.scale),\n        };\n    }\n    return {\n        width: Number(window.innerWidth || 0),\n        height: Number(window.innerHeight || 0),\n    };\n}\n//# sourceMappingURL=viewportObservable.js.map","import { includes, performDraw, ONE_SECOND, addTelemetryDebug, setInterval, } from '@datadog/browser-core';\nexport var MEASURES_PERIOD_DURATION = 10 * ONE_SECOND;\nvar currentPeriodMeasures;\nvar currentBatchMeasures;\nvar batchHasRumEvent;\nexport function startCustomerDataTelemetry(configuration, telemetry, lifeCycle, customerDataTrackerManager, batchFlushObservable) {\n    var customerDataTelemetryEnabled = telemetry.enabled && performDraw(configuration.customerDataTelemetrySampleRate);\n    if (!customerDataTelemetryEnabled) {\n        return;\n    }\n    initCurrentPeriodMeasures();\n    initCurrentBatchMeasures();\n    // We measure the data of every view updates even if there could only be one per batch due to the upsert\n    // It means that contexts bytes count sums can be higher than it really is\n    lifeCycle.subscribe(13 /* LifeCycleEventType.RUM_EVENT_COLLECTED */, function (event) {\n        batchHasRumEvent = true;\n        updateMeasure(currentBatchMeasures.globalContextBytes, customerDataTrackerManager.getOrCreateTracker(2 /* CustomerDataType.GlobalContext */).getBytesCount());\n        updateMeasure(currentBatchMeasures.userContextBytes, customerDataTrackerManager.getOrCreateTracker(1 /* CustomerDataType.User */).getBytesCount());\n        updateMeasure(currentBatchMeasures.featureFlagBytes, includes([\"view\" /* RumEventType.VIEW */, \"error\" /* RumEventType.ERROR */], event.type)\n            ? customerDataTrackerManager.getOrCreateTracker(0 /* CustomerDataType.FeatureFlag */).getBytesCount()\n            : 0);\n    });\n    batchFlushObservable.subscribe(function (_a) {\n        var bytesCount = _a.bytesCount, messagesCount = _a.messagesCount;\n        // Don't measure batch that only contains telemetry events to avoid batch sending loop\n        // It could happen because after each batch we are adding a customer data measures telemetry event to the next one\n        if (!batchHasRumEvent) {\n            return;\n        }\n        currentPeriodMeasures.batchCount += 1;\n        updateMeasure(currentPeriodMeasures.batchBytesCount, bytesCount);\n        updateMeasure(currentPeriodMeasures.batchMessagesCount, messagesCount);\n        mergeMeasure(currentPeriodMeasures.globalContextBytes, currentBatchMeasures.globalContextBytes);\n        mergeMeasure(currentPeriodMeasures.userContextBytes, currentBatchMeasures.userContextBytes);\n        mergeMeasure(currentPeriodMeasures.featureFlagBytes, currentBatchMeasures.featureFlagBytes);\n        initCurrentBatchMeasures();\n    });\n    setInterval(sendCurrentPeriodMeasures, MEASURES_PERIOD_DURATION);\n}\nfunction sendCurrentPeriodMeasures() {\n    if (currentPeriodMeasures.batchCount === 0) {\n        return;\n    }\n    addTelemetryDebug('Customer data measures', currentPeriodMeasures);\n    initCurrentPeriodMeasures();\n}\nfunction createMeasure() {\n    return { min: Infinity, max: 0, sum: 0 };\n}\nfunction updateMeasure(measure, value) {\n    measure.sum += value;\n    measure.min = Math.min(measure.min, value);\n    measure.max = Math.max(measure.max, value);\n}\nfunction mergeMeasure(target, source) {\n    target.sum += source.sum;\n    target.min = Math.min(target.min, source.min);\n    target.max = Math.max(target.max, source.max);\n}\nfunction initCurrentPeriodMeasures() {\n    currentPeriodMeasures = {\n        batchCount: 0,\n        batchBytesCount: createMeasure(),\n        batchMessagesCount: createMeasure(),\n        globalContextBytes: createMeasure(),\n        userContextBytes: createMeasure(),\n        featureFlagBytes: createMeasure(),\n    };\n}\nfunction initCurrentBatchMeasures() {\n    batchHasRumEvent = false;\n    currentBatchMeasures = {\n        globalContextBytes: createMeasure(),\n        userContextBytes: createMeasure(),\n        featureFlagBytes: createMeasure(),\n    };\n}\n//# sourceMappingURL=startCustomerDataTelemetry.js.map","export var MAX_STATS_HISTORY = 10;\nvar statsPerView;\nexport function getSegmentsCount(viewId) {\n    return getOrCreateReplayStats(viewId).segments_count;\n}\nexport function addSegment(viewId) {\n    getOrCreateReplayStats(viewId).segments_count += 1;\n}\nexport function addRecord(viewId) {\n    getOrCreateReplayStats(viewId).records_count += 1;\n}\nexport function addWroteData(viewId, additionalBytesCount) {\n    getOrCreateReplayStats(viewId).segments_total_raw_size += additionalBytesCount;\n}\nexport function getReplayStats(viewId) {\n    return statsPerView === null || statsPerView === void 0 ? void 0 : statsPerView.get(viewId);\n}\nexport function resetReplayStats() {\n    statsPerView = undefined;\n}\nfunction getOrCreateReplayStats(viewId) {\n    if (!statsPerView) {\n        statsPerView = new Map();\n    }\n    var replayStats;\n    if (statsPerView.has(viewId)) {\n        replayStats = statsPerView.get(viewId);\n    }\n    else {\n        replayStats = {\n            records_count: 0,\n            segments_count: 0,\n            segments_total_raw_size: 0,\n        };\n        statsPerView.set(viewId, replayStats);\n        if (statsPerView.size > MAX_STATS_HISTORY) {\n            deleteOldestStats();\n        }\n    }\n    return replayStats;\n}\nfunction deleteOldestStats() {\n    if (!statsPerView) {\n        return;\n    }\n    if (statsPerView.keys) {\n        var toDelete = statsPerView.keys().next().value;\n        if (toDelete) {\n            statsPerView.delete(toDelete);\n        }\n    }\n    else {\n        // IE11 doesn't support map.keys\n        var isFirst_1 = true;\n        statsPerView.forEach(function (_value, key) {\n            if (isFirst_1) {\n                statsPerView.delete(key);\n                isFirst_1 = false;\n            }\n        });\n    }\n}\n//# sourceMappingURL=replayStats.js.map","var _a;\nimport { assign, addEventListeners } from '@datadog/browser-core';\nimport { getNodePrivacyLevel, NodePrivacyLevel } from '@datadog/browser-rum-core';\nimport { IncrementalSource, MouseInteractionType } from '../../../types';\nimport { assembleIncrementalSnapshot } from '../assembly';\nimport { getEventTarget } from '../eventsUtils';\nimport { getSerializedNodeId, hasSerializedNode } from '../serialization';\nimport { tryToComputeCoordinates } from './trackMove';\nvar eventTypeToMouseInteraction = (_a = {},\n    // Listen for pointerup DOM events instead of mouseup for MouseInteraction/MouseUp records. This\n    // allows to reference such records from Frustration records.\n    //\n    // In the context of supporting Mobile Session Replay, we introduced `PointerInteraction` records\n    // used by the Mobile SDKs in place of `MouseInteraction`. In the future, we should replace\n    // `MouseInteraction` by `PointerInteraction` in the Browser SDK so we have an uniform way to\n    // convey such interaction. This would cleanly solve the issue since we would have\n    // `PointerInteraction/Up` records that we could reference from `Frustration` records.\n    _a[\"pointerup\" /* DOM_EVENT.POINTER_UP */] = MouseInteractionType.MouseUp,\n    _a[\"mousedown\" /* DOM_EVENT.MOUSE_DOWN */] = MouseInteractionType.MouseDown,\n    _a[\"click\" /* DOM_EVENT.CLICK */] = MouseInteractionType.Click,\n    _a[\"contextmenu\" /* DOM_EVENT.CONTEXT_MENU */] = MouseInteractionType.ContextMenu,\n    _a[\"dblclick\" /* DOM_EVENT.DBL_CLICK */] = MouseInteractionType.DblClick,\n    _a[\"focus\" /* DOM_EVENT.FOCUS */] = MouseInteractionType.Focus,\n    _a[\"blur\" /* DOM_EVENT.BLUR */] = MouseInteractionType.Blur,\n    _a[\"touchstart\" /* DOM_EVENT.TOUCH_START */] = MouseInteractionType.TouchStart,\n    _a[\"touchend\" /* DOM_EVENT.TOUCH_END */] = MouseInteractionType.TouchEnd,\n    _a);\nexport function trackMouseInteraction(configuration, mouseInteractionCb, recordIds) {\n    var handler = function (event) {\n        var target = getEventTarget(event);\n        if (getNodePrivacyLevel(target, configuration.defaultPrivacyLevel) === NodePrivacyLevel.HIDDEN ||\n            !hasSerializedNode(target)) {\n            return;\n        }\n        var id = getSerializedNodeId(target);\n        var type = eventTypeToMouseInteraction[event.type];\n        var interaction;\n        if (type !== MouseInteractionType.Blur && type !== MouseInteractionType.Focus) {\n            var coordinates = tryToComputeCoordinates(event);\n            if (!coordinates) {\n                return;\n            }\n            interaction = { id: id, type: type, x: coordinates.x, y: coordinates.y };\n        }\n        else {\n            interaction = { id: id, type: type };\n        }\n        var record = assign({ id: recordIds.getIdForEvent(event) }, assembleIncrementalSnapshot(IncrementalSource.MouseInteraction, interaction));\n        mouseInteractionCb(record);\n    };\n    return addEventListeners(configuration, document, Object.keys(eventTypeToMouseInteraction), handler, {\n        capture: true,\n        passive: true,\n    });\n}\n//# sourceMappingURL=trackMouseInteraction.js.map","/**\n * Function to get cookies as an object of name/value pairs\n *\n * TODO: should we be / are we using jquery.cookie instead?\n */\nexport default function getCookies() {\n  const cookies = {};\n  const all = document.cookie;\n  if (all === '') {\n    return cookies;\n  }\n  const list = all.split('; ');\n  for (let i = 0; i < list.length; i++) {\n    const cookie = list[i];\n    const p = cookie.indexOf('=');\n    const name = cookie.substring(0, p);\n    let value = cookie.substring(p + 1);\n    value = decodeURIComponent(value);\n    cookies[name] = value;\n  }\n  return cookies;\n}\n","// @flow\n\nimport { oneOf } from 'common/json/extract';\n\ntype CookieCategory =\n  | 'necessary'\n  | 'functional'\n  | 'performance'\n  | 'analytics'\n  | 'advertisement'\n  | 'other';\n\nconst cookieCategories: Array<CookieCategory> = [\n  'necessary',\n  'functional',\n  'performance',\n  'analytics',\n  'advertisement',\n  'other'\n];\n\nexport function getConsentedCookieCategories(\n  cookies: string\n): Array<CookieCategory> {\n  const re = new RegExp('cookieyes-consent=([^;]+)');\n  const rawValue = re.exec(cookies);\n  const cookieValue = rawValue !== null ? unescape(rawValue[1]) : null;\n\n  if (cookieValue) {\n    const cookiePairs = cookieValue.split(',').map(pair => pair.trim());\n    const cookieArr = [];\n    cookiePairs.forEach(pair => {\n      const [key, value] = pair.split(':');\n      if (cookieCategories.includes(key) && value === 'yes') {\n        const category = oneOf(cookieCategories)(key);\n        cookieArr.push(category);\n      }\n    });\n\n    return cookieArr;\n  }\n  return [];\n}\n\nexport function consentGivenForCategory(category: CookieCategory): boolean {\n  return getConsentedCookieCategories(document.cookie).includes(category);\n}\n","import validate from './validate.js';\n/**\n * Convert array of 16 byte values to UUID string format of the form:\n * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX\n */\n\nconst byteToHex = [];\n\nfor (let i = 0; i < 256; ++i) {\n  byteToHex.push((i + 0x100).toString(16).slice(1));\n}\n\nexport function unsafeStringify(arr, offset = 0) {\n  // Note: Be careful editing this code!  It's been tuned for performance\n  // and works in ways you may not expect. See https://github.com/uuidjs/uuid/pull/434\n  return byteToHex[arr[offset + 0]] + byteToHex[arr[offset + 1]] + byteToHex[arr[offset + 2]] + byteToHex[arr[offset + 3]] + '-' + byteToHex[arr[offset + 4]] + byteToHex[arr[offset + 5]] + '-' + byteToHex[arr[offset + 6]] + byteToHex[arr[offset + 7]] + '-' + byteToHex[arr[offset + 8]] + byteToHex[arr[offset + 9]] + '-' + byteToHex[arr[offset + 10]] + byteToHex[arr[offset + 11]] + byteToHex[arr[offset + 12]] + byteToHex[arr[offset + 13]] + byteToHex[arr[offset + 14]] + byteToHex[arr[offset + 15]];\n}\n\nfunction stringify(arr, offset = 0) {\n  const uuid = unsafeStringify(arr, offset); // Consistency check for valid UUID.  If this throws, it's likely due to one\n  // of the following:\n  // - One or more input array values don't map to a hex octet (leading to\n  // \"undefined\" in the uuid)\n  // - Invalid input values for the RFC `version` or `variant` fields\n\n  if (!validate(uuid)) {\n    throw TypeError('Stringified UUID is invalid');\n  }\n\n  return uuid;\n}\n\nexport default stringify;","export default /^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i;","import validate from './validate.js';\n\nfunction parse(uuid) {\n  if (!validate(uuid)) {\n    throw TypeError('Invalid UUID');\n  }\n\n  let v;\n  const arr = new Uint8Array(16); // Parse ########-....-....-....-............\n\n  arr[0] = (v = parseInt(uuid.slice(0, 8), 16)) >>> 24;\n  arr[1] = v >>> 16 & 0xff;\n  arr[2] = v >>> 8 & 0xff;\n  arr[3] = v & 0xff; // Parse ........-####-....-....-............\n\n  arr[4] = (v = parseInt(uuid.slice(9, 13), 16)) >>> 8;\n  arr[5] = v & 0xff; // Parse ........-....-####-....-............\n\n  arr[6] = (v = parseInt(uuid.slice(14, 18), 16)) >>> 8;\n  arr[7] = v & 0xff; // Parse ........-....-....-####-............\n\n  arr[8] = (v = parseInt(uuid.slice(19, 23), 16)) >>> 8;\n  arr[9] = v & 0xff; // Parse ........-....-....-....-############\n  // (Use \"/\" to avoid 32-bit truncation when bit-shifting high-order bytes)\n\n  arr[10] = (v = parseInt(uuid.slice(24, 36), 16)) / 0x10000000000 & 0xff;\n  arr[11] = v / 0x100000000 & 0xff;\n  arr[12] = v >>> 24 & 0xff;\n  arr[13] = v >>> 16 & 0xff;\n  arr[14] = v >>> 8 & 0xff;\n  arr[15] = v & 0xff;\n  return arr;\n}\n\nexport default parse;","import REGEX from './regex.js';\n\nfunction validate(uuid) {\n  return typeof uuid === 'string' && REGEX.test(uuid);\n}\n\nexport default validate;","// Adapted from Chris Veness' SHA1 code at\n// http://www.movable-type.co.uk/scripts/sha1.html\nfunction f(s, x, y, z) {\n  switch (s) {\n    case 0:\n      return x & y ^ ~x & z;\n\n    case 1:\n      return x ^ y ^ z;\n\n    case 2:\n      return x & y ^ x & z ^ y & z;\n\n    case 3:\n      return x ^ y ^ z;\n  }\n}\n\nfunction ROTL(x, n) {\n  return x << n | x >>> 32 - n;\n}\n\nfunction sha1(bytes) {\n  const K = [0x5a827999, 0x6ed9eba1, 0x8f1bbcdc, 0xca62c1d6];\n  const H = [0x67452301, 0xefcdab89, 0x98badcfe, 0x10325476, 0xc3d2e1f0];\n\n  if (typeof bytes === 'string') {\n    const msg = unescape(encodeURIComponent(bytes)); // UTF8 escape\n\n    bytes = [];\n\n    for (let i = 0; i < msg.length; ++i) {\n      bytes.push(msg.charCodeAt(i));\n    }\n  } else if (!Array.isArray(bytes)) {\n    // Convert Array-like to Array\n    bytes = Array.prototype.slice.call(bytes);\n  }\n\n  bytes.push(0x80);\n  const l = bytes.length / 4 + 2;\n  const N = Math.ceil(l / 16);\n  const M = new Array(N);\n\n  for (let i = 0; i < N; ++i) {\n    const arr = new Uint32Array(16);\n\n    for (let j = 0; j < 16; ++j) {\n      arr[j] = bytes[i * 64 + j * 4] << 24 | bytes[i * 64 + j * 4 + 1] << 16 | bytes[i * 64 + j * 4 + 2] << 8 | bytes[i * 64 + j * 4 + 3];\n    }\n\n    M[i] = arr;\n  }\n\n  M[N - 1][14] = (bytes.length - 1) * 8 / Math.pow(2, 32);\n  M[N - 1][14] = Math.floor(M[N - 1][14]);\n  M[N - 1][15] = (bytes.length - 1) * 8 & 0xffffffff;\n\n  for (let i = 0; i < N; ++i) {\n    const W = new Uint32Array(80);\n\n    for (let t = 0; t < 16; ++t) {\n      W[t] = M[i][t];\n    }\n\n    for (let t = 16; t < 80; ++t) {\n      W[t] = ROTL(W[t - 3] ^ W[t - 8] ^ W[t - 14] ^ W[t - 16], 1);\n    }\n\n    let a = H[0];\n    let b = H[1];\n    let c = H[2];\n    let d = H[3];\n    let e = H[4];\n\n    for (let t = 0; t < 80; ++t) {\n      const s = Math.floor(t / 20);\n      const T = ROTL(a, 5) + f(s, b, c, d) + e + K[s] + W[t] >>> 0;\n      e = d;\n      d = c;\n      c = ROTL(b, 30) >>> 0;\n      b = a;\n      a = T;\n    }\n\n    H[0] = H[0] + a >>> 0;\n    H[1] = H[1] + b >>> 0;\n    H[2] = H[2] + c >>> 0;\n    H[3] = H[3] + d >>> 0;\n    H[4] = H[4] + e >>> 0;\n  }\n\n  return [H[0] >> 24 & 0xff, H[0] >> 16 & 0xff, H[0] >> 8 & 0xff, H[0] & 0xff, H[1] >> 24 & 0xff, H[1] >> 16 & 0xff, H[1] >> 8 & 0xff, H[1] & 0xff, H[2] >> 24 & 0xff, H[2] >> 16 & 0xff, H[2] >> 8 & 0xff, H[2] & 0xff, H[3] >> 24 & 0xff, H[3] >> 16 & 0xff, H[3] >> 8 & 0xff, H[3] & 0xff, H[4] >> 24 & 0xff, H[4] >> 16 & 0xff, H[4] >> 8 & 0xff, H[4] & 0xff];\n}\n\nexport default sha1;","import v35 from './v35.js';\nimport sha1 from './sha1.js';\nconst v5 = v35('v5', 0x50, sha1);\nexport default v5;","import { unsafeStringify } from './stringify.js';\nimport parse from './parse.js';\n\nfunction stringToBytes(str) {\n  str = unescape(encodeURIComponent(str)); // UTF8 escape\n\n  const bytes = [];\n\n  for (let i = 0; i < str.length; ++i) {\n    bytes.push(str.charCodeAt(i));\n  }\n\n  return bytes;\n}\n\nexport const DNS = '6ba7b810-9dad-11d1-80b4-00c04fd430c8';\nexport const URL = '6ba7b811-9dad-11d1-80b4-00c04fd430c8';\nexport default function v35(name, version, hashfunc) {\n  function generateUUID(value, namespace, buf, offset) {\n    var _namespace;\n\n    if (typeof value === 'string') {\n      value = stringToBytes(value);\n    }\n\n    if (typeof namespace === 'string') {\n      namespace = parse(namespace);\n    }\n\n    if (((_namespace = namespace) === null || _namespace === void 0 ? void 0 : _namespace.length) !== 16) {\n      throw TypeError('Namespace must be array-like (16 iterable integer values, 0-255)');\n    } // Compute hash of namespace and value, Per 4.3\n    // Future: Use spread syntax when supported on all platforms, e.g. `bytes =\n    // hashfunc([...namespace, ... value])`\n\n\n    let bytes = new Uint8Array(16 + value.length);\n    bytes.set(namespace);\n    bytes.set(value, namespace.length);\n    bytes = hashfunc(bytes);\n    bytes[6] = bytes[6] & 0x0f | version;\n    bytes[8] = bytes[8] & 0x3f | 0x80;\n\n    if (buf) {\n      offset = offset || 0;\n\n      for (let i = 0; i < 16; ++i) {\n        buf[offset + i] = bytes[i];\n      }\n\n      return buf;\n    }\n\n    return unsafeStringify(bytes);\n  } // Function#name is not settable on some platforms (#270)\n\n\n  try {\n    generateUUID.name = name; // eslint-disable-next-line no-empty\n  } catch (err) {} // For CommonJS default export support\n\n\n  generateUUID.DNS = DNS;\n  generateUUID.URL = URL;\n  return generateUUID;\n}","// @flow\n\nimport { v5 as uuidv5 } from 'uuid';\n\n// NOTE: Keep in sync with lib/tracking/user_id.rb\n\n// These are the bytes from string 'Venuu/tracking_d'.\nconst FIRST_16_BYTES = [\n  86, 101, 110, 117, 117, 47, 116, 114, 97, 99, 107, 105, 110, 103, 95, 100\n];\n// This is the remaining part of 'Venuu/tracking_distinct_id' after the first 16 bytes\nconst REMAINING_STRING = 'istinct_id';\n\nexport function generateUserId({ userEmail }: {| userEmail: string |}): string {\n  // We can only provide 16 bytes worth of data as the UUID v5 namespace value\n  // for the `uuid` npm package, so 'istinct_id' part needs to be prepended\n  // to the uuidv5 input value.\n  //\n  // This way we get the same output on JS side as we would get on Ruby side\n  // if we ran this:\n  //\n  // Digest::UUID.uuid_v5('Venuu/tracking_distinct_id', user_email.downcase.to_s)\n  return uuidv5(\n    `${REMAINING_STRING}${userEmail.toLowerCase()}`,\n    FIRST_16_BYTES\n  );\n}\n","// @flow\n\nimport { retrieve } from 'putki';\nimport { object, record, nullable, id, oneOf } from 'common/json/extract';\n\ntype PageType =\n  | 'conversionintent'\n  | 'offerdetail'\n  | 'home'\n  | 'searchresults'\n  | 'others';\n\ntype GoogleTagParams = {|\n  hrental_id: string,\n  hrental_pagetype: PageType,\n  hrental_totalvalue: number\n|};\n\nconst extractRemarketingDetails = nullable(\n  object(\n    record({\n      page: oneOf(['conversionintent', 'offerdetail', 'home', 'searchresults']),\n      id: nullable(id)\n    })\n  )\n);\n\nexport function retrieveRemarketingProperties(): GoogleTagParams {\n  const remarketingDetails = extractRemarketingDetails(\n    retrieve('remarketing_details')\n  ) || {\n    page: 'others'\n  };\n\n  return {\n    hrental_id: remarketingDetails.id || '',\n    hrental_pagetype: remarketingDetails.page,\n    hrental_totalvalue: 0\n  };\n}\n","// @flow\n\nimport $ from 'jquery';\nimport { retrieve } from 'putki';\nimport currentSite from 'site/currentSite';\nimport getCookies from 'utils/getCookies';\nimport { consentGivenForCategory } from 'utils/cookieConsent';\nimport { generateUserId } from 'utils/trackingUserId';\nimport { trackClicksOn } from 'utils/analytics';\nimport {\n  object,\n  record,\n  nullable,\n  string,\n  withDefault\n} from 'common/json/extract';\n\nimport { retrieveRemarketingProperties } from './analytics/remarketing';\n\nfunction loadAnalytics() {\n  // Now it's time to inject Jitsu on the page if we can\n  const jitsuDomain = retrieve('jitsu_domain');\n  const jitsuBrowserWriteKey = retrieve('jitsu_browser_write_key');\n  if (\n    typeof jitsuDomain !== 'string' ||\n    typeof jitsuBrowserWriteKey !== 'string'\n  ) {\n    return;\n  }\n\n  // Inject the Jitsu script tag to the page, triggering the loading of it once done.\n  // This is similar to what Segment's analytics.load() did when we used Segment.\n  const jitsuScriptTag = document.createElement('script');\n  jitsuScriptTag.async = true;\n  jitsuScriptTag.src = `https://${jitsuDomain}/p.js`;\n\n  // Configure Jitsu with data tags as that works the best when loading the JS\n  // code asynchronously. For example, we can't stop Jitsu from automatically\n  // sending a `page` tracking event otherwise.\n  // Full configuration reference: https://docs.jitsu.com/sending-data/js-reference\n  jitsuScriptTag.setAttribute('data-write-key', jitsuBrowserWriteKey);\n  jitsuScriptTag.setAttribute('data-init-only', 'true');\n  jitsuScriptTag.setAttribute(\n    'data-cookie-names',\n    JSON.stringify({\n      // Replicate the anonymous ID cookie names we used to have from Segment era.\n      // This way the cookie values set on JS side are kept the same as before.\n      anonymousId: 'ajs_anonymous_id',\n      userId: 'ajs_user_id'\n    })\n  );\n  // eslint-disable-next-line no-restricted-globals -- global location usage is expected\n  if (location.search.includes('debugJitsu=1')) {\n    jitsuScriptTag.setAttribute('data-debug', 'true');\n  }\n  // Once Jitsu has loaded, we'll set the anonymous ID as the very first thing so all\n  // the queued events will already have the correct anonymous ID set.\n  window.jitsuOnLoadCallback = jitsu => {\n    const serverSideAnonymousId = getCookies()['cheekify_a'];\n    if (serverSideAnonymousId) {\n      jitsu.setAnonymousId(getCookies()['cheekify_a']);\n    }\n  };\n  jitsuScriptTag.setAttribute('data-onload', 'jitsuOnLoadCallback');\n\n  // Now we inject the tag to the DOM the same way Segment analytics.js would do\n  const firstScriptTag = document.getElementsByTagName('script')[0];\n  firstScriptTag.parentNode?.insertBefore(jitsuScriptTag, firstScriptTag);\n}\n\nfunction loadAnalyticsOnConsent() {\n  document.addEventListener('cookieyes_consent_update', eventData => {\n    // $FlowIgnore[prop-missing] -- https://www.cookieyes.com/documentation/events-on-cookie-banner-interactions/\n    const data = eventData.detail;\n    if (data.accepted.includes('analytics')) {\n      loadAnalytics();\n    }\n  });\n}\n\n/**\n * Rebinds tracking of anchor elements with data-venuu-t attributes.\n */\nfunction rebindTrackedLinks() {\n  trackClicksOn($('a[data-venuu-t]:not([data-venuu-t-react])'));\n}\n\nconst extractUserTrackingData = withDefault(\n  object(\n    record({\n      email: nullable(string),\n      customer_type: nullable(string)\n    })\n  ),\n  { email: null, customer_type: null }\n);\n\n/**\n * Persists the gclid parameter from the url or the _gcl_aw-cookie to our own cookie.\n *\n * This is done to ensure that we are not fully dependent on the poorly documented\n * Google conversion linker and the corresponding _gcl_aw cookie.\n */\nfunction persistGclid() {\n  let gclidFromUrl: ?string;\n  try {\n    // URLs which purl can't parse might throw. Don't throw in that case.\n    gclidFromUrl = $.url().param('gclid');\n  } catch (e) {\n    // no-op\n  }\n\n  const gclidCookie: ?string = $.cookie('_gcl_aw');\n  const gclidFromCookie: ?string = gclidCookie && gclidCookie.split('.')[2];\n\n  const gclid = gclidFromUrl || gclidFromCookie;\n\n  if (gclid) {\n    $.cookie('venuu_gclid', gclid, { expires: 90, path: '/' });\n  }\n}\n\nfunction distinctIdFromUrl() {\n  try {\n    // URLs which purl can't parse might throw. Don't throw in that case.\n    // See https://github.com/venuu/venuu/issues/749\n    return $.url().param('distinct_id');\n  } catch (e) {\n    return null;\n  }\n}\n\nfunction emailIdFromUrl() {\n  let rawEmailDistinctId: string | null = null;\n  try {\n    // URLs which purl can't parse might throw. Don't throw in that case.\n    // See https://github.com/venuu/venuu/issues/749\n    rawEmailDistinctId = $.url().param('email_distinct_id');\n  } catch (e) {\n    // no-op\n  }\n  if (!rawEmailDistinctId) {\n    return null;\n  }\n  return generateUserId({ userEmail: rawEmailDistinctId });\n}\n\n/**\n * The following functions are a part of the improved user tracking scheme.\n * ------------------------------------------------\n * Documentation: https://github.com/venuu/venuu/pull/7368\n */\nfunction identifyUser() {\n  const userIdFromUrl = distinctIdFromUrl();\n  const emailUserIdFromUrl = emailIdFromUrl();\n  const userIdFromCookie = getCookies()['cheekify_uid'];\n  const { email, customer_type: customerType } = extractUserTrackingData(\n    retrieve('user_tracking_data')\n  );\n\n  const commonTraits = {\n    'Application Version': retrieve('application_version'),\n    'Site Key': currentSite().key\n  };\n\n  const identify = (...args: any) => {\n    (window.jitsuQ = window.jitsuQ || []).push(jitsu => {\n      jitsu.identify(...args);\n    });\n  };\n\n  if (userIdFromCookie && email) {\n    const traits = {\n      ...commonTraits,\n      Source: 'Venuu web app',\n      'Customer Type': customerType,\n      email: email\n    };\n    if (traits['Customer Type'] === null) {\n      // $FlowFixMe[incompatible-type] -- Suppressed during Flow upgrade to 0.201.0. Delete this comment to view the error.\n      delete traits['Customer Type'];\n    }\n    identify(userIdFromCookie, traits);\n  } else if (userIdFromUrl) {\n    // These are returning users\n    // so they should customer identification traits set.\n    identify(userIdFromUrl, commonTraits);\n  } else if (emailUserIdFromUrl) {\n    identify(emailUserIdFromUrl, commonTraits);\n  }\n}\n\nexport default function initializeAnalytics() {\n  if (consentGivenForCategory('analytics')) {\n    loadAnalytics();\n  } else {\n    loadAnalyticsOnConsent();\n  }\n\n  identifyUser();\n\n  const pageOpts = retrieveRemarketingProperties();\n\n  (window.jitsuQ = window.jitsuQ || []).push(jitsu => {\n    jitsu.page(pageOpts);\n  });\n\n  // Track special links\n  rebindTrackedLinks();\n\n  persistGclid();\n}\n","// Load all social media plugins only after page has been fully loaded. This\n// reduces the payload needed to get the page visible and running -- not any of\n// these plugins is the reason why the user comes to the site, so they should be\n// lazily loaded.\n//\n// Also, these plugins are loaded only on certain pages on the site, so we need\n// to specify those conditions first using a custom callback.\n\nimport { retrieve } from 'putki';\n\nconst socialMediaInitCondition = () => {\n  const controller = retrieve('controller');\n  const action = retrieve('action');\n\n  if (controller === 'price_requests' && action === 'thanks') {\n    return true;\n  } else {\n    // No-one else needs it.\n    return false;\n  }\n};\n\nconst lazyloadPlugins = () => {\n  if (retrieve('disable_external_js')) return;\n\n  $(window).load(() => {\n    // Facebook\n    window.fbAsyncInit = function () {\n      /* global FB */\n      FB.init({\n        xfbml: true\n      });\n    };\n\n    // Disable warnings about copypasta\n    /* eslint-disable prefer-const, one-var */\n    (function (d, s, id) {\n      let js,\n        fjs = d.getElementsByTagName(s)[0];\n      if (d.getElementById(id)) return;\n      js = d.createElement(s);\n      js.id = id;\n      js.async = true;\n      js.src = `https://connect.facebook.net/${__(\n        'locale_and_country_code'\n      )}/all.js`;\n      fjs.parentNode.insertBefore(js, fjs);\n    })(document, 'script', 'facebook-jssdk');\n    /* eslint-enable */\n  });\n};\n\n$(document).ready(() => {\n  if (socialMediaInitCondition()) {\n    lazyloadPlugins();\n  }\n});\n","import satisfiesMediaQuery from 'utils/satisfiesMediaQuery';\n\n$(() => {\n  if (!$('.m-box-sticky-container').length) {\n    return;\n  }\n\n  const $sidebar = $('.m-box-sticky-container');\n\n  const $footer = $('.js-sticky-sidebar-end, footer').first();\n  const $wrapper = () => $('.sticky-wrapper');\n  const wrapperWidth = () => $wrapper().outerWidth();\n\n  $sidebar.waypoint('sticky', {\n    stuckClass: 'm-box-sticky',\n    offset: 20,\n    handler: () => $sidebar.css({ width: wrapperWidth() })\n  });\n\n  $footer.waypoint(\n    direction => {\n      if (direction === 'down') {\n        const offset =\n          $footer.offset().top -\n          $wrapper().offset().top -\n          $sidebar.outerHeight();\n        $sidebar.css({\n          position: 'absolute',\n          top: offset,\n          width: wrapperWidth()\n        });\n      } else if (direction === 'up') {\n        $sidebar\n          .removeAttr('style')\n          .css({ width: wrapperWidth() })\n          .addClass('m-box-sticky');\n      }\n    },\n    {\n      offset: () => $sidebar.outerHeight() + 20\n    }\n  );\n\n  const resize = function () {\n    if (satisfiesMediaQuery('middle')) {\n      $.waypoints('enable');\n    } else {\n      $sidebar.attr('style', '').removeClass('m-box-sticky');\n      $wrapper().removeAttr('style');\n      $.waypoints('disable');\n    }\n  };\n  $(window).on('resize', resize);\n  resize();\n});\n","/* eslint-disable local-rules/disallow-side-effects */\n/**\n * Keep references on console methods to avoid triggering patched behaviors\n *\n * NB: in some setup, console could already be patched by another SDK.\n * In this case, some display messages can be sent by the other SDK\n * but we should be safe from infinite loop nonetheless.\n */\nexport var ConsoleApiName = {\n    log: 'log',\n    debug: 'debug',\n    info: 'info',\n    warn: 'warn',\n    error: 'error',\n};\n/**\n * When building JS bundles, some users might use a plugin[1] or configuration[2] to remove\n * \"console.*\" references. This causes some issue as we expect `console.*` to be defined.\n * As a workaround, let's use a variable alias, so those expressions won't be taken into account by\n * simple static analysis.\n *\n * [1]: https://babeljs.io/docs/babel-plugin-transform-remove-console/\n * [2]: https://github.com/terser/terser#compress-options (look for drop_console)\n */\nexport var globalConsole = console;\nexport var originalConsoleMethods = {};\nObject.keys(ConsoleApiName).forEach(function (name) {\n    originalConsoleMethods[name] = globalConsole[name];\n});\nvar PREFIX = 'Datadog Browser SDK:';\nexport var display = {\n    debug: originalConsoleMethods.debug.bind(globalConsole, PREFIX),\n    log: originalConsoleMethods.log.bind(globalConsole, PREFIX),\n    info: originalConsoleMethods.info.bind(globalConsole, PREFIX),\n    warn: originalConsoleMethods.warn.bind(globalConsole, PREFIX),\n    error: originalConsoleMethods.error.bind(globalConsole, PREFIX),\n};\nexport var DOCS_ORIGIN = 'https://docs.datadoghq.com';\nexport var DOCS_TROUBLESHOOTING = \"\".concat(DOCS_ORIGIN, \"/real_user_monitoring/browser/troubleshooting\");\nexport var MORE_DETAILS = 'More details:';\n//# sourceMappingURL=display.js.map","import { display } from './display';\nexport function catchUserErrors(fn, errorMsg) {\n    return function () {\n        var args = [];\n        for (var _i = 0; _i < arguments.length; _i++) {\n            args[_i] = arguments[_i];\n        }\n        try {\n            return fn.apply(void 0, args);\n        }\n        catch (err) {\n            display.error(errorMsg, err);\n        }\n    };\n}\n//# sourceMappingURL=catchUserErrors.js.map","export function includes(candidate, search) {\n    return candidate.indexOf(search) !== -1;\n}\nexport function arrayFrom(arrayLike) {\n    if (Array.from) {\n        return Array.from(arrayLike);\n    }\n    var array = [];\n    if (arrayLike instanceof Set) {\n        arrayLike.forEach(function (item) { return array.push(item); });\n    }\n    else {\n        for (var i = 0; i < arrayLike.length; i++) {\n            array.push(arrayLike[i]);\n        }\n    }\n    return array;\n}\nexport function find(array, predicate) {\n    for (var i = 0; i < array.length; i += 1) {\n        var item = array[i];\n        if (predicate(item, i)) {\n            return item;\n        }\n    }\n    return undefined;\n}\nexport function findLast(array, predicate) {\n    for (var i = array.length - 1; i >= 0; i -= 1) {\n        var item = array[i];\n        if (predicate(item, i, array)) {\n            return item;\n        }\n    }\n    return undefined;\n}\nexport function forEach(list, callback) {\n    Array.prototype.forEach.call(list, callback);\n}\nexport function objectValues(object) {\n    return Object.keys(object).map(function (key) { return object[key]; });\n}\nexport function objectEntries(object) {\n    return Object.keys(object).map(function (key) { return [key, object[key]]; });\n}\nexport function startsWith(candidate, search) {\n    return candidate.slice(0, search.length) === search;\n}\nexport function endsWith(candidate, search) {\n    return candidate.slice(-search.length) === search;\n}\nexport function assign(target) {\n    var toAssign = [];\n    for (var _i = 1; _i < arguments.length; _i++) {\n        toAssign[_i - 1] = arguments[_i];\n    }\n    toAssign.forEach(function (source) {\n        for (var key in source) {\n            if (Object.prototype.hasOwnProperty.call(source, key)) {\n                target[key] = source[key];\n            }\n        }\n    });\n    return target;\n}\n//# sourceMappingURL=polyfills.js.map","/**\n * inspired by https://mathiasbynens.be/notes/globalthis\n */\nexport function getGlobalObject() {\n    if (typeof globalThis === 'object') {\n        return globalThis;\n    }\n    Object.defineProperty(Object.prototype, '_dd_temp_', {\n        get: function () {\n            return this;\n        },\n        configurable: true,\n    });\n    // @ts-ignore _dd_temp is defined using defineProperty\n    var globalObject = _dd_temp_;\n    // @ts-ignore _dd_temp is defined using defineProperty\n    delete Object.prototype._dd_temp_;\n    if (typeof globalObject !== 'object') {\n        // on safari _dd_temp_ is available on window but not globally\n        // fallback on other browser globals check\n        if (typeof self === 'object') {\n            globalObject = self;\n        }\n        else if (typeof window === 'object') {\n            globalObject = window;\n        }\n        else {\n            globalObject = {};\n        }\n    }\n    return globalObject;\n}\n//# sourceMappingURL=getGlobalObject.js.map","export var ONE_KIBI_BYTE = 1024;\nexport var ONE_MEBI_BYTE = 1024 * ONE_KIBI_BYTE;\n// eslint-disable-next-line no-control-regex\nvar HAS_MULTI_BYTES_CHARACTERS = /[^\\u0000-\\u007F]/;\nexport function computeBytesCount(candidate) {\n    // Accurate bytes count computations can degrade performances when there is a lot of events to process\n    if (!HAS_MULTI_BYTES_CHARACTERS.test(candidate)) {\n        return candidate.length;\n    }\n    if (window.TextEncoder !== undefined) {\n        return new TextEncoder().encode(candidate).length;\n    }\n    return new Blob([candidate]).size;\n}\nexport function concatBuffers(buffers) {\n    var length = buffers.reduce(function (total, buffer) { return total + buffer.length; }, 0);\n    var result = new Uint8Array(length);\n    var offset = 0;\n    for (var _i = 0, buffers_1 = buffers; _i < buffers_1.length; _i++) {\n        var buffer = buffers_1[_i];\n        result.set(buffer, offset);\n        offset += buffer.length;\n    }\n    return result;\n}\n//# sourceMappingURL=byteUtils.js.map","import { getGlobalObject } from './getGlobalObject';\n/**\n * Gets the original value for a DOM API that was potentially patched by Zone.js.\n *\n * Zone.js[1] is a library that patches a bunch of JS and DOM APIs. It usually stores the original\n * value of the patched functions/constructors/methods in a hidden property prefixed by\n * __zone_symbol__.\n *\n * In multiple occasions, we observed that Zone.js is the culprit of important issues leading to\n * browser resource exhaustion (memory leak, high CPU usage). This method is used as a workaround to\n * use the original DOM API instead of the one patched by Zone.js.\n *\n * [1]: https://github.com/angular/angular/tree/main/packages/zone.js\n */\nexport function getZoneJsOriginalValue(target, name) {\n    var browserWindow = getGlobalObject();\n    var original;\n    if (browserWindow.Zone && typeof browserWindow.Zone.__symbol__ === 'function') {\n        original = target[browserWindow.Zone.__symbol__(name)];\n    }\n    if (!original) {\n        original = target[name];\n    }\n    return original;\n}\n//# sourceMappingURL=getZoneJsOriginalValue.js.map","import { getZoneJsOriginalValue } from './getZoneJsOriginalValue';\nimport { monitor } from './monitor';\nimport { getGlobalObject } from './getGlobalObject';\nexport function setTimeout(callback, delay) {\n    return getZoneJsOriginalValue(getGlobalObject(), 'setTimeout')(monitor(callback), delay);\n}\nexport function clearTimeout(timeoutId) {\n    getZoneJsOriginalValue(getGlobalObject(), 'clearTimeout')(timeoutId);\n}\nexport function setInterval(callback, delay) {\n    return getZoneJsOriginalValue(getGlobalObject(), 'setInterval')(monitor(callback), delay);\n}\nexport function clearInterval(timeoutId) {\n    getZoneJsOriginalValue(getGlobalObject(), 'clearInterval')(timeoutId);\n}\n//# sourceMappingURL=timer.js.map","import { setTimeout, clearTimeout } from '../timer';\n// use lodash API\nexport function throttle(fn, wait, options) {\n    var needLeadingExecution = options && options.leading !== undefined ? options.leading : true;\n    var needTrailingExecution = options && options.trailing !== undefined ? options.trailing : true;\n    var inWaitPeriod = false;\n    var pendingExecutionWithParameters;\n    var pendingTimeoutId;\n    return {\n        throttled: function () {\n            var parameters = [];\n            for (var _i = 0; _i < arguments.length; _i++) {\n                parameters[_i] = arguments[_i];\n            }\n            if (inWaitPeriod) {\n                pendingExecutionWithParameters = parameters;\n                return;\n            }\n            if (needLeadingExecution) {\n                fn.apply(void 0, parameters);\n            }\n            else {\n                pendingExecutionWithParameters = parameters;\n            }\n            inWaitPeriod = true;\n            pendingTimeoutId = setTimeout(function () {\n                if (needTrailingExecution && pendingExecutionWithParameters) {\n                    fn.apply(void 0, pendingExecutionWithParameters);\n                }\n                inWaitPeriod = false;\n                pendingExecutionWithParameters = undefined;\n            }, wait);\n        },\n        cancel: function () {\n            clearTimeout(pendingTimeoutId);\n            inWaitPeriod = false;\n            pendingExecutionWithParameters = undefined;\n        },\n    };\n}\n// eslint-disable-next-line @typescript-eslint/no-empty-function\nexport function noop() { }\n//# sourceMappingURL=functionUtils.js.map","import { noop } from '../utils/functionUtils';\n/**\n * Custom implementation of JSON.stringify that ignores some toJSON methods. We need to do that\n * because some sites badly override toJSON on certain objects. Removing all toJSON methods from\n * nested values would be too costly, so we just detach them from the root value, and native classes\n * used to build JSON values (Array and Object).\n *\n * Note: this still assumes that JSON.stringify is correct.\n */\nexport function jsonStringify(value, replacer, space) {\n    if (typeof value !== 'object' || value === null) {\n        return JSON.stringify(value);\n    }\n    // Note: The order matter here. We need to detach toJSON methods on parent classes before their\n    // subclasses.\n    var restoreObjectPrototypeToJson = detachToJsonMethod(Object.prototype);\n    var restoreArrayPrototypeToJson = detachToJsonMethod(Array.prototype);\n    var restoreValuePrototypeToJson = detachToJsonMethod(Object.getPrototypeOf(value));\n    var restoreValueToJson = detachToJsonMethod(value);\n    try {\n        return JSON.stringify(value, replacer, space);\n    }\n    catch (_a) {\n        return '<error: unable to serialize object>';\n    }\n    finally {\n        restoreObjectPrototypeToJson();\n        restoreArrayPrototypeToJson();\n        restoreValuePrototypeToJson();\n        restoreValueToJson();\n    }\n}\nexport function detachToJsonMethod(value) {\n    var object = value;\n    var objectToJson = object.toJSON;\n    if (objectToJson) {\n        delete object.toJSON;\n        return function () {\n            object.toJSON = objectToJson;\n        };\n    }\n    return noop;\n}\n//# sourceMappingURL=jsonStringify.js.map","import { assign } from './polyfills';\nexport function shallowClone(object) {\n    return assign({}, object);\n}\nexport function objectHasValue(object, value) {\n    return Object.keys(object).some(function (key) { return object[key] === value; });\n}\nexport function isEmptyObject(object) {\n    return Object.keys(object).length === 0;\n}\nexport function mapValues(object, fn) {\n    var newObject = {};\n    for (var _i = 0, _a = Object.keys(object); _i < _a.length; _i++) {\n        var key = _a[_i];\n        newObject[key] = fn(object[key]);\n    }\n    return newObject;\n}\n//# sourceMappingURL=objectUtils.js.map","import { ONE_KIBI_BYTE, computeBytesCount } from '../../tools/utils/byteUtils';\nimport { throttle } from '../../tools/utils/functionUtils';\nimport { jsonStringify } from '../../tools/serialisation/jsonStringify';\nimport { DOCS_TROUBLESHOOTING, MORE_DETAILS, display } from '../../tools/display';\nimport { isEmptyObject } from '../../tools/utils/objectUtils';\n// RUM and logs batch bytes limit is 16KB\n// ensure that we leave room for other event attributes and maintain a decent amount of event per batch\n// (3KB (customer data) + 1KB (other attributes)) * 4 (events per batch) = 16KB\nexport var CUSTOMER_DATA_BYTES_LIMIT = 3 * ONE_KIBI_BYTE;\n// We observed that the compression ratio is around 8 in general, but we also want to keep a margin\n// because some data might not be compressed (ex: last view update on page exit). We chose 16KiB\n// because it is also the limit of the 'batchBytesCount' that we use for RUM and Logs data, but this\n// is a bit arbitrary.\nexport var CUSTOMER_COMPRESSED_DATA_BYTES_LIMIT = 16 * ONE_KIBI_BYTE;\nexport var BYTES_COMPUTATION_THROTTLING_DELAY = 200;\nexport function createCustomerDataTrackerManager(compressionStatus) {\n    if (compressionStatus === void 0) { compressionStatus = 2 /* CustomerDataCompressionStatus.Disabled */; }\n    var customerDataTrackers = new Map();\n    var alreadyWarned = false;\n    function checkCustomerDataLimit(initialBytesCount) {\n        if (initialBytesCount === void 0) { initialBytesCount = 0; }\n        if (alreadyWarned || compressionStatus === 0 /* CustomerDataCompressionStatus.Unknown */) {\n            return;\n        }\n        var bytesCountLimit = compressionStatus === 2 /* CustomerDataCompressionStatus.Disabled */\n            ? CUSTOMER_DATA_BYTES_LIMIT\n            : CUSTOMER_COMPRESSED_DATA_BYTES_LIMIT;\n        var bytesCount = initialBytesCount;\n        customerDataTrackers.forEach(function (tracker) {\n            bytesCount += tracker.getBytesCount();\n        });\n        if (bytesCount > bytesCountLimit) {\n            displayCustomerDataLimitReachedWarning(bytesCountLimit);\n            alreadyWarned = true;\n        }\n    }\n    return {\n        /**\n         * Creates a detached tracker. The manager will not store a reference to that tracker, and the\n         * bytes count will be counted independently from other detached trackers.\n         *\n         * This is particularly useful when we don't know when the tracker will be unused, so we don't\n         * leak memory (ex: when used in Logger instances).\n         */\n        createDetachedTracker: function () {\n            var tracker = createCustomerDataTracker(function () { return checkCustomerDataLimit(tracker.getBytesCount()); });\n            return tracker;\n        },\n        /**\n         * Creates a tracker if it doesn't exist, and returns it.\n         */\n        getOrCreateTracker: function (type) {\n            if (!customerDataTrackers.has(type)) {\n                customerDataTrackers.set(type, createCustomerDataTracker(checkCustomerDataLimit));\n            }\n            return customerDataTrackers.get(type);\n        },\n        setCompressionStatus: function (newCompressionStatus) {\n            if (compressionStatus === 0 /* CustomerDataCompressionStatus.Unknown */) {\n                compressionStatus = newCompressionStatus;\n                checkCustomerDataLimit();\n            }\n        },\n        getCompressionStatus: function () { return compressionStatus; },\n        stop: function () {\n            customerDataTrackers.forEach(function (tracker) { return tracker.stop(); });\n            customerDataTrackers.clear();\n        },\n    };\n}\nexport function createCustomerDataTracker(checkCustomerDataLimit) {\n    var bytesCountCache = 0;\n    // Throttle the bytes computation to minimize the impact on performance.\n    // Especially useful if the user call context APIs synchronously multiple times in a row\n    var _a = throttle(function (context) {\n        bytesCountCache = computeBytesCount(jsonStringify(context));\n        checkCustomerDataLimit();\n    }, BYTES_COMPUTATION_THROTTLING_DELAY), computeBytesCountThrottled = _a.throttled, cancelComputeBytesCount = _a.cancel;\n    var resetBytesCount = function () {\n        cancelComputeBytesCount();\n        bytesCountCache = 0;\n    };\n    return {\n        updateCustomerData: function (context) {\n            if (isEmptyObject(context)) {\n                resetBytesCount();\n            }\n            else {\n                computeBytesCountThrottled(context);\n            }\n        },\n        resetCustomerData: resetBytesCount,\n        getBytesCount: function () { return bytesCountCache; },\n        stop: function () {\n            cancelComputeBytesCount();\n        },\n    };\n}\nfunction displayCustomerDataLimitReachedWarning(bytesCountLimit) {\n    display.warn(\"Customer data exceeds the recommended \".concat(bytesCountLimit / ONE_KIBI_BYTE, \"KiB threshold. \").concat(MORE_DETAILS, \" \").concat(DOCS_TROUBLESHOOTING, \"/#customer-data-exceeds-the-recommended-threshold-warning\"));\n}\n//# sourceMappingURL=customerDataTracker.js.map","/**\n * Similar to `typeof`, but distinguish plain objects from `null` and arrays\n */\nexport function getType(value) {\n    if (value === null) {\n        return 'null';\n    }\n    if (Array.isArray(value)) {\n        return 'array';\n    }\n    return typeof value;\n}\n//# sourceMappingURL=typeUtils.js.map","import { getType } from './utils/typeUtils';\n/**\n * Iterate over source and affect its sub values into destination, recursively.\n * If the source and destination can't be merged, return source.\n */\nexport function mergeInto(destination, source, circularReferenceChecker) {\n    if (circularReferenceChecker === void 0) { circularReferenceChecker = createCircularReferenceChecker(); }\n    // ignore the source if it is undefined\n    if (source === undefined) {\n        return destination;\n    }\n    if (typeof source !== 'object' || source === null) {\n        // primitive values - just return source\n        return source;\n    }\n    else if (source instanceof Date) {\n        return new Date(source.getTime());\n    }\n    else if (source instanceof RegExp) {\n        var flags = source.flags ||\n            // old browsers compatibility\n            [\n                source.global ? 'g' : '',\n                source.ignoreCase ? 'i' : '',\n                source.multiline ? 'm' : '',\n                source.sticky ? 'y' : '',\n                source.unicode ? 'u' : '',\n            ].join('');\n        return new RegExp(source.source, flags);\n    }\n    if (circularReferenceChecker.hasAlreadyBeenSeen(source)) {\n        // remove circular references\n        return undefined;\n    }\n    else if (Array.isArray(source)) {\n        var merged_1 = Array.isArray(destination) ? destination : [];\n        for (var i = 0; i < source.length; ++i) {\n            merged_1[i] = mergeInto(merged_1[i], source[i], circularReferenceChecker);\n        }\n        return merged_1;\n    }\n    var merged = getType(destination) === 'object' ? destination : {};\n    for (var key in source) {\n        if (Object.prototype.hasOwnProperty.call(source, key)) {\n            merged[key] = mergeInto(merged[key], source[key], circularReferenceChecker);\n        }\n    }\n    return merged;\n}\n/**\n * A simplistic implementation of a deep clone algorithm.\n * Caveats:\n * - It doesn't maintain prototype chains - don't use with instances of custom classes.\n * - It doesn't handle Map and Set\n */\nexport function deepClone(value) {\n    return mergeInto(undefined, value);\n}\nexport function combine() {\n    var sources = [];\n    for (var _i = 0; _i < arguments.length; _i++) {\n        sources[_i] = arguments[_i];\n    }\n    var destination;\n    for (var _a = 0, sources_1 = sources; _a < sources_1.length; _a++) {\n        var source = sources_1[_a];\n        // Ignore any undefined or null sources.\n        if (source === undefined || source === null) {\n            continue;\n        }\n        destination = mergeInto(destination, source);\n    }\n    return destination;\n}\nfunction createCircularReferenceChecker() {\n    if (typeof WeakSet !== 'undefined') {\n        var set_1 = new WeakSet();\n        return {\n            hasAlreadyBeenSeen: function (value) {\n                var has = set_1.has(value);\n                if (!has) {\n                    set_1.add(value);\n                }\n                return has;\n            },\n        };\n    }\n    var array = [];\n    return {\n        hasAlreadyBeenSeen: function (value) {\n            var has = array.indexOf(value) >= 0;\n            if (!has) {\n                array.push(value);\n            }\n            return has;\n        },\n    };\n}\n//# sourceMappingURL=mergeInto.js.map","import { display } from '../display';\nimport { ONE_KIBI_BYTE } from '../utils/byteUtils';\nimport { detachToJsonMethod } from './jsonStringify';\n// The maximum size of a single event is 256KiB. By default, we ensure that user-provided data\n// going through sanitize fits inside our events, while leaving room for other contexts, metadata, ...\nvar SANITIZE_DEFAULT_MAX_CHARACTER_COUNT = 220 * ONE_KIBI_BYTE;\n// Symbol for the root element of the JSONPath used for visited objects\nvar JSON_PATH_ROOT_ELEMENT = '$';\n// When serializing (using JSON.stringify) a key of an object, { key: 42 } gets wrapped in quotes as \"key\".\n// With the separator (:), we need to add 3 characters to the count.\nvar KEY_DECORATION_LENGTH = 3;\nexport function sanitize(source, maxCharacterCount) {\n    if (maxCharacterCount === void 0) { maxCharacterCount = SANITIZE_DEFAULT_MAX_CHARACTER_COUNT; }\n    // Unbind any toJSON function we may have on [] or {} prototypes\n    var restoreObjectPrototypeToJson = detachToJsonMethod(Object.prototype);\n    var restoreArrayPrototypeToJson = detachToJsonMethod(Array.prototype);\n    // Initial call to sanitizeProcessor - will populate containerQueue if source is an Array or a plain Object\n    var containerQueue = [];\n    var visitedObjectsWithPath = new WeakMap();\n    var sanitizedData = sanitizeProcessor(source, JSON_PATH_ROOT_ELEMENT, undefined, containerQueue, visitedObjectsWithPath);\n    var serializedSanitizedData = JSON.stringify(sanitizedData);\n    var accumulatedCharacterCount = serializedSanitizedData ? serializedSanitizedData.length : 0;\n    if (accumulatedCharacterCount > maxCharacterCount) {\n        warnOverCharacterLimit(maxCharacterCount, 'discarded', source);\n        return undefined;\n    }\n    while (containerQueue.length > 0 && accumulatedCharacterCount < maxCharacterCount) {\n        var containerToProcess = containerQueue.shift();\n        var separatorLength = 0; // 0 for the first element, 1 for subsequent elements\n        // Arrays and Objects have to be handled distinctly to ensure\n        // we do not pick up non-numerical properties from Arrays\n        if (Array.isArray(containerToProcess.source)) {\n            for (var key = 0; key < containerToProcess.source.length; key++) {\n                var targetData = sanitizeProcessor(containerToProcess.source[key], containerToProcess.path, key, containerQueue, visitedObjectsWithPath);\n                if (targetData !== undefined) {\n                    accumulatedCharacterCount += JSON.stringify(targetData).length;\n                }\n                else {\n                    // When an element of an Array (targetData) is undefined, it is serialized as null:\n                    // JSON.stringify([undefined]) => '[null]' - This accounts for 4 characters\n                    accumulatedCharacterCount += 4;\n                }\n                accumulatedCharacterCount += separatorLength;\n                separatorLength = 1;\n                if (accumulatedCharacterCount > maxCharacterCount) {\n                    warnOverCharacterLimit(maxCharacterCount, 'truncated', source);\n                    break;\n                }\n                ;\n                containerToProcess.target[key] = targetData;\n            }\n        }\n        else {\n            for (var key in containerToProcess.source) {\n                if (Object.prototype.hasOwnProperty.call(containerToProcess.source, key)) {\n                    var targetData = sanitizeProcessor(containerToProcess.source[key], containerToProcess.path, key, containerQueue, visitedObjectsWithPath);\n                    // When a property of an object has an undefined value, it will be dropped during serialization:\n                    // JSON.stringify({a:undefined}) => '{}'\n                    if (targetData !== undefined) {\n                        accumulatedCharacterCount +=\n                            JSON.stringify(targetData).length + separatorLength + key.length + KEY_DECORATION_LENGTH;\n                        separatorLength = 1;\n                    }\n                    if (accumulatedCharacterCount > maxCharacterCount) {\n                        warnOverCharacterLimit(maxCharacterCount, 'truncated', source);\n                        break;\n                    }\n                    ;\n                    containerToProcess.target[key] = targetData;\n                }\n            }\n        }\n    }\n    // Rebind detached toJSON functions\n    restoreObjectPrototypeToJson();\n    restoreArrayPrototypeToJson();\n    return sanitizedData;\n}\n/**\n * Internal function to factorize the process common to the\n * initial call to sanitize, and iterations for Arrays and Objects\n *\n */\nfunction sanitizeProcessor(source, parentPath, key, queue, visitedObjectsWithPath) {\n    // Start by handling toJSON, as we want to sanitize its output\n    var sourceToSanitize = tryToApplyToJSON(source);\n    if (!sourceToSanitize || typeof sourceToSanitize !== 'object') {\n        return sanitizePrimitivesAndFunctions(sourceToSanitize);\n    }\n    var sanitizedSource = sanitizeObjects(sourceToSanitize);\n    if (sanitizedSource !== '[Object]' && sanitizedSource !== '[Array]' && sanitizedSource !== '[Error]') {\n        return sanitizedSource;\n    }\n    // Handle potential cyclic references\n    // We need to use source as sourceToSanitize could be a reference to a new object\n    // At this stage, we know the source is an object type\n    var sourceAsObject = source;\n    if (visitedObjectsWithPath.has(sourceAsObject)) {\n        return \"[Reference seen at \".concat(visitedObjectsWithPath.get(sourceAsObject), \"]\");\n    }\n    // Add processed source to queue\n    var currentPath = key !== undefined ? \"\".concat(parentPath, \".\").concat(key) : parentPath;\n    var target = Array.isArray(sourceToSanitize) ? [] : {};\n    visitedObjectsWithPath.set(sourceAsObject, currentPath);\n    queue.push({ source: sourceToSanitize, target: target, path: currentPath });\n    return target;\n}\n/**\n * Handles sanitization of simple, non-object types\n *\n */\nfunction sanitizePrimitivesAndFunctions(value) {\n    // BigInt cannot be serialized by JSON.stringify(), convert it to a string representation\n    if (typeof value === 'bigint') {\n        return \"[BigInt] \".concat(value.toString());\n    }\n    // Functions cannot be serialized by JSON.stringify(). Moreover, if a faulty toJSON is present, it needs to be converted\n    // so it won't prevent stringify from serializing later\n    if (typeof value === 'function') {\n        return \"[Function] \".concat(value.name || 'unknown');\n    }\n    // JSON.stringify() does not serialize symbols.\n    if (typeof value === 'symbol') {\n        return \"[Symbol] \".concat(value.description || value.toString());\n    }\n    return value;\n}\n/**\n * Handles sanitization of object types\n *\n * LIMITATIONS\n * - If a class defines a toStringTag Symbol, it will fall in the catch-all method and prevent enumeration of properties.\n * To avoid this, a toJSON method can be defined.\n * - IE11 does not return a distinct type for objects such as Map, WeakMap, ... These objects will pass through and their\n * properties enumerated if any.\n *\n */\nfunction sanitizeObjects(value) {\n    try {\n        // Handle events - Keep a simple implementation to avoid breaking changes\n        if (value instanceof Event) {\n            return {\n                isTrusted: value.isTrusted,\n            };\n        }\n        // Handle all remaining object types in a generic way\n        var result = Object.prototype.toString.call(value);\n        var match = result.match(/\\[object (.*)\\]/);\n        if (match && match[1]) {\n            return \"[\".concat(match[1], \"]\");\n        }\n    }\n    catch (_a) {\n        // If the previous serialization attempts failed, and we cannot convert using\n        // Object.prototype.toString, declare the value unserializable\n    }\n    return '[Unserializable]';\n}\n/**\n * Checks if a toJSON function exists and tries to execute it\n *\n */\nfunction tryToApplyToJSON(value) {\n    var object = value;\n    if (object && typeof object.toJSON === 'function') {\n        try {\n            return object.toJSON();\n        }\n        catch (_a) {\n            // If toJSON fails, we continue by trying to serialize the value manually\n        }\n    }\n    return value;\n}\n/**\n * Helper function to display the warning when the accumulated character count is over the limit\n */\nfunction warnOverCharacterLimit(maxCharacterCount, changeType, source) {\n    display.warn(\"The data provided has been \".concat(changeType, \" as it is over the limit of \").concat(maxCharacterCount, \" characters:\"), source);\n}\n//# sourceMappingURL=sanitize.js.map","// eslint-disable-next-line no-restricted-syntax\nvar Observable = /** @class */ (function () {\n    function Observable(onFirstSubscribe) {\n        this.onFirstSubscribe = onFirstSubscribe;\n        this.observers = [];\n    }\n    Observable.prototype.subscribe = function (f) {\n        var _this = this;\n        this.observers.push(f);\n        if (this.observers.length === 1 && this.onFirstSubscribe) {\n            this.onLastUnsubscribe = this.onFirstSubscribe(this) || undefined;\n        }\n        return {\n            unsubscribe: function () {\n                _this.observers = _this.observers.filter(function (other) { return f !== other; });\n                if (!_this.observers.length && _this.onLastUnsubscribe) {\n                    _this.onLastUnsubscribe();\n                }\n            },\n        };\n    };\n    Observable.prototype.notify = function (data) {\n        this.observers.forEach(function (observer) { return observer(data); });\n    };\n    return Observable;\n}());\nexport { Observable };\nexport function mergeObservables() {\n    var observables = [];\n    for (var _i = 0; _i < arguments.length; _i++) {\n        observables[_i] = arguments[_i];\n    }\n    return new Observable(function (globalObservable) {\n        var subscriptions = observables.map(function (observable) {\n            return observable.subscribe(function (data) { return globalObservable.notify(data); });\n        });\n        return function () { return subscriptions.forEach(function (subscription) { return subscription.unsubscribe(); }); };\n    });\n}\n//# sourceMappingURL=observable.js.map","import { deepClone } from '../../tools/mergeInto';\nimport { getType } from '../../tools/utils/typeUtils';\nimport { sanitize } from '../../tools/serialisation/sanitize';\nimport { Observable } from '../../tools/observable';\nexport function createContextManager(customerDataTracker) {\n    var context = {};\n    var changeObservable = new Observable();\n    var contextManager = {\n        getContext: function () { return deepClone(context); },\n        setContext: function (newContext) {\n            if (getType(newContext) === 'object') {\n                context = sanitize(newContext);\n                customerDataTracker === null || customerDataTracker === void 0 ? void 0 : customerDataTracker.updateCustomerData(context);\n            }\n            else {\n                contextManager.clearContext();\n            }\n            changeObservable.notify();\n        },\n        setContextProperty: function (key, property) {\n            context[key] = sanitize(property);\n            customerDataTracker === null || customerDataTracker === void 0 ? void 0 : customerDataTracker.updateCustomerData(context);\n            changeObservable.notify();\n        },\n        removeContextProperty: function (key) {\n            delete context[key];\n            customerDataTracker === null || customerDataTracker === void 0 ? void 0 : customerDataTracker.updateCustomerData(context);\n            changeObservable.notify();\n        },\n        clearContext: function () {\n            context = {};\n            customerDataTracker === null || customerDataTracker === void 0 ? void 0 : customerDataTracker.resetCustomerData();\n            changeObservable.notify();\n        },\n        changeObservable: changeObservable,\n    };\n    return contextManager;\n}\n//# sourceMappingURL=contextManager.js.map","import { Observable } from '../tools/observable';\nexport var TrackingConsent = {\n    GRANTED: 'granted',\n    NOT_GRANTED: 'not-granted',\n};\nexport function createTrackingConsentState(currentConsent) {\n    var observable = new Observable();\n    return {\n        tryToInit: function (trackingConsent) {\n            if (!currentConsent) {\n                currentConsent = trackingConsent;\n            }\n        },\n        update: function (trackingConsent) {\n            currentConsent = trackingConsent;\n            observable.notify();\n        },\n        isGranted: function () {\n            return currentConsent === TrackingConsent.GRANTED;\n        },\n        observable: observable,\n    };\n}\n//# sourceMappingURL=trackingConsent.js.map","import { monitor } from '../tools/monitor';\nimport { getZoneJsOriginalValue } from '../tools/getZoneJsOriginalValue';\n/**\n * Add an event listener to an event target object (Window, Element, mock object...).  This provides\n * a few conveniences compared to using `element.addEventListener` directly:\n *\n * * supports IE11 by: using an option object only if needed and emulating the `once` option\n *\n * * wraps the listener with a `monitor` function\n *\n * * returns a `stop` function to remove the listener\n */\nexport function addEventListener(configuration, eventTarget, eventName, listener, options) {\n    return addEventListeners(configuration, eventTarget, [eventName], listener, options);\n}\n/**\n * Add event listeners to an event target object (Window, Element, mock object...).  This provides\n * a few conveniences compared to using `element.addEventListener` directly:\n *\n * * supports IE11 by: using an option object only if needed and emulating the `once` option\n *\n * * wraps the listener with a `monitor` function\n *\n * * returns a `stop` function to remove the listener\n *\n * * with `once: true`, the listener will be called at most once, even if different events are listened\n */\nexport function addEventListeners(configuration, eventTarget, eventNames, listener, _a) {\n    var _b = _a === void 0 ? {} : _a, once = _b.once, capture = _b.capture, passive = _b.passive;\n    var listenerWithMonitor = monitor(function (event) {\n        if (!event.isTrusted && !event.__ddIsTrusted && !configuration.allowUntrustedEvents) {\n            return;\n        }\n        if (once) {\n            stop();\n        }\n        listener(event);\n    });\n    var options = passive ? { capture: capture, passive: passive } : capture;\n    // Use the window.EventTarget.prototype when possible to avoid wrong overrides (e.g: https://github.com/salesforce/lwc/issues/1824)\n    var listenerTarget = window.EventTarget && eventTarget instanceof EventTarget ? window.EventTarget.prototype : eventTarget;\n    var add = getZoneJsOriginalValue(listenerTarget, 'addEventListener');\n    eventNames.forEach(function (eventName) { return add.call(eventTarget, eventName, listenerWithMonitor, options); });\n    function stop() {\n        var remove = getZoneJsOriginalValue(listenerTarget, 'removeEventListener');\n        eventNames.forEach(function (eventName) { return remove.call(eventTarget, eventName, listenerWithMonitor, options); });\n    }\n    return {\n        stop: stop,\n    };\n}\n//# sourceMappingURL=addEventListener.js.map","import { addEventListener } from '../../browser/addEventListener';\nimport { combine } from '../../tools/mergeInto';\nvar CONTEXT_STORE_KEY_PREFIX = '_dd_c';\nvar storageListeners = [];\nexport function storeContextManager(configuration, contextManager, productKey, customerDataType) {\n    var storageKey = buildStorageKey(productKey, customerDataType);\n    storageListeners.push(addEventListener(configuration, window, \"storage\" /* DOM_EVENT.STORAGE */, function (_a) {\n        var key = _a.key;\n        if (storageKey === key) {\n            synchronizeWithStorage();\n        }\n    }));\n    contextManager.changeObservable.subscribe(dumpToStorage);\n    contextManager.setContext(combine(getFromStorage(), contextManager.getContext()));\n    function synchronizeWithStorage() {\n        contextManager.setContext(getFromStorage());\n    }\n    function dumpToStorage() {\n        localStorage.setItem(storageKey, JSON.stringify(contextManager.getContext()));\n    }\n    function getFromStorage() {\n        var rawContext = localStorage.getItem(storageKey);\n        return rawContext !== null ? JSON.parse(rawContext) : {};\n    }\n}\nexport function buildStorageKey(productKey, customerDataType) {\n    return \"\".concat(CONTEXT_STORE_KEY_PREFIX, \"_\").concat(productKey, \"_\").concat(customerDataType);\n}\nexport function removeStorageListeners() {\n    storageListeners.map(function (listener) { return listener.stop(); });\n}\n//# sourceMappingURL=storeContextManager.js.map","import { computeBytesCount } from './utils/byteUtils';\nexport function createIdentityEncoder() {\n    var output = '';\n    var outputBytesCount = 0;\n    return {\n        isAsync: false,\n        get isEmpty() {\n            return !output;\n        },\n        write: function (data, callback) {\n            var additionalEncodedBytesCount = computeBytesCount(data);\n            outputBytesCount += additionalEncodedBytesCount;\n            output += data;\n            if (callback) {\n                callback(additionalEncodedBytesCount);\n            }\n        },\n        finish: function (callback) {\n            callback(this.finishSync());\n        },\n        finishSync: function () {\n            var result = {\n                output: output,\n                outputBytesCount: outputBytesCount,\n                rawBytesCount: outputBytesCount,\n                pendingData: '',\n            };\n            output = '';\n            outputBytesCount = 0;\n            return result;\n        },\n        estimateEncodedBytesCount: function (data) {\n            return data.length;\n        },\n    };\n}\n//# sourceMappingURL=encoder.js.map","/**\n * Cross-browser stack trace computation.\n *\n * Reference implementation: https://github.com/csnover/TraceKit/blob/04530298073c3823de72deb0b97e7b38ca7bcb59/tracekit.js\n */\nimport { startsWith } from '../utils/polyfills';\nvar UNKNOWN_FUNCTION = '?';\nexport function computeStackTrace(ex) {\n    var stack = [];\n    var stackProperty = tryToGetString(ex, 'stack');\n    var exString = String(ex);\n    if (stackProperty && startsWith(stackProperty, exString)) {\n        stackProperty = stackProperty.slice(exString.length);\n    }\n    if (stackProperty) {\n        stackProperty.split('\\n').forEach(function (line) {\n            var stackFrame = parseChromeLine(line) || parseChromeAnonymousLine(line) || parseWinLine(line) || parseGeckoLine(line);\n            if (stackFrame) {\n                if (!stackFrame.func && stackFrame.line) {\n                    stackFrame.func = UNKNOWN_FUNCTION;\n                }\n                stack.push(stackFrame);\n            }\n        });\n    }\n    return {\n        message: tryToGetString(ex, 'message'),\n        name: tryToGetString(ex, 'name'),\n        stack: stack,\n    };\n}\nvar fileUrl = '((?:file|https?|blob|chrome-extension|electron|native|eval|webpack|snippet|<anonymous>|\\\\w+\\\\.|\\\\/).*?)';\nvar filePosition = '(?::(\\\\d+))';\nvar CHROME_LINE_RE = new RegExp(\"^\\\\s*at (.*?) ?\\\\(\".concat(fileUrl).concat(filePosition, \"?\").concat(filePosition, \"?\\\\)?\\\\s*$\"), 'i');\nvar CHROME_EVAL_RE = new RegExp(\"\\\\((\\\\S*)\".concat(filePosition).concat(filePosition, \"\\\\)\"));\nfunction parseChromeLine(line) {\n    var parts = CHROME_LINE_RE.exec(line);\n    if (!parts) {\n        return;\n    }\n    var isNative = parts[2] && parts[2].indexOf('native') === 0; // start of line\n    var isEval = parts[2] && parts[2].indexOf('eval') === 0; // start of line\n    var submatch = CHROME_EVAL_RE.exec(parts[2]);\n    if (isEval && submatch) {\n        // throw out eval line/column and use top-most line/column number\n        parts[2] = submatch[1]; // url\n        parts[3] = submatch[2]; // line\n        parts[4] = submatch[3]; // column\n    }\n    return {\n        args: isNative ? [parts[2]] : [],\n        column: parts[4] ? +parts[4] : undefined,\n        func: parts[1] || UNKNOWN_FUNCTION,\n        line: parts[3] ? +parts[3] : undefined,\n        url: !isNative ? parts[2] : undefined,\n    };\n}\nvar CHROME_ANONYMOUS_FUNCTION_RE = new RegExp(\"^\\\\s*at ?\".concat(fileUrl).concat(filePosition, \"?\").concat(filePosition, \"??\\\\s*$\"), 'i');\nfunction parseChromeAnonymousLine(line) {\n    var parts = CHROME_ANONYMOUS_FUNCTION_RE.exec(line);\n    if (!parts) {\n        return;\n    }\n    return {\n        args: [],\n        column: parts[3] ? +parts[3] : undefined,\n        func: UNKNOWN_FUNCTION,\n        line: parts[2] ? +parts[2] : undefined,\n        url: parts[1],\n    };\n}\nvar WINJS_LINE_RE = /^\\s*at (?:((?:\\[object object\\])?.+) )?\\(?((?:file|ms-appx|https?|webpack|blob):.*?):(\\d+)(?::(\\d+))?\\)?\\s*$/i;\nfunction parseWinLine(line) {\n    var parts = WINJS_LINE_RE.exec(line);\n    if (!parts) {\n        return;\n    }\n    return {\n        args: [],\n        column: parts[4] ? +parts[4] : undefined,\n        func: parts[1] || UNKNOWN_FUNCTION,\n        line: +parts[3],\n        url: parts[2],\n    };\n}\nvar GECKO_LINE_RE = /^\\s*(.*?)(?:\\((.*?)\\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|capacitor|\\[native).*?|[^@]*bundle)(?::(\\d+))?(?::(\\d+))?\\s*$/i;\nvar GECKO_EVAL_RE = /(\\S+) line (\\d+)(?: > eval line \\d+)* > eval/i;\nfunction parseGeckoLine(line) {\n    var parts = GECKO_LINE_RE.exec(line);\n    if (!parts) {\n        return;\n    }\n    var isEval = parts[3] && parts[3].indexOf(' > eval') > -1;\n    var submatch = GECKO_EVAL_RE.exec(parts[3]);\n    if (isEval && submatch) {\n        // throw out eval line/column and use top-most line number\n        parts[3] = submatch[1];\n        parts[4] = submatch[2];\n        parts[5] = undefined; // no column when eval\n    }\n    return {\n        args: parts[2] ? parts[2].split(',') : [],\n        column: parts[5] ? +parts[5] : undefined,\n        func: parts[1] || UNKNOWN_FUNCTION,\n        line: parts[4] ? +parts[4] : undefined,\n        url: parts[3],\n    };\n}\nfunction tryToGetString(candidate, property) {\n    if (typeof candidate !== 'object' || !candidate || !(property in candidate)) {\n        return undefined;\n    }\n    var value = candidate[property];\n    return typeof value === 'string' ? value : undefined;\n}\nexport function computeStackTraceFromOnErrorMessage(messageObj, url, line, column) {\n    var stack = [{ url: url, column: column, line: line }];\n    var _a = tryToParseMessage(messageObj), name = _a.name, message = _a.message;\n    return {\n        name: name,\n        message: message,\n        stack: stack,\n    };\n}\n// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error#Error_types\nvar ERROR_TYPES_RE = /^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?([\\s\\S]*)$/;\nfunction tryToParseMessage(messageObj) {\n    var _a;\n    var name;\n    var message;\n    if ({}.toString.call(messageObj) === '[object String]') {\n        ;\n        _a = ERROR_TYPES_RE.exec(messageObj), name = _a[1], message = _a[2];\n    }\n    return { name: name, message: message };\n}\n//# sourceMappingURL=computeStackTrace.js.map","import { callMonitored } from '../monitor';\nimport { noop } from '../utils/functionUtils';\nimport { computeStackTrace } from './computeStackTrace';\n/**\n * Creates a stacktrace without SDK internal frames.\n * Constraints:\n * - Has to be called at the utmost position of the call stack.\n * - No monitored function should encapsulate it, that is why we need to use callMonitored inside it.\n */\nexport function createHandlingStack() {\n    /**\n     * Skip the two internal frames:\n     * - SDK API (console.error, ...)\n     * - this function\n     * in order to keep only the user calls\n     */\n    var internalFramesToSkip = 2;\n    var error = new Error();\n    var formattedStack;\n    // IE needs to throw the error to fill in the stack trace\n    if (!error.stack) {\n        try {\n            throw error;\n        }\n        catch (_a) {\n            noop();\n        }\n    }\n    callMonitored(function () {\n        var stackTrace = computeStackTrace(error);\n        stackTrace.stack = stackTrace.stack.slice(internalFramesToSkip);\n        formattedStack = toStackTraceString(stackTrace);\n    });\n    return formattedStack;\n}\nexport function toStackTraceString(stack) {\n    var result = formatErrorMessage(stack);\n    stack.stack.forEach(function (frame) {\n        var func = frame.func === '?' ? '<anonymous>' : frame.func;\n        var args = frame.args && frame.args.length > 0 ? \"(\".concat(frame.args.join(', '), \")\") : '';\n        var line = frame.line ? \":\".concat(frame.line) : '';\n        var column = frame.line && frame.column ? \":\".concat(frame.column) : '';\n        result += \"\\n  at \".concat(func).concat(args, \" @ \").concat(frame.url).concat(line).concat(column);\n    });\n    return result;\n}\nexport function formatErrorMessage(stack) {\n    return \"\".concat(stack.name || 'Error', \": \").concat(stack.message);\n}\n//# sourceMappingURL=handlingStack.js.map","import { sanitize } from '../../tools/serialisation/sanitize';\nimport { jsonStringify } from '../../tools/serialisation/jsonStringify';\nimport { computeStackTrace } from '../../tools/stackTrace/computeStackTrace';\nimport { toStackTraceString } from '../../tools/stackTrace/handlingStack';\nexport var NO_ERROR_STACK_PRESENT_MESSAGE = 'No stack, consider using an instance of Error';\nexport function computeRawError(_a) {\n    var stackTrace = _a.stackTrace, originalError = _a.originalError, handlingStack = _a.handlingStack, startClocks = _a.startClocks, nonErrorPrefix = _a.nonErrorPrefix, source = _a.source, handling = _a.handling;\n    var isErrorInstance = isError(originalError);\n    var message = computeMessage(stackTrace, isErrorInstance, nonErrorPrefix, originalError);\n    var stack = hasUsableStack(isErrorInstance, stackTrace)\n        ? toStackTraceString(stackTrace)\n        : NO_ERROR_STACK_PRESENT_MESSAGE;\n    var causes = isErrorInstance ? flattenErrorCauses(originalError, source) : undefined;\n    var type = stackTrace ? stackTrace.name : undefined;\n    var fingerprint = tryToGetFingerprint(originalError);\n    return {\n        startClocks: startClocks,\n        source: source,\n        handling: handling,\n        handlingStack: handlingStack,\n        originalError: originalError,\n        type: type,\n        message: message,\n        stack: stack,\n        causes: causes,\n        fingerprint: fingerprint,\n    };\n}\nfunction computeMessage(stackTrace, isErrorInstance, nonErrorPrefix, originalError) {\n    // Favor stackTrace message only if tracekit has really been able to extract something meaningful (message + name)\n    // TODO rework tracekit integration to avoid scattering error building logic\n    return (stackTrace === null || stackTrace === void 0 ? void 0 : stackTrace.message) && (stackTrace === null || stackTrace === void 0 ? void 0 : stackTrace.name)\n        ? stackTrace.message\n        : !isErrorInstance\n            ? \"\".concat(nonErrorPrefix, \" \").concat(jsonStringify(sanitize(originalError)))\n            : 'Empty message';\n}\nfunction hasUsableStack(isErrorInstance, stackTrace) {\n    if (stackTrace === undefined) {\n        return false;\n    }\n    if (isErrorInstance) {\n        return true;\n    }\n    // handle cases where tracekit return stack = [] or stack = [{url: undefined, line: undefined, column: undefined}]\n    // TODO rework tracekit integration to avoid generating those unusable stack\n    return stackTrace.stack.length > 0 && (stackTrace.stack.length > 1 || stackTrace.stack[0].url !== undefined);\n}\nexport function tryToGetFingerprint(originalError) {\n    return isError(originalError) && 'dd_fingerprint' in originalError ? String(originalError.dd_fingerprint) : undefined;\n}\nexport function getFileFromStackTraceString(stack) {\n    var _a;\n    return (_a = /@ (.+)/.exec(stack)) === null || _a === void 0 ? void 0 : _a[1];\n}\nexport function isError(error) {\n    return error instanceof Error || Object.prototype.toString.call(error) === '[object Error]';\n}\nexport function flattenErrorCauses(error, parentSource) {\n    var currentError = error;\n    var causes = [];\n    while (isError(currentError === null || currentError === void 0 ? void 0 : currentError.cause) && causes.length < 10) {\n        var stackTrace = computeStackTrace(currentError.cause);\n        causes.push({\n            message: currentError.cause.message,\n            source: parentSource,\n            type: stackTrace === null || stackTrace === void 0 ? void 0 : stackTrace.name,\n            stack: stackTrace && toStackTraceString(stackTrace),\n        });\n        currentError = currentError.cause;\n    }\n    return causes.length ? causes : undefined;\n}\n//# sourceMappingURL=error.js.map","export var INTAKE_SITE_STAGING = 'datad0g.com';\nexport var INTAKE_SITE_FED_STAGING = 'dd0g-gov.com';\nexport var INTAKE_SITE_US1 = 'datadoghq.com';\nexport var INTAKE_SITE_EU1 = 'datadoghq.eu';\nexport var INTAKE_SITE_US1_FED = 'ddog-gov.com';\nexport var PCI_INTAKE_HOST_US1 = 'pci.browser-intake-datadoghq.com';\nexport var INTAKE_URL_PARAMETERS = ['ddsource', 'ddtags'];\n//# sourceMappingURL=intakeSites.js.map","/**\n * Return true if the draw is successful\n * @param threshold between 0 and 100\n */\nexport function performDraw(threshold) {\n    return threshold !== 0 && Math.random() * 100 <= threshold;\n}\nexport function round(num, decimals) {\n    return +num.toFixed(decimals);\n}\nexport function isPercentage(value) {\n    return isNumber(value) && value >= 0 && value <= 100;\n}\nexport function isNumber(value) {\n    return typeof value === 'number';\n}\n//# sourceMappingURL=numberUtils.js.map","export function sendToExtension(type, payload) {\n    var callback = window.__ddBrowserSdkExtensionCallback;\n    if (callback) {\n        callback({ type: type, payload: payload });\n    }\n}\n//# sourceMappingURL=sendToExtension.js.map","export function getConnectivity() {\n    var _a;\n    var navigator = window.navigator;\n    return {\n        status: navigator.onLine ? 'connected' : 'not_connected',\n        interfaces: navigator.connection && navigator.connection.type ? [navigator.connection.type] : undefined,\n        effective_type: (_a = navigator.connection) === null || _a === void 0 ? void 0 : _a.effectiveType,\n    };\n}\n//# sourceMappingURL=connectivity.js.map","import { arrayFrom } from './polyfills';\nexport function removeDuplicates(array) {\n    var set = new Set();\n    array.forEach(function (item) { return set.add(item); });\n    return arrayFrom(set);\n}\nexport function removeItem(array, item) {\n    var index = array.indexOf(item);\n    if (index >= 0) {\n        array.splice(index, 1);\n    }\n}\n//# sourceMappingURL=arrayUtils.js.map","import { removeItem } from './utils/arrayUtils';\nvar BUFFER_LIMIT = 500;\nexport function createBoundedBuffer() {\n    var buffer = [];\n    var add = function (callback) {\n        var length = buffer.push(callback);\n        if (length > BUFFER_LIMIT) {\n            buffer.splice(0, 1);\n        }\n    };\n    var remove = function (callback) {\n        removeItem(buffer, callback);\n    };\n    var drain = function (arg) {\n        buffer.forEach(function (callback) { return callback(arg); });\n        buffer.length = 0;\n    };\n    return {\n        add: add,\n        remove: remove,\n        drain: drain,\n    };\n}\n//# sourceMappingURL=boundedBuffer.js.map","export var TelemetryType = {\n    log: 'log',\n    configuration: 'configuration',\n    usage: 'usage',\n};\n//# sourceMappingURL=rawTelemetryEvent.types.js.map","import { ConsoleApiName } from '../../tools/display';\nimport { NO_ERROR_STACK_PRESENT_MESSAGE, isError } from '../error/error';\nimport { toStackTraceString } from '../../tools/stackTrace/handlingStack';\nimport { getExperimentalFeatures } from '../../tools/experimentalFeatures';\nimport { INTAKE_SITE_STAGING, INTAKE_SITE_US1_FED } from '../configuration';\nimport { Observable } from '../../tools/observable';\nimport { timeStampNow } from '../../tools/utils/timeUtils';\nimport { displayIfDebugEnabled, startMonitorErrorCollection } from '../../tools/monitor';\nimport { sendToExtension } from '../../tools/sendToExtension';\nimport { startsWith, arrayFrom, includes, assign } from '../../tools/utils/polyfills';\nimport { performDraw } from '../../tools/utils/numberUtils';\nimport { jsonStringify } from '../../tools/serialisation/jsonStringify';\nimport { combine } from '../../tools/mergeInto';\nimport { computeStackTrace } from '../../tools/stackTrace/computeStackTrace';\nimport { getConnectivity } from '../connectivity';\nimport { createBoundedBuffer } from '../../tools/boundedBuffer';\nimport { TelemetryType } from './rawTelemetryEvent.types';\nvar ALLOWED_FRAME_URLS = [\n    'https://www.datadoghq-browser-agent.com',\n    'https://www.datad0g-browser-agent.com',\n    'https://d3uc069fcn7uxw.cloudfront.net',\n    'https://d20xtzwzcl0ceb.cloudfront.net',\n    'http://localhost',\n    '<anonymous>',\n];\nvar TELEMETRY_EXCLUDED_SITES = [INTAKE_SITE_US1_FED];\n// eslint-disable-next-line local-rules/disallow-side-effects\nvar preStartTelemetryBuffer = createBoundedBuffer();\nvar onRawTelemetryEventCollected = function (event) {\n    preStartTelemetryBuffer.add(function () { return onRawTelemetryEventCollected(event); });\n};\nexport function startTelemetry(telemetryService, configuration) {\n    var _a;\n    var contextProvider;\n    var observable = new Observable();\n    var alreadySentEvents = new Set();\n    var telemetryEnabled = !includes(TELEMETRY_EXCLUDED_SITES, configuration.site) && performDraw(configuration.telemetrySampleRate);\n    var telemetryEnabledPerType = (_a = {},\n        _a[TelemetryType.log] = telemetryEnabled,\n        _a[TelemetryType.configuration] = telemetryEnabled && performDraw(configuration.telemetryConfigurationSampleRate),\n        _a[TelemetryType.usage] = telemetryEnabled && performDraw(configuration.telemetryUsageSampleRate),\n        _a);\n    var runtimeEnvInfo = getRuntimeEnvInfo();\n    onRawTelemetryEventCollected = function (rawEvent) {\n        var stringifiedEvent = jsonStringify(rawEvent);\n        if (telemetryEnabledPerType[rawEvent.type] &&\n            alreadySentEvents.size < configuration.maxTelemetryEventsPerPage &&\n            !alreadySentEvents.has(stringifiedEvent)) {\n            var event_1 = toTelemetryEvent(telemetryService, rawEvent, runtimeEnvInfo);\n            observable.notify(event_1);\n            sendToExtension('telemetry', event_1);\n            alreadySentEvents.add(stringifiedEvent);\n        }\n    };\n    startMonitorErrorCollection(addTelemetryError);\n    function toTelemetryEvent(telemetryService, event, runtimeEnvInfo) {\n        return combine({\n            type: 'telemetry',\n            date: timeStampNow(),\n            service: telemetryService,\n            version: \"5.35.1\",\n            source: 'browser',\n            _dd: {\n                format_version: 2,\n            },\n            telemetry: combine(event, {\n                runtime_env: runtimeEnvInfo,\n                connectivity: getConnectivity(),\n                sdk_setup: \"npm\",\n            }),\n            experimental_features: arrayFrom(getExperimentalFeatures()),\n        }, contextProvider !== undefined ? contextProvider() : {});\n    }\n    return {\n        setContextProvider: function (provider) {\n            contextProvider = provider;\n        },\n        observable: observable,\n        enabled: telemetryEnabled,\n    };\n}\nfunction getRuntimeEnvInfo() {\n    return {\n        is_local_file: window.location.protocol === 'file:',\n        is_worker: 'WorkerGlobalScope' in self,\n    };\n}\nexport function startFakeTelemetry() {\n    var events = [];\n    onRawTelemetryEventCollected = function (event) {\n        events.push(event);\n    };\n    return events;\n}\n// need to be called after telemetry context is provided and observers are registered\nexport function drainPreStartTelemetry() {\n    preStartTelemetryBuffer.drain();\n}\nexport function resetTelemetry() {\n    preStartTelemetryBuffer = createBoundedBuffer();\n    onRawTelemetryEventCollected = function (event) {\n        preStartTelemetryBuffer.add(function () { return onRawTelemetryEventCollected(event); });\n    };\n}\n/**\n * Avoid mixing telemetry events from different data centers\n * but keep replicating staging events for reliability\n */\nexport function isTelemetryReplicationAllowed(configuration) {\n    return configuration.site === INTAKE_SITE_STAGING;\n}\nexport function addTelemetryDebug(message, context) {\n    displayIfDebugEnabled(ConsoleApiName.debug, message, context);\n    onRawTelemetryEventCollected(assign({\n        type: TelemetryType.log,\n        message: message,\n        status: \"debug\" /* StatusType.debug */,\n    }, context));\n}\nexport function addTelemetryError(e, context) {\n    onRawTelemetryEventCollected(assign({\n        type: TelemetryType.log,\n        status: \"error\" /* StatusType.error */,\n    }, formatError(e), context));\n}\nexport function addTelemetryConfiguration(configuration) {\n    onRawTelemetryEventCollected({\n        type: TelemetryType.configuration,\n        configuration: configuration,\n    });\n}\nexport function addTelemetryUsage(usage) {\n    onRawTelemetryEventCollected({\n        type: TelemetryType.usage,\n        usage: usage,\n    });\n}\nexport function formatError(e) {\n    if (isError(e)) {\n        var stackTrace = computeStackTrace(e);\n        return {\n            error: {\n                kind: stackTrace.name,\n                stack: toStackTraceString(scrubCustomerFrames(stackTrace)),\n            },\n            message: stackTrace.message,\n        };\n    }\n    return {\n        error: {\n            stack: NO_ERROR_STACK_PRESENT_MESSAGE,\n        },\n        message: \"\".concat(\"Uncaught\" /* NonErrorPrefix.UNCAUGHT */, \" \").concat(jsonStringify(e)),\n    };\n}\nexport function scrubCustomerFrames(stackTrace) {\n    stackTrace.stack = stackTrace.stack.filter(function (frame) { return !frame.url || ALLOWED_FRAME_URLS.some(function (allowedFrameUrl) { return startsWith(frame.url, allowedFrameUrl); }); });\n    return stackTrace;\n}\n//# sourceMappingURL=telemetry.js.map","import { display } from '../../tools/display';\nimport { getType } from '../../tools/utils/typeUtils';\nimport { assign } from '../../tools/utils/polyfills';\n/**\n * Clone input data and ensure known user properties (id, name, email)\n * are strings, as defined here:\n * https://docs.datadoghq.com/logs/log_configuration/attributes_naming_convention/#user-related-attributes\n */\nexport function sanitizeUser(newUser) {\n    // We shallow clone only to prevent mutation of user data.\n    var user = assign({}, newUser);\n    var keys = ['id', 'name', 'email'];\n    keys.forEach(function (key) {\n        if (key in user) {\n            /* eslint-disable @typescript-eslint/no-base-to-string */\n            user[key] = String(user[key]);\n        }\n    });\n    return user;\n}\n/**\n * Simple check to ensure user is valid\n */\nexport function checkUser(newUser) {\n    var isValid = getType(newUser) === 'object';\n    if (!isValid) {\n        display.error('Unsupported user:', newUser);\n    }\n    return isValid;\n}\nexport function generateAnonymousId() {\n    return Math.floor(Math.random() * Math.pow(2, 53)).toString(36);\n}\n//# sourceMappingURL=user.js.map","import { display } from '../tools/display';\nexport function displayAlreadyInitializedError(sdkName, initConfiguration) {\n    if (!initConfiguration.silentMultipleInit) {\n        display.error(\"\".concat(sdkName, \" is already initialized.\"));\n    }\n}\n//# sourceMappingURL=displayAlreadyInitializedError.js.map","/**\n * UUID v4\n * from https://gist.github.com/jed/982883\n */\nexport function generateUUID(placeholder) {\n    return placeholder\n        ? // eslint-disable-next-line  no-bitwise\n            (parseInt(placeholder, 10) ^ ((Math.random() * 16) >> (parseInt(placeholder, 10) / 4))).toString(16)\n        : \"\".concat(1e7, \"-\").concat(1e3, \"-\").concat(4e3, \"-\").concat(8e3, \"-\").concat(1e11).replace(/[018]/g, generateUUID);\n}\nvar COMMA_SEPARATED_KEY_VALUE = /([\\w-]+)\\s*=\\s*([^;]+)/g;\nexport function findCommaSeparatedValue(rawString, name) {\n    COMMA_SEPARATED_KEY_VALUE.lastIndex = 0;\n    // eslint-disable-next-line no-constant-condition\n    while (true) {\n        var match = COMMA_SEPARATED_KEY_VALUE.exec(rawString);\n        if (match) {\n            if (match[1] === name) {\n                return match[2];\n            }\n        }\n        else {\n            break;\n        }\n    }\n}\nexport function findCommaSeparatedValues(rawString) {\n    var result = new Map();\n    COMMA_SEPARATED_KEY_VALUE.lastIndex = 0;\n    // eslint-disable-next-line no-constant-condition\n    while (true) {\n        var match = COMMA_SEPARATED_KEY_VALUE.exec(rawString);\n        if (match) {\n            result.set(match[1], match[2]);\n        }\n        else {\n            break;\n        }\n    }\n    return result;\n}\nexport function safeTruncate(candidate, length, suffix) {\n    if (suffix === void 0) { suffix = ''; }\n    var lastChar = candidate.charCodeAt(length - 1);\n    var isLastCharSurrogatePair = lastChar >= 0xd800 && lastChar <= 0xdbff;\n    var correctedLength = isLastCharSurrogatePair ? length + 1 : length;\n    if (candidate.length <= correctedLength) {\n        return candidate;\n    }\n    return \"\".concat(candidate.slice(0, correctedLength)).concat(suffix);\n}\n//# sourceMappingURL=stringUtils.js.map","import { clocksNow, combine, elapsed, generateUUID, toServerDuration } from '@datadog/browser-core';\nexport function createCustomVitalsState() {\n    var vitalsByName = new Map();\n    var vitalsByReference = new WeakMap();\n    return { vitalsByName: vitalsByName, vitalsByReference: vitalsByReference };\n}\nexport function startVitalCollection(lifeCycle, pageStateHistory, customVitalsState) {\n    function isValid(vital) {\n        return !pageStateHistory.wasInPageStateDuringPeriod(\"frozen\" /* PageState.FROZEN */, vital.startClocks.relative, vital.duration);\n    }\n    function addDurationVital(vital) {\n        if (isValid(vital)) {\n            lifeCycle.notify(12 /* LifeCycleEventType.RAW_RUM_EVENT_COLLECTED */, processVital(vital, true));\n        }\n    }\n    return {\n        addDurationVital: addDurationVital,\n        startDurationVital: function (name, options) {\n            if (options === void 0) { options = {}; }\n            return startDurationVital(customVitalsState, name, options);\n        },\n        stopDurationVital: function (nameOrRef, options) {\n            if (options === void 0) { options = {}; }\n            stopDurationVital(addDurationVital, customVitalsState, nameOrRef, options);\n        },\n    };\n}\nexport function startDurationVital(_a, name, options) {\n    var vitalsByName = _a.vitalsByName, vitalsByReference = _a.vitalsByReference;\n    if (options === void 0) { options = {}; }\n    var vital = {\n        name: name,\n        startClocks: clocksNow(),\n        context: options.context,\n        description: options.description,\n    };\n    // To avoid leaking implementation details of the vital, we return a reference to it.\n    var reference = { __dd_vital_reference: true };\n    vitalsByName.set(name, vital);\n    // To avoid memory leaks caused by the creation of numerous references (e.g., from improper useEffect implementations), we use a WeakMap.\n    vitalsByReference.set(reference, vital);\n    return reference;\n}\nexport function stopDurationVital(stopCallback, _a, nameOrRef, options) {\n    var vitalsByName = _a.vitalsByName, vitalsByReference = _a.vitalsByReference;\n    if (options === void 0) { options = {}; }\n    var vitalStart = typeof nameOrRef === 'string' ? vitalsByName.get(nameOrRef) : vitalsByReference.get(nameOrRef);\n    if (!vitalStart) {\n        return;\n    }\n    stopCallback(buildDurationVital(vitalStart, vitalStart.startClocks, options, clocksNow()));\n    if (typeof nameOrRef === 'string') {\n        vitalsByName.delete(nameOrRef);\n    }\n    else {\n        vitalsByReference.delete(nameOrRef);\n    }\n}\nfunction buildDurationVital(vitalStart, startClocks, stopOptions, stopClocks) {\n    var _a;\n    return {\n        name: vitalStart.name,\n        type: \"duration\" /* VitalType.DURATION */,\n        startClocks: startClocks,\n        duration: elapsed(startClocks.timeStamp, stopClocks.timeStamp),\n        context: combine(vitalStart.context, stopOptions.context),\n        description: (_a = stopOptions.description) !== null && _a !== void 0 ? _a : vitalStart.description,\n    };\n}\nfunction processVital(vital, valueComputedBySdk) {\n    var rawRumEvent = {\n        date: vital.startClocks.timeStamp,\n        vital: {\n            id: generateUUID(),\n            type: vital.type,\n            name: vital.name,\n            duration: toServerDuration(vital.duration),\n            description: vital.description,\n        },\n        type: \"vital\" /* RumEventType.VITAL */,\n    };\n    if (valueComputedBySdk) {\n        rawRumEvent._dd = {\n            vital: {\n                computed_value: true,\n            },\n        };\n    }\n    return {\n        rawRumEvent: rawRumEvent,\n        startTime: vital.startClocks.relative,\n        customerContext: vital.context,\n        domainContext: {},\n    };\n}\n//# sourceMappingURL=vitalCollection.js.map","import { endsWith, includes } from '../tools/utils/polyfills';\nimport { getGlobalObject } from '../tools/getGlobalObject';\nexport function getEventBridge() {\n    var eventBridgeGlobal = getEventBridgeGlobal();\n    if (!eventBridgeGlobal) {\n        return;\n    }\n    return {\n        getCapabilities: function () {\n            var _a;\n            return JSON.parse(((_a = eventBridgeGlobal.getCapabilities) === null || _a === void 0 ? void 0 : _a.call(eventBridgeGlobal)) || '[]');\n        },\n        getPrivacyLevel: function () {\n            var _a;\n            return (_a = eventBridgeGlobal.getPrivacyLevel) === null || _a === void 0 ? void 0 : _a.call(eventBridgeGlobal);\n        },\n        getAllowedWebViewHosts: function () {\n            return JSON.parse(eventBridgeGlobal.getAllowedWebViewHosts());\n        },\n        send: function (eventType, event, viewId) {\n            var view = viewId ? { id: viewId } : undefined;\n            eventBridgeGlobal.send(JSON.stringify({ eventType: eventType, event: event, view: view }));\n        },\n    };\n}\nexport function bridgeSupports(capability) {\n    var bridge = getEventBridge();\n    return !!bridge && includes(bridge.getCapabilities(), capability);\n}\nexport function canUseEventBridge(currentHost) {\n    var _a;\n    if (currentHost === void 0) { currentHost = (_a = getGlobalObject().location) === null || _a === void 0 ? void 0 : _a.hostname; }\n    var bridge = getEventBridge();\n    return (!!bridge &&\n        bridge\n            .getAllowedWebViewHosts()\n            .some(function (allowedHost) { return currentHost === allowedHost || endsWith(currentHost, \".\".concat(allowedHost)); }));\n}\nfunction getEventBridgeGlobal() {\n    return getGlobalObject().DatadogEventBridge;\n}\n//# sourceMappingURL=eventBridge.js.map","import { setTimeout } from './timer';\nimport { callMonitored } from './monitor';\nimport { noop } from './utils/functionUtils';\nimport { arrayFrom, startsWith } from './utils/polyfills';\nimport { createHandlingStack } from './stackTrace/handlingStack';\n/**\n * Instruments a method on a object, calling the given callback before the original method is\n * invoked. The callback receives an object with information about the method call.\n *\n * This function makes sure that we are \"good citizens\" regarding third party instrumentations: when\n * removing the instrumentation, the original method is usually restored, but if a third party\n * instrumentation was set after ours, we keep it in place and just replace our instrumentation with\n * a noop.\n *\n * Note: it is generally better to instrument methods that are \"owned\" by the object instead of ones\n * that are inherited from the prototype chain. Example:\n * * do:    `instrumentMethod(Array.prototype, 'push', ...)`\n * * don't: `instrumentMethod([], 'push', ...)`\n *\n * This method is also used to set event handler properties (ex: window.onerror = ...), as it has\n * the same requirements as instrumenting a method:\n * * if the event handler is already set by a third party, we need to call it and not just blindly\n * override it.\n * * if the event handler is set by a third party after us, we need to keep it in place when\n * removing ours.\n *\n * @example\n *\n *  instrumentMethod(window, 'fetch', ({ target, parameters, onPostCall }) => {\n *    console.log('Before calling fetch on', target, 'with parameters', parameters)\n *\n *    onPostCall((result) => {\n *      console.log('After fetch calling on', target, 'with parameters', parameters, 'and result', result)\n *    })\n *  })\n */\nexport function instrumentMethod(targetPrototype, method, onPreCall, _a) {\n    var _b = _a === void 0 ? {} : _a, computeHandlingStack = _b.computeHandlingStack;\n    var original = targetPrototype[method];\n    if (typeof original !== 'function') {\n        if (method in targetPrototype && startsWith(method, 'on')) {\n            original = noop;\n        }\n        else {\n            return { stop: noop };\n        }\n    }\n    var stopped = false;\n    var instrumentation = function () {\n        if (stopped) {\n            // eslint-disable-next-line @typescript-eslint/no-unsafe-return, @typescript-eslint/no-unsafe-call\n            return original.apply(this, arguments);\n        }\n        var parameters = arrayFrom(arguments);\n        var postCallCallback;\n        callMonitored(onPreCall, null, [\n            {\n                target: this,\n                parameters: parameters,\n                onPostCall: function (callback) {\n                    postCallCallback = callback;\n                },\n                handlingStack: computeHandlingStack ? createHandlingStack() : undefined,\n            },\n        ]);\n        // eslint-disable-next-line @typescript-eslint/no-unsafe-call\n        var result = original.apply(this, parameters);\n        if (postCallCallback) {\n            callMonitored(postCallCallback, null, [result]);\n        }\n        // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n        return result;\n    };\n    targetPrototype[method] = instrumentation;\n    return {\n        stop: function () {\n            stopped = true;\n            // If the instrumentation has been removed by a third party, keep the last one\n            if (targetPrototype[method] === instrumentation) {\n                targetPrototype[method] = original;\n            }\n        },\n    };\n}\nexport function instrumentSetter(targetPrototype, property, after) {\n    var originalDescriptor = Object.getOwnPropertyDescriptor(targetPrototype, property);\n    if (!originalDescriptor || !originalDescriptor.set || !originalDescriptor.configurable) {\n        return { stop: noop };\n    }\n    var stoppedInstrumentation = noop;\n    var instrumentation = function (target, value) {\n        // put hooked setter into event loop to avoid of set latency\n        setTimeout(function () {\n            if (instrumentation !== stoppedInstrumentation) {\n                after(target, value);\n            }\n        }, 0);\n    };\n    var instrumentationWrapper = function (value) {\n        originalDescriptor.set.call(this, value);\n        instrumentation(this, value);\n    };\n    Object.defineProperty(targetPrototype, property, {\n        set: instrumentationWrapper,\n    });\n    return {\n        stop: function () {\n            var _a;\n            if (((_a = Object.getOwnPropertyDescriptor(targetPrototype, property)) === null || _a === void 0 ? void 0 : _a.set) === instrumentationWrapper) {\n                Object.defineProperty(targetPrototype, property, originalDescriptor);\n            }\n            instrumentation = stoppedInstrumentation;\n        },\n    };\n}\n//# sourceMappingURL=instrumentMethod.js.map","import { getInitCookie } from '../../browser/cookie';\nexport var SYNTHETICS_TEST_ID_COOKIE_NAME = 'datadog-synthetics-public-id';\nexport var SYNTHETICS_RESULT_ID_COOKIE_NAME = 'datadog-synthetics-result-id';\nexport var SYNTHETICS_INJECTS_RUM_COOKIE_NAME = 'datadog-synthetics-injects-rum';\nexport function willSyntheticsInjectRum() {\n    return Boolean(window._DATADOG_SYNTHETICS_INJECTS_RUM || getInitCookie(SYNTHETICS_INJECTS_RUM_COOKIE_NAME));\n}\nexport function getSyntheticsTestId() {\n    var value = window._DATADOG_SYNTHETICS_PUBLIC_ID || getInitCookie(SYNTHETICS_TEST_ID_COOKIE_NAME);\n    return typeof value === 'string' ? value : undefined;\n}\nexport function getSyntheticsResultId() {\n    var value = window._DATADOG_SYNTHETICS_RESULT_ID || getInitCookie(SYNTHETICS_RESULT_ID_COOKIE_NAME);\n    return typeof value === 'string' ? value : undefined;\n}\n//# sourceMappingURL=syntheticsWorkerValues.js.map","export var SESSION_STORE_KEY = '_dd_s';\n//# sourceMappingURL=sessionStoreStrategy.js.map","import { ONE_HOUR, ONE_MINUTE, ONE_YEAR } from '../../tools/utils/timeUtils';\nexport var SESSION_TIME_OUT_DELAY = 4 * ONE_HOUR;\nexport var SESSION_EXPIRATION_DELAY = 15 * ONE_MINUTE;\nexport var SESSION_COOKIE_EXPIRATION_DELAY = ONE_YEAR;\nexport var SessionPersistence = {\n    COOKIE: 'cookie',\n    LOCAL_STORAGE: 'local-storage',\n};\n//# sourceMappingURL=sessionConstants.js.map","export var SESSION_ENTRY_REGEXP = /^([a-zA-Z]+)=([a-z0-9-]+)$/;\nexport var SESSION_ENTRY_SEPARATOR = '&';\nexport function isValidSessionString(sessionString) {\n    return (!!sessionString &&\n        (sessionString.indexOf(SESSION_ENTRY_SEPARATOR) !== -1 || SESSION_ENTRY_REGEXP.test(sessionString)));\n}\n//# sourceMappingURL=sessionStateValidation.js.map","import { ExperimentalFeature, isExperimentalFeatureEnabled } from '../../tools/experimentalFeatures';\nimport { isEmptyObject } from '../../tools/utils/objectUtils';\nimport { objectEntries } from '../../tools/utils/polyfills';\nimport { dateNow } from '../../tools/utils/timeUtils';\nimport { generateAnonymousId } from '../user';\nimport { SESSION_EXPIRATION_DELAY, SESSION_TIME_OUT_DELAY } from './sessionConstants';\nimport { isValidSessionString, SESSION_ENTRY_REGEXP, SESSION_ENTRY_SEPARATOR } from './sessionStateValidation';\nexport var EXPIRED = '1';\nexport function getExpiredSessionState(previousSessionState) {\n    var expiredSessionState = {\n        isExpired: EXPIRED,\n    };\n    if (isExperimentalFeatureEnabled(ExperimentalFeature.ANONYMOUS_USER_TRACKING)) {\n        if (previousSessionState === null || previousSessionState === void 0 ? void 0 : previousSessionState.anonymousId) {\n            expiredSessionState.anonymousId = previousSessionState === null || previousSessionState === void 0 ? void 0 : previousSessionState.anonymousId;\n        }\n        else {\n            expiredSessionState.anonymousId = generateAnonymousId();\n        }\n    }\n    return expiredSessionState;\n}\nexport function isSessionInNotStartedState(session) {\n    return isEmptyObject(session);\n}\nexport function isSessionStarted(session) {\n    return !isSessionInNotStartedState(session);\n}\nexport function isSessionInExpiredState(session) {\n    return session.isExpired !== undefined || !isActiveSession(session);\n}\n// An active session is a session in either `Tracked` or `NotTracked` state\nfunction isActiveSession(sessionState) {\n    // created and expire can be undefined for versions which was not storing them\n    // these checks could be removed when older versions will not be available/live anymore\n    return ((sessionState.created === undefined || dateNow() - Number(sessionState.created) < SESSION_TIME_OUT_DELAY) &&\n        (sessionState.expire === undefined || dateNow() < Number(sessionState.expire)));\n}\nexport function expandSessionState(session) {\n    session.expire = String(dateNow() + SESSION_EXPIRATION_DELAY);\n}\nexport function toSessionString(session) {\n    return (objectEntries(session)\n        // we use `aid` as a key for anonymousId\n        .map(function (_a) {\n        var key = _a[0], value = _a[1];\n        return (key === 'anonymousId' ? \"aid=\".concat(value) : \"\".concat(key, \"=\").concat(value));\n    })\n        .join(SESSION_ENTRY_SEPARATOR));\n}\nexport function toSessionState(sessionString) {\n    var session = {};\n    if (isValidSessionString(sessionString)) {\n        sessionString.split(SESSION_ENTRY_SEPARATOR).forEach(function (entry) {\n            var matches = SESSION_ENTRY_REGEXP.exec(entry);\n            if (matches !== null) {\n                var key = matches[1], value = matches[2];\n                if (key === 'aid') {\n                    // we use `aid` as a key for anonymousId\n                    session.anonymousId = value;\n                }\n                else {\n                    session[key] = value;\n                }\n            }\n        });\n    }\n    return session;\n}\n//# sourceMappingURL=sessionState.js.map","import { isChromium } from '../../../tools/utils/browserDetection';\nimport { ExperimentalFeature, isExperimentalFeatureEnabled } from '../../../tools/experimentalFeatures';\nimport { getCurrentSite, areCookiesAuthorized, getCookie, setCookie } from '../../../browser/cookie';\nimport { tryOldCookiesMigration } from '../oldCookiesMigration';\nimport { SESSION_COOKIE_EXPIRATION_DELAY, SESSION_EXPIRATION_DELAY, SESSION_TIME_OUT_DELAY, SessionPersistence, } from '../sessionConstants';\nimport { toSessionString, toSessionState, getExpiredSessionState } from '../sessionState';\nimport { SESSION_STORE_KEY } from './sessionStoreStrategy';\nexport function selectCookieStrategy(initConfiguration) {\n    var cookieOptions = buildCookieOptions(initConfiguration);\n    return areCookiesAuthorized(cookieOptions) ? { type: SessionPersistence.COOKIE, cookieOptions: cookieOptions } : undefined;\n}\nexport function initCookieStrategy(cookieOptions) {\n    var cookieStore = {\n        /**\n         * Lock strategy allows mitigating issues due to concurrent access to cookie.\n         * This issue concerns only chromium browsers and enabling this on firefox increases cookie write failures.\n         */\n        isLockEnabled: isChromium(),\n        persistSession: persistSessionCookie(cookieOptions),\n        retrieveSession: retrieveSessionCookie,\n        expireSession: function (sessionState) { return expireSessionCookie(cookieOptions, sessionState); },\n    };\n    tryOldCookiesMigration(cookieStore);\n    return cookieStore;\n}\nfunction persistSessionCookie(options) {\n    return function (session) {\n        setCookie(SESSION_STORE_KEY, toSessionString(session), SESSION_EXPIRATION_DELAY, options);\n    };\n}\nfunction expireSessionCookie(options, sessionState) {\n    var expiredSessionState = getExpiredSessionState(sessionState);\n    setCookie(SESSION_STORE_KEY, toSessionString(expiredSessionState), isExperimentalFeatureEnabled(ExperimentalFeature.ANONYMOUS_USER_TRACKING)\n        ? SESSION_COOKIE_EXPIRATION_DELAY\n        : SESSION_TIME_OUT_DELAY, options);\n}\nfunction retrieveSessionCookie() {\n    var sessionString = getCookie(SESSION_STORE_KEY);\n    var sessionState = toSessionState(sessionString);\n    return sessionState;\n}\nexport function buildCookieOptions(initConfiguration) {\n    var cookieOptions = {};\n    cookieOptions.secure =\n        !!initConfiguration.useSecureSessionCookie ||\n            !!initConfiguration.usePartitionedCrossSiteSessionCookie ||\n            !!initConfiguration.useCrossSiteSessionCookie;\n    cookieOptions.crossSite =\n        !!initConfiguration.usePartitionedCrossSiteSessionCookie || !!initConfiguration.useCrossSiteSessionCookie;\n    cookieOptions.partitioned = !!initConfiguration.usePartitionedCrossSiteSessionCookie;\n    if (initConfiguration.trackSessionAcrossSubdomains) {\n        cookieOptions.domain = getCurrentSite();\n    }\n    return cookieOptions;\n}\n//# sourceMappingURL=sessionInCookie.js.map","import { generateUUID } from '../../../tools/utils/stringUtils';\nimport { SessionPersistence } from '../sessionConstants';\nimport { toSessionString, toSessionState, getExpiredSessionState } from '../sessionState';\nimport { SESSION_STORE_KEY } from './sessionStoreStrategy';\nvar LOCAL_STORAGE_TEST_KEY = '_dd_test_';\nexport function selectLocalStorageStrategy() {\n    try {\n        var id = generateUUID();\n        var testKey = \"\".concat(LOCAL_STORAGE_TEST_KEY).concat(id);\n        localStorage.setItem(testKey, id);\n        var retrievedId = localStorage.getItem(testKey);\n        localStorage.removeItem(testKey);\n        return id === retrievedId ? { type: SessionPersistence.LOCAL_STORAGE } : undefined;\n    }\n    catch (_a) {\n        return undefined;\n    }\n}\nexport function initLocalStorageStrategy() {\n    return {\n        isLockEnabled: false,\n        persistSession: persistInLocalStorage,\n        retrieveSession: retrieveSessionFromLocalStorage,\n        expireSession: expireSessionFromLocalStorage,\n    };\n}\nfunction persistInLocalStorage(sessionState) {\n    localStorage.setItem(SESSION_STORE_KEY, toSessionString(sessionState));\n}\nfunction retrieveSessionFromLocalStorage() {\n    var sessionString = localStorage.getItem(SESSION_STORE_KEY);\n    return toSessionState(sessionString);\n}\nfunction expireSessionFromLocalStorage(previousSessionState) {\n    persistInLocalStorage(getExpiredSessionState(previousSessionState));\n}\n//# sourceMappingURL=sessionInLocalStorage.js.map","import { timeStampNow } from '../../tools/utils/timeUtils';\nimport { normalizeUrl } from '../../tools/utils/urlPolyfill';\nimport { generateUUID } from '../../tools/utils/stringUtils';\nimport { INTAKE_SITE_US1, INTAKE_SITE_FED_STAGING, PCI_INTAKE_HOST_US1 } from './intakeSites';\nexport function createEndpointBuilder(initConfiguration, trackType, configurationTags) {\n    var buildUrlWithParameters = createEndpointUrlWithParametersBuilder(initConfiguration, trackType);\n    return {\n        build: function (api, payload) {\n            var parameters = buildEndpointParameters(initConfiguration, trackType, configurationTags, api, payload);\n            return buildUrlWithParameters(parameters);\n        },\n        urlPrefix: buildUrlWithParameters(''),\n        trackType: trackType,\n    };\n}\n/**\n * Create a function used to build a full endpoint url from provided parameters. The goal of this\n * function is to pre-compute some parts of the URL to avoid re-computing everything on every\n * request, as only parameters are changing.\n */\nfunction createEndpointUrlWithParametersBuilder(initConfiguration, trackType) {\n    var path = \"/api/v2/\".concat(trackType);\n    var proxy = initConfiguration.proxy;\n    if (typeof proxy === 'string') {\n        var normalizedProxyUrl_1 = normalizeUrl(proxy);\n        return function (parameters) { return \"\".concat(normalizedProxyUrl_1, \"?ddforward=\").concat(encodeURIComponent(\"\".concat(path, \"?\").concat(parameters))); };\n    }\n    if (typeof proxy === 'function') {\n        return function (parameters) { return proxy({ path: path, parameters: parameters }); };\n    }\n    var host = buildEndpointHost(trackType, initConfiguration);\n    return function (parameters) { return \"https://\".concat(host).concat(path, \"?\").concat(parameters); };\n}\nfunction buildEndpointHost(trackType, initConfiguration) {\n    var _a = initConfiguration.site, site = _a === void 0 ? INTAKE_SITE_US1 : _a, internalAnalyticsSubdomain = initConfiguration.internalAnalyticsSubdomain;\n    if (trackType === 'logs' && initConfiguration.usePciIntake && site === INTAKE_SITE_US1) {\n        return PCI_INTAKE_HOST_US1;\n    }\n    if (internalAnalyticsSubdomain && site === INTAKE_SITE_US1) {\n        return \"\".concat(internalAnalyticsSubdomain, \".\").concat(INTAKE_SITE_US1);\n    }\n    if (site === INTAKE_SITE_FED_STAGING) {\n        return \"http-intake.logs.\".concat(site);\n    }\n    var domainParts = site.split('.');\n    var extension = domainParts.pop();\n    return \"browser-intake-\".concat(domainParts.join('-'), \".\").concat(extension);\n}\n/**\n * Build parameters to be used for an intake request. Parameters should be re-built for each\n * request, as they change randomly.\n */\nfunction buildEndpointParameters(_a, trackType, configurationTags, api, _b) {\n    var clientToken = _a.clientToken, internalAnalyticsSubdomain = _a.internalAnalyticsSubdomain;\n    var retry = _b.retry, encoding = _b.encoding;\n    var tags = [\"sdk_version:\".concat(\"5.35.1\"), \"api:\".concat(api)].concat(configurationTags);\n    if (retry) {\n        tags.push(\"retry_count:\".concat(retry.count), \"retry_after:\".concat(retry.lastFailureStatus));\n    }\n    var parameters = [\n        'ddsource=browser',\n        \"ddtags=\".concat(encodeURIComponent(tags.join(','))),\n        \"dd-api-key=\".concat(clientToken),\n        \"dd-evp-origin-version=\".concat(encodeURIComponent(\"5.35.1\")),\n        'dd-evp-origin=browser',\n        \"dd-request-id=\".concat(generateUUID()),\n    ];\n    if (encoding) {\n        parameters.push(\"dd-evp-encoding=\".concat(encoding));\n    }\n    if (trackType === 'rum') {\n        parameters.push(\"batch_time=\".concat(timeStampNow()));\n    }\n    if (internalAnalyticsSubdomain) {\n        parameters.reverse();\n    }\n    return parameters.join('&');\n}\n//# sourceMappingURL=endpointBuilder.js.map","import { DOCS_ORIGIN, MORE_DETAILS, display } from '../../tools/display';\nexport var TAG_SIZE_LIMIT = 200;\nexport function buildTags(configuration) {\n    var env = configuration.env, service = configuration.service, version = configuration.version, datacenter = configuration.datacenter;\n    var tags = [];\n    if (env) {\n        tags.push(buildTag('env', env));\n    }\n    if (service) {\n        tags.push(buildTag('service', service));\n    }\n    if (version) {\n        tags.push(buildTag('version', version));\n    }\n    if (datacenter) {\n        tags.push(buildTag('datacenter', datacenter));\n    }\n    return tags;\n}\nexport function buildTag(key, rawValue) {\n    // See https://docs.datadoghq.com/getting_started/tagging/#defining-tags for tags syntax. Note\n    // that the backend may not follow the exact same rules, so we only want to display an informal\n    // warning.\n    var valueSizeLimit = TAG_SIZE_LIMIT - key.length - 1;\n    if (rawValue.length > valueSizeLimit || hasForbiddenCharacters(rawValue)) {\n        display.warn(\"\".concat(key, \" value doesn't meet tag requirements and will be sanitized. \").concat(MORE_DETAILS, \" \").concat(DOCS_ORIGIN, \"/getting_started/tagging/#defining-tags\"));\n    }\n    // Let the backend do most of the sanitization, but still make sure multiple tags can't be crafted\n    // by forging a value containing commas.\n    var sanitizedValue = rawValue.replace(/,/g, '_');\n    return \"\".concat(key, \":\").concat(sanitizedValue);\n}\nfunction hasForbiddenCharacters(rawValue) {\n    // Unicode property escapes is not supported in all browsers, so we use a try/catch.\n    // Todo: Remove the try/catch when dropping IE11.\n    if (!supportUnicodePropertyEscapes()) {\n        return false;\n    }\n    // We use the Unicode property escapes to match any character that is a letter including other languages like Chinese, Japanese, etc.\n    // p{Ll} matches a lowercase letter.\n    // p{Lo} matches a letter that is neither uppercase nor lowercase (ex: Japanese characters).\n    // See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Regular_expressions/Unicode_character_class_escape#unicode_property_escapes_vs._character_classes\n    return new RegExp('[^\\\\p{Ll}\\\\p{Lo}0-9_:./-]', 'u').test(rawValue);\n}\nexport function supportUnicodePropertyEscapes() {\n    try {\n        new RegExp('[\\\\p{Ll}]', 'u');\n        return true;\n    }\n    catch (_a) {\n        return false;\n    }\n}\n//# sourceMappingURL=tags.js.map","import { catchUserErrors } from '../../tools/catchUserErrors';\nimport { DOCS_ORIGIN, MORE_DETAILS, display } from '../../tools/display';\nimport { ONE_SECOND } from '../../tools/utils/timeUtils';\nimport { isPercentage } from '../../tools/utils/numberUtils';\nimport { ONE_KIBI_BYTE } from '../../tools/utils/byteUtils';\nimport { objectHasValue } from '../../tools/utils/objectUtils';\nimport { assign } from '../../tools/utils/polyfills';\nimport { selectSessionStoreStrategyType } from '../session/sessionStore';\nimport { TrackingConsent } from '../trackingConsent';\nimport { computeTransportConfiguration } from './transportConfiguration';\nexport var DefaultPrivacyLevel = {\n    ALLOW: 'allow',\n    MASK: 'mask',\n    MASK_USER_INPUT: 'mask-user-input',\n};\nexport var TraceContextInjection = {\n    ALL: 'all',\n    SAMPLED: 'sampled',\n};\nfunction isString(tag, tagName) {\n    if (tag !== undefined && tag !== null && typeof tag !== 'string') {\n        display.error(\"\".concat(tagName, \" must be defined as a string\"));\n        return false;\n    }\n    return true;\n}\nfunction isDatadogSite(site) {\n    if (site && typeof site === 'string' && !/(datadog|ddog|datad0g|dd0g)/.test(site)) {\n        display.error(\"Site should be a valid Datadog site. \".concat(MORE_DETAILS, \" \").concat(DOCS_ORIGIN, \"/getting_started/site/.\"));\n        return false;\n    }\n    return true;\n}\nexport function isSampleRate(sampleRate, name) {\n    if (sampleRate !== undefined && !isPercentage(sampleRate)) {\n        display.error(\"\".concat(name, \" Sample Rate should be a number between 0 and 100\"));\n        return false;\n    }\n    return true;\n}\nexport function validateAndBuildConfiguration(initConfiguration) {\n    var _a, _b, _c, _d, _e;\n    if (!initConfiguration || !initConfiguration.clientToken) {\n        display.error('Client Token is not configured, we will not send any data.');\n        return;\n    }\n    if (!isDatadogSite(initConfiguration.site) ||\n        !isSampleRate(initConfiguration.sessionSampleRate, 'Session') ||\n        !isSampleRate(initConfiguration.telemetrySampleRate, 'Telemetry') ||\n        !isSampleRate(initConfiguration.telemetryConfigurationSampleRate, 'Telemetry Configuration') ||\n        !isSampleRate(initConfiguration.telemetryUsageSampleRate, 'Telemetry Usage') ||\n        !isString(initConfiguration.version, 'Version') ||\n        !isString(initConfiguration.env, 'Env') ||\n        !isString(initConfiguration.service, 'Service')) {\n        return;\n    }\n    if (initConfiguration.trackingConsent !== undefined &&\n        !objectHasValue(TrackingConsent, initConfiguration.trackingConsent)) {\n        display.error('Tracking Consent should be either \"granted\" or \"not-granted\"');\n        return;\n    }\n    return assign({\n        beforeSend: initConfiguration.beforeSend && catchUserErrors(initConfiguration.beforeSend, 'beforeSend threw an error:'),\n        sessionStoreStrategyType: selectSessionStoreStrategyType(initConfiguration),\n        sessionSampleRate: (_a = initConfiguration.sessionSampleRate) !== null && _a !== void 0 ? _a : 100,\n        telemetrySampleRate: (_b = initConfiguration.telemetrySampleRate) !== null && _b !== void 0 ? _b : 20,\n        telemetryConfigurationSampleRate: (_c = initConfiguration.telemetryConfigurationSampleRate) !== null && _c !== void 0 ? _c : 5,\n        telemetryUsageSampleRate: (_d = initConfiguration.telemetryUsageSampleRate) !== null && _d !== void 0 ? _d : 5,\n        service: initConfiguration.service || undefined,\n        silentMultipleInit: !!initConfiguration.silentMultipleInit,\n        allowUntrustedEvents: !!initConfiguration.allowUntrustedEvents,\n        trackingConsent: (_e = initConfiguration.trackingConsent) !== null && _e !== void 0 ? _e : TrackingConsent.GRANTED,\n        storeContextsAcrossPages: !!initConfiguration.storeContextsAcrossPages,\n        /**\n         * beacon payload max queue size implementation is 64kb\n         * ensure that we leave room for logs, rum and potential other users\n         */\n        batchBytesLimit: 16 * ONE_KIBI_BYTE,\n        eventRateLimiterThreshold: 3000,\n        maxTelemetryEventsPerPage: 15,\n        /**\n         * flush automatically, aim to be lower than ALB connection timeout\n         * to maximize connection reuse.\n         */\n        flushTimeout: (30 * ONE_SECOND),\n        /**\n         * Logs intake limit\n         */\n        batchMessagesLimit: 50,\n        messageBytesLimit: 256 * ONE_KIBI_BYTE,\n    }, computeTransportConfiguration(initConfiguration));\n}\nexport function serializeConfiguration(initConfiguration) {\n    return {\n        session_sample_rate: initConfiguration.sessionSampleRate,\n        telemetry_sample_rate: initConfiguration.telemetrySampleRate,\n        telemetry_configuration_sample_rate: initConfiguration.telemetryConfigurationSampleRate,\n        telemetry_usage_sample_rate: initConfiguration.telemetryUsageSampleRate,\n        use_before_send: !!initConfiguration.beforeSend,\n        use_cross_site_session_cookie: initConfiguration.useCrossSiteSessionCookie,\n        use_partitioned_cross_site_session_cookie: initConfiguration.usePartitionedCrossSiteSessionCookie,\n        use_secure_session_cookie: initConfiguration.useSecureSessionCookie,\n        use_proxy: !!initConfiguration.proxy,\n        silent_multiple_init: initConfiguration.silentMultipleInit,\n        track_session_across_subdomains: initConfiguration.trackSessionAcrossSubdomains,\n        session_persistence: initConfiguration.sessionPersistence,\n        allow_fallback_to_local_storage: !!initConfiguration.allowFallbackToLocalStorage,\n        store_contexts_across_pages: !!initConfiguration.storeContextsAcrossPages,\n        allow_untrusted_events: !!initConfiguration.allowUntrustedEvents,\n        tracking_consent: initConfiguration.trackingConsent,\n    };\n}\n//# sourceMappingURL=configuration.js.map","import { startsWith } from './utils/polyfills';\nimport { display } from './display';\nimport { getType } from './utils/typeUtils';\nexport function isMatchOption(item) {\n    var itemType = getType(item);\n    return itemType === 'string' || itemType === 'function' || item instanceof RegExp;\n}\n/**\n * Returns true if value can be matched by at least one of the provided MatchOptions.\n * When comparing strings, setting useStartsWith to true will compare the value with the start of\n * the option, instead of requiring an exact match.\n */\nexport function matchList(list, value, useStartsWith) {\n    if (useStartsWith === void 0) { useStartsWith = false; }\n    return list.some(function (item) {\n        try {\n            if (typeof item === 'function') {\n                return item(value);\n            }\n            else if (item instanceof RegExp) {\n                return item.test(value);\n            }\n            else if (typeof item === 'string') {\n                return useStartsWith ? startsWith(value, item) : item === value;\n            }\n        }\n        catch (e) {\n            display.error(e);\n        }\n        return false;\n    });\n}\n//# sourceMappingURL=matchOption.js.map","export function getCrypto() {\n    // TODO: remove msCrypto when IE11 support is dropped\n    return window.crypto || window.msCrypto;\n}\n//# sourceMappingURL=crypto.js.map","import { objectEntries, shallowClone, assign, find, getType, isMatchOption, matchList, TraceContextInjection, } from '@datadog/browser-core';\nimport { getCrypto } from '../../browser/crypto';\nimport { createSpanIdentifier, createTraceIdentifier, toPaddedHexadecimalString } from './identifier';\nimport { isTraceSampled } from './sampler';\nexport function isTracingOption(item) {\n    var expectedItem = item;\n    return (getType(expectedItem) === 'object' &&\n        isMatchOption(expectedItem.match) &&\n        Array.isArray(expectedItem.propagatorTypes));\n}\n/**\n * Clear tracing information to avoid incomplete traces. Ideally, we should do it when the\n * request did not reach the server, but the browser does not expose this. So, we clear tracing\n * information if the request ended with status 0 without being aborted by the application.\n *\n * Reasoning:\n *\n * * Applications are usually aborting requests after a bit of time, for example when the user is\n * typing (autocompletion) or navigating away (in a SPA). With a performant device and good\n * network conditions, the request is likely to reach the server before being canceled.\n *\n * * Requests aborted otherwise (ex: lack of internet, CORS issue, blocked by a privacy extension)\n * are likely to finish quickly and without reaching the server.\n *\n * Of course, it might not be the case every time, but it should limit having incomplete traces a\n * bit.\n * */\nexport function clearTracingIfNeeded(context) {\n    if (context.status === 0 && !context.isAborted) {\n        context.traceId = undefined;\n        context.spanId = undefined;\n        context.traceSampled = undefined;\n    }\n}\nexport function startTracer(configuration, sessionManager) {\n    return {\n        clearTracingIfNeeded: clearTracingIfNeeded,\n        traceFetch: function (context) {\n            return injectHeadersIfTracingAllowed(configuration, context, sessionManager, function (tracingHeaders) {\n                var _a;\n                if (context.input instanceof Request && !((_a = context.init) === null || _a === void 0 ? void 0 : _a.headers)) {\n                    context.input = new Request(context.input);\n                    Object.keys(tracingHeaders).forEach(function (key) {\n                        ;\n                        context.input.headers.append(key, tracingHeaders[key]);\n                    });\n                }\n                else {\n                    context.init = shallowClone(context.init);\n                    var headers_1 = [];\n                    if (context.init.headers instanceof Headers) {\n                        context.init.headers.forEach(function (value, key) {\n                            headers_1.push([key, value]);\n                        });\n                    }\n                    else if (Array.isArray(context.init.headers)) {\n                        context.init.headers.forEach(function (header) {\n                            headers_1.push(header);\n                        });\n                    }\n                    else if (context.init.headers) {\n                        Object.keys(context.init.headers).forEach(function (key) {\n                            headers_1.push([key, context.init.headers[key]]);\n                        });\n                    }\n                    context.init.headers = headers_1.concat(objectEntries(tracingHeaders));\n                }\n            });\n        },\n        traceXhr: function (context, xhr) {\n            return injectHeadersIfTracingAllowed(configuration, context, sessionManager, function (tracingHeaders) {\n                Object.keys(tracingHeaders).forEach(function (name) {\n                    xhr.setRequestHeader(name, tracingHeaders[name]);\n                });\n            });\n        },\n    };\n}\nfunction injectHeadersIfTracingAllowed(configuration, context, sessionManager, inject) {\n    if (!isTracingSupported() || !sessionManager.findTrackedSession()) {\n        return;\n    }\n    var tracingOption = find(configuration.allowedTracingUrls, function (tracingOption) {\n        return matchList([tracingOption.match], context.url, true);\n    });\n    if (!tracingOption) {\n        return;\n    }\n    var traceId = createTraceIdentifier();\n    context.traceSampled = isTraceSampled(traceId, configuration.traceSampleRate);\n    var shouldInjectHeaders = context.traceSampled || configuration.traceContextInjection === TraceContextInjection.ALL;\n    if (!shouldInjectHeaders) {\n        return;\n    }\n    context.traceId = traceId;\n    context.spanId = createSpanIdentifier();\n    inject(makeTracingHeaders(context.traceId, context.spanId, context.traceSampled, tracingOption.propagatorTypes));\n}\nexport function isTracingSupported() {\n    return getCrypto() !== undefined;\n}\n/**\n * When trace is not sampled, set priority to '0' instead of not adding the tracing headers\n * to prepare the implementation for sampling delegation.\n */\nfunction makeTracingHeaders(traceId, spanId, traceSampled, propagatorTypes) {\n    var tracingHeaders = {};\n    propagatorTypes.forEach(function (propagatorType) {\n        switch (propagatorType) {\n            case 'datadog': {\n                assign(tracingHeaders, {\n                    'x-datadog-origin': 'rum',\n                    'x-datadog-parent-id': spanId.toString(),\n                    'x-datadog-sampling-priority': traceSampled ? '1' : '0',\n                    'x-datadog-trace-id': traceId.toString(),\n                });\n                break;\n            }\n            // https://www.w3.org/TR/trace-context/\n            case 'tracecontext': {\n                assign(tracingHeaders, {\n                    traceparent: \"00-0000000000000000\".concat(toPaddedHexadecimalString(traceId), \"-\").concat(toPaddedHexadecimalString(spanId), \"-0\").concat(traceSampled ? '1' : '0'),\n                });\n                break;\n            }\n            // https://github.com/openzipkin/b3-propagation\n            case 'b3': {\n                assign(tracingHeaders, {\n                    b3: \"\".concat(toPaddedHexadecimalString(traceId), \"-\").concat(toPaddedHexadecimalString(spanId), \"-\").concat(traceSampled ? '1' : '0'),\n                });\n                break;\n            }\n            case 'b3multi': {\n                assign(tracingHeaders, {\n                    'X-B3-TraceId': toPaddedHexadecimalString(traceId),\n                    'X-B3-SpanId': toPaddedHexadecimalString(spanId),\n                    'X-B3-Sampled': traceSampled ? '1' : '0',\n                });\n                break;\n            }\n        }\n    });\n    return tracingHeaders;\n}\n//# sourceMappingURL=tracer.js.map","import { performDraw } from '@datadog/browser-core';\nexport function isTraceSampled(identifier, sampleRate) {\n    // Shortcuts for common cases. This is not strictly necessary, but it makes the code faster for\n    // customers willing to ingest all traces.\n    if (sampleRate === 100) {\n        return true;\n    }\n    if (sampleRate === 0) {\n        return false;\n    }\n    // For simplicity, we don't use consistent sampling for browser that don't support BigInt\n    // TODO: remove this when all browser we support have BigInt support\n    if (typeof identifier !== 'bigint') {\n        return performDraw(sampleRate);\n    }\n    // Offer consistent sampling for the same trace id across different environments. The rule is:\n    //\n    //   (identifier * knuthFactor) % 2^64 < sampleRate * 2^64\n    //\n    // Because JavaScript numbers are 64-bit floats, we can't represent 64-bit integers, and the\n    // modulo would be incorrect. Thus, we are using BigInts here.\n    //\n    // Implementation in other languages:\n    // * Go     https://github.com/DataDog/dd-trace-go/blob/ec6fbb1f2d517b7b8e69961052adf7136f3af773/ddtrace/tracer/sampler.go#L86-L91\n    // * Python https://github.com/DataDog/dd-trace-py/blob/0cee2f066fb6e79aa15947c1514c0f406dea47c5/ddtrace/sampling_rule.py#L197\n    // * Ruby   https://github.com/DataDog/dd-trace-rb/blob/1a6e255cdcb7e7e22235ea5955f90f6dfa91045d/lib/datadog/tracing/sampling/rate_sampler.rb#L42\n    // * C++    https://github.com/DataDog/dd-trace-cpp/blob/159629edc438ae45f2bb318eb7bd51abd05e94b5/src/datadog/trace_sampler.cpp#L58\n    // * Java   https://github.com/DataDog/dd-trace-java/blob/896dd6b380533216e0bdee59614606c8272d313e/dd-trace-core/src/main/java/datadog/trace/common/sampling/DeterministicSampler.java#L48\n    //\n    // Note: All implementations have slight variations. Some of them use '<=' instead of '<', and\n    // use `sampleRate * 2^64 - 1` instead of `sampleRate * 2^64`. The following implementation\n    // should adhere to the spec and is a bit simpler than using a 2^64-1 limit as there are less\n    // BigInt arithmetic to write. In practice this does not matter, as we are using floating point\n    // numbers in the end, and Number(2n**64n-1n) === Number(2n**64n).\n    var knuthFactor = BigInt('1111111111111111111');\n    var twoPow64 = BigInt('0x10000000000000000'); // 2n ** 64n\n    var hash = (identifier * knuthFactor) % twoPow64;\n    return Number(hash) <= (sampleRate / 100) * Number(twoPow64);\n}\n//# sourceMappingURL=sampler.js.map","import { getType, arrayFrom, isMatchOption, serializeConfiguration, assign, DefaultPrivacyLevel, TraceContextInjection, display, objectHasValue, validateAndBuildConfiguration, isSampleRate, isNumber, } from '@datadog/browser-core';\nimport { isTracingOption } from '../tracing/tracer';\nexport var DEFAULT_PROPAGATOR_TYPES = ['tracecontext', 'datadog'];\nexport function validateAndBuildRumConfiguration(initConfiguration) {\n    var _a, _b, _c;\n    if (!initConfiguration.applicationId) {\n        display.error('Application ID is not configured, no RUM data will be collected.');\n        return;\n    }\n    if (!isSampleRate(initConfiguration.sessionReplaySampleRate, 'Session Replay') ||\n        !isSampleRate(initConfiguration.traceSampleRate, 'Trace')) {\n        return;\n    }\n    if (initConfiguration.excludedActivityUrls !== undefined && !Array.isArray(initConfiguration.excludedActivityUrls)) {\n        display.error('Excluded Activity Urls should be an array');\n        return;\n    }\n    var allowedTracingUrls = validateAndBuildTracingOptions(initConfiguration);\n    if (!allowedTracingUrls) {\n        return;\n    }\n    var baseConfiguration = validateAndBuildConfiguration(initConfiguration);\n    if (!baseConfiguration) {\n        return;\n    }\n    var sessionReplaySampleRate = (_a = initConfiguration.sessionReplaySampleRate) !== null && _a !== void 0 ? _a : 0;\n    return assign({\n        applicationId: initConfiguration.applicationId,\n        version: initConfiguration.version || undefined,\n        actionNameAttribute: initConfiguration.actionNameAttribute,\n        sessionReplaySampleRate: sessionReplaySampleRate,\n        startSessionReplayRecordingManually: initConfiguration.startSessionReplayRecordingManually !== undefined\n            ? !!initConfiguration.startSessionReplayRecordingManually\n            : sessionReplaySampleRate === 0,\n        traceSampleRate: (_b = initConfiguration.traceSampleRate) !== null && _b !== void 0 ? _b : 100,\n        rulePsr: isNumber(initConfiguration.traceSampleRate) ? initConfiguration.traceSampleRate / 100 : undefined,\n        allowedTracingUrls: allowedTracingUrls,\n        excludedActivityUrls: (_c = initConfiguration.excludedActivityUrls) !== null && _c !== void 0 ? _c : [],\n        workerUrl: initConfiguration.workerUrl,\n        compressIntakeRequests: !!initConfiguration.compressIntakeRequests,\n        trackUserInteractions: !!initConfiguration.trackUserInteractions,\n        trackViewsManually: !!initConfiguration.trackViewsManually,\n        trackResources: !!initConfiguration.trackResources,\n        trackLongTasks: !!initConfiguration.trackLongTasks,\n        subdomain: initConfiguration.subdomain,\n        defaultPrivacyLevel: objectHasValue(DefaultPrivacyLevel, initConfiguration.defaultPrivacyLevel)\n            ? initConfiguration.defaultPrivacyLevel\n            : DefaultPrivacyLevel.MASK,\n        enablePrivacyForActionName: !!initConfiguration.enablePrivacyForActionName,\n        customerDataTelemetrySampleRate: 1,\n        traceContextInjection: objectHasValue(TraceContextInjection, initConfiguration.traceContextInjection)\n            ? initConfiguration.traceContextInjection\n            : TraceContextInjection.ALL,\n        plugins: initConfiguration.plugins || [],\n    }, baseConfiguration);\n}\n/**\n * Validates allowedTracingUrls and converts match options to tracing options\n */\nfunction validateAndBuildTracingOptions(initConfiguration) {\n    if (initConfiguration.allowedTracingUrls === undefined) {\n        return [];\n    }\n    if (!Array.isArray(initConfiguration.allowedTracingUrls)) {\n        display.error('Allowed Tracing URLs should be an array');\n        return;\n    }\n    if (initConfiguration.allowedTracingUrls.length !== 0 && initConfiguration.service === undefined) {\n        display.error('Service needs to be configured when tracing is enabled');\n        return;\n    }\n    // Convert from (MatchOption | TracingOption) to TracingOption, remove unknown properties\n    var tracingOptions = [];\n    initConfiguration.allowedTracingUrls.forEach(function (option) {\n        if (isMatchOption(option)) {\n            tracingOptions.push({ match: option, propagatorTypes: DEFAULT_PROPAGATOR_TYPES });\n        }\n        else if (isTracingOption(option)) {\n            tracingOptions.push(option);\n        }\n        else {\n            display.warn('Allowed Tracing Urls parameters should be a string, RegExp, function, or an object. Ignoring parameter', option);\n        }\n    });\n    return tracingOptions;\n}\n/**\n * Combines the selected tracing propagators from the different options in allowedTracingUrls\n */\nfunction getSelectedTracingPropagators(configuration) {\n    var usedTracingPropagators = new Set();\n    if (Array.isArray(configuration.allowedTracingUrls) && configuration.allowedTracingUrls.length > 0) {\n        configuration.allowedTracingUrls.forEach(function (option) {\n            if (isMatchOption(option)) {\n                DEFAULT_PROPAGATOR_TYPES.forEach(function (propagatorType) { return usedTracingPropagators.add(propagatorType); });\n            }\n            else if (getType(option) === 'object' && Array.isArray(option.propagatorTypes)) {\n                // Ensure we have an array, as we cannot rely on types yet (configuration is provided by users)\n                option.propagatorTypes.forEach(function (propagatorType) { return usedTracingPropagators.add(propagatorType); });\n            }\n        });\n    }\n    return arrayFrom(usedTracingPropagators);\n}\nexport function serializeRumConfiguration(configuration) {\n    var _a;\n    var baseSerializedConfiguration = serializeConfiguration(configuration);\n    return assign({\n        session_replay_sample_rate: configuration.sessionReplaySampleRate,\n        start_session_replay_recording_manually: configuration.startSessionReplayRecordingManually,\n        trace_sample_rate: configuration.traceSampleRate,\n        trace_context_injection: configuration.traceContextInjection,\n        action_name_attribute: configuration.actionNameAttribute,\n        use_allowed_tracing_urls: Array.isArray(configuration.allowedTracingUrls) && configuration.allowedTracingUrls.length > 0,\n        selected_tracing_propagators: getSelectedTracingPropagators(configuration),\n        default_privacy_level: configuration.defaultPrivacyLevel,\n        enable_privacy_for_action_name: configuration.enablePrivacyForActionName,\n        use_excluded_activity_urls: Array.isArray(configuration.excludedActivityUrls) && configuration.excludedActivityUrls.length > 0,\n        use_worker_url: !!configuration.workerUrl,\n        compress_intake_requests: configuration.compressIntakeRequests,\n        track_views_manually: configuration.trackViewsManually,\n        track_user_interactions: configuration.trackUserInteractions,\n        track_resources: configuration.trackResources,\n        track_long_task: configuration.trackLongTasks,\n        plugins: (_a = configuration.plugins) === null || _a === void 0 ? void 0 : _a.map(function (plugin) { var _a; return assign({ name: plugin.name }, (_a = plugin.getConfigurationTelemetry) === null || _a === void 0 ? void 0 : _a.call(plugin)); }),\n    }, baseSerializedConfiguration);\n}\n//# sourceMappingURL=configuration.js.map","import { display, addEventListener, assign } from '@datadog/browser-core';\nexport var REMOTE_CONFIGURATION_URL = 'https://d3uc069fcn7uxw.cloudfront.net/configuration';\nexport function fetchAndApplyRemoteConfiguration(initConfiguration, callback) {\n    fetchRemoteConfiguration(initConfiguration, function (remoteInitConfiguration) {\n        callback(applyRemoteConfiguration(initConfiguration, remoteInitConfiguration));\n    });\n}\nexport function applyRemoteConfiguration(initConfiguration, remoteInitConfiguration) {\n    return assign({}, initConfiguration, remoteInitConfiguration);\n}\nexport function fetchRemoteConfiguration(configuration, callback) {\n    var xhr = new XMLHttpRequest();\n    addEventListener(configuration, xhr, 'load', function () {\n        if (xhr.status === 200) {\n            callback(JSON.parse(xhr.responseText));\n        }\n        else {\n            displayRemoteConfigurationFetchingError();\n        }\n    });\n    addEventListener(configuration, xhr, 'error', function () {\n        displayRemoteConfigurationFetchingError();\n    });\n    xhr.open('GET', \"\".concat(REMOTE_CONFIGURATION_URL, \"/\").concat(encodeURIComponent(configuration.remoteConfigurationId), \".json\"));\n    xhr.send();\n}\nfunction displayRemoteConfigurationFetchingError() {\n    display.error('Error fetching the remote configuration.');\n}\n//# sourceMappingURL=remoteConfiguration.js.map","import { Observable } from '../tools/observable';\nimport { objectValues, includes } from '../tools/utils/polyfills';\nimport { addEventListeners, addEventListener } from './addEventListener';\nexport var PageExitReason = {\n    HIDDEN: 'visibility_hidden',\n    UNLOADING: 'before_unload',\n    PAGEHIDE: 'page_hide',\n    FROZEN: 'page_frozen',\n};\nexport function createPageExitObservable(configuration) {\n    return new Observable(function (observable) {\n        var stopListeners = addEventListeners(configuration, window, [\"visibilitychange\" /* DOM_EVENT.VISIBILITY_CHANGE */, \"freeze\" /* DOM_EVENT.FREEZE */], function (event) {\n            if (event.type === \"visibilitychange\" /* DOM_EVENT.VISIBILITY_CHANGE */ && document.visibilityState === 'hidden') {\n                /**\n                 * Only event that guarantee to fire on mobile devices when the page transitions to background state\n                 * (e.g. when user switches to a different application, goes to homescreen, etc), or is being unloaded.\n                 */\n                observable.notify({ reason: PageExitReason.HIDDEN });\n            }\n            else if (event.type === \"freeze\" /* DOM_EVENT.FREEZE */) {\n                /**\n                 * After transitioning in background a tab can be freezed to preserve resources. (cf: https://developer.chrome.com/blog/page-lifecycle-api)\n                 * Allow to collect events happening between hidden and frozen state.\n                 */\n                observable.notify({ reason: PageExitReason.FROZEN });\n            }\n        }, { capture: true }).stop;\n        var stopBeforeUnloadListener = addEventListener(configuration, window, \"beforeunload\" /* DOM_EVENT.BEFORE_UNLOAD */, function () {\n            observable.notify({ reason: PageExitReason.UNLOADING });\n        }).stop;\n        return function () {\n            stopListeners();\n            stopBeforeUnloadListener();\n        };\n    });\n}\nexport function isPageExitReason(reason) {\n    return includes(objectValues(PageExitReason), reason);\n}\n//# sourceMappingURL=pageExitObservable.js.map","import { monitor, noop, Observable, getZoneJsOriginalValue } from '@datadog/browser-core';\nexport function createDOMMutationObservable() {\n    var MutationObserver = getMutationObserverConstructor();\n    return new Observable(function (observable) {\n        if (!MutationObserver) {\n            return;\n        }\n        var observer = new MutationObserver(monitor(function () { return observable.notify(); }));\n        observer.observe(document, {\n            attributes: true,\n            characterData: true,\n            childList: true,\n            subtree: true,\n        });\n        return function () { return observer.disconnect(); };\n    });\n}\nexport function getMutationObserverConstructor() {\n    var constructor;\n    var browserWindow = window;\n    // Angular uses Zone.js to provide a context persisting across async tasks.  Zone.js replaces the\n    // global MutationObserver constructor with a patched version to support the context propagation.\n    // There is an ongoing issue[1][2] with this setup when using a MutationObserver within a Angular\n    // component: on some occasions, the callback is being called in an infinite loop, causing the\n    // page to freeze (even if the callback is completely empty).\n    //\n    // To work around this issue, we try to get the original MutationObserver constructor stored by\n    // Zone.js.\n    //\n    // [1] https://github.com/angular/angular/issues/26948\n    // [2] https://github.com/angular/angular/issues/31712\n    if (browserWindow.Zone) {\n        // Zone.js 0.8.6+ is storing original class constructors into the browser 'window' object[3].\n        //\n        // [3] https://github.com/angular/angular/blob/6375fa79875c0fe7b815efc45940a6e6f5c9c9eb/packages/zone.js/lib/common/utils.ts#L288\n        constructor = getZoneJsOriginalValue(browserWindow, 'MutationObserver');\n        if (browserWindow.MutationObserver && constructor === browserWindow.MutationObserver) {\n            // Anterior Zone.js versions (used in Angular 2) does not expose the original MutationObserver\n            // in the 'window' object. Luckily, the patched MutationObserver class is storing an original\n            // instance in its properties[4]. Let's get the original MutationObserver constructor from\n            // there.\n            //\n            // [4] https://github.com/angular/zone.js/blob/v0.8.5/lib/common/utils.ts#L412\n            var patchedInstance = new browserWindow.MutationObserver(noop);\n            var originalInstance = getZoneJsOriginalValue(patchedInstance, 'originalInstance');\n            constructor = originalInstance && originalInstance.constructor;\n        }\n    }\n    if (!constructor) {\n        constructor = browserWindow.MutationObserver;\n    }\n    return constructor;\n}\n//# sourceMappingURL=domMutationObservable.js.map","export var ErrorSource = {\n    AGENT: 'agent',\n    CONSOLE: 'console',\n    CUSTOM: 'custom',\n    LOGGER: 'logger',\n    NETWORK: 'network',\n    SOURCE: 'source',\n    REPORT: 'report',\n};\n//# sourceMappingURL=error.types.js.map","import { setTimeout } from '../../tools/timer';\nimport { clocksNow, ONE_MINUTE } from '../../tools/utils/timeUtils';\nimport { ErrorSource } from '../error/error.types';\nexport function createEventRateLimiter(eventType, limit, onLimitReached) {\n    var eventCount = 0;\n    var allowNextEvent = false;\n    return {\n        isLimitReached: function () {\n            if (eventCount === 0) {\n                setTimeout(function () {\n                    eventCount = 0;\n                }, ONE_MINUTE);\n            }\n            eventCount += 1;\n            if (eventCount <= limit || allowNextEvent) {\n                allowNextEvent = false;\n                return false;\n            }\n            if (eventCount === limit + 1) {\n                allowNextEvent = true;\n                try {\n                    onLimitReached({\n                        message: \"Reached max number of \".concat(eventType, \"s by minute: \").concat(limit),\n                        source: ErrorSource.AGENT,\n                        startClocks: clocksNow(),\n                    });\n                }\n                finally {\n                    allowNextEvent = false;\n                }\n            }\n            return true;\n        },\n    };\n}\n//# sourceMappingURL=createEventRateLimiter.js.map","import { sanitize, deepClone, getType, objectEntries } from '@datadog/browser-core';\n/**\n * Current limitation:\n * - field path do not support array, 'a.b.c' only\n */\nexport function limitModification(object, modifiableFieldPaths, modifier) {\n    var clone = deepClone(object);\n    var result = modifier(clone);\n    objectEntries(modifiableFieldPaths).forEach(function (_a) {\n        var fieldPath = _a[0], fieldType = _a[1];\n        var newValue = get(clone, fieldPath);\n        var newType = getType(newValue);\n        if (newType === fieldType) {\n            set(object, fieldPath, sanitize(newValue));\n        }\n        else if (fieldType === 'object' && (newType === 'undefined' || newType === 'null')) {\n            set(object, fieldPath, {});\n        }\n    });\n    return result;\n}\nfunction get(object, path) {\n    var current = object;\n    for (var _i = 0, _a = path.split('.'); _i < _a.length; _i++) {\n        var field = _a[_i];\n        if (!isValidObjectContaining(current, field)) {\n            return;\n        }\n        current = current[field];\n    }\n    return current;\n}\nfunction set(object, path, value) {\n    var current = object;\n    var fields = path.split('.');\n    for (var i = 0; i < fields.length; i += 1) {\n        var field = fields[i];\n        if (!isValidObject(current)) {\n            return;\n        }\n        if (i !== fields.length - 1) {\n            current = current[field];\n        }\n        else {\n            current[field] = value;\n        }\n    }\n}\nfunction isValidObject(object) {\n    return getType(object) === 'object';\n}\nfunction isValidObjectContaining(object, field) {\n    return isValidObject(object) && Object.prototype.hasOwnProperty.call(object, field);\n}\n//# sourceMappingURL=limitModification.js.map","// eslint-disable-next-line no-restricted-syntax\nvar AbstractLifeCycle = /** @class */ (function () {\n    function AbstractLifeCycle() {\n        this.callbacks = {};\n    }\n    AbstractLifeCycle.prototype.notify = function (eventType, data) {\n        var eventCallbacks = this.callbacks[eventType];\n        if (eventCallbacks) {\n            eventCallbacks.forEach(function (callback) { return callback(data); });\n        }\n    };\n    AbstractLifeCycle.prototype.subscribe = function (eventType, callback) {\n        var _this = this;\n        if (!this.callbacks[eventType]) {\n            this.callbacks[eventType] = [];\n        }\n        this.callbacks[eventType].push(callback);\n        return {\n            unsubscribe: function () {\n                _this.callbacks[eventType] = _this.callbacks[eventType].filter(function (other) { return callback !== other; });\n            },\n        };\n    };\n    return AbstractLifeCycle;\n}());\nexport { AbstractLifeCycle };\n//# sourceMappingURL=abstractLifeCycle.js.map","import { setInterval, clearInterval } from './timer';\nimport { removeItem } from './utils/arrayUtils';\nimport { addDuration, relativeNow, ONE_MINUTE } from './utils/timeUtils';\nvar END_OF_TIMES = Infinity;\nexport var CLEAR_OLD_VALUES_INTERVAL = ONE_MINUTE;\nexport function createValueHistory(_a) {\n    var expireDelay = _a.expireDelay, maxEntries = _a.maxEntries;\n    var entries = [];\n    var clearOldValuesInterval = setInterval(function () { return clearOldValues(); }, CLEAR_OLD_VALUES_INTERVAL);\n    function clearOldValues() {\n        var oldTimeThreshold = relativeNow() - expireDelay;\n        while (entries.length > 0 && entries[entries.length - 1].endTime < oldTimeThreshold) {\n            entries.pop();\n        }\n    }\n    /**\n     * Add a value to the history associated with a start time. Returns a reference to this newly\n     * added entry that can be removed or closed.\n     */\n    function add(value, startTime) {\n        var entry = {\n            value: value,\n            startTime: startTime,\n            endTime: END_OF_TIMES,\n            remove: function () {\n                removeItem(entries, entry);\n            },\n            close: function (endTime) {\n                entry.endTime = endTime;\n            },\n        };\n        if (maxEntries && entries.length >= maxEntries) {\n            entries.pop();\n        }\n        entries.unshift(entry);\n        return entry;\n    }\n    /**\n     * Return the latest value that was active during `startTime`, or the currently active value\n     * if no `startTime` is provided. This method assumes that entries are not overlapping.\n     *\n     * If `option.returnInactive` is true, returns the value at `startTime` (active or not).\n     */\n    function find(startTime, options) {\n        if (startTime === void 0) { startTime = END_OF_TIMES; }\n        if (options === void 0) { options = { returnInactive: false }; }\n        for (var _i = 0, entries_1 = entries; _i < entries_1.length; _i++) {\n            var entry = entries_1[_i];\n            if (entry.startTime <= startTime) {\n                if (options.returnInactive || startTime <= entry.endTime) {\n                    return entry.value;\n                }\n                break;\n            }\n        }\n    }\n    /**\n     * Helper function to close the currently active value, if any. This method assumes that entries\n     * are not overlapping.\n     */\n    function closeActive(endTime) {\n        var latestEntry = entries[0];\n        if (latestEntry && latestEntry.endTime === END_OF_TIMES) {\n            latestEntry.close(endTime);\n        }\n    }\n    /**\n     * Return all values with an active period overlapping with the duration,\n     * or all values that were active during `startTime` if no duration is provided,\n     * or all currently active values if no `startTime` is provided.\n     */\n    function findAll(startTime, duration) {\n        if (startTime === void 0) { startTime = END_OF_TIMES; }\n        if (duration === void 0) { duration = 0; }\n        var endTime = addDuration(startTime, duration);\n        return entries\n            .filter(function (entry) { return entry.startTime <= endTime && startTime <= entry.endTime; })\n            .map(function (entry) { return entry.value; });\n    }\n    /**\n     * Remove all entries from this collection.\n     */\n    function reset() {\n        entries = [];\n    }\n    /**\n     * Stop internal garbage collection of past entries.\n     */\n    function stop() {\n        clearInterval(clearOldValuesInterval);\n    }\n    return { add: add, find: find, closeActive: closeActive, findAll: findAll, reset: reset, stop: stop };\n}\n//# sourceMappingURL=valueHistory.js.map","import { addTelemetryDebug, elapsed, getPathName, includes, isValidUrl, toServerDuration, isIntakeUrl, } from '@datadog/browser-core';\nexport var FAKE_INITIAL_DOCUMENT = 'initial_document';\nvar RESOURCE_TYPES = [\n    [\"document\" /* ResourceType.DOCUMENT */, function (initiatorType) { return FAKE_INITIAL_DOCUMENT === initiatorType; }],\n    [\"xhr\" /* ResourceType.XHR */, function (initiatorType) { return 'xmlhttprequest' === initiatorType; }],\n    [\"fetch\" /* ResourceType.FETCH */, function (initiatorType) { return 'fetch' === initiatorType; }],\n    [\"beacon\" /* ResourceType.BEACON */, function (initiatorType) { return 'beacon' === initiatorType; }],\n    [\"css\" /* ResourceType.CSS */, function (_, path) { return /\\.css$/i.test(path); }],\n    [\"js\" /* ResourceType.JS */, function (_, path) { return /\\.js$/i.test(path); }],\n    [\n        \"image\" /* ResourceType.IMAGE */,\n        function (initiatorType, path) {\n            return includes(['image', 'img', 'icon'], initiatorType) || /\\.(gif|jpg|jpeg|tiff|png|svg|ico)$/i.exec(path) !== null;\n        },\n    ],\n    [\"font\" /* ResourceType.FONT */, function (_, path) { return /\\.(woff|eot|woff2|ttf)$/i.exec(path) !== null; }],\n    [\n        \"media\" /* ResourceType.MEDIA */,\n        function (initiatorType, path) {\n            return includes(['audio', 'video'], initiatorType) || /\\.(mp3|mp4)$/i.exec(path) !== null;\n        },\n    ],\n];\nexport function computeResourceEntryType(entry) {\n    var url = entry.name;\n    if (!isValidUrl(url)) {\n        addTelemetryDebug(\"Failed to construct URL for \\\"\".concat(entry.name, \"\\\"\"));\n        return \"other\" /* ResourceType.OTHER */;\n    }\n    var path = getPathName(url);\n    for (var _i = 0, RESOURCE_TYPES_1 = RESOURCE_TYPES; _i < RESOURCE_TYPES_1.length; _i++) {\n        var _a = RESOURCE_TYPES_1[_i], type = _a[0], isType = _a[1];\n        if (isType(entry.initiatorType, path)) {\n            return type;\n        }\n    }\n    return \"other\" /* ResourceType.OTHER */;\n}\nfunction areInOrder() {\n    var numbers = [];\n    for (var _i = 0; _i < arguments.length; _i++) {\n        numbers[_i] = arguments[_i];\n    }\n    for (var i = 1; i < numbers.length; i += 1) {\n        if (numbers[i - 1] > numbers[i]) {\n            return false;\n        }\n    }\n    return true;\n}\nexport function isResourceEntryRequestType(entry) {\n    return entry.initiatorType === 'xmlhttprequest' || entry.initiatorType === 'fetch';\n}\nexport function computeResourceEntryDuration(entry) {\n    var duration = entry.duration, startTime = entry.startTime, responseEnd = entry.responseEnd;\n    // Safari duration is always 0 on timings blocked by cross origin policies.\n    if (duration === 0 && startTime < responseEnd) {\n        return toServerDuration(elapsed(startTime, responseEnd));\n    }\n    return toServerDuration(duration);\n}\nexport function computeResourceEntryDetails(entry) {\n    if (!hasValidResourceEntryTimings(entry)) {\n        return undefined;\n    }\n    var startTime = entry.startTime, fetchStart = entry.fetchStart, workerStart = entry.workerStart, redirectStart = entry.redirectStart, redirectEnd = entry.redirectEnd, domainLookupStart = entry.domainLookupStart, domainLookupEnd = entry.domainLookupEnd, connectStart = entry.connectStart, secureConnectionStart = entry.secureConnectionStart, connectEnd = entry.connectEnd, requestStart = entry.requestStart, responseStart = entry.responseStart, responseEnd = entry.responseEnd;\n    var details = {\n        download: formatTiming(startTime, responseStart, responseEnd),\n        first_byte: formatTiming(startTime, requestStart, responseStart),\n    };\n    // Make sure a worker processing time is recorded\n    if (0 < workerStart && workerStart < fetchStart) {\n        details.worker = formatTiming(startTime, workerStart, fetchStart);\n    }\n    // Make sure a connection occurred\n    if (fetchStart < connectEnd) {\n        details.connect = formatTiming(startTime, connectStart, connectEnd);\n        // Make sure a secure connection occurred\n        if (connectStart <= secureConnectionStart && secureConnectionStart <= connectEnd) {\n            details.ssl = formatTiming(startTime, secureConnectionStart, connectEnd);\n        }\n    }\n    // Make sure a domain lookup occurred\n    if (fetchStart < domainLookupEnd) {\n        details.dns = formatTiming(startTime, domainLookupStart, domainLookupEnd);\n    }\n    // Make sure a redirection occurred\n    if (startTime < redirectEnd) {\n        details.redirect = formatTiming(startTime, redirectStart, redirectEnd);\n    }\n    return details;\n}\n/**\n * Entries with negative duration are unexpected and should be dismissed. The intake will ignore RUM\n * Resource events with negative durations anyway.\n * Since Chromium 128, more entries have unexpected negative durations, see\n * https://issues.chromium.org/issues/363031537\n */\nexport function hasValidResourceEntryDuration(entry) {\n    return entry.duration >= 0;\n}\nexport function hasValidResourceEntryTimings(entry) {\n    // Ensure timings are in the right order. On top of filtering out potential invalid\n    // RumPerformanceResourceTiming, it will ignore entries from requests where timings cannot be\n    // collected, for example cross origin requests without a \"Timing-Allow-Origin\" header allowing\n    // it.\n    var areCommonTimingsInOrder = areInOrder(entry.startTime, entry.fetchStart, entry.domainLookupStart, entry.domainLookupEnd, entry.connectStart, entry.connectEnd, entry.requestStart, entry.responseStart, entry.responseEnd);\n    var areRedirectionTimingsInOrder = hasRedirection(entry)\n        ? areInOrder(entry.startTime, entry.redirectStart, entry.redirectEnd, entry.fetchStart)\n        : true;\n    return areCommonTimingsInOrder && areRedirectionTimingsInOrder;\n}\nfunction hasRedirection(entry) {\n    return entry.redirectEnd > entry.startTime;\n}\nfunction formatTiming(origin, start, end) {\n    if (origin <= start && start <= end) {\n        return {\n            duration: toServerDuration(elapsed(start, end)),\n            start: toServerDuration(elapsed(origin, start)),\n        };\n    }\n}\n/**\n * The 'nextHopProtocol' is an empty string for cross-origin resources without CORS headers,\n * meaning the protocol is unknown, and we shouldn't report it.\n * https://developer.mozilla.org/en-US/docs/Web/API/PerformanceResourceTiming/nextHopProtocol#cross-origin_resources\n */\nexport function computeResourceEntryProtocol(entry) {\n    return entry.nextHopProtocol === '' ? undefined : entry.nextHopProtocol;\n}\n/**\n * Handles the 'deliveryType' property to distinguish between supported values ('cache', 'navigational-prefetch'),\n * undefined (unsupported in some browsers), and other cases ('other' for unknown or unrecognized values).\n * see: https://developer.mozilla.org/en-US/docs/Web/API/PerformanceResourceTiming/deliveryType\n */\nexport function computeResourceEntryDeliveryType(entry) {\n    return entry.deliveryType === '' ? 'other' : entry.deliveryType;\n}\nexport function computeResourceEntrySize(entry) {\n    // Make sure a request actually occurred\n    if (entry.startTime < entry.responseStart) {\n        var encodedBodySize = entry.encodedBodySize, decodedBodySize = entry.decodedBodySize, transferSize = entry.transferSize;\n        return {\n            size: decodedBodySize,\n            encoded_body_size: encodedBodySize,\n            decoded_body_size: decodedBodySize,\n            transfer_size: transferSize,\n        };\n    }\n    return {\n        size: undefined,\n        encoded_body_size: undefined,\n        decoded_body_size: undefined,\n        transfer_size: undefined,\n    };\n}\nexport function isAllowedRequestUrl(url) {\n    return url && !isIntakeUrl(url);\n}\nvar DATA_URL_REGEX = /data:(.+)?(;base64)?,/g;\nexport var MAX_ATTRIBUTE_VALUE_CHAR_LENGTH = 24000;\nexport function isLongDataUrl(url) {\n    if (url.length <= MAX_ATTRIBUTE_VALUE_CHAR_LENGTH) {\n        return false;\n    }\n    else if (url.substring(0, 5) === 'data:') {\n        // Avoid String.match RangeError: Maximum call stack size exceeded\n        url = url.substring(0, MAX_ATTRIBUTE_VALUE_CHAR_LENGTH);\n        return true;\n    }\n    return false;\n}\nexport function sanitizeDataUrl(url) {\n    return \"\".concat(url.match(DATA_URL_REGEX)[0], \"[...]\");\n}\n//# sourceMappingURL=resourceUtils.js.map","import { assign, includes } from '../../tools/utils/polyfills';\nimport { createEndpointBuilder } from './endpointBuilder';\nimport { buildTags } from './tags';\nimport { INTAKE_SITE_US1, INTAKE_URL_PARAMETERS } from './intakeSites';\nexport function computeTransportConfiguration(initConfiguration) {\n    var site = initConfiguration.site || INTAKE_SITE_US1;\n    var tags = buildTags(initConfiguration);\n    var endpointBuilders = computeEndpointBuilders(initConfiguration, tags);\n    var replicaConfiguration = computeReplicaConfiguration(initConfiguration, tags);\n    return assign({\n        replica: replicaConfiguration,\n        site: site,\n    }, endpointBuilders);\n}\nfunction computeEndpointBuilders(initConfiguration, tags) {\n    return {\n        logsEndpointBuilder: createEndpointBuilder(initConfiguration, 'logs', tags),\n        rumEndpointBuilder: createEndpointBuilder(initConfiguration, 'rum', tags),\n        sessionReplayEndpointBuilder: createEndpointBuilder(initConfiguration, 'replay', tags),\n    };\n}\nfunction computeReplicaConfiguration(initConfiguration, tags) {\n    if (!initConfiguration.replica) {\n        return;\n    }\n    var replicaConfiguration = assign({}, initConfiguration, {\n        site: INTAKE_SITE_US1,\n        clientToken: initConfiguration.replica.clientToken,\n    });\n    var replicaEndpointBuilders = {\n        logsEndpointBuilder: createEndpointBuilder(replicaConfiguration, 'logs', tags),\n        rumEndpointBuilder: createEndpointBuilder(replicaConfiguration, 'rum', tags),\n    };\n    return assign({ applicationId: initConfiguration.replica.applicationId }, replicaEndpointBuilders);\n}\nexport function isIntakeUrl(url) {\n    // check if tags is present in the query string\n    return INTAKE_URL_PARAMETERS.every(function (param) { return includes(url, param); });\n}\n//# sourceMappingURL=transportConfiguration.js.map","import { initFetchObservable, initXhrObservable, readBytesFromStream, elapsed, timeStampNow, tryToClone, } from '@datadog/browser-core';\nimport { isAllowedRequestUrl } from './resource/resourceUtils';\nimport { startTracer } from './tracing/tracer';\nvar nextRequestIndex = 1;\nexport function startRequestCollection(lifeCycle, configuration, sessionManager) {\n    var tracer = startTracer(configuration, sessionManager);\n    trackXhr(lifeCycle, configuration, tracer);\n    trackFetch(lifeCycle, tracer);\n}\nexport function trackXhr(lifeCycle, configuration, tracer) {\n    var subscription = initXhrObservable(configuration).subscribe(function (rawContext) {\n        var context = rawContext;\n        if (!isAllowedRequestUrl(context.url)) {\n            return;\n        }\n        switch (context.state) {\n            case 'start':\n                tracer.traceXhr(context, context.xhr);\n                context.requestIndex = getNextRequestIndex();\n                lifeCycle.notify(7 /* LifeCycleEventType.REQUEST_STARTED */, {\n                    requestIndex: context.requestIndex,\n                    url: context.url,\n                });\n                break;\n            case 'complete':\n                tracer.clearTracingIfNeeded(context);\n                lifeCycle.notify(8 /* LifeCycleEventType.REQUEST_COMPLETED */, {\n                    duration: context.duration,\n                    method: context.method,\n                    requestIndex: context.requestIndex,\n                    spanId: context.spanId,\n                    startClocks: context.startClocks,\n                    status: context.status,\n                    traceId: context.traceId,\n                    traceSampled: context.traceSampled,\n                    type: \"xhr\" /* RequestType.XHR */,\n                    url: context.url,\n                    xhr: context.xhr,\n                    isAborted: context.isAborted,\n                    handlingStack: context.handlingStack,\n                });\n                break;\n        }\n    });\n    return { stop: function () { return subscription.unsubscribe(); } };\n}\nexport function trackFetch(lifeCycle, tracer) {\n    var subscription = initFetchObservable().subscribe(function (rawContext) {\n        var context = rawContext;\n        if (!isAllowedRequestUrl(context.url)) {\n            return;\n        }\n        switch (context.state) {\n            case 'start':\n                tracer.traceFetch(context);\n                context.requestIndex = getNextRequestIndex();\n                lifeCycle.notify(7 /* LifeCycleEventType.REQUEST_STARTED */, {\n                    requestIndex: context.requestIndex,\n                    url: context.url,\n                });\n                break;\n            case 'resolve':\n                waitForResponseToComplete(context, function (duration) {\n                    tracer.clearTracingIfNeeded(context);\n                    lifeCycle.notify(8 /* LifeCycleEventType.REQUEST_COMPLETED */, {\n                        duration: duration,\n                        method: context.method,\n                        requestIndex: context.requestIndex,\n                        responseType: context.responseType,\n                        spanId: context.spanId,\n                        startClocks: context.startClocks,\n                        status: context.status,\n                        traceId: context.traceId,\n                        traceSampled: context.traceSampled,\n                        type: \"fetch\" /* RequestType.FETCH */,\n                        url: context.url,\n                        response: context.response,\n                        init: context.init,\n                        input: context.input,\n                        isAborted: context.isAborted,\n                        handlingStack: context.handlingStack,\n                    });\n                });\n                break;\n        }\n    });\n    return { stop: function () { return subscription.unsubscribe(); } };\n}\nfunction getNextRequestIndex() {\n    var result = nextRequestIndex;\n    nextRequestIndex += 1;\n    return result;\n}\nfunction waitForResponseToComplete(context, callback) {\n    var clonedResponse = context.response && tryToClone(context.response);\n    if (!clonedResponse || !clonedResponse.body) {\n        // do not try to wait for the response if the clone failed, fetch error or null body\n        callback(elapsed(context.startClocks.timeStamp, timeStampNow()));\n    }\n    else {\n        readBytesFromStream(clonedResponse.body, function () {\n            callback(elapsed(context.startClocks.timeStamp, timeStampNow()));\n        }, {\n            bytesLimit: Number.POSITIVE_INFINITY,\n            collectStreamBody: false,\n        });\n    }\n}\n//# sourceMappingURL=requestCollection.js.map","import { isNumber } from '@datadog/browser-core';\nexport function discardNegativeDuration(duration) {\n    return isNumber(duration) && duration < 0 ? undefined : duration;\n}\n//# sourceMappingURL=discardNegativeDuration.js.map","import { noop } from '@datadog/browser-core';\nexport function trackEventCounts(_a) {\n    var lifeCycle = _a.lifeCycle, isChildEvent = _a.isChildEvent, _b = _a.onChange, callback = _b === void 0 ? noop : _b;\n    var eventCounts = {\n        errorCount: 0,\n        longTaskCount: 0,\n        resourceCount: 0,\n        actionCount: 0,\n        frustrationCount: 0,\n    };\n    var subscription = lifeCycle.subscribe(13 /* LifeCycleEventType.RUM_EVENT_COLLECTED */, function (event) {\n        var _a;\n        if (event.type === 'view' || event.type === 'vital' || !isChildEvent(event)) {\n            return;\n        }\n        switch (event.type) {\n            case \"error\" /* RumEventType.ERROR */:\n                eventCounts.errorCount += 1;\n                callback();\n                break;\n            case \"action\" /* RumEventType.ACTION */:\n                eventCounts.actionCount += 1;\n                if (event.action.frustration) {\n                    eventCounts.frustrationCount += event.action.frustration.type.length;\n                }\n                callback();\n                break;\n            case \"long_task\" /* RumEventType.LONG_TASK */:\n                eventCounts.longTaskCount += 1;\n                callback();\n                break;\n            case \"resource\" /* RumEventType.RESOURCE */:\n                if (!((_a = event._dd) === null || _a === void 0 ? void 0 : _a.discarded)) {\n                    eventCounts.resourceCount += 1;\n                    callback();\n                }\n                break;\n        }\n    });\n    return {\n        stop: function () {\n            subscription.unsubscribe();\n        },\n        eventCounts: eventCounts,\n    };\n}\n//# sourceMappingURL=trackEventCounts.js.map","import { addEventListeners, dateNow, relativeNow } from '@datadog/browser-core';\n/**\n * first-input timing entry polyfill based on\n * https://github.com/GoogleChrome/web-vitals/blob/master/src/lib/polyfills/firstInputPolyfill.ts\n */\nexport function retrieveFirstInputTiming(configuration, callback) {\n    var startTimeStamp = dateNow();\n    var timingSent = false;\n    var removeEventListeners = addEventListeners(configuration, window, [\"click\" /* DOM_EVENT.CLICK */, \"mousedown\" /* DOM_EVENT.MOUSE_DOWN */, \"keydown\" /* DOM_EVENT.KEY_DOWN */, \"touchstart\" /* DOM_EVENT.TOUCH_START */, \"pointerdown\" /* DOM_EVENT.POINTER_DOWN */], function (evt) {\n        // Only count cancelable events, which should trigger behavior important to the user.\n        if (!evt.cancelable) {\n            return;\n        }\n        // This timing will be used to compute the \"first Input delay\", which is the delta between\n        // when the system received the event (e.g. evt.timeStamp) and when it could run the callback\n        // (e.g. performance.now()).\n        var timing = {\n            entryType: 'first-input',\n            processingStart: relativeNow(),\n            processingEnd: relativeNow(),\n            startTime: evt.timeStamp,\n            duration: 0, // arbitrary value to avoid nullable duration and simplify INP logic\n            name: '',\n            cancelable: false,\n            target: null,\n            toJSON: function () { return ({}); },\n        };\n        if (evt.type === \"pointerdown\" /* DOM_EVENT.POINTER_DOWN */) {\n            sendTimingIfPointerIsNotCancelled(configuration, timing);\n        }\n        else {\n            sendTiming(timing);\n        }\n    }, { passive: true, capture: true }).stop;\n    return { stop: removeEventListeners };\n    /**\n     * Pointer events are a special case, because they can trigger main or compositor thread behavior.\n     * We differentiate these cases based on whether or not we see a pointercancel event, which are\n     * fired when we scroll. If we're scrolling we don't need to report input delay since FID excludes\n     * scrolling and pinch/zooming.\n     */\n    function sendTimingIfPointerIsNotCancelled(configuration, timing) {\n        addEventListeners(configuration, window, [\"pointerup\" /* DOM_EVENT.POINTER_UP */, \"pointercancel\" /* DOM_EVENT.POINTER_CANCEL */], function (event) {\n            if (event.type === \"pointerup\" /* DOM_EVENT.POINTER_UP */) {\n                sendTiming(timing);\n            }\n        }, { once: true });\n    }\n    function sendTiming(timing) {\n        if (!timingSent) {\n            timingSent = true;\n            removeEventListeners();\n            // In some cases the recorded delay is clearly wrong, e.g. it's negative or it's larger than\n            // the time between now and when the page was loaded.\n            // - https://github.com/GoogleChromeLabs/first-input-delay/issues/4\n            // - https://github.com/GoogleChromeLabs/first-input-delay/issues/6\n            // - https://github.com/GoogleChromeLabs/first-input-delay/issues/7\n            var delay = timing.processingStart - timing.startTime;\n            if (delay >= 0 && delay < dateNow() - startTimeStamp) {\n                callback(timing);\n            }\n        }\n    }\n}\n//# sourceMappingURL=firstInputPolyfill.js.map","import { matchList, monitor, Observable, timeStampNow, setTimeout, clearTimeout } from '@datadog/browser-core';\nimport { createPerformanceObservable, RumPerformanceEntryType } from '../browser/performanceObservable';\n// Delay to wait for a page activity to validate the tracking process\nexport var PAGE_ACTIVITY_VALIDATION_DELAY = 100;\n// Delay to wait after a page activity to end the tracking process\nexport var PAGE_ACTIVITY_END_DELAY = 100;\n/**\n * Wait for the page activity end\n *\n * Detection lifecycle:\n * ```\n *                        Wait page activity end\n *              .-------------------'--------------------.\n *              v                                        v\n *     [Wait for a page activity ]          [Wait for a maximum duration]\n *     [timeout: VALIDATION_DELAY]          [  timeout: maxDuration     ]\n *          /                  \\                           |\n *         v                    v                          |\n *  [No page activity]   [Page activity]                   |\n *         |                   |,----------------------.   |\n *         v                   v                       |   |\n *     (Discard)     [Wait for a page activity]        |   |\n *                   [   timeout: END_DELAY   ]        |   |\n *                       /                \\            |   |\n *                      v                  v           |   |\n *             [No page activity]    [Page activity]   |   |\n *                      |                 |            |   |\n *                      |                 '------------'   |\n *                      '-----------. ,--------------------'\n *                                   v\n *                                 (End)\n * ```\n *\n * Note: by assuming that maxDuration is greater than VALIDATION_DELAY, we are sure that if the\n * process is still alive after maxDuration, it has been validated.\n */\nexport function waitPageActivityEnd(lifeCycle, domMutationObservable, windowOpenObservable, configuration, pageActivityEndCallback, maxDuration) {\n    var pageActivityObservable = createPageActivityObservable(lifeCycle, domMutationObservable, windowOpenObservable, configuration);\n    return doWaitPageActivityEnd(pageActivityObservable, pageActivityEndCallback, maxDuration);\n}\nexport function doWaitPageActivityEnd(pageActivityObservable, pageActivityEndCallback, maxDuration) {\n    var pageActivityEndTimeoutId;\n    var hasCompleted = false;\n    var validationTimeoutId = setTimeout(monitor(function () { return complete({ hadActivity: false }); }), PAGE_ACTIVITY_VALIDATION_DELAY);\n    var maxDurationTimeoutId = maxDuration !== undefined\n        ? setTimeout(monitor(function () { return complete({ hadActivity: true, end: timeStampNow() }); }), maxDuration)\n        : undefined;\n    var pageActivitySubscription = pageActivityObservable.subscribe(function (_a) {\n        var isBusy = _a.isBusy;\n        clearTimeout(validationTimeoutId);\n        clearTimeout(pageActivityEndTimeoutId);\n        var lastChangeTime = timeStampNow();\n        if (!isBusy) {\n            pageActivityEndTimeoutId = setTimeout(monitor(function () { return complete({ hadActivity: true, end: lastChangeTime }); }), PAGE_ACTIVITY_END_DELAY);\n        }\n    });\n    var stop = function () {\n        hasCompleted = true;\n        clearTimeout(validationTimeoutId);\n        clearTimeout(pageActivityEndTimeoutId);\n        clearTimeout(maxDurationTimeoutId);\n        pageActivitySubscription.unsubscribe();\n    };\n    function complete(event) {\n        if (hasCompleted) {\n            return;\n        }\n        stop();\n        pageActivityEndCallback(event);\n    }\n    return { stop: stop };\n}\nexport function createPageActivityObservable(lifeCycle, domMutationObservable, windowOpenObservable, configuration) {\n    return new Observable(function (observable) {\n        var subscriptions = [];\n        var firstRequestIndex;\n        var pendingRequestsCount = 0;\n        subscriptions.push(domMutationObservable.subscribe(notifyPageActivity), windowOpenObservable.subscribe(notifyPageActivity), createPerformanceObservable(configuration, { type: RumPerformanceEntryType.RESOURCE }).subscribe(function (entries) {\n            if (entries.some(function (entry) { return !isExcludedUrl(configuration, entry.name); })) {\n                notifyPageActivity();\n            }\n        }), lifeCycle.subscribe(7 /* LifeCycleEventType.REQUEST_STARTED */, function (startEvent) {\n            if (isExcludedUrl(configuration, startEvent.url)) {\n                return;\n            }\n            if (firstRequestIndex === undefined) {\n                firstRequestIndex = startEvent.requestIndex;\n            }\n            pendingRequestsCount += 1;\n            notifyPageActivity();\n        }), lifeCycle.subscribe(8 /* LifeCycleEventType.REQUEST_COMPLETED */, function (request) {\n            if (isExcludedUrl(configuration, request.url) ||\n                firstRequestIndex === undefined ||\n                // If the request started before the tracking start, ignore it\n                request.requestIndex < firstRequestIndex) {\n                return;\n            }\n            pendingRequestsCount -= 1;\n            notifyPageActivity();\n        }));\n        return function () {\n            subscriptions.forEach(function (s) { return s.unsubscribe(); });\n        };\n        function notifyPageActivity() {\n            observable.notify({ isBusy: pendingRequestsCount > 0 });\n        }\n    });\n}\nfunction isExcludedUrl(configuration, requestUrl) {\n    return matchList(configuration.excludedActivityUrls, requestUrl);\n}\n//# sourceMappingURL=waitPageActivityEnd.js.map","// https://github.com/jquery/jquery/blob/a684e6ba836f7c553968d7d026ed7941e1a612d8/src/selector/escapeSelector.js\nexport function cssEscape(str) {\n    if (window.CSS && window.CSS.escape) {\n        return window.CSS.escape(str);\n    }\n    // eslint-disable-next-line no-control-regex\n    return str.replace(/([\\0-\\x1f\\x7f]|^-?\\d)|^-$|[^\\x80-\\uFFFF\\w-]/g, function (ch, asCodePoint) {\n        if (asCodePoint) {\n            // U+0000 NULL becomes U+FFFD REPLACEMENT CHARACTER\n            if (ch === '\\0') {\n                return '\\uFFFD';\n            }\n            // Control characters and (dependent upon position) numbers get escaped as code points\n            return \"\".concat(ch.slice(0, -1), \"\\\\\").concat(ch.charCodeAt(ch.length - 1).toString(16), \" \");\n        }\n        // Other potentially-special ASCII characters get backslash-escaped\n        return \"\\\\\".concat(ch);\n    });\n}\nexport function elementMatches(element, selector) {\n    if (element.matches) {\n        return element.matches(selector);\n    }\n    // IE11 support\n    if (element.msMatchesSelector) {\n        return element.msMatchesSelector(selector);\n    }\n    return false;\n}\n/**\n * Return the parentElement of an node\n *\n * In cases where parentElement is not supported, such as in IE11 for SVG nodes, we fallback to parentNode\n */\nexport function getParentElement(node) {\n    if (node.parentElement) {\n        return node.parentElement;\n    }\n    while (node.parentNode) {\n        if (node.parentNode.nodeType === Node.ELEMENT_NODE) {\n            return node.parentNode;\n        }\n        node = node.parentNode;\n    }\n    return null;\n}\n/**\n * Return the classList of an element or an array of classes if classList is not supported\n *\n * In cases where classList is not supported, such as in IE11 for SVG and MathML elements,\n * we fallback to using element.getAttribute('class').\n * We opt for element.getAttribute('class') over element.className because className returns an SVGAnimatedString for SVG elements.\n */\nexport function getClassList(element) {\n    if (element.classList) {\n        return element.classList;\n    }\n    var classes = (element.getAttribute('class') || '').trim();\n    return classes ? classes.split(/\\s+/) : [];\n}\n// ie11 supports WeakMap but not WeakSet\nvar PLACEHOLDER = 1;\n// eslint-disable-next-line no-restricted-syntax\nvar WeakSet = /** @class */ (function () {\n    function WeakSet(initialValues) {\n        var _this = this;\n        this.map = new WeakMap();\n        if (initialValues) {\n            initialValues.forEach(function (value) { return _this.map.set(value, PLACEHOLDER); });\n        }\n    }\n    WeakSet.prototype.add = function (value) {\n        this.map.set(value, PLACEHOLDER);\n        return this;\n    };\n    WeakSet.prototype.delete = function (value) {\n        return this.map.delete(value);\n    };\n    WeakSet.prototype.has = function (value) {\n        return this.map.has(value);\n    };\n    return WeakSet;\n}());\nexport { WeakSet };\n//# sourceMappingURL=polyfills.js.map","export function isTextNode(node) {\n    return node.nodeType === Node.TEXT_NODE;\n}\nexport function isCommentNode(node) {\n    return node.nodeType === Node.COMMENT_NODE;\n}\nexport function isElementNode(node) {\n    return node.nodeType === Node.ELEMENT_NODE;\n}\nexport function isNodeShadowHost(node) {\n    return isElementNode(node) && Boolean(node.shadowRoot);\n}\nexport function isNodeShadowRoot(node) {\n    var shadowRoot = node;\n    return !!shadowRoot.host && shadowRoot.nodeType === Node.DOCUMENT_FRAGMENT_NODE && isElementNode(shadowRoot.host);\n}\nexport function hasChildNodes(node) {\n    return node.childNodes.length > 0 || isNodeShadowHost(node);\n}\nexport function forEachChildNodes(node, callback) {\n    var child = node.firstChild;\n    while (child) {\n        callback(child);\n        child = child.nextSibling;\n    }\n    if (isNodeShadowHost(node)) {\n        callback(node.shadowRoot);\n    }\n}\n/**\n * Return `host` in case if the current node is a shadow root otherwise will return the `parentNode`\n */\nexport function getParentNode(node) {\n    return isNodeShadowRoot(node) ? node.host : node.parentNode;\n}\n//# sourceMappingURL=htmlDomUtils.js.map","import { DefaultPrivacyLevel } from '@datadog/browser-core';\nimport { isElementNode, getParentNode, isTextNode } from '../browser/htmlDomUtils';\nimport { elementMatches } from '../browser/polyfills';\nexport var NodePrivacyLevel = {\n    IGNORE: 'ignore',\n    HIDDEN: 'hidden',\n    ALLOW: DefaultPrivacyLevel.ALLOW,\n    MASK: DefaultPrivacyLevel.MASK,\n    MASK_USER_INPUT: DefaultPrivacyLevel.MASK_USER_INPUT,\n};\nexport var PRIVACY_ATTR_NAME = 'data-dd-privacy';\n// Privacy Attrs\nexport var PRIVACY_ATTR_VALUE_ALLOW = 'allow';\nexport var PRIVACY_ATTR_VALUE_MASK = 'mask';\nexport var PRIVACY_ATTR_VALUE_MASK_USER_INPUT = 'mask-user-input';\nexport var PRIVACY_ATTR_VALUE_HIDDEN = 'hidden';\n// Privacy Classes - not all customers can set plain HTML attributes, so support classes too\nexport var PRIVACY_CLASS_PREFIX = 'dd-privacy-';\n// Private Replacement Templates\nexport var CENSORED_STRING_MARK = '***';\nexport var CENSORED_IMG_MARK = 'data:image/gif;base64,R0lGODlhAQABAIAAAMLCwgAAACH5BAAAAAAALAAAAAABAAEAAAICRAEAOw==';\nexport var FORM_PRIVATE_TAG_NAMES = {\n    INPUT: true,\n    OUTPUT: true,\n    TEXTAREA: true,\n    SELECT: true,\n    OPTION: true,\n    DATALIST: true,\n    OPTGROUP: true,\n};\nvar TEXT_MASKING_CHAR = 'x';\n/**\n * Get node privacy level by iterating over its ancestors. When the direct parent privacy level is\n * know, it is best to use something like:\n *\n * derivePrivacyLevelGivenParent(getNodeSelfPrivacyLevel(node), parentNodePrivacyLevel)\n */\nexport function getNodePrivacyLevel(node, defaultPrivacyLevel, cache) {\n    if (cache && cache.has(node)) {\n        return cache.get(node);\n    }\n    var parentNode = getParentNode(node);\n    var parentNodePrivacyLevel = parentNode\n        ? getNodePrivacyLevel(parentNode, defaultPrivacyLevel, cache)\n        : defaultPrivacyLevel;\n    var selfNodePrivacyLevel = getNodeSelfPrivacyLevel(node);\n    var nodePrivacyLevel = reducePrivacyLevel(selfNodePrivacyLevel, parentNodePrivacyLevel);\n    if (cache) {\n        cache.set(node, nodePrivacyLevel);\n    }\n    return nodePrivacyLevel;\n}\n/**\n * Reduces the next privacy level based on self + parent privacy levels\n */\nexport function reducePrivacyLevel(childPrivacyLevel, parentNodePrivacyLevel) {\n    switch (parentNodePrivacyLevel) {\n        // These values cannot be overridden\n        case NodePrivacyLevel.HIDDEN:\n        case NodePrivacyLevel.IGNORE:\n            return parentNodePrivacyLevel;\n    }\n    switch (childPrivacyLevel) {\n        case NodePrivacyLevel.ALLOW:\n        case NodePrivacyLevel.MASK:\n        case NodePrivacyLevel.MASK_USER_INPUT:\n        case NodePrivacyLevel.HIDDEN:\n        case NodePrivacyLevel.IGNORE:\n            return childPrivacyLevel;\n        default:\n            return parentNodePrivacyLevel;\n    }\n}\n/**\n * Determines the node's own privacy level without checking for ancestors.\n */\nexport function getNodeSelfPrivacyLevel(node) {\n    // Only Element types can have a privacy level set\n    if (!isElementNode(node)) {\n        return;\n    }\n    // Overrules for replay purpose\n    if (node.tagName === 'BASE') {\n        return NodePrivacyLevel.ALLOW;\n    }\n    // Overrules to enforce end-user protection\n    if (node.tagName === 'INPUT') {\n        var inputElement = node;\n        if (inputElement.type === 'password' || inputElement.type === 'email' || inputElement.type === 'tel') {\n            return NodePrivacyLevel.MASK;\n        }\n        if (inputElement.type === 'hidden') {\n            return NodePrivacyLevel.MASK;\n        }\n        var autocomplete = inputElement.getAttribute('autocomplete');\n        // Handle input[autocomplete=cc-number/cc-csc/cc-exp/cc-exp-month/cc-exp-year/new-password/current-password]\n        if (autocomplete && (autocomplete.startsWith('cc-') || autocomplete.endsWith('-password'))) {\n            return NodePrivacyLevel.MASK;\n        }\n    }\n    // Check HTML privacy attributes and classes\n    if (elementMatches(node, getPrivacySelector(NodePrivacyLevel.HIDDEN))) {\n        return NodePrivacyLevel.HIDDEN;\n    }\n    if (elementMatches(node, getPrivacySelector(NodePrivacyLevel.MASK))) {\n        return NodePrivacyLevel.MASK;\n    }\n    if (elementMatches(node, getPrivacySelector(NodePrivacyLevel.MASK_USER_INPUT))) {\n        return NodePrivacyLevel.MASK_USER_INPUT;\n    }\n    if (elementMatches(node, getPrivacySelector(NodePrivacyLevel.ALLOW))) {\n        return NodePrivacyLevel.ALLOW;\n    }\n    if (shouldIgnoreElement(node)) {\n        return NodePrivacyLevel.IGNORE;\n    }\n}\n/**\n * Helper aiming to unify `mask` and `mask-user-input` privacy levels:\n *\n * In the `mask` case, it is trivial: we should mask the element.\n *\n * In the `mask-user-input` case, we should mask the element only if it is a \"form\" element or the\n * direct parent is a form element for text nodes).\n *\n * Other `shouldMaskNode` cases are edge cases that should not matter too much (ex: should we mask a\n * node if it is ignored or hidden? it doesn't matter since it won't be serialized).\n */\nexport function shouldMaskNode(node, privacyLevel) {\n    switch (privacyLevel) {\n        case NodePrivacyLevel.MASK:\n        case NodePrivacyLevel.HIDDEN:\n        case NodePrivacyLevel.IGNORE:\n            return true;\n        case NodePrivacyLevel.MASK_USER_INPUT:\n            return isTextNode(node) ? isFormElement(node.parentNode) : isFormElement(node);\n        default:\n            return false;\n    }\n}\nfunction isFormElement(node) {\n    if (!node || node.nodeType !== node.ELEMENT_NODE) {\n        return false;\n    }\n    var element = node;\n    if (element.tagName === 'INPUT') {\n        switch (element.type) {\n            case 'button':\n            case 'color':\n            case 'reset':\n            case 'submit':\n                return false;\n        }\n    }\n    return !!FORM_PRIVATE_TAG_NAMES[element.tagName];\n}\n/**\n * Text censoring non-destructively maintains whitespace characters in order to preserve text shape\n * during replay.\n */\nexport var censorText = function (text) { return text.replace(/\\S/g, TEXT_MASKING_CHAR); };\nexport function getTextContent(textNode, ignoreWhiteSpace, parentNodePrivacyLevel) {\n    var _a;\n    // The parent node may not be a html element which has a tagName attribute.\n    // So just let it be undefined which is ok in this use case.\n    var parentTagName = (_a = textNode.parentElement) === null || _a === void 0 ? void 0 : _a.tagName;\n    var textContent = textNode.textContent || '';\n    if (ignoreWhiteSpace && !textContent.trim()) {\n        return;\n    }\n    var nodePrivacyLevel = parentNodePrivacyLevel;\n    var isScript = parentTagName === 'SCRIPT';\n    if (isScript) {\n        // For perf reasons, we don't record script (heuristic)\n        textContent = CENSORED_STRING_MARK;\n    }\n    else if (nodePrivacyLevel === NodePrivacyLevel.HIDDEN) {\n        // Should never occur, but just in case, we set to CENSORED_MARK.\n        textContent = CENSORED_STRING_MARK;\n    }\n    else if (shouldMaskNode(textNode, nodePrivacyLevel)) {\n        if (\n        // Scrambling the child list breaks text nodes for DATALIST/SELECT/OPTGROUP\n        parentTagName === 'DATALIST' ||\n            parentTagName === 'SELECT' ||\n            parentTagName === 'OPTGROUP') {\n            if (!textContent.trim()) {\n                return;\n            }\n        }\n        else if (parentTagName === 'OPTION') {\n            // <Option> has low entropy in charset + text length, so use `CENSORED_STRING_MARK` when masked\n            textContent = CENSORED_STRING_MARK;\n        }\n        else {\n            textContent = censorText(textContent);\n        }\n    }\n    return textContent;\n}\n/**\n * TODO: Preserve CSS element order, and record the presence of the tag, just don't render\n * We don't need this logic on the recorder side.\n * For security related meta's, customer can mask themmanually given they\n * are easy to identify in the HEAD tag.\n */\nexport function shouldIgnoreElement(element) {\n    if (element.nodeName === 'SCRIPT') {\n        return true;\n    }\n    if (element.nodeName === 'LINK') {\n        var relAttribute = getLowerCaseAttribute('rel');\n        return (\n        // Link as script - Ignore only when rel=preload, modulepreload or prefetch\n        (/preload|prefetch/i.test(relAttribute) && getLowerCaseAttribute('as') === 'script') ||\n            // Favicons\n            relAttribute === 'shortcut icon' ||\n            relAttribute === 'icon');\n    }\n    if (element.nodeName === 'META') {\n        var nameAttribute = getLowerCaseAttribute('name');\n        var relAttribute = getLowerCaseAttribute('rel');\n        var propertyAttribute = getLowerCaseAttribute('property');\n        return (\n        // Favicons\n        /^msapplication-tile(image|color)$/.test(nameAttribute) ||\n            nameAttribute === 'application-name' ||\n            relAttribute === 'icon' ||\n            relAttribute === 'apple-touch-icon' ||\n            relAttribute === 'shortcut icon' ||\n            // Description\n            nameAttribute === 'keywords' ||\n            nameAttribute === 'description' ||\n            // Social\n            /^(og|twitter|fb):/.test(propertyAttribute) ||\n            /^(og|twitter):/.test(nameAttribute) ||\n            nameAttribute === 'pinterest' ||\n            // Robots\n            nameAttribute === 'robots' ||\n            nameAttribute === 'googlebot' ||\n            nameAttribute === 'bingbot' ||\n            // Http headers. Ex: X-UA-Compatible, Content-Type, Content-Language, cache-control,\n            // X-Translated-By\n            element.hasAttribute('http-equiv') ||\n            // Authorship\n            nameAttribute === 'author' ||\n            nameAttribute === 'generator' ||\n            nameAttribute === 'framework' ||\n            nameAttribute === 'publisher' ||\n            nameAttribute === 'progid' ||\n            /^article:/.test(propertyAttribute) ||\n            /^product:/.test(propertyAttribute) ||\n            // Verification\n            nameAttribute === 'google-site-verification' ||\n            nameAttribute === 'yandex-verification' ||\n            nameAttribute === 'csrf-token' ||\n            nameAttribute === 'p:domain_verify' ||\n            nameAttribute === 'verify-v1' ||\n            nameAttribute === 'verification' ||\n            nameAttribute === 'shopify-checkout-api-token');\n    }\n    function getLowerCaseAttribute(name) {\n        return (element.getAttribute(name) || '').toLowerCase();\n    }\n    return false;\n}\nexport function getPrivacySelector(privacyLevel) {\n    return \"[\".concat(PRIVACY_ATTR_NAME, \"=\\\"\").concat(privacyLevel, \"\\\"], .\").concat(PRIVACY_CLASS_PREFIX).concat(privacyLevel);\n}\n//# sourceMappingURL=privacy.js.map","import { addEventListener } from '@datadog/browser-core';\nexport function listenActionEvents(configuration, _a) {\n    var onPointerDown = _a.onPointerDown, onPointerUp = _a.onPointerUp;\n    var selectionEmptyAtPointerDown;\n    var userActivity = {\n        selection: false,\n        input: false,\n        scroll: false,\n    };\n    var clickContext;\n    var listeners = [\n        addEventListener(configuration, window, \"pointerdown\" /* DOM_EVENT.POINTER_DOWN */, function (event) {\n            if (isValidPointerEvent(event)) {\n                selectionEmptyAtPointerDown = isSelectionEmpty();\n                userActivity = {\n                    selection: false,\n                    input: false,\n                    scroll: false,\n                };\n                clickContext = onPointerDown(event);\n            }\n        }, { capture: true }),\n        addEventListener(configuration, window, \"selectionchange\" /* DOM_EVENT.SELECTION_CHANGE */, function () {\n            if (!selectionEmptyAtPointerDown || !isSelectionEmpty()) {\n                userActivity.selection = true;\n            }\n        }, { capture: true }),\n        addEventListener(configuration, window, \"scroll\" /* DOM_EVENT.SCROLL */, function () {\n            userActivity.scroll = true;\n        }, { capture: true, passive: true }),\n        addEventListener(configuration, window, \"pointerup\" /* DOM_EVENT.POINTER_UP */, function (event) {\n            if (isValidPointerEvent(event) && clickContext) {\n                // Use a scoped variable to make sure the value is not changed by other clicks\n                var localUserActivity_1 = userActivity;\n                onPointerUp(clickContext, event, function () { return localUserActivity_1; });\n                clickContext = undefined;\n            }\n        }, { capture: true }),\n        addEventListener(configuration, window, \"input\" /* DOM_EVENT.INPUT */, function () {\n            userActivity.input = true;\n        }, { capture: true }),\n    ];\n    return {\n        stop: function () {\n            listeners.forEach(function (listener) { return listener.stop(); });\n        },\n    };\n}\nfunction isSelectionEmpty() {\n    var selection = window.getSelection();\n    return !selection || selection.isCollapsed;\n}\nfunction isValidPointerEvent(event) {\n    return (event.target instanceof Element &&\n        // Only consider 'primary' pointer events for now. Multi-touch support could be implemented in\n        // the future.\n        event.isPrimary !== false);\n}\n//# sourceMappingURL=listenActionEvents.js.map","import { ONE_SECOND } from '@datadog/browser-core';\nimport { elementMatches } from '../../browser/polyfills';\nvar MIN_CLICKS_PER_SECOND_TO_CONSIDER_RAGE = 3;\nexport function computeFrustration(clicks, rageClick) {\n    if (isRage(clicks)) {\n        rageClick.addFrustration(\"rage_click\" /* FrustrationType.RAGE_CLICK */);\n        if (clicks.some(isDead)) {\n            rageClick.addFrustration(\"dead_click\" /* FrustrationType.DEAD_CLICK */);\n        }\n        if (rageClick.hasError) {\n            rageClick.addFrustration(\"error_click\" /* FrustrationType.ERROR_CLICK */);\n        }\n        return { isRage: true };\n    }\n    var hasSelectionChanged = clicks.some(function (click) { return click.getUserActivity().selection; });\n    clicks.forEach(function (click) {\n        if (click.hasError) {\n            click.addFrustration(\"error_click\" /* FrustrationType.ERROR_CLICK */);\n        }\n        if (isDead(click) &&\n            // Avoid considering clicks part of a double-click or triple-click selections as dead clicks\n            !hasSelectionChanged) {\n            click.addFrustration(\"dead_click\" /* FrustrationType.DEAD_CLICK */);\n        }\n    });\n    return { isRage: false };\n}\nexport function isRage(clicks) {\n    if (clicks.some(function (click) { return click.getUserActivity().selection || click.getUserActivity().scroll; })) {\n        return false;\n    }\n    for (var i = 0; i < clicks.length - (MIN_CLICKS_PER_SECOND_TO_CONSIDER_RAGE - 1); i += 1) {\n        if (clicks[i + MIN_CLICKS_PER_SECOND_TO_CONSIDER_RAGE - 1].event.timeStamp - clicks[i].event.timeStamp <=\n            ONE_SECOND) {\n            return true;\n        }\n    }\n    return false;\n}\nvar DEAD_CLICK_EXCLUDE_SELECTOR = \n// inputs that don't trigger a meaningful event like \"input\" when clicked, including textual\n// inputs (using a negative selector is shorter here)\n'input:not([type=\"checkbox\"]):not([type=\"radio\"]):not([type=\"button\"]):not([type=\"submit\"]):not([type=\"reset\"]):not([type=\"range\"]),' +\n    'textarea,' +\n    'select,' +\n    // contenteditable and their descendants don't always trigger meaningful changes when manipulated\n    '[contenteditable],' +\n    '[contenteditable] *,' +\n    // canvas, as there is no good way to detect activity occurring on them\n    'canvas,' +\n    // links that are interactive (have an href attribute) or any of their descendants, as they can\n    // open a new tab or navigate to a hash without triggering a meaningful event\n    'a[href],' +\n    'a[href] *';\nexport function isDead(click) {\n    if (click.hasPageActivity || click.getUserActivity().input || click.getUserActivity().scroll) {\n        return false;\n    }\n    return !elementMatches(click.event.target, DEAD_CLICK_EXCLUDE_SELECTOR);\n}\n//# sourceMappingURL=computeFrustration.js.map","import { elapsed, ONE_SECOND, relativeNow } from '@datadog/browser-core';\n// Maximum duration for click actions\nexport var CLICK_ACTION_MAX_DURATION = 10 * ONE_SECOND;\nexport var interactionSelectorCache = new Map();\nexport function getInteractionSelector(relativeTimestamp) {\n    var selector = interactionSelectorCache.get(relativeTimestamp);\n    interactionSelectorCache.delete(relativeTimestamp);\n    return selector;\n}\nexport function updateInteractionSelector(relativeTimestamp, selector) {\n    interactionSelectorCache.set(relativeTimestamp, selector);\n    interactionSelectorCache.forEach(function (_, relativeTimestamp) {\n        if (elapsed(relativeTimestamp, relativeNow()) > CLICK_ACTION_MAX_DURATION) {\n            interactionSelectorCache.delete(relativeTimestamp);\n        }\n    });\n}\n//# sourceMappingURL=interactionSelectorCache.js.map","import { includes, timeStampNow, Observable, assign, getRelativeTime, ONE_MINUTE, generateUUID, clocksNow, elapsed, createValueHistory, } from '@datadog/browser-core';\nimport { trackEventCounts } from '../trackEventCounts';\nimport { PAGE_ACTIVITY_VALIDATION_DELAY, waitPageActivityEnd } from '../waitPageActivityEnd';\nimport { getSelectorFromElement } from '../getSelectorFromElement';\nimport { getNodePrivacyLevel, NodePrivacyLevel } from '../privacy';\nimport { createClickChain } from './clickChain';\nimport { getActionNameFromElement } from './getActionNameFromElement';\nimport { listenActionEvents } from './listenActionEvents';\nimport { computeFrustration } from './computeFrustration';\nimport { CLICK_ACTION_MAX_DURATION, updateInteractionSelector } from './interactionSelectorCache';\nexport var ACTION_CONTEXT_TIME_OUT_DELAY = 5 * ONE_MINUTE; // arbitrary\nexport function trackClickActions(lifeCycle, domMutationObservable, windowOpenObservable, configuration) {\n    var history = createValueHistory({ expireDelay: ACTION_CONTEXT_TIME_OUT_DELAY });\n    var stopObservable = new Observable();\n    var currentClickChain;\n    lifeCycle.subscribe(10 /* LifeCycleEventType.SESSION_RENEWED */, function () {\n        history.reset();\n    });\n    lifeCycle.subscribe(5 /* LifeCycleEventType.VIEW_ENDED */, stopClickChain);\n    var stopActionEventsListener = listenActionEvents(configuration, {\n        onPointerDown: function (pointerDownEvent) {\n            return processPointerDown(configuration, lifeCycle, domMutationObservable, pointerDownEvent, windowOpenObservable);\n        },\n        onPointerUp: function (_a, startEvent, getUserActivity) {\n            var clickActionBase = _a.clickActionBase, hadActivityOnPointerDown = _a.hadActivityOnPointerDown;\n            startClickAction(configuration, lifeCycle, domMutationObservable, windowOpenObservable, history, stopObservable, appendClickToClickChain, clickActionBase, startEvent, getUserActivity, hadActivityOnPointerDown);\n        },\n    }).stop;\n    var actionContexts = {\n        findActionId: function (startTime) { return history.findAll(startTime); },\n    };\n    return {\n        stop: function () {\n            stopClickChain();\n            stopObservable.notify();\n            stopActionEventsListener();\n        },\n        actionContexts: actionContexts,\n    };\n    function appendClickToClickChain(click) {\n        if (!currentClickChain || !currentClickChain.tryAppend(click)) {\n            var rageClick_1 = click.clone();\n            currentClickChain = createClickChain(click, function (clicks) {\n                finalizeClicks(clicks, rageClick_1);\n            });\n        }\n    }\n    function stopClickChain() {\n        if (currentClickChain) {\n            currentClickChain.stop();\n        }\n    }\n}\nfunction processPointerDown(configuration, lifeCycle, domMutationObservable, pointerDownEvent, windowOpenObservable) {\n    var nodePrivacyLevel = configuration.enablePrivacyForActionName\n        ? getNodePrivacyLevel(pointerDownEvent.target, configuration.defaultPrivacyLevel)\n        : NodePrivacyLevel.ALLOW;\n    if (nodePrivacyLevel === NodePrivacyLevel.HIDDEN) {\n        return undefined;\n    }\n    var clickActionBase = computeClickActionBase(pointerDownEvent, nodePrivacyLevel, configuration);\n    var hadActivityOnPointerDown = false;\n    waitPageActivityEnd(lifeCycle, domMutationObservable, windowOpenObservable, configuration, function (pageActivityEndEvent) {\n        hadActivityOnPointerDown = pageActivityEndEvent.hadActivity;\n    }, \n    // We don't care about the activity duration, we just want to know whether an activity did happen\n    // within the \"validation delay\" or not. Limit the duration so the callback is called sooner.\n    PAGE_ACTIVITY_VALIDATION_DELAY);\n    return { clickActionBase: clickActionBase, hadActivityOnPointerDown: function () { return hadActivityOnPointerDown; } };\n}\nfunction startClickAction(configuration, lifeCycle, domMutationObservable, windowOpenObservable, history, stopObservable, appendClickToClickChain, clickActionBase, startEvent, getUserActivity, hadActivityOnPointerDown) {\n    var _a;\n    var click = newClick(lifeCycle, history, getUserActivity, clickActionBase, startEvent);\n    appendClickToClickChain(click);\n    var selector = (_a = clickActionBase === null || clickActionBase === void 0 ? void 0 : clickActionBase.target) === null || _a === void 0 ? void 0 : _a.selector;\n    if (selector) {\n        updateInteractionSelector(startEvent.timeStamp, selector);\n    }\n    var stopWaitPageActivityEnd = waitPageActivityEnd(lifeCycle, domMutationObservable, windowOpenObservable, configuration, function (pageActivityEndEvent) {\n        if (pageActivityEndEvent.hadActivity && pageActivityEndEvent.end < click.startClocks.timeStamp) {\n            // If the clock is looking weird, just discard the click\n            click.discard();\n        }\n        else {\n            if (pageActivityEndEvent.hadActivity) {\n                click.stop(pageActivityEndEvent.end);\n            }\n            else if (hadActivityOnPointerDown()) {\n                click.stop(\n                // using the click start as activity end, so the click will have some activity but its\n                // duration will be 0 (as the activity started before the click start)\n                click.startClocks.timeStamp);\n            }\n            else {\n                click.stop();\n            }\n        }\n    }, CLICK_ACTION_MAX_DURATION).stop;\n    var viewEndedSubscription = lifeCycle.subscribe(5 /* LifeCycleEventType.VIEW_ENDED */, function (_a) {\n        var endClocks = _a.endClocks;\n        click.stop(endClocks.timeStamp);\n    });\n    var stopSubscription = stopObservable.subscribe(function () {\n        click.stop();\n    });\n    click.stopObservable.subscribe(function () {\n        viewEndedSubscription.unsubscribe();\n        stopWaitPageActivityEnd();\n        stopSubscription.unsubscribe();\n    });\n}\nfunction computeClickActionBase(event, nodePrivacyLevel, configuration) {\n    var rect = event.target.getBoundingClientRect();\n    var selector = getSelectorFromElement(event.target, configuration.actionNameAttribute);\n    if (selector) {\n        updateInteractionSelector(event.timeStamp, selector);\n    }\n    var actionName = getActionNameFromElement(event.target, configuration, nodePrivacyLevel);\n    return {\n        type: \"click\" /* ActionType.CLICK */,\n        target: {\n            width: Math.round(rect.width),\n            height: Math.round(rect.height),\n            selector: selector,\n        },\n        position: {\n            // Use clientX and Y because for SVG element offsetX and Y are relatives to the <svg> element\n            x: Math.round(event.clientX - rect.left),\n            y: Math.round(event.clientY - rect.top),\n        },\n        name: actionName.name,\n        nameSource: actionName.nameSource,\n    };\n}\nfunction newClick(lifeCycle, history, getUserActivity, clickActionBase, startEvent) {\n    var id = generateUUID();\n    var startClocks = clocksNow();\n    var historyEntry = history.add(id, startClocks.relative);\n    var eventCountsSubscription = trackEventCounts({\n        lifeCycle: lifeCycle,\n        isChildEvent: function (event) {\n            return event.action !== undefined &&\n                (Array.isArray(event.action.id) ? includes(event.action.id, id) : event.action.id === id);\n        },\n    });\n    var status = 0 /* ClickStatus.ONGOING */;\n    var activityEndTime;\n    var frustrationTypes = [];\n    var stopObservable = new Observable();\n    function stop(newActivityEndTime) {\n        if (status !== 0 /* ClickStatus.ONGOING */) {\n            return;\n        }\n        activityEndTime = newActivityEndTime;\n        status = 1 /* ClickStatus.STOPPED */;\n        if (activityEndTime) {\n            historyEntry.close(getRelativeTime(activityEndTime));\n        }\n        else {\n            historyEntry.remove();\n        }\n        eventCountsSubscription.stop();\n        stopObservable.notify();\n    }\n    return {\n        event: startEvent,\n        stop: stop,\n        stopObservable: stopObservable,\n        get hasError() {\n            return eventCountsSubscription.eventCounts.errorCount > 0;\n        },\n        get hasPageActivity() {\n            return activityEndTime !== undefined;\n        },\n        getUserActivity: getUserActivity,\n        addFrustration: function (frustrationType) {\n            frustrationTypes.push(frustrationType);\n        },\n        startClocks: startClocks,\n        isStopped: function () { return status === 1 /* ClickStatus.STOPPED */ || status === 2 /* ClickStatus.FINALIZED */; },\n        clone: function () { return newClick(lifeCycle, history, getUserActivity, clickActionBase, startEvent); },\n        validate: function (domEvents) {\n            stop();\n            if (status !== 1 /* ClickStatus.STOPPED */) {\n                return;\n            }\n            var _a = eventCountsSubscription.eventCounts, resourceCount = _a.resourceCount, errorCount = _a.errorCount, longTaskCount = _a.longTaskCount;\n            var clickAction = assign({\n                type: \"click\" /* ActionType.CLICK */,\n                duration: activityEndTime && elapsed(startClocks.timeStamp, activityEndTime),\n                startClocks: startClocks,\n                id: id,\n                frustrationTypes: frustrationTypes,\n                counts: {\n                    resourceCount: resourceCount,\n                    errorCount: errorCount,\n                    longTaskCount: longTaskCount,\n                },\n                events: domEvents !== null && domEvents !== void 0 ? domEvents : [startEvent],\n                event: startEvent,\n            }, clickActionBase);\n            lifeCycle.notify(0 /* LifeCycleEventType.AUTO_ACTION_COMPLETED */, clickAction);\n            status = 2 /* ClickStatus.FINALIZED */;\n        },\n        discard: function () {\n            stop();\n            status = 2 /* ClickStatus.FINALIZED */;\n        },\n    };\n}\nexport function finalizeClicks(clicks, rageClick) {\n    var isRage = computeFrustration(clicks, rageClick).isRage;\n    if (isRage) {\n        clicks.forEach(function (click) { return click.discard(); });\n        rageClick.stop(timeStampNow());\n        rageClick.validate(clicks.map(function (click) { return click.event; }));\n    }\n    else {\n        rageClick.discard();\n        clicks.forEach(function (click) { return click.validate(); });\n    }\n}\n//# sourceMappingURL=trackClickActions.js.map","import { noop, assign, combine, toServerDuration, generateUUID, ExperimentalFeature, isExperimentalFeatureEnabled, } from '@datadog/browser-core';\nimport { discardNegativeDuration } from '../discardNegativeDuration';\nimport { trackClickActions } from './trackClickActions';\nexport function startActionCollection(lifeCycle, domMutationObservable, windowOpenObservable, configuration, pageStateHistory) {\n    var _a;\n    lifeCycle.subscribe(0 /* LifeCycleEventType.AUTO_ACTION_COMPLETED */, function (action) {\n        return lifeCycle.notify(12 /* LifeCycleEventType.RAW_RUM_EVENT_COLLECTED */, processAction(action, pageStateHistory));\n    });\n    var actionContexts = { findActionId: noop };\n    var stop = noop;\n    if (configuration.trackUserInteractions) {\n        ;\n        (_a = trackClickActions(lifeCycle, domMutationObservable, windowOpenObservable, configuration), actionContexts = _a.actionContexts, stop = _a.stop);\n    }\n    return {\n        addAction: function (action, savedCommonContext) {\n            lifeCycle.notify(12 /* LifeCycleEventType.RAW_RUM_EVENT_COLLECTED */, assign({\n                savedCommonContext: savedCommonContext,\n            }, processAction(action, pageStateHistory)));\n        },\n        actionContexts: actionContexts,\n        stop: stop,\n    };\n}\nfunction processAction(action, pageStateHistory) {\n    var autoActionProperties = isAutoAction(action)\n        ? {\n            action: {\n                id: action.id,\n                loading_time: discardNegativeDuration(toServerDuration(action.duration)),\n                frustration: {\n                    type: action.frustrationTypes,\n                },\n                error: {\n                    count: action.counts.errorCount,\n                },\n                long_task: {\n                    count: action.counts.longTaskCount,\n                },\n                resource: {\n                    count: action.counts.resourceCount,\n                },\n            },\n            _dd: {\n                action: {\n                    target: action.target,\n                    position: action.position,\n                    name_source: isExperimentalFeatureEnabled(ExperimentalFeature.ACTION_NAME_MASKING)\n                        ? action.nameSource\n                        : undefined,\n                },\n            },\n        }\n        : undefined;\n    var customerContext = !isAutoAction(action) ? action.context : undefined;\n    var actionEvent = combine({\n        action: {\n            id: generateUUID(),\n            target: {\n                name: action.name,\n            },\n            type: action.type,\n        },\n        date: action.startClocks.timeStamp,\n        type: \"action\" /* RumEventType.ACTION */,\n        view: { in_foreground: pageStateHistory.wasInPageStateAt(\"active\" /* PageState.ACTIVE */, action.startClocks.relative) },\n    }, autoActionProperties);\n    var domainContext = isAutoAction(action) ? { events: action.events } : {};\n    if (!isAutoAction(action) && action.handlingStack) {\n        domainContext.handlingStack = action.handlingStack;\n    }\n    return {\n        customerContext: customerContext,\n        rawRumEvent: actionEvent,\n        startTime: action.startClocks.relative,\n        domainContext: domainContext,\n    };\n}\nfunction isAutoAction(action) {\n    return action.type !== \"custom\" /* ActionType.CUSTOM */;\n}\n//# sourceMappingURL=actionCollection.js.map","import { flattenErrorCauses, isError, tryToGetFingerprint } from '../error/error';\nimport { mergeObservables, Observable } from '../../tools/observable';\nimport { ConsoleApiName, globalConsole } from '../../tools/display';\nimport { callMonitored } from '../../tools/monitor';\nimport { sanitize } from '../../tools/serialisation/sanitize';\nimport { find } from '../../tools/utils/polyfills';\nimport { jsonStringify } from '../../tools/serialisation/jsonStringify';\nimport { ErrorSource } from '../error/error.types';\nimport { computeStackTrace } from '../../tools/stackTrace/computeStackTrace';\nimport { createHandlingStack, toStackTraceString, formatErrorMessage } from '../../tools/stackTrace/handlingStack';\nimport { clocksNow } from '../../tools/utils/timeUtils';\nvar consoleObservablesByApi = {};\nexport function initConsoleObservable(apis) {\n    var consoleObservables = apis.map(function (api) {\n        if (!consoleObservablesByApi[api]) {\n            consoleObservablesByApi[api] = createConsoleObservable(api); // we are sure that the observable created for this api will yield the expected ConsoleLog type\n        }\n        return consoleObservablesByApi[api];\n    });\n    return mergeObservables.apply(void 0, consoleObservables);\n}\nexport function resetConsoleObservable() {\n    consoleObservablesByApi = {};\n}\nfunction createConsoleObservable(api) {\n    return new Observable(function (observable) {\n        var originalConsoleApi = globalConsole[api];\n        globalConsole[api] = function () {\n            var params = [];\n            for (var _i = 0; _i < arguments.length; _i++) {\n                params[_i] = arguments[_i];\n            }\n            originalConsoleApi.apply(console, params);\n            var handlingStack = createHandlingStack();\n            callMonitored(function () {\n                observable.notify(buildConsoleLog(params, api, handlingStack));\n            });\n        };\n        return function () {\n            globalConsole[api] = originalConsoleApi;\n        };\n    });\n}\nfunction buildConsoleLog(params, api, handlingStack) {\n    var message = params.map(function (param) { return formatConsoleParameters(param); }).join(' ');\n    var error;\n    if (api === ConsoleApiName.error) {\n        var firstErrorParam = find(params, isError);\n        error = {\n            stack: firstErrorParam ? toStackTraceString(computeStackTrace(firstErrorParam)) : undefined,\n            fingerprint: tryToGetFingerprint(firstErrorParam),\n            causes: firstErrorParam ? flattenErrorCauses(firstErrorParam, 'console') : undefined,\n            startClocks: clocksNow(),\n            message: message,\n            source: ErrorSource.CONSOLE,\n            handling: \"handled\" /* ErrorHandling.HANDLED */,\n            handlingStack: handlingStack,\n        };\n    }\n    return {\n        api: api,\n        message: message,\n        error: error,\n        handlingStack: handlingStack,\n    };\n}\nfunction formatConsoleParameters(param) {\n    if (typeof param === 'string') {\n        return sanitize(param);\n    }\n    if (isError(param)) {\n        return formatErrorMessage(computeStackTrace(param));\n    }\n    return jsonStringify(sanitize(param), undefined, 2);\n}\n//# sourceMappingURL=consoleObservable.js.map","import { toStackTraceString } from '../../tools/stackTrace/handlingStack';\nimport { monitor } from '../../tools/monitor';\nimport { mergeObservables, Observable } from '../../tools/observable';\nimport { addEventListener } from '../../browser/addEventListener';\nimport { assign, includes } from '../../tools/utils/polyfills';\nimport { safeTruncate } from '../../tools/utils/stringUtils';\nimport { ErrorSource } from '../error/error.types';\nimport { clocksNow } from '../../tools/utils/timeUtils';\nexport var RawReportType = {\n    intervention: 'intervention',\n    deprecation: 'deprecation',\n    cspViolation: 'csp_violation',\n};\nexport function initReportObservable(configuration, apis) {\n    var observables = [];\n    if (includes(apis, RawReportType.cspViolation)) {\n        observables.push(createCspViolationReportObservable(configuration));\n    }\n    var reportTypes = apis.filter(function (api) { return api !== RawReportType.cspViolation; });\n    if (reportTypes.length) {\n        observables.push(createReportObservable(reportTypes));\n    }\n    return mergeObservables.apply(void 0, observables);\n}\nfunction createReportObservable(reportTypes) {\n    return new Observable(function (observable) {\n        if (!window.ReportingObserver) {\n            return;\n        }\n        var handleReports = monitor(function (reports, _) {\n            return reports.forEach(function (report) { return observable.notify(buildRawReportErrorFromReport(report)); });\n        });\n        var observer = new window.ReportingObserver(handleReports, {\n            types: reportTypes,\n            buffered: true,\n        });\n        observer.observe();\n        return function () {\n            observer.disconnect();\n        };\n    });\n}\nfunction createCspViolationReportObservable(configuration) {\n    return new Observable(function (observable) {\n        var stop = addEventListener(configuration, document, \"securitypolicyviolation\" /* DOM_EVENT.SECURITY_POLICY_VIOLATION */, function (event) {\n            observable.notify(buildRawReportErrorFromCspViolation(event));\n        }).stop;\n        return stop;\n    });\n}\nfunction buildRawReportErrorFromReport(report) {\n    var type = report.type, body = report.body;\n    return buildRawReportError({\n        type: body.id,\n        message: \"\".concat(type, \": \").concat(body.message),\n        originalError: report,\n        stack: buildStack(body.id, body.message, body.sourceFile, body.lineNumber, body.columnNumber),\n    });\n}\nfunction buildRawReportErrorFromCspViolation(event) {\n    var message = \"'\".concat(event.blockedURI, \"' blocked by '\").concat(event.effectiveDirective, \"' directive\");\n    return buildRawReportError({\n        type: event.effectiveDirective,\n        message: \"\".concat(RawReportType.cspViolation, \": \").concat(message),\n        originalError: event,\n        csp: {\n            disposition: event.disposition,\n        },\n        stack: buildStack(event.effectiveDirective, event.originalPolicy\n            ? \"\".concat(message, \" of the policy \\\"\").concat(safeTruncate(event.originalPolicy, 100, '...'), \"\\\"\")\n            : 'no policy', event.sourceFile, event.lineNumber, event.columnNumber),\n    });\n}\nfunction buildRawReportError(partial) {\n    return assign({\n        startClocks: clocksNow(),\n        source: ErrorSource.REPORT,\n        handling: \"unhandled\" /* ErrorHandling.UNHANDLED */,\n    }, partial);\n}\nfunction buildStack(name, message, sourceFile, lineNumber, columnNumber) {\n    return sourceFile\n        ? toStackTraceString({\n            name: name,\n            message: message,\n            stack: [\n                {\n                    func: '?',\n                    url: sourceFile,\n                    line: lineNumber !== null && lineNumber !== void 0 ? lineNumber : undefined,\n                    column: columnNumber !== null && columnNumber !== void 0 ? columnNumber : undefined,\n                },\n            ],\n        })\n        : undefined;\n}\n//# sourceMappingURL=reportObservable.js.map","import { setTimeout, clearTimeout } from './timer';\nimport { monitor } from './monitor';\nimport { dateNow } from './utils/timeUtils';\n/**\n * 'requestIdleCallback' with a shim.\n */\nexport function requestIdleCallback(callback, opts) {\n    // Note: check both 'requestIdleCallback' and 'cancelIdleCallback' existence because some polyfills only implement 'requestIdleCallback'.\n    if (window.requestIdleCallback && window.cancelIdleCallback) {\n        var id_1 = window.requestIdleCallback(monitor(callback), opts);\n        return function () { return window.cancelIdleCallback(id_1); };\n    }\n    return requestIdleCallbackShim(callback);\n}\nexport var MAX_TASK_TIME = 50;\n/*\n * Shim from https://developer.chrome.com/blog/using-requestidlecallback#checking_for_requestidlecallback\n * Note: there is no simple way to support the \"timeout\" option, so we ignore it.\n */\nexport function requestIdleCallbackShim(callback) {\n    var start = dateNow();\n    var timeoutId = setTimeout(function () {\n        callback({\n            didTimeout: false,\n            timeRemaining: function () { return Math.max(0, MAX_TASK_TIME - (dateNow() - start)); },\n        });\n    }, 0);\n    return function () { return clearTimeout(timeoutId); };\n}\n//# sourceMappingURL=requestIdleCallback.js.map","import { addDuration } from '@datadog/browser-core';\nimport { WeakSet } from '../../browser/polyfills';\nimport { hasValidResourceEntryDuration, hasValidResourceEntryTimings } from './resourceUtils';\nvar alreadyMatchedEntries = new WeakSet();\n/**\n * Look for corresponding timing in resource timing buffer\n *\n * Observations:\n * - Timing (start, end) are nested inside the request (start, end)\n * - Some timing can be not exactly nested, being off by < 1 ms\n *\n * Strategy:\n * - from valid nested entries (with 1 ms error margin)\n * - filter out timing that were already matched to a request\n * - then, if a single timing match, return the timing\n * - otherwise we can't decide, return undefined\n */\nexport function matchRequestResourceEntry(request) {\n    if (!performance || !('getEntriesByName' in performance)) {\n        return;\n    }\n    var sameNameEntries = performance.getEntriesByName(request.url, 'resource');\n    if (!sameNameEntries.length || !('toJSON' in sameNameEntries[0])) {\n        return;\n    }\n    var candidates = sameNameEntries\n        .filter(function (entry) { return !alreadyMatchedEntries.has(entry); })\n        .filter(function (entry) { return hasValidResourceEntryDuration(entry) && hasValidResourceEntryTimings(entry); })\n        .filter(function (entry) {\n        return isBetween(entry, request.startClocks.relative, endTime({ startTime: request.startClocks.relative, duration: request.duration }));\n    });\n    if (candidates.length === 1) {\n        alreadyMatchedEntries.add(candidates[0]);\n        return candidates[0].toJSON();\n    }\n    return;\n}\nfunction endTime(timing) {\n    return addDuration(timing.startTime, timing.duration);\n}\nfunction isBetween(timing, start, end) {\n    var errorMargin = 1;\n    return timing.startTime >= start - errorMargin && endTime(timing) <= addDuration(end, errorMargin);\n}\n//# sourceMappingURL=matchRequestResourceEntry.js.map","import { noop } from '../tools/utils/functionUtils';\nimport { addEventListener } from './addEventListener';\nexport function runOnReadyState(configuration, expectedReadyState, callback) {\n    if (document.readyState === expectedReadyState || document.readyState === 'complete') {\n        callback();\n        return { stop: noop };\n    }\n    var eventName = expectedReadyState === 'complete' ? \"load\" /* DOM_EVENT.LOAD */ : \"DOMContentLoaded\" /* DOM_EVENT.DOM_CONTENT_LOADED */;\n    return addEventListener(configuration, window, eventName, callback, { once: true });\n}\n//# sourceMappingURL=runOnReadyState.js.map","import { dateNow, findCommaSeparatedValue, ONE_MINUTE } from '@datadog/browser-core';\nimport { isCommentNode, isTextNode } from '../../browser/htmlDomUtils';\nexport var INITIAL_DOCUMENT_OUTDATED_TRACE_ID_THRESHOLD = 2 * ONE_MINUTE;\nexport function getDocumentTraceId(document) {\n    var data = getDocumentTraceDataFromMeta(document) || getDocumentTraceDataFromComment(document);\n    if (!data || data.traceTime <= dateNow() - INITIAL_DOCUMENT_OUTDATED_TRACE_ID_THRESHOLD) {\n        return undefined;\n    }\n    return data.traceId;\n}\nexport function getDocumentTraceDataFromMeta(document) {\n    var traceIdMeta = document.querySelector('meta[name=dd-trace-id]');\n    var traceTimeMeta = document.querySelector('meta[name=dd-trace-time]');\n    return createDocumentTraceData(traceIdMeta && traceIdMeta.content, traceTimeMeta && traceTimeMeta.content);\n}\nexport function getDocumentTraceDataFromComment(document) {\n    var comment = findTraceComment(document);\n    if (!comment) {\n        return undefined;\n    }\n    return createDocumentTraceData(findCommaSeparatedValue(comment, 'trace-id'), findCommaSeparatedValue(comment, 'trace-time'));\n}\nexport function createDocumentTraceData(traceId, rawTraceTime) {\n    var traceTime = rawTraceTime && Number(rawTraceTime);\n    if (!traceId || !traceTime) {\n        return undefined;\n    }\n    return {\n        traceId: traceId,\n        traceTime: traceTime,\n    };\n}\nexport function findTraceComment(document) {\n    // 1. Try to find the comment as a direct child of the document\n    // Note: TSLint advises to use a 'for of', but TS doesn't allow to use 'for of' if the iterated\n    // value is not an array or string (here, a NodeList).\n    for (var i = 0; i < document.childNodes.length; i += 1) {\n        var comment = getTraceCommentFromNode(document.childNodes[i]);\n        if (comment) {\n            return comment;\n        }\n    }\n    // 2. If the comment is placed after the </html> tag, but have some space or new lines before or\n    // after, the DOM parser will lift it (and the surrounding text) at the end of the <body> tag.\n    // Try to look for the comment at the end of the <body> by by iterating over its child nodes in\n    // reverse order, stopping if we come across a non-text node.\n    if (document.body) {\n        for (var i = document.body.childNodes.length - 1; i >= 0; i -= 1) {\n            var node = document.body.childNodes[i];\n            var comment = getTraceCommentFromNode(node);\n            if (comment) {\n                return comment;\n            }\n            if (!isTextNode(node)) {\n                break;\n            }\n        }\n    }\n}\nfunction getTraceCommentFromNode(node) {\n    if (node && isCommentNode(node)) {\n        var match = /^\\s*DATADOG;(.*?)\\s*$/.exec(node.data);\n        if (match) {\n            return match[1];\n        }\n    }\n}\n//# sourceMappingURL=getDocumentTraceId.js.map","import { assign, getRelativeTime, isNumber } from '@datadog/browser-core';\nimport { RumPerformanceEntryType, supportPerformanceTimingEvent, } from './performanceObservable';\nexport function getNavigationEntry() {\n    if (supportPerformanceTimingEvent(RumPerformanceEntryType.NAVIGATION)) {\n        var navigationEntry = performance.getEntriesByType(RumPerformanceEntryType.NAVIGATION)[0];\n        if (navigationEntry) {\n            return navigationEntry;\n        }\n    }\n    var timings = computeTimingsFromDeprecatedPerformanceTiming();\n    var entry = assign({\n        entryType: RumPerformanceEntryType.NAVIGATION,\n        initiatorType: 'navigation',\n        name: window.location.href,\n        startTime: 0,\n        duration: timings.responseEnd,\n        decodedBodySize: 0,\n        encodedBodySize: 0,\n        transferSize: 0,\n        workerStart: 0,\n        toJSON: function () { return assign({}, entry, { toJSON: undefined }); },\n    }, timings);\n    return entry;\n}\nexport function computeTimingsFromDeprecatedPerformanceTiming() {\n    var result = {};\n    var timing = performance.timing;\n    for (var key in timing) {\n        if (isNumber(timing[key])) {\n            var numberKey = key;\n            var timingElement = timing[numberKey];\n            result[numberKey] = timingElement === 0 ? 0 : getRelativeTime(timingElement);\n        }\n    }\n    return result;\n}\n//# sourceMappingURL=performanceUtils.js.map","import { assign, runOnReadyState } from '@datadog/browser-core';\nimport { RumPerformanceEntryType } from '../../browser/performanceObservable';\nimport { getDocumentTraceId } from '../tracing/getDocumentTraceId';\nimport { getNavigationEntry } from '../../browser/performanceUtils';\nimport { FAKE_INITIAL_DOCUMENT } from './resourceUtils';\nexport function retrieveInitialDocumentResourceTiming(configuration, callback) {\n    runOnReadyState(configuration, 'interactive', function () {\n        var entry = assign(getNavigationEntry().toJSON(), {\n            entryType: RumPerformanceEntryType.RESOURCE,\n            initiatorType: FAKE_INITIAL_DOCUMENT,\n            traceId: getDocumentTraceId(document),\n            toJSON: function () { return assign({}, entry, { toJSON: undefined }); },\n        });\n        callback(entry);\n    });\n}\n//# sourceMappingURL=retrieveInitialDocumentResourceTiming.js.map","import { combine, generateUUID, toServerDuration, relativeToClocks, assign, createTaskQueue, } from '@datadog/browser-core';\nimport { RumPerformanceEntryType, createPerformanceObservable, } from '../../browser/performanceObservable';\nimport { createSpanIdentifier } from '../tracing/identifier';\nimport { matchRequestResourceEntry } from './matchRequestResourceEntry';\nimport { computeResourceEntryDetails, computeResourceEntryDuration, computeResourceEntryType, computeResourceEntrySize, computeResourceEntryProtocol, computeResourceEntryDeliveryType, isResourceEntryRequestType, isLongDataUrl, sanitizeDataUrl, } from './resourceUtils';\nimport { retrieveInitialDocumentResourceTiming } from './retrieveInitialDocumentResourceTiming';\nexport function startResourceCollection(lifeCycle, configuration, pageStateHistory, taskQueue, retrieveInitialDocumentResourceTimingImpl) {\n    if (taskQueue === void 0) { taskQueue = createTaskQueue(); }\n    if (retrieveInitialDocumentResourceTimingImpl === void 0) { retrieveInitialDocumentResourceTimingImpl = retrieveInitialDocumentResourceTiming; }\n    lifeCycle.subscribe(8 /* LifeCycleEventType.REQUEST_COMPLETED */, function (request) {\n        handleResource(function () { return processRequest(request, configuration, pageStateHistory); });\n    });\n    var performanceResourceSubscription = createPerformanceObservable(configuration, {\n        type: RumPerformanceEntryType.RESOURCE,\n        buffered: true,\n    }).subscribe(function (entries) {\n        var _loop_1 = function (entry) {\n            if (!isResourceEntryRequestType(entry)) {\n                handleResource(function () { return processResourceEntry(entry, configuration); });\n            }\n        };\n        for (var _i = 0, entries_1 = entries; _i < entries_1.length; _i++) {\n            var entry = entries_1[_i];\n            _loop_1(entry);\n        }\n    });\n    retrieveInitialDocumentResourceTimingImpl(configuration, function (timing) {\n        handleResource(function () { return processResourceEntry(timing, configuration); });\n    });\n    function handleResource(computeRawEvent) {\n        taskQueue.push(function () {\n            var rawEvent = computeRawEvent();\n            if (rawEvent) {\n                lifeCycle.notify(12 /* LifeCycleEventType.RAW_RUM_EVENT_COLLECTED */, rawEvent);\n            }\n        });\n    }\n    return {\n        stop: function () {\n            performanceResourceSubscription.unsubscribe();\n        },\n    };\n}\nfunction processRequest(request, configuration, pageStateHistory) {\n    var matchingTiming = matchRequestResourceEntry(request);\n    var startClocks = matchingTiming ? relativeToClocks(matchingTiming.startTime) : request.startClocks;\n    var tracingInfo = computeRequestTracingInfo(request, configuration);\n    if (!configuration.trackResources && !tracingInfo) {\n        return;\n    }\n    var type = request.type === \"xhr\" /* RequestType.XHR */ ? \"xhr\" /* ResourceType.XHR */ : \"fetch\" /* ResourceType.FETCH */;\n    var correspondingTimingOverrides = matchingTiming ? computeResourceEntryMetrics(matchingTiming) : undefined;\n    var duration = computeRequestDuration(pageStateHistory, startClocks, request.duration);\n    var resourceEvent = combine({\n        date: startClocks.timeStamp,\n        resource: {\n            id: generateUUID(),\n            type: type,\n            duration: duration,\n            method: request.method,\n            status_code: request.status,\n            protocol: matchingTiming && computeResourceEntryProtocol(matchingTiming),\n            url: isLongDataUrl(request.url) ? sanitizeDataUrl(request.url) : request.url,\n            delivery_type: matchingTiming && computeResourceEntryDeliveryType(matchingTiming),\n        },\n        type: \"resource\" /* RumEventType.RESOURCE */,\n        _dd: {\n            discarded: !configuration.trackResources,\n        },\n    }, tracingInfo, correspondingTimingOverrides);\n    return {\n        startTime: startClocks.relative,\n        rawRumEvent: resourceEvent,\n        domainContext: {\n            performanceEntry: matchingTiming,\n            xhr: request.xhr,\n            response: request.response,\n            requestInput: request.input,\n            requestInit: request.init,\n            error: request.error,\n            isAborted: request.isAborted,\n            handlingStack: request.handlingStack,\n        },\n    };\n}\nfunction processResourceEntry(entry, configuration) {\n    var startClocks = relativeToClocks(entry.startTime);\n    var tracingInfo = computeResourceEntryTracingInfo(entry, configuration);\n    if (!configuration.trackResources && !tracingInfo) {\n        return;\n    }\n    var type = computeResourceEntryType(entry);\n    var entryMetrics = computeResourceEntryMetrics(entry);\n    var resourceEvent = combine({\n        date: startClocks.timeStamp,\n        resource: {\n            id: generateUUID(),\n            type: type,\n            url: entry.name,\n            status_code: discardZeroStatus(entry.responseStatus),\n            protocol: computeResourceEntryProtocol(entry),\n            delivery_type: computeResourceEntryDeliveryType(entry),\n        },\n        type: \"resource\" /* RumEventType.RESOURCE */,\n        _dd: {\n            discarded: !configuration.trackResources,\n        },\n    }, tracingInfo, entryMetrics);\n    return {\n        startTime: startClocks.relative,\n        rawRumEvent: resourceEvent,\n        domainContext: {\n            performanceEntry: entry,\n        },\n    };\n}\nfunction computeResourceEntryMetrics(entry) {\n    var renderBlockingStatus = entry.renderBlockingStatus;\n    return {\n        resource: assign({\n            duration: computeResourceEntryDuration(entry),\n            render_blocking_status: renderBlockingStatus,\n        }, computeResourceEntrySize(entry), computeResourceEntryDetails(entry)),\n    };\n}\nfunction computeRequestTracingInfo(request, configuration) {\n    var hasBeenTraced = request.traceSampled && request.traceId && request.spanId;\n    if (!hasBeenTraced) {\n        return undefined;\n    }\n    return {\n        _dd: {\n            span_id: request.spanId.toString(),\n            trace_id: request.traceId.toString(),\n            rule_psr: configuration.rulePsr,\n        },\n    };\n}\nfunction computeResourceEntryTracingInfo(entry, configuration) {\n    var hasBeenTraced = entry.traceId;\n    if (!hasBeenTraced) {\n        return undefined;\n    }\n    return {\n        _dd: {\n            trace_id: entry.traceId,\n            span_id: createSpanIdentifier().toString(),\n            rule_psr: configuration.rulePsr,\n        },\n    };\n}\nfunction computeRequestDuration(pageStateHistory, startClocks, duration) {\n    return !pageStateHistory.wasInPageStateDuringPeriod(\"frozen\" /* PageState.FROZEN */, startClocks.relative, duration)\n        ? toServerDuration(duration)\n        : undefined;\n}\n/**\n * The status is 0 for cross-origin resources without CORS headers, so the status is meaningless, and we shouldn't report it\n * https://developer.mozilla.org/en-US/docs/Web/API/PerformanceResourceTiming/responseStatus#cross-origin_response_status_codes\n */\nfunction discardZeroStatus(statusCode) {\n    return statusCode === 0 ? undefined : statusCode;\n}\n//# sourceMappingURL=resourceCollection.js.map","import { ONE_MINUTE, find } from '@datadog/browser-core';\nimport { createPerformanceObservable, RumPerformanceEntryType } from '../../../browser/performanceObservable';\n// Discard FCP timings above a certain delay to avoid incorrect data\n// It happens in some cases like sleep mode or some browser implementations\nexport var FCP_MAXIMUM_DELAY = 10 * ONE_MINUTE;\nexport function trackFirstContentfulPaint(configuration, firstHidden, callback) {\n    var performanceSubscription = createPerformanceObservable(configuration, {\n        type: RumPerformanceEntryType.PAINT,\n        buffered: true,\n    }).subscribe(function (entries) {\n        var fcpEntry = find(entries, function (entry) {\n            return entry.name === 'first-contentful-paint' &&\n                entry.startTime < firstHidden.timeStamp &&\n                entry.startTime < FCP_MAXIMUM_DELAY;\n        });\n        if (fcpEntry) {\n            callback(fcpEntry.startTime);\n        }\n    });\n    return {\n        stop: performanceSubscription.unsubscribe,\n    };\n}\n//# sourceMappingURL=trackFirstContentfulPaint.js.map","import { ONE_MINUTE, addEventListeners, findLast } from '@datadog/browser-core';\nimport { createPerformanceObservable, RumPerformanceEntryType } from '../../../browser/performanceObservable';\nimport { getSelectorFromElement } from '../../getSelectorFromElement';\n// Discard LCP timings above a certain delay to avoid incorrect data\n// It happens in some cases like sleep mode or some browser implementations\nexport var LCP_MAXIMUM_DELAY = 10 * ONE_MINUTE;\n/**\n * Track the largest contentful paint (LCP) occurring during the initial View.  This can yield\n * multiple values, only the most recent one should be used.\n * Documentation: https://web.dev/lcp/\n * Reference implementation: https://github.com/GoogleChrome/web-vitals/blob/master/src/onLCP.ts\n */\nexport function trackLargestContentfulPaint(configuration, firstHidden, eventTarget, callback) {\n    // Ignore entries that come after the first user interaction. According to the documentation, the\n    // browser should not send largest-contentful-paint entries after a user interact with the page,\n    // but the web-vitals reference implementation uses this as a safeguard.\n    var firstInteractionTimestamp = Infinity;\n    var stopEventListener = addEventListeners(configuration, eventTarget, [\"pointerdown\" /* DOM_EVENT.POINTER_DOWN */, \"keydown\" /* DOM_EVENT.KEY_DOWN */], function (event) {\n        firstInteractionTimestamp = event.timeStamp;\n    }, { capture: true, once: true }).stop;\n    var biggestLcpSize = 0;\n    var performanceLcpSubscription = createPerformanceObservable(configuration, {\n        type: RumPerformanceEntryType.LARGEST_CONTENTFUL_PAINT,\n        buffered: true,\n    }).subscribe(function (entries) {\n        var lcpEntry = findLast(entries, function (entry) {\n            return entry.entryType === RumPerformanceEntryType.LARGEST_CONTENTFUL_PAINT &&\n                entry.startTime < firstInteractionTimestamp &&\n                entry.startTime < firstHidden.timeStamp &&\n                entry.startTime < LCP_MAXIMUM_DELAY &&\n                // Ensure to get the LCP entry with the biggest size, see\n                // https://bugs.chromium.org/p/chromium/issues/detail?id=1516655\n                entry.size > biggestLcpSize;\n        });\n        if (lcpEntry) {\n            var lcpTargetSelector = void 0;\n            if (lcpEntry.element) {\n                lcpTargetSelector = getSelectorFromElement(lcpEntry.element, configuration.actionNameAttribute);\n            }\n            callback({\n                value: lcpEntry.startTime,\n                targetSelector: lcpTargetSelector,\n            });\n            biggestLcpSize = lcpEntry.size;\n        }\n    });\n    return {\n        stop: function () {\n            stopEventListener();\n            performanceLcpSubscription.unsubscribe();\n        },\n    };\n}\n//# sourceMappingURL=trackLargestContentfulPaint.js.map","import { addEventListeners } from '@datadog/browser-core';\nexport function trackFirstHidden(configuration, eventTarget) {\n    if (eventTarget === void 0) { eventTarget = window; }\n    var timeStamp;\n    var stopListeners;\n    if (document.visibilityState === 'hidden') {\n        timeStamp = 0;\n    }\n    else {\n        timeStamp = Infinity;\n        (stopListeners = addEventListeners(configuration, eventTarget, [\"pagehide\" /* DOM_EVENT.PAGE_HIDE */, \"visibilitychange\" /* DOM_EVENT.VISIBILITY_CHANGE */], function (event) {\n            if (event.type === \"pagehide\" /* DOM_EVENT.PAGE_HIDE */ || document.visibilityState === 'hidden') {\n                timeStamp = event.timeStamp;\n                stopListeners();\n            }\n        }, { capture: true }).stop);\n    }\n    return {\n        get timeStamp() {\n            return timeStamp;\n        },\n        stop: function () {\n            stopListeners === null || stopListeners === void 0 ? void 0 : stopListeners();\n        },\n    };\n}\n//# sourceMappingURL=trackFirstHidden.js.map","import { round, find, ONE_SECOND, noop, elapsed } from '@datadog/browser-core';\nimport { isElementNode } from '../../../browser/htmlDomUtils';\nimport { supportPerformanceTimingEvent, RumPerformanceEntryType, createPerformanceObservable, } from '../../../browser/performanceObservable';\nimport { getSelectorFromElement } from '../../getSelectorFromElement';\n/**\n * Track the cumulative layout shifts (CLS).\n * Layout shifts are grouped into session windows.\n * The minimum gap between session windows is 1 second.\n * The maximum duration of a session window is 5 second.\n * The session window layout shift value is the sum of layout shifts inside it.\n * The CLS value is the max of session windows values.\n *\n * This yields a new value whenever the CLS value is updated (a higher session window value is computed).\n *\n * See isLayoutShiftSupported to check for browser support.\n *\n * Documentation:\n * https://web.dev/cls/\n * https://web.dev/evolving-cls/\n * Reference implementation: https://github.com/GoogleChrome/web-vitals/blob/master/src/getCLS.ts\n */\nexport function trackCumulativeLayoutShift(configuration, viewStart, callback) {\n    if (!isLayoutShiftSupported()) {\n        return {\n            stop: noop,\n        };\n    }\n    var maxClsValue = 0;\n    var maxClsTarget;\n    var maxClsStartTime;\n    // if no layout shift happen the value should be reported as 0\n    callback({\n        value: 0,\n    });\n    var window = slidingSessionWindow();\n    var performanceSubscription = createPerformanceObservable(configuration, {\n        type: RumPerformanceEntryType.LAYOUT_SHIFT,\n        buffered: true,\n    }).subscribe(function (entries) {\n        for (var _i = 0, entries_1 = entries; _i < entries_1.length; _i++) {\n            var entry = entries_1[_i];\n            if (entry.hadRecentInput || entry.startTime < viewStart) {\n                continue;\n            }\n            var _a = window.update(entry), cumulatedValue = _a.cumulatedValue, isMaxValue = _a.isMaxValue;\n            if (isMaxValue) {\n                var target = getTargetFromSource(entry.sources);\n                maxClsTarget = target ? new WeakRef(target) : undefined;\n                maxClsStartTime = elapsed(viewStart, entry.startTime);\n            }\n            if (cumulatedValue > maxClsValue) {\n                maxClsValue = cumulatedValue;\n                var target = maxClsTarget === null || maxClsTarget === void 0 ? void 0 : maxClsTarget.deref();\n                callback({\n                    value: round(maxClsValue, 4),\n                    targetSelector: target && getSelectorFromElement(target, configuration.actionNameAttribute),\n                    time: maxClsStartTime,\n                });\n            }\n        }\n    });\n    return {\n        stop: function () {\n            performanceSubscription.unsubscribe();\n        },\n    };\n}\nfunction getTargetFromSource(sources) {\n    var _a;\n    if (!sources) {\n        return;\n    }\n    return (_a = find(sources, function (source) { return !!source.node && isElementNode(source.node); })) === null || _a === void 0 ? void 0 : _a.node;\n}\nexport var MAX_WINDOW_DURATION = 5 * ONE_SECOND;\nvar MAX_UPDATE_GAP = ONE_SECOND;\nfunction slidingSessionWindow() {\n    var cumulatedValue = 0;\n    var startTime;\n    var endTime;\n    var maxValue = 0;\n    return {\n        update: function (entry) {\n            var shouldCreateNewWindow = startTime === undefined ||\n                entry.startTime - endTime >= MAX_UPDATE_GAP ||\n                entry.startTime - startTime >= MAX_WINDOW_DURATION;\n            var isMaxValue;\n            if (shouldCreateNewWindow) {\n                startTime = endTime = entry.startTime;\n                maxValue = cumulatedValue = entry.value;\n                isMaxValue = true;\n            }\n            else {\n                cumulatedValue += entry.value;\n                endTime = entry.startTime;\n                isMaxValue = entry.value > maxValue;\n                if (isMaxValue) {\n                    maxValue = entry.value;\n                }\n            }\n            return {\n                cumulatedValue: cumulatedValue,\n                isMaxValue: isMaxValue,\n            };\n        },\n    };\n}\n/**\n * Check whether `layout-shift` is supported by the browser.\n */\nexport function isLayoutShiftSupported() {\n    return supportPerformanceTimingEvent(RumPerformanceEntryType.LAYOUT_SHIFT) && 'WeakRef' in window;\n}\n//# sourceMappingURL=trackCumulativeLayoutShift.js.map","import { elapsed, noop, ONE_MINUTE } from '@datadog/browser-core';\nimport { createPerformanceObservable, RumPerformanceEntryType, supportPerformanceTimingEvent, } from '../../../browser/performanceObservable';\nimport { getSelectorFromElement } from '../../getSelectorFromElement';\nimport { isElementNode } from '../../../browser/htmlDomUtils';\nimport { getInteractionSelector } from '../../action/interactionSelectorCache';\nimport { getInteractionCount, initInteractionCountPolyfill } from './interactionCountPolyfill';\n// Arbitrary value to prevent unnecessary memory usage on views with lots of interactions.\nvar MAX_INTERACTION_ENTRIES = 10;\n// Arbitrary value to cap INP outliers\nexport var MAX_INP_VALUE = (1 * ONE_MINUTE);\n/**\n * Track the interaction to next paint (INP).\n * To avoid outliers, return the p98 worst interaction of the view.\n * Documentation: https://web.dev/inp/\n * Reference implementation: https://github.com/GoogleChrome/web-vitals/blob/main/src/onINP.ts\n */\nexport function trackInteractionToNextPaint(configuration, viewStart, viewLoadingType) {\n    if (!isInteractionToNextPaintSupported()) {\n        return {\n            getInteractionToNextPaint: function () { return undefined; },\n            setViewEnd: noop,\n            stop: noop,\n        };\n    }\n    var _a = trackViewInteractionCount(viewLoadingType), getViewInteractionCount = _a.getViewInteractionCount, stopViewInteractionCount = _a.stopViewInteractionCount;\n    var viewEnd = Infinity;\n    var longestInteractions = trackLongestInteractions(getViewInteractionCount);\n    var interactionToNextPaint = -1;\n    var interactionToNextPaintTargetSelector;\n    var interactionToNextPaintStartTime;\n    function handleEntries(entries) {\n        for (var _i = 0, entries_1 = entries; _i < entries_1.length; _i++) {\n            var entry = entries_1[_i];\n            if (entry.interactionId &&\n                // Check the entry start time is inside the view bounds because some view interactions can be reported after the view end (if long duration).\n                entry.startTime >= viewStart &&\n                entry.startTime <= viewEnd) {\n                longestInteractions.process(entry);\n            }\n        }\n        var newInteraction = longestInteractions.estimateP98Interaction();\n        if (newInteraction && newInteraction.duration !== interactionToNextPaint) {\n            interactionToNextPaint = newInteraction.duration;\n            interactionToNextPaintStartTime = elapsed(viewStart, newInteraction.startTime);\n            interactionToNextPaintTargetSelector = getInteractionSelector(newInteraction.startTime);\n            if (!interactionToNextPaintTargetSelector && newInteraction.target && isElementNode(newInteraction.target)) {\n                interactionToNextPaintTargetSelector = getSelectorFromElement(newInteraction.target, configuration.actionNameAttribute);\n            }\n        }\n    }\n    var firstInputSubscription = createPerformanceObservable(configuration, {\n        type: RumPerformanceEntryType.FIRST_INPUT,\n        buffered: true,\n    }).subscribe(handleEntries);\n    var eventSubscription = createPerformanceObservable(configuration, {\n        type: RumPerformanceEntryType.EVENT,\n        // durationThreshold only impact PerformanceEventTiming entries used for INP computation which requires a threshold at 40 (default is 104ms)\n        // cf: https://github.com/GoogleChrome/web-vitals/blob/3806160ffbc93c3c4abf210a167b81228172b31c/src/onINP.ts#L202-L210\n        durationThreshold: 40,\n        buffered: true,\n    }).subscribe(handleEntries);\n    return {\n        getInteractionToNextPaint: function () {\n            // If no INP duration where captured because of the performanceObserver 40ms threshold\n            // but the view interaction count > 0 then report 0\n            if (interactionToNextPaint >= 0) {\n                return {\n                    value: Math.min(interactionToNextPaint, MAX_INP_VALUE),\n                    targetSelector: interactionToNextPaintTargetSelector,\n                    time: interactionToNextPaintStartTime,\n                };\n            }\n            else if (getViewInteractionCount()) {\n                return {\n                    value: 0,\n                };\n            }\n        },\n        setViewEnd: function (viewEndTime) {\n            viewEnd = viewEndTime;\n            stopViewInteractionCount();\n        },\n        stop: function () {\n            eventSubscription.unsubscribe();\n            firstInputSubscription.unsubscribe();\n        },\n    };\n}\nfunction trackLongestInteractions(getViewInteractionCount) {\n    var longestInteractions = [];\n    function sortAndTrimLongestInteractions() {\n        longestInteractions.sort(function (a, b) { return b.duration - a.duration; }).splice(MAX_INTERACTION_ENTRIES);\n    }\n    return {\n        /**\n         * Process the performance entry:\n         * - if its duration is long enough, add the performance entry to the list of worst interactions\n         * - if an entry with the same interaction id exists and its duration is lower than the new one, then replace it in the list of worst interactions\n         */\n        process: function (entry) {\n            var interactionIndex = longestInteractions.findIndex(function (interaction) { return entry.interactionId === interaction.interactionId; });\n            var minLongestInteraction = longestInteractions[longestInteractions.length - 1];\n            if (interactionIndex !== -1) {\n                if (entry.duration > longestInteractions[interactionIndex].duration) {\n                    longestInteractions[interactionIndex] = entry;\n                    sortAndTrimLongestInteractions();\n                }\n            }\n            else if (longestInteractions.length < MAX_INTERACTION_ENTRIES ||\n                entry.duration > minLongestInteraction.duration) {\n                longestInteractions.push(entry);\n                sortAndTrimLongestInteractions();\n            }\n        },\n        /**\n         * Compute the p98 longest interaction.\n         * For better performance the computation is based on 10 longest interactions and the interaction count of the current view.\n         */\n        estimateP98Interaction: function () {\n            var interactionIndex = Math.min(longestInteractions.length - 1, Math.floor(getViewInteractionCount() / 50));\n            return longestInteractions[interactionIndex];\n        },\n    };\n}\nexport function trackViewInteractionCount(viewLoadingType) {\n    initInteractionCountPolyfill();\n    var previousInteractionCount = viewLoadingType === \"initial_load\" /* ViewLoadingType.INITIAL_LOAD */ ? 0 : getInteractionCount();\n    var state = { stopped: false };\n    function computeViewInteractionCount() {\n        return getInteractionCount() - previousInteractionCount;\n    }\n    return {\n        getViewInteractionCount: function () {\n            if (state.stopped) {\n                return state.interactionCount;\n            }\n            return computeViewInteractionCount();\n        },\n        stopViewInteractionCount: function () {\n            state = { stopped: true, interactionCount: computeViewInteractionCount() };\n        },\n    };\n}\nexport function isInteractionToNextPaintSupported() {\n    return (supportPerformanceTimingEvent(RumPerformanceEntryType.EVENT) &&\n        window.PerformanceEventTiming &&\n        'interactionId' in PerformanceEventTiming.prototype);\n}\n//# sourceMappingURL=trackInteractionToNextPaint.js.map","export function getScrollX() {\n    var scrollX;\n    var visual = window.visualViewport;\n    if (visual) {\n        scrollX = visual.pageLeft - visual.offsetLeft;\n    }\n    else if (window.scrollX !== undefined) {\n        scrollX = window.scrollX;\n    }\n    else {\n        scrollX = window.pageXOffset || 0;\n    }\n    return Math.round(scrollX);\n}\nexport function getScrollY() {\n    var scrollY;\n    var visual = window.visualViewport;\n    if (visual) {\n        scrollY = visual.pageTop - visual.offsetTop;\n    }\n    else if (window.scrollY !== undefined) {\n        scrollY = window.scrollY;\n    }\n    else {\n        scrollY = window.pageYOffset || 0;\n    }\n    return Math.round(scrollY);\n}\n//# sourceMappingURL=scroll.js.map","import { noop, PageExitReason, shallowClone, elapsed, generateUUID, ONE_MINUTE, throttle, clocksNow, clocksOrigin, timeStampNow, display, looksLikeRelativeTime, setInterval, clearInterval, setTimeout, Observable, createContextManager, } from '@datadog/browser-core';\nimport { trackViewEventCounts } from './trackViewEventCounts';\nimport { trackInitialViewMetrics } from './viewMetrics/trackInitialViewMetrics';\nimport { trackCommonViewMetrics } from './viewMetrics/trackCommonViewMetrics';\nexport var THROTTLE_VIEW_UPDATE_PERIOD = 3000;\nexport var SESSION_KEEP_ALIVE_INTERVAL = 5 * ONE_MINUTE;\n// Some events or metrics can be captured after the end of the view. To avoid missing those;\n// an arbitrary delay is added for stopping their tracking after the view ends.\n//\n// Ideally, we would not stop and keep tracking events or metrics until the end of the session.\n// But this might have a small performance impact if there are many many views.\n// So let's have a fairly short delay improving the situation in most cases and avoid impacting performances too much.\nexport var KEEP_TRACKING_AFTER_VIEW_DELAY = 5 * ONE_MINUTE;\nexport function trackViews(location, lifeCycle, domMutationObservable, windowOpenObservable, configuration, locationChangeObservable, areViewsTrackedAutomatically, initialViewOptions) {\n    var activeViews = new Set();\n    var currentView = startNewView(\"initial_load\" /* ViewLoadingType.INITIAL_LOAD */, clocksOrigin(), initialViewOptions);\n    startViewLifeCycle();\n    var locationChangeSubscription;\n    if (areViewsTrackedAutomatically) {\n        locationChangeSubscription = renewViewOnLocationChange(locationChangeObservable);\n    }\n    function startNewView(loadingType, startClocks, viewOptions) {\n        var newlyCreatedView = newView(lifeCycle, domMutationObservable, windowOpenObservable, configuration, location, loadingType, startClocks, viewOptions);\n        activeViews.add(newlyCreatedView);\n        newlyCreatedView.stopObservable.subscribe(function () {\n            activeViews.delete(newlyCreatedView);\n        });\n        return newlyCreatedView;\n    }\n    function startViewLifeCycle() {\n        lifeCycle.subscribe(10 /* LifeCycleEventType.SESSION_RENEWED */, function () {\n            // Renew view on session renewal\n            currentView = startNewView(\"route_change\" /* ViewLoadingType.ROUTE_CHANGE */, undefined, {\n                name: currentView.name,\n                service: currentView.service,\n                version: currentView.version,\n                context: currentView.contextManager.getContext(),\n            });\n        });\n        lifeCycle.subscribe(9 /* LifeCycleEventType.SESSION_EXPIRED */, function () {\n            currentView.end({ sessionIsActive: false });\n        });\n        // End the current view on page unload\n        lifeCycle.subscribe(11 /* LifeCycleEventType.PAGE_EXITED */, function (pageExitEvent) {\n            if (pageExitEvent.reason === PageExitReason.UNLOADING) {\n                currentView.end();\n            }\n        });\n    }\n    function renewViewOnLocationChange(locationChangeObservable) {\n        return locationChangeObservable.subscribe(function (_a) {\n            var oldLocation = _a.oldLocation, newLocation = _a.newLocation;\n            if (areDifferentLocation(oldLocation, newLocation)) {\n                currentView.end();\n                currentView = startNewView(\"route_change\" /* ViewLoadingType.ROUTE_CHANGE */);\n            }\n        });\n    }\n    return {\n        addTiming: function (name, time) {\n            if (time === void 0) { time = timeStampNow(); }\n            currentView.addTiming(name, time);\n        },\n        startView: function (options, startClocks) {\n            currentView.end({ endClocks: startClocks });\n            currentView = startNewView(\"route_change\" /* ViewLoadingType.ROUTE_CHANGE */, startClocks, options);\n        },\n        setViewContext: function (context) {\n            currentView.contextManager.setContext(context);\n        },\n        setViewContextProperty: function (key, value) {\n            currentView.contextManager.setContextProperty(key, value);\n        },\n        setViewName: function (name) {\n            currentView.setViewName(name);\n        },\n        stop: function () {\n            if (locationChangeSubscription) {\n                locationChangeSubscription.unsubscribe();\n            }\n            currentView.end();\n            activeViews.forEach(function (view) { return view.stop(); });\n        },\n    };\n}\nfunction newView(lifeCycle, domMutationObservable, windowOpenObservable, configuration, initialLocation, loadingType, startClocks, viewOptions) {\n    if (startClocks === void 0) { startClocks = clocksNow(); }\n    // Setup initial values\n    var id = generateUUID();\n    var stopObservable = new Observable();\n    var customTimings = {};\n    var documentVersion = 0;\n    var endClocks;\n    var location = shallowClone(initialLocation);\n    var contextManager = createContextManager();\n    var sessionIsActive = true;\n    var name;\n    var service;\n    var version;\n    var context;\n    if (viewOptions) {\n        name = viewOptions.name;\n        service = viewOptions.service || undefined;\n        version = viewOptions.version || undefined;\n        if (viewOptions.context) {\n            context = viewOptions.context;\n            // use ContextManager to update the context so we always sanitize it\n            contextManager.setContext(context);\n        }\n    }\n    var viewCreatedEvent = {\n        id: id,\n        name: name,\n        startClocks: startClocks,\n        service: service,\n        version: version,\n        context: context,\n    };\n    lifeCycle.notify(1 /* LifeCycleEventType.BEFORE_VIEW_CREATED */, viewCreatedEvent);\n    lifeCycle.notify(2 /* LifeCycleEventType.VIEW_CREATED */, viewCreatedEvent);\n    // Update the view every time the measures are changing\n    var _a = throttle(triggerViewUpdate, THROTTLE_VIEW_UPDATE_PERIOD, {\n        leading: false,\n    }), scheduleViewUpdate = _a.throttled, cancelScheduleViewUpdate = _a.cancel;\n    var _b = trackCommonViewMetrics(lifeCycle, domMutationObservable, windowOpenObservable, configuration, scheduleViewUpdate, loadingType, startClocks), setLoadEvent = _b.setLoadEvent, setViewEnd = _b.setViewEnd, stopCommonViewMetricsTracking = _b.stop, stopINPTracking = _b.stopINPTracking, getCommonViewMetrics = _b.getCommonViewMetrics;\n    var _c = loadingType === \"initial_load\" /* ViewLoadingType.INITIAL_LOAD */\n        ? trackInitialViewMetrics(configuration, setLoadEvent, scheduleViewUpdate)\n        : { stop: noop, initialViewMetrics: {} }, stopInitialViewMetricsTracking = _c.stop, initialViewMetrics = _c.initialViewMetrics;\n    var _d = trackViewEventCounts(lifeCycle, id, scheduleViewUpdate), stopEventCountsTracking = _d.stop, eventCounts = _d.eventCounts;\n    // Session keep alive\n    var keepAliveIntervalId = setInterval(triggerViewUpdate, SESSION_KEEP_ALIVE_INTERVAL);\n    // Initial view update\n    triggerViewUpdate();\n    // View context update should always be throttled\n    contextManager.changeObservable.subscribe(function () {\n        lifeCycle.notify(3 /* LifeCycleEventType.BEFORE_VIEW_UPDATED */, {\n            id: id,\n            name: name,\n            context: contextManager.getContext(),\n            startClocks: startClocks,\n        });\n        scheduleViewUpdate();\n    });\n    function triggerViewUpdate() {\n        cancelScheduleViewUpdate();\n        documentVersion += 1;\n        var currentEnd = endClocks === undefined ? timeStampNow() : endClocks.timeStamp;\n        lifeCycle.notify(4 /* LifeCycleEventType.VIEW_UPDATED */, {\n            customTimings: customTimings,\n            documentVersion: documentVersion,\n            id: id,\n            name: name,\n            service: service,\n            version: version,\n            context: contextManager.getContext(),\n            loadingType: loadingType,\n            location: location,\n            startClocks: startClocks,\n            commonViewMetrics: getCommonViewMetrics(),\n            initialViewMetrics: initialViewMetrics,\n            duration: elapsed(startClocks.timeStamp, currentEnd),\n            isActive: endClocks === undefined,\n            sessionIsActive: sessionIsActive,\n            eventCounts: eventCounts,\n        });\n    }\n    return {\n        get name() {\n            return name;\n        },\n        service: service,\n        version: version,\n        contextManager: contextManager,\n        stopObservable: stopObservable,\n        end: function (options) {\n            var _this = this;\n            var _a, _b;\n            if (options === void 0) { options = {}; }\n            if (endClocks) {\n                // view already ended\n                return;\n            }\n            endClocks = (_a = options.endClocks) !== null && _a !== void 0 ? _a : clocksNow();\n            sessionIsActive = (_b = options.sessionIsActive) !== null && _b !== void 0 ? _b : true;\n            lifeCycle.notify(5 /* LifeCycleEventType.VIEW_ENDED */, { endClocks: endClocks });\n            lifeCycle.notify(6 /* LifeCycleEventType.AFTER_VIEW_ENDED */, { endClocks: endClocks });\n            clearInterval(keepAliveIntervalId);\n            setViewEnd(endClocks.relative);\n            stopCommonViewMetricsTracking();\n            triggerViewUpdate();\n            setTimeout(function () {\n                _this.stop();\n            }, KEEP_TRACKING_AFTER_VIEW_DELAY);\n        },\n        stop: function () {\n            stopInitialViewMetricsTracking();\n            stopEventCountsTracking();\n            stopINPTracking();\n            stopObservable.notify();\n        },\n        addTiming: function (name, time) {\n            if (endClocks) {\n                return;\n            }\n            var relativeTime = looksLikeRelativeTime(time) ? time : elapsed(startClocks.timeStamp, time);\n            customTimings[sanitizeTiming(name)] = relativeTime;\n            scheduleViewUpdate();\n        },\n        setViewName: function (updatedName) {\n            name = updatedName;\n            triggerViewUpdate();\n        },\n    };\n}\n/**\n * Timing name is used as facet path that must contain only letters, digits, or the characters - _ . @ $\n */\nfunction sanitizeTiming(name) {\n    var sanitized = name.replace(/[^a-zA-Z0-9-_.@$]/g, '_');\n    if (sanitized !== name) {\n        display.warn(\"Invalid timing name: \".concat(name, \", sanitized to: \").concat(sanitized));\n    }\n    return sanitized;\n}\nfunction areDifferentLocation(currentLocation, otherLocation) {\n    return (currentLocation.pathname !== otherLocation.pathname ||\n        (!isHashAnAnchor(otherLocation.hash) &&\n            getPathFromHash(otherLocation.hash) !== getPathFromHash(currentLocation.hash)));\n}\nfunction isHashAnAnchor(hash) {\n    var correspondingId = hash.substring(1);\n    // check if the correspondingId is empty because on Firefox an empty string passed to getElementById() prints a consol warning\n    return correspondingId !== '' && !!document.getElementById(correspondingId);\n}\nfunction getPathFromHash(hash) {\n    var index = hash.indexOf('?');\n    return index < 0 ? hash : hash.slice(0, index);\n}\n//# sourceMappingURL=trackViews.js.map","import { Observable } from '../../tools/observable';\nimport { createValueHistory } from '../../tools/valueHistory';\nimport { relativeNow, clocksOrigin, ONE_MINUTE } from '../../tools/utils/timeUtils';\nimport { addEventListener, addEventListeners } from '../../browser/addEventListener';\nimport { clearInterval, setInterval } from '../../tools/timer';\nimport { SESSION_TIME_OUT_DELAY } from './sessionConstants';\nimport { startSessionStore } from './sessionStore';\nexport var VISIBILITY_CHECK_DELAY = ONE_MINUTE;\nvar SESSION_CONTEXT_TIMEOUT_DELAY = SESSION_TIME_OUT_DELAY;\nvar stopCallbacks = [];\nexport function startSessionManager(configuration, productKey, computeSessionState, trackingConsentState) {\n    var renewObservable = new Observable();\n    var expireObservable = new Observable();\n    // TODO - Improve configuration type and remove assertion\n    var sessionStore = startSessionStore(configuration.sessionStoreStrategyType, productKey, computeSessionState);\n    stopCallbacks.push(function () { return sessionStore.stop(); });\n    var sessionContextHistory = createValueHistory({\n        expireDelay: SESSION_CONTEXT_TIMEOUT_DELAY,\n    });\n    stopCallbacks.push(function () { return sessionContextHistory.stop(); });\n    sessionStore.renewObservable.subscribe(function () {\n        sessionContextHistory.add(buildSessionContext(), relativeNow());\n        renewObservable.notify();\n    });\n    sessionStore.expireObservable.subscribe(function () {\n        expireObservable.notify();\n        sessionContextHistory.closeActive(relativeNow());\n    });\n    // We expand/renew session unconditionally as tracking consent is always granted when the session\n    // manager is started.\n    sessionStore.expandOrRenewSession();\n    sessionContextHistory.add(buildSessionContext(), clocksOrigin().relative);\n    trackingConsentState.observable.subscribe(function () {\n        if (trackingConsentState.isGranted()) {\n            sessionStore.expandOrRenewSession();\n        }\n        else {\n            sessionStore.expire();\n        }\n    });\n    trackActivity(configuration, function () {\n        if (trackingConsentState.isGranted()) {\n            sessionStore.expandOrRenewSession();\n        }\n    });\n    trackVisibility(configuration, function () { return sessionStore.expandSession(); });\n    trackResume(configuration, function () { return sessionStore.restartSession(); });\n    function buildSessionContext() {\n        return {\n            id: sessionStore.getSession().id,\n            trackingType: sessionStore.getSession()[productKey],\n            isReplayForced: !!sessionStore.getSession().forcedReplay,\n            anonymousId: sessionStore.getSession().anonymousId,\n        };\n    }\n    return {\n        findSession: function (startTime, options) { return sessionContextHistory.find(startTime, options); },\n        renewObservable: renewObservable,\n        expireObservable: expireObservable,\n        sessionStateUpdateObservable: sessionStore.sessionStateUpdateObservable,\n        expire: sessionStore.expire,\n        updateSessionState: sessionStore.updateSessionState,\n    };\n}\nexport function stopSessionManager() {\n    stopCallbacks.forEach(function (e) { return e(); });\n    stopCallbacks = [];\n}\nfunction trackActivity(configuration, expandOrRenewSession) {\n    var stop = addEventListeners(configuration, window, [\"click\" /* DOM_EVENT.CLICK */, \"touchstart\" /* DOM_EVENT.TOUCH_START */, \"keydown\" /* DOM_EVENT.KEY_DOWN */, \"scroll\" /* DOM_EVENT.SCROLL */], expandOrRenewSession, { capture: true, passive: true }).stop;\n    stopCallbacks.push(stop);\n}\nfunction trackVisibility(configuration, expandSession) {\n    var expandSessionWhenVisible = function () {\n        if (document.visibilityState === 'visible') {\n            expandSession();\n        }\n    };\n    var stop = addEventListener(configuration, document, \"visibilitychange\" /* DOM_EVENT.VISIBILITY_CHANGE */, expandSessionWhenVisible).stop;\n    stopCallbacks.push(stop);\n    var visibilityCheckInterval = setInterval(expandSessionWhenVisible, VISIBILITY_CHECK_DELAY);\n    stopCallbacks.push(function () {\n        clearInterval(visibilityCheckInterval);\n    });\n}\nfunction trackResume(configuration, cb) {\n    var stop = addEventListener(configuration, window, \"resume\" /* DOM_EVENT.RESUME */, cb, { capture: true }).stop;\n    stopCallbacks.push(stop);\n}\n//# sourceMappingURL=sessionManager.js.map","import { Observable, bridgeSupports, noop, performDraw, startSessionManager, } from '@datadog/browser-core';\nexport var RUM_SESSION_KEY = 'rum';\nexport function startRumSessionManager(configuration, lifeCycle, trackingConsentState) {\n    var sessionManager = startSessionManager(configuration, RUM_SESSION_KEY, function (rawTrackingType) { return computeSessionState(configuration, rawTrackingType); }, trackingConsentState);\n    sessionManager.expireObservable.subscribe(function () {\n        lifeCycle.notify(9 /* LifeCycleEventType.SESSION_EXPIRED */);\n    });\n    sessionManager.renewObservable.subscribe(function () {\n        lifeCycle.notify(10 /* LifeCycleEventType.SESSION_RENEWED */);\n    });\n    sessionManager.sessionStateUpdateObservable.subscribe(function (_a) {\n        var previousState = _a.previousState, newState = _a.newState;\n        if (!previousState.forcedReplay && newState.forcedReplay) {\n            var sessionEntity = sessionManager.findSession();\n            if (sessionEntity) {\n                sessionEntity.isReplayForced = true;\n            }\n        }\n    });\n    return {\n        findTrackedSession: function (startTime) {\n            var session = sessionManager.findSession(startTime);\n            if (!session || !isTypeTracked(session.trackingType)) {\n                return;\n            }\n            return {\n                id: session.id,\n                sessionReplay: session.trackingType === \"1\" /* RumTrackingType.TRACKED_WITH_SESSION_REPLAY */\n                    ? 1 /* SessionReplayState.SAMPLED */\n                    : session.isReplayForced\n                        ? 2 /* SessionReplayState.FORCED */\n                        : 0 /* SessionReplayState.OFF */,\n                anonymousId: session.anonymousId,\n            };\n        },\n        expire: sessionManager.expire,\n        expireObservable: sessionManager.expireObservable,\n        setForcedReplay: function () { return sessionManager.updateSessionState({ forcedReplay: '1' }); },\n    };\n}\n/**\n * Start a tracked replay session stub\n */\nexport function startRumSessionManagerStub() {\n    var session = {\n        id: '00000000-aaaa-0000-aaaa-000000000000',\n        sessionReplay: bridgeSupports(\"records\" /* BridgeCapability.RECORDS */) ? 1 /* SessionReplayState.SAMPLED */ : 0 /* SessionReplayState.OFF */,\n    };\n    return {\n        findTrackedSession: function () { return session; },\n        expire: noop,\n        expireObservable: new Observable(),\n        setForcedReplay: noop,\n    };\n}\nfunction computeSessionState(configuration, rawTrackingType) {\n    var trackingType;\n    if (hasValidRumSession(rawTrackingType)) {\n        trackingType = rawTrackingType;\n    }\n    else if (!performDraw(configuration.sessionSampleRate)) {\n        trackingType = \"0\" /* RumTrackingType.NOT_TRACKED */;\n    }\n    else if (!performDraw(configuration.sessionReplaySampleRate)) {\n        trackingType = \"2\" /* RumTrackingType.TRACKED_WITHOUT_SESSION_REPLAY */;\n    }\n    else {\n        trackingType = \"1\" /* RumTrackingType.TRACKED_WITH_SESSION_REPLAY */;\n    }\n    return {\n        trackingType: trackingType,\n        isTracked: isTypeTracked(trackingType),\n    };\n}\nfunction hasValidRumSession(trackingType) {\n    return (trackingType === \"0\" /* RumTrackingType.NOT_TRACKED */ ||\n        trackingType === \"1\" /* RumTrackingType.TRACKED_WITH_SESSION_REPLAY */ ||\n        trackingType === \"2\" /* RumTrackingType.TRACKED_WITHOUT_SESSION_REPLAY */);\n}\nfunction isTypeTracked(rumSessionType) {\n    return (rumSessionType === \"2\" /* RumTrackingType.TRACKED_WITHOUT_SESSION_REPLAY */ ||\n        rumSessionType === \"1\" /* RumTrackingType.TRACKED_WITH_SESSION_REPLAY */);\n}\n//# sourceMappingURL=rumSessionManager.js.map","import { DOCS_TROUBLESHOOTING, MORE_DETAILS, display } from '../tools/display';\nimport { objectValues } from '../tools/utils/polyfills';\nimport { isPageExitReason } from '../browser/pageExitObservable';\nimport { jsonStringify } from '../tools/serialisation/jsonStringify';\nimport { computeBytesCount } from '../tools/utils/byteUtils';\nexport function createBatch(_a) {\n    var encoder = _a.encoder, request = _a.request, flushController = _a.flushController, messageBytesLimit = _a.messageBytesLimit;\n    var upsertBuffer = {};\n    var flushSubscription = flushController.flushObservable.subscribe(function (event) { return flush(event); });\n    function push(serializedMessage, estimatedMessageBytesCount, key) {\n        flushController.notifyBeforeAddMessage(estimatedMessageBytesCount);\n        if (key !== undefined) {\n            upsertBuffer[key] = serializedMessage;\n            flushController.notifyAfterAddMessage();\n        }\n        else {\n            encoder.write(encoder.isEmpty ? serializedMessage : \"\\n\".concat(serializedMessage), function (realMessageBytesCount) {\n                flushController.notifyAfterAddMessage(realMessageBytesCount - estimatedMessageBytesCount);\n            });\n        }\n    }\n    function hasMessageFor(key) {\n        return key !== undefined && upsertBuffer[key] !== undefined;\n    }\n    function remove(key) {\n        var removedMessage = upsertBuffer[key];\n        delete upsertBuffer[key];\n        var messageBytesCount = encoder.estimateEncodedBytesCount(removedMessage);\n        flushController.notifyAfterRemoveMessage(messageBytesCount);\n    }\n    function addOrUpdate(message, key) {\n        var serializedMessage = jsonStringify(message);\n        var estimatedMessageBytesCount = encoder.estimateEncodedBytesCount(serializedMessage);\n        if (estimatedMessageBytesCount >= messageBytesLimit) {\n            display.warn(\"Discarded a message whose size was bigger than the maximum allowed size \".concat(messageBytesLimit, \"KB. \").concat(MORE_DETAILS, \" \").concat(DOCS_TROUBLESHOOTING, \"/#technical-limitations\"));\n            return;\n        }\n        if (hasMessageFor(key)) {\n            remove(key);\n        }\n        push(serializedMessage, estimatedMessageBytesCount, key);\n    }\n    function flush(event) {\n        var upsertMessages = objectValues(upsertBuffer).join('\\n');\n        upsertBuffer = {};\n        var isPageExit = isPageExitReason(event.reason);\n        var send = isPageExit ? request.sendOnExit : request.send;\n        if (isPageExit &&\n            // Note: checking that the encoder is async is not strictly needed, but it's an optimization:\n            // if the encoder is async we need to send two requests in some cases (one for encoded data\n            // and the other for non-encoded data). But if it's not async, we don't have to worry about\n            // it and always send a single request.\n            encoder.isAsync) {\n            var encoderResult = encoder.finishSync();\n            // Send encoded messages\n            if (encoderResult.outputBytesCount) {\n                send(formatPayloadFromEncoder(encoderResult));\n            }\n            // Send messages that are not yet encoded at this point\n            var pendingMessages = [encoderResult.pendingData, upsertMessages].filter(Boolean).join('\\n');\n            if (pendingMessages) {\n                send({\n                    data: pendingMessages,\n                    bytesCount: computeBytesCount(pendingMessages),\n                });\n            }\n        }\n        else {\n            if (upsertMessages) {\n                encoder.write(encoder.isEmpty ? upsertMessages : \"\\n\".concat(upsertMessages));\n            }\n            encoder.finish(function (encoderResult) {\n                send(formatPayloadFromEncoder(encoderResult));\n            });\n        }\n    }\n    return {\n        flushController: flushController,\n        add: addOrUpdate,\n        upsert: addOrUpdate,\n        stop: flushSubscription.unsubscribe,\n    };\n}\nfunction formatPayloadFromEncoder(encoderResult) {\n    var data;\n    if (typeof encoderResult.output === 'string') {\n        data = encoderResult.output;\n    }\n    else {\n        data = new Blob([encoderResult.output], {\n            // This will set the 'Content-Type: text/plain' header. Reasoning:\n            // * The intake rejects the request if there is no content type.\n            // * The browser will issue CORS preflight requests if we set it to 'application/json', which\n            // could induce higher intake load (and maybe has other impacts).\n            // * Also it's not quite JSON, since we are concatenating multiple JSON objects separated by\n            // new lines.\n            type: 'text/plain',\n        });\n    }\n    return {\n        data: data,\n        bytesCount: encoderResult.outputBytesCount,\n        encoding: encoderResult.encoding,\n    };\n}\n//# sourceMappingURL=batch.js.map","import { setTimeout } from '../tools/timer';\nimport { clocksNow, ONE_MINUTE, ONE_SECOND } from '../tools/utils/timeUtils';\nimport { ONE_MEBI_BYTE, ONE_KIBI_BYTE } from '../tools/utils/byteUtils';\nimport { isServerError } from '../tools/utils/responseUtils';\nimport { ErrorSource } from '../domain/error/error.types';\nexport var MAX_ONGOING_BYTES_COUNT = 80 * ONE_KIBI_BYTE;\nexport var MAX_ONGOING_REQUESTS = 32;\nexport var MAX_QUEUE_BYTES_COUNT = 3 * ONE_MEBI_BYTE;\nexport var MAX_BACKOFF_TIME = ONE_MINUTE;\nexport var INITIAL_BACKOFF_TIME = ONE_SECOND;\nexport function sendWithRetryStrategy(payload, state, sendStrategy, trackType, reportError) {\n    if (state.transportStatus === 0 /* TransportStatus.UP */ &&\n        state.queuedPayloads.size() === 0 &&\n        state.bandwidthMonitor.canHandle(payload)) {\n        send(payload, state, sendStrategy, {\n            onSuccess: function () { return retryQueuedPayloads(0 /* RetryReason.AFTER_SUCCESS */, state, sendStrategy, trackType, reportError); },\n            onFailure: function () {\n                state.queuedPayloads.enqueue(payload);\n                scheduleRetry(state, sendStrategy, trackType, reportError);\n            },\n        });\n    }\n    else {\n        state.queuedPayloads.enqueue(payload);\n    }\n}\nfunction scheduleRetry(state, sendStrategy, trackType, reportError) {\n    if (state.transportStatus !== 2 /* TransportStatus.DOWN */) {\n        return;\n    }\n    setTimeout(function () {\n        var payload = state.queuedPayloads.first();\n        send(payload, state, sendStrategy, {\n            onSuccess: function () {\n                state.queuedPayloads.dequeue();\n                state.currentBackoffTime = INITIAL_BACKOFF_TIME;\n                retryQueuedPayloads(1 /* RetryReason.AFTER_RESUME */, state, sendStrategy, trackType, reportError);\n            },\n            onFailure: function () {\n                state.currentBackoffTime = Math.min(MAX_BACKOFF_TIME, state.currentBackoffTime * 2);\n                scheduleRetry(state, sendStrategy, trackType, reportError);\n            },\n        });\n    }, state.currentBackoffTime);\n}\nfunction send(payload, state, sendStrategy, _a) {\n    var onSuccess = _a.onSuccess, onFailure = _a.onFailure;\n    state.bandwidthMonitor.add(payload);\n    sendStrategy(payload, function (response) {\n        state.bandwidthMonitor.remove(payload);\n        if (!shouldRetryRequest(response)) {\n            state.transportStatus = 0 /* TransportStatus.UP */;\n            onSuccess();\n        }\n        else {\n            // do not consider transport down if another ongoing request could succeed\n            state.transportStatus =\n                state.bandwidthMonitor.ongoingRequestCount > 0 ? 1 /* TransportStatus.FAILURE_DETECTED */ : 2 /* TransportStatus.DOWN */;\n            payload.retry = {\n                count: payload.retry ? payload.retry.count + 1 : 1,\n                lastFailureStatus: response.status,\n            };\n            onFailure();\n        }\n    });\n}\nfunction retryQueuedPayloads(reason, state, sendStrategy, trackType, reportError) {\n    if (reason === 0 /* RetryReason.AFTER_SUCCESS */ && state.queuedPayloads.isFull() && !state.queueFullReported) {\n        reportError({\n            message: \"Reached max \".concat(trackType, \" events size queued for upload: \").concat(MAX_QUEUE_BYTES_COUNT / ONE_MEBI_BYTE, \"MiB\"),\n            source: ErrorSource.AGENT,\n            startClocks: clocksNow(),\n        });\n        state.queueFullReported = true;\n    }\n    var previousQueue = state.queuedPayloads;\n    state.queuedPayloads = newPayloadQueue();\n    while (previousQueue.size() > 0) {\n        sendWithRetryStrategy(previousQueue.dequeue(), state, sendStrategy, trackType, reportError);\n    }\n}\nfunction shouldRetryRequest(response) {\n    return (response.type !== 'opaque' &&\n        ((response.status === 0 && !navigator.onLine) ||\n            response.status === 408 ||\n            response.status === 429 ||\n            isServerError(response.status)));\n}\nexport function newRetryState() {\n    return {\n        transportStatus: 0 /* TransportStatus.UP */,\n        currentBackoffTime: INITIAL_BACKOFF_TIME,\n        bandwidthMonitor: newBandwidthMonitor(),\n        queuedPayloads: newPayloadQueue(),\n        queueFullReported: false,\n    };\n}\nfunction newPayloadQueue() {\n    var queue = [];\n    return {\n        bytesCount: 0,\n        enqueue: function (payload) {\n            if (this.isFull()) {\n                return;\n            }\n            queue.push(payload);\n            this.bytesCount += payload.bytesCount;\n        },\n        first: function () {\n            return queue[0];\n        },\n        dequeue: function () {\n            var payload = queue.shift();\n            if (payload) {\n                this.bytesCount -= payload.bytesCount;\n            }\n            return payload;\n        },\n        size: function () {\n            return queue.length;\n        },\n        isFull: function () {\n            return this.bytesCount >= MAX_QUEUE_BYTES_COUNT;\n        },\n    };\n}\nfunction newBandwidthMonitor() {\n    return {\n        ongoingRequestCount: 0,\n        ongoingByteCount: 0,\n        canHandle: function (payload) {\n            return (this.ongoingRequestCount === 0 ||\n                (this.ongoingByteCount + payload.bytesCount <= MAX_ONGOING_BYTES_COUNT &&\n                    this.ongoingRequestCount < MAX_ONGOING_REQUESTS));\n        },\n        add: function (payload) {\n            this.ongoingRequestCount += 1;\n            this.ongoingByteCount += payload.bytesCount;\n        },\n        remove: function (payload) {\n            this.ongoingRequestCount -= 1;\n            this.ongoingByteCount -= payload.bytesCount;\n        },\n    };\n}\n//# sourceMappingURL=sendWithRetryStrategy.js.map","export function isServerError(status) {\n    return status >= 500;\n}\nexport function tryToClone(response) {\n    try {\n        return response.clone();\n    }\n    catch (_a) {\n        // clone can throw if the response has already been used by another instrumentation or is disturbed\n        return;\n    }\n}\n//# sourceMappingURL=responseUtils.js.map","import { addTelemetryError } from '../domain/telemetry';\nimport { monitor } from '../tools/monitor';\nimport { addEventListener } from '../browser/addEventListener';\nimport { newRetryState, sendWithRetryStrategy } from './sendWithRetryStrategy';\nexport function createHttpRequest(endpointBuilder, bytesLimit, reportError) {\n    var retryState = newRetryState();\n    var sendStrategyForRetry = function (payload, onResponse) {\n        return fetchKeepAliveStrategy(endpointBuilder, bytesLimit, payload, onResponse);\n    };\n    return {\n        send: function (payload) {\n            sendWithRetryStrategy(payload, retryState, sendStrategyForRetry, endpointBuilder.trackType, reportError);\n        },\n        /**\n         * Since fetch keepalive behaves like regular fetch on Firefox,\n         * keep using sendBeaconStrategy on exit\n         */\n        sendOnExit: function (payload) {\n            sendBeaconStrategy(endpointBuilder, bytesLimit, payload);\n        },\n    };\n}\nfunction sendBeaconStrategy(endpointBuilder, bytesLimit, payload) {\n    var canUseBeacon = !!navigator.sendBeacon && payload.bytesCount < bytesLimit;\n    if (canUseBeacon) {\n        try {\n            var beaconUrl = endpointBuilder.build('beacon', payload);\n            var isQueued = navigator.sendBeacon(beaconUrl, payload.data);\n            if (isQueued) {\n                return;\n            }\n        }\n        catch (e) {\n            reportBeaconError(e);\n        }\n    }\n    var xhrUrl = endpointBuilder.build('xhr', payload);\n    sendXHR(xhrUrl, payload.data);\n}\nvar hasReportedBeaconError = false;\nfunction reportBeaconError(e) {\n    if (!hasReportedBeaconError) {\n        hasReportedBeaconError = true;\n        addTelemetryError(e);\n    }\n}\nexport function fetchKeepAliveStrategy(endpointBuilder, bytesLimit, payload, onResponse) {\n    var canUseKeepAlive = isKeepAliveSupported() && payload.bytesCount < bytesLimit;\n    if (canUseKeepAlive) {\n        var fetchUrl = endpointBuilder.build('fetch', payload);\n        fetch(fetchUrl, { method: 'POST', body: payload.data, keepalive: true, mode: 'cors' }).then(monitor(function (response) { return onResponse === null || onResponse === void 0 ? void 0 : onResponse({ status: response.status, type: response.type }); }), monitor(function () {\n            var xhrUrl = endpointBuilder.build('xhr', payload);\n            // failed to queue the request\n            sendXHR(xhrUrl, payload.data, onResponse);\n        }));\n    }\n    else {\n        var xhrUrl = endpointBuilder.build('xhr', payload);\n        sendXHR(xhrUrl, payload.data, onResponse);\n    }\n}\nfunction isKeepAliveSupported() {\n    // Request can throw, cf https://developer.mozilla.org/en-US/docs/Web/API/Request/Request#errors\n    try {\n        return window.Request && 'keepalive' in new Request('http://a');\n    }\n    catch (_a) {\n        return false;\n    }\n}\nexport function sendXHR(url, data, onResponse) {\n    var request = new XMLHttpRequest();\n    request.open('POST', url, true);\n    if (data instanceof Blob) {\n        // When using a Blob instance, IE does not use its 'type' to define the 'Content-Type' header\n        // automatically, so the intake request ends up being rejected with an HTTP status 415\n        // Defining the header manually fixes this issue.\n        request.setRequestHeader('Content-Type', data.type);\n    }\n    addEventListener(\n    // allow untrusted event to acount for synthetic event dispatched by third party xhr wrapper\n    { allowUntrustedEvents: true }, request, 'loadend', function () {\n        onResponse === null || onResponse === void 0 ? void 0 : onResponse({ status: request.status });\n    }, {\n        // prevent multiple onResponse callbacks\n        // if the xhr instance is reused by a third party\n        once: true,\n    });\n    request.send(data);\n}\n//# sourceMappingURL=httpRequest.js.map","import { addEventListener, instrumentMethod, Observable, shallowClone } from '@datadog/browser-core';\nexport function createLocationChangeObservable(configuration, location) {\n    var currentLocation = shallowClone(location);\n    return new Observable(function (observable) {\n        var stopHistoryTracking = trackHistory(configuration, onLocationChange).stop;\n        var stopHashTracking = trackHash(configuration, onLocationChange).stop;\n        function onLocationChange() {\n            if (currentLocation.href === location.href) {\n                return;\n            }\n            var newLocation = shallowClone(location);\n            observable.notify({\n                newLocation: newLocation,\n                oldLocation: currentLocation,\n            });\n            currentLocation = newLocation;\n        }\n        return function () {\n            stopHistoryTracking();\n            stopHashTracking();\n        };\n    });\n}\nfunction trackHistory(configuration, onHistoryChange) {\n    var stopInstrumentingPushState = instrumentMethod(getHistoryInstrumentationTarget('pushState'), 'pushState', function (_a) {\n        var onPostCall = _a.onPostCall;\n        onPostCall(onHistoryChange);\n    }).stop;\n    var stopInstrumentingReplaceState = instrumentMethod(getHistoryInstrumentationTarget('replaceState'), 'replaceState', function (_a) {\n        var onPostCall = _a.onPostCall;\n        onPostCall(onHistoryChange);\n    }).stop;\n    var removeListener = addEventListener(configuration, window, \"popstate\" /* DOM_EVENT.POP_STATE */, onHistoryChange).stop;\n    return {\n        stop: function () {\n            stopInstrumentingPushState();\n            stopInstrumentingReplaceState();\n            removeListener();\n        },\n    };\n}\nfunction trackHash(configuration, onHashChange) {\n    return addEventListener(configuration, window, \"hashchange\" /* DOM_EVENT.HASH_CHANGE */, onHashChange);\n}\nfunction getHistoryInstrumentationTarget(methodName) {\n    // Ideally we should always instument the method on the prototype, however some frameworks (e.g [Next.js](https://github.com/vercel/next.js/blob/d3f5532065f3e3bb84fb54bd2dfd1a16d0f03a21/packages/next/src/client/components/app-router.tsx#L429))\n    // are wrapping the instance method. In that case we should also wrap the instance method.\n    return Object.prototype.hasOwnProperty.call(history, methodName) ? history : History.prototype;\n}\n//# sourceMappingURL=locationChangeObservable.js.map","import { elapsed, createValueHistory, SESSION_TIME_OUT_DELAY, toServerDuration, addEventListeners, relativeNow, } from '@datadog/browser-core';\n// Arbitrary value to cap number of element for memory consumption in the browser\nexport var MAX_PAGE_STATE_ENTRIES = 4000;\n// Arbitrary value to cap number of element for backend & to save bandwidth\nexport var MAX_PAGE_STATE_ENTRIES_SELECTABLE = 500;\nexport var PAGE_STATE_CONTEXT_TIME_OUT_DELAY = SESSION_TIME_OUT_DELAY;\nexport function startPageStateHistory(configuration, maxPageStateEntriesSelectable) {\n    if (maxPageStateEntriesSelectable === void 0) { maxPageStateEntriesSelectable = MAX_PAGE_STATE_ENTRIES_SELECTABLE; }\n    var pageStateEntryHistory = createValueHistory({\n        expireDelay: PAGE_STATE_CONTEXT_TIME_OUT_DELAY,\n        maxEntries: MAX_PAGE_STATE_ENTRIES,\n    });\n    var currentPageState;\n    addPageState(getPageState(), relativeNow());\n    var stopEventListeners = addEventListeners(configuration, window, [\n        \"pageshow\" /* DOM_EVENT.PAGE_SHOW */,\n        \"focus\" /* DOM_EVENT.FOCUS */,\n        \"blur\" /* DOM_EVENT.BLUR */,\n        \"visibilitychange\" /* DOM_EVENT.VISIBILITY_CHANGE */,\n        \"resume\" /* DOM_EVENT.RESUME */,\n        \"freeze\" /* DOM_EVENT.FREEZE */,\n        \"pagehide\" /* DOM_EVENT.PAGE_HIDE */,\n    ], function (event) {\n        addPageState(computePageState(event), event.timeStamp);\n    }, { capture: true }).stop;\n    function addPageState(nextPageState, startTime) {\n        if (startTime === void 0) { startTime = relativeNow(); }\n        if (nextPageState === currentPageState) {\n            return;\n        }\n        currentPageState = nextPageState;\n        pageStateEntryHistory.closeActive(startTime);\n        pageStateEntryHistory.add({ state: currentPageState, startTime: startTime }, startTime);\n    }\n    var pageStateHistory = {\n        findAll: function (eventStartTime, duration) {\n            var pageStateEntries = pageStateEntryHistory.findAll(eventStartTime, duration);\n            if (pageStateEntries.length === 0) {\n                return;\n            }\n            var pageStateServerEntries = [];\n            // limit the number of entries to return\n            var limit = Math.max(0, pageStateEntries.length - maxPageStateEntriesSelectable);\n            // loop page state entries backward to return the selected ones in desc order\n            for (var index = pageStateEntries.length - 1; index >= limit; index--) {\n                var pageState = pageStateEntries[index];\n                // compute the start time relative to the event start time (ex: to be relative to the view start time)\n                var relativeStartTime = elapsed(eventStartTime, pageState.startTime);\n                pageStateServerEntries.push({\n                    state: pageState.state,\n                    start: toServerDuration(relativeStartTime),\n                });\n            }\n            return pageStateServerEntries;\n        },\n        wasInPageStateAt: function (state, startTime) {\n            return pageStateHistory.wasInPageStateDuringPeriod(state, startTime, 0);\n        },\n        wasInPageStateDuringPeriod: function (state, startTime, duration) {\n            return pageStateEntryHistory.findAll(startTime, duration).some(function (pageState) { return pageState.state === state; });\n        },\n        addPageState: addPageState,\n        stop: function () {\n            stopEventListeners();\n            pageStateEntryHistory.stop();\n        },\n    };\n    return pageStateHistory;\n}\nfunction computePageState(event) {\n    if (event.type === \"freeze\" /* DOM_EVENT.FREEZE */) {\n        return \"frozen\" /* PageState.FROZEN */;\n    }\n    else if (event.type === \"pagehide\" /* DOM_EVENT.PAGE_HIDE */) {\n        return event.persisted ? \"frozen\" /* PageState.FROZEN */ : \"terminated\" /* PageState.TERMINATED */;\n    }\n    return getPageState();\n}\nfunction getPageState() {\n    if (document.visibilityState === 'hidden') {\n        return \"hidden\" /* PageState.HIDDEN */;\n    }\n    if (document.hasFocus()) {\n        return \"active\" /* PageState.ACTIVE */;\n    }\n    return \"passive\" /* PageState.PASSIVE */;\n}\n//# sourceMappingURL=pageStateHistory.js.map","import { setInterval, clearInterval, Observable, addEventListener, ONE_SECOND, findCommaSeparatedValue, find, } from '@datadog/browser-core';\nexport function createCookieObservable(configuration, cookieName) {\n    var detectCookieChangeStrategy = window.cookieStore\n        ? listenToCookieStoreChange(configuration)\n        : watchCookieFallback;\n    return new Observable(function (observable) {\n        return detectCookieChangeStrategy(cookieName, function (event) { return observable.notify(event); });\n    });\n}\nfunction listenToCookieStoreChange(configuration) {\n    return function (cookieName, callback) {\n        var listener = addEventListener(configuration, window.cookieStore, \"change\" /* DOM_EVENT.CHANGE */, function (event) {\n            // Based on our experimentation, we're assuming that entries for the same cookie cannot be in both the 'changed' and 'deleted' arrays.\n            // However, due to ambiguity in the specification, we asked for clarification: https://github.com/WICG/cookie-store/issues/226\n            var changeEvent = find(event.changed, function (event) { return event.name === cookieName; }) ||\n                find(event.deleted, function (event) { return event.name === cookieName; });\n            if (changeEvent) {\n                callback(changeEvent.value);\n            }\n        });\n        return listener.stop;\n    };\n}\nexport var WATCH_COOKIE_INTERVAL_DELAY = ONE_SECOND;\nfunction watchCookieFallback(cookieName, callback) {\n    var previousCookieValue = findCommaSeparatedValue(document.cookie, cookieName);\n    var watchCookieIntervalId = setInterval(function () {\n        var cookieValue = findCommaSeparatedValue(document.cookie, cookieName);\n        if (cookieValue !== previousCookieValue) {\n            callback(cookieValue);\n        }\n    }, WATCH_COOKIE_INTERVAL_DELAY);\n    return function () {\n        clearInterval(watchCookieIntervalId);\n    };\n}\n//# sourceMappingURL=cookieObservable.js.map","import { getInitCookie } from '@datadog/browser-core';\nimport { createCookieObservable } from '../../browser/cookieObservable';\nexport var CI_VISIBILITY_TEST_ID_COOKIE_NAME = 'datadog-ci-visibility-test-execution-id';\nexport function startCiVisibilityContext(configuration, cookieObservable) {\n    var _a;\n    if (cookieObservable === void 0) { cookieObservable = createCookieObservable(configuration, CI_VISIBILITY_TEST_ID_COOKIE_NAME); }\n    var testExecutionId = getInitCookie(CI_VISIBILITY_TEST_ID_COOKIE_NAME) || ((_a = window.Cypress) === null || _a === void 0 ? void 0 : _a.env('traceId'));\n    var cookieObservableSubscription = cookieObservable.subscribe(function (value) {\n        testExecutionId = value;\n    });\n    return {\n        get: function () {\n            if (typeof testExecutionId === 'string') {\n                return {\n                    test_execution_id: testExecutionId,\n                };\n            }\n        },\n        stop: function () { return cookieObservableSubscription.unsubscribe(); },\n    };\n}\n//# sourceMappingURL=ciVisibilityContext.js.map","import { buildUrl } from '@datadog/browser-core';\nimport { getParentNode, isNodeShadowRoot, CENSORED_STRING_MARK, shouldMaskNode } from '@datadog/browser-rum-core';\nvar serializedNodeIds = new WeakMap();\nexport function hasSerializedNode(node) {\n    return serializedNodeIds.has(node);\n}\nexport function nodeAndAncestorsHaveSerializedNode(node) {\n    var current = node;\n    while (current) {\n        if (!hasSerializedNode(current) && !isNodeShadowRoot(current)) {\n            return false;\n        }\n        current = getParentNode(current);\n    }\n    return true;\n}\nexport function getSerializedNodeId(node) {\n    return serializedNodeIds.get(node);\n}\nexport function setSerializedNodeId(node, serializeNodeId) {\n    serializedNodeIds.set(node, serializeNodeId);\n}\n/**\n * Get the element \"value\" to be serialized as an attribute or an input update record. It respects\n * the input privacy mode of the element.\n * PERFROMANCE OPTIMIZATION: Assumes that privacy level `HIDDEN` is never encountered because of earlier checks.\n */\nexport function getElementInputValue(element, nodePrivacyLevel) {\n    /*\n     BROWSER SPEC NOTE: <input>, <select>\n     For some <input> elements, the `value` is an exceptional property/attribute that has the\n     value synced between el.value and el.getAttribute()\n     input[type=button,checkbox,hidden,image,radio,reset,submit]\n     */\n    var tagName = element.tagName;\n    var value = element.value;\n    if (shouldMaskNode(element, nodePrivacyLevel)) {\n        var type = element.type;\n        if (tagName === 'INPUT' && (type === 'button' || type === 'submit' || type === 'reset')) {\n            // Overrule `MASK` privacy level for button-like element values, as they are used during replay\n            // to display their label. They can still be hidden via the \"hidden\" privacy attribute or class name.\n            return value;\n        }\n        else if (!value || tagName === 'OPTION') {\n            // <Option> value provides no benefit\n            return;\n        }\n        return CENSORED_STRING_MARK;\n    }\n    if (tagName === 'OPTION' || tagName === 'SELECT') {\n        return element.value;\n    }\n    if (tagName !== 'INPUT' && tagName !== 'TEXTAREA') {\n        return;\n    }\n    return value;\n}\nexport var URL_IN_CSS_REF = /url\\((?:(')([^']*)'|(\")([^\"]*)\"|([^)]*))\\)/gm;\nexport var ABSOLUTE_URL = /^[A-Za-z]+:|^\\/\\//;\nexport var DATA_URI = /^data:.*,/i;\nexport function switchToAbsoluteUrl(cssText, cssHref) {\n    return cssText.replace(URL_IN_CSS_REF, function (matchingSubstring, singleQuote, urlWrappedInSingleQuotes, doubleQuote, urlWrappedInDoubleQuotes, urlNotWrappedInQuotes) {\n        var url = urlWrappedInSingleQuotes || urlWrappedInDoubleQuotes || urlNotWrappedInQuotes;\n        if (!cssHref || !url || ABSOLUTE_URL.test(url) || DATA_URI.test(url)) {\n            return matchingSubstring;\n        }\n        var quote = singleQuote || doubleQuote || '';\n        return \"url(\".concat(quote).concat(makeUrlAbsolute(url, cssHref)).concat(quote, \")\");\n    });\n}\nexport function makeUrlAbsolute(url, baseUrl) {\n    try {\n        return buildUrl(url, baseUrl).href;\n    }\n    catch (_a) {\n        return url;\n    }\n}\nvar TAG_NAME_REGEX = /[^a-z1-6-_]/;\nexport function getValidTagName(tagName) {\n    var processedTagName = tagName.toLowerCase().trim();\n    if (TAG_NAME_REGEX.test(processedTagName)) {\n        // if the tag name is odd and we cannot extract\n        // anything from the string, then we return a\n        // generic div\n        return 'div';\n    }\n    return processedTagName;\n}\nexport function censoredImageForSize(width, height) {\n    return \"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='\".concat(width, \"' height='\").concat(height, \"' style='background-color:silver'%3E%3C/svg%3E\");\n}\n//# sourceMappingURL=serializationUtils.js.map","export function serializeStyleSheets(cssStyleSheets) {\n    if (cssStyleSheets === undefined || cssStyleSheets.length === 0) {\n        return undefined;\n    }\n    return cssStyleSheets.map(function (cssStyleSheet) {\n        var rules = cssStyleSheet.cssRules || cssStyleSheet.rules;\n        var cssRules = Array.from(rules, function (cssRule) { return cssRule.cssText; });\n        var styleSheet = {\n            cssRules: cssRules,\n            disabled: cssStyleSheet.disabled || undefined,\n            media: cssStyleSheet.media.length > 0 ? Array.from(cssStyleSheet.media) : undefined,\n        };\n        return styleSheet;\n    });\n}\n//# sourceMappingURL=serializeStyleSheets.js.map","import { startsWith } from '@datadog/browser-core';\nimport { NodePrivacyLevel, PRIVACY_ATTR_NAME, CENSORED_STRING_MARK, CENSORED_IMG_MARK, STABLE_ATTRIBUTES, isLongDataUrl, sanitizeDataUrl, } from '@datadog/browser-rum-core';\nimport { censoredImageForSize } from './serializationUtils';\nexport function serializeAttribute(element, nodePrivacyLevel, attributeName, configuration) {\n    if (nodePrivacyLevel === NodePrivacyLevel.HIDDEN) {\n        // dup condition for direct access case\n        return null;\n    }\n    var attributeValue = element.getAttribute(attributeName);\n    if (nodePrivacyLevel === NodePrivacyLevel.MASK &&\n        attributeName !== PRIVACY_ATTR_NAME &&\n        !STABLE_ATTRIBUTES.includes(attributeName) &&\n        attributeName !== configuration.actionNameAttribute) {\n        var tagName = element.tagName;\n        switch (attributeName) {\n            // Mask Attribute text content\n            case 'title':\n            case 'alt':\n            case 'placeholder':\n                return CENSORED_STRING_MARK;\n        }\n        // mask image URLs\n        if (tagName === 'IMG' && (attributeName === 'src' || attributeName === 'srcset')) {\n            // generate image with similar dimension than the original to have the same rendering behaviour\n            var image = element;\n            if (image.naturalWidth > 0) {\n                return censoredImageForSize(image.naturalWidth, image.naturalHeight);\n            }\n            var _a = element.getBoundingClientRect(), width = _a.width, height = _a.height;\n            if (width > 0 || height > 0) {\n                return censoredImageForSize(width, height);\n            }\n            // if we can't get the image size, fallback to the censored image\n            return CENSORED_IMG_MARK;\n        }\n        // mask source URLs\n        if (tagName === 'SOURCE' && (attributeName === 'src' || attributeName === 'srcset')) {\n            return CENSORED_IMG_MARK;\n        }\n        // mask <a> URLs\n        if (tagName === 'A' && attributeName === 'href') {\n            return CENSORED_STRING_MARK;\n        }\n        // mask data-* attributes\n        if (attributeValue && startsWith(attributeName, 'data-')) {\n            // Exception: it's safe to reveal the `${PRIVACY_ATTR_NAME}` attr\n            return CENSORED_STRING_MARK;\n        }\n        // mask iframe srcdoc\n        if (tagName === 'IFRAME' && attributeName === 'srcdoc') {\n            return CENSORED_STRING_MARK;\n        }\n    }\n    if (!attributeValue || typeof attributeValue !== 'string') {\n        return attributeValue;\n    }\n    // Minimum Fix for customer.\n    if (isLongDataUrl(attributeValue)) {\n        return sanitizeDataUrl(attributeValue);\n    }\n    return attributeValue;\n}\n//# sourceMappingURL=serializeAttribute.js.map","import { NodePrivacyLevel, shouldMaskNode } from '@datadog/browser-rum-core';\nimport { isSafari } from '@datadog/browser-core';\nimport { getElementInputValue, switchToAbsoluteUrl, getValidTagName } from './serializationUtils';\nimport { serializeAttribute } from './serializeAttribute';\nexport function serializeAttributes(element, nodePrivacyLevel, options) {\n    var _a;\n    if (nodePrivacyLevel === NodePrivacyLevel.HIDDEN) {\n        return {};\n    }\n    var safeAttrs = {};\n    var tagName = getValidTagName(element.tagName);\n    var doc = element.ownerDocument;\n    for (var i = 0; i < element.attributes.length; i += 1) {\n        var attribute = element.attributes.item(i);\n        var attributeName = attribute.name;\n        var attributeValue = serializeAttribute(element, nodePrivacyLevel, attributeName, options.configuration);\n        if (attributeValue !== null) {\n            safeAttrs[attributeName] = attributeValue;\n        }\n    }\n    if (element.value &&\n        (tagName === 'textarea' || tagName === 'select' || tagName === 'option' || tagName === 'input')) {\n        var formValue = getElementInputValue(element, nodePrivacyLevel);\n        if (formValue !== undefined) {\n            safeAttrs.value = formValue;\n        }\n    }\n    /**\n     * <Option> can be selected, which occurs if its `value` matches ancestor `<Select>.value`\n     */\n    if (tagName === 'option' && nodePrivacyLevel === NodePrivacyLevel.ALLOW) {\n        // For privacy=`MASK`, all the values would be the same, so skip.\n        var optionElement = element;\n        if (optionElement.selected) {\n            safeAttrs.selected = optionElement.selected;\n        }\n    }\n    // remote css\n    if (tagName === 'link') {\n        var stylesheet = Array.from(doc.styleSheets).find(function (s) { return s.href === element.href; });\n        var cssText = getCssRulesString(stylesheet);\n        if (cssText && stylesheet) {\n            safeAttrs._cssText = cssText;\n        }\n    }\n    // dynamic stylesheet\n    if (tagName === 'style' && element.sheet) {\n        var cssText = getCssRulesString(element.sheet);\n        if (cssText) {\n            safeAttrs._cssText = cssText;\n        }\n    }\n    /**\n     * Forms: input[type=checkbox,radio]\n     * The `checked` property for <input> is a little bit special:\n     * 1. el.checked is a setter that returns if truthy.\n     * 2. getAttribute returns the string value\n     * getAttribute('checked') does not sync with `Element.checked`, so use JS property\n     * NOTE: `checked` property exists on `HTMLInputElement`. For serializer assumptions, we check for type=radio|check.\n     */\n    var inputElement = element;\n    if (tagName === 'input' && (inputElement.type === 'radio' || inputElement.type === 'checkbox')) {\n        if (nodePrivacyLevel === NodePrivacyLevel.ALLOW) {\n            safeAttrs.checked = !!inputElement.checked;\n        }\n        else if (shouldMaskNode(inputElement, nodePrivacyLevel)) {\n            delete safeAttrs.checked;\n        }\n    }\n    /**\n     * Serialize the media playback state\n     */\n    if (tagName === 'audio' || tagName === 'video') {\n        var mediaElement = element;\n        safeAttrs.rr_mediaState = mediaElement.paused ? 'paused' : 'played';\n    }\n    /**\n     * Serialize the scroll state for each element only for full snapshot\n     */\n    var scrollTop;\n    var scrollLeft;\n    var serializationContext = options.serializationContext;\n    switch (serializationContext.status) {\n        case 0 /* SerializationContextStatus.INITIAL_FULL_SNAPSHOT */:\n            scrollTop = Math.round(element.scrollTop);\n            scrollLeft = Math.round(element.scrollLeft);\n            if (scrollTop || scrollLeft) {\n                serializationContext.elementsScrollPositions.set(element, { scrollTop: scrollTop, scrollLeft: scrollLeft });\n            }\n            break;\n        case 1 /* SerializationContextStatus.SUBSEQUENT_FULL_SNAPSHOT */:\n            if (serializationContext.elementsScrollPositions.has(element)) {\n                ;\n                (_a = serializationContext.elementsScrollPositions.get(element), scrollTop = _a.scrollTop, scrollLeft = _a.scrollLeft);\n            }\n            break;\n    }\n    if (scrollLeft) {\n        safeAttrs.rr_scrollLeft = scrollLeft;\n    }\n    if (scrollTop) {\n        safeAttrs.rr_scrollTop = scrollTop;\n    }\n    return safeAttrs;\n}\nexport function getCssRulesString(cssStyleSheet) {\n    if (!cssStyleSheet) {\n        return null;\n    }\n    var rules;\n    try {\n        rules = cssStyleSheet.rules || cssStyleSheet.cssRules;\n    }\n    catch (_a) {\n        // if css is protected by CORS we cannot access cssRules see: https://www.w3.org/TR/cssom-1/#the-cssstylesheet-interface\n    }\n    if (!rules) {\n        return null;\n    }\n    var styleSheetCssText = Array.from(rules, isSafari() ? getCssRuleStringForSafari : getCssRuleString).join('');\n    return switchToAbsoluteUrl(styleSheetCssText, cssStyleSheet.href);\n}\nfunction getCssRuleStringForSafari(rule) {\n    // Safari does not escape attribute selectors containing : properly\n    // https://bugs.webkit.org/show_bug.cgi?id=184604\n    if (isCSSStyleRule(rule) && rule.selectorText.includes(':')) {\n        // This regex replaces [foo:bar] by [foo\\\\:bar]\n        var escapeColon = /(\\[[\\w-]+[^\\\\])(:[^\\]]+\\])/g;\n        return rule.cssText.replace(escapeColon, '$1\\\\$2');\n    }\n    return getCssRuleString(rule);\n}\nfunction getCssRuleString(rule) {\n    // If it's an @import rule, try to inline sub-rules recursively with `getCssRulesString`. This\n    // operation can fail if the imported stylesheet is protected by CORS, in which case we fallback\n    // to the @import rule CSS text.\n    return (isCSSImportRule(rule) && getCssRulesString(rule.styleSheet)) || rule.cssText;\n}\nfunction isCSSImportRule(rule) {\n    return 'styleSheet' in rule;\n}\nfunction isCSSStyleRule(rule) {\n    return 'selectorText' in rule;\n}\n//# sourceMappingURL=serializeAttributes.js.map","import { reducePrivacyLevel, getNodeSelfPrivacyLevel, getTextContent, isNodeShadowRoot, hasChildNodes, forEachChildNodes, NodePrivacyLevel, PRIVACY_ATTR_NAME, PRIVACY_ATTR_VALUE_HIDDEN, } from '@datadog/browser-rum-core';\nimport { assign } from '@datadog/browser-core';\nimport { NodeType } from '../../../types';\nimport { getSerializedNodeId, getValidTagName, setSerializedNodeId } from './serializationUtils';\nimport { serializeStyleSheets } from './serializeStyleSheets';\nimport { serializeAttributes } from './serializeAttributes';\nexport function serializeNodeWithId(node, options) {\n    var serializedNode = serializeNode(node, options);\n    if (!serializedNode) {\n        return null;\n    }\n    // Try to reuse the previous id\n    var id = getSerializedNodeId(node) || generateNextId();\n    var serializedNodeWithId = serializedNode;\n    serializedNodeWithId.id = id;\n    setSerializedNodeId(node, id);\n    if (options.serializedNodeIds) {\n        options.serializedNodeIds.add(id);\n    }\n    return serializedNodeWithId;\n}\nvar _nextId = 1;\nexport function generateNextId() {\n    return _nextId++;\n}\nexport function serializeChildNodes(node, options) {\n    var result = [];\n    forEachChildNodes(node, function (childNode) {\n        var serializedChildNode = serializeNodeWithId(childNode, options);\n        if (serializedChildNode) {\n            result.push(serializedChildNode);\n        }\n    });\n    return result;\n}\nfunction serializeNode(node, options) {\n    switch (node.nodeType) {\n        case node.DOCUMENT_NODE:\n            return serializeDocumentNode(node, options);\n        case node.DOCUMENT_FRAGMENT_NODE:\n            return serializeDocumentFragmentNode(node, options);\n        case node.DOCUMENT_TYPE_NODE:\n            return serializeDocumentTypeNode(node);\n        case node.ELEMENT_NODE:\n            return serializeElementNode(node, options);\n        case node.TEXT_NODE:\n            return serializeTextNode(node, options);\n        case node.CDATA_SECTION_NODE:\n            return serializeCDataNode();\n    }\n}\nexport function serializeDocumentNode(document, options) {\n    return {\n        type: NodeType.Document,\n        childNodes: serializeChildNodes(document, options),\n        adoptedStyleSheets: serializeStyleSheets(document.adoptedStyleSheets),\n    };\n}\nfunction serializeDocumentFragmentNode(element, options) {\n    var isShadowRoot = isNodeShadowRoot(element);\n    if (isShadowRoot) {\n        options.serializationContext.shadowRootsController.addShadowRoot(element);\n    }\n    return {\n        type: NodeType.DocumentFragment,\n        childNodes: serializeChildNodes(element, options),\n        isShadowRoot: isShadowRoot,\n        adoptedStyleSheets: isShadowRoot ? serializeStyleSheets(element.adoptedStyleSheets) : undefined,\n    };\n}\nfunction serializeDocumentTypeNode(documentType) {\n    return {\n        type: NodeType.DocumentType,\n        name: documentType.name,\n        publicId: documentType.publicId,\n        systemId: documentType.systemId,\n    };\n}\n/**\n * Serializing Element nodes involves capturing:\n * 1. HTML ATTRIBUTES:\n * 2. JS STATE:\n * - scroll offsets\n * - Form fields (input value, checkbox checked, option selection, range)\n * - Canvas state,\n * - Media (video/audio) play mode + currentTime\n * - iframe contents\n * - webcomponents\n * 3. CUSTOM PROPERTIES:\n * - height+width for when `hidden` to cover the element\n * 4. EXCLUDED INTERACTION STATE:\n * - focus (possible, but not worth perf impact)\n * - hover (tracked only via mouse activity)\n * - fullscreen mode\n */\nfunction serializeElementNode(element, options) {\n    var _a;\n    var tagName = getValidTagName(element.tagName);\n    var isSVG = isSVGElement(element) || undefined;\n    // For performance reason, we don't use getNodePrivacyLevel directly: we leverage the\n    // parentNodePrivacyLevel option to avoid iterating over all parents\n    var nodePrivacyLevel = reducePrivacyLevel(getNodeSelfPrivacyLevel(element), options.parentNodePrivacyLevel);\n    if (nodePrivacyLevel === NodePrivacyLevel.HIDDEN) {\n        var _b = element.getBoundingClientRect(), width = _b.width, height = _b.height;\n        return {\n            type: NodeType.Element,\n            tagName: tagName,\n            attributes: (_a = {\n                    rr_width: \"\".concat(width, \"px\"),\n                    rr_height: \"\".concat(height, \"px\")\n                },\n                _a[PRIVACY_ATTR_NAME] = PRIVACY_ATTR_VALUE_HIDDEN,\n                _a),\n            childNodes: [],\n            isSVG: isSVG,\n        };\n    }\n    // Ignore Elements like Script and some Link, Metas\n    if (nodePrivacyLevel === NodePrivacyLevel.IGNORE) {\n        return;\n    }\n    var attributes = serializeAttributes(element, nodePrivacyLevel, options);\n    var childNodes = [];\n    if (hasChildNodes(element) &&\n        // Do not serialize style children as the css rules are already in the _cssText attribute\n        tagName !== 'style') {\n        // OBJECT POOLING OPTIMIZATION:\n        // We should not create a new object systematically as it could impact performances. Try to reuse\n        // the same object as much as possible, and clone it only if we need to.\n        var childNodesSerializationOptions = void 0;\n        if (options.parentNodePrivacyLevel === nodePrivacyLevel && options.ignoreWhiteSpace === (tagName === 'head')) {\n            childNodesSerializationOptions = options;\n        }\n        else {\n            childNodesSerializationOptions = assign({}, options, {\n                parentNodePrivacyLevel: nodePrivacyLevel,\n                ignoreWhiteSpace: tagName === 'head',\n            });\n        }\n        childNodes = serializeChildNodes(element, childNodesSerializationOptions);\n    }\n    return {\n        type: NodeType.Element,\n        tagName: tagName,\n        attributes: attributes,\n        childNodes: childNodes,\n        isSVG: isSVG,\n    };\n}\nfunction isSVGElement(el) {\n    return el.tagName === 'svg' || el instanceof SVGElement;\n}\n/**\n * Text Nodes are dependant on Element nodes\n * Privacy levels are set on elements so we check the parentElement of a text node\n * for privacy level.\n */\nfunction serializeTextNode(textNode, options) {\n    var textContent = getTextContent(textNode, options.ignoreWhiteSpace || false, options.parentNodePrivacyLevel);\n    if (textContent === undefined) {\n        return;\n    }\n    return {\n        type: NodeType.Text,\n        textContent: textContent,\n    };\n}\nfunction serializeCDataNode() {\n    return {\n        type: NodeType.CDATA,\n        textContent: '',\n    };\n}\n//# sourceMappingURL=serializeNode.js.map","export var RecordType = {\n    FullSnapshot: 2,\n    IncrementalSnapshot: 3,\n    Meta: 4,\n    Focus: 6,\n    ViewEnd: 7,\n    VisualViewport: 8,\n    FrustrationRecord: 9,\n};\nexport var NodeType = {\n    Document: 0,\n    DocumentType: 1,\n    Element: 2,\n    Text: 3,\n    CDATA: 4,\n    DocumentFragment: 11,\n};\nexport var IncrementalSource = {\n    Mutation: 0,\n    MouseMove: 1,\n    MouseInteraction: 2,\n    Scroll: 3,\n    ViewportResize: 4,\n    Input: 5,\n    TouchMove: 6,\n    MediaInteraction: 7,\n    StyleSheetRule: 8,\n    // CanvasMutation : 9,\n    // Font : 10,\n};\nexport var MouseInteractionType = {\n    MouseUp: 0,\n    MouseDown: 1,\n    Click: 2,\n    ContextMenu: 3,\n    DblClick: 4,\n    Focus: 5,\n    Blur: 6,\n    TouchStart: 7,\n    TouchEnd: 9,\n};\nexport var MediaInteractionType = {\n    Play: 0,\n    Pause: 1,\n};\n//# sourceMappingURL=sessionReplayConstants.js.map","import { isNodeShadowHost } from '@datadog/browser-rum-core';\nexport function isTouchEvent(event) {\n    return Boolean(event.changedTouches);\n}\nexport function getEventTarget(event) {\n    if (event.composed === true && isNodeShadowHost(event.target)) {\n        return event.composedPath()[0];\n    }\n    return event.target;\n}\n//# sourceMappingURL=eventsUtils.js.map","/**\n * Browsers have not standardized various dimension properties. Mobile devices typically report\n * dimensions in reference to the visual viewport, while desktop uses the layout viewport. For example,\n * Mobile Chrome will change innerWidth when a pinch zoom takes place, while Chrome Desktop (mac) will not.\n *\n * With the new Viewport API, we now calculate and normalize dimension properties to the layout viewport.\n * If the VisualViewport API is not supported by a browser, it isn't reasonably possible to detect or normalize\n * which viewport is being measured. Therefore these exported functions will fallback to assuming that the layout\n * viewport is being measured by the browser\n */\n// Scrollbar widths vary across properties on different devices and browsers\nvar TOLERANCE = 25;\n/**\n * Use the Visual Viewport API's properties to measure scrollX/Y in reference to the layout viewport\n * in order to determine if window.scrollX/Y is measuring the layout or visual viewport.\n * This finding corresponds to which viewport mouseEvent.clientX/Y and window.innerWidth/Height measures.\n */\nfunction isVisualViewportFactoredIn(visualViewport) {\n    return (Math.abs(visualViewport.pageTop - visualViewport.offsetTop - window.scrollY) > TOLERANCE ||\n        Math.abs(visualViewport.pageLeft - visualViewport.offsetLeft - window.scrollX) > TOLERANCE);\n}\nexport var convertMouseEventToLayoutCoordinates = function (clientX, clientY) {\n    var visualViewport = window.visualViewport;\n    var normalized = {\n        layoutViewportX: clientX,\n        layoutViewportY: clientY,\n        visualViewportX: clientX,\n        visualViewportY: clientY,\n    };\n    if (!visualViewport) {\n        // On old browsers, we cannot normalize, so fallback to clientX/Y\n        return normalized;\n    }\n    else if (isVisualViewportFactoredIn(visualViewport)) {\n        // Typically Mobile Devices\n        normalized.layoutViewportX = Math.round(clientX + visualViewport.offsetLeft);\n        normalized.layoutViewportY = Math.round(clientY + visualViewport.offsetTop);\n    }\n    else {\n        // Typically Desktop Devices\n        normalized.visualViewportX = Math.round(clientX - visualViewport.offsetLeft);\n        normalized.visualViewportY = Math.round(clientY - visualViewport.offsetTop);\n    }\n    return normalized;\n};\nexport var getVisualViewport = function (visualViewport) { return ({\n    scale: visualViewport.scale,\n    offsetLeft: visualViewport.offsetLeft,\n    offsetTop: visualViewport.offsetTop,\n    pageLeft: visualViewport.pageLeft,\n    pageTop: visualViewport.pageTop,\n    height: visualViewport.height,\n    width: visualViewport.width,\n}); };\n//# sourceMappingURL=viewports.js.map","import { assign, timeStampNow } from '@datadog/browser-core';\nimport { RecordType } from '../../types';\nexport function assembleIncrementalSnapshot(source, data) {\n    return {\n        data: assign({\n            source: source,\n        }, data),\n        type: RecordType.IncrementalSnapshot,\n        timestamp: timeStampNow(),\n    };\n}\n//# sourceMappingURL=assembly.js.map","import { addEventListeners, addTelemetryDebug, throttle } from '@datadog/browser-core';\nimport { getSerializedNodeId, hasSerializedNode } from '../serialization';\nimport { IncrementalSource } from '../../../types';\nimport { getEventTarget, isTouchEvent } from '../eventsUtils';\nimport { convertMouseEventToLayoutCoordinates } from '../viewports';\nimport { assembleIncrementalSnapshot } from '../assembly';\nvar MOUSE_MOVE_OBSERVER_THRESHOLD = 50;\nexport function trackMove(configuration, moveCb) {\n    var _a = throttle(function (event) {\n        var target = getEventTarget(event);\n        if (hasSerializedNode(target)) {\n            var coordinates = tryToComputeCoordinates(event);\n            if (!coordinates) {\n                return;\n            }\n            var position = {\n                id: getSerializedNodeId(target),\n                timeOffset: 0,\n                x: coordinates.x,\n                y: coordinates.y,\n            };\n            moveCb(assembleIncrementalSnapshot(isTouchEvent(event) ? IncrementalSource.TouchMove : IncrementalSource.MouseMove, { positions: [position] }));\n        }\n    }, MOUSE_MOVE_OBSERVER_THRESHOLD, {\n        trailing: false,\n    }), updatePosition = _a.throttled, cancelThrottle = _a.cancel;\n    var removeListener = addEventListeners(configuration, document, [\"mousemove\" /* DOM_EVENT.MOUSE_MOVE */, \"touchmove\" /* DOM_EVENT.TOUCH_MOVE */], updatePosition, {\n        capture: true,\n        passive: true,\n    }).stop;\n    return {\n        stop: function () {\n            removeListener();\n            cancelThrottle();\n        },\n    };\n}\nexport function tryToComputeCoordinates(event) {\n    var _a = isTouchEvent(event) ? event.changedTouches[0] : event, x = _a.clientX, y = _a.clientY;\n    if (window.visualViewport) {\n        var _b = convertMouseEventToLayoutCoordinates(x, y), visualViewportX = _b.visualViewportX, visualViewportY = _b.visualViewportY;\n        x = visualViewportX;\n        y = visualViewportY;\n    }\n    if (!Number.isFinite(x) || !Number.isFinite(y)) {\n        if (event.isTrusted) {\n            addTelemetryDebug('mouse/touch event without x/y');\n        }\n        return undefined;\n    }\n    return { x: x, y: y };\n}\n//# sourceMappingURL=trackMove.js.map","import { throttle, addEventListener } from '@datadog/browser-core';\nimport { getScrollX, getScrollY, getNodePrivacyLevel, NodePrivacyLevel } from '@datadog/browser-rum-core';\nimport { getEventTarget } from '../eventsUtils';\nimport { getSerializedNodeId, hasSerializedNode } from '../serialization';\nimport { IncrementalSource } from '../../../types';\nimport { assembleIncrementalSnapshot } from '../assembly';\nvar SCROLL_OBSERVER_THRESHOLD = 100;\nexport function trackScroll(configuration, scrollCb, elementsScrollPositions, target) {\n    if (target === void 0) { target = document; }\n    var _a = throttle(function (event) {\n        var target = getEventTarget(event);\n        if (!target ||\n            getNodePrivacyLevel(target, configuration.defaultPrivacyLevel) === NodePrivacyLevel.HIDDEN ||\n            !hasSerializedNode(target)) {\n            return;\n        }\n        var id = getSerializedNodeId(target);\n        var scrollPositions = target === document\n            ? {\n                scrollTop: getScrollY(),\n                scrollLeft: getScrollX(),\n            }\n            : {\n                scrollTop: Math.round(target.scrollTop),\n                scrollLeft: Math.round(target.scrollLeft),\n            };\n        elementsScrollPositions.set(target, scrollPositions);\n        scrollCb(assembleIncrementalSnapshot(IncrementalSource.Scroll, {\n            id: id,\n            x: scrollPositions.scrollLeft,\n            y: scrollPositions.scrollTop,\n        }));\n    }, SCROLL_OBSERVER_THRESHOLD), updatePosition = _a.throttled, cancelThrottle = _a.cancel;\n    var removeListener = addEventListener(configuration, target, \"scroll\" /* DOM_EVENT.SCROLL */, updatePosition, {\n        capture: true,\n        passive: true,\n    }).stop;\n    return {\n        stop: function () {\n            removeListener();\n            cancelThrottle();\n        },\n    };\n}\n//# sourceMappingURL=trackScroll.js.map","import { instrumentMethod } from '@datadog/browser-core';\nimport { IncrementalSource } from '../../../types';\nimport { getSerializedNodeId, hasSerializedNode } from '../serialization';\nimport { assembleIncrementalSnapshot } from '../assembly';\nexport function trackStyleSheet(styleSheetCb) {\n    function checkStyleSheetAndCallback(styleSheet, callback) {\n        if (styleSheet && hasSerializedNode(styleSheet.ownerNode)) {\n            callback(getSerializedNodeId(styleSheet.ownerNode));\n        }\n    }\n    var instrumentationStoppers = [\n        instrumentMethod(CSSStyleSheet.prototype, 'insertRule', function (_a) {\n            var styleSheet = _a.target, _b = _a.parameters, rule = _b[0], index = _b[1];\n            checkStyleSheetAndCallback(styleSheet, function (id) {\n                return styleSheetCb(assembleIncrementalSnapshot(IncrementalSource.StyleSheetRule, {\n                    id: id,\n                    adds: [{ rule: rule, index: index }],\n                }));\n            });\n        }),\n        instrumentMethod(CSSStyleSheet.prototype, 'deleteRule', function (_a) {\n            var styleSheet = _a.target, index = _a.parameters[0];\n            checkStyleSheetAndCallback(styleSheet, function (id) {\n                return styleSheetCb(assembleIncrementalSnapshot(IncrementalSource.StyleSheetRule, {\n                    id: id,\n                    removes: [{ index: index }],\n                }));\n            });\n        }),\n    ];\n    if (typeof CSSGroupingRule !== 'undefined') {\n        instrumentGroupingCSSRuleClass(CSSGroupingRule);\n    }\n    else {\n        instrumentGroupingCSSRuleClass(CSSMediaRule);\n        instrumentGroupingCSSRuleClass(CSSSupportsRule);\n    }\n    function instrumentGroupingCSSRuleClass(cls) {\n        instrumentationStoppers.push(instrumentMethod(cls.prototype, 'insertRule', function (_a) {\n            var styleSheet = _a.target, _b = _a.parameters, rule = _b[0], index = _b[1];\n            checkStyleSheetAndCallback(styleSheet.parentStyleSheet, function (id) {\n                var path = getPathToNestedCSSRule(styleSheet);\n                if (path) {\n                    path.push(index || 0);\n                    styleSheetCb(assembleIncrementalSnapshot(IncrementalSource.StyleSheetRule, {\n                        id: id,\n                        adds: [{ rule: rule, index: path }],\n                    }));\n                }\n            });\n        }), instrumentMethod(cls.prototype, 'deleteRule', function (_a) {\n            var styleSheet = _a.target, index = _a.parameters[0];\n            checkStyleSheetAndCallback(styleSheet.parentStyleSheet, function (id) {\n                var path = getPathToNestedCSSRule(styleSheet);\n                if (path) {\n                    path.push(index);\n                    styleSheetCb(assembleIncrementalSnapshot(IncrementalSource.StyleSheetRule, {\n                        id: id,\n                        removes: [{ index: path }],\n                    }));\n                }\n            });\n        }));\n    }\n    return {\n        stop: function () {\n            instrumentationStoppers.forEach(function (stopper) { return stopper.stop(); });\n        },\n    };\n}\nexport function getPathToNestedCSSRule(rule) {\n    var path = [];\n    var currentRule = rule;\n    while (currentRule.parentRule) {\n        var rules_1 = Array.from(currentRule.parentRule.cssRules);\n        var index_1 = rules_1.indexOf(currentRule);\n        path.unshift(index_1);\n        currentRule = currentRule.parentRule;\n    }\n    // A rule may not be attached to a stylesheet\n    if (!currentRule.parentStyleSheet) {\n        return;\n    }\n    var rules = Array.from(currentRule.parentStyleSheet.cssRules);\n    var index = rules.indexOf(currentRule);\n    path.unshift(index);\n    return path;\n}\n//# sourceMappingURL=trackStyleSheet.js.map","import { instrumentSetter, assign, addEventListeners, forEach, noop } from '@datadog/browser-core';\nimport { NodePrivacyLevel, getNodePrivacyLevel, shouldMaskNode, cssEscape } from '@datadog/browser-rum-core';\nimport { IncrementalSource } from '../../../types';\nimport { getEventTarget } from '../eventsUtils';\nimport { getElementInputValue, getSerializedNodeId, hasSerializedNode } from '../serialization';\nimport { assembleIncrementalSnapshot } from '../assembly';\nexport function trackInput(configuration, inputCb, target) {\n    if (target === void 0) { target = document; }\n    var defaultPrivacyLevel = configuration.defaultPrivacyLevel;\n    var lastInputStateMap = new WeakMap();\n    var isShadowRoot = target !== document;\n    var stopEventListeners = addEventListeners(configuration, target, \n    // The 'input' event bubbles across shadow roots, so we don't have to listen for it on shadow\n    // roots since it will be handled by the event listener that we did add to the document. Only\n    // the 'change' event is blocked and needs to be handled on shadow roots.\n    isShadowRoot ? [\"change\" /* DOM_EVENT.CHANGE */] : [\"input\" /* DOM_EVENT.INPUT */, \"change\" /* DOM_EVENT.CHANGE */], function (event) {\n        var target = getEventTarget(event);\n        if (target instanceof HTMLInputElement ||\n            target instanceof HTMLTextAreaElement ||\n            target instanceof HTMLSelectElement) {\n            onElementChange(target);\n        }\n    }, {\n        capture: true,\n        passive: true,\n    }).stop;\n    var stopPropertySetterInstrumentation;\n    if (!isShadowRoot) {\n        var instrumentationStoppers_1 = [\n            instrumentSetter(HTMLInputElement.prototype, 'value', onElementChange),\n            instrumentSetter(HTMLInputElement.prototype, 'checked', onElementChange),\n            instrumentSetter(HTMLSelectElement.prototype, 'value', onElementChange),\n            instrumentSetter(HTMLTextAreaElement.prototype, 'value', onElementChange),\n            instrumentSetter(HTMLSelectElement.prototype, 'selectedIndex', onElementChange),\n        ];\n        stopPropertySetterInstrumentation = function () {\n            instrumentationStoppers_1.forEach(function (stopper) { return stopper.stop(); });\n        };\n    }\n    else {\n        stopPropertySetterInstrumentation = noop;\n    }\n    return {\n        stop: function () {\n            stopPropertySetterInstrumentation();\n            stopEventListeners();\n        },\n    };\n    function onElementChange(target) {\n        var nodePrivacyLevel = getNodePrivacyLevel(target, defaultPrivacyLevel);\n        if (nodePrivacyLevel === NodePrivacyLevel.HIDDEN) {\n            return;\n        }\n        var type = target.type;\n        var inputState;\n        if (type === 'radio' || type === 'checkbox') {\n            if (shouldMaskNode(target, nodePrivacyLevel)) {\n                return;\n            }\n            inputState = { isChecked: target.checked };\n        }\n        else {\n            var value = getElementInputValue(target, nodePrivacyLevel);\n            if (value === undefined) {\n                return;\n            }\n            inputState = { text: value };\n        }\n        // Can be multiple changes on the same node within the same batched mutation observation.\n        cbWithDedup(target, inputState);\n        // If a radio was checked, other radios with the same name attribute will be unchecked.\n        var name = target.name;\n        if (type === 'radio' && name && target.checked) {\n            forEach(document.querySelectorAll(\"input[type=\\\"radio\\\"][name=\\\"\".concat(cssEscape(name), \"\\\"]\")), function (el) {\n                if (el !== target) {\n                    // TODO: Consider the privacy implications for various differing input privacy levels\n                    cbWithDedup(el, { isChecked: false });\n                }\n            });\n        }\n    }\n    /**\n     * There can be multiple changes on the same node within the same batched mutation observation.\n     */\n    function cbWithDedup(target, inputState) {\n        if (!hasSerializedNode(target)) {\n            return;\n        }\n        var lastInputState = lastInputStateMap.get(target);\n        if (!lastInputState ||\n            lastInputState.text !== inputState.text ||\n            lastInputState.isChecked !== inputState.isChecked) {\n            lastInputStateMap.set(target, inputState);\n            inputCb(assembleIncrementalSnapshot(IncrementalSource.Input, assign({\n                id: getSerializedNodeId(target),\n            }, inputState)));\n        }\n    }\n}\n//# sourceMappingURL=trackInput.js.map","import { monitor, noop } from '@datadog/browser-core';\nimport { isNodeShadowHost, getMutationObserverConstructor, getParentNode, forEachChildNodes, getNodePrivacyLevel, getTextContent, NodePrivacyLevel, } from '@datadog/browser-rum-core';\nimport { IncrementalSource } from '../../../types';\nimport { getElementInputValue, getSerializedNodeId, hasSerializedNode, nodeAndAncestorsHaveSerializedNode, serializeNodeWithId, serializeAttribute, } from '../serialization';\nimport { createMutationBatch } from '../mutationBatch';\nimport { assembleIncrementalSnapshot } from '../assembly';\n/**\n * Buffers and aggregate mutations generated by a MutationObserver into MutationPayload\n */\nexport function trackMutation(mutationCallback, configuration, shadowRootsController, target) {\n    var MutationObserver = getMutationObserverConstructor();\n    if (!MutationObserver) {\n        return { stop: noop, flush: noop };\n    }\n    var mutationBatch = createMutationBatch(function (mutations) {\n        processMutations(mutations.concat(observer.takeRecords()), mutationCallback, configuration, shadowRootsController);\n    });\n    var observer = new MutationObserver(monitor(mutationBatch.addMutations));\n    observer.observe(target, {\n        attributeOldValue: true,\n        attributes: true,\n        characterData: true,\n        characterDataOldValue: true,\n        childList: true,\n        subtree: true,\n    });\n    return {\n        stop: function () {\n            observer.disconnect();\n            mutationBatch.stop();\n        },\n        flush: function () {\n            mutationBatch.flush();\n        },\n    };\n}\nfunction processMutations(mutations, mutationCallback, configuration, shadowRootsController) {\n    var nodePrivacyLevelCache = new Map();\n    mutations\n        .filter(function (mutation) { return mutation.type === 'childList'; })\n        .forEach(function (mutation) {\n        mutation.removedNodes.forEach(function (removedNode) {\n            traverseRemovedShadowDom(removedNode, shadowRootsController.removeShadowRoot);\n        });\n    });\n    // Discard any mutation with a 'target' node that:\n    // * isn't injected in the current document or isn't known/serialized yet: those nodes are likely\n    // part of a mutation occurring in a parent Node\n    // * should be hidden or ignored\n    var filteredMutations = mutations.filter(function (mutation) {\n        return mutation.target.isConnected &&\n            nodeAndAncestorsHaveSerializedNode(mutation.target) &&\n            getNodePrivacyLevel(mutation.target, configuration.defaultPrivacyLevel, nodePrivacyLevelCache) !==\n                NodePrivacyLevel.HIDDEN;\n    });\n    var _a = processChildListMutations(filteredMutations.filter(function (mutation) { return mutation.type === 'childList'; }), configuration, shadowRootsController, nodePrivacyLevelCache), adds = _a.adds, removes = _a.removes, hasBeenSerialized = _a.hasBeenSerialized;\n    var texts = processCharacterDataMutations(filteredMutations.filter(function (mutation) {\n        return mutation.type === 'characterData' && !hasBeenSerialized(mutation.target);\n    }), configuration, nodePrivacyLevelCache);\n    var attributes = processAttributesMutations(filteredMutations.filter(function (mutation) {\n        return mutation.type === 'attributes' && !hasBeenSerialized(mutation.target);\n    }), configuration, nodePrivacyLevelCache);\n    if (!texts.length && !attributes.length && !removes.length && !adds.length) {\n        return;\n    }\n    mutationCallback(assembleIncrementalSnapshot(IncrementalSource.Mutation, { adds: adds, removes: removes, texts: texts, attributes: attributes }));\n}\nfunction processChildListMutations(mutations, configuration, shadowRootsController, nodePrivacyLevelCache) {\n    // First, we iterate over mutations to collect:\n    //\n    // * nodes that have been added in the document and not removed by a subsequent mutation\n    // * nodes that have been removed from the document but were not added in a previous mutation\n    //\n    // For this second category, we also collect their previous parent (mutation.target) because we'll\n    // need it to emit a 'remove' mutation.\n    //\n    // Those two categories may overlap: if a node moved from a position to another, it is reported as\n    // two mutation records, one with a \"removedNodes\" and the other with \"addedNodes\". In this case,\n    // the node will be in both sets.\n    var addedAndMovedNodes = new Set();\n    var removedNodes = new Map();\n    var _loop_1 = function (mutation) {\n        mutation.addedNodes.forEach(function (node) {\n            addedAndMovedNodes.add(node);\n        });\n        mutation.removedNodes.forEach(function (node) {\n            if (!addedAndMovedNodes.has(node)) {\n                removedNodes.set(node, mutation.target);\n            }\n            addedAndMovedNodes.delete(node);\n        });\n    };\n    for (var _i = 0, mutations_1 = mutations; _i < mutations_1.length; _i++) {\n        var mutation = mutations_1[_i];\n        _loop_1(mutation);\n    }\n    // Then, we sort nodes that are still in the document by topological order, for two reasons:\n    //\n    // * We will serialize each added nodes with their descendants. We don't want to serialize a node\n    // twice, so we need to iterate over the parent nodes first and skip any node that is contained in\n    // a precedent node.\n    //\n    // * To emit \"add\" mutations, we need references to the parent and potential next sibling of each\n    // added node. So we need to iterate over the parent nodes first, and when multiple nodes are\n    // siblings, we want to iterate from last to first. This will ensure that any \"next\" node is\n    // already serialized and have an id.\n    var sortedAddedAndMovedNodes = Array.from(addedAndMovedNodes);\n    sortAddedAndMovedNodes(sortedAddedAndMovedNodes);\n    // Then, we iterate over our sorted node sets to emit mutations. We collect the newly serialized\n    // node ids in a set to be able to skip subsequent related mutations.\n    var serializedNodeIds = new Set();\n    var addedNodeMutations = [];\n    for (var _a = 0, sortedAddedAndMovedNodes_1 = sortedAddedAndMovedNodes; _a < sortedAddedAndMovedNodes_1.length; _a++) {\n        var node = sortedAddedAndMovedNodes_1[_a];\n        if (hasBeenSerialized(node)) {\n            continue;\n        }\n        var parentNodePrivacyLevel = getNodePrivacyLevel(node.parentNode, configuration.defaultPrivacyLevel, nodePrivacyLevelCache);\n        if (parentNodePrivacyLevel === NodePrivacyLevel.HIDDEN || parentNodePrivacyLevel === NodePrivacyLevel.IGNORE) {\n            continue;\n        }\n        var serializedNode = serializeNodeWithId(node, {\n            serializedNodeIds: serializedNodeIds,\n            parentNodePrivacyLevel: parentNodePrivacyLevel,\n            serializationContext: { status: 2 /* SerializationContextStatus.MUTATION */, shadowRootsController: shadowRootsController },\n            configuration: configuration,\n        });\n        if (!serializedNode) {\n            continue;\n        }\n        var parentNode = getParentNode(node);\n        addedNodeMutations.push({\n            nextId: getNextSibling(node),\n            parentId: getSerializedNodeId(parentNode),\n            node: serializedNode,\n        });\n    }\n    // Finally, we emit remove mutations.\n    var removedNodeMutations = [];\n    removedNodes.forEach(function (parent, node) {\n        if (hasSerializedNode(node)) {\n            removedNodeMutations.push({\n                parentId: getSerializedNodeId(parent),\n                id: getSerializedNodeId(node),\n            });\n        }\n    });\n    return { adds: addedNodeMutations, removes: removedNodeMutations, hasBeenSerialized: hasBeenSerialized };\n    function hasBeenSerialized(node) {\n        return hasSerializedNode(node) && serializedNodeIds.has(getSerializedNodeId(node));\n    }\n    function getNextSibling(node) {\n        var nextSibling = node.nextSibling;\n        while (nextSibling) {\n            if (hasSerializedNode(nextSibling)) {\n                return getSerializedNodeId(nextSibling);\n            }\n            nextSibling = nextSibling.nextSibling;\n        }\n        return null;\n    }\n}\nfunction processCharacterDataMutations(mutations, configuration, nodePrivacyLevelCache) {\n    var _a;\n    var textMutations = [];\n    // Deduplicate mutations based on their target node\n    var handledNodes = new Set();\n    var filteredMutations = mutations.filter(function (mutation) {\n        if (handledNodes.has(mutation.target)) {\n            return false;\n        }\n        handledNodes.add(mutation.target);\n        return true;\n    });\n    // Emit mutations\n    for (var _i = 0, filteredMutations_1 = filteredMutations; _i < filteredMutations_1.length; _i++) {\n        var mutation = filteredMutations_1[_i];\n        var value = mutation.target.textContent;\n        if (value === mutation.oldValue) {\n            continue;\n        }\n        var parentNodePrivacyLevel = getNodePrivacyLevel(getParentNode(mutation.target), configuration.defaultPrivacyLevel, nodePrivacyLevelCache);\n        if (parentNodePrivacyLevel === NodePrivacyLevel.HIDDEN || parentNodePrivacyLevel === NodePrivacyLevel.IGNORE) {\n            continue;\n        }\n        textMutations.push({\n            id: getSerializedNodeId(mutation.target),\n            // TODO: pass a valid \"ignoreWhiteSpace\" argument\n            value: (_a = getTextContent(mutation.target, false, parentNodePrivacyLevel)) !== null && _a !== void 0 ? _a : null,\n        });\n    }\n    return textMutations;\n}\nfunction processAttributesMutations(mutations, configuration, nodePrivacyLevelCache) {\n    var attributeMutations = [];\n    // Deduplicate mutations based on their target node and changed attribute\n    var handledElements = new Map();\n    var filteredMutations = mutations.filter(function (mutation) {\n        var handledAttributes = handledElements.get(mutation.target);\n        if (handledAttributes && handledAttributes.has(mutation.attributeName)) {\n            return false;\n        }\n        if (!handledAttributes) {\n            handledElements.set(mutation.target, new Set([mutation.attributeName]));\n        }\n        else {\n            handledAttributes.add(mutation.attributeName);\n        }\n        return true;\n    });\n    // Emit mutations\n    var emittedMutations = new Map();\n    for (var _i = 0, filteredMutations_2 = filteredMutations; _i < filteredMutations_2.length; _i++) {\n        var mutation = filteredMutations_2[_i];\n        var uncensoredValue = mutation.target.getAttribute(mutation.attributeName);\n        if (uncensoredValue === mutation.oldValue) {\n            continue;\n        }\n        var privacyLevel = getNodePrivacyLevel(mutation.target, configuration.defaultPrivacyLevel, nodePrivacyLevelCache);\n        var attributeValue = serializeAttribute(mutation.target, privacyLevel, mutation.attributeName, configuration);\n        var transformedValue = void 0;\n        if (mutation.attributeName === 'value') {\n            var inputValue = getElementInputValue(mutation.target, privacyLevel);\n            if (inputValue === undefined) {\n                continue;\n            }\n            transformedValue = inputValue;\n        }\n        else if (typeof attributeValue === 'string') {\n            transformedValue = attributeValue;\n        }\n        else {\n            transformedValue = null;\n        }\n        var emittedMutation = emittedMutations.get(mutation.target);\n        if (!emittedMutation) {\n            emittedMutation = {\n                id: getSerializedNodeId(mutation.target),\n                attributes: {},\n            };\n            attributeMutations.push(emittedMutation);\n            emittedMutations.set(mutation.target, emittedMutation);\n        }\n        emittedMutation.attributes[mutation.attributeName] = transformedValue;\n    }\n    return attributeMutations;\n}\nexport function sortAddedAndMovedNodes(nodes) {\n    nodes.sort(function (a, b) {\n        var position = a.compareDocumentPosition(b);\n        /* eslint-disable no-bitwise */\n        if (position & Node.DOCUMENT_POSITION_CONTAINED_BY) {\n            return -1;\n        }\n        else if (position & Node.DOCUMENT_POSITION_CONTAINS) {\n            return 1;\n        }\n        else if (position & Node.DOCUMENT_POSITION_FOLLOWING) {\n            return 1;\n        }\n        else if (position & Node.DOCUMENT_POSITION_PRECEDING) {\n            return -1;\n        }\n        /* eslint-enable no-bitwise */\n        return 0;\n    });\n}\nfunction traverseRemovedShadowDom(removedNode, shadowDomRemovedCallback) {\n    if (isNodeShadowHost(removedNode)) {\n        shadowDomRemovedCallback(removedNode.shadowRoot);\n    }\n    forEachChildNodes(removedNode, function (childNode) { return traverseRemovedShadowDom(childNode, shadowDomRemovedCallback); });\n}\n//# sourceMappingURL=trackMutation.js.map","import { noop, throttle, requestIdleCallback } from '@datadog/browser-core';\n/**\n * Maximum duration to wait before processing mutations. If the browser is idle, mutations will be\n * processed more quickly. If the browser is busy executing small tasks (ex: rendering frames), the\n * mutations will wait MUTATION_PROCESS_MAX_DELAY milliseconds before being processed. If the\n * browser is busy executing a longer task, mutations will be processed after this task.\n */\nvar MUTATION_PROCESS_MAX_DELAY = 100;\n/**\n * Minimum duration to wait before processing mutations. This is used to batch mutations together\n * and be able to deduplicate them to save processing time and bandwidth.\n * 16ms is the duration of a frame at 60fps that ensure fluid UI.\n */\nexport var MUTATION_PROCESS_MIN_DELAY = 16;\nexport function createMutationBatch(processMutationBatch) {\n    var cancelScheduledFlush = noop;\n    var pendingMutations = [];\n    function flush() {\n        cancelScheduledFlush();\n        processMutationBatch(pendingMutations);\n        pendingMutations = [];\n    }\n    var _a = throttle(flush, MUTATION_PROCESS_MIN_DELAY, {\n        leading: false,\n    }), throttledFlush = _a.throttled, cancelThrottle = _a.cancel;\n    return {\n        addMutations: function (mutations) {\n            if (pendingMutations.length === 0) {\n                cancelScheduledFlush = requestIdleCallback(throttledFlush, { timeout: MUTATION_PROCESS_MAX_DELAY });\n            }\n            pendingMutations.push.apply(pendingMutations, mutations);\n        },\n        flush: flush,\n        stop: function () {\n            cancelScheduledFlush();\n            cancelThrottle();\n        },\n    };\n}\n//# sourceMappingURL=mutationBatch.js.map","import { trackInput, trackMutation, trackScroll } from './trackers';\nexport var initShadowRootsController = function (configuration, callback, elementsScrollPositions) {\n    var controllerByShadowRoot = new Map();\n    var shadowRootsController = {\n        addShadowRoot: function (shadowRoot) {\n            if (controllerByShadowRoot.has(shadowRoot)) {\n                return;\n            }\n            var mutationTracker = trackMutation(callback, configuration, shadowRootsController, shadowRoot);\n            // The change event does not bubble up across the shadow root, we have to listen on the shadow root\n            var inputTracker = trackInput(configuration, callback, shadowRoot);\n            // The scroll event does not bubble up across the shadow root, we have to listen on the shadow root\n            var scrollTracker = trackScroll(configuration, callback, elementsScrollPositions, shadowRoot);\n            controllerByShadowRoot.set(shadowRoot, {\n                flush: function () { return mutationTracker.flush(); },\n                stop: function () {\n                    mutationTracker.stop();\n                    inputTracker.stop();\n                    scrollTracker.stop();\n                },\n            });\n        },\n        removeShadowRoot: function (shadowRoot) {\n            var entry = controllerByShadowRoot.get(shadowRoot);\n            if (!entry) {\n                // unidentified root cause: observed in some cases with shadow DOM added by browser extensions\n                return;\n            }\n            entry.stop();\n            controllerByShadowRoot.delete(shadowRoot);\n        },\n        stop: function () {\n            controllerByShadowRoot.forEach(function (_a) {\n                var stop = _a.stop;\n                return stop();\n            });\n        },\n        flush: function () {\n            controllerByShadowRoot.forEach(function (_a) {\n                var flush = _a.flush;\n                return flush();\n            });\n        },\n    };\n    return shadowRootsController;\n};\n//# sourceMappingURL=shadowRootsController.js.map","import { addEventListener, addTelemetryDebug, assign, concatBuffers } from '@datadog/browser-core';\nexport function createDeflateEncoder(configuration, worker, streamId) {\n    var rawBytesCount = 0;\n    var compressedData = [];\n    var compressedDataTrailer;\n    var nextWriteActionId = 0;\n    var pendingWriteActions = [];\n    var removeMessageListener = addEventListener(configuration, worker, 'message', function (_a) {\n        var workerResponse = _a.data;\n        if (workerResponse.type !== 'wrote' || workerResponse.streamId !== streamId) {\n            return;\n        }\n        rawBytesCount += workerResponse.additionalBytesCount;\n        compressedData.push(workerResponse.result);\n        compressedDataTrailer = workerResponse.trailer;\n        var nextPendingAction = pendingWriteActions.shift();\n        if (nextPendingAction && nextPendingAction.id === workerResponse.id) {\n            if (nextPendingAction.writeCallback) {\n                nextPendingAction.writeCallback(workerResponse.result.byteLength);\n            }\n            else if (nextPendingAction.finishCallback) {\n                nextPendingAction.finishCallback();\n            }\n        }\n        else {\n            removeMessageListener();\n            addTelemetryDebug('Worker responses received out of order.');\n        }\n    }).stop;\n    function consumeResult() {\n        var output = compressedData.length === 0 ? new Uint8Array(0) : concatBuffers(compressedData.concat(compressedDataTrailer));\n        var result = {\n            rawBytesCount: rawBytesCount,\n            output: output,\n            outputBytesCount: output.byteLength,\n            encoding: 'deflate',\n        };\n        rawBytesCount = 0;\n        compressedData = [];\n        return result;\n    }\n    function sendResetIfNeeded() {\n        if (nextWriteActionId > 0) {\n            worker.postMessage({\n                action: 'reset',\n                streamId: streamId,\n            });\n            nextWriteActionId = 0;\n        }\n    }\n    return {\n        isAsync: true,\n        get isEmpty() {\n            return nextWriteActionId === 0;\n        },\n        write: function (data, callback) {\n            worker.postMessage({\n                action: 'write',\n                id: nextWriteActionId,\n                data: data,\n                streamId: streamId,\n            });\n            pendingWriteActions.push({\n                id: nextWriteActionId,\n                writeCallback: callback,\n                data: data,\n            });\n            nextWriteActionId += 1;\n        },\n        finish: function (callback) {\n            sendResetIfNeeded();\n            if (!pendingWriteActions.length) {\n                callback(consumeResult());\n            }\n            else {\n                // Make sure we do not call any write callback\n                pendingWriteActions.forEach(function (pendingWriteAction) {\n                    delete pendingWriteAction.writeCallback;\n                });\n                // Wait for the last action to finish before calling the finish callback\n                pendingWriteActions[pendingWriteActions.length - 1].finishCallback = function () { return callback(consumeResult()); };\n            }\n        },\n        finishSync: function () {\n            sendResetIfNeeded();\n            var pendingData = pendingWriteActions\n                .map(function (pendingWriteAction) {\n                // Make sure we do not call any write or finish callback\n                delete pendingWriteAction.writeCallback;\n                delete pendingWriteAction.finishCallback;\n                return pendingWriteAction.data;\n            })\n                .join('');\n            return assign(consumeResult(), {\n                pendingData: pendingData,\n            });\n        },\n        estimateEncodedBytesCount: function (data) {\n            // This is a rough estimation of the data size once it'll be encoded by deflate. We observed\n            // that if it's the first chunk of data pushed to the stream, the ratio is lower (3-4), but\n            // after that the ratio is greater (10+). We chose 8 here, which (on average) seems to produce\n            // requests of the expected size.\n            return data.length / 8;\n        },\n        stop: function () {\n            removeMessageListener();\n        },\n    };\n}\n//# sourceMappingURL=deflateEncoder.js.map","import { addTelemetryError, display, includes, addEventListener, setTimeout, ONE_SECOND, DOCS_ORIGIN, } from '@datadog/browser-core';\nexport var INITIALIZATION_TIME_OUT_DELAY = 30 * ONE_SECOND;\nfunction createDeflateWorker(configuration) {\n    return new Worker(configuration.workerUrl || URL.createObjectURL(new Blob([\"!function(){\\\"use strict\\\";function t(t){for(var e=t.reduce((function(t,e){return t+e.length}),0),a=new Uint8Array(e),n=0,r=0,i=t;r<i.length;r++){var s=i[r];a.set(s,n),n+=s.length}return a}function e(t){for(var e=t.length;--e>=0;)t[e]=0}var a=256,n=286,r=30,i=15,s=new Uint8Array([0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0]),h=new Uint8Array([0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13]),l=new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7]),_=new Uint8Array([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),o=new Array(576);e(o);var d=new Array(60);e(d);var u=new Array(512);e(u);var f=new Array(256);e(f);var c=new Array(29);e(c);var p,g,w,v=new Array(r);function b(t,e,a,n,r){this.static_tree=t,this.extra_bits=e,this.extra_base=a,this.elems=n,this.max_length=r,this.has_stree=t&&t.length}function m(t,e){this.dyn_tree=t,this.max_code=0,this.stat_desc=e}e(v);var y=function(t){return t<256?u[t]:u[256+(t>>>7)]},k=function(t,e){t.pending_buf[t.pending++]=255&e,t.pending_buf[t.pending++]=e>>>8&255},z=function(t,e,a){t.bi_valid>16-a?(t.bi_buf|=e<<t.bi_valid&65535,k(t,t.bi_buf),t.bi_buf=e>>16-t.bi_valid,t.bi_valid+=a-16):(t.bi_buf|=e<<t.bi_valid&65535,t.bi_valid+=a)},x=function(t,e,a){z(t,a[2*e],a[2*e+1])},A=function(t,e){var a=0;do{a|=1&t,t>>>=1,a<<=1}while(--e>0);return a>>>1},U=function(t,e,a){var n,r,s=new Array(16),h=0;for(n=1;n<=i;n++)s[n]=h=h+a[n-1]<<1;for(r=0;r<=e;r++){var l=t[2*r+1];0!==l&&(t[2*r]=A(s[l]++,l))}},I=function(t){var e;for(e=0;e<n;e++)t.dyn_ltree[2*e]=0;for(e=0;e<r;e++)t.dyn_dtree[2*e]=0;for(e=0;e<19;e++)t.bl_tree[2*e]=0;t.dyn_ltree[512]=1,t.opt_len=t.static_len=0,t.last_lit=t.matches=0},B=function(t){t.bi_valid>8?k(t,t.bi_buf):t.bi_valid>0&&(t.pending_buf[t.pending++]=t.bi_buf),t.bi_buf=0,t.bi_valid=0},E=function(t,e,a,n){var r=2*e,i=2*a;return t[r]<t[i]||t[r]===t[i]&&n[e]<=n[a]},S=function(t,e,a){for(var n=t.heap[a],r=a<<1;r<=t.heap_len&&(r<t.heap_len&&E(e,t.heap[r+1],t.heap[r],t.depth)&&r++,!E(e,n,t.heap[r],t.depth));)t.heap[a]=t.heap[r],a=r,r<<=1;t.heap[a]=n},C=function(t,e,n){var r,i,l,_,o=0;if(0!==t.last_lit)do{r=t.pending_buf[t.d_buf+2*o]<<8|t.pending_buf[t.d_buf+2*o+1],i=t.pending_buf[t.l_buf+o],o++,0===r?x(t,i,e):(l=f[i],x(t,l+a+1,e),0!==(_=s[l])&&(i-=c[l],z(t,i,_)),r--,l=y(r),x(t,l,n),0!==(_=h[l])&&(r-=v[l],z(t,r,_)))}while(o<t.last_lit);x(t,256,e)},D=function(t,e){var a,n,r,s=e.dyn_tree,h=e.stat_desc.static_tree,l=e.stat_desc.has_stree,_=e.stat_desc.elems,o=-1;for(t.heap_len=0,t.heap_max=573,a=0;a<_;a++)0!==s[2*a]?(t.heap[++t.heap_len]=o=a,t.depth[a]=0):s[2*a+1]=0;for(;t.heap_len<2;)s[2*(r=t.heap[++t.heap_len]=o<2?++o:0)]=1,t.depth[r]=0,t.opt_len--,l&&(t.static_len-=h[2*r+1]);for(e.max_code=o,a=t.heap_len>>1;a>=1;a--)S(t,s,a);r=_;do{a=t.heap[1],t.heap[1]=t.heap[t.heap_len--],S(t,s,1),n=t.heap[1],t.heap[--t.heap_max]=a,t.heap[--t.heap_max]=n,s[2*r]=s[2*a]+s[2*n],t.depth[r]=(t.depth[a]>=t.depth[n]?t.depth[a]:t.depth[n])+1,s[2*a+1]=s[2*n+1]=r,t.heap[1]=r++,S(t,s,1)}while(t.heap_len>=2);t.heap[--t.heap_max]=t.heap[1],function(t,e){var a,n,r,s,h,l,_=e.dyn_tree,o=e.max_code,d=e.stat_desc.static_tree,u=e.stat_desc.has_stree,f=e.stat_desc.extra_bits,c=e.stat_desc.extra_base,p=e.stat_desc.max_length,g=0;for(s=0;s<=i;s++)t.bl_count[s]=0;for(_[2*t.heap[t.heap_max]+1]=0,a=t.heap_max+1;a<573;a++)(s=_[2*_[2*(n=t.heap[a])+1]+1]+1)>p&&(s=p,g++),_[2*n+1]=s,n>o||(t.bl_count[s]++,h=0,n>=c&&(h=f[n-c]),l=_[2*n],t.opt_len+=l*(s+h),u&&(t.static_len+=l*(d[2*n+1]+h)));if(0!==g){do{for(s=p-1;0===t.bl_count[s];)s--;t.bl_count[s]--,t.bl_count[s+1]+=2,t.bl_count[p]--,g-=2}while(g>0);for(s=p;0!==s;s--)for(n=t.bl_count[s];0!==n;)(r=t.heap[--a])>o||(_[2*r+1]!==s&&(t.opt_len+=(s-_[2*r+1])*_[2*r],_[2*r+1]=s),n--)}}(t,e),U(s,o,t.bl_count)},j=function(t,e,a){var n,r,i=-1,s=e[1],h=0,l=7,_=4;for(0===s&&(l=138,_=3),e[2*(a+1)+1]=65535,n=0;n<=a;n++)r=s,s=e[2*(n+1)+1],++h<l&&r===s||(h<_?t.bl_tree[2*r]+=h:0!==r?(r!==i&&t.bl_tree[2*r]++,t.bl_tree[32]++):h<=10?t.bl_tree[34]++:t.bl_tree[36]++,h=0,i=r,0===s?(l=138,_=3):r===s?(l=6,_=3):(l=7,_=4))},M=function(t,e,a){var n,r,i=-1,s=e[1],h=0,l=7,_=4;for(0===s&&(l=138,_=3),n=0;n<=a;n++)if(r=s,s=e[2*(n+1)+1],!(++h<l&&r===s)){if(h<_)do{x(t,r,t.bl_tree)}while(0!=--h);else 0!==r?(r!==i&&(x(t,r,t.bl_tree),h--),x(t,16,t.bl_tree),z(t,h-3,2)):h<=10?(x(t,17,t.bl_tree),z(t,h-3,3)):(x(t,18,t.bl_tree),z(t,h-11,7));h=0,i=r,0===s?(l=138,_=3):r===s?(l=6,_=3):(l=7,_=4)}},L=!1,T=function(t,e,a,n){z(t,0+(n?1:0),3),function(t,e,a,n){B(t),n&&(k(t,a),k(t,~a)),t.pending_buf.set(t.window.subarray(e,e+a),t.pending),t.pending+=a}(t,e,a,!0)},H=function(t,e,n,r){var i,s,h=0;t.level>0?(2===t.strm.data_type&&(t.strm.data_type=function(t){var e,n=4093624447;for(e=0;e<=31;e++,n>>>=1)if(1&n&&0!==t.dyn_ltree[2*e])return 0;if(0!==t.dyn_ltree[18]||0!==t.dyn_ltree[20]||0!==t.dyn_ltree[26])return 1;for(e=32;e<a;e++)if(0!==t.dyn_ltree[2*e])return 1;return 0}(t)),D(t,t.l_desc),D(t,t.d_desc),h=function(t){var e;for(j(t,t.dyn_ltree,t.l_desc.max_code),j(t,t.dyn_dtree,t.d_desc.max_code),D(t,t.bl_desc),e=18;e>=3&&0===t.bl_tree[2*_[e]+1];e--);return t.opt_len+=3*(e+1)+5+5+4,e}(t),i=t.opt_len+3+7>>>3,(s=t.static_len+3+7>>>3)<=i&&(i=s)):i=s=n+5,n+4<=i&&-1!==e?T(t,e,n,r):4===t.strategy||s===i?(z(t,2+(r?1:0),3),C(t,o,d)):(z(t,4+(r?1:0),3),function(t,e,a,n){var r;for(z(t,e-257,5),z(t,a-1,5),z(t,n-4,4),r=0;r<n;r++)z(t,t.bl_tree[2*_[r]+1],3);M(t,t.dyn_ltree,e-1),M(t,t.dyn_dtree,a-1)}(t,t.l_desc.max_code+1,t.d_desc.max_code+1,h+1),C(t,t.dyn_ltree,t.dyn_dtree)),I(t),r&&B(t)},R={_tr_init:function(t){L||(!function(){var t,e,a,_,m,y=new Array(16);for(a=0,_=0;_<28;_++)for(c[_]=a,t=0;t<1<<s[_];t++)f[a++]=_;for(f[a-1]=_,m=0,_=0;_<16;_++)for(v[_]=m,t=0;t<1<<h[_];t++)u[m++]=_;for(m>>=7;_<r;_++)for(v[_]=m<<7,t=0;t<1<<h[_]-7;t++)u[256+m++]=_;for(e=0;e<=i;e++)y[e]=0;for(t=0;t<=143;)o[2*t+1]=8,t++,y[8]++;for(;t<=255;)o[2*t+1]=9,t++,y[9]++;for(;t<=279;)o[2*t+1]=7,t++,y[7]++;for(;t<=287;)o[2*t+1]=8,t++,y[8]++;for(U(o,287,y),t=0;t<r;t++)d[2*t+1]=5,d[2*t]=A(t,5);p=new b(o,s,257,n,i),g=new b(d,h,0,r,i),w=new b(new Array(0),l,0,19,7)}(),L=!0),t.l_desc=new m(t.dyn_ltree,p),t.d_desc=new m(t.dyn_dtree,g),t.bl_desc=new m(t.bl_tree,w),t.bi_buf=0,t.bi_valid=0,I(t)},_tr_stored_block:T,_tr_flush_block:H,_tr_tally:function(t,e,n){return t.pending_buf[t.d_buf+2*t.last_lit]=e>>>8&255,t.pending_buf[t.d_buf+2*t.last_lit+1]=255&e,t.pending_buf[t.l_buf+t.last_lit]=255&n,t.last_lit++,0===e?t.dyn_ltree[2*n]++:(t.matches++,e--,t.dyn_ltree[2*(f[n]+a+1)]++,t.dyn_dtree[2*y(e)]++),t.last_lit===t.lit_bufsize-1},_tr_align:function(t){z(t,2,3),x(t,256,o),function(t){16===t.bi_valid?(k(t,t.bi_buf),t.bi_buf=0,t.bi_valid=0):t.bi_valid>=8&&(t.pending_buf[t.pending++]=255&t.bi_buf,t.bi_buf>>=8,t.bi_valid-=8)}(t)}},K=function(t,e,a,n){for(var r=65535&t,i=t>>>16&65535,s=0;0!==a;){a-=s=a>2e3?2e3:a;do{i=i+(r=r+e[n++]|0)|0}while(--s);r%=65521,i%=65521}return r|i<<16},N=new Uint32Array(function(){for(var t,e=[],a=0;a<256;a++){t=a;for(var n=0;n<8;n++)t=1&t?3988292384^t>>>1:t>>>1;e[a]=t}return e}()),O=function(t,e,a,n){var r=N,i=n+a;t^=-1;for(var s=n;s<i;s++)t=t>>>8^r[255&(t^e[s])];return~t},q={2:\\\"need dictionary\\\",1:\\\"stream end\\\",0:\\\"\\\",\\\"-1\\\":\\\"file error\\\",\\\"-2\\\":\\\"stream error\\\",\\\"-3\\\":\\\"data error\\\",\\\"-4\\\":\\\"insufficient memory\\\",\\\"-5\\\":\\\"buffer error\\\",\\\"-6\\\":\\\"incompatible version\\\"},F=0,G=2,J=3,P=4,Q=0,V=1,W=-1,X=0,Y=8,Z=R._tr_init,$=R._tr_stored_block,tt=R._tr_flush_block,et=R._tr_tally,at=R._tr_align,nt=F,rt=1,it=J,st=P,ht=5,lt=Q,_t=V,ot=-2,dt=-3,ut=-5,ft=W,ct=1,pt=2,gt=3,wt=4,vt=X,bt=2,mt=Y,yt=258,kt=262,zt=103,xt=113,At=666,Ut=function(t,e){return t.msg=q[e],e},It=function(t){return(t<<1)-(t>4?9:0)},Bt=function(t){for(var e=t.length;--e>=0;)t[e]=0},Et=function(t,e,a){return(e<<t.hash_shift^a)&t.hash_mask},St=function(t){var e=t.state,a=e.pending;a>t.avail_out&&(a=t.avail_out),0!==a&&(t.output.set(e.pending_buf.subarray(e.pending_out,e.pending_out+a),t.next_out),t.next_out+=a,e.pending_out+=a,t.total_out+=a,t.avail_out-=a,e.pending-=a,0===e.pending&&(e.pending_out=0))},Ct=function(t,e){tt(t,t.block_start>=0?t.block_start:-1,t.strstart-t.block_start,e),t.block_start=t.strstart,St(t.strm)},Dt=function(t,e){t.pending_buf[t.pending++]=e},jt=function(t,e){t.pending_buf[t.pending++]=e>>>8&255,t.pending_buf[t.pending++]=255&e},Mt=function(t,e){var a,n,r=t.max_chain_length,i=t.strstart,s=t.prev_length,h=t.nice_match,l=t.strstart>t.w_size-kt?t.strstart-(t.w_size-kt):0,_=t.window,o=t.w_mask,d=t.prev,u=t.strstart+yt,f=_[i+s-1],c=_[i+s];t.prev_length>=t.good_match&&(r>>=2),h>t.lookahead&&(h=t.lookahead);do{if(_[(a=e)+s]===c&&_[a+s-1]===f&&_[a]===_[i]&&_[++a]===_[i+1]){i+=2,a++;do{}while(_[++i]===_[++a]&&_[++i]===_[++a]&&_[++i]===_[++a]&&_[++i]===_[++a]&&_[++i]===_[++a]&&_[++i]===_[++a]&&_[++i]===_[++a]&&_[++i]===_[++a]&&i<u);if(n=yt-(u-i),i=u-yt,n>s){if(t.match_start=e,s=n,n>=h)break;f=_[i+s-1],c=_[i+s]}}}while((e=d[e&o])>l&&0!=--r);return s<=t.lookahead?s:t.lookahead},Lt=function(t){var e,a,n,r,i,s,h,l,_,o,d=t.w_size;do{if(r=t.window_size-t.lookahead-t.strstart,t.strstart>=d+(d-kt)){t.window.set(t.window.subarray(d,d+d),0),t.match_start-=d,t.strstart-=d,t.block_start-=d,e=a=t.hash_size;do{n=t.head[--e],t.head[e]=n>=d?n-d:0}while(--a);e=a=d;do{n=t.prev[--e],t.prev[e]=n>=d?n-d:0}while(--a);r+=d}if(0===t.strm.avail_in)break;if(s=t.strm,h=t.window,l=t.strstart+t.lookahead,_=r,o=void 0,(o=s.avail_in)>_&&(o=_),a=0===o?0:(s.avail_in-=o,h.set(s.input.subarray(s.next_in,s.next_in+o),l),1===s.state.wrap?s.adler=K(s.adler,h,o,l):2===s.state.wrap&&(s.adler=O(s.adler,h,o,l)),s.next_in+=o,s.total_in+=o,o),t.lookahead+=a,t.lookahead+t.insert>=3)for(i=t.strstart-t.insert,t.ins_h=t.window[i],t.ins_h=Et(t,t.ins_h,t.window[i+1]);t.insert&&(t.ins_h=Et(t,t.ins_h,t.window[i+3-1]),t.prev[i&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=i,i++,t.insert--,!(t.lookahead+t.insert<3)););}while(t.lookahead<kt&&0!==t.strm.avail_in)},Tt=function(t,e){for(var a,n;;){if(t.lookahead<kt){if(Lt(t),t.lookahead<kt&&e===nt)return 1;if(0===t.lookahead)break}if(a=0,t.lookahead>=3&&(t.ins_h=Et(t,t.ins_h,t.window[t.strstart+3-1]),a=t.prev[t.strstart&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=t.strstart),0!==a&&t.strstart-a<=t.w_size-kt&&(t.match_length=Mt(t,a)),t.match_length>=3)if(n=et(t,t.strstart-t.match_start,t.match_length-3),t.lookahead-=t.match_length,t.match_length<=t.max_lazy_match&&t.lookahead>=3){t.match_length--;do{t.strstart++,t.ins_h=Et(t,t.ins_h,t.window[t.strstart+3-1]),a=t.prev[t.strstart&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=t.strstart}while(0!=--t.match_length);t.strstart++}else t.strstart+=t.match_length,t.match_length=0,t.ins_h=t.window[t.strstart],t.ins_h=Et(t,t.ins_h,t.window[t.strstart+1]);else n=et(t,0,t.window[t.strstart]),t.lookahead--,t.strstart++;if(n&&(Ct(t,!1),0===t.strm.avail_out))return 1}return t.insert=t.strstart<2?t.strstart:2,e===st?(Ct(t,!0),0===t.strm.avail_out?3:4):t.last_lit&&(Ct(t,!1),0===t.strm.avail_out)?1:2},Ht=function(t,e){for(var a,n,r;;){if(t.lookahead<kt){if(Lt(t),t.lookahead<kt&&e===nt)return 1;if(0===t.lookahead)break}if(a=0,t.lookahead>=3&&(t.ins_h=Et(t,t.ins_h,t.window[t.strstart+3-1]),a=t.prev[t.strstart&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=t.strstart),t.prev_length=t.match_length,t.prev_match=t.match_start,t.match_length=2,0!==a&&t.prev_length<t.max_lazy_match&&t.strstart-a<=t.w_size-kt&&(t.match_length=Mt(t,a),t.match_length<=5&&(t.strategy===ct||3===t.match_length&&t.strstart-t.match_start>4096)&&(t.match_length=2)),t.prev_length>=3&&t.match_length<=t.prev_length){r=t.strstart+t.lookahead-3,n=et(t,t.strstart-1-t.prev_match,t.prev_length-3),t.lookahead-=t.prev_length-1,t.prev_length-=2;do{++t.strstart<=r&&(t.ins_h=Et(t,t.ins_h,t.window[t.strstart+3-1]),a=t.prev[t.strstart&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=t.strstart)}while(0!=--t.prev_length);if(t.match_available=0,t.match_length=2,t.strstart++,n&&(Ct(t,!1),0===t.strm.avail_out))return 1}else if(t.match_available){if((n=et(t,0,t.window[t.strstart-1]))&&Ct(t,!1),t.strstart++,t.lookahead--,0===t.strm.avail_out)return 1}else t.match_available=1,t.strstart++,t.lookahead--}return t.match_available&&(n=et(t,0,t.window[t.strstart-1]),t.match_available=0),t.insert=t.strstart<2?t.strstart:2,e===st?(Ct(t,!0),0===t.strm.avail_out?3:4):t.last_lit&&(Ct(t,!1),0===t.strm.avail_out)?1:2};function Rt(t,e,a,n,r){this.good_length=t,this.max_lazy=e,this.nice_length=a,this.max_chain=n,this.func=r}var Kt=[new Rt(0,0,0,0,(function(t,e){var a=65535;for(a>t.pending_buf_size-5&&(a=t.pending_buf_size-5);;){if(t.lookahead<=1){if(Lt(t),0===t.lookahead&&e===nt)return 1;if(0===t.lookahead)break}t.strstart+=t.lookahead,t.lookahead=0;var n=t.block_start+a;if((0===t.strstart||t.strstart>=n)&&(t.lookahead=t.strstart-n,t.strstart=n,Ct(t,!1),0===t.strm.avail_out))return 1;if(t.strstart-t.block_start>=t.w_size-kt&&(Ct(t,!1),0===t.strm.avail_out))return 1}return t.insert=0,e===st?(Ct(t,!0),0===t.strm.avail_out?3:4):(t.strstart>t.block_start&&(Ct(t,!1),t.strm.avail_out),1)})),new Rt(4,4,8,4,Tt),new Rt(4,5,16,8,Tt),new Rt(4,6,32,32,Tt),new Rt(4,4,16,16,Ht),new Rt(8,16,32,32,Ht),new Rt(8,16,128,128,Ht),new Rt(8,32,128,256,Ht),new Rt(32,128,258,1024,Ht),new Rt(32,258,258,4096,Ht)];function Nt(){this.strm=null,this.status=0,this.pending_buf=null,this.pending_buf_size=0,this.pending_out=0,this.pending=0,this.wrap=0,this.gzhead=null,this.gzindex=0,this.method=mt,this.last_flush=-1,this.w_size=0,this.w_bits=0,this.w_mask=0,this.window=null,this.window_size=0,this.prev=null,this.head=null,this.ins_h=0,this.hash_size=0,this.hash_bits=0,this.hash_mask=0,this.hash_shift=0,this.block_start=0,this.match_length=0,this.prev_match=0,this.match_available=0,this.strstart=0,this.match_start=0,this.lookahead=0,this.prev_length=0,this.max_chain_length=0,this.max_lazy_match=0,this.level=0,this.strategy=0,this.good_match=0,this.nice_match=0,this.dyn_ltree=new Uint16Array(1146),this.dyn_dtree=new Uint16Array(122),this.bl_tree=new Uint16Array(78),Bt(this.dyn_ltree),Bt(this.dyn_dtree),Bt(this.bl_tree),this.l_desc=null,this.d_desc=null,this.bl_desc=null,this.bl_count=new Uint16Array(16),this.heap=new Uint16Array(573),Bt(this.heap),this.heap_len=0,this.heap_max=0,this.depth=new Uint16Array(573),Bt(this.depth),this.l_buf=0,this.lit_bufsize=0,this.last_lit=0,this.d_buf=0,this.opt_len=0,this.static_len=0,this.matches=0,this.insert=0,this.bi_buf=0,this.bi_valid=0}var Ot=function(t){if(!t||!t.state)return Ut(t,ot);t.total_in=t.total_out=0,t.data_type=bt;var e=t.state;return e.pending=0,e.pending_out=0,e.wrap<0&&(e.wrap=-e.wrap),e.status=e.wrap?42:xt,t.adler=2===e.wrap?0:1,e.last_flush=nt,Z(e),lt},qt=function(t){var e,a=Ot(t);return a===lt&&((e=t.state).window_size=2*e.w_size,Bt(e.head),e.max_lazy_match=Kt[e.level].max_lazy,e.good_match=Kt[e.level].good_length,e.nice_match=Kt[e.level].nice_length,e.max_chain_length=Kt[e.level].max_chain,e.strstart=0,e.block_start=0,e.lookahead=0,e.insert=0,e.match_length=e.prev_length=2,e.match_available=0,e.ins_h=0),a},Ft=function(t,e,a,n,r,i){if(!t)return ot;var s=1;if(e===ft&&(e=6),n<0?(s=0,n=-n):n>15&&(s=2,n-=16),r<1||r>9||a!==mt||n<8||n>15||e<0||e>9||i<0||i>wt)return Ut(t,ot);8===n&&(n=9);var h=new Nt;return t.state=h,h.strm=t,h.wrap=s,h.gzhead=null,h.w_bits=n,h.w_size=1<<h.w_bits,h.w_mask=h.w_size-1,h.hash_bits=r+7,h.hash_size=1<<h.hash_bits,h.hash_mask=h.hash_size-1,h.hash_shift=~~((h.hash_bits+3-1)/3),h.window=new Uint8Array(2*h.w_size),h.head=new Uint16Array(h.hash_size),h.prev=new Uint16Array(h.w_size),h.lit_bufsize=1<<r+6,h.pending_buf_size=4*h.lit_bufsize,h.pending_buf=new Uint8Array(h.pending_buf_size),h.d_buf=1*h.lit_bufsize,h.l_buf=3*h.lit_bufsize,h.level=e,h.strategy=i,h.method=a,qt(t)},Gt={deflateInit:function(t,e){return Ft(t,e,mt,15,8,vt)},deflateInit2:Ft,deflateReset:qt,deflateResetKeep:Ot,deflateSetHeader:function(t,e){return t&&t.state?2!==t.state.wrap?ot:(t.state.gzhead=e,lt):ot},deflate:function(t,e){var a,n;if(!t||!t.state||e>ht||e<0)return t?Ut(t,ot):ot;var r=t.state;if(!t.output||!t.input&&0!==t.avail_in||r.status===At&&e!==st)return Ut(t,0===t.avail_out?ut:ot);r.strm=t;var i=r.last_flush;if(r.last_flush=e,42===r.status)if(2===r.wrap)t.adler=0,Dt(r,31),Dt(r,139),Dt(r,8),r.gzhead?(Dt(r,(r.gzhead.text?1:0)+(r.gzhead.hcrc?2:0)+(r.gzhead.extra?4:0)+(r.gzhead.name?8:0)+(r.gzhead.comment?16:0)),Dt(r,255&r.gzhead.time),Dt(r,r.gzhead.time>>8&255),Dt(r,r.gzhead.time>>16&255),Dt(r,r.gzhead.time>>24&255),Dt(r,9===r.level?2:r.strategy>=pt||r.level<2?4:0),Dt(r,255&r.gzhead.os),r.gzhead.extra&&r.gzhead.extra.length&&(Dt(r,255&r.gzhead.extra.length),Dt(r,r.gzhead.extra.length>>8&255)),r.gzhead.hcrc&&(t.adler=O(t.adler,r.pending_buf,r.pending,0)),r.gzindex=0,r.status=69):(Dt(r,0),Dt(r,0),Dt(r,0),Dt(r,0),Dt(r,0),Dt(r,9===r.level?2:r.strategy>=pt||r.level<2?4:0),Dt(r,3),r.status=xt);else{var s=mt+(r.w_bits-8<<4)<<8;s|=(r.strategy>=pt||r.level<2?0:r.level<6?1:6===r.level?2:3)<<6,0!==r.strstart&&(s|=32),s+=31-s%31,r.status=xt,jt(r,s),0!==r.strstart&&(jt(r,t.adler>>>16),jt(r,65535&t.adler)),t.adler=1}if(69===r.status)if(r.gzhead.extra){for(a=r.pending;r.gzindex<(65535&r.gzhead.extra.length)&&(r.pending!==r.pending_buf_size||(r.gzhead.hcrc&&r.pending>a&&(t.adler=O(t.adler,r.pending_buf,r.pending-a,a)),St(t),a=r.pending,r.pending!==r.pending_buf_size));)Dt(r,255&r.gzhead.extra[r.gzindex]),r.gzindex++;r.gzhead.hcrc&&r.pending>a&&(t.adler=O(t.adler,r.pending_buf,r.pending-a,a)),r.gzindex===r.gzhead.extra.length&&(r.gzindex=0,r.status=73)}else r.status=73;if(73===r.status)if(r.gzhead.name){a=r.pending;do{if(r.pending===r.pending_buf_size&&(r.gzhead.hcrc&&r.pending>a&&(t.adler=O(t.adler,r.pending_buf,r.pending-a,a)),St(t),a=r.pending,r.pending===r.pending_buf_size)){n=1;break}n=r.gzindex<r.gzhead.name.length?255&r.gzhead.name.charCodeAt(r.gzindex++):0,Dt(r,n)}while(0!==n);r.gzhead.hcrc&&r.pending>a&&(t.adler=O(t.adler,r.pending_buf,r.pending-a,a)),0===n&&(r.gzindex=0,r.status=91)}else r.status=91;if(91===r.status)if(r.gzhead.comment){a=r.pending;do{if(r.pending===r.pending_buf_size&&(r.gzhead.hcrc&&r.pending>a&&(t.adler=O(t.adler,r.pending_buf,r.pending-a,a)),St(t),a=r.pending,r.pending===r.pending_buf_size)){n=1;break}n=r.gzindex<r.gzhead.comment.length?255&r.gzhead.comment.charCodeAt(r.gzindex++):0,Dt(r,n)}while(0!==n);r.gzhead.hcrc&&r.pending>a&&(t.adler=O(t.adler,r.pending_buf,r.pending-a,a)),0===n&&(r.status=zt)}else r.status=zt;if(r.status===zt&&(r.gzhead.hcrc?(r.pending+2>r.pending_buf_size&&St(t),r.pending+2<=r.pending_buf_size&&(Dt(r,255&t.adler),Dt(r,t.adler>>8&255),t.adler=0,r.status=xt)):r.status=xt),0!==r.pending){if(St(t),0===t.avail_out)return r.last_flush=-1,lt}else if(0===t.avail_in&&It(e)<=It(i)&&e!==st)return Ut(t,ut);if(r.status===At&&0!==t.avail_in)return Ut(t,ut);if(0!==t.avail_in||0!==r.lookahead||e!==nt&&r.status!==At){var h=r.strategy===pt?function(t,e){for(var a;;){if(0===t.lookahead&&(Lt(t),0===t.lookahead)){if(e===nt)return 1;break}if(t.match_length=0,a=et(t,0,t.window[t.strstart]),t.lookahead--,t.strstart++,a&&(Ct(t,!1),0===t.strm.avail_out))return 1}return t.insert=0,e===st?(Ct(t,!0),0===t.strm.avail_out?3:4):t.last_lit&&(Ct(t,!1),0===t.strm.avail_out)?1:2}(r,e):r.strategy===gt?function(t,e){for(var a,n,r,i,s=t.window;;){if(t.lookahead<=yt){if(Lt(t),t.lookahead<=yt&&e===nt)return 1;if(0===t.lookahead)break}if(t.match_length=0,t.lookahead>=3&&t.strstart>0&&(n=s[r=t.strstart-1])===s[++r]&&n===s[++r]&&n===s[++r]){i=t.strstart+yt;do{}while(n===s[++r]&&n===s[++r]&&n===s[++r]&&n===s[++r]&&n===s[++r]&&n===s[++r]&&n===s[++r]&&n===s[++r]&&r<i);t.match_length=yt-(i-r),t.match_length>t.lookahead&&(t.match_length=t.lookahead)}if(t.match_length>=3?(a=et(t,1,t.match_length-3),t.lookahead-=t.match_length,t.strstart+=t.match_length,t.match_length=0):(a=et(t,0,t.window[t.strstart]),t.lookahead--,t.strstart++),a&&(Ct(t,!1),0===t.strm.avail_out))return 1}return t.insert=0,e===st?(Ct(t,!0),0===t.strm.avail_out?3:4):t.last_lit&&(Ct(t,!1),0===t.strm.avail_out)?1:2}(r,e):Kt[r.level].func(r,e);if(3!==h&&4!==h||(r.status=At),1===h||3===h)return 0===t.avail_out&&(r.last_flush=-1),lt;if(2===h&&(e===rt?at(r):e!==ht&&($(r,0,0,!1),e===it&&(Bt(r.head),0===r.lookahead&&(r.strstart=0,r.block_start=0,r.insert=0))),St(t),0===t.avail_out))return r.last_flush=-1,lt}return e!==st?lt:r.wrap<=0?_t:(2===r.wrap?(Dt(r,255&t.adler),Dt(r,t.adler>>8&255),Dt(r,t.adler>>16&255),Dt(r,t.adler>>24&255),Dt(r,255&t.total_in),Dt(r,t.total_in>>8&255),Dt(r,t.total_in>>16&255),Dt(r,t.total_in>>24&255)):(jt(r,t.adler>>>16),jt(r,65535&t.adler)),St(t),r.wrap>0&&(r.wrap=-r.wrap),0!==r.pending?lt:_t)},deflateEnd:function(t){if(!t||!t.state)return ot;var e=t.state.status;return 42!==e&&69!==e&&73!==e&&91!==e&&e!==zt&&e!==xt&&e!==At?Ut(t,ot):(t.state=null,e===xt?Ut(t,dt):lt)},deflateSetDictionary:function(t,e){var a=e.length;if(!t||!t.state)return ot;var n=t.state,r=n.wrap;if(2===r||1===r&&42!==n.status||n.lookahead)return ot;if(1===r&&(t.adler=K(t.adler,e,a,0)),n.wrap=0,a>=n.w_size){0===r&&(Bt(n.head),n.strstart=0,n.block_start=0,n.insert=0);var i=new Uint8Array(n.w_size);i.set(e.subarray(a-n.w_size,a),0),e=i,a=n.w_size}var s=t.avail_in,h=t.next_in,l=t.input;for(t.avail_in=a,t.next_in=0,t.input=e,Lt(n);n.lookahead>=3;){var _=n.strstart,o=n.lookahead-2;do{n.ins_h=Et(n,n.ins_h,n.window[_+3-1]),n.prev[_&n.w_mask]=n.head[n.ins_h],n.head[n.ins_h]=_,_++}while(--o);n.strstart=_,n.lookahead=2,Lt(n)}return n.strstart+=n.lookahead,n.block_start=n.strstart,n.insert=n.lookahead,n.lookahead=0,n.match_length=n.prev_length=2,n.match_available=0,t.next_in=h,t.input=l,t.avail_in=s,n.wrap=r,lt},deflateInfo:\\\"pako deflate (from Nodeca project)\\\"};for(var Jt=new Uint8Array(256),Pt=0;Pt<256;Pt++)Jt[Pt]=Pt>=252?6:Pt>=248?5:Pt>=240?4:Pt>=224?3:Pt>=192?2:1;Jt[254]=Jt[254]=1;var Qt=function(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg=\\\"\\\",this.state=null,this.data_type=2,this.adler=0},Vt=Object.prototype.toString,Wt=F,Xt=G,Yt=J,Zt=P,$t=Q,te=V,ee=W,ae=X,ne=Y;function re(){this.options={level:ee,method:ne,chunkSize:16384,windowBits:15,memLevel:8,strategy:ae};var t=this.options;t.raw&&t.windowBits>0?t.windowBits=-t.windowBits:t.gzip&&t.windowBits>0&&t.windowBits<16&&(t.windowBits+=16),this.err=0,this.msg=\\\"\\\",this.ended=!1,this.chunks=[],this.strm=new Qt,this.strm.avail_out=0;var e=Gt.deflateInit2(this.strm,t.level,t.method,t.windowBits,t.memLevel,t.strategy);if(e!==$t)throw new Error(q[e]);if(t.header&&Gt.deflateSetHeader(this.strm,t.header),t.dictionary){var a;if(a=\\\"[object ArrayBuffer]\\\"===Vt.call(t.dictionary)?new Uint8Array(t.dictionary):t.dictionary,(e=Gt.deflateSetDictionary(this.strm,a))!==$t)throw new Error(q[e]);this._dict_set=!0}}function ie(t,e,a){try{t.postMessage({type:\\\"errored\\\",error:e,streamId:a})}catch(n){t.postMessage({type:\\\"errored\\\",error:String(e),streamId:a})}}function se(t){var e=t.strm.adler;return new Uint8Array([3,0,e>>>24&255,e>>>16&255,e>>>8&255,255&e])}re.prototype.push=function(t,e){var a,n,r=this.strm,i=this.options.chunkSize;if(this.ended)return!1;for(n=e===~~e?e:!0===e?Zt:Wt,\\\"[object ArrayBuffer]\\\"===Vt.call(t)?r.input=new Uint8Array(t):r.input=t,r.next_in=0,r.avail_in=r.input.length;;)if(0===r.avail_out&&(r.output=new Uint8Array(i),r.next_out=0,r.avail_out=i),(n===Xt||n===Yt)&&r.avail_out<=6)this.onData(r.output.subarray(0,r.next_out)),r.avail_out=0;else{if((a=Gt.deflate(r,n))===te)return r.next_out>0&&this.onData(r.output.subarray(0,r.next_out)),a=Gt.deflateEnd(this.strm),this.onEnd(a),this.ended=!0,a===$t;if(0!==r.avail_out){if(n>0&&r.next_out>0)this.onData(r.output.subarray(0,r.next_out)),r.avail_out=0;else if(0===r.avail_in)break}else this.onData(r.output)}return!0},re.prototype.onData=function(t){this.chunks.push(t)},re.prototype.onEnd=function(t){t===$t&&(this.result=function(t){for(var e=0,a=0,n=t.length;a<n;a++)e+=t[a].length;for(var r=new Uint8Array(e),i=0,s=0,h=t.length;i<h;i++){var l=t[i];r.set(l,s),s+=l.length}return r}(this.chunks)),this.chunks=[],this.err=t,this.msg=this.strm.msg},function(e){void 0===e&&(e=self);try{var a=new Map;e.addEventListener(\\\"message\\\",(function(n){try{var r=function(e,a){switch(a.action){case\\\"init\\\":return{type:\\\"initialized\\\",version:\\\"5.35.1\\\"};case\\\"write\\\":var n=e.get(a.streamId);n||(n=new re,e.set(a.streamId,n));var r=n.chunks.length,i=function(t){if(\\\"function\\\"==typeof TextEncoder&&TextEncoder.prototype.encode)return(new TextEncoder).encode(t);var e,a,n,r,i,s=t.length,h=0;for(r=0;r<s;r++)55296==(64512&(a=t.charCodeAt(r)))&&r+1<s&&56320==(64512&(n=t.charCodeAt(r+1)))&&(a=65536+(a-55296<<10)+(n-56320),r++),h+=a<128?1:a<2048?2:a<65536?3:4;for(e=new Uint8Array(h),i=0,r=0;i<h;r++)55296==(64512&(a=t.charCodeAt(r)))&&r+1<s&&56320==(64512&(n=t.charCodeAt(r+1)))&&(a=65536+(a-55296<<10)+(n-56320),r++),a<128?e[i++]=a:a<2048?(e[i++]=192|a>>>6,e[i++]=128|63&a):a<65536?(e[i++]=224|a>>>12,e[i++]=128|a>>>6&63,e[i++]=128|63&a):(e[i++]=240|a>>>18,e[i++]=128|a>>>12&63,e[i++]=128|a>>>6&63,e[i++]=128|63&a);return e}(a.data);return n.push(i,G),{type:\\\"wrote\\\",id:a.id,streamId:a.streamId,result:t(n.chunks.slice(r)),trailer:se(n),additionalBytesCount:i.length};case\\\"reset\\\":e.delete(a.streamId)}}(a,n.data);r&&e.postMessage(r)}catch(t){ie(e,t,n.data&&\\\"streamId\\\"in n.data?n.data.streamId:void 0)}}))}catch(t){ie(e,t)}}()}();\"])));\n}\nvar state = { status: 0 /* DeflateWorkerStatus.Nil */ };\nexport function startDeflateWorker(configuration, source, onInitializationFailure, createDeflateWorkerImpl) {\n    if (createDeflateWorkerImpl === void 0) { createDeflateWorkerImpl = createDeflateWorker; }\n    if (state.status === 0 /* DeflateWorkerStatus.Nil */) {\n        // doStartDeflateWorker updates the state to \"loading\" or \"error\"\n        doStartDeflateWorker(configuration, source, createDeflateWorkerImpl);\n    }\n    switch (state.status) {\n        case 1 /* DeflateWorkerStatus.Loading */:\n            state.initializationFailureCallbacks.push(onInitializationFailure);\n            return state.worker;\n        case 3 /* DeflateWorkerStatus.Initialized */:\n            return state.worker;\n    }\n}\nexport function resetDeflateWorkerState() {\n    if (state.status === 3 /* DeflateWorkerStatus.Initialized */ || state.status === 1 /* DeflateWorkerStatus.Loading */) {\n        state.stop();\n    }\n    state = { status: 0 /* DeflateWorkerStatus.Nil */ };\n}\nexport function getDeflateWorkerStatus() {\n    return state.status;\n}\n/**\n * Starts the deflate worker and handle messages and errors\n *\n * The spec allow browsers to handle worker errors differently:\n * - Chromium throws an exception\n * - Firefox fires an error event\n *\n * more details: https://bugzilla.mozilla.org/show_bug.cgi?id=1736865#c2\n */\nexport function doStartDeflateWorker(configuration, source, createDeflateWorkerImpl) {\n    if (createDeflateWorkerImpl === void 0) { createDeflateWorkerImpl = createDeflateWorker; }\n    try {\n        var worker = createDeflateWorkerImpl(configuration);\n        var removeErrorListener_1 = addEventListener(configuration, worker, 'error', function (error) {\n            onError(configuration, source, error);\n        }).stop;\n        var removeMessageListener_1 = addEventListener(configuration, worker, 'message', function (_a) {\n            var data = _a.data;\n            if (data.type === 'errored') {\n                onError(configuration, source, data.error, data.streamId);\n            }\n            else if (data.type === 'initialized') {\n                onInitialized(data.version);\n            }\n        }).stop;\n        worker.postMessage({ action: 'init' });\n        setTimeout(function () { return onTimeout(source); }, INITIALIZATION_TIME_OUT_DELAY);\n        var stop_1 = function () {\n            removeErrorListener_1();\n            removeMessageListener_1();\n        };\n        state = { status: 1 /* DeflateWorkerStatus.Loading */, worker: worker, stop: stop_1, initializationFailureCallbacks: [] };\n    }\n    catch (error) {\n        onError(configuration, source, error);\n    }\n}\nfunction onTimeout(source) {\n    if (state.status === 1 /* DeflateWorkerStatus.Loading */) {\n        display.error(\"\".concat(source, \" failed to start: a timeout occurred while initializing the Worker\"));\n        state.initializationFailureCallbacks.forEach(function (callback) { return callback(); });\n        state = { status: 2 /* DeflateWorkerStatus.Error */ };\n    }\n}\nfunction onInitialized(version) {\n    if (state.status === 1 /* DeflateWorkerStatus.Loading */) {\n        state = { status: 3 /* DeflateWorkerStatus.Initialized */, worker: state.worker, stop: state.stop, version: version };\n    }\n}\nfunction onError(configuration, source, error, streamId) {\n    if (state.status === 1 /* DeflateWorkerStatus.Loading */ || state.status === 0 /* DeflateWorkerStatus.Nil */) {\n        display.error(\"\".concat(source, \" failed to start: an error occurred while creating the Worker:\"), error);\n        if (error instanceof Event || (error instanceof Error && isMessageCspRelated(error.message))) {\n            var baseMessage = void 0;\n            if (configuration.workerUrl) {\n                baseMessage = \"Please make sure the Worker URL \".concat(configuration.workerUrl, \" is correct and CSP is correctly configured.\");\n            }\n            else {\n                baseMessage = 'Please make sure CSP is correctly configured.';\n            }\n            display.error(\"\".concat(baseMessage, \" See documentation at \").concat(DOCS_ORIGIN, \"/integrations/content_security_policy_logs/#use-csp-with-real-user-monitoring-and-session-replay\"));\n        }\n        else {\n            addTelemetryError(error);\n        }\n        if (state.status === 1 /* DeflateWorkerStatus.Loading */) {\n            state.initializationFailureCallbacks.forEach(function (callback) { return callback(); });\n        }\n        state = { status: 2 /* DeflateWorkerStatus.Error */ };\n    }\n    else {\n        addTelemetryError(error, {\n            worker_version: state.status === 3 /* DeflateWorkerStatus.Initialized */ && state.version,\n            stream_id: streamId,\n        });\n    }\n}\nfunction isMessageCspRelated(message) {\n    return (includes(message, 'Content Security Policy') ||\n        // Related to `require-trusted-types-for` CSP: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy/require-trusted-types-for\n        includes(message, \"requires 'TrustedScriptURL'\"));\n}\n//# sourceMappingURL=deflateWorker.js.map","/**\n * Test for Browser features used while recording\n */\nexport function isBrowserSupported() {\n    return (\n    // Array.from is a bit less supported by browsers than CSSSupportsRule, but has higher chances\n    // to be polyfilled. Test for both to be more confident. We could add more things if we find out\n    // this test is not sufficient.\n    typeof Array.from === 'function' &&\n        typeof CSSSupportsRule === 'function' &&\n        typeof URL.createObjectURL === 'function' &&\n        'forEach' in NodeList.prototype);\n}\n//# sourceMappingURL=isBrowserSupported.js.map","// Keep the following in sync with packages/rum-slim/src/entries/main.ts\nimport { defineGlobal, getGlobalObject } from '@datadog/browser-core';\nimport { makeRumPublicApi, startRum } from '@datadog/browser-rum-core';\nimport { startRecording } from '../boot/startRecording';\nimport { makeRecorderApi } from '../boot/recorderApi';\nimport { createDeflateEncoder, startDeflateWorker } from '../domain/deflate';\nexport { DefaultPrivacyLevel } from '@datadog/browser-core';\nvar recorderApi = makeRecorderApi(startRecording);\nexport var datadogRum = makeRumPublicApi(startRum, recorderApi, { startDeflateWorker: startDeflateWorker, createDeflateEncoder: createDeflateEncoder });\ndefineGlobal(getGlobalObject(), 'DD_RUM', datadogRum);\n//# sourceMappingURL=main.js.map","import { addTelemetryUsage, assign, createContextManager, deepClone, makePublicApi, monitor, clocksNow, callMonitored, createHandlingStack, checkUser, sanitizeUser, sanitize, createIdentityEncoder, createCustomerDataTrackerManager, storeContextManager, displayAlreadyInitializedError, createTrackingConsentState, timeStampToClocks, } from '@datadog/browser-core';\nimport { buildCommonContext } from '../domain/contexts/commonContext';\nimport { createCustomVitalsState } from '../domain/vital/vitalCollection';\nimport { createPreStartStrategy } from './preStartRum';\nvar RUM_STORAGE_KEY = 'rum';\nexport function makeRumPublicApi(startRumImpl, recorderApi, options) {\n    if (options === void 0) { options = {}; }\n    var customerDataTrackerManager = createCustomerDataTrackerManager(0 /* CustomerDataCompressionStatus.Unknown */);\n    var globalContextManager = createContextManager(customerDataTrackerManager.getOrCreateTracker(2 /* CustomerDataType.GlobalContext */));\n    var userContextManager = createContextManager(customerDataTrackerManager.getOrCreateTracker(1 /* CustomerDataType.User */));\n    var trackingConsentState = createTrackingConsentState();\n    var customVitalsState = createCustomVitalsState();\n    function getCommonContext() {\n        return buildCommonContext(globalContextManager, userContextManager, recorderApi);\n    }\n    var strategy = createPreStartStrategy(options, getCommonContext, trackingConsentState, customVitalsState, function (configuration, deflateWorker, initialViewOptions) {\n        if (configuration.storeContextsAcrossPages) {\n            storeContextManager(configuration, globalContextManager, RUM_STORAGE_KEY, 2 /* CustomerDataType.GlobalContext */);\n            storeContextManager(configuration, userContextManager, RUM_STORAGE_KEY, 1 /* CustomerDataType.User */);\n        }\n        customerDataTrackerManager.setCompressionStatus(deflateWorker ? 1 /* CustomerDataCompressionStatus.Enabled */ : 2 /* CustomerDataCompressionStatus.Disabled */);\n        var startRumResult = startRumImpl(configuration, recorderApi, customerDataTrackerManager, getCommonContext, initialViewOptions, deflateWorker && options.createDeflateEncoder\n            ? function (streamId) { return options.createDeflateEncoder(configuration, deflateWorker, streamId); }\n            : createIdentityEncoder, trackingConsentState, customVitalsState);\n        recorderApi.onRumStart(startRumResult.lifeCycle, configuration, startRumResult.session, startRumResult.viewHistory, deflateWorker);\n        strategy = createPostStartStrategy(strategy, startRumResult);\n        return startRumResult;\n    });\n    var startView = monitor(function (options) {\n        var sanitizedOptions = typeof options === 'object' ? options : { name: options };\n        if (sanitizedOptions.context) {\n            customerDataTrackerManager.getOrCreateTracker(3 /* CustomerDataType.View */).updateCustomerData(sanitizedOptions.context);\n        }\n        strategy.startView(sanitizedOptions);\n        addTelemetryUsage({ feature: 'start-view' });\n    });\n    var rumPublicApi = makePublicApi({\n        init: monitor(function (initConfiguration) {\n            strategy.init(initConfiguration, rumPublicApi);\n        }),\n        setTrackingConsent: monitor(function (trackingConsent) {\n            trackingConsentState.update(trackingConsent);\n            addTelemetryUsage({ feature: 'set-tracking-consent', tracking_consent: trackingConsent });\n        }),\n        setViewName: monitor(function (name) {\n            strategy.setViewName(name);\n        }),\n        setViewContext: monitor(function (context) {\n            strategy.setViewContext(context);\n        }),\n        setViewContextProperty: monitor(function (key, value) {\n            strategy.setViewContextProperty(key, value);\n        }),\n        setGlobalContext: monitor(function (context) {\n            globalContextManager.setContext(context);\n            addTelemetryUsage({ feature: 'set-global-context' });\n        }),\n        getGlobalContext: monitor(function () { return globalContextManager.getContext(); }),\n        setGlobalContextProperty: monitor(function (key, value) {\n            globalContextManager.setContextProperty(key, value);\n            addTelemetryUsage({ feature: 'set-global-context' });\n        }),\n        removeGlobalContextProperty: monitor(function (key) { return globalContextManager.removeContextProperty(key); }),\n        clearGlobalContext: monitor(function () { return globalContextManager.clearContext(); }),\n        getInternalContext: monitor(function (startTime) { return strategy.getInternalContext(startTime); }),\n        getInitConfiguration: monitor(function () { return deepClone(strategy.initConfiguration); }),\n        addAction: function (name, context) {\n            var handlingStack = createHandlingStack();\n            callMonitored(function () {\n                strategy.addAction({\n                    name: sanitize(name),\n                    context: sanitize(context),\n                    startClocks: clocksNow(),\n                    type: \"custom\" /* ActionType.CUSTOM */,\n                    handlingStack: handlingStack,\n                });\n                addTelemetryUsage({ feature: 'add-action' });\n            });\n        },\n        addError: function (error, context) {\n            var handlingStack = createHandlingStack();\n            callMonitored(function () {\n                strategy.addError({\n                    error: error, // Do not sanitize error here, it is needed unserialized by computeRawError()\n                    handlingStack: handlingStack,\n                    context: sanitize(context),\n                    startClocks: clocksNow(),\n                });\n                addTelemetryUsage({ feature: 'add-error' });\n            });\n        },\n        addTiming: monitor(function (name, time) {\n            // TODO: next major decide to drop relative time support or update its behaviour\n            strategy.addTiming(sanitize(name), time);\n        }),\n        setUser: monitor(function (newUser) {\n            if (checkUser(newUser)) {\n                userContextManager.setContext(sanitizeUser(newUser));\n            }\n            addTelemetryUsage({ feature: 'set-user' });\n        }),\n        getUser: monitor(function () { return userContextManager.getContext(); }),\n        setUserProperty: monitor(function (key, property) {\n            var _a;\n            var sanitizedProperty = sanitizeUser((_a = {}, _a[key] = property, _a))[key];\n            userContextManager.setContextProperty(key, sanitizedProperty);\n            addTelemetryUsage({ feature: 'set-user' });\n        }),\n        removeUserProperty: monitor(function (key) { return userContextManager.removeContextProperty(key); }),\n        clearUser: monitor(function () { return userContextManager.clearContext(); }),\n        startView: startView,\n        stopSession: monitor(function () {\n            strategy.stopSession();\n            addTelemetryUsage({ feature: 'stop-session' });\n        }),\n        addFeatureFlagEvaluation: monitor(function (key, value) {\n            strategy.addFeatureFlagEvaluation(sanitize(key), sanitize(value));\n            addTelemetryUsage({ feature: 'add-feature-flag-evaluation' });\n        }),\n        getSessionReplayLink: monitor(function () { return recorderApi.getSessionReplayLink(); }),\n        startSessionReplayRecording: monitor(function (options) {\n            recorderApi.start(options);\n            addTelemetryUsage({ feature: 'start-session-replay-recording', force: options && options.force });\n        }),\n        stopSessionReplayRecording: monitor(function () { return recorderApi.stop(); }),\n        addDurationVital: monitor(function (name, options) {\n            addTelemetryUsage({ feature: 'add-duration-vital' });\n            strategy.addDurationVital({\n                name: sanitize(name),\n                type: \"duration\" /* VitalType.DURATION */,\n                startClocks: timeStampToClocks(options.startTime),\n                duration: options.duration,\n                context: sanitize(options && options.context),\n                description: sanitize(options && options.description),\n            });\n        }),\n        startDurationVital: monitor(function (name, options) {\n            addTelemetryUsage({ feature: 'start-duration-vital' });\n            return strategy.startDurationVital(sanitize(name), {\n                context: sanitize(options && options.context),\n                description: sanitize(options && options.description),\n            });\n        }),\n        stopDurationVital: monitor(function (nameOrRef, options) {\n            addTelemetryUsage({ feature: 'stop-duration-vital' });\n            strategy.stopDurationVital(typeof nameOrRef === 'string' ? sanitize(nameOrRef) : nameOrRef, {\n                context: sanitize(options && options.context),\n                description: sanitize(options && options.description),\n            });\n        }),\n    });\n    return rumPublicApi;\n}\nfunction createPostStartStrategy(preStartStrategy, startRumResult) {\n    return assign({\n        init: function (initConfiguration) {\n            displayAlreadyInitializedError('DD_RUM', initConfiguration);\n        },\n        initConfiguration: preStartStrategy.initConfiguration,\n    }, startRumResult);\n}\n//# sourceMappingURL=rumPublicApi.js.map","export function buildCommonContext(globalContextManager, userContextManager, recorderApi) {\n    return {\n        context: globalContextManager.getContext(),\n        user: userContextManager.getContext(),\n        hasReplay: recorderApi.isRecording() ? true : undefined,\n    };\n}\n//# sourceMappingURL=commonContext.js.map","import { createBoundedBuffer, display, canUseEventBridge, displayAlreadyInitializedError, willSyntheticsInjectRum, noop, timeStampNow, clocksNow, assign, getEventBridge, ExperimentalFeature, isExperimentalFeatureEnabled, initFeatureFlags, addTelemetryConfiguration, initFetchObservable, } from '@datadog/browser-core';\nimport { validateAndBuildRumConfiguration, } from '../domain/configuration';\nimport { startDurationVital, stopDurationVital } from '../domain/vital/vitalCollection';\nimport { fetchAndApplyRemoteConfiguration, serializeRumConfiguration } from '../domain/configuration';\nimport { callPluginsMethod } from '../domain/plugins';\nexport function createPreStartStrategy(_a, getCommonContext, trackingConsentState, customVitalsState, doStartRum) {\n    var ignoreInitIfSyntheticsWillInjectRum = _a.ignoreInitIfSyntheticsWillInjectRum, startDeflateWorker = _a.startDeflateWorker;\n    var bufferApiCalls = createBoundedBuffer();\n    var firstStartViewCall;\n    var deflateWorker;\n    var cachedInitConfiguration;\n    var cachedConfiguration;\n    var trackingConsentStateSubscription = trackingConsentState.observable.subscribe(tryStartRum);\n    function tryStartRum() {\n        if (!cachedInitConfiguration || !cachedConfiguration || !trackingConsentState.isGranted()) {\n            return;\n        }\n        trackingConsentStateSubscription.unsubscribe();\n        var initialViewOptions;\n        if (cachedConfiguration.trackViewsManually) {\n            if (!firstStartViewCall) {\n                return;\n            }\n            // An initial view is always created when starting RUM.\n            // When tracking views automatically, any startView call before RUM start creates an extra\n            // view.\n            // When tracking views manually, we use the ViewOptions from the first startView call as the\n            // initial view options, and we remove the actual startView call so we don't create an extra\n            // view.\n            bufferApiCalls.remove(firstStartViewCall.callback);\n            initialViewOptions = firstStartViewCall.options;\n        }\n        var startRumResult = doStartRum(cachedConfiguration, deflateWorker, initialViewOptions);\n        bufferApiCalls.drain(startRumResult);\n    }\n    function doInit(initConfiguration) {\n        var eventBridgeAvailable = canUseEventBridge();\n        if (eventBridgeAvailable) {\n            initConfiguration = overrideInitConfigurationForBridge(initConfiguration);\n        }\n        // Update the exposed initConfiguration to reflect the bridge and remote configuration overrides\n        cachedInitConfiguration = initConfiguration;\n        addTelemetryConfiguration(serializeRumConfiguration(initConfiguration));\n        if (cachedConfiguration) {\n            displayAlreadyInitializedError('DD_RUM', initConfiguration);\n            return;\n        }\n        var configuration = validateAndBuildRumConfiguration(initConfiguration);\n        if (!configuration) {\n            return;\n        }\n        if (!eventBridgeAvailable && !configuration.sessionStoreStrategyType) {\n            display.warn('No storage available for session. We will not send any data.');\n            return;\n        }\n        if (configuration.compressIntakeRequests && !eventBridgeAvailable && startDeflateWorker) {\n            deflateWorker = startDeflateWorker(configuration, 'Datadog RUM', \n            // Worker initialization can fail asynchronously, especially in Firefox where even CSP\n            // issues are reported asynchronously. For now, the SDK will continue its execution even if\n            // data won't be sent to Datadog. We could improve this behavior in the future.\n            noop);\n            if (!deflateWorker) {\n                // `startDeflateWorker` should have logged an error message explaining the issue\n                return;\n            }\n        }\n        cachedConfiguration = configuration;\n        // Instrumuent fetch to track network requests\n        // This is needed in case the consent is not granted and some cutsomer\n        // library (Apollo Client) is storing uninstrumented fetch to be used later\n        // The subscrption is needed so that the instrumentation process is completed\n        initFetchObservable().subscribe(noop);\n        trackingConsentState.tryToInit(configuration.trackingConsent);\n        tryStartRum();\n    }\n    var addDurationVital = function (vital) {\n        bufferApiCalls.add(function (startRumResult) { return startRumResult.addDurationVital(vital); });\n    };\n    return {\n        init: function (initConfiguration, publicApi) {\n            if (!initConfiguration) {\n                display.error('Missing configuration');\n                return;\n            }\n            // Set the experimental feature flags as early as possible, so we can use them in most places\n            initFeatureFlags(initConfiguration.enableExperimentalFeatures);\n            // Expose the initial configuration regardless of initialization success.\n            cachedInitConfiguration = initConfiguration;\n            // If we are in a Synthetics test configured to automatically inject a RUM instance, we want\n            // to completely discard the customer application RUM instance by ignoring their init() call.\n            // But, we should not ignore the init() call from the Synthetics-injected RUM instance, so the\n            // internal `ignoreInitIfSyntheticsWillInjectRum` option is here to bypass this condition.\n            if (ignoreInitIfSyntheticsWillInjectRum && willSyntheticsInjectRum()) {\n                return;\n            }\n            callPluginsMethod(initConfiguration.plugins, 'onInit', { initConfiguration: initConfiguration, publicApi: publicApi });\n            if (initConfiguration.remoteConfigurationId &&\n                isExperimentalFeatureEnabled(ExperimentalFeature.REMOTE_CONFIGURATION)) {\n                fetchAndApplyRemoteConfiguration(initConfiguration, doInit);\n            }\n            else {\n                doInit(initConfiguration);\n            }\n        },\n        get initConfiguration() {\n            return cachedInitConfiguration;\n        },\n        getInternalContext: noop,\n        stopSession: noop,\n        addTiming: function (name, time) {\n            if (time === void 0) { time = timeStampNow(); }\n            bufferApiCalls.add(function (startRumResult) { return startRumResult.addTiming(name, time); });\n        },\n        startView: function (options, startClocks) {\n            if (startClocks === void 0) { startClocks = clocksNow(); }\n            var callback = function (startRumResult) {\n                startRumResult.startView(options, startClocks);\n            };\n            bufferApiCalls.add(callback);\n            if (!firstStartViewCall) {\n                firstStartViewCall = { options: options, callback: callback };\n                tryStartRum();\n            }\n        },\n        setViewName: function (name) {\n            bufferApiCalls.add(function (startRumResult) { return startRumResult.setViewName(name); });\n        },\n        setViewContext: function (context) {\n            bufferApiCalls.add(function (startRumResult) { return startRumResult.setViewContext(context); });\n        },\n        setViewContextProperty: function (key, value) {\n            bufferApiCalls.add(function (startRumResult) { return startRumResult.setViewContextProperty(key, value); });\n        },\n        addAction: function (action, commonContext) {\n            if (commonContext === void 0) { commonContext = getCommonContext(); }\n            bufferApiCalls.add(function (startRumResult) { return startRumResult.addAction(action, commonContext); });\n        },\n        addError: function (providedError, commonContext) {\n            if (commonContext === void 0) { commonContext = getCommonContext(); }\n            bufferApiCalls.add(function (startRumResult) { return startRumResult.addError(providedError, commonContext); });\n        },\n        addFeatureFlagEvaluation: function (key, value) {\n            bufferApiCalls.add(function (startRumResult) { return startRumResult.addFeatureFlagEvaluation(key, value); });\n        },\n        startDurationVital: function (name, options) {\n            return startDurationVital(customVitalsState, name, options);\n        },\n        stopDurationVital: function (name, options) {\n            stopDurationVital(addDurationVital, customVitalsState, name, options);\n        },\n        addDurationVital: addDurationVital,\n    };\n}\nfunction overrideInitConfigurationForBridge(initConfiguration) {\n    var _a, _b;\n    return assign({}, initConfiguration, {\n        applicationId: '00000000-aaaa-0000-aaaa-000000000000',\n        clientToken: 'empty',\n        sessionSampleRate: 100,\n        defaultPrivacyLevel: (_a = initConfiguration.defaultPrivacyLevel) !== null && _a !== void 0 ? _a : (_b = getEventBridge()) === null || _b === void 0 ? void 0 : _b.getPrivacyLevel(),\n    });\n}\n//# sourceMappingURL=preStartRum.js.map","import { clearInterval, setInterval } from '../../tools/timer';\nimport { Observable } from '../../tools/observable';\nimport { ONE_SECOND, dateNow } from '../../tools/utils/timeUtils';\nimport { throttle } from '../../tools/utils/functionUtils';\nimport { generateUUID } from '../../tools/utils/stringUtils';\nimport { assign } from '../../tools/utils/polyfills';\nimport { display } from '../../tools/display';\nimport { selectCookieStrategy, initCookieStrategy } from './storeStrategies/sessionInCookie';\nimport { getExpiredSessionState, isSessionInExpiredState, isSessionInNotStartedState, isSessionStarted, } from './sessionState';\nimport { initLocalStorageStrategy, selectLocalStorageStrategy } from './storeStrategies/sessionInLocalStorage';\nimport { processSessionStoreOperations } from './sessionStoreOperations';\nimport { SessionPersistence } from './sessionConstants';\n/**\n * Every second, the storage will be polled to check for any change that can occur\n * to the session state in another browser tab, or another window.\n * This value has been determined from our previous cookie-only implementation.\n */\nexport var STORAGE_POLL_DELAY = ONE_SECOND;\n/**\n * Selects the correct session store strategy type based on the configuration and storage\n * availability.\n */\nexport function selectSessionStoreStrategyType(initConfiguration) {\n    switch (initConfiguration.sessionPersistence) {\n        case SessionPersistence.COOKIE:\n            return selectCookieStrategy(initConfiguration);\n        case SessionPersistence.LOCAL_STORAGE:\n            return selectLocalStorageStrategy();\n        case undefined: {\n            var sessionStoreStrategyType = selectCookieStrategy(initConfiguration);\n            if (!sessionStoreStrategyType && initConfiguration.allowFallbackToLocalStorage) {\n                sessionStoreStrategyType = selectLocalStorageStrategy();\n            }\n            return sessionStoreStrategyType;\n        }\n        default:\n            display.error(\"Invalid session persistence '\".concat(String(initConfiguration.sessionPersistence), \"'\"));\n    }\n}\n/**\n * Different session concepts:\n * - tracked, the session has an id and is updated along the user navigation\n * - not tracked, the session does not have an id but it is updated along the user navigation\n * - inactive, no session in store or session expired, waiting for a renew session\n */\nexport function startSessionStore(sessionStoreStrategyType, productKey, computeSessionState) {\n    var renewObservable = new Observable();\n    var expireObservable = new Observable();\n    var sessionStateUpdateObservable = new Observable();\n    var sessionStoreStrategy = sessionStoreStrategyType.type === SessionPersistence.COOKIE\n        ? initCookieStrategy(sessionStoreStrategyType.cookieOptions)\n        : initLocalStorageStrategy();\n    var expireSession = sessionStoreStrategy.expireSession;\n    var watchSessionTimeoutId = setInterval(watchSession, STORAGE_POLL_DELAY);\n    var sessionCache;\n    startSession();\n    var _a = throttle(function () {\n        processSessionStoreOperations({\n            process: function (sessionState) {\n                if (isSessionInNotStartedState(sessionState)) {\n                    return;\n                }\n                var synchronizedSession = synchronizeSession(sessionState);\n                expandOrRenewSessionState(synchronizedSession);\n                return synchronizedSession;\n            },\n            after: function (sessionState) {\n                if (isSessionStarted(sessionState) && !hasSessionInCache()) {\n                    renewSessionInCache(sessionState);\n                }\n                sessionCache = sessionState;\n            },\n        }, sessionStoreStrategy);\n    }, STORAGE_POLL_DELAY), throttledExpandOrRenewSession = _a.throttled, cancelExpandOrRenewSession = _a.cancel;\n    function expandSession() {\n        processSessionStoreOperations({\n            process: function (sessionState) { return (hasSessionInCache() ? synchronizeSession(sessionState) : undefined); },\n        }, sessionStoreStrategy);\n    }\n    /**\n     * allows two behaviors:\n     * - if the session is active, synchronize the session cache without updating the session store\n     * - if the session is not active, clear the session store and expire the session cache\n     */\n    function watchSession() {\n        processSessionStoreOperations({\n            process: function (sessionState) {\n                return isSessionInExpiredState(sessionState) ? getExpiredSessionState(sessionState) : undefined;\n            },\n            after: synchronizeSession,\n        }, sessionStoreStrategy);\n    }\n    function synchronizeSession(sessionState) {\n        if (isSessionInExpiredState(sessionState)) {\n            sessionState = getExpiredSessionState(sessionState);\n        }\n        if (hasSessionInCache()) {\n            if (isSessionInCacheOutdated(sessionState)) {\n                expireSessionInCache();\n            }\n            else {\n                sessionStateUpdateObservable.notify({ previousState: sessionCache, newState: sessionState });\n                sessionCache = sessionState;\n            }\n        }\n        return sessionState;\n    }\n    function startSession() {\n        processSessionStoreOperations({\n            process: function (sessionState) {\n                if (isSessionInNotStartedState(sessionState)) {\n                    return getExpiredSessionState(sessionState);\n                }\n            },\n            after: function (sessionState) {\n                sessionCache = sessionState;\n            },\n        }, sessionStoreStrategy);\n    }\n    function expandOrRenewSessionState(sessionState) {\n        if (isSessionInNotStartedState(sessionState)) {\n            return false;\n        }\n        var _a = computeSessionState(sessionState[productKey]), trackingType = _a.trackingType, isTracked = _a.isTracked;\n        sessionState[productKey] = trackingType;\n        delete sessionState.isExpired;\n        if (isTracked && !sessionState.id) {\n            sessionState.id = generateUUID();\n            sessionState.created = String(dateNow());\n        }\n    }\n    function hasSessionInCache() {\n        return sessionCache[productKey] !== undefined;\n    }\n    function isSessionInCacheOutdated(sessionState) {\n        return sessionCache.id !== sessionState.id || sessionCache[productKey] !== sessionState[productKey];\n    }\n    function expireSessionInCache() {\n        sessionCache = getExpiredSessionState(sessionCache);\n        expireObservable.notify();\n    }\n    function renewSessionInCache(sessionState) {\n        sessionCache = sessionState;\n        renewObservable.notify();\n    }\n    function updateSessionState(partialSessionState) {\n        processSessionStoreOperations({\n            process: function (sessionState) { return assign({}, sessionState, partialSessionState); },\n            after: synchronizeSession,\n        }, sessionStoreStrategy);\n    }\n    return {\n        expandOrRenewSession: throttledExpandOrRenewSession,\n        expandSession: expandSession,\n        getSession: function () { return sessionCache; },\n        renewObservable: renewObservable,\n        expireObservable: expireObservable,\n        sessionStateUpdateObservable: sessionStateUpdateObservable,\n        restartSession: startSession,\n        expire: function () {\n            cancelExpandOrRenewSession();\n            expireSession(sessionCache);\n            synchronizeSession(getExpiredSessionState(sessionCache));\n        },\n        stop: function () {\n            clearInterval(watchSessionTimeoutId);\n        },\n        updateSessionState: updateSessionState,\n    };\n}\n//# sourceMappingURL=sessionStore.js.map","export function callPluginsMethod(plugins, methodName, parameter) {\n    if (!plugins) {\n        return;\n    }\n    for (var _i = 0, plugins_1 = plugins; _i < plugins_1.length; _i++) {\n        var plugin = plugins_1[_i];\n        var method = plugin[methodName];\n        if (method) {\n            method(parameter);\n        }\n    }\n}\n//# sourceMappingURL=plugins.js.map","import { sendToExtension, createPageExitObservable, startTelemetry, canUseEventBridge, getEventBridge, addTelemetryDebug, drainPreStartTelemetry, isExperimentalFeatureEnabled, ExperimentalFeature, } from '@datadog/browser-core';\nimport { createDOMMutationObservable } from '../browser/domMutationObservable';\nimport { createWindowOpenObservable } from '../browser/windowOpenObservable';\nimport { startRumAssembly } from '../domain/assembly';\nimport { startInternalContext } from '../domain/contexts/internalContext';\nimport { LifeCycle } from '../domain/lifeCycle';\nimport { startViewHistory } from '../domain/contexts/viewHistory';\nimport { startRequestCollection } from '../domain/requestCollection';\nimport { startActionCollection } from '../domain/action/actionCollection';\nimport { startErrorCollection } from '../domain/error/errorCollection';\nimport { startLongTaskCollection } from '../domain/longTask/longTaskCollection';\nimport { startResourceCollection } from '../domain/resource/resourceCollection';\nimport { startViewCollection } from '../domain/view/viewCollection';\nimport { startRumSessionManager, startRumSessionManagerStub } from '../domain/rumSessionManager';\nimport { startRumBatch } from '../transport/startRumBatch';\nimport { startRumEventBridge } from '../transport/startRumEventBridge';\nimport { startUrlContexts } from '../domain/contexts/urlContexts';\nimport { createLocationChangeObservable } from '../browser/locationChangeObservable';\nimport { startFeatureFlagContexts } from '../domain/contexts/featureFlagContext';\nimport { startCustomerDataTelemetry } from '../domain/startCustomerDataTelemetry';\nimport { startPageStateHistory } from '../domain/contexts/pageStateHistory';\nimport { startDisplayContext } from '../domain/contexts/displayContext';\nimport { startVitalCollection } from '../domain/vital/vitalCollection';\nimport { startCiVisibilityContext } from '../domain/contexts/ciVisibilityContext';\nimport { startLongAnimationFrameCollection } from '../domain/longAnimationFrame/longAnimationFrameCollection';\nexport function startRum(configuration, recorderApi, customerDataTrackerManager, getCommonContext, initialViewOptions, createEncoder, \n// `startRum` and its subcomponents assume tracking consent is granted initially and starts\n// collecting logs unconditionally. As such, `startRum` should be called with a\n// `trackingConsentState` set to \"granted\".\ntrackingConsentState, customVitalsState) {\n    var cleanupTasks = [];\n    var lifeCycle = new LifeCycle();\n    lifeCycle.subscribe(13 /* LifeCycleEventType.RUM_EVENT_COLLECTED */, function (event) { return sendToExtension('rum', event); });\n    var telemetry = startRumTelemetry(configuration);\n    telemetry.setContextProvider(function () {\n        var _a, _b;\n        return ({\n            application: {\n                id: configuration.applicationId,\n            },\n            session: {\n                id: (_a = session.findTrackedSession()) === null || _a === void 0 ? void 0 : _a.id,\n            },\n            view: {\n                id: (_b = viewHistory.findView()) === null || _b === void 0 ? void 0 : _b.id,\n            },\n            action: {\n                id: actionContexts.findActionId(),\n            },\n        });\n    });\n    var reportError = function (error) {\n        lifeCycle.notify(14 /* LifeCycleEventType.RAW_ERROR_COLLECTED */, { error: error });\n        addTelemetryDebug('Error reported to customer', { 'error.message': error.message });\n    };\n    var featureFlagContexts = startFeatureFlagContexts(lifeCycle, customerDataTrackerManager.getOrCreateTracker(0 /* CustomerDataType.FeatureFlag */));\n    var pageExitObservable = createPageExitObservable(configuration);\n    var pageExitSubscription = pageExitObservable.subscribe(function (event) {\n        lifeCycle.notify(11 /* LifeCycleEventType.PAGE_EXITED */, event);\n    });\n    cleanupTasks.push(function () { return pageExitSubscription.unsubscribe(); });\n    var session = !canUseEventBridge()\n        ? startRumSessionManager(configuration, lifeCycle, trackingConsentState)\n        : startRumSessionManagerStub();\n    if (!canUseEventBridge()) {\n        var batch_1 = startRumBatch(configuration, lifeCycle, telemetry.observable, reportError, pageExitObservable, session.expireObservable, createEncoder);\n        cleanupTasks.push(function () { return batch_1.stop(); });\n        startCustomerDataTelemetry(configuration, telemetry, lifeCycle, customerDataTrackerManager, batch_1.flushObservable);\n    }\n    else {\n        startRumEventBridge(lifeCycle);\n    }\n    var domMutationObservable = createDOMMutationObservable();\n    var locationChangeObservable = createLocationChangeObservable(configuration, location);\n    var pageStateHistory = startPageStateHistory(configuration);\n    var _a = createWindowOpenObservable(), windowOpenObservable = _a.observable, stopWindowOpen = _a.stop;\n    cleanupTasks.push(stopWindowOpen);\n    var _b = startRumEventCollection(lifeCycle, configuration, location, session, pageStateHistory, locationChangeObservable, domMutationObservable, windowOpenObservable, getCommonContext, reportError), viewHistory = _b.viewHistory, urlContexts = _b.urlContexts, actionContexts = _b.actionContexts, addAction = _b.addAction, stopRumEventCollection = _b.stop;\n    cleanupTasks.push(stopRumEventCollection);\n    drainPreStartTelemetry();\n    var _c = startViewCollection(lifeCycle, configuration, location, domMutationObservable, windowOpenObservable, locationChangeObservable, featureFlagContexts, pageStateHistory, recorderApi, initialViewOptions), addTiming = _c.addTiming, startView = _c.startView, setViewName = _c.setViewName, setViewContext = _c.setViewContext, setViewContextProperty = _c.setViewContextProperty, stopViewCollection = _c.stop;\n    cleanupTasks.push(stopViewCollection);\n    var stopResourceCollection = startResourceCollection(lifeCycle, configuration, pageStateHistory).stop;\n    cleanupTasks.push(stopResourceCollection);\n    if (isExperimentalFeatureEnabled(ExperimentalFeature.LONG_ANIMATION_FRAME)) {\n        if (configuration.trackLongTasks) {\n            var stopLongAnimationFrameCollection = startLongAnimationFrameCollection(lifeCycle, configuration).stop;\n            cleanupTasks.push(stopLongAnimationFrameCollection);\n        }\n    }\n    else {\n        startLongTaskCollection(lifeCycle, configuration);\n    }\n    var addError = startErrorCollection(lifeCycle, configuration, pageStateHistory, featureFlagContexts).addError;\n    startRequestCollection(lifeCycle, configuration, session);\n    var vitalCollection = startVitalCollection(lifeCycle, pageStateHistory, customVitalsState);\n    var internalContext = startInternalContext(configuration.applicationId, session, viewHistory, actionContexts, urlContexts);\n    return {\n        addAction: addAction,\n        addError: addError,\n        addTiming: addTiming,\n        addFeatureFlagEvaluation: featureFlagContexts.addFeatureFlagEvaluation,\n        startView: startView,\n        setViewContext: setViewContext,\n        setViewContextProperty: setViewContextProperty,\n        setViewName: setViewName,\n        lifeCycle: lifeCycle,\n        viewHistory: viewHistory,\n        session: session,\n        stopSession: function () { return session.expire(); },\n        getInternalContext: internalContext.get,\n        startDurationVital: vitalCollection.startDurationVital,\n        stopDurationVital: vitalCollection.stopDurationVital,\n        addDurationVital: vitalCollection.addDurationVital,\n        stop: function () {\n            cleanupTasks.forEach(function (task) { return task(); });\n        },\n    };\n}\nfunction startRumTelemetry(configuration) {\n    var telemetry = startTelemetry(\"browser-rum-sdk\" /* TelemetryService.RUM */, configuration);\n    if (canUseEventBridge()) {\n        var bridge_1 = getEventBridge();\n        telemetry.observable.subscribe(function (event) { return bridge_1.send('internal_telemetry', event); });\n    }\n    return telemetry;\n}\nexport function startRumEventCollection(lifeCycle, configuration, location, sessionManager, pageStateHistory, locationChangeObservable, domMutationObservable, windowOpenObservable, getCommonContext, reportError) {\n    var viewHistory = startViewHistory(lifeCycle);\n    var urlContexts = startUrlContexts(lifeCycle, locationChangeObservable, location);\n    var actionCollection = startActionCollection(lifeCycle, domMutationObservable, windowOpenObservable, configuration, pageStateHistory);\n    var displayContext = startDisplayContext(configuration);\n    var ciVisibilityContext = startCiVisibilityContext(configuration);\n    startRumAssembly(configuration, lifeCycle, sessionManager, viewHistory, urlContexts, actionCollection.actionContexts, displayContext, ciVisibilityContext, getCommonContext, reportError);\n    return {\n        viewHistory: viewHistory,\n        pageStateHistory: pageStateHistory,\n        urlContexts: urlContexts,\n        addAction: actionCollection.addAction,\n        actionContexts: actionCollection.actionContexts,\n        stop: function () {\n            actionCollection.stop();\n            ciVisibilityContext.stop();\n            displayContext.stop();\n            urlContexts.stop();\n            viewHistory.stop();\n            pageStateHistory.stop();\n        },\n    };\n}\n//# sourceMappingURL=startRum.js.map","import { initConsoleObservable, ConsoleApiName } from '@datadog/browser-core';\nexport function trackConsoleError(errorObservable) {\n    var subscription = initConsoleObservable([ConsoleApiName.error]).subscribe(function (consoleLog) {\n        return errorObservable.notify(consoleLog.error);\n    });\n    return {\n        stop: function () {\n            subscription.unsubscribe();\n        },\n    };\n}\n//# sourceMappingURL=trackConsoleError.js.map","import { instrumentMethod } from '../../tools/instrumentMethod';\nimport { clocksNow } from '../../tools/utils/timeUtils';\nimport { computeStackTrace, computeStackTraceFromOnErrorMessage } from '../../tools/stackTrace/computeStackTrace';\nimport { computeRawError, isError } from './error';\nimport { ErrorSource } from './error.types';\nexport function trackRuntimeError(errorObservable) {\n    var handleRuntimeError = function (stackTrace, originalError) {\n        var rawError = computeRawError({\n            stackTrace: stackTrace,\n            originalError: originalError,\n            startClocks: clocksNow(),\n            nonErrorPrefix: \"Uncaught\" /* NonErrorPrefix.UNCAUGHT */,\n            source: ErrorSource.SOURCE,\n            handling: \"unhandled\" /* ErrorHandling.UNHANDLED */,\n        });\n        errorObservable.notify(rawError);\n    };\n    var stopInstrumentingOnError = instrumentOnError(handleRuntimeError).stop;\n    var stopInstrumentingOnUnhandledRejection = instrumentUnhandledRejection(handleRuntimeError).stop;\n    return {\n        stop: function () {\n            stopInstrumentingOnError();\n            stopInstrumentingOnUnhandledRejection();\n        },\n    };\n}\nexport function instrumentOnError(callback) {\n    return instrumentMethod(window, 'onerror', function (_a) {\n        var _b = _a.parameters, messageObj = _b[0], url = _b[1], line = _b[2], column = _b[3], errorObj = _b[4];\n        var stackTrace;\n        if (isError(errorObj)) {\n            stackTrace = computeStackTrace(errorObj);\n        }\n        else {\n            stackTrace = computeStackTraceFromOnErrorMessage(messageObj, url, line, column);\n        }\n        callback(stackTrace, errorObj !== null && errorObj !== void 0 ? errorObj : messageObj);\n    });\n}\nexport function instrumentUnhandledRejection(callback) {\n    return instrumentMethod(window, 'onunhandledrejection', function (_a) {\n        var e = _a.parameters[0];\n        var reason = e.reason || 'Empty reason';\n        var stack = computeStackTrace(reason);\n        callback(stack, reason);\n    });\n}\n//# sourceMappingURL=trackRuntimeError.js.map","import { isEmptyObject, assign, ErrorSource, generateUUID, computeRawError, computeStackTrace, Observable, trackRuntimeError, isError, } from '@datadog/browser-core';\nimport { trackConsoleError } from './trackConsoleError';\nimport { trackReportError } from './trackReportError';\nexport function startErrorCollection(lifeCycle, configuration, pageStateHistory, featureFlagContexts) {\n    var errorObservable = new Observable();\n    trackConsoleError(errorObservable);\n    trackRuntimeError(errorObservable);\n    trackReportError(configuration, errorObservable);\n    errorObservable.subscribe(function (error) { return lifeCycle.notify(14 /* LifeCycleEventType.RAW_ERROR_COLLECTED */, { error: error }); });\n    return doStartErrorCollection(lifeCycle, pageStateHistory, featureFlagContexts);\n}\nexport function doStartErrorCollection(lifeCycle, pageStateHistory, featureFlagContexts) {\n    lifeCycle.subscribe(14 /* LifeCycleEventType.RAW_ERROR_COLLECTED */, function (_a) {\n        var error = _a.error, customerContext = _a.customerContext, savedCommonContext = _a.savedCommonContext;\n        lifeCycle.notify(12 /* LifeCycleEventType.RAW_RUM_EVENT_COLLECTED */, assign({\n            customerContext: customerContext,\n            savedCommonContext: savedCommonContext,\n        }, processError(error, pageStateHistory, featureFlagContexts)));\n    });\n    return {\n        addError: function (_a, savedCommonContext) {\n            var error = _a.error, handlingStack = _a.handlingStack, startClocks = _a.startClocks, customerContext = _a.context;\n            var stackTrace = isError(error) ? computeStackTrace(error) : undefined;\n            var rawError = computeRawError({\n                stackTrace: stackTrace,\n                originalError: error,\n                handlingStack: handlingStack,\n                startClocks: startClocks,\n                nonErrorPrefix: \"Provided\" /* NonErrorPrefix.PROVIDED */,\n                source: ErrorSource.CUSTOM,\n                handling: \"handled\" /* ErrorHandling.HANDLED */,\n            });\n            lifeCycle.notify(14 /* LifeCycleEventType.RAW_ERROR_COLLECTED */, {\n                customerContext: customerContext,\n                savedCommonContext: savedCommonContext,\n                error: rawError,\n            });\n        },\n    };\n}\nfunction processError(error, pageStateHistory, featureFlagContexts) {\n    var rawRumEvent = {\n        date: error.startClocks.timeStamp,\n        error: {\n            id: generateUUID(),\n            message: error.message,\n            source: error.source,\n            stack: error.stack,\n            handling_stack: error.handlingStack,\n            type: error.type,\n            handling: error.handling,\n            causes: error.causes,\n            source_type: 'browser',\n            fingerprint: error.fingerprint,\n            csp: error.csp,\n        },\n        type: \"error\" /* RumEventType.ERROR */,\n        view: { in_foreground: pageStateHistory.wasInPageStateAt(\"active\" /* PageState.ACTIVE */, error.startClocks.relative) },\n    };\n    var featureFlagContext = featureFlagContexts.findFeatureFlagEvaluations(error.startClocks.relative);\n    if (featureFlagContext && !isEmptyObject(featureFlagContext)) {\n        rawRumEvent.feature_flags = featureFlagContext;\n    }\n    var domainContext = {\n        error: error.originalError,\n        handlingStack: error.handlingStack,\n    };\n    return {\n        rawRumEvent: rawRumEvent,\n        startTime: error.startClocks.relative,\n        domainContext: domainContext,\n    };\n}\n//# sourceMappingURL=errorCollection.js.map","/**\n * Internal context keep returning v1 format\n * to not break compatibility with logs data format\n */\nexport function startInternalContext(applicationId, sessionManager, viewHistory, actionContexts, urlContexts) {\n    return {\n        get: function (startTime) {\n            var viewContext = viewHistory.findView(startTime);\n            var urlContext = urlContexts.findUrl(startTime);\n            var session = sessionManager.findTrackedSession(startTime);\n            if (session && viewContext && urlContext) {\n                var actionId = actionContexts.findActionId(startTime);\n                return {\n                    application_id: applicationId,\n                    session_id: session.id,\n                    user_action: actionId ? { id: actionId } : undefined,\n                    view: { id: viewContext.id, name: viewContext.name, referrer: urlContext.referrer, url: urlContext.url },\n                };\n            }\n        },\n    };\n}\n//# sourceMappingURL=internalContext.js.map","import { AbstractLifeCycle } from '@datadog/browser-core';\nexport var LifeCycle = (AbstractLifeCycle);\n//# sourceMappingURL=lifeCycle.js.map","import { SESSION_TIME_OUT_DELAY, createValueHistory } from '@datadog/browser-core';\nexport var FEATURE_FLAG_CONTEXT_TIME_OUT_DELAY = SESSION_TIME_OUT_DELAY;\nexport var BYTES_COMPUTATION_THROTTLING_DELAY = 200;\n/**\n * Start feature flag contexts\n *\n * Feature flag contexts follow the life of views.\n * A new context is added when a view is created and ended when the view is ended\n *\n * Note: we choose not to add a new context at each evaluation to save memory\n */\nexport function startFeatureFlagContexts(lifeCycle, customerDataTracker) {\n    var featureFlagContexts = createValueHistory({\n        expireDelay: FEATURE_FLAG_CONTEXT_TIME_OUT_DELAY,\n    });\n    lifeCycle.subscribe(1 /* LifeCycleEventType.BEFORE_VIEW_CREATED */, function (_a) {\n        var startClocks = _a.startClocks;\n        featureFlagContexts.add({}, startClocks.relative);\n        customerDataTracker.resetCustomerData();\n    });\n    lifeCycle.subscribe(6 /* LifeCycleEventType.AFTER_VIEW_ENDED */, function (_a) {\n        var endClocks = _a.endClocks;\n        featureFlagContexts.closeActive(endClocks.relative);\n    });\n    return {\n        findFeatureFlagEvaluations: function (startTime) { return featureFlagContexts.find(startTime); },\n        addFeatureFlagEvaluation: function (key, value) {\n            var currentContext = featureFlagContexts.find();\n            if (currentContext) {\n                currentContext[key] = value;\n                customerDataTracker.updateCustomerData(currentContext);\n            }\n        },\n        stop: function () { return customerDataTracker.stop(); },\n    };\n}\n//# sourceMappingURL=featureFlagContext.js.map","import { getInitCookie } from '../../browser/cookie';\nimport { SESSION_STORE_KEY } from './storeStrategies/sessionStoreStrategy';\nimport { expandSessionState, isSessionStarted } from './sessionState';\nexport var OLD_SESSION_COOKIE_NAME = '_dd';\nexport var OLD_RUM_COOKIE_NAME = '_dd_r';\nexport var OLD_LOGS_COOKIE_NAME = '_dd_l';\n// duplicate values to avoid dependency issues\nexport var RUM_SESSION_KEY = 'rum';\nexport var LOGS_SESSION_KEY = 'logs';\n/**\n * This migration should remain in the codebase as long as older versions are available/live\n * to allow older sdk versions to be upgraded to newer versions without compatibility issues.\n */\nexport function tryOldCookiesMigration(cookieStoreStrategy) {\n    var sessionString = getInitCookie(SESSION_STORE_KEY);\n    if (!sessionString) {\n        var oldSessionId = getInitCookie(OLD_SESSION_COOKIE_NAME);\n        var oldRumType = getInitCookie(OLD_RUM_COOKIE_NAME);\n        var oldLogsType = getInitCookie(OLD_LOGS_COOKIE_NAME);\n        var session = {};\n        if (oldSessionId) {\n            session.id = oldSessionId;\n        }\n        if (oldLogsType && /^[01]$/.test(oldLogsType)) {\n            session[LOGS_SESSION_KEY] = oldLogsType;\n        }\n        if (oldRumType && /^[012]$/.test(oldRumType)) {\n            session[RUM_SESSION_KEY] = oldRumType;\n        }\n        if (isSessionStarted(session)) {\n            expandSessionState(session);\n            cookieStoreStrategy.persistSession(session);\n        }\n    }\n}\n//# sourceMappingURL=oldCookiesMigration.js.map","import { getEventBridge } from '@datadog/browser-core';\nexport function startRumEventBridge(lifeCycle) {\n    var bridge = getEventBridge();\n    lifeCycle.subscribe(13 /* LifeCycleEventType.RUM_EVENT_COLLECTED */, function (serverRumEvent) {\n        bridge.send('rum', serverRumEvent);\n    });\n}\n//# sourceMappingURL=startRumEventBridge.js.map","import { combine, isTelemetryReplicationAllowed, startBatchWithReplica, } from '@datadog/browser-core';\nexport function startRumBatch(configuration, lifeCycle, telemetryEventObservable, reportError, pageExitObservable, sessionExpireObservable, createEncoder) {\n    var replica = configuration.replica;\n    var batch = startBatchWithReplica(configuration, {\n        endpoint: configuration.rumEndpointBuilder,\n        encoder: createEncoder(2 /* DeflateEncoderStreamId.RUM */),\n    }, replica && {\n        endpoint: replica.rumEndpointBuilder,\n        transformMessage: function (message) { return combine(message, { application: { id: replica.applicationId } }); },\n        encoder: createEncoder(3 /* DeflateEncoderStreamId.RUM_REPLICA */),\n    }, reportError, pageExitObservable, sessionExpireObservable);\n    lifeCycle.subscribe(13 /* LifeCycleEventType.RUM_EVENT_COLLECTED */, function (serverRumEvent) {\n        if (serverRumEvent.type === \"view\" /* RumEventType.VIEW */) {\n            batch.upsert(serverRumEvent, serverRumEvent.view.id);\n        }\n        else {\n            batch.add(serverRumEvent);\n        }\n    });\n    telemetryEventObservable.subscribe(function (event) { return batch.add(event, isTelemetryReplicationAllowed(configuration)); });\n    return batch;\n}\n//# sourceMappingURL=startRumBatch.js.map","import { createBatch } from './batch';\nimport { createHttpRequest } from './httpRequest';\nimport { createFlushController } from './flushController';\nexport function startBatchWithReplica(configuration, primary, replica, reportError, pageExitObservable, sessionExpireObservable, batchFactoryImp) {\n    if (batchFactoryImp === void 0) { batchFactoryImp = createBatch; }\n    var primaryBatch = createBatchFromConfig(configuration, primary);\n    var replicaBatch = replica && createBatchFromConfig(configuration, replica);\n    function createBatchFromConfig(configuration, _a) {\n        var endpoint = _a.endpoint, encoder = _a.encoder;\n        return batchFactoryImp({\n            encoder: encoder,\n            request: createHttpRequest(endpoint, configuration.batchBytesLimit, reportError),\n            flushController: createFlushController({\n                messagesLimit: configuration.batchMessagesLimit,\n                bytesLimit: configuration.batchBytesLimit,\n                durationLimit: configuration.flushTimeout,\n                pageExitObservable: pageExitObservable,\n                sessionExpireObservable: sessionExpireObservable,\n            }),\n            messageBytesLimit: configuration.messageBytesLimit,\n        });\n    }\n    return {\n        flushObservable: primaryBatch.flushController.flushObservable,\n        add: function (message, replicated) {\n            if (replicated === void 0) { replicated = true; }\n            primaryBatch.add(message);\n            if (replicaBatch && replicated) {\n                replicaBatch.add(replica.transformMessage ? replica.transformMessage(message) : message);\n            }\n        },\n        upsert: function (message, key) {\n            primaryBatch.upsert(message, key);\n            if (replicaBatch) {\n                replicaBatch.upsert(replica.transformMessage ? replica.transformMessage(message) : message, key);\n            }\n        },\n        stop: function () {\n            primaryBatch.stop();\n            if (replicaBatch) {\n                replicaBatch.stop();\n            }\n        },\n    };\n}\n//# sourceMappingURL=startBatchWithReplica.js.map","import { Observable } from '../tools/observable';\nimport { clearTimeout, setTimeout } from '../tools/timer';\n/**\n * Returns a \"flush controller\", responsible of notifying when flushing a pool of pending data needs\n * to happen. The implementation is designed to support both synchronous and asynchronous usages,\n * but relies on invariants described in each method documentation to keep a coherent state.\n */\nexport function createFlushController(_a) {\n    var messagesLimit = _a.messagesLimit, bytesLimit = _a.bytesLimit, durationLimit = _a.durationLimit, pageExitObservable = _a.pageExitObservable, sessionExpireObservable = _a.sessionExpireObservable;\n    var pageExitSubscription = pageExitObservable.subscribe(function (event) { return flush(event.reason); });\n    var sessionExpireSubscription = sessionExpireObservable.subscribe(function () { return flush('session_expire'); });\n    var flushObservable = new Observable(function () { return function () {\n        pageExitSubscription.unsubscribe();\n        sessionExpireSubscription.unsubscribe();\n    }; });\n    var currentBytesCount = 0;\n    var currentMessagesCount = 0;\n    function flush(flushReason) {\n        if (currentMessagesCount === 0) {\n            return;\n        }\n        var messagesCount = currentMessagesCount;\n        var bytesCount = currentBytesCount;\n        currentMessagesCount = 0;\n        currentBytesCount = 0;\n        cancelDurationLimitTimeout();\n        flushObservable.notify({\n            reason: flushReason,\n            messagesCount: messagesCount,\n            bytesCount: bytesCount,\n        });\n    }\n    var durationLimitTimeoutId;\n    function scheduleDurationLimitTimeout() {\n        if (durationLimitTimeoutId === undefined) {\n            durationLimitTimeoutId = setTimeout(function () {\n                flush('duration_limit');\n            }, durationLimit);\n        }\n    }\n    function cancelDurationLimitTimeout() {\n        clearTimeout(durationLimitTimeoutId);\n        durationLimitTimeoutId = undefined;\n    }\n    return {\n        flushObservable: flushObservable,\n        get messagesCount() {\n            return currentMessagesCount;\n        },\n        /**\n         * Notifies that a message will be added to a pool of pending messages waiting to be flushed.\n         *\n         * This function needs to be called synchronously, right before adding the message, so no flush\n         * event can happen after `notifyBeforeAddMessage` and before adding the message.\n         *\n         * @param estimatedMessageBytesCount: an estimation of the message bytes count once it is\n         * actually added.\n         */\n        notifyBeforeAddMessage: function (estimatedMessageBytesCount) {\n            if (currentBytesCount + estimatedMessageBytesCount >= bytesLimit) {\n                flush('bytes_limit');\n            }\n            // Consider the message to be added now rather than in `notifyAfterAddMessage`, because if no\n            // message was added yet and `notifyAfterAddMessage` is called asynchronously, we still want\n            // to notify when a flush is needed (for example on page exit).\n            currentMessagesCount += 1;\n            currentBytesCount += estimatedMessageBytesCount;\n            scheduleDurationLimitTimeout();\n        },\n        /**\n         * Notifies that a message *was* added to a pool of pending messages waiting to be flushed.\n         *\n         * This function can be called asynchronously after the message was added, but in this case it\n         * should not be called if a flush event occurred in between.\n         *\n         * @param messageBytesCountDiff: the difference between the estimated message bytes count and\n         * its actual bytes count once added to the pool.\n         */\n        notifyAfterAddMessage: function (messageBytesCountDiff) {\n            if (messageBytesCountDiff === void 0) { messageBytesCountDiff = 0; }\n            currentBytesCount += messageBytesCountDiff;\n            if (currentMessagesCount >= messagesLimit) {\n                flush('messages_limit');\n            }\n            else if (currentBytesCount >= bytesLimit) {\n                flush('bytes_limit');\n            }\n        },\n        /**\n         * Notifies that a message was removed from a pool of pending messages waiting to be flushed.\n         *\n         * This function needs to be called synchronously, right after removing the message, so no flush\n         * event can happen after removing the message and before `notifyAfterRemoveMessage`.\n         *\n         * @param messageBytesCount: the message bytes count that was added to the pool. Should\n         * correspond to the sum of bytes counts passed to `notifyBeforeAddMessage` and\n         * `notifyAfterAddMessage`.\n         */\n        notifyAfterRemoveMessage: function (messageBytesCount) {\n            currentBytesCount -= messageBytesCount;\n            currentMessagesCount -= 1;\n            if (currentMessagesCount === 0) {\n                cancelDurationLimitTimeout();\n            }\n        },\n    };\n}\n//# sourceMappingURL=flushController.js.map","import { instrumentMethod, Observable } from '@datadog/browser-core';\nexport function createWindowOpenObservable() {\n    var observable = new Observable();\n    var stop = instrumentMethod(window, 'open', function () { return observable.notify(); }).stop;\n    return { observable: observable, stop: stop };\n}\n//# sourceMappingURL=windowOpenObservable.js.map","import { SESSION_TIME_OUT_DELAY, createValueHistory } from '@datadog/browser-core';\nexport var VIEW_CONTEXT_TIME_OUT_DELAY = SESSION_TIME_OUT_DELAY;\nexport function startViewHistory(lifeCycle) {\n    var viewValueHistory = createValueHistory({ expireDelay: VIEW_CONTEXT_TIME_OUT_DELAY });\n    lifeCycle.subscribe(1 /* LifeCycleEventType.BEFORE_VIEW_CREATED */, function (view) {\n        viewValueHistory.add(buildViewHistoryEntry(view), view.startClocks.relative);\n    });\n    lifeCycle.subscribe(6 /* LifeCycleEventType.AFTER_VIEW_ENDED */, function (_a) {\n        var endClocks = _a.endClocks;\n        viewValueHistory.closeActive(endClocks.relative);\n    });\n    lifeCycle.subscribe(3 /* LifeCycleEventType.BEFORE_VIEW_UPDATED */, function (viewUpdate) {\n        var currentView = viewValueHistory.find(viewUpdate.startClocks.relative);\n        if (currentView && viewUpdate.name) {\n            currentView.name = viewUpdate.name;\n        }\n        if (currentView && viewUpdate.context) {\n            currentView.context = viewUpdate.context;\n        }\n    });\n    lifeCycle.subscribe(10 /* LifeCycleEventType.SESSION_RENEWED */, function () {\n        viewValueHistory.reset();\n    });\n    function buildViewHistoryEntry(view) {\n        return {\n            service: view.service,\n            version: view.version,\n            context: view.context,\n            id: view.id,\n            name: view.name,\n            startClocks: view.startClocks,\n        };\n    }\n    return {\n        findView: function (startTime) { return viewValueHistory.find(startTime); },\n        stop: function () {\n            viewValueHistory.stop();\n        },\n    };\n}\n//# sourceMappingURL=viewHistory.js.map","import { ExperimentalFeature, isExperimentalFeatureEnabled } from '@datadog/browser-core';\nimport { getViewportDimension, initViewportObservable } from '../../browser/viewportObservable';\nexport function startDisplayContext(configuration) {\n    var viewport;\n    var animationFrameId;\n    if (isExperimentalFeatureEnabled(ExperimentalFeature.DELAY_VIEWPORT_COLLECTION)) {\n        // Use requestAnimationFrame to delay the calculation of viewport dimensions until after SDK initialization, preventing long tasks.\n        animationFrameId = requestAnimationFrame(function () {\n            viewport = getViewportDimension();\n        });\n    }\n    else {\n        viewport = getViewportDimension();\n    }\n    var unsubscribeViewport = initViewportObservable(configuration).subscribe(function (viewportDimension) {\n        viewport = viewportDimension;\n    }).unsubscribe;\n    return {\n        get: function () { return (viewport ? { viewport: viewport } : undefined); },\n        stop: function () {\n            unsubscribeViewport();\n            if (animationFrameId) {\n                cancelAnimationFrame(animationFrameId);\n            }\n        },\n    };\n}\n//# sourceMappingURL=displayContext.js.map","import { SESSION_TIME_OUT_DELAY, relativeNow, createValueHistory } from '@datadog/browser-core';\n/**\n * We want to attach to an event:\n * - the url corresponding to its start\n * - the referrer corresponding to the previous view url (or document referrer for initial view)\n */\nexport var URL_CONTEXT_TIME_OUT_DELAY = SESSION_TIME_OUT_DELAY;\nexport function startUrlContexts(lifeCycle, locationChangeObservable, location) {\n    var urlContextHistory = createValueHistory({ expireDelay: URL_CONTEXT_TIME_OUT_DELAY });\n    var previousViewUrl;\n    lifeCycle.subscribe(1 /* LifeCycleEventType.BEFORE_VIEW_CREATED */, function (_a) {\n        var startClocks = _a.startClocks;\n        var viewUrl = location.href;\n        urlContextHistory.add(buildUrlContext({\n            url: viewUrl,\n            referrer: !previousViewUrl ? document.referrer : previousViewUrl,\n        }), startClocks.relative);\n        previousViewUrl = viewUrl;\n    });\n    lifeCycle.subscribe(6 /* LifeCycleEventType.AFTER_VIEW_ENDED */, function (_a) {\n        var endClocks = _a.endClocks;\n        urlContextHistory.closeActive(endClocks.relative);\n    });\n    var locationChangeSubscription = locationChangeObservable.subscribe(function (_a) {\n        var newLocation = _a.newLocation;\n        var current = urlContextHistory.find();\n        if (current) {\n            var changeTime = relativeNow();\n            urlContextHistory.closeActive(changeTime);\n            urlContextHistory.add(buildUrlContext({\n                url: newLocation.href,\n                referrer: current.referrer,\n            }), changeTime);\n        }\n    });\n    function buildUrlContext(_a) {\n        var url = _a.url, referrer = _a.referrer;\n        return {\n            url: url,\n            referrer: referrer,\n        };\n    }\n    return {\n        findUrl: function (startTime) { return urlContextHistory.find(startTime); },\n        stop: function () {\n            locationChangeSubscription.unsubscribe();\n            urlContextHistory.stop();\n        },\n    };\n}\n//# sourceMappingURL=urlContexts.js.map","import { ONE_SECOND, clearTimeout, setTimeout } from '@datadog/browser-core';\nexport var MAX_DURATION_BETWEEN_CLICKS = ONE_SECOND;\nexport var MAX_DISTANCE_BETWEEN_CLICKS = 100;\nexport function createClickChain(firstClick, onFinalize) {\n    var bufferedClicks = [];\n    var status = 0 /* ClickChainStatus.WaitingForMoreClicks */;\n    var maxDurationBetweenClicksTimeoutId;\n    appendClick(firstClick);\n    function appendClick(click) {\n        click.stopObservable.subscribe(tryFinalize);\n        bufferedClicks.push(click);\n        clearTimeout(maxDurationBetweenClicksTimeoutId);\n        maxDurationBetweenClicksTimeoutId = setTimeout(dontAcceptMoreClick, MAX_DURATION_BETWEEN_CLICKS);\n    }\n    function tryFinalize() {\n        if (status === 1 /* ClickChainStatus.WaitingForClicksToStop */ && bufferedClicks.every(function (click) { return click.isStopped(); })) {\n            status = 2 /* ClickChainStatus.Finalized */;\n            onFinalize(bufferedClicks);\n        }\n    }\n    function dontAcceptMoreClick() {\n        clearTimeout(maxDurationBetweenClicksTimeoutId);\n        if (status === 0 /* ClickChainStatus.WaitingForMoreClicks */) {\n            status = 1 /* ClickChainStatus.WaitingForClicksToStop */;\n            tryFinalize();\n        }\n    }\n    return {\n        tryAppend: function (click) {\n            if (status !== 0 /* ClickChainStatus.WaitingForMoreClicks */) {\n                return false;\n            }\n            if (bufferedClicks.length > 0 &&\n                !areEventsSimilar(bufferedClicks[bufferedClicks.length - 1].event, click.event)) {\n                dontAcceptMoreClick();\n                return false;\n            }\n            appendClick(click);\n            return true;\n        },\n        stop: function () {\n            dontAcceptMoreClick();\n        },\n    };\n}\n/**\n * Checks whether two events are similar by comparing their target, position and timestamp\n */\nfunction areEventsSimilar(first, second) {\n    return (first.target === second.target &&\n        mouseEventDistance(first, second) <= MAX_DISTANCE_BETWEEN_CLICKS &&\n        first.timeStamp - second.timeStamp <= MAX_DURATION_BETWEEN_CLICKS);\n}\nfunction mouseEventDistance(origin, other) {\n    return Math.sqrt(Math.pow(origin.clientX - other.clientX, 2) + Math.pow(origin.clientY - other.clientY, 2));\n}\n//# sourceMappingURL=clickChain.js.map","import { getSyntheticsResultId, getSyntheticsTestId, willSyntheticsInjectRum } from '@datadog/browser-core';\nexport function getSyntheticsContext() {\n    var testId = getSyntheticsTestId();\n    var resultId = getSyntheticsResultId();\n    if (testId && resultId) {\n        return {\n            test_id: testId,\n            result_id: resultId,\n            injected: willSyntheticsInjectRum(),\n        };\n    }\n}\n//# sourceMappingURL=syntheticsContext.js.map","import { isEmptyObject, mapValues, toServerDuration } from '@datadog/browser-core';\nimport { discardNegativeDuration } from '../discardNegativeDuration';\nimport { trackViews } from './trackViews';\nexport function startViewCollection(lifeCycle, configuration, location, domMutationObservable, pageOpenObserable, locationChangeObservable, featureFlagContexts, pageStateHistory, recorderApi, initialViewOptions) {\n    lifeCycle.subscribe(4 /* LifeCycleEventType.VIEW_UPDATED */, function (view) {\n        return lifeCycle.notify(12 /* LifeCycleEventType.RAW_RUM_EVENT_COLLECTED */, processViewUpdate(view, configuration, featureFlagContexts, recorderApi, pageStateHistory));\n    });\n    return trackViews(location, lifeCycle, domMutationObservable, pageOpenObserable, configuration, locationChangeObservable, !configuration.trackViewsManually, initialViewOptions);\n}\nfunction processViewUpdate(view, configuration, featureFlagContexts, recorderApi, pageStateHistory) {\n    var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r;\n    var replayStats = recorderApi.getReplayStats(view.id);\n    var featureFlagContext = featureFlagContexts.findFeatureFlagEvaluations(view.startClocks.relative);\n    var pageStates = pageStateHistory.findAll(view.startClocks.relative, view.duration);\n    var viewEvent = {\n        _dd: {\n            document_version: view.documentVersion,\n            replay_stats: replayStats,\n            page_states: pageStates,\n            configuration: {\n                start_session_replay_recording_manually: configuration.startSessionReplayRecordingManually,\n            },\n        },\n        date: view.startClocks.timeStamp,\n        type: \"view\" /* RumEventType.VIEW */,\n        view: {\n            action: {\n                count: view.eventCounts.actionCount,\n            },\n            frustration: {\n                count: view.eventCounts.frustrationCount,\n            },\n            cumulative_layout_shift: (_a = view.commonViewMetrics.cumulativeLayoutShift) === null || _a === void 0 ? void 0 : _a.value,\n            cumulative_layout_shift_time: toServerDuration((_b = view.commonViewMetrics.cumulativeLayoutShift) === null || _b === void 0 ? void 0 : _b.time),\n            cumulative_layout_shift_target_selector: (_c = view.commonViewMetrics.cumulativeLayoutShift) === null || _c === void 0 ? void 0 : _c.targetSelector,\n            first_byte: toServerDuration((_d = view.initialViewMetrics.navigationTimings) === null || _d === void 0 ? void 0 : _d.firstByte),\n            dom_complete: toServerDuration((_e = view.initialViewMetrics.navigationTimings) === null || _e === void 0 ? void 0 : _e.domComplete),\n            dom_content_loaded: toServerDuration((_f = view.initialViewMetrics.navigationTimings) === null || _f === void 0 ? void 0 : _f.domContentLoaded),\n            dom_interactive: toServerDuration((_g = view.initialViewMetrics.navigationTimings) === null || _g === void 0 ? void 0 : _g.domInteractive),\n            error: {\n                count: view.eventCounts.errorCount,\n            },\n            first_contentful_paint: toServerDuration(view.initialViewMetrics.firstContentfulPaint),\n            first_input_delay: toServerDuration((_h = view.initialViewMetrics.firstInput) === null || _h === void 0 ? void 0 : _h.delay),\n            first_input_time: toServerDuration((_j = view.initialViewMetrics.firstInput) === null || _j === void 0 ? void 0 : _j.time),\n            first_input_target_selector: (_k = view.initialViewMetrics.firstInput) === null || _k === void 0 ? void 0 : _k.targetSelector,\n            interaction_to_next_paint: toServerDuration((_l = view.commonViewMetrics.interactionToNextPaint) === null || _l === void 0 ? void 0 : _l.value),\n            interaction_to_next_paint_time: toServerDuration((_m = view.commonViewMetrics.interactionToNextPaint) === null || _m === void 0 ? void 0 : _m.time),\n            interaction_to_next_paint_target_selector: (_o = view.commonViewMetrics.interactionToNextPaint) === null || _o === void 0 ? void 0 : _o.targetSelector,\n            is_active: view.isActive,\n            name: view.name,\n            largest_contentful_paint: toServerDuration((_p = view.initialViewMetrics.largestContentfulPaint) === null || _p === void 0 ? void 0 : _p.value),\n            largest_contentful_paint_target_selector: (_q = view.initialViewMetrics.largestContentfulPaint) === null || _q === void 0 ? void 0 : _q.targetSelector,\n            load_event: toServerDuration((_r = view.initialViewMetrics.navigationTimings) === null || _r === void 0 ? void 0 : _r.loadEvent),\n            loading_time: discardNegativeDuration(toServerDuration(view.commonViewMetrics.loadingTime)),\n            loading_type: view.loadingType,\n            long_task: {\n                count: view.eventCounts.longTaskCount,\n            },\n            resource: {\n                count: view.eventCounts.resourceCount,\n            },\n            time_spent: toServerDuration(view.duration),\n        },\n        feature_flags: featureFlagContext && !isEmptyObject(featureFlagContext) ? featureFlagContext : undefined,\n        display: view.commonViewMetrics.scroll\n            ? {\n                scroll: {\n                    max_depth: view.commonViewMetrics.scroll.maxDepth,\n                    max_depth_scroll_top: view.commonViewMetrics.scroll.maxDepthScrollTop,\n                    max_scroll_height: view.commonViewMetrics.scroll.maxScrollHeight,\n                    max_scroll_height_time: toServerDuration(view.commonViewMetrics.scroll.maxScrollHeightTime),\n                },\n            }\n            : undefined,\n        session: {\n            has_replay: replayStats ? true : undefined,\n            is_active: view.sessionIsActive ? undefined : false,\n        },\n        privacy: {\n            replay_level: configuration.defaultPrivacyLevel,\n        },\n    };\n    if (!isEmptyObject(view.customTimings)) {\n        viewEvent.view.custom_timings = mapValues(view.customTimings, toServerDuration);\n    }\n    return {\n        rawRumEvent: viewEvent,\n        startTime: view.startClocks.relative,\n        domainContext: {\n            location: view.location,\n        },\n    };\n}\n//# sourceMappingURL=viewCollection.js.map","import { Observable, ONE_SECOND, elapsed, relativeNow, throttle, addEventListener, monitor, } from '@datadog/browser-core';\nimport { getScrollY } from '../../../browser/scroll';\nimport { getViewportDimension } from '../../../browser/viewportObservable';\n/** Arbitrary scroll throttle duration */\nexport var THROTTLE_SCROLL_DURATION = ONE_SECOND;\nexport function trackScrollMetrics(configuration, viewStart, callback, scrollValues) {\n    if (scrollValues === void 0) { scrollValues = createScrollValuesObservable(configuration); }\n    var maxScrollDepth = 0;\n    var maxScrollHeight = 0;\n    var maxScrollHeightTime = 0;\n    var subscription = scrollValues.subscribe(function (_a) {\n        var scrollDepth = _a.scrollDepth, scrollTop = _a.scrollTop, scrollHeight = _a.scrollHeight;\n        var shouldUpdate = false;\n        if (scrollDepth > maxScrollDepth) {\n            maxScrollDepth = scrollDepth;\n            shouldUpdate = true;\n        }\n        if (scrollHeight > maxScrollHeight) {\n            maxScrollHeight = scrollHeight;\n            var now = relativeNow();\n            maxScrollHeightTime = elapsed(viewStart.relative, now);\n            shouldUpdate = true;\n        }\n        if (shouldUpdate) {\n            callback({\n                maxDepth: Math.min(maxScrollDepth, maxScrollHeight),\n                maxDepthScrollTop: scrollTop,\n                maxScrollHeight: maxScrollHeight,\n                maxScrollHeightTime: maxScrollHeightTime,\n            });\n        }\n    });\n    return {\n        stop: function () { return subscription.unsubscribe(); },\n    };\n}\nexport function computeScrollValues() {\n    var scrollTop = getScrollY();\n    var height = getViewportDimension().height;\n    var scrollHeight = Math.round((document.scrollingElement || document.documentElement).scrollHeight);\n    var scrollDepth = Math.round(height + scrollTop);\n    return {\n        scrollHeight: scrollHeight,\n        scrollDepth: scrollDepth,\n        scrollTop: scrollTop,\n    };\n}\nexport function createScrollValuesObservable(configuration, throttleDuration) {\n    if (throttleDuration === void 0) { throttleDuration = THROTTLE_SCROLL_DURATION; }\n    return new Observable(function (observable) {\n        function notify() {\n            observable.notify(computeScrollValues());\n        }\n        if (window.ResizeObserver) {\n            var throttledNotify_1 = throttle(notify, throttleDuration, {\n                leading: false,\n                trailing: true,\n            });\n            var observerTarget = document.scrollingElement || document.documentElement;\n            var resizeObserver_1 = new ResizeObserver(monitor(throttledNotify_1.throttled));\n            if (observerTarget) {\n                resizeObserver_1.observe(observerTarget);\n            }\n            var eventListener_1 = addEventListener(configuration, window, \"scroll\" /* DOM_EVENT.SCROLL */, throttledNotify_1.throttled, {\n                passive: true,\n            });\n            return function () {\n                throttledNotify_1.cancel();\n                resizeObserver_1.disconnect();\n                eventListener_1.stop();\n            };\n        }\n    });\n}\n//# sourceMappingURL=trackScrollMetrics.js.map","import { setTimeout, relativeNow, runOnReadyState, clearTimeout } from '@datadog/browser-core';\nimport { getNavigationEntry } from '../../../browser/performanceUtils';\nexport function trackNavigationTimings(configuration, callback, getNavigationEntryImpl) {\n    if (getNavigationEntryImpl === void 0) { getNavigationEntryImpl = getNavigationEntry; }\n    return waitAfterLoadEvent(configuration, function () {\n        var entry = getNavigationEntryImpl();\n        if (!isIncompleteNavigation(entry)) {\n            callback(processNavigationEntry(entry));\n        }\n    });\n}\nfunction processNavigationEntry(entry) {\n    return {\n        domComplete: entry.domComplete,\n        domContentLoaded: entry.domContentLoadedEventEnd,\n        domInteractive: entry.domInteractive,\n        loadEvent: entry.loadEventEnd,\n        // In some cases the value reported is negative or is larger\n        // than the current page time. Ignore these cases:\n        // https://github.com/GoogleChrome/web-vitals/issues/137\n        // https://github.com/GoogleChrome/web-vitals/issues/162\n        firstByte: entry.responseStart >= 0 && entry.responseStart <= relativeNow() ? entry.responseStart : undefined,\n    };\n}\nfunction isIncompleteNavigation(entry) {\n    return entry.loadEventEnd <= 0;\n}\nfunction waitAfterLoadEvent(configuration, callback) {\n    var timeoutId;\n    var stopOnReadyState = runOnReadyState(configuration, 'complete', function () {\n        // Invoke the callback a bit after the actual load event, so the \"loadEventEnd\" timing is accurate\n        timeoutId = setTimeout(function () { return callback(); });\n    }).stop;\n    return {\n        stop: function () {\n            stopOnReadyState();\n            clearTimeout(timeoutId);\n        },\n    };\n}\n//# sourceMappingURL=trackNavigationTimings.js.map","import { trackCumulativeLayoutShift } from './trackCumulativeLayoutShift';\nimport { trackInteractionToNextPaint } from './trackInteractionToNextPaint';\nimport { trackLoadingTime } from './trackLoadingTime';\nimport { trackScrollMetrics } from './trackScrollMetrics';\nexport function trackCommonViewMetrics(lifeCycle, domMutationObservable, windowOpenObservable, configuration, scheduleViewUpdate, loadingType, viewStart) {\n    var commonViewMetrics = {};\n    var _a = trackLoadingTime(lifeCycle, domMutationObservable, windowOpenObservable, configuration, loadingType, viewStart, function (newLoadingTime) {\n        commonViewMetrics.loadingTime = newLoadingTime;\n        scheduleViewUpdate();\n    }), stopLoadingTimeTracking = _a.stop, setLoadEvent = _a.setLoadEvent;\n    var stopScrollMetricsTracking = trackScrollMetrics(configuration, viewStart, function (newScrollMetrics) {\n        commonViewMetrics.scroll = newScrollMetrics;\n    }).stop;\n    var stopCLSTracking = trackCumulativeLayoutShift(configuration, viewStart.relative, function (cumulativeLayoutShift) {\n        commonViewMetrics.cumulativeLayoutShift = cumulativeLayoutShift;\n        scheduleViewUpdate();\n    }).stop;\n    var _b = trackInteractionToNextPaint(configuration, viewStart.relative, loadingType), stopINPTracking = _b.stop, getInteractionToNextPaint = _b.getInteractionToNextPaint, setViewEnd = _b.setViewEnd;\n    return {\n        stop: function () {\n            stopLoadingTimeTracking();\n            stopCLSTracking();\n            stopScrollMetricsTracking();\n        },\n        stopINPTracking: stopINPTracking,\n        setLoadEvent: setLoadEvent,\n        setViewEnd: setViewEnd,\n        getCommonViewMetrics: function () {\n            commonViewMetrics.interactionToNextPaint = getInteractionToNextPaint();\n            return commonViewMetrics;\n        },\n    };\n}\n//# sourceMappingURL=trackCommonViewMetrics.js.map","import { trackFirstContentfulPaint } from './trackFirstContentfulPaint';\nimport { trackFirstInput } from './trackFirstInput';\nimport { trackNavigationTimings } from './trackNavigationTimings';\nimport { trackLargestContentfulPaint } from './trackLargestContentfulPaint';\nimport { trackFirstHidden } from './trackFirstHidden';\nexport function trackInitialViewMetrics(configuration, setLoadEvent, scheduleViewUpdate) {\n    var initialViewMetrics = {};\n    var stopNavigationTracking = trackNavigationTimings(configuration, function (navigationTimings) {\n        setLoadEvent(navigationTimings.loadEvent);\n        initialViewMetrics.navigationTimings = navigationTimings;\n        scheduleViewUpdate();\n    }).stop;\n    var firstHidden = trackFirstHidden(configuration);\n    var stopFCPTracking = trackFirstContentfulPaint(configuration, firstHidden, function (firstContentfulPaint) {\n        initialViewMetrics.firstContentfulPaint = firstContentfulPaint;\n        scheduleViewUpdate();\n    }).stop;\n    var stopLCPTracking = trackLargestContentfulPaint(configuration, firstHidden, window, function (largestContentfulPaint) {\n        initialViewMetrics.largestContentfulPaint = largestContentfulPaint;\n        scheduleViewUpdate();\n    }).stop;\n    var stopFIDTracking = trackFirstInput(configuration, firstHidden, function (firstInput) {\n        initialViewMetrics.firstInput = firstInput;\n        scheduleViewUpdate();\n    }).stop;\n    function stop() {\n        stopNavigationTracking();\n        stopFCPTracking();\n        stopLCPTracking();\n        stopFIDTracking();\n        firstHidden.stop();\n    }\n    return {\n        stop: stop,\n        initialViewMetrics: initialViewMetrics,\n    };\n}\n//# sourceMappingURL=trackInitialViewMetrics.js.map","import { elapsed, find } from '@datadog/browser-core';\nimport { isElementNode } from '../../../browser/htmlDomUtils';\nimport { createPerformanceObservable, RumPerformanceEntryType } from '../../../browser/performanceObservable';\nimport { getSelectorFromElement } from '../../getSelectorFromElement';\n/**\n * Track the first input occurring during the initial View to return:\n * - First Input Delay\n * - First Input Time\n * Callback is called at most one time.\n * Documentation: https://web.dev/fid/\n * Reference implementation: https://github.com/GoogleChrome/web-vitals/blob/master/src/getFID.ts\n */\nexport function trackFirstInput(configuration, firstHidden, callback) {\n    var performanceFirstInputSubscription = createPerformanceObservable(configuration, {\n        type: RumPerformanceEntryType.FIRST_INPUT,\n        buffered: true,\n    }).subscribe(function (entries) {\n        var firstInputEntry = find(entries, function (entry) { return entry.startTime < firstHidden.timeStamp; });\n        if (firstInputEntry) {\n            var firstInputDelay = elapsed(firstInputEntry.startTime, firstInputEntry.processingStart);\n            var firstInputTargetSelector = void 0;\n            if (firstInputEntry.target && isElementNode(firstInputEntry.target)) {\n                firstInputTargetSelector = getSelectorFromElement(firstInputEntry.target, configuration.actionNameAttribute);\n            }\n            callback({\n                // Ensure firstInputDelay to be positive, see\n                // https://bugs.chromium.org/p/chromium/issues/detail?id=1185815\n                delay: firstInputDelay >= 0 ? firstInputDelay : 0,\n                time: firstInputEntry.startTime,\n                targetSelector: firstInputTargetSelector,\n            });\n        }\n    });\n    return {\n        stop: function () {\n            performanceFirstInputSubscription.unsubscribe();\n        },\n    };\n}\n//# sourceMappingURL=trackFirstInput.js.map","import { trackEventCounts } from '../trackEventCounts';\nexport function trackViewEventCounts(lifeCycle, viewId, onChange) {\n    var _a = trackEventCounts({\n        lifeCycle: lifeCycle,\n        isChildEvent: function (event) { return event.view.id === viewId; },\n        onChange: onChange,\n    }), stop = _a.stop, eventCounts = _a.eventCounts;\n    return {\n        stop: stop,\n        eventCounts: eventCounts,\n    };\n}\n//# sourceMappingURL=trackViewEventCounts.js.map","import { elapsed } from '@datadog/browser-core';\nimport { waitPageActivityEnd } from '../../waitPageActivityEnd';\nimport { trackFirstHidden } from './trackFirstHidden';\nexport function trackLoadingTime(lifeCycle, domMutationObservable, windowOpenObservable, configuration, loadType, viewStart, callback) {\n    var isWaitingForLoadEvent = loadType === \"initial_load\" /* ViewLoadingType.INITIAL_LOAD */;\n    var isWaitingForActivityLoadingTime = true;\n    var loadingTimeCandidates = [];\n    var firstHidden = trackFirstHidden(configuration);\n    function invokeCallbackIfAllCandidatesAreReceived() {\n        if (!isWaitingForActivityLoadingTime && !isWaitingForLoadEvent && loadingTimeCandidates.length > 0) {\n            var loadingTime = Math.max.apply(Math, loadingTimeCandidates);\n            if (loadingTime < firstHidden.timeStamp) {\n                callback(loadingTime);\n            }\n        }\n    }\n    var stop = waitPageActivityEnd(lifeCycle, domMutationObservable, windowOpenObservable, configuration, function (event) {\n        if (isWaitingForActivityLoadingTime) {\n            isWaitingForActivityLoadingTime = false;\n            if (event.hadActivity) {\n                loadingTimeCandidates.push(elapsed(viewStart.timeStamp, event.end));\n            }\n            invokeCallbackIfAllCandidatesAreReceived();\n        }\n    }).stop;\n    return {\n        stop: function () {\n            stop();\n            firstHidden.stop();\n        },\n        setLoadEvent: function (loadEvent) {\n            if (isWaitingForLoadEvent) {\n                isWaitingForLoadEvent = false;\n                loadingTimeCandidates.push(loadEvent);\n                invokeCallbackIfAllCandidatesAreReceived();\n            }\n        },\n    };\n}\n//# sourceMappingURL=trackLoadingTime.js.map","import { ONE_SECOND } from './utils/timeUtils';\nimport { requestIdleCallback } from './requestIdleCallback';\n/**\n * Maximum delay before starting to execute tasks in the queue. We don't want to wait too long\n * before running tasks, as it might hurt reliability (ex: if the user navigates away, we might lose\n * the opportunity to send some data). We also don't want to run tasks too often, as it might hurt\n * performance.\n */\nvar IDLE_CALLBACK_TIMEOUT = ONE_SECOND;\n/**\n * Maximum amount of time allocated to running tasks when a timeout (`IDLE_CALLBACK_TIMEOUT`) is\n * reached. We should not run tasks for too long as it will hurt performance, but we should still\n * run some tasks to avoid postponing them forever.\n *\n * Rational: Running tasks for 30ms every second (IDLE_CALLBACK_TIMEOUT) should be acceptable.\n */\nexport var MAX_EXECUTION_TIME_ON_TIMEOUT = 30;\nexport function createTaskQueue() {\n    var pendingTasks = [];\n    function run(deadline) {\n        var executionTimeRemaining;\n        if (deadline.didTimeout) {\n            var start_1 = performance.now();\n            executionTimeRemaining = function () { return MAX_EXECUTION_TIME_ON_TIMEOUT - (performance.now() - start_1); };\n        }\n        else {\n            executionTimeRemaining = deadline.timeRemaining.bind(deadline);\n        }\n        while (executionTimeRemaining() > 0 && pendingTasks.length) {\n            pendingTasks.shift()();\n        }\n        if (pendingTasks.length) {\n            scheduleNextRun();\n        }\n    }\n    function scheduleNextRun() {\n        requestIdleCallback(run, { timeout: IDLE_CALLBACK_TIMEOUT });\n    }\n    return {\n        push: function (task) {\n            if (pendingTasks.push(task) === 1) {\n                scheduleNextRun();\n            }\n        },\n    };\n}\n//# sourceMappingURL=taskQueue.js.map","import { toServerDuration, relativeToClocks, generateUUID } from '@datadog/browser-core';\nimport { createPerformanceObservable, RumPerformanceEntryType } from '../../browser/performanceObservable';\nexport function startLongAnimationFrameCollection(lifeCycle, configuration) {\n    var performanceResourceSubscription = createPerformanceObservable(configuration, {\n        type: RumPerformanceEntryType.LONG_ANIMATION_FRAME,\n        buffered: true,\n    }).subscribe(function (entries) {\n        for (var _i = 0, entries_1 = entries; _i < entries_1.length; _i++) {\n            var entry = entries_1[_i];\n            var startClocks = relativeToClocks(entry.startTime);\n            var rawRumEvent = {\n                date: startClocks.timeStamp,\n                long_task: {\n                    id: generateUUID(),\n                    entry_type: \"long-animation-frame\" /* RumLongTaskEntryType.LONG_ANIMATION_FRAME */,\n                    duration: toServerDuration(entry.duration),\n                    blocking_duration: toServerDuration(entry.blockingDuration),\n                    first_ui_event_timestamp: toServerDuration(entry.firstUIEventTimestamp),\n                    render_start: toServerDuration(entry.renderStart),\n                    style_and_layout_start: toServerDuration(entry.styleAndLayoutStart),\n                    start_time: toServerDuration(entry.startTime),\n                    scripts: entry.scripts.map(function (script) { return ({\n                        duration: toServerDuration(script.duration),\n                        pause_duration: toServerDuration(script.pauseDuration),\n                        forced_style_and_layout_duration: toServerDuration(script.forcedStyleAndLayoutDuration),\n                        start_time: toServerDuration(script.startTime),\n                        execution_start: toServerDuration(script.executionStart),\n                        source_url: script.sourceURL,\n                        source_function_name: script.sourceFunctionName,\n                        source_char_position: script.sourceCharPosition,\n                        invoker: script.invoker,\n                        invoker_type: script.invokerType,\n                        window_attribution: script.windowAttribution,\n                    }); }),\n                },\n                type: \"long_task\" /* RumEventType.LONG_TASK */,\n                _dd: {\n                    discarded: false,\n                },\n            };\n            lifeCycle.notify(12 /* LifeCycleEventType.RAW_RUM_EVENT_COLLECTED */, {\n                rawRumEvent: rawRumEvent,\n                startTime: startClocks.relative,\n                domainContext: { performanceEntry: entry },\n            });\n        }\n    });\n    return {\n        stop: function () { return performanceResourceSubscription.unsubscribe(); },\n    };\n}\n//# sourceMappingURL=longAnimationFrameCollection.js.map","import { toServerDuration, relativeToClocks, generateUUID } from '@datadog/browser-core';\nimport { createPerformanceObservable, RumPerformanceEntryType } from '../../browser/performanceObservable';\nexport function startLongTaskCollection(lifeCycle, configuration) {\n    var performanceLongTaskSubscription = createPerformanceObservable(configuration, {\n        type: RumPerformanceEntryType.LONG_TASK,\n        buffered: true,\n    }).subscribe(function (entries) {\n        for (var _i = 0, entries_1 = entries; _i < entries_1.length; _i++) {\n            var entry = entries_1[_i];\n            if (entry.entryType !== RumPerformanceEntryType.LONG_TASK) {\n                break;\n            }\n            if (!configuration.trackLongTasks) {\n                break;\n            }\n            var startClocks = relativeToClocks(entry.startTime);\n            var rawRumEvent = {\n                date: startClocks.timeStamp,\n                long_task: {\n                    id: generateUUID(),\n                    entry_type: \"long-task\" /* RumLongTaskEntryType.LONG_TASK */,\n                    duration: toServerDuration(entry.duration),\n                },\n                type: \"long_task\" /* RumEventType.LONG_TASK */,\n                _dd: {\n                    discarded: false,\n                },\n            };\n            lifeCycle.notify(12 /* LifeCycleEventType.RAW_RUM_EVENT_COLLECTED */, {\n                rawRumEvent: rawRumEvent,\n                startTime: startClocks.relative,\n                domainContext: { performanceEntry: entry },\n            });\n        }\n    });\n    return {\n        stop: function () {\n            performanceLongTaskSubscription.unsubscribe();\n        },\n    };\n}\n//# sourceMappingURL=longTaskCollection.js.map","import { initReportObservable, RawReportType } from '@datadog/browser-core';\nexport function trackReportError(configuration, errorObservable) {\n    var subscription = initReportObservable(configuration, [\n        RawReportType.cspViolation,\n        RawReportType.intervention,\n    ]).subscribe(function (rawError) { return errorObservable.notify(rawError); });\n    return {\n        stop: function () {\n            subscription.unsubscribe();\n        },\n    };\n}\n//# sourceMappingURL=trackReportError.js.map","import { monitor } from './monitor';\nimport { noop } from './utils/functionUtils';\n/**\n * Read bytes from a ReadableStream until at least `limit` bytes have been read (or until the end of\n * the stream). The callback is invoked with the at most `limit` bytes, and indicates that the limit\n * has been exceeded if more bytes were available.\n */\nexport function readBytesFromStream(stream, callback, options) {\n    var reader = stream.getReader();\n    var chunks = [];\n    var readBytesCount = 0;\n    readMore();\n    function readMore() {\n        reader.read().then(monitor(function (result) {\n            if (result.done) {\n                onDone();\n                return;\n            }\n            if (options.collectStreamBody) {\n                chunks.push(result.value);\n            }\n            readBytesCount += result.value.length;\n            if (readBytesCount > options.bytesLimit) {\n                onDone();\n            }\n            else {\n                readMore();\n            }\n        }), monitor(function (error) { return callback(error); }));\n    }\n    function onDone() {\n        reader.cancel().catch(\n        // we don't care if cancel fails, but we still need to catch the error to avoid reporting it\n        // as an unhandled rejection\n        noop);\n        var bytes;\n        var limitExceeded;\n        if (options.collectStreamBody) {\n            var completeBuffer_1;\n            if (chunks.length === 1) {\n                // optimization: if the response is small enough to fit in a single buffer (provided by the browser), just\n                // use it directly.\n                completeBuffer_1 = chunks[0];\n            }\n            else {\n                // else, we need to copy buffers into a larger buffer to concatenate them.\n                completeBuffer_1 = new Uint8Array(readBytesCount);\n                var offset_1 = 0;\n                chunks.forEach(function (chunk) {\n                    completeBuffer_1.set(chunk, offset_1);\n                    offset_1 += chunk.length;\n                });\n            }\n            bytes = completeBuffer_1.slice(0, options.bytesLimit);\n            limitExceeded = completeBuffer_1.length > options.bytesLimit;\n        }\n        callback(undefined, bytes, limitExceeded);\n    }\n}\n//# sourceMappingURL=readBytesFromStream.js.map","import { canUseEventBridge, noop, bridgeSupports, } from '@datadog/browser-core';\nimport { getReplayStats as getReplayStatsImpl } from '../domain/replayStats';\nimport { createDeflateEncoder, getDeflateWorkerStatus, startDeflateWorker, } from '../domain/deflate';\nimport { isBrowserSupported } from './isBrowserSupported';\nimport { createPostStartStrategy } from './postStartStrategy';\nimport { createPreStartStrategy } from './preStartStrategy';\nexport function makeRecorderApi(startRecordingImpl, createDeflateWorkerImpl) {\n    if ((canUseEventBridge() && !bridgeSupports(\"records\" /* BridgeCapability.RECORDS */)) || !isBrowserSupported()) {\n        return {\n            start: noop,\n            stop: noop,\n            getReplayStats: function () { return undefined; },\n            onRumStart: noop,\n            isRecording: function () { return false; },\n            getSessionReplayLink: function () { return undefined; },\n        };\n    }\n    // eslint-disable-next-line prefer-const\n    var _a = createPreStartStrategy(), strategy = _a.strategy, shouldStartImmediately = _a.shouldStartImmediately;\n    return {\n        start: function (options) { return strategy.start(options); },\n        stop: function () { return strategy.stop(); },\n        getSessionReplayLink: function () { return strategy.getSessionReplayLink(); },\n        onRumStart: onRumStart,\n        isRecording: function () {\n            // The worker is started optimistically, meaning we could have started to record but its\n            // initialization fails a bit later. This could happen when:\n            // * the worker URL (blob or plain URL) is blocked by CSP in Firefox only (Chromium and Safari\n            // throw an exception when instantiating the worker, and IE doesn't care about CSP)\n            // * the browser fails to load the worker in case the workerUrl is used\n            // * an unexpected error occurs in the Worker before initialization, ex:\n            //   * a runtime exception collected by monitor()\n            //   * a syntax error notified by the browser via an error event\n            // * the worker is unresponsive for some reason and timeouts\n            //\n            // It is not expected to happen often. Nonetheless, the \"replayable\" status on RUM events is\n            // an important part of the Datadog App:\n            // * If we have a false positive (we set has_replay: true even if no replay data is present),\n            // we might display broken links to the Session Replay player.\n            // * If we have a false negative (we don't set has_replay: true even if replay data is\n            // available), it is less noticeable because no link will be displayed.\n            //\n            // Thus, it is better to have false negative, so let's make sure the worker is correctly\n            // initialized before advertizing that we are recording.\n            //\n            // In the future, when the compression worker will also be used for RUM data, this will be\n            // less important since no RUM event will be sent when the worker fails to initialize.\n            return getDeflateWorkerStatus() === 3 /* DeflateWorkerStatus.Initialized */ && strategy.isRecording();\n        },\n        getReplayStats: function (viewId) {\n            return getDeflateWorkerStatus() === 3 /* DeflateWorkerStatus.Initialized */ ? getReplayStatsImpl(viewId) : undefined;\n        },\n    };\n    function onRumStart(lifeCycle, configuration, sessionManager, viewHistory, worker) {\n        var cachedDeflateEncoder;\n        function getOrCreateDeflateEncoder() {\n            if (!cachedDeflateEncoder) {\n                worker !== null && worker !== void 0 ? worker : (worker = startDeflateWorker(configuration, 'Datadog Session Replay', function () {\n                    strategy.stop();\n                }, createDeflateWorkerImpl));\n                if (worker) {\n                    cachedDeflateEncoder = createDeflateEncoder(configuration, worker, 1 /* DeflateEncoderStreamId.REPLAY */);\n                }\n            }\n            return cachedDeflateEncoder;\n        }\n        strategy = createPostStartStrategy(configuration, lifeCycle, sessionManager, viewHistory, startRecordingImpl, getOrCreateDeflateEncoder);\n        if (shouldStartImmediately(configuration)) {\n            strategy.start();\n        }\n    }\n}\n//# sourceMappingURL=recorderApi.js.map","import { noop } from '@datadog/browser-core';\nexport function createPreStartStrategy() {\n    var status = 0 /* PreStartRecorderStatus.None */;\n    return {\n        strategy: {\n            start: function () {\n                status = 1 /* PreStartRecorderStatus.HadManualStart */;\n            },\n            stop: function () {\n                status = 2 /* PreStartRecorderStatus.HadManualStop */;\n            },\n            isRecording: function () { return false; },\n            getSessionReplayLink: noop,\n        },\n        shouldStartImmediately: function (configuration) {\n            return (status === 1 /* PreStartRecorderStatus.HadManualStart */ ||\n                (status === 0 /* PreStartRecorderStatus.None */ && !configuration.startSessionReplayRecordingManually));\n        },\n    };\n}\n//# sourceMappingURL=preStartStrategy.js.map","import { PageExitReason, runOnReadyState } from '@datadog/browser-core';\nimport { getSessionReplayLink } from '../domain/getSessionReplayLink';\nexport function createPostStartStrategy(configuration, lifeCycle, sessionManager, viewHistory, startRecordingImpl, getOrCreateDeflateEncoder) {\n    var status = 0 /* RecorderStatus.Stopped */;\n    lifeCycle.subscribe(9 /* LifeCycleEventType.SESSION_EXPIRED */, function () {\n        if (status === 2 /* RecorderStatus.Starting */ || status === 3 /* RecorderStatus.Started */) {\n            stop();\n            status = 1 /* RecorderStatus.IntentToStart */;\n        }\n    });\n    // Stop the recorder on page unload to avoid sending records after the page is ended.\n    lifeCycle.subscribe(11 /* LifeCycleEventType.PAGE_EXITED */, function (pageExitEvent) {\n        if (pageExitEvent.reason === PageExitReason.UNLOADING) {\n            stop();\n        }\n    });\n    lifeCycle.subscribe(10 /* LifeCycleEventType.SESSION_RENEWED */, function () {\n        if (status === 1 /* RecorderStatus.IntentToStart */) {\n            start();\n        }\n    });\n    function start(options) {\n        var session = sessionManager.findTrackedSession();\n        if (canStartRecording(session, options)) {\n            status = 1 /* RecorderStatus.IntentToStart */;\n            return;\n        }\n        if (isRecordingInProgress(status)) {\n            return;\n        }\n        status = 2 /* RecorderStatus.Starting */;\n        runOnReadyState(configuration, 'interactive', function () {\n            if (status !== 2 /* RecorderStatus.Starting */) {\n                return;\n            }\n            var deflateEncoder = getOrCreateDeflateEncoder();\n            if (!deflateEncoder) {\n                status = 0 /* RecorderStatus.Stopped */;\n                return;\n            }\n            ;\n            (stopRecording = startRecordingImpl(lifeCycle, configuration, sessionManager, viewHistory, deflateEncoder).stop);\n            status = 3 /* RecorderStatus.Started */;\n        });\n        if (shouldForceReplay(session, options)) {\n            sessionManager.setForcedReplay();\n        }\n    }\n    function stop() {\n        if (status !== 0 /* RecorderStatus.Stopped */ && status === 3 /* RecorderStatus.Started */) {\n            stopRecording === null || stopRecording === void 0 ? void 0 : stopRecording();\n        }\n        status = 0 /* RecorderStatus.Stopped */;\n    }\n    var stopRecording;\n    return {\n        start: start,\n        stop: stop,\n        getSessionReplayLink: function () {\n            return getSessionReplayLink(configuration, sessionManager, viewHistory, status !== 0 /* RecorderStatus.Stopped */);\n        },\n        isRecording: function () { return status === 3 /* RecorderStatus.Started */; },\n    };\n}\nfunction canStartRecording(session, options) {\n    return !session || (session.sessionReplay === 0 /* SessionReplayState.OFF */ && (!options || !options.force));\n}\nfunction isRecordingInProgress(status) {\n    return status === 2 /* RecorderStatus.Starting */ || status === 3 /* RecorderStatus.Started */;\n}\nfunction shouldForceReplay(session, options) {\n    return options && options.force && session.sessionReplay === 0 /* SessionReplayState.OFF */;\n}\n//# sourceMappingURL=postStartStrategy.js.map","import { getSessionReplayUrl } from '@datadog/browser-rum-core';\nimport { isBrowserSupported } from '../boot/isBrowserSupported';\nexport function getSessionReplayLink(configuration, sessionManager, viewHistory, isRecordingStarted) {\n    var session = sessionManager.findTrackedSession();\n    var errorType = getErrorType(session, isRecordingStarted);\n    var viewContext = viewHistory.findView();\n    return getSessionReplayUrl(configuration, {\n        viewContext: viewContext,\n        errorType: errorType,\n        session: session,\n    });\n}\nfunction getErrorType(session, isRecordingStarted) {\n    if (!isBrowserSupported()) {\n        return 'browser-not-supported';\n    }\n    if (!session) {\n        // possibilities:\n        // - rum sampled out\n        // - session expired (edge case)\n        return 'rum-not-tracked';\n    }\n    if (session.sessionReplay === 0 /* SessionReplayState.OFF */) {\n        // possibilities\n        // - replay sampled out\n        return 'incorrect-session-plan';\n    }\n    if (!isRecordingStarted) {\n        return 'replay-not-started';\n    }\n}\n//# sourceMappingURL=getSessionReplayLink.js.map","import { INTAKE_SITE_STAGING, INTAKE_SITE_US1, INTAKE_SITE_EU1 } from '@datadog/browser-core';\nexport function getSessionReplayUrl(configuration, _a) {\n    var session = _a.session, viewContext = _a.viewContext, errorType = _a.errorType;\n    var sessionId = session ? session.id : 'no-session-id';\n    var parameters = [];\n    if (errorType !== undefined) {\n        parameters.push(\"error-type=\".concat(errorType));\n    }\n    if (viewContext) {\n        parameters.push(\"seed=\".concat(viewContext.id));\n        parameters.push(\"from=\".concat(viewContext.startClocks.timeStamp));\n    }\n    var origin = getDatadogSiteUrl(configuration);\n    var path = \"/rum/replay/sessions/\".concat(sessionId);\n    return \"\".concat(origin).concat(path, \"?\").concat(parameters.join('&'));\n}\nexport function getDatadogSiteUrl(rumConfiguration) {\n    var site = rumConfiguration.site;\n    var subdomain = rumConfiguration.subdomain || getSiteDefaultSubdomain(rumConfiguration);\n    return \"https://\".concat(subdomain ? \"\".concat(subdomain, \".\") : '').concat(site);\n}\nfunction getSiteDefaultSubdomain(configuration) {\n    switch (configuration.site) {\n        case INTAKE_SITE_US1:\n        case INTAKE_SITE_EU1:\n            return 'app';\n        case INTAKE_SITE_STAGING:\n            return 'dd';\n        default:\n            return undefined;\n    }\n}\n//# sourceMappingURL=getSessionReplayUrl.js.map","import { createHttpRequest, addTelemetryDebug, canUseEventBridge } from '@datadog/browser-core';\nimport { record } from '../domain/record';\nimport { startSegmentCollection, SEGMENT_BYTES_LIMIT } from '../domain/segmentCollection';\nimport { startRecordBridge } from '../domain/startRecordBridge';\nexport function startRecording(lifeCycle, configuration, sessionManager, viewHistory, encoder, httpRequest) {\n    var cleanupTasks = [];\n    var reportError = function (error) {\n        lifeCycle.notify(14 /* LifeCycleEventType.RAW_ERROR_COLLECTED */, { error: error });\n        addTelemetryDebug('Error reported to customer', { 'error.message': error.message });\n    };\n    var replayRequest = httpRequest || createHttpRequest(configuration.sessionReplayEndpointBuilder, SEGMENT_BYTES_LIMIT, reportError);\n    var addRecord;\n    if (!canUseEventBridge()) {\n        var segmentCollection = startSegmentCollection(lifeCycle, configuration, sessionManager, viewHistory, replayRequest, encoder);\n        addRecord = segmentCollection.addRecord;\n        cleanupTasks.push(segmentCollection.stop);\n    }\n    else {\n        ;\n        (addRecord = startRecordBridge(viewHistory).addRecord);\n    }\n    var stopRecording = record({\n        emit: addRecord,\n        configuration: configuration,\n        lifeCycle: lifeCycle,\n        viewHistory: viewHistory,\n    }).stop;\n    cleanupTasks.push(stopRecording);\n    return {\n        stop: function () {\n            cleanupTasks.forEach(function (task) { return task(); });\n        },\n    };\n}\n//# sourceMappingURL=startRecording.js.map","import { isPageExitReason, ONE_SECOND, clearTimeout, setTimeout } from '@datadog/browser-core';\nimport { buildReplayPayload } from './buildReplayPayload';\nimport { createSegment } from './segment';\nexport var SEGMENT_DURATION_LIMIT = 5 * ONE_SECOND;\n/**\n * beacon payload max queue size implementation is 64kb\n * ensure that we leave room for logs, rum and potential other users\n */\nexport var SEGMENT_BYTES_LIMIT = 60000;\n// Segments are the main data structure for session replays. They contain context information used\n// for indexing or UI needs, and a list of records (RRWeb 'events', renamed to avoid confusing\n// namings). They are stored without any processing from the intake, and fetched one after the\n// other while a session is being replayed. Their encoding (deflate) are carefully crafted to allow\n// concatenating multiple segments together. Segments have a size overhead (metadata), so our goal is to\n// build segments containing as many records as possible while complying with the various flush\n// strategies to guarantee a good replay quality.\n//\n// When the recording starts, a segment is initially created.  The segment is flushed (finalized and\n// sent) based on various events (non-exhaustive list):\n//\n// * the page visibility change or becomes to unload\n// * the segment duration reaches a limit\n// * the encoded segment bytes count reaches a limit\n// * ...\n//\n// A segment cannot be created without its context.  If the RUM session ends and no session id is\n// available when creating a new segment, records will be ignored, until the session is renewed and\n// a new session id is available.\n//\n// Empty segments (segments with no record) aren't useful and should be ignored.\n//\n// To help investigate session replays issues, each segment is created with a \"creation reason\",\n// indicating why the session has been created.\nexport function startSegmentCollection(lifeCycle, configuration, sessionManager, viewHistory, httpRequest, encoder) {\n    return doStartSegmentCollection(lifeCycle, function () { return computeSegmentContext(configuration.applicationId, sessionManager, viewHistory); }, httpRequest, encoder);\n}\nexport function doStartSegmentCollection(lifeCycle, getSegmentContext, httpRequest, encoder) {\n    var state = {\n        status: 0 /* SegmentCollectionStatus.WaitingForInitialRecord */,\n        nextSegmentCreationReason: 'init',\n    };\n    var unsubscribeViewCreated = lifeCycle.subscribe(2 /* LifeCycleEventType.VIEW_CREATED */, function () {\n        flushSegment('view_change');\n    }).unsubscribe;\n    var unsubscribePageExited = lifeCycle.subscribe(11 /* LifeCycleEventType.PAGE_EXITED */, function (pageExitEvent) {\n        flushSegment(pageExitEvent.reason);\n    }).unsubscribe;\n    function flushSegment(flushReason) {\n        if (state.status === 1 /* SegmentCollectionStatus.SegmentPending */) {\n            state.segment.flush(function (metadata, encoderResult) {\n                var payload = buildReplayPayload(encoderResult.output, metadata, encoderResult.rawBytesCount);\n                if (isPageExitReason(flushReason)) {\n                    httpRequest.sendOnExit(payload);\n                }\n                else {\n                    httpRequest.send(payload);\n                }\n            });\n            clearTimeout(state.expirationTimeoutId);\n        }\n        if (flushReason !== 'stop') {\n            state = {\n                status: 0 /* SegmentCollectionStatus.WaitingForInitialRecord */,\n                nextSegmentCreationReason: flushReason,\n            };\n        }\n        else {\n            state = {\n                status: 2 /* SegmentCollectionStatus.Stopped */,\n            };\n        }\n    }\n    return {\n        addRecord: function (record) {\n            if (state.status === 2 /* SegmentCollectionStatus.Stopped */) {\n                return;\n            }\n            if (state.status === 0 /* SegmentCollectionStatus.WaitingForInitialRecord */) {\n                var context = getSegmentContext();\n                if (!context) {\n                    return;\n                }\n                state = {\n                    status: 1 /* SegmentCollectionStatus.SegmentPending */,\n                    segment: createSegment({ encoder: encoder, context: context, creationReason: state.nextSegmentCreationReason }),\n                    expirationTimeoutId: setTimeout(function () {\n                        flushSegment('segment_duration_limit');\n                    }, SEGMENT_DURATION_LIMIT),\n                };\n            }\n            state.segment.addRecord(record, function (encodedBytesCount) {\n                if (encodedBytesCount > SEGMENT_BYTES_LIMIT) {\n                    flushSegment('segment_bytes_limit');\n                }\n            });\n        },\n        stop: function () {\n            flushSegment('stop');\n            unsubscribeViewCreated();\n            unsubscribePageExited();\n        },\n    };\n}\nexport function computeSegmentContext(applicationId, sessionManager, viewHistory) {\n    var session = sessionManager.findTrackedSession();\n    var viewContext = viewHistory.findView();\n    if (!session || !viewContext) {\n        return undefined;\n    }\n    return {\n        application: {\n            id: applicationId,\n        },\n        session: {\n            id: session.id,\n        },\n        view: {\n            id: viewContext.id,\n        },\n    };\n}\nexport function setSegmentBytesLimit(newSegmentBytesLimit) {\n    if (newSegmentBytesLimit === void 0) { newSegmentBytesLimit = 60000; }\n    SEGMENT_BYTES_LIMIT = newSegmentBytesLimit;\n}\n//# sourceMappingURL=segmentCollection.js.map","import { getEventBridge } from '@datadog/browser-core';\nexport function startRecordBridge(viewHistory) {\n    var bridge = getEventBridge();\n    return {\n        addRecord: function (record) {\n            // Get the current active view, not at the time of the record, aligning with the segment logic.\n            // This approach could potentially associate the record to an incorrect view, in case the record date is in the past (e.g. frustration records).\n            // However the risk is minimal. We could address the issue when potential negative impact are identified.\n            var view = viewHistory.findView();\n            bridge.send('record', record, view.id);\n        },\n    };\n}\n//# sourceMappingURL=startRecordBridge.js.map","import { assign } from '@datadog/browser-core';\nexport function buildReplayPayload(data, metadata, rawSegmentBytesCount) {\n    var formData = new FormData();\n    formData.append('segment', new Blob([data], {\n        type: 'application/octet-stream',\n    }), \"\".concat(metadata.session.id, \"-\").concat(metadata.start));\n    var metadataAndSegmentSizes = assign({\n        raw_segment_size: rawSegmentBytesCount,\n        compressed_segment_size: data.byteLength,\n    }, metadata);\n    var serializedMetadataAndSegmentSizes = JSON.stringify(metadataAndSegmentSizes);\n    formData.append('event', new Blob([serializedMetadataAndSegmentSizes], { type: 'application/json' }));\n    return { data: formData, bytesCount: data.byteLength };\n}\n//# sourceMappingURL=buildReplayPayload.js.map","import { assign } from '@datadog/browser-core';\nimport { RecordType } from '../../types';\nimport * as replayStats from '../replayStats';\nexport function createSegment(_a) {\n    var context = _a.context, creationReason = _a.creationReason, encoder = _a.encoder;\n    var encodedBytesCount = 0;\n    var viewId = context.view.id;\n    var metadata = assign({\n        start: Infinity,\n        end: -Infinity,\n        creation_reason: creationReason,\n        records_count: 0,\n        has_full_snapshot: false,\n        index_in_view: replayStats.getSegmentsCount(viewId),\n        source: 'browser',\n    }, context);\n    replayStats.addSegment(viewId);\n    function addRecord(record, callback) {\n        metadata.start = Math.min(metadata.start, record.timestamp);\n        metadata.end = Math.max(metadata.end, record.timestamp);\n        metadata.records_count += 1;\n        metadata.has_full_snapshot || (metadata.has_full_snapshot = record.type === RecordType.FullSnapshot);\n        var prefix = encoder.isEmpty ? '{\"records\":[' : ',';\n        encoder.write(prefix + JSON.stringify(record), function (additionalEncodedBytesCount) {\n            encodedBytesCount += additionalEncodedBytesCount;\n            callback(encodedBytesCount);\n        });\n    }\n    function flush(callback) {\n        if (encoder.isEmpty) {\n            throw new Error('Empty segment flushed');\n        }\n        encoder.write(\"],\".concat(JSON.stringify(metadata).slice(1), \"\\n\"));\n        encoder.finish(function (encoderResult) {\n            replayStats.addWroteData(metadata.view.id, encoderResult.rawBytesCount);\n            callback(metadata, encoderResult);\n        });\n    }\n    return { addRecord: addRecord, flush: flush };\n}\n//# sourceMappingURL=segment.js.map","import { sendToExtension } from '@datadog/browser-core';\nimport * as replayStats from '../replayStats';\nimport { trackFocus, trackFrustration, trackInput, trackMediaInteraction, trackMouseInteraction, trackMove, trackMutation, trackScroll, trackStyleSheet, trackViewEnd, trackViewportResize, trackVisualViewportResize, } from './trackers';\nimport { createElementsScrollPositions } from './elementsScrollPositions';\nimport { initShadowRootsController } from './shadowRootsController';\nimport { startFullSnapshots } from './startFullSnapshots';\nimport { initRecordIds } from './recordIds';\nexport function record(options) {\n    var emit = options.emit, configuration = options.configuration, lifeCycle = options.lifeCycle;\n    // runtime checks for user options\n    if (!emit) {\n        throw new Error('emit function is required');\n    }\n    var emitAndComputeStats = function (record) {\n        emit(record);\n        sendToExtension('record', { record: record });\n        var view = options.viewHistory.findView();\n        replayStats.addRecord(view.id);\n    };\n    var elementsScrollPositions = createElementsScrollPositions();\n    var shadowRootsController = initShadowRootsController(configuration, emitAndComputeStats, elementsScrollPositions);\n    var stopFullSnapshots = startFullSnapshots(elementsScrollPositions, shadowRootsController, lifeCycle, configuration, flushMutations, function (records) { return records.forEach(function (record) { return emitAndComputeStats(record); }); }).stop;\n    function flushMutations() {\n        shadowRootsController.flush();\n        mutationTracker.flush();\n    }\n    var recordIds = initRecordIds();\n    var mutationTracker = trackMutation(emitAndComputeStats, configuration, shadowRootsController, document);\n    var trackers = [\n        mutationTracker,\n        trackMove(configuration, emitAndComputeStats),\n        trackMouseInteraction(configuration, emitAndComputeStats, recordIds),\n        trackScroll(configuration, emitAndComputeStats, elementsScrollPositions, document),\n        trackViewportResize(configuration, emitAndComputeStats),\n        trackInput(configuration, emitAndComputeStats),\n        trackMediaInteraction(configuration, emitAndComputeStats),\n        trackStyleSheet(emitAndComputeStats),\n        trackFocus(configuration, emitAndComputeStats),\n        trackVisualViewportResize(configuration, emitAndComputeStats),\n        trackFrustration(lifeCycle, emitAndComputeStats, recordIds),\n        trackViewEnd(lifeCycle, function (viewEndRecord) {\n            flushMutations();\n            emitAndComputeStats(viewEndRecord);\n        }),\n    ];\n    return {\n        stop: function () {\n            shadowRootsController.stop();\n            trackers.forEach(function (tracker) { return tracker.stop(); });\n            stopFullSnapshots();\n        },\n        flushMutations: flushMutations,\n        shadowRootsController: shadowRootsController,\n    };\n}\n//# sourceMappingURL=record.js.map","export function createElementsScrollPositions() {\n    var scrollPositionsByElement = new WeakMap();\n    return {\n        set: function (element, scrollPositions) {\n            if (element === document && !document.scrollingElement) {\n                // cf https://drafts.csswg.org/cssom-view/#dom-document-scrollingelement,\n                // in some cases scrolling elements can not be defined, we don't support those for now\n                return;\n            }\n            scrollPositionsByElement.set(element === document ? document.scrollingElement : element, scrollPositions);\n        },\n        get: function (element) {\n            return scrollPositionsByElement.get(element);\n        },\n        has: function (element) {\n            return scrollPositionsByElement.has(element);\n        },\n    };\n}\n//# sourceMappingURL=elementsScrollPositions.js.map","import { getScrollX, getScrollY, getViewportDimension } from '@datadog/browser-rum-core';\nimport { timeStampNow } from '@datadog/browser-core';\nimport { RecordType } from '../../types';\nimport { serializeDocument } from './serialization';\nimport { getVisualViewport } from './viewports';\nexport function startFullSnapshots(elementsScrollPositions, shadowRootsController, lifeCycle, configuration, flushMutations, fullSnapshotCallback) {\n    var takeFullSnapshot = function (timestamp, serializationContext) {\n        if (timestamp === void 0) { timestamp = timeStampNow(); }\n        if (serializationContext === void 0) { serializationContext = {\n            status: 0 /* SerializationContextStatus.INITIAL_FULL_SNAPSHOT */,\n            elementsScrollPositions: elementsScrollPositions,\n            shadowRootsController: shadowRootsController,\n        }; }\n        var _a = getViewportDimension(), width = _a.width, height = _a.height;\n        var records = [\n            {\n                data: {\n                    height: height,\n                    href: window.location.href,\n                    width: width,\n                },\n                type: RecordType.Meta,\n                timestamp: timestamp,\n            },\n            {\n                data: {\n                    has_focus: document.hasFocus(),\n                },\n                type: RecordType.Focus,\n                timestamp: timestamp,\n            },\n            {\n                data: {\n                    node: serializeDocument(document, configuration, serializationContext),\n                    initialOffset: {\n                        left: getScrollX(),\n                        top: getScrollY(),\n                    },\n                },\n                type: RecordType.FullSnapshot,\n                timestamp: timestamp,\n            },\n        ];\n        if (window.visualViewport) {\n            records.push({\n                data: getVisualViewport(window.visualViewport),\n                type: RecordType.VisualViewport,\n                timestamp: timestamp,\n            });\n        }\n        return records;\n    };\n    fullSnapshotCallback(takeFullSnapshot());\n    var unsubscribe = lifeCycle.subscribe(2 /* LifeCycleEventType.VIEW_CREATED */, function (view) {\n        flushMutations();\n        fullSnapshotCallback(takeFullSnapshot(view.startClocks.timeStamp, {\n            shadowRootsController: shadowRootsController,\n            status: 1 /* SerializationContextStatus.SUBSEQUENT_FULL_SNAPSHOT */,\n            elementsScrollPositions: elementsScrollPositions,\n        }));\n    }).unsubscribe;\n    return {\n        stop: unsubscribe,\n    };\n}\n//# sourceMappingURL=startFullSnapshots.js.map","export function initRecordIds() {\n    var recordIds = new WeakMap();\n    var nextId = 1;\n    return {\n        getIdForEvent: function (event) {\n            if (!recordIds.has(event)) {\n                recordIds.set(event, nextId++);\n            }\n            return recordIds.get(event);\n        },\n    };\n}\n//# sourceMappingURL=recordIds.js.map","import { throttle, addEventListeners, timeStampNow, noop } from '@datadog/browser-core';\nimport { initViewportObservable } from '@datadog/browser-rum-core';\nimport { IncrementalSource, RecordType } from '../../../types';\nimport { getVisualViewport } from '../viewports';\nimport { assembleIncrementalSnapshot } from '../assembly';\nvar VISUAL_VIEWPORT_OBSERVER_THRESHOLD = 200;\nexport function trackViewportResize(configuration, viewportResizeCb) {\n    var viewportResizeSubscription = initViewportObservable(configuration).subscribe(function (data) {\n        viewportResizeCb(assembleIncrementalSnapshot(IncrementalSource.ViewportResize, data));\n    });\n    return {\n        stop: function () {\n            viewportResizeSubscription.unsubscribe();\n        },\n    };\n}\nexport function trackVisualViewportResize(configuration, visualViewportResizeCb) {\n    var visualViewport = window.visualViewport;\n    if (!visualViewport) {\n        return { stop: noop };\n    }\n    var _a = throttle(function () {\n        visualViewportResizeCb({\n            data: getVisualViewport(visualViewport),\n            type: RecordType.VisualViewport,\n            timestamp: timeStampNow(),\n        });\n    }, VISUAL_VIEWPORT_OBSERVER_THRESHOLD, {\n        trailing: false,\n    }), updateDimension = _a.throttled, cancelThrottle = _a.cancel;\n    var removeListener = addEventListeners(configuration, visualViewport, [\"resize\" /* DOM_EVENT.RESIZE */, \"scroll\" /* DOM_EVENT.SCROLL */], updateDimension, {\n        capture: true,\n        passive: true,\n    }).stop;\n    return {\n        stop: function () {\n            removeListener();\n            cancelThrottle();\n        },\n    };\n}\n//# sourceMappingURL=trackViewportResize.js.map","import { RecordType } from '../../../types';\nexport function trackFrustration(lifeCycle, frustrationCb, recordIds) {\n    var frustrationSubscription = lifeCycle.subscribe(12 /* LifeCycleEventType.RAW_RUM_EVENT_COLLECTED */, function (data) {\n        var _a, _b;\n        if (data.rawRumEvent.type === \"action\" /* RumEventType.ACTION */ &&\n            data.rawRumEvent.action.type === \"click\" /* ActionType.CLICK */ &&\n            ((_b = (_a = data.rawRumEvent.action.frustration) === null || _a === void 0 ? void 0 : _a.type) === null || _b === void 0 ? void 0 : _b.length) &&\n            'events' in data.domainContext &&\n            data.domainContext.events &&\n            data.domainContext.events.length) {\n            frustrationCb({\n                timestamp: data.rawRumEvent.date,\n                type: RecordType.FrustrationRecord,\n                data: {\n                    frustrationTypes: data.rawRumEvent.action.frustration.type,\n                    recordIds: data.domainContext.events.map(function (e) { return recordIds.getIdForEvent(e); }),\n                },\n            });\n        }\n    });\n    return {\n        stop: function () {\n            frustrationSubscription.unsubscribe();\n        },\n    };\n}\n//# sourceMappingURL=trackFrustration.js.map","import { timeStampNow } from '@datadog/browser-core';\nimport { RecordType } from '../../../types';\nexport function trackViewEnd(lifeCycle, viewEndCb) {\n    var viewEndSubscription = lifeCycle.subscribe(5 /* LifeCycleEventType.VIEW_ENDED */, function () {\n        viewEndCb({\n            timestamp: timeStampNow(),\n            type: RecordType.ViewEnd,\n        });\n    });\n    return {\n        stop: function () {\n            viewEndSubscription.unsubscribe();\n        },\n    };\n}\n//# sourceMappingURL=trackViewEnd.js.map","import { serializeNodeWithId } from './serializeNode';\nexport function serializeDocument(document, configuration, serializationContext) {\n    // We are sure that Documents are never ignored, so this function never returns null\n    return serializeNodeWithId(document, {\n        serializationContext: serializationContext,\n        parentNodePrivacyLevel: configuration.defaultPrivacyLevel,\n        configuration: configuration,\n    });\n}\n//# sourceMappingURL=serializeDocument.js.map","import { addEventListeners } from '@datadog/browser-core';\nimport { NodePrivacyLevel, getNodePrivacyLevel } from '@datadog/browser-rum-core';\nimport { IncrementalSource, MediaInteractionType } from '../../../types';\nimport { getEventTarget } from '../eventsUtils';\nimport { getSerializedNodeId, hasSerializedNode } from '../serialization';\nimport { assembleIncrementalSnapshot } from '../assembly';\nexport function trackMediaInteraction(configuration, mediaInteractionCb) {\n    return addEventListeners(configuration, document, [\"play\" /* DOM_EVENT.PLAY */, \"pause\" /* DOM_EVENT.PAUSE */], function (event) {\n        var target = getEventTarget(event);\n        if (!target ||\n            getNodePrivacyLevel(target, configuration.defaultPrivacyLevel) === NodePrivacyLevel.HIDDEN ||\n            !hasSerializedNode(target)) {\n            return;\n        }\n        mediaInteractionCb(assembleIncrementalSnapshot(IncrementalSource.MediaInteraction, {\n            id: getSerializedNodeId(target),\n            type: event.type === \"play\" /* DOM_EVENT.PLAY */ ? MediaInteractionType.Play : MediaInteractionType.Pause,\n        }));\n    }, {\n        capture: true,\n        passive: true,\n    });\n}\n//# sourceMappingURL=trackMediaInteraction.js.map","import { addEventListeners, timeStampNow } from '@datadog/browser-core';\nimport { RecordType } from '../../../types';\nexport function trackFocus(configuration, focusCb) {\n    return addEventListeners(configuration, window, [\"focus\" /* DOM_EVENT.FOCUS */, \"blur\" /* DOM_EVENT.BLUR */], function () {\n        focusCb({\n            data: { has_focus: document.hasFocus() },\n            type: RecordType.Focus,\n            timestamp: timeStampNow(),\n        });\n    });\n}\n//# sourceMappingURL=trackFocus.js.map","// @flow\n\nimport { datadogRum } from '@datadog/browser-rum';\nimport { retrieve } from 'putki';\nimport { consentGivenForCategory } from 'utils/cookieConsent';\n\nconst environment = window.__ENVIRONMENT__;\n\n// Regex patterns to identify known bot instances\n// Source: https://docs.datadoghq.com/real_user_monitoring/guide/identify-bots-in-the-ui/\nconst botPattern =\n  '(googlebot\\\\/|bot|Googlebot-Mobile|Googlebot-Image|Google favicon|Mediapartners-Google|bingbot|slurp|java|wget|curl|Commons-HttpClient|Python-urllib|libwww|httpunit|nutch|phpcrawl|msnbot|jyxobot|FAST-WebCrawler|FAST Enterprise Crawler|biglotron|teoma|convera|seekbot|gigablast|exabot|ngbot|ia_archiver|GingerCrawler|webmon |httrack|webcrawler|grub.org|UsineNouvelleCrawler|antibot|netresearchserver|speedy|fluffy|bibnum.bnf|findlink|msrbot|panscient|yacybot|AISearchBot|IOI|ips-agent|tagoobot|MJ12bot|dotbot|woriobot|yanga|buzzbot|mlbot|yandexbot|purebot|Linguee Bot|Voyager|CyberPatrol|voilabot|baiduspider|citeseerxbot|spbot|twengabot|postrank|turnitinbot|scribdbot|page2rss|sitebot|linkdex|Adidxbot|blekkobot|ezooms|dotbot|Mail.RU_Bot|discobot|heritrix|findthatfile|europarchive.org|NerdByNature.Bot|sistrix crawler|ahrefsbot|Aboundex|domaincrawler|wbsearchbot|summify|ccbot|edisterbot|seznambot|ec2linkfinder|gslfbot|aihitbot|intelium_bot|facebookexternalhit|yeti|RetrevoPageAnalyzer|lb-spider|sogou|lssbot|careerbot|wotbox|wocbot|ichiro|DuckDuckBot|lssrocketcrawler|drupact|webcompanycrawler|acoonbot|openindexspider|gnam gnam spider|web-archive-net.com.bot|backlinkcrawler|coccoc|integromedb|content crawler spider|toplistbot|seokicks-robot|it2media-domain-crawler|ip-web-crawler.com|siteexplorer.info|elisabot|proximic|changedetection|blexbot|arabot|WeSEE:Search|niki-bot|CrystalSemanticsBot|rogerbot|360Spider|psbot|InterfaxScanBot|Lipperhey SEO Service|CC Metadata Scaper|g00g1e.net|GrapeshotCrawler|urlappendbot|brainobot|fr-crawler|binlar|SimpleCrawler|Livelapbot|Twitterbot|cXensebot|smtbot|bnf.fr_bot|A6-Indexer|ADmantX|Facebot|Twitterbot|OrangeBot|memorybot|AdvBot|MegaIndex|SemanticScholarBot|ltx71|nerdybot|xovibot|BUbiNG|Qwantify|archive.org_bot|Applebot|TweetmemeBot|crawler4j|findxbot|SemrushBot|yoozBot|lipperhey|y!j-asr|Domain Re-Animator Bot|AddThis)';\n\nconst botRegex = new RegExp(botPattern, 'i');\n\nfunction isBotUserAgent() {\n  return botRegex.test(navigator.userAgent);\n}\n\nlet initialized = false;\nfunction initializeDatadogRum() {\n  if (initialized) return;\n  initialized = true;\n\n  // sessionSampleRate:\n  //   The percentage of sessions to track: 100 for all, 0 for none. Only\n  //   tracked sessions send RUM events. For more details about\n  //   sessionSampleRate, see the sampling configuration.\n  //    -> https://docs.datadoghq.com/real_user_monitoring/guide/sampling-browser-plans/\n  //\n  // sessionReplaySampleRate:\n  //   The percentage of tracked sessions with Browser RUM & Session Replay\n  //   pricing features: 100 for all, 0 for none. For more details about\n  //   sessionReplaySampleRate, see the sampling configuration.\n  //    -> https://www.datadoghq.com/pricing/?product=real-user-monitoring--session-replay#real-user-monitoring--session-replay\n  //    -> https://docs.datadoghq.com/real_user_monitoring/guide/sampling-browser-plans/\n\n  const { sessionSampleRate, sessionReplaySampleRate } = (() => {\n    // Filter out bots from RUM monitoring\n    // See: https://docs.datadoghq.com/real_user_monitoring/guide/identify-bots-in-the-ui/\n    if (isBotUserAgent()) {\n      return { sessionSampleRate: 0, sessionReplaySampleRate: 0 };\n    }\n\n    switch (environment) {\n      case 'test':\n        // We don't want test environment to send any RUM events but we do\n        // want our app to crash in test if for some reason the Datadog RUM\n        // code messes up our application.\n        return { sessionSampleRate: 0, sessionReplaySampleRate: 0 };\n      case 'development':\n        // We don't want to incur pricing costs in development.\n        // This number can be changed when we want to test the RUM code.\n        return { sessionSampleRate: 0, sessionReplaySampleRate: 0 };\n      default:\n        // We want to track all user sessions and let Datadog retention filters\n        // handle the actual retention (keeping only ~1K out of ~260K sessions).\n        // This allows us to capture all sessions for investigation while only\n        // retaining error cases and requests that take a long time.\n        //\n        // We are not using session replays, though, so we disable that.\n        return { sessionSampleRate: 100, sessionReplaySampleRate: 0 };\n    }\n  })();\n\n  const controller = retrieve('controller');\n  const action = retrieve('action');\n  datadogRum.init({\n    applicationId: '1b89e864-e532-4578-a391-cf29b0edb549',\n    clientToken: 'pubf765aeae3809f6105bb0c168ce3687bd',\n    site: 'datadoghq.eu',\n    service: 'venuu',\n    env: environment,\n    version: retrieve('application_version_git'),\n    sessionSampleRate,\n    sessionReplaySampleRate,\n    allowedTracingUrls: [/^https:\\/\\/(?:dev\\.|staging\\.)?venuu\\.(?:fi|se|com)/],\n    trackUserInteractions: true,\n    trackResources: true,\n    trackLongTasks: true,\n    beforeSend: event => {\n      if (typeof controller === 'string' && typeof action === 'string') {\n        // Datadog shows this in RUM session explorer for view names:\n        //\n        // > RUM SDK supports custom view names, which can be used to override\n        // > `url_path_group`. If not specified, it will have the same content\n        // > of `view.url_path_group`.\n        //\n        // So in order for venue pages, search pages etc. to be monitorable as\n        // their own groups, we can set up a custom view name that uses the\n        // Rails controller name and actions.\n        //\n        // This way, regardless of how pretty our URLs are, the grouping will\n        // match the way we write our pages. And we can finally monitor how long\n        // venue profile pages take to load.\n        event.view.name = `${controller}#${action}`;\n      }\n    },\n    defaultPrivacyLevel: 'mask-user-input'\n  });\n\n  datadogRum.startSessionReplayRecording();\n}\n\ndocument.addEventListener('cookieyes_consent_update', eventData => {\n  // $FlowIgnore[prop-missing] -- https://www.cookieyes.com/documentation/events-on-cookie-banner-interactions/\n  const data = eventData.detail;\n  if (data.accepted.includes('performance')) {\n    initializeDatadogRum();\n  }\n});\n\nif (consentGivenForCategory('performance') || environment === 'test') {\n  initializeDatadogRum();\n}\n","// @flow\n\nimport Honeybadger from '@honeybadger-io/js';\nimport { retrieve } from 'putki';\n\nconst environment = window.__ENVIRONMENT__;\n\nHoneybadger.configure({\n  apiKey: '087b96bb',\n  environment: environment,\n  revision: retrieve('application_version_git'),\n  // Paths inside our sourcemaps start with `webpack:///./` and to make Honeybadger\n  // be able to link the errors to our actual source files, we need to define the\n  // `projectRoot` as documented here:\n  // https://docs.honeybadger.io/lib/javascript/guides/using-source-maps/#improving-error-grouping-and-linking-to-source-code\n  projectRoot: 'webpack:///./',\n  enableUncaught: false,\n  // Reporting unhandled Promise rejections causes massive noise in our Honeybadger\n  // and is almost always non-actionable. Rather than reporting them, let's not.\n  enableUnhandledRejection: false\n});\n\nHoneybadger.beforeNotify(notice => {\n  if (suppressCurrentUserAgent()) {\n    return false;\n  }\n\n  notice.component = retrieve('controller');\n  notice.action = retrieve('action');\n  console.warn('[Honeybadger]', notice); // eslint-disable-line no-console\n\n  return true;\n});\n\nfunction suppressCurrentUserAgent() {\n  if (!window.navigator) return false;\n  return window.navigator.userAgent.includes('BingPreview');\n}\n","import initializeAnalytics from './initializeAnalytics';\n$(document).ready(initializeAnalytics);\n\nimport './external-tools';\nimport initializeFoundation from './foundation';\nimport './stickySidebar';\nimport './setupDatadog';\nimport './setupHoneybadger';\nimport './whatInput';\n\n$(document).ready(initializeFoundation);\n","const initializeFoundation = () => {\n  /*\n   * FIXME: hack to make Magellan work in a sidebar.\n   * Can be replaced by the offset_by_height option in Foundation 5.5.\n   * https://github.com/zurb/foundation/pull/5801\n   */\n  const sidebarMenuHeight = $('[data-magellan-expedition]').outerHeight();\n\n  const BLANK_RE = /^\\s*$/;\n\n  $(document).foundation({\n    'magellan-expedition': {\n      active_class: 'is-current',\n      destination_threshold: -sidebarMenuHeight,\n      throttle_delay: 100\n    },\n    tooltip: {\n      touch_close_text: __('foundation.tooltip.touch_close_text')\n    },\n    abide: {\n      validators: {\n        valuePlaceholder: function (el, required) {\n          // At least one, non-whitespace character should be present in the textarea.\n          // So newlines alone will not be valid.\n          if (required && BLANK_RE.test(el.value)) {\n            return false;\n          } else if (el.value === el.getAttribute('data-placeholder')) {\n            return false;\n          } else {\n            return true;\n          }\n        }\n      }\n    }\n  });\n\n  function toggleSidebarNavigationBasedOnTopbarVisibility() {\n    const $topBar = $('.top-bar').first();\n    const isTopNavigationExpanded = $topBar.hasClass('expanded');\n    $('.m-navigation').toggleClass(\n      'm-navigation--expanded',\n      isTopNavigationExpanded\n    );\n  }\n\n  const originalTopBarToggle = window.Foundation.libs.topbar.toggle;\n  window.Foundation.libs.topbar.toggle = function (...args) {\n    originalTopBarToggle.call(this, ...args);\n    toggleSidebarNavigationBasedOnTopbarVisibility();\n  };\n};\n\nexport default initializeFoundation;\n","// @flow\n\nimport * as React from 'react';\n\nimport styles from './InstructionVideoEmbed.module.scss';\n\ntype Props = {|\n  title: string,\n  embedUrl: string\n|};\n\nexport default function InstructionVideoEmbed(props: Props): React.Node {\n  return (\n    <div className={styles.container}>\n      <h3 className={styles.heading}>{props.title}</h3>\n      <div className={styles.frameResizer}>\n        <div className={styles.frame}>\n          <iframe src={props.embedUrl} frameBorder=\"0\" allowFullScreen />\n        </div>\n      </div>\n    </div>\n  );\n}\n","// @flow\n\nimport * as React from 'react';\nimport type { JSONProps } from 'common/types';\n\ntype LazyComponent = Promise<React.ComponentType<JSONProps<any>>>;\n\nexport async function ProfileEditRichTextEditor(): LazyComponent {\n  return (\n    await import(\n      'profiles/common/edit/components/ProfileEditRichTextEditor.rails'\n    )\n  ).default;\n}\n\nexport async function LandingPageRichTextEditor(): LazyComponent {\n  return (\n    await import(\n      'profiles/common/edit/components/LandingPageRichTextEditor.rails'\n    )\n  ).default;\n}\n\nexport async function AvailabilitySourceForm(): LazyComponent {\n  return (await import('reservations/components/AvailabilitySourceForm'))\n    .default;\n}\n\nexport async function PhoneNumberForm(): LazyComponent {\n  return (await import('phoneNumbers/components/PhoneNumberForm')).default;\n}\n\nexport async function VenueMobileCTAs(): LazyComponent {\n  return (await import('phoneNumbers/components/VenueMobileCTAs.rails'))\n    .default;\n}\n\nexport async function Rating(): LazyComponent {\n  return (await import('common/components/Rating')).default;\n}\n\nexport async function RatingBoxAccordion(): LazyComponent {\n  return (await import('common/components/accordion/RatingBoxAccordion'))\n    .default;\n}\n\nexport async function AccordionPanel(): LazyComponent {\n  return (await import('common/components/accordion/AccordionPanel')).default;\n}\n\nexport async function CommissionRoot(): LazyComponent {\n  return (await import('commission/components/CommissionRoot.rails')).default;\n}\n\nexport async function PackageEditorRoot(): LazyComponent {\n  return (await import('packages/edit/components/PackageEditorRoot.rails'))\n    .default;\n}\n\nexport async function VenueInquiryConversationRoot(): LazyComponent {\n  return (\n    await import(\n      'conversations/show/components/venueInquiry/conversation/ConversationRoot.rails'\n    )\n  ).default;\n}\n\nexport async function CateringInquiryConversationApp(): LazyComponent {\n  return (\n    await import(\n      'conversations/show/components/cateringInquiry/ConversationApp.rails'\n    )\n  ).default;\n}\n\nexport async function ReadOnlyVenueInquiryConversationApp(): LazyComponent {\n  return (\n    await import(\n      'conversations/show/components/venueInquiry/readOnly/ConversationApp.rails'\n    )\n  ).default;\n}\n\nexport async function MarkAsRepliedRoot(): LazyComponent {\n  return (\n    await import(\n      'conversations/show/components/venueInquiry/markAsReplied/MarkAsRepliedRoot.rails'\n    )\n  ).default;\n}\n\nexport async function VenueGroupEditorApp(): LazyComponent {\n  return (\n    await import('groups/venues/edit/components/VenueGroupEditorApp.rails')\n  ).default;\n}\n\nexport async function SendCopy(): LazyComponent {\n  return (await import('thanks/components/SendCopy')).default;\n}\n\nexport async function MessageTemplateEditorApp(): LazyComponent {\n  return (\n    await import('messageTemplates/components/MessageTemplateEditorApp.rails')\n  ).default;\n}\n\nexport async function MultiSelect(): LazyComponent {\n  return (await import('common/components/MultiSelect.rails')).default;\n}\n\nexport async function VenuePageInquiryFormNew(): LazyComponent {\n  return (await import('inquiry/components/VenuePageInquiryForm.rails'))\n    .default;\n}\n\nexport async function MultiVenueInquiryForm(): LazyComponent {\n  return (await import('inquiry/components/MultiVenueInquiryForm.rails'))\n    .default;\n}\n\nexport async function SearchableInquiryIndex(): LazyComponent {\n  return (\n    await import('conversations/index/components/SearchableInquiryIndex.rails')\n  ).default;\n}\n\nexport async function FeaturedEventTypeField(): LazyComponent {\n  return (\n    await import('staff/featuredVenuesEdit/components/FeaturedEventTypeField')\n  ).default;\n}\n\nexport async function FeaturedVenuesInventory(): LazyComponent {\n  return (\n    await import(\n      'staff/featuredVenuesInventory/components/FeaturedVenuesInventory.rails'\n    )\n  ).default;\n}\n\nexport async function EditOrganizationTabs(): LazyComponent {\n  return (await import('staff/organization/components/EditOrganizationTabs'))\n    .default;\n}\n\nexport async function SpamInquiriesTabs(): LazyComponent {\n  return (await import('staff/spamInquiries/components/SpamInquiriesTabs'))\n    .default;\n}\n\nexport async function EditVenueServices(): LazyComponent {\n  return (await import('staff/organization/components/EditVenueServices'))\n    .default;\n}\n\nexport async function EditVenueTypes(): LazyComponent {\n  return (await import('staff/organization/components/EditVenueTypes')).default;\n}\n\nexport async function ProfileAnnouncementsEditorApp(): LazyComponent {\n  return (\n    await import(\n      'staff/organization/components/ProfileAnnouncementsEditorApp.rails'\n    )\n  ).default;\n}\n\nexport async function CateringSearch(): LazyComponent {\n  return (await import('catering/search/components/CateringSearch.rails'))\n    .default;\n}\n\n// ============================================= START PROFILE PAGE RELATED COMPONENTS\n\nexport async function VenueProfileGallery(): LazyComponent {\n  return (\n    await import('profiles/venues/show/components/VenueProfileGallery.rails')\n  ).default;\n}\n\nexport async function VenueWishlistButton(): LazyComponent {\n  return (\n    await import(\n      'profiles/venues/show/components/venueProfileGallery/VenueWishlistButton.rails'\n    )\n  ).default;\n}\n\nexport async function VenueProfileLocation(): LazyComponent {\n  return (\n    await import('profiles/venues/show/components/VenueProfileLocation.rails')\n  ).default;\n}\n\nexport async function VenueProfileVideoSection(): LazyComponent {\n  return (\n    await import(\n      'profiles/venues/show/components/VenueProfileVideoSection.rails'\n    )\n  ).default;\n}\n\nexport async function VenueProfileVirtualTourSection(): LazyComponent {\n  return (\n    await import(\n      'profiles/venues/show/components/VenueProfileVirtualTourSection.rails'\n    )\n  ).default;\n}\n\nexport async function VenueProfileStoriesOfPastEvents(): LazyComponent {\n  return (\n    await import(\n      'profiles/venues/show/components/VenueProfileStoriesOfPastEvents.rails'\n    )\n  ).default;\n}\n\nexport async function VenueProfileCapacityDetails(): LazyComponent {\n  return (\n    await import(\n      'profiles/venues/show/components/VenueProfileCapacityDetails.rails'\n    )\n  ).default;\n}\n\nexport async function VenueProfileCTASection(): LazyComponent {\n  return (\n    await import('profiles/venues/show/components/VenueProfileCTASection.rails')\n  ).default;\n}\n\nexport async function VenueProfileOtherSpacesInSameLocation(): LazyComponent {\n  return (\n    await import(\n      'profiles/venues/show/components/VenueProfileOtherSpacesInSameLocation.rails'\n    )\n  ).default;\n}\n\nexport async function VenueProfileReviewList(): LazyComponent {\n  return (\n    await import('profiles/venues/show/components/VenueProfileReviewList.rails')\n  ).default;\n}\n\nexport async function VenueProfileServicesAndFacilities(): LazyComponent {\n  return (\n    await import(\n      'profiles/venues/show/components/VenueProfileServicesAndFacilities.rails'\n    )\n  ).default;\n}\n\nexport async function VenueProfileSimilarVenues(): LazyComponent {\n  return (\n    await import(\n      'profiles/venues/show/components/VenueProfileSimilarVenues.rails'\n    )\n  ).default;\n}\n\nexport async function VenueProfilePricingSection(): LazyComponent {\n  return (\n    await import(\n      'profiles/venues/show/components/VenueProfilePricingSection.rails'\n    )\n  ).default;\n}\n\nexport async function VenueProfileAvailabilitySection(): LazyComponent {\n  return (\n    await import(\n      'profiles/venues/show/components/VenueProfileAvailabilitySection.rails'\n    )\n  ).default;\n}\n\nexport async function VenueProfileBasicInformation(): LazyComponent {\n  return (\n    await import(\n      'profiles/venues/show/components/VenueProfileBasicInformation.rails'\n    )\n  ).default;\n}\n\nexport async function VenueProfileTranslatedDescription(): LazyComponent {\n  return (\n    await import(\n      'profiles/venues/show/components/VenueProfileTranslatedDescription.rails'\n    )\n  ).default;\n}\n\nexport async function CateringBasicInformation(): LazyComponent {\n  return (await import('profiles/catering/show/cateringComponents.rails'))\n    .CateringBasicInformation;\n}\nexport async function CateringDetailedInformation(): LazyComponent {\n  return (await import('profiles/catering/show/cateringComponents.rails'))\n    .CateringDetailedInformation;\n}\nexport async function CateringHeading(): LazyComponent {\n  return (await import('profiles/catering/show/cateringComponents.rails'))\n    .CateringHeading;\n}\nexport async function ProfileImageCarousel(): LazyComponent {\n  return (\n    await import('profiles/common/show/components/ProfileImageCarousel.rails')\n  ).default;\n}\nexport async function CateringInquiry(): LazyComponent {\n  return (await import('profiles/catering/show/cateringComponents.rails'))\n    .CateringInquiry;\n}\nexport async function CateringServicesAndPricing(): LazyComponent {\n  return (await import('profiles/catering/show/cateringComponents.rails'))\n    .CateringServicesAndPricing;\n}\nexport async function CateringMenuList(): LazyComponent {\n  return (await import('profiles/catering/show/cateringComponents.rails'))\n    .CateringMenuList;\n}\n\nexport async function SupplierProfileServicesAndPricing(): LazyComponent {\n  return (\n    await import(\n      'profiles/suppliers/show/components/SupplierProfileServicesAndPricing.rails'\n    )\n  ).default;\n}\nexport async function SupplierProfileHeading(): LazyComponent {\n  return (\n    await import(\n      'profiles/suppliers/show/components/SupplierProfileHeading.rails'\n    )\n  ).default;\n}\nexport async function SupplierProfileContactInformation(): LazyComponent {\n  return (\n    await import(\n      'profiles/suppliers/show/components/SupplierProfileContactInformation.rails'\n    )\n  ).default;\n}\nexport async function SupplierProfileVideo(): LazyComponent {\n  return (\n    await import(\n      'profiles/suppliers/show/components/SupplierProfileVideo.rails'\n    )\n  ).default;\n}\nexport async function SupplierProfileInquiry(): LazyComponent {\n  return (\n    await import(\n      'profiles/suppliers/show/components/SupplierProfileInquiry.rails'\n    )\n  ).default;\n}\nexport async function SupplierProfileContactImage(): LazyComponent {\n  return (\n    await import(\n      'profiles/suppliers/show/components/SupplierProfileContactImage.rails'\n    )\n  ).default;\n}\nexport async function SupplierProfileBasicInformation(): LazyComponent {\n  return (\n    await import(\n      'profiles/suppliers/show/components/SupplierProfileBasicInformation.rails'\n    )\n  ).default;\n}\n\n// ============================================= END PROFILE PAGE RELATED COMPONENTS\n\nexport async function SupplierSearch(): LazyComponent {\n  return (\n    await import('profiles/suppliers/search/components/SupplierSearch.rails')\n  ).default;\n}\n\nexport async function LegalNotice(): LazyComponent {\n  return (await import('common/components/inquiry/legalNotice/LegalNotice'))\n    .default;\n}\n\nexport async function PipedriveIntegrationStatus(): LazyComponent {\n  return (\n    await import(\n      'staff/organization/components/pipedriveIntegrationStatus/PipedriveIntegrationStatus.rails'\n    )\n  ).default;\n}\n\nexport async function BillingDetails(): LazyComponent {\n  return (\n    await import('billing/admin/billingDetails/components/BillingDetails.rails')\n  ).default;\n}\nexport async function TinField(): LazyComponent {\n  return (await import('billing/admin/tin/components/TinField.rails')).default;\n}\nexport async function InvoicesOfDayStates(): LazyComponent {\n  return (\n    await import(\n      'billing/staff/dailyInvoices/components/InvoicesOfDayStates.rails'\n    )\n  ).default;\n}\nexport async function InvoicingFields(): LazyComponent {\n  return (\n    await import(\n      'billing/admin/invoicingFields/components/InvoicingFields.rails'\n    )\n  ).default;\n}\nexport async function OrganizationInvoices(): LazyComponent {\n  return (\n    await import(\n      'billing/staff/organizationInvoices/components/OrganizationInvoices.rails'\n    )\n  ).default;\n}\nexport async function StripeCustomerStatus(): LazyComponent {\n  return (\n    await import(\n      'billing/staff/stripeCustomerStatus/components/StripeCustomerStatus.rails'\n    )\n  ).default;\n}\n\nexport async function OutcomeFeedback(): LazyComponent {\n  return (await import('outcomes/thanks/components/OutcomeFeedback.rails'))\n    .default;\n}\n\nexport async function EditOpeningHours(): LazyComponent {\n  return (\n    await import('profiles/common/edit/components/EditOpeningHours.rails')\n  ).default;\n}\n\nexport async function InquiryRecipientPersonaSelect(): LazyComponent {\n  return (\n    await import(\n      'profiles/common/edit/components/InquiryRecipientPersonaSelect.rails'\n    )\n  ).default;\n}\n","// @flow\n\nimport { exposeComponents, exposeLazyComponents } from 'boot/common/reactMount';\nimport * as components from './components';\nimport * as lazyComponents from './components.lazy';\n\nexposeComponents(components);\nexposeLazyComponents(lazyComponents);\n","// @flow\n\ntype ModuleWithDefaultExport = { +default: () => void, ... };\n\nconst actionEntryPoints: {\n  [actionName: string]: void | (() => Promise<ModuleWithDefaultExport>),\n  ...\n} = {\n  frontPageIndex: () => import('./actionSpecificSetup/frontPageIndex'),\n  landingPagesShow: () => import('./actionSpecificSetup/landingPagesShow'),\n  listsShow: () => import('./actionSpecificSetup/listsShow'),\n  reviewsEdit: () => import('./actionSpecificSetup/reviewsEdit'),\n  reviewsNew: () => import('./actionSpecificSetup/reviewsNew'),\n  'profiles/reviewsNew': () => import('./actionSpecificSetup/reviewsNew'),\n  'profiles/venueProfilesShow': () =>\n    import('./actionSpecificSetup/profiles/venueProfilesShow'),\n\n  'profiles/admin/cateringProfilesEdit': () =>\n    import('./actionSpecificSetup/profiles/admin/cateringProfilesEdit'),\n  'catering/admin/menusIndex': () =>\n    import('./actionSpecificSetup/catering/admin/menusIndex'),\n\n  'admin/archives': () => import('./actionSpecificSetup/admin/archives'),\n  'admin/inquiryRecipientsShow': () =>\n    import('./actionSpecificSetup/admin/inquiryRecipientsShow'),\n  'profiles/admin/venueProfilesEdit': () =>\n    import('./actionSpecificSetup/profiles/admin/venueProfilesEdit'),\n  'profiles/admin/venueProfilesIndex': () =>\n    import('./actionSpecificSetup/profiles/admin/venueProfilesIndex'),\n\n  'profiles/supplierProfilesEdit': () =>\n    import('./actionSpecificSetup/profiles/supplierProfilesEdit'),\n\n  'staff/imagesIndex': () => import('./actionSpecificSetup/staff/imagesIndex'),\n  'staff/prospectsIndex': () =>\n    import('./actionSpecificSetup/staff/prospectsIndex'),\n  'staff/invoicesNew': () => import('./actionSpecificSetup/staff/invoicesNew'),\n  'staff/organizationsEdit': () =>\n    import('./actionSpecificSetup/staff/organizationsEdit'),\n  'staff/landingPagesEdit': () =>\n    import('./actionSpecificSetup/staff/landingPagesEdit.js'),\n  'staff/siteManagement/locationGeoShapesNew': () =>\n    import(\n      './actionSpecificSetup/staff/siteManagement/locationGeoShapesEdit.js'\n    ),\n  'staff/siteManagement/locationGeoShapesEdit': () =>\n    import(\n      './actionSpecificSetup/staff/siteManagement/locationGeoShapesEdit.js'\n    ),\n  'users/registrationsEdit': () =>\n    import('./actionSpecificSetup/users/registrationsEdit')\n};\n\nexport default actionEntryPoints;\n","import 'boot/webpackPublicPath';\nimport 'boot/vendor';\nimport 'vendorized-fonts/font-awesome-v6-kit-f11102cc8a/font-awesome-v6-fonts.global.scss';\nimport 'boot/common/setMomentLocale';\nimport 'boot/common/exportReact';\n\nimport './globalSetup';\n\nimport './exposeComponents';\n\nimport { mountAllComponents } from 'boot/common/reactMount';\n$(document).ready(mountAllComponents);\n\nimport './hookActionSpecificSetup';\n\nimport i18nSetup from 'boot/common/i18nSetup';\ni18nSetup();\n","/**\n * Imports that used to come via Rails assets pipeline.\n *\n * We must use `require` to get the jQuery global registered before\n * loading scripts that rely on the global `jQuery` to be present\n */\nrequire('vendorJS/modernizr');\n\nconst jQuery = require('vendorJS/jquery');\nwindow.jQuery = jQuery;\nwindow.$ = jQuery;\n\nrequire('vendorJS/jquery_ujs');\nrequire('jquery.cookie');\nrequire('vendorJS/purl');\nrequire('vendorJS/waypoints');\nrequire('vendorJS/waypoints-sticky');\nrequire('vendorJS/cocoon');\n\nrequire('foundation-sites/js/foundation/foundation');\nrequire('foundation-sites/js/foundation/foundation.alert');\nrequire('foundation-sites/js/foundation/foundation.equalizer');\n// require('foundation-sites/js/foundation/foundation.clearing');\n// require('foundation-sites/js/foundation/foundation.cookie');\n// require('foundation-sites/js/foundation/foundation.dropdown');\n// require('foundation-sites/js/foundation/foundation.joyride');\nrequire('foundation-sites/js/foundation/foundation.magellan');\n// require('foundation-sites/js/foundation/foundation.orbit');\nrequire('foundation-sites/js/foundation/foundation.reveal');\nrequire('foundation-sites/js/foundation/foundation.tooltip');\nrequire('foundation-sites/js/foundation/foundation.topbar');\nrequire('foundation-sites/js/foundation/foundation.tab');\n// require('foundation-sites/js/foundation/foundation.interchange');\n// require('foundation-sites/js/foundation/foundation.placeholder');\nrequire('vendorJS/foundation.abide');\nrequire('vendorJS/foundation.topbar');\n","// https://webpack.js.org/configuration/output/#output-publicpath\n//\n// > In cases where the publicPath of output files can't be known at compile time, it can be\n// > left blank and set dynamically at runtime in the entry file using the free variable\n// > __webpack_public_path__\n\nimport { retrieve } from 'putki';\n\n// On server side, we set the public path as a global variable\n// instead of going through Putki as the value needs to be known\n// before Putki has been populated.\nif (typeof SERVER_RENDERER_PUBLIC_PATH === 'string') {\n  // eslint-disable-next-line no-undef, camelcase\n  __webpack_public_path__ = SERVER_RENDERER_PUBLIC_PATH;\n} else {\n  // On client side, though, we know the public path via Putki.\n\n  // eslint-disable-next-line no-undef, camelcase\n  __webpack_public_path__ = retrieve('webpack_public_path');\n}\n","// @flow\n\nimport * as React from 'react';\nimport classnames from 'classnames';\n\nimport styles from './Button.module.scss';\n\nexport type Props = {\n  children: React.Node,\n  className?: string,\n  type?: 'default' | 'success' | 'primary' | 'danger' | 'link' | 'text',\n  disabled?: boolean,\n  submit?: boolean,\n  onClick?: Event => mixed,\n  ...\n};\n\nexport default function Button(props: Props): React.Node {\n  const {\n    children,\n    onClick,\n    className,\n    type = 'default',\n    disabled = false,\n    submit,\n    ...otherProps\n  } = props;\n  const buttonClassName = classnames(className, styles[type]);\n\n  const handleClick = (e: Event) => {\n    if (onClick) {\n      e.preventDefault();\n      onClick(e);\n    }\n  };\n\n  return (\n    <button\n      {...otherProps}\n      type={submit ? 'submit' : 'button'}\n      onClick={handleClick}\n      className={buttonClassName}\n      tabIndex={props.disabled ? '-1' : '0'}\n      disabled={disabled}\n    >\n      {children}\n    </button>\n  );\n}\n","// @flow\n\n// This component is to be passed down as prop to\n// the HoneybadgerErrorBoundary component\n\nimport * as React from 'react';\nimport Button from 'common/components/Button';\nimport styles from './ErrorComponent.module.scss';\n\nexport default function ErrorComponent(): React.Node {\n  return (\n    <div>\n      <p className={styles.errorMessage}>{__('error.something_went_wrong')}</p>\n      <Button\n        onClick={() => {\n          window.location.reload();\n        }}\n        type=\"primary\"\n      >\n        {__('error.reload')}\n      </Button>\n    </div>\n  );\n}\n","// @flow\n\nimport type { JSONObject } from 'common/types';\n\nexport default function match<\n  Branches: { [string | boolean]: (JSONObject) => any, ... },\n  BranchValues: $Values<$ObjMap<Branches, <V>((any) => V) => V>>\n>(sentinelProperty: string, branches: Branches): JSONObject => BranchValues {\n  return (jsonObject: JSONObject): BranchValues => {\n    const type = jsonObject[sentinelProperty];\n    if (typeof type !== 'string' && typeof type !== 'boolean') {\n      throw new Error(\n        `Expected type of property \"${sentinelProperty}\" to be a string or boolean with value being one of [${Object.keys(\n          branches\n        ).join(\n          ', '\n        )}]. Received \"${sentinelProperty}\" typeof was: ${typeof type}.`\n      );\n    }\n    if (typeof branches[type] === 'undefined') {\n      throw new Error(\n        `Expected value of property \"${sentinelProperty}\" to be one of [${Object.keys(\n          branches\n        ).join(', ')}]. Received \"${sentinelProperty}\": ${String(type)}.`\n      );\n    }\n    return branches[type](jsonObject);\n  };\n}\n","// @flow\n\nimport type { JSONValue, JSONArray } from 'common/types';\nimport { failure } from 'common/json/extract';\n\nexport default function array<V>(extract: JSONArray => V): JSONValue => V {\n  return json => {\n    if (!Array.isArray(json)) {\n      return failure(\n        `Expecting an array, got ${\n          json === null ? 'null' : typeof json\n        } instead`,\n        () => extract([])\n      );\n    }\n    return extract(json);\n  };\n}\n","// @flow\n\nimport type { JSONValue, JSONArray } from 'common/types';\n\nexport default function items<V>(\n  extract: JSONValue => V\n): JSONArray => Array<V> {\n  return array => array.map(extract);\n}\n","// @flow\n\nimport type { JSONValue, JSONObject } from 'common/types';\nimport { failure } from 'common/json/extract';\n\nexport default function object<V>(extract: JSONObject => V): JSONValue => V {\n  return json => {\n    if (!json) {\n      return failure('Expecting an object, got a falsy value instead', () =>\n        extract({})\n      );\n    }\n    if (typeof json !== 'object') {\n      return failure(`Expecting an object, got ${typeof json} instead`, () =>\n        extract({})\n      );\n    }\n    if (Array.isArray(json)) {\n      return failure('Expecting an object, got an array instead', () =>\n        extract({})\n      );\n    }\n    return extract(json);\n  };\n}\n","// @flow\n\nimport type { JSONValue, JSONObject } from 'common/types';\n\nexport type ExtractValues<Shape: { ... }> = $ObjMap<\n  Shape,\n  <V>(extractor: (JSONValue) => V) => V\n>;\n\nexport default function record<Shape: { ... }>(\n  shape: Shape\n): JSONObject => ExtractValues<Shape> {\n  return (json: JSONObject) => {\n    return Object.keys(shape).reduce<{ [empty]: any }>((result, key) => {\n      result[key] = shape[key](json[key]);\n      return result;\n    }, {});\n  };\n}\n","// @flow\n\nimport type { JSONValue, JSONObject } from 'common/types';\n\ntype Map<K, V> = { [key: K]: V, ... };\ntype AnyObject = { +[key: string]: any, ... };\n\nexport default function map<K, V>(\n  extractKey: JSONValue => K,\n  extractValue: JSONValue => V\n): JSONObject => Map<K, V> {\n  return json =>\n    Object.keys((json: AnyObject)).reduce((m: Map<K, V>, key): Map<K, V> => {\n      m[extractKey(key)] = extractValue(json[key]);\n      return m;\n    }, {});\n}\n","// @flow\n\nimport type { JSONValue } from 'common/types';\n\nexport default function nullable<V>(\n  extract: JSONValue => V\n): JSONValue => V | null {\n  return json => {\n    if (json === null || typeof json === 'undefined') {\n      return null;\n    }\n    return extract(json);\n  };\n}\n","// @flow\n\nimport type { JSONValue } from 'common/types';\n\nexport default function withDefault<V>(\n  extract: JSONValue => V,\n  defaultValue: V\n): JSONValue => V {\n  return json => {\n    if (json === null || typeof json === 'undefined') {\n      return defaultValue;\n    }\n    return extract(json);\n  };\n}\n","// @flow\n\nimport type { JSONValue } from 'common/types';\nimport { failure } from 'common/json/extract';\n\nexport default function oneOf<Enum: JSONValue>(\n  values: Array<Enum> | $ReadOnlyArray<Enum>\n): JSONValue => Enum {\n  return (json: JSONValue) => {\n    const index = values.indexOf(json);\n    if (index !== -1) {\n      return values[index];\n    }\n    return failure(\n      `Expecting one of [${values.join(', ')}], got ${String(json)}`,\n      () => values[0]\n    );\n  };\n}\n","// @flow\n\nimport type { JSONValue } from 'common/types';\nimport { failure } from 'common/json/extract';\n\nexport default function <V>(value: V): JSONValue => V {\n  return (json: JSONValue) => {\n    if (json === value) {\n      return value;\n    }\n    return failure(\n      `Expecting specific value of type ${typeof value}, got another value of type ${typeof json}`,\n      () => value\n    );\n  };\n}\n","// @flow\n\nimport type { JSONValue } from 'common/types';\nimport { failure } from 'common/json/extract';\n\nconst decimal: JSONValue => number = (json: JSONValue) => {\n  if (typeof json === 'number') {\n    return json;\n  } else if (typeof json === 'string') {\n    return Number(json);\n  }\n  return failure(\n    `Expecting decimal (number or string), got ${\n      json === null ? 'null' : typeof json\n    }`,\n    () => Number(json)\n  );\n};\n\nexport default decimal;\n","// @flow\n\nimport type { JSONValue } from 'common/types';\nimport { failure } from 'common/json/extract';\n\nconst id: JSONValue => string = (json: JSONValue) => {\n  if (typeof json === 'string') {\n    return json;\n  } else if (typeof json === 'number') {\n    return String(json);\n  }\n  return failure(\n    `Expecting id (number or string), got ${\n      json === null ? 'null' : typeof json\n    }`,\n    () => String(json)\n  );\n};\n\nexport default id;\n","// @flow\n\nimport Honeybadger from '@honeybadger-io/js';\nimport type { JSONValue } from 'common/types';\n\nconst failureStack: Array<string> = [];\nlet usingFailureStack = false;\n// Wrap root-level extraction with this higher order function to get neat error\n// handling behavior\nexport function withFailureHandler<V>(extract: JSONValue => V): JSONValue => V {\n  return json => {\n    // Allow `failure` extractor to customize its logic based on whether the\n    // extraction has been wrapped with this function or not.\n    usingFailureStack = true;\n    try {\n      const returnValue = extract(json);\n      // Now `failureStack` should be populated if any errors happened when extracting.\n      //\n      // Do not handle this on the server side, though, as we get better error\n      // messages on browser side and debugging is also easier in the browser.\n      // Failures will be handled again when React mounts, and debugging extractor\n      // failures on browser-side is waaay easier than debugging an error\n      // raised when rendering a component on the server side.\n      if (failureStack.length > 0 && typeof document !== 'undefined') {\n        // Make a deep clone of the failure stack to ensure that the\n        // failureStack doesn't get modified from under us\n        const snapshotStack = JSON.parse(JSON.stringify(failureStack));\n\n        const error = new Error('Extraction error');\n\n        if (__DEV__) {\n          // Without the setTimeout, the console log can fail for some unknown reason\n          /* eslint-disable no-alert, no-console */\n          setTimeout(() => {\n            console.group('Extraction error');\n            console.error(snapshotStack.join('\\n* '), {\n              json\n            });\n            console.trace();\n            console.groupEnd();\n          }, 0);\n\n          alert('Extraction error! Check console for more information');\n          /* eslint-enable no-alert, no-console */\n        } else {\n          Honeybadger.notify(error, {\n            message: failureStack.join(', '),\n            context: { json }\n          });\n        }\n      }\n      return returnValue;\n    } catch (e) {\n      // Any errors that get here are result of real runtime errors, and we should\n      // not handle them.\n      throw e;\n    } finally {\n      // Reset the state regardless if there was an error or not\n      usingFailureStack = false;\n      failureStack.length = 0;\n    }\n  };\n}\n\nexport function failure<V>(errorMessage: string, fallback: () => V): V {\n  if (!usingFailureStack) {\n    // This situation means that the extraction pipeline for this particular case\n    // has not been wrapped with the failure handler function.\n    //\n    // In that case, handle the failures as before.\n    const error = new Error(errorMessage);\n    if (__DEV__) {\n      throw error;\n    } else {\n      Honeybadger.notify(error);\n      return fallback();\n    }\n  }\n  // This extraction pipeline has been wrapped with a failure handling pipeline.\n  // The failure handler will handle all errors received during extraction.\n  failureStack.push(errorMessage);\n  return fallback();\n}\n","// @flow\n\nimport type { JSONValue } from 'common/types';\nimport { failure } from 'common/json/extract';\n\nexport const boolean: JSONValue => boolean = (json: JSONValue) => {\n  if (typeof json === 'boolean') {\n    return json;\n  }\n  return failure(\n    `Expecting boolean, got ${json === null ? 'null' : typeof json}`,\n    () => Boolean(json)\n  );\n};\n\nexport const string: JSONValue => string = (json: JSONValue) => {\n  if (typeof json === 'string') {\n    return json;\n  }\n  return failure(\n    `Expecting string, got ${json === null ? 'null' : typeof json}`,\n    () => String(json)\n  );\n};\n\nexport const number: JSONValue => number = (json: JSONValue) => {\n  if (typeof json === 'number') {\n    return json;\n  }\n  return failure(\n    `Expecting number, got ${json === null ? 'null' : typeof json}`,\n    () => Number(json)\n  );\n};\n\nexport const mixed: JSONValue => mixed = (json: JSONValue) => {\n  return json;\n};\n","// @flow\n\nimport moment from 'moment';\n\nimport type { JSONValue } from 'common/types';\nimport { failure } from 'common/json/extract';\n\nexport opaque type DateString<DateFormat: string>: string = string;\n\nexport function dateString<DateFormat: string>(\n  format: DateFormat\n): JSONValue => DateString<DateFormat> {\n  return (json: JSONValue) => {\n    if (typeof json === 'string') {\n      if (moment.utc(json, format, true).isValid()) {\n        return json;\n      }\n      return failure(\n        `Expecting dateString (string with format ${format}), got a string \"${json}\"`,\n        () => String(json)\n      );\n    }\n    return failure(\n      `Expecting dateString (string with format ${format}), got ${\n        json === null ? 'null' : typeof json\n      }`,\n      () => String(json)\n    );\n  };\n}\n","// @flow\n\nimport type { JSONValue } from 'common/types';\nimport { type Locale, locales } from 'common/types/locale';\nimport { oneOf } from 'common/json/extract';\n\nexport const locale: JSONValue => Locale = oneOf(locales);\n","// @flow\n\nimport type { JSONValue } from 'common/types';\nimport { type Money, money } from 'common/types/money';\nimport { object, record, decimal, locale } from 'common/json/extract';\n\nconst extractValues = object(\n  record({\n    currency: locale,\n    amount: decimal\n  })\n);\n\nexport default function moneyExtract(json: JSONValue): Money {\n  const extractedMoney = extractValues(json);\n  return money(extractedMoney.currency, extractedMoney.amount);\n}\n","// @flow\n\nimport {\n  type Locale,\n  locales as webpackLocales\n} from 'railsRoot/config/webpack/availableLocales';\nexport type { Locale } from 'railsRoot/config/webpack/availableLocales';\nexport const locales: $ReadOnlyArray<Locale> = webpackLocales;\n\nexport opaque type Localizable<LocalizableValue> = {|\n  locale: Locale,\n  value: LocalizableValue\n|};\n\nexport opaque type Localized<LocalizedValue>: LocalizedValue = LocalizedValue;\n\nexport function localizable<Value>(\n  locale: Locale,\n  value: Value\n): Localizable<Value> {\n  return {\n    locale,\n    value\n  };\n}\n\nexport function localize<Input, Output>(\n  { locale, value }: Localizable<Input>,\n  f: (Locale, Input) => Output\n): Localized<Output> {\n  return f(locale, value);\n}\n","// @flow\nimport { formatPrice } from 'utils/currencyUtils';\n\nimport {\n  type Locale,\n  type Localizable,\n  type Localized,\n  localizable,\n  localize\n} from './locale';\n\nexport opaque type RawMoney: number = number;\n\nexport function rawMoney(n: number): RawMoney {\n  return n;\n}\n\nexport type Money = Localizable<RawMoney>;\n\nexport function money(currency: Locale, n: number): Money {\n  return localizable(currency, n);\n}\n\nexport opaque type FormattedMoney: string = Localized<string>;\n\nexport type FormatMoneyOptions = {|\n  alwaysShowDecimals?: boolean\n|};\nconst defaultFormatMoneyOptions: FormatMoneyOptions = Object.freeze({});\n\nexport function formatMoney(\n  fm: Money,\n  options?: FormatMoneyOptions = defaultFormatMoneyOptions\n): FormattedMoney {\n  return localize(fm, (locale, number) => {\n    // If the price is a round number, leave the decimals out\n    if (!options.alwaysShowDecimals && Number.isInteger(number)) {\n      return formatPrice(number, { precision: 0, locale: locale });\n    }\n    // Otherwise render with locale specific precision\n    return formatPrice(number, { locale: locale });\n  });\n}\n\nexport function isEqual(a: Money, b: Money): boolean {\n  return JSON.stringify(a) === JSON.stringify(b);\n}\n","// @flow\n\nimport type {\n  Site,\n  PartnerSupport,\n  SalesPerson,\n  Bounds,\n  EInvoiceOperator\n} from './types';\nimport type { JSONObject, JSONValue } from 'common/types';\nimport {\n  object,\n  record,\n  string,\n  number,\n  locale,\n  nullable,\n  array,\n  items\n} from 'common/json/extract';\n\ntype SitesJSON = { [key: string]: JSONObject, ... };\nconst sitesJSON: SitesJSON = require('railsRoot/config/sites.json');\n\nexport default function allSites(): Array<Site> {\n  return Object.keys(sitesJSON).map(key => {\n    return siteFromJSON(key, sitesJSON[key]);\n  });\n}\n\nconst extractPartnerSupport: JSONValue => PartnerSupport = object(\n  record({\n    mail: string,\n    phone: nullable(string)\n  })\n);\n\nconst extractSalesPerson: JSONValue => SalesPerson = object(\n  record({\n    team_mail: string,\n    first_name: string,\n    image: string,\n    mail: string,\n    name: string,\n    phone: nullable(string)\n  })\n);\n\nconst requiredBounds: JSONValue => Bounds = object(\n  record({\n    south: number,\n    west: number,\n    north: number,\n    east: number\n  })\n);\n\nconst eInvoiceOperator: JSONValue => EInvoiceOperator = object(\n  record({\n    name: string,\n    id: string\n  })\n);\n\nconst extractEInvoiceoperators: JSONValue => Array<EInvoiceOperator> = array(\n  items(eInvoiceOperator)\n);\n\nfunction siteFromJSON(key: string, json: JSONObject): Site {\n  return {\n    key: key,\n    locale: locale(json.locale),\n    baseDomain: requiredString(json.base_domain),\n    countryInPath: optionalString(json.country_in_path),\n    defaultOgImage: optionalString(json.default_og_image),\n    defaultSearchBounds: requiredBounds(json.default_search_bounds),\n    defaultMapCenter: requiredLocation(json.default_map_center),\n    iso31661Alpha2: optionalString(json.iso_3166_1_alpha_2),\n    iso31661Alpha3: optionalString(json.iso_3166_1_alpha_3),\n    profileTimeZone: requiredString(json.profile_time_zone),\n    partnerSupport: extractPartnerSupport(json.partner_support),\n    salesPerson: extractSalesPerson(json.sales_person),\n    eInvoiceOperators: extractEInvoiceoperators(json.e_invoice_operators)\n  };\n}\n\nfunction requiredString(maybeString: JSONValue): string {\n  if (typeof maybeString !== 'string') {\n    throw new Error(\n      `Expected string, got ${typeof maybeString}: ${String(maybeString)}`\n    );\n  }\n  return maybeString;\n}\n\nfunction optionalString(maybeString: JSONValue): string | null {\n  if (typeof maybeString !== 'string') {\n    return null;\n  }\n  return maybeString;\n}\n\nfunction requiredLocation(maybeLocation: JSONValue): [number, number] {\n  // $FlowFixMe[incompatible-return]\n  return maybeLocation;\n}\n","// @flow\n\nimport type { Site } from './types';\nimport allSites from './allSites';\nimport { retrieve } from 'putki';\n\nexport default function currentSite(): Site {\n  const sites = allSites();\n  const key = retrieve('current_site');\n\n  const site = sites.find(s => s.key === key);\n  return site || sites[0];\n}\n","// @flow\n\nimport { retrieve } from 'putki';\nimport $ from 'jquery';\n\nimport { type JSONObject } from 'common/types';\nimport currentSite from 'site/currentSite';\nimport { trackLink } from './analyticsModules/analyticsLinkTracking';\n\nfunction getSocialMedia(input: string) {\n  switch (false) {\n    case input.indexOf('facebook.com') === -1:\n      return 'Facebook';\n    case input.indexOf('t.co') === -1:\n      return 'Twitter';\n    case input.indexOf('twitter.com') === -1:\n      return 'Twitter';\n    default:\n      return null;\n  }\n}\n\n// Copied from Mixpanel JS source code\n// https://github.com/mixpanel/mixpanel-js/blob/8ac526e5cb8563d11e2206046ab986c6491ac6d7/src/utils.js#L1571-L1593\nfunction inferOperatingSystem() {\n  const a = navigator.userAgent;\n  if (/Windows/i.test(a)) {\n    if (/Phone/.test(a) || /WPDesktop/.test(a)) {\n      return 'Windows Phone';\n    }\n    return 'Windows';\n  } else if (/(iPhone|iPad|iPod)/.test(a)) {\n    return 'iOS';\n  } else if (/Android/.test(a)) {\n    return 'Android';\n  } else if (/(BlackBerry|PlayBook|BB10)/i.test(a)) {\n    return 'BlackBerry';\n  } else if (/Mac/i.test(a)) {\n    return 'Mac OS X';\n  } else if (/Linux/.test(a)) {\n    return 'Linux';\n  } else if (/CrOS/.test(a)) {\n    return 'Chrome OS';\n  } else {\n    return '';\n  }\n}\n\nfunction defaultProperties() {\n  const site = currentSite();\n  const controller = String(retrieve('controller'));\n  const action = String(retrieve('action'));\n  return {\n    Path: document.location.pathname,\n    'Social Media': getSocialMedia(window.document.referrer),\n    Locale: __LOCALE__,\n    'Site Key': site.key,\n    // Use specifically `category` to set \"Event Category\" in Google Analytics.\n    category: site.key,\n    // Use specifically `label` to set \"Event Label\" in Google Analytics.\n    label: __LOCALE__,\n    'Is Language Version Active': site.locale !== __LOCALE__,\n    'Action ID': `${controller}#${action}`,\n    $os: inferOperatingSystem()\n  };\n}\n\nfunction defaultContext() {\n  return {\n    locale: __LOCALE__\n  };\n}\n\nconst propertiesFromTrackedLink = (link: HTMLElement) => {\n  const $link = $(link);\n  const linkData = $link.data('venuu-t') || {};\n  return {\n    ...defaultProperties(),\n    ...linkData,\n    'Link Text': $link.text().trim(),\n    URL: $link.attr('href')\n  };\n};\n\nconst allHaveData = ($elements: any, dataKey: string) => {\n  return $elements\n    .map(function (this: HTMLElement) {\n      return $(this).data(dataKey);\n    })\n    .get()\n    .every(data => !!data);\n};\n\nexport function venueAnalyticsProps(): JSONObject {\n  const dataFromBackend = retrieve('analytics');\n  if (\n    dataFromBackend !== null &&\n    typeof dataFromBackend === 'object' &&\n    !Array.isArray(dataFromBackend)\n  ) {\n    return dataFromBackend;\n  }\n  return {};\n}\n\n/**\n * Tracks clicks on the given element/s.\n *\n * @throws TypeError if all elements do not have a proper data-venuu-t attribute\n * @throws TypeError if all elements do not have a proper data-venuu-t-name attribute\n */\nexport function trackClicksOn(elements: HTMLElement | Array<HTMLElement>) {\n  const $elements = $(elements);\n\n  if ($elements.length === 0) {\n    return;\n  }\n\n  if (!allHaveData($elements, 'venuu-t')) {\n    throw new TypeError(\n      'trackClicksOn requires all elements to have a \"venuu-t\" data attribute'\n    );\n  }\n\n  if (!allHaveData($elements, 'venuu-t-name')) {\n    throw new TypeError(\n      'trackClicksOn requires all elements to have a \"venuu-t-name\" data attribute'\n    );\n  }\n\n  trackLink(\n    (event, props) =>\n      new Promise((resolve, reject) => {\n        (window.jitsuQ = window.jitsuQ || []).push(jitsu => {\n          jitsu.track(event, props).then(resolve).catch(reject);\n        });\n      }),\n    elements,\n    link => $(link).data('venuu-t-name'),\n    propertiesFromTrackedLink\n  );\n}\n\n/**\n * Removes the click tracking from the given element.\n *\n * @param {HTMLElement} element - The element which has its clicks tracked\n */\nexport function untrackClicksOn(_element: HTMLElement) {\n  // TODO: Support untracking clicks for an element\n}\n\n/**\n * Remember update the server-side matchers (lib/tracking/actor_inference.rb)\n * if you make changes here.\n */\nexport function isBot(userAgent: string): boolean {\n  const BOT_MATCHERS = [\n    /google web preview/i,\n    /baiduspider/i,\n    /yahoo! slurp/i,\n    /rsiteauditor/i,\n    // This matches most currently known bots and likely future bots as well.\n    /bot/i\n  ];\n  return BOT_MATCHERS.some(matcher => {\n    return matcher.test(userAgent);\n  });\n}\n\n/**\n * Tracks a single event.\n *\n * This function also adds some default properties to the event for convenience.\n *\n * @param {String} eventName - The name of the event\n * @param {Object} properties - Extra properties associated with the event\n */\nexport function trackEvent(eventName: string, properties: Object = {}) {\n  if (isBot(navigator.userAgent)) return;\n\n  (window.jitsuQ = window.jitsuQ || []).push(jitsu => {\n    jitsu.track(\n      eventName,\n      {\n        ...defaultProperties(),\n        ...properties\n      },\n      defaultContext()\n    );\n  });\n}\n","// @flow\n\n// Originally copied from segmentio/analytics-next library (MIT licensed)\n// https://github.com/segmentio/analytics-next/blob/b7d8563e461fb5aac6a2e517a537e89bd0f9fa45/packages/core/src/callback/index.ts#L4C1-L17C2\nfunction pTimeout<T>(promise: Promise<T>, timeout: number): Promise<T> {\n  return new Promise((resolve, reject) => {\n    const timeoutId = setTimeout(() => {\n      reject(Error('Promise timed out'));\n    }, timeout);\n\n    promise\n      .then(val => {\n        clearTimeout(timeoutId);\n        return resolve(val);\n      })\n      .catch(reject);\n  });\n}\n\n// Originally copied from segmentio/analytics-next library (MIT licensed)\n// https://github.com/segmentio/analytics-next/blob/b7d8563e461fb5aac6a2e517a537e89bd0f9fa45/packages/browser/src/core/auto-track.ts#L5-L96\ntype JQueryShim = {\n  toArray(): Array<HTMLElement>,\n  ...\n};\n\ntype EventProperties = Record<string, any>;\n\nexport function trackLink(\n  track: (event: string, props: { ... }) => Promise<any>,\n  links: HTMLElement | Array<HTMLElement> | JQueryShim | null,\n  event: string | (HTMLElement => string),\n  properties: EventProperties | (HTMLElement => EventProperties)\n) {\n  let elements: Array<HTMLElement> = [];\n  if (!links) return;\n\n  // always arrays, handles jquery\n  if (links instanceof HTMLElement) {\n    elements = [links];\n  } else if (links instanceof Array) {\n    elements = links;\n  } else if ('toArray' in links) {\n    elements = links.toArray();\n  }\n\n  elements.forEach((el: HTMLElement) => {\n    el.addEventListener(\n      'click',\n      (elementEvent: Event) => {\n        const ev = typeof event === 'function' ? event(el) : event;\n        const props =\n          typeof properties === 'function' ? properties(el) : properties;\n        const href =\n          el.getAttribute('href') ||\n          el.getAttributeNS('http://www.w3.org/1999/xlink', 'href') ||\n          el.getAttribute('xlink:href') ||\n          // flowlint-next-line unnecessary-optional-chain:off\n          el.getElementsByTagName('a')[0]?.getAttribute('href');\n\n        const trackEvent = pTimeout(\n          track(ev, props),\n          // this.settings.timeout ?? 500\n          500\n        );\n\n        if (\n          !linkNewTab(\n            // $FlowIgnore[incompatible-cast] -- Cast is copied over from the original source code\n            (el: HTMLAnchorElement),\n            href\n          ) &&\n          !userNewTab(elementEvent)\n        ) {\n          if (href) {\n            elementEvent.preventDefault();\n            trackEvent\n              // eslint-disable-next-line no-console\n              .catch(console.error)\n              .then(() => {\n                window.location.href = href;\n              })\n              // eslint-disable-next-line no-console\n              .catch(console.error);\n          }\n        }\n      },\n      false\n    );\n  });\n}\n\n// Check if a user is opening the link in a new tab\nfunction userNewTab(event: Event): boolean {\n  const typedEvent: Event | KeyboardEvent | MouseEvent = event;\n  if (\n    typedEvent.ctrlKey ||\n    typedEvent.shiftKey ||\n    typedEvent.metaKey ||\n    // flowlint-next-line sketchy-number-and:off\n    (typedEvent.button && typedEvent.button === 1)\n  ) {\n    return true;\n  }\n  return false;\n}\n\n// Check if the link opens in new tab\nfunction linkNewTab(\n  element: HTMLAnchorElement,\n  href: string | null | void\n): boolean {\n  if (element.target === '_blank' && href) {\n    return true;\n  }\n  return false;\n}\n","// @flow\n\nimport accounting from 'accounting';\n\nexport function formatPrice(\n  number: string | number,\n  options: Object = {}\n): string {\n  const translatedOptions = {\n    precision: I18n.t('number.currency.format.precision', options),\n    thousand: I18n.t('number.currency.format.delimiter', options),\n    decimal: I18n.t('number.currency.format.separator', options),\n    format: I18n.t('number.currency.format.accounting.format', options),\n    symbol: I18n.t('number.currency.format.unit', options),\n    ...options\n  };\n  return accounting.formatMoney(number, translatedOptions);\n}\n","import Modernizr from 'modernizr';\n\nconst mediaTypesToMediaQueries = {\n  // Same as Foundation ones, plus middle added by Venuu\n  small: 'only screen',\n  middle: 'only screen and (min-width: 1024px)',\n  medium: 'only screen and (min-width: 40.063em)',\n  large: 'only screen and (min-width: 64.063em)',\n  xlarge: 'only screen and (min-width: 90.063em)',\n  xxlarge: 'only screen and (min-width: 120.063em)',\n  smallDevice: 'only screen and (min-device-width: 768px)',\n  topbar: 'only screen and (min-width: 48em)'\n};\n\nexport default function satisfiesMediaQuery(mediaType) {\n  if (typeof mediaType !== 'string') {\n    throw new TypeError('Media type was not a string');\n  }\n  const mediaQuery = mediaTypesToMediaQueries[mediaType];\n  if (!mediaQuery) {\n    throw new TypeError(`Unknown media type \"${mediaType}\"`);\n  }\n  return Modernizr.mq(mediaQuery);\n}\n","// @flow\n\nimport type { JSONValue } from 'common/types';\n\nexport function retrieve(identifier: string): JSONValue {\n  const value = base()[identifier];\n\n  if (typeof value === 'undefined') {\n    return null;\n  }\n  return value;\n}\n\nfunction base() {\n  return (window && window.Putki) || {};\n}\n","/**\n * what-input - A global utility for tracking the current input method (mouse, keyboard or touch).\n * @version v3.0.0\n * @link https://github.com/ten1seven/what-input\n * @license MIT\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(\"whatInput\", [], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"whatInput\"] = factory();\n\telse\n\t\troot[\"whatInput\"] = factory();\n})(this, function() {\nreturn /******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId])\n/******/ \t\t\treturn installedModules[moduleId].exports;\n\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\texports: {},\n/******/ \t\t\tid: moduleId,\n/******/ \t\t\tloaded: false\n/******/ \t\t};\n\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.loaded = true;\n\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n\n\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(0);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ function(module, exports) {\n\n\tmodule.exports = (function() {\n\n\t  'use strict';\n\n\t  /*\n\t    ---------------\n\t    variables\n\t    ---------------\n\t  */\n\n\t  // array of actively pressed keys\n\t  var activeKeys = [];\n\n\t  // cache document.body\n\t  var body;\n\n\t  // boolean: true if touch buffer timer is running\n\t  var buffer = false;\n\n\t  // the last used input type\n\t  var currentInput = null;\n\n\t  // form input types\n\t  var formInputs = [\n\t    'button',\n\t    'input',\n\t    'select',\n\t    'textarea'\n\t  ];\n\n\t  // detect version of mouse wheel event to use\n\t  // via https://developer.mozilla.org/en-US/docs/Web/Events/wheel\n\t  var mouseWheel = detectWheel();\n\n\t  // list of modifier keys commonly used with the mouse and\n\t  // can be safely ignored to prevent false keyboard detection\n\t  var ignoreMap = [\n\t    16, // shift\n\t    17, // control\n\t    18, // alt\n\t    91, // Windows key / left Apple cmd\n\t    93  // Windows menu / right Apple cmd\n\t  ];\n\n\t  // mapping of events to input types\n\t  var inputMap = {\n\t    'keydown': 'keyboard',\n\t    'keyup': 'keyboard',\n\t    'mousedown': 'mouse',\n\t    'mousemove': 'mouse',\n\t    'MSPointerDown': 'pointer',\n\t    'MSPointerMove': 'pointer',\n\t    'pointerdown': 'pointer',\n\t    'pointermove': 'pointer',\n\t    'touchstart': 'touch'\n\t  };\n\n\t  // add correct mouse wheel event mapping to `inputMap`\n\t  inputMap[detectWheel()] = 'mouse';\n\n\t  // array of all used input types\n\t  var inputTypes = [];\n\n\t  // mapping of key codes to a common name\n\t  var keyMap = {\n\t    9: 'tab',\n\t    13: 'enter',\n\t    16: 'shift',\n\t    27: 'esc',\n\t    32: 'space',\n\t    37: 'left',\n\t    38: 'up',\n\t    39: 'right',\n\t    40: 'down'\n\t  };\n\n\t  // map of IE 10 pointer events\n\t  var pointerMap = {\n\t    2: 'touch',\n\t    3: 'touch', // treat pen like touch\n\t    4: 'mouse'\n\t  };\n\n\t  // touch buffer timer\n\t  var timer;\n\n\n\t  /*\n\t    ---------------\n\t    functions\n\t    ---------------\n\t  */\n\n\t  // allows events that are also triggered to be filtered out for `touchstart`\n\t  function eventBuffer(event) {\n\t    clearTimer();\n\t    setInput(event);\n\n\t    buffer = true;\n\t    timer = window.setTimeout(function() {\n\t      buffer = false;\n\t    }, 650);\n\t  }\n\n\t  function bufferedEvent(event) {\n\t    if (!buffer) setInput(event);\n\t  }\n\n\t  function clearTimer() {\n\t    window.clearTimeout(timer);\n\t  }\n\n\t  function setInput(event) {\n\t    var eventKey = key(event);\n\t    var value = inputMap[event.type];\n\t    if (value === 'pointer') value = pointerType(event);\n\n\t    // don't do anything if the value matches the input type already set\n\t    if (currentInput !== value) {\n\t      var activeElement = document.activeElement.nodeName.toLowerCase();\n\n\t      if (\n\t        (\n\t          // only if the user flag to allow input switching\n\t          // while interacting with form fields isn't set\n\t          !body.hasAttribute('data-whatinput-formswitching') &&\n\n\t          // support for legacy keyword\n\t          !body.hasAttribute('data-whatinput-formtyping') &&\n\n\t          // only if currentInput has a value\n\t          currentInput &&\n\n\t          formInputs.indexOf(activeElement) > -1\n\t        ) || (\n\t          // ignore modifier keys\n\t          ignoreMap.indexOf(eventKey) > -1\n\t        )\n\t      ) {\n\t        // ignore keyboard typing and do nothing\n\t      } else {\n\t        switchInput(value);\n\t      }\n\t    }\n\n\t    if (value === 'keyboard') logKeys(eventKey);\n\t  }\n\n\t  function switchInput(string) {\n\t    currentInput = string;\n\t    body.setAttribute('data-whatinput', currentInput);\n\n\t    if (inputTypes.indexOf(currentInput) === -1) inputTypes.push(currentInput);\n\t  }\n\n\t  function key(event) {\n\t    return (event.keyCode) ? event.keyCode : event.which;\n\t  }\n\n\t  function target(event) {\n\t    return event.target || event.srcElement;\n\t  }\n\n\t  function pointerType(event) {\n\t    if (typeof event.pointerType === 'number') {\n\t      return pointerMap[event.pointerType];\n\t    } else {\n\t      return (event.pointerType === 'pen') ? 'touch' : event.pointerType; // treat pen like touch\n\t    }\n\t  }\n\n\t  // keyboard logging\n\t  function logKeys(eventKey) {\n\t    if (activeKeys.indexOf(keyMap[eventKey]) === -1 && keyMap[eventKey]) activeKeys.push(keyMap[eventKey]);\n\t  }\n\n\t  function unLogKeys(event) {\n\t    var eventKey = key(event);\n\t    var arrayPos = activeKeys.indexOf(keyMap[eventKey]);\n\n\t    if (arrayPos !== -1) activeKeys.splice(arrayPos, 1);\n\t  }\n\n\t  function bindEvents() {\n\t    body = document.body;\n\n\t    // pointer events (mouse, pen, touch)\n\t    if (window.PointerEvent) {\n\t      body.addEventListener('pointerdown', bufferedEvent);\n\t      body.addEventListener('pointermove', bufferedEvent);\n\t    } else if (window.MSPointerEvent) {\n\t      body.addEventListener('MSPointerDown', bufferedEvent);\n\t      body.addEventListener('MSPointerMove', bufferedEvent);\n\t    } else {\n\n\t      // mouse events\n\t      body.addEventListener('mousedown', bufferedEvent);\n\t      body.addEventListener('mousemove', bufferedEvent);\n\n\t      // touch events\n\t      if ('ontouchstart' in window) {\n\t        body.addEventListener('touchstart', eventBuffer);\n\t      }\n\t    }\n\n\t    // mouse wheel\n\t    body.addEventListener(mouseWheel, bufferedEvent);\n\n\t    // keyboard events\n\t    body.addEventListener('keydown', eventBuffer);\n\t    body.addEventListener('keyup', eventBuffer);\n\t    document.addEventListener('keyup', unLogKeys);\n\t  }\n\n\n\t  /*\n\t    ---------------\n\t    utilities\n\t    ---------------\n\t  */\n\n\t  // detect version of mouse wheel event to use\n\t  // via https://developer.mozilla.org/en-US/docs/Web/Events/wheel\n\t  function detectWheel() {\n\t    return mouseWheel = 'onwheel' in document.createElement('div') ?\n\t      'wheel' : // Modern browsers support \"wheel\"\n\n\t      document.onmousewheel !== undefined ?\n\t        'mousewheel' : // Webkit and IE support at least \"mousewheel\"\n\t        'DOMMouseScroll'; // let's assume that remaining browsers are older Firefox\n\t  }\n\n\n\t  /*\n\t    ---------------\n\t    init\n\n\t    don't start script unless browser cuts the mustard,\n\t    also passes if polyfills are used\n\t    ---------------\n\t  */\n\n\t  if (\n\t    'addEventListener' in window &&\n\t    Array.prototype.indexOf\n\t  ) {\n\n\t    // if the dom is already ready already (script was placed at bottom of <body>)\n\t    if (document.body) {\n\t      bindEvents();\n\n\t    // otherwise wait for the dom to load (script was placed in the <head>)\n\t    } else {\n\t      document.addEventListener('DOMContentLoaded', bindEvents);\n\t    }\n\t  }\n\n\n\t  /*\n\t    ---------------\n\t    api\n\t    ---------------\n\t  */\n\n\t  return {\n\n\t    // returns string: the current input type\n\t    ask: function() { return currentInput; },\n\n\t    // returns array: currently pressed keys\n\t    keys: function() { return activeKeys; },\n\n\t    // returns array: all the detected input types\n\t    types: function() { return inputTypes; },\n\n\t    // accepts string: manually set the input type\n\t    set: switchInput\n\t  };\n\n\t}());\n\n\n/***/ }\n/******/ ])\n});\n;","module.exports = Modernizr;","module.exports = jQuery;","/*!\n\tCopyright (c) 2018 Jed Watson.\n\tLicensed under the MIT License (MIT), see\n\thttp://jedwatson.github.io/classnames\n*/\n/* global define */\n\n(function () {\n\t'use strict';\n\n\tvar hasOwn = {}.hasOwnProperty;\n\n\tfunction classNames () {\n\t\tvar classes = '';\n\n\t\tfor (var i = 0; i < arguments.length; i++) {\n\t\t\tvar arg = arguments[i];\n\t\t\tif (arg) {\n\t\t\t\tclasses = appendClass(classes, parseValue(arg));\n\t\t\t}\n\t\t}\n\n\t\treturn classes;\n\t}\n\n\tfunction parseValue (arg) {\n\t\tif (typeof arg === 'string' || typeof arg === 'number') {\n\t\t\treturn arg;\n\t\t}\n\n\t\tif (typeof arg !== 'object') {\n\t\t\treturn '';\n\t\t}\n\n\t\tif (Array.isArray(arg)) {\n\t\t\treturn classNames.apply(null, arg);\n\t\t}\n\n\t\tif (arg.toString !== Object.prototype.toString && !arg.toString.toString().includes('[native code]')) {\n\t\t\treturn arg.toString();\n\t\t}\n\n\t\tvar classes = '';\n\n\t\tfor (var key in arg) {\n\t\t\tif (hasOwn.call(arg, key) && arg[key]) {\n\t\t\t\tclasses = appendClass(classes, key);\n\t\t\t}\n\t\t}\n\n\t\treturn classes;\n\t}\n\n\tfunction appendClass (value, newClass) {\n\t\tif (!newClass) {\n\t\t\treturn value;\n\t\t}\n\t\n\t\tif (value) {\n\t\t\treturn value + ' ' + newClass;\n\t\t}\n\t\n\t\treturn value + newClass;\n\t}\n\n\tif (typeof module !== 'undefined' && module.exports) {\n\t\tclassNames.default = classNames;\n\t\tmodule.exports = classNames;\n\t} else if (typeof define === 'function' && typeof define.amd === 'object' && define.amd) {\n\t\t// register as 'classnames', consistent with npm package name\n\t\tdefine('classnames', [], function () {\n\t\t\treturn classNames;\n\t\t});\n\t} else {\n\t\twindow.classNames = classNames;\n\t}\n}());\n"],"names":["module","exports","factory","__createBinding","__setModuleDefault","__exportStar","__importStar","__importDefault","events_1","extendStatics","__extends","__assign","__awaiter","__generator","onunhandledrejection_1","breadcrumbs_1","timers_1","event_listeners_1","merge","filter","objectIsExtensible","globalThisOrWindow","getProjectRoot","Honeybadger","NOTIFIER","userAgent","singleton","currentTimeout","commonjsGlobal","globalThis","window","g","self","getAugmentedNamespace","n","f","default","a","apply","arguments","prototype","Object","defineProperty","value","keys","forEach","k","d","getOwnPropertyDescriptor","get","enumerable","browser$1","src","events","util$1","UNKNOWN_FUNCTION","chromeRe","chromeEvalRe","winjsRe","geckoRe","geckoEvalRe","javaScriptCoreRe","nodeRe","require$$0$1","freeze","__proto__","parse","stackString","lines","split","reduce","stack","line","parts","parseResult","parseChrome","exec","isNative","indexOf","isEval","submatch","file","methodName","lineNumber","column","parseGecko","push","create","o","m","k2","undefined","desc","__esModule","writable","configurable","v","mod","result","hasOwnProperty","call","thisArg","_arguments","P","generator","Promise","resolve","reject","fulfilled","step","next","e","rejected","done","adopt","then","body","y","t","_","label","sent","trys","ops","verb","Symbol","iterator","op","pop","length","logDeprecatedMethod","isBrowserConfig","clone","formatCGIData","filterUrl","generateStackTrace","endpoint","instrumentConsole","instrument","isErrorObject","makeNotice","logger","sanitize","shallowClone","runAfterNotifyHandlers","runBeforeNotifyHandlers","getSourceForBacktrace","getCauses","calculateBacktraceShift","DEFAULT_BACKTRACE_SHIFT","makeBacktrace","objectIsEmpty","mergeNotice","stackTraceParser","obj1","obj2","filterHbSourceCode","console","backtrace","map","method","number","splice","err","debug","isFrameFromHbSourceCode","frame","hasHbFile","hasHbMethod","toLowerCase","shift","i","nextFrame","obj","thing","Error","toString","object","name","replacement","original","__hb_original","_e","notice1","notice2","context","isExtensible","notice","cause","causes","class","message","getSourceFileHandler","index","trace","fileContent","_a","getSourceCodeSnippet","fileData","columnNumber","sourceRadius","getThresholdExceededSnippet","unshift","targetLine","start","end","handlers","results","len","handlerResult","handler","error","afterNotify","maxDepth","seenObjects","safeSerialize","depth","typeOfObj","test","seen","Array","isArray","ret","concat","client","log","args","_i","config","info","warn","String","_consoleAlreadyInstrumented","listeners","filterMatch","key","filters","is","type","klass","slice","_window","level","listener","Function","base","path","trim","replace","curr","callee","RegExp","$1","caller","join","newObj","url","query","pair","vars","prefix","formattedVars","toUpperCase","JSON","stringify","async","_deprecatedMethodCalls","oldMethod","newMethod","callCountThreshold","msg","util_1$4","shouldReloadOnConfigure","load","sendEventsToInsights","eventsEnabled","data","severity","event","store","GlobalStore","contents","breadcrumbsLimit","available","getContents","setContext","util_1$3","addBreadcrumb","breadcrumb","breadcrumbs","clear","run","callback","throttled_events_logger","require$$0","NdJson","item","defaults","CONFIG","apiKey","appEndpoint","environment","hostname","projectRoot","component","action","revision","reportData","breadcrumbsEnabled","maxBreadcrumbs","maxObjectDepth","developmentEnvironments","tags","enableUncaught","enableUnhandledRejection","afterUncaught","__plugins","__assign$2","assign","s","p","__awaiter$2","__generator$2","ThrottledEventsLogger","transport","queue","isProcessing","defaults_1$1","originalLogger","configure","opts","payload","processQueue","flushAsync","send","_this","setTimeout","catch","eventsData","json_nd_1","makeHttpRequest","headers","util_1$2","_b","_c","_d","__assign$1","__awaiter$1","__generator$1","Client","TAG_SEPARATOR","NOT_BLANK","__pluginsLoaded","__store","__beforeNotifyHandlers","__afterNotifyHandlers","__notifier","version","defaults_1","__initStore","__transport","__eventsLogger","throttled_events_logger_1","util_1$1","getVersion","getNotifier","setNotifier","notifier","loadPlugins","pluginsToLoad","plugin","store_1","beforeNotify","resetContext","notify","noticeable","extra","sourceCodeData","preConditionsResult","__runPreconditions","__send","_err","notifyAsync","partialNotice","originalAfterNotify","noticeTags","__constructTags","contextTags","configTags","uniqueTags","metadata","category","timestamp","Date","toISOString","logEvent","event_type","ts","__getBreadcrumbs","__getContext","__developmentMode","includes","__buildPayload","cgiData","enabled","trail","__breadcrumbs","fingerprint","request","cgi_data","params","session","server","project_root","environment_name","time","toUTCString","details","tag","preConditionError","beforeNotifyResult","some","allSettled","status","originalBacktrace","__getSourceFileHandler","sourcePerTrace","source","res","statusCode","uuid","id","noticeUrl","types","Plugins","Defaults","Util","Types","client_1","util","preferCatch","encodeCookie","decodeCookie","localURLPathname","parseURL","nativeFetch","stringTextOfElement","stringSelectorOfElement","stringNameOfElement","globalThisOrWindow$7","core_1$7","element","tagName","stringClassNames","getAttribute","className","attrName","attr","siblings","getSiblings","nodes","parentNode","childNodes","siblings_1","node","func","match","protocol","host","pathname","parentName","string","text","textContent","innerText","substr","global","fetch","document","sandbox","createElement","style","display","head","appendChild","contentWindow","removeChild","parsed","parsedDocURL","URL","cookies","atob","ErrorEvent","colno","onerror","onError","ignoreNextOnError","instrument$4","core_1$6","globalThisOrWindow$6","ignoreOnError","clearTimeout","col","onunhandledrejection","instrument$3","core_1$5","globalThisOrWindow$5","promiseRejectionEvent","reason","stackFallback","sanitize$1","core_1$4","instrument$2","globalThisOrWindow$4","addEventListener","selector","util_1","target","location","XMLHttpRequest","rawUrl","__hb_xhr","xhr","onreadystatechangeHandler","readyState","status_code","onreadystatechange","input","Request","response","lastHref","href","_event","recordUrlChange","history","historyWrapper","from","to","timers","instrument$1","core_1$3","globalThisOrWindow$3","instrumentTimer","wrapOpts","delay","args_1","__wrap","event_listeners","core_1$2","globalThisOrWindow$2","targets","prop","useCapture","wantsUntrusted","handleEvent","BrowserTransport","core_1$1","globalThisOrWindow$1","defaultHeaders","options","headerArray","requestInit","entries","feedbackForm","BrowserFeedbackForm","core_1","scriptUrl","appendUserFeedbackTag","script","setAttribute","onLoad","onload","isUserFeedbackUrlAlreadyVisible","feedbackScriptUrl","scripts","show","lastNoticeId","userFeedbackEndpoint","noticeId","b","setPrototypeOf","__","getUserFeedbackScriptUrl","majorMinorVersion","_super","maxErrors","transport_1","__errorsSent","__lastWrapErr","__lastNoticeId","__exceedsMaxErrors","__incrementErrorsCount","_error","resetMaxErrors","checkIn","_id","showUserFeedbackForm","form","feedback_form_1","getUserFeedbackSubmitUrl","cookiesObject","HTTP_USER_AGENT","HTTP_REFERER","HTTP_COOKIE","navigator","referrer","___hb","onerror_1","core_2","x","DefaultErrorComponent","HoneybadgerErrorBoundary","Component","props","state","errorOccurred","getDerivedStateFromError","componentDidMount","honeybadger","_notice","showUserFeedbackFormOnError","componentDidCatch","errorInfo","setState","getErrorComponent","ErrorComponent","render","children","defaultProps","lib","settings","currency","symbol","format","decimal","thousand","precision","grouping","nativeMap","nativeIsArray","isString","charCodeAt","isObject","defs","j","checkPrecision","val","isNaN","Math","round","abs","checkCurrencyFormat","pos","neg","zero","unformat","regex","unformatted","parseFloat","toFixed","power","pow","formatNumber","usePrecision","negative","parseInt","formatMoney","formats","useFormat","formatColumn","list","padAfterSymbol","maxLength","formatted","fVal","accounting","root","I18n","padding","isFunction","isSet","lazyEvaluate","scope","dest","DATE","day_names","abbr_day_names","month_names","abbr_month_names","meridian","NUMBER_FORMAT","separator","delimiter","strip_insignificant_zeros","CURRENCY_FORMAT","unit","sign_first","PERCENTAGE_FORMAT","SIZE_UNITS","DEFAULT_OPTIONS","defaultLocale","locale","defaultSeparator","placeholder","fallbacks","translations","missingBehaviour","missingTranslationPrefix","reset","initializeOptions","locales","localeParts","firstFallback","secondFallback","nullableFallbackLocale","pluralization","count","currentLocale","lookup","scopes","fullScope","getFullScope","defaultValue","pluralizationLookupWithoutFallback","pluralizerKey","pluralizerKeys","pluralizer","pluralizationLookup","date","am","pm","prepareOptions","subject","createTranslationOptions","translationOptions","translate","translation","usedScope","optionsWithoutDefault","translationOption","interpolate","pluralize","missingTranslation","matches","nullPlaceholder","missingPlaceholder","p1","p2","toNumber","exp","formattedNumber","NaN","buffer","max","toCurrency","localize","toPercentage","localizedValue","toTime","parseDate","convertedDate","fraction","UTC","setTime","$2","$3","$6","$4","$5","strftime","meridianOptions","getTime","weekDay","getDay","day","getDate","year","getFullYear","month","getMonth","hour","getHours","hour12","secs","getSeconds","mins","getMinutes","offset","getTimezoneOffset","absOffsetHours","floor","absOffsetMinutes","timezoneoffset","dateString","date_string","toHumanSize","size","iterations","extend","bind","l","$","pluses","encode","raw","encodeURIComponent","read","converter","parseCookieValue","decodeURIComponent","json","cookie","expires","days","domain","secure","removeCookie","moment","defineLocale","months","monthsShort","weekdays","weekdaysShort","weekdaysMin","longDateFormat","LT","LTS","L","LL","LLL","LLLL","calendar","sameDay","nextDay","nextWeek","lastDay","lastWeek","sameElse","relativeTime","future","past","ss","mm","h","hh","dd","M","MM","yy","dayOfMonthOrdinalParse","ordinal","week","dow","doy","hooks","hookCallback","hasOwnProp","isObjectEmpty","getOwnPropertyNames","isUndefined","isNumber","isDate","arr","fn","arrLen","valueOf","createUTC","strict","createLocalOrUTC","utc","getParsingFlags","_pf","empty","unusedTokens","unusedInput","overflow","charsLeftOver","nullInput","invalidEra","invalidMonth","invalidFormat","userInvalidated","iso","parsedDateParts","era","meridiem","rfc2822","weekdayMismatch","isValid","_isValid","flags","parsedParts","isNowValid","invalidWeekday","_strict","bigHour","isFrozen","createInvalid","fun","token","getSetMillisecond","momentProperties","updateInProgress","copyConfig","momentPropertiesLen","_isAMomentObject","_f","_l","_tzm","_isUTC","_offset","_locale","Moment","updateOffset","isMoment","suppressDeprecationWarnings","deprecate","firstTime","deprecationHandler","arg","argLen","deprecations","deprecateSimple","mergeConfigs","parentConfig","childConfig","Locale","set","zeroFill","targetLength","forceSign","absNumber","sign","formattingTokens","localFormattingTokens","formatFunctions","formatTokenFunctions","addFormatToken","padded","localeData","formatMoment","expandFormat","makeFormatFunction","array","mom","output","invalidDate","replaceLongDateFormatTokens","lastIndex","aliases","addUnitAlias","shorthand","lowerCase","normalizeUnits","units","normalizeObjectUnits","inputObject","normalizedProp","normalizedInput","priorities","isLeapYear","absFloor","ceil","toInt","argumentForCoercion","coercedNumber","isFinite","makeGetSet","keepTime","set$1","daysInMonth","regexes","match1","match2","match3","match4","match6","match1to2","match3to4","match5to6","match1to3","match1to4","match1to6","matchUnsigned","matchSigned","matchOffset","matchShortOffset","matchWord","addRegexToken","strictRegex","isStrict","regexEscape","tokens","addParseToken","tokenLen","addWeekParseToken","_w","modMonth","monthsShortRegex","monthsRegex","monthsParse","defaultLocaleMonthsShort","MONTHS_IN_FORMAT","handleStrictParse","monthName","ii","llc","toLocaleLowerCase","_monthsParse","_longMonthsParse","_shortMonthsParse","setMonth","dayOfMonth","min","getSetMonth","computeMonthsParse","cmpLenRev","shortPieces","longPieces","mixedPieces","sort","_monthsRegex","_monthsShortRegex","_monthsStrictRegex","_monthsShortStrictRegex","daysInYear","parseTwoDigitYear","getSetYear","createDate","ms","setFullYear","createUTCDate","getUTCFullYear","setUTCFullYear","firstWeekOffset","fwd","getUTCDay","dayOfYearFromWeeks","weekday","resYear","resDayOfYear","dayOfYear","weekOfYear","resWeek","weekOffset","weeksInYear","weekOffsetNext","shiftWeekdays","ws","weekdaysMinRegex","weekdaysShortRegex","weekdaysRegex","weekdaysParse","defaultLocaleWeekdaysShort","handleStrictParse$1","weekdayName","_weekdaysParse","_shortWeekdaysParse","_minWeekdaysParse","computeWeekdaysParse","minp","shortp","longp","minPieces","_weekdaysRegex","_weekdaysShortRegex","_weekdaysMinRegex","_weekdaysStrictRegex","_weekdaysShortStrictRegex","_weekdaysMinStrictRegex","hFormat","hours","lowercase","minutes","matchMeridiem","_meridiemParse","seconds","kInput","_isPm","isPM","_meridiem","pos1","pos2","globalLocale","getSetHour","baseConfig","w","ww","meridiemParse","localeFamilies","normalizeLocale","loadLocale","_abbr","getSetGlobalLocale","values","getLocale","abbr","_config","parentLocale","chooseLocale","names","commonPrefix","arr1","arr2","minl","checkOverflow","_overflowDayOfYear","_overflowWeeks","_overflowWeekday","extendedIsoRegex","basicIsoRegex","tzRegex","isoDates","isoTimes","aspNetJsonRegex","obsOffsets","UT","GMT","EDT","EST","CDT","CST","MDT","MST","PDT","PST","configFromISO","allowTime","dateFormat","timeFormat","tzFormat","isoDatesLen","isoTimesLen","configFromStringAndFormat","configFromRFC2822","weekdayStr","parsedInput","yearStr","monthStr","dayStr","hourStr","minuteStr","secondStr","weekdayProvided","calculateOffset","obsOffset","militaryOffset","numOffset","hm","setUTCMinutes","getUTCMinutes","c","configFromArray","weekYear","temp","weekdayOverflow","curWeek","nowValue","currentDate","expectedWeekday","yearToUse","now","_useUTC","getUTCMonth","getUTCDate","GG","W","E","createLocal","_week","gg","_dayOfYear","_nextDay","ISO_8601","RFC_2822","isPm","skipped","stringLength","totalParsedInputLength","matched","p3","p4","meridiemHour","erasConvertYear","prepareConfig","preparse","configFromStringAndArray","tempConfig","bestMoment","scoreToBeat","currentScore","validFormatFound","bestFormatIsValid","configfLen","score","configFromInput","configFromString","createFromInputFallback","dayOrDate","minute","second","millisecond","isUTC","add","prototypeMin","other","prototypeMax","pickBy","moments","ordering","Duration","duration","years","quarters","quarter","weeks","isoWeek","milliseconds","isDurationValid","unitHasDecimal","orderLen","_milliseconds","_days","_months","_data","_bubble","isDuration","absRound","utcOffset","offsetFromString","chunkOffset","matcher","chunk","cloneWithOffset","model","diff","local","getDateOffset","isUtc","aspNetRegex","isoRegex","createDuration","diffRes","parseIso","isBefore","positiveMomentsDifference","inp","isAfter","createAdder","direction","period","tmp","addSubtract","isAdding","invalid","subtract","monthDiff","adjust","wholeMonthDiff","anchor","anchor2","newLocaleData","defaultFormat","defaultFormatUtc","lang","localStartOfDate","utcStartOfDate","matchEraAbbr","erasAbbrRegex","computeErasParse","abbrPieces","namePieces","narrowPieces","eras","narrow","_erasRegex","_erasNameRegex","_erasAbbrRegex","_erasNarrowRegex","addWeekYearFormatToken","getter","getSetWeekYearHelper","weeksTarget","setWeekAll","dayOfYearData","erasNameRegex","erasNarrowRegex","erasParse","_eraYearOrdinalRegex","eraYearOrdinalParse","isoWeekYear","_dayOfMonthOrdinalParse","_ordinalParse","_dayOfMonthOrdinalParseLenient","getSetDayOfMonth","getSetMinute","getSetSecond","parseMs","proto","preParsePostFormat","arrayTest","dataTypeTest","isMomentInputObject","property","objectTest","propertyTest","properties","propertyLen","isCalendarSpec","sod","startOf","calendarFormat","asFloat","that","zoneDelta","endOf","startOfDate","isoWeekday","MS_PER_HOUR","MS_PER_MINUTE","MS_PER_SECOND","inputString","postformat","withoutSuffix","humanize","fromNow","toNow","invalidAt","localInput","isBetween","inclusivity","localFrom","localTo","isSame","inputMs","isSameOrAfter","isSameOrBefore","parsingFlags","prioritized","getPrioritizedUnits","unitsObj","u","priority","prioritizedLen","toArray","toObject","toDate","keepOffset","inspect","suffix","zone","isLocal","for","toJSON","unix","creationData","eraName","since","until","eraNarrow","eraAbbr","eraYear","dir","isoWeeks","weekInfo","weeksInWeekYear","isoWeeksInYear","isoWeeksInISOWeekYear","keepLocalTime","keepMinutes","localAdjust","_changeInProgress","parseZone","tZone","hasAlignedHourOffset","isDST","isUtcOffset","zoneAbbr","zoneName","dates","isDSTShifted","_isDSTShifted","compareArrays","array1","array2","lengthDiff","diffs","proto$1","get$1","field","setter","listMonthsImpl","out","listWeekdaysImpl","localeSorted","_calendar","_longDateFormat","formatUpper","tok","_invalidDate","_ordinal","isFuture","_relativeTime","pastFuture","_eras","isFormat","_monthsShort","_monthsParseExact","firstDayOfYear","firstDayOfWeek","_weekdays","_weekdaysMin","_weekdaysShort","_weekdaysParseExact","_fullWeekdaysParse","charAt","isLower","Infinity","langData","mathAbs","addSubtract$1","absCeil","daysToMonths","monthsToDays","makeAs","alias","as","asMilliseconds","asSeconds","asMinutes","asHours","asDays","asWeeks","asMonths","asQuarters","asYears","makeGetter","thresholds","substituteTimeAgo","abs$1","toISOString$1","totalSign","ymSign","daysSign","hmsSign","total","proto$2","monthsFromDays","argWithSuffix","argThresholds","withSuffix","th","toIsoString","updateLocale","tmpLocale","relativeTimeRounding","roundingFunction","relativeTimeThreshold","threshold","limit","myMoment","HTML5_FMT","DATETIME_LOCAL","DATETIME_LOCAL_SECONDS","DATETIME_LOCAL_MS","TIME","TIME_SECONDS","TIME_MS","WEEK","MONTH","getOwnPropertySymbols","propIsEnumerable","propertyIsEnumerable","shouldUseNative","test1","test2","fromCharCode","order2","test3","letter","symbols","checkDCE","__REACT_DEVTOOLS_GLOBAL_HOOK__","MessageChannel","q","unstable_now","unstable_forceFrameRate","performance","z","A","cancelAnimationFrame","requestAnimationFrame","B","C","D","F","G","H","I","port2","port1","onmessage","postMessage","J","K","r","sortIndex","N","O","Q","R","S","T","U","V","startTime","expirationTime","X","priorityLevel","Y","Z","unstable_IdlePriority","unstable_ImmediatePriority","unstable_LowPriority","unstable_NormalPriority","unstable_Profiling","unstable_UserBlockingPriority","unstable_cancelCallback","unstable_continueExecution","unstable_getCurrentPriorityLevel","unstable_getFirstCallbackNode","unstable_next","unstable_pauseExecution","unstable_requestPaint","unstable_runWithPriority","unstable_scheduleCallback","timeout","unstable_shouldYield","unstable_wrapCallback","React","i18nSetup","__LOCALE__","I18N_RUNTIME_TRANSLATIONS","originalMissingTranslation","fallbackLocales","i18nFallbacks","__usedFallbackLocales","nextFallbackLocaleIndex","exposeComponents","mountableComponents","Venuu","REACT_COMPONENTS","exposeLazyComponents","REACT_LAZY_COMPONENTS","mountComponentFromNode","componentName","componentId","REACT_PROPS","normalComponent","loadLazyComponent","ReactDOM","mountAllComponents","reactNodes","querySelectorAll","moduleNameWithAction","moduleNameWithoutAction","ExperimentalFeature","RumPerformanceEntryType","existingGlobalVariable","onMonitorErrorCollected","navigationStart","isURLSupported","fetchObservable","initCookieParsed","getCurrentSiteCache","browserCache","ongoingOperations","createIdentifierImplementationCache","modifiableFieldPathsByEvent","xhrObservable","resourceTimingBufferFullListener","supportsLabelPropertyResult","supportsElementClosestResult","supportScopeSelectorCache","observer","viewportObservable","currentPeriodMeasures","currentBatchMeasures","batchHasRumEvent","statsPerView","getCookies","all","substring","cookieCategories","consentGivenForCategory","getConsentedCookieCategories","rawValue","re","cookieValue","unescape","cookiePairs","cookieArr","oneOf","byteToHex","TypeError","Uint8Array","ROTL","v5","v35","hashfunc","generateUUID","namespace","buf","_namespace","stringToBytes","str","bytes","unsafeStringify","DNS","Uint32Array","FIRST_16_BYTES","extractRemarketingDetails","nullable","record","page","loadAnalytics","jitsuDomain","retrieve","jitsuBrowserWriteKey","jitsuScriptTag","anonymousId","userId","search","jitsuOnLoadCallback","jitsu","serverSideAnonymousId","setAnonymousId","firstScriptTag","getElementsByTagName","insertBefore","extractUserTrackingData","withDefault","email","customer_type","ready","controller","socialMediaInitCondition","js","fjs","fbAsyncInit","FB","init","xfbml","getElementById","$sidebar","$footer","first","waypoint","stuckClass","css","width","$wrapper","outerWidth","top","outerHeight","position","removeAttr","addClass","resize","satisfiesMediaQuery","waypoints","removeClass","on","ConsoleApiName","globalConsole","originalConsoleMethods","PREFIX","DOCS_ORIGIN","DOCS_TROUBLESHOOTING","MORE_DETAILS","catchUserErrors","errorMsg","__spreadArray","pack","ar","debugMode","setDebugMode","newDebugMode","monitor","callMonitored","displayIfDebugEnabled","candidate","arrayLike","Set","find","predicate","objectValues","objectEntries","startsWith","toAssign","getGlobalObject","globalObject","_dd_temp_","HAS_MULTI_BYTES_CHARACTERS","computeBytesCount","TextEncoder","Blob","getZoneJsOriginalValue","browserWindow","Zone","__symbol__","timeoutId","throttle","wait","pendingExecutionWithParameters","pendingTimeoutId","needLeadingExecution","leading","needTrailingExecution","trailing","inWaitPeriod","throttled","parameters","cancel","noop","jsonStringify","replacer","space","restoreObjectPrototypeToJson","detachToJsonMethod","restoreArrayPrototypeToJson","restoreValuePrototypeToJson","getPrototypeOf","restoreValueToJson","objectToJson","objectHasValue","isEmptyObject","createCustomerDataTracker","checkCustomerDataLimit","bytesCountCache","computeBytesCountThrottled","cancelComputeBytesCount","resetBytesCount","updateCustomerData","resetCustomerData","getBytesCount","stop","getType","mergeInto","destination","circularReferenceChecker","createCircularReferenceChecker","WeakSet","set_1","hasAlreadyBeenSeen","has","ignoreCase","multiline","sticky","unicode","merged_1","merged","deepClone","combine","sources","sources_1","maxCharacterCount","containerQueue","visitedObjectsWithPath","WeakMap","sanitizedData","sanitizeProcessor","serializedSanitizedData","accumulatedCharacterCount","warnOverCharacterLimit","containerToProcess","separatorLength","targetData","parentPath","sourceToSanitize","tryToApplyToJSON","description","sanitizedSource","sanitizeObjects","Event","isTrusted","currentPath","changeType","Observable","onFirstSubscribe","observers","subscribe","onLastUnsubscribe","unsubscribe","mergeObservables","observables","globalObservable","subscriptions","observable","subscription","createContextManager","customerDataTracker","changeObservable","contextManager","getContext","newContext","clearContext","setContextProperty","removeContextProperty","TrackingConsent","GRANTED","NOT_GRANTED","configuration","eventTarget","eventName","addEventListeners","eventNames","once","capture","passive","listenerWithMonitor","__ddIsTrusted","allowUntrustedEvents","listenerTarget","EventTarget","remove","storageListeners","storeContextManager","productKey","customerDataType","storageKey","getFromStorage","rawContext","localStorage","getItem","setItem","createIdentityEncoder","outputBytesCount","isAsync","isEmpty","write","additionalEncodedBytesCount","finish","finishSync","rawBytesCount","pendingData","estimateEncodedBytesCount","computeStackTrace","ex","stackProperty","tryToGetString","exString","stackFrame","parseChromeLine","CHROME_LINE_RE","CHROME_EVAL_RE","parseChromeAnonymousLine","CHROME_ANONYMOUS_FUNCTION_RE","parseWinLine","WINJS_LINE_RE","parseGeckoLine","GECKO_LINE_RE","GECKO_EVAL_RE","fileUrl","filePosition","ERROR_TYPES_RE","createHandlingStack","formattedStack","stackTrace","toStackTraceString","formatErrorMessage","NO_ERROR_STACK_PRESENT_MESSAGE","computeRawError","isErrorInstance","nonErrorPrefix","originalError","handlingStack","startClocks","handling","isError","hasUsableStack","flattenErrorCauses","tryToGetFingerprint","dd_fingerprint","parentSource","currentError","enabledExperimentalFeatures","isExperimentalFeatureEnabled","featureName","INTAKE_SITE_STAGING","INTAKE_SITE_US1","INTAKE_URL_PARAMETERS","performDraw","random","num","decimals","ONE_YEAR","relativeToClocks","relative","correctedOrigin","timeStamp","dateNow","getNavigationStart","addDuration","toServerDuration","timeStampNow","relativeNow","clocksNow","clocksOrigin","timing","sendToExtension","__ddBrowserSdkExtensionCallback","getConnectivity","onLine","interfaces","connection","effective_type","effectiveType","removeItem","drain","ALLOWED_FRAME_URLS","TELEMETRY_EXCLUDED_SITES","preStartTelemetryBuffer","onRawTelemetryEventCollected","addTelemetryDebug","addTelemetryError","formatError","kind","allowedFrameUrl","addTelemetryUsage","usage","sanitizeUser","newUser","user","displayAlreadyInitializedError","sdkName","initConfiguration","silentMultipleInit","COMMA_SEPARATED_KEY_VALUE","findCommaSeparatedValue","rawString","safeTruncate","lastChar","correctedLength","isLastCharSurrogatePair","startDurationVital","vitalsByName","vitalsByReference","vital","reference","__dd_vital_reference","stopDurationVital","stopCallback","nameOrRef","vitalStart","stopOptions","stopClocks","delete","getEventBridge","eventBridgeGlobal","DatadogEventBridge","getCapabilities","getPrivacyLevel","getAllowedWebViewHosts","eventType","viewId","view","bridgeSupports","capability","bridge","canUseEventBridge","currentHost","allowedHost","instrumentMethod","targetPrototype","onPreCall","computeHandlingStack","stopped","instrumentation","postCallCallback","onPostCall","instrumentSetter","after","originalDescriptor","instrumentationWrapper","normalizeUrl","buildUrl","supportedURL","getSupportedUrl","originalURL","doc","anchorElement","baseElement","implementation","createHTMLDocument","initFetchObservable","methodFromParams","responsePromise","startContext","reportFetch","partialContext","responseType","isAborted","signal","aborted","DOMException","code","ABORT_ERR","setCookie","expireDelay","sameSite","crossSite","partitioned","getCookie","getInitCookie","findCommaSeparatedValues","Map","willSyntheticsInjectRum","Boolean","_DATADOG_SYNTHETICS_INJECTS_RUM","detectBrowserCached","chrome","vendor","documentMode","SESSION_STORE_KEY","SESSION_TIME_OUT_DELAY","SESSION_EXPIRATION_DELAY","SESSION_ENTRY_REGEXP","getExpiredSessionState","previousSessionState","expiredSessionState","isExpired","ANONYMOUS_USER_TRACKING","isSessionInExpiredState","sessionState","created","Number","expire","expandSessionState","toSessionString","toSessionState","sessionString","isValidSessionString","entry","selectCookieStrategy","cookieOptions","useSecureSessionCookie","usePartitionedCrossSiteSessionCookie","useCrossSiteSessionCookie","trackSessionAcrossSubdomains","getCurrentSite","testCookieName","domainLevels","candidateDomain","areCookiesAuthorized","testCookieValue","isCookieCorrectlySet","retrieveSessionCookie","selectLocalStorageStrategy","testKey","retrievedId","persistInLocalStorage","retrieveSessionFromLocalStorage","expireSessionFromLocalStorage","bufferedOperations","processSessionStoreOperations","operations","sessionStoreStrategy","numberOfRetries","currentLock","isLockEnabled","persistSession","expireSession","persistWithLock","lock","retrieveStore","retrieveSession","currentStore","retryLater","processedSession","process","sessionStore","currentNumberOfRetries","nextOperations","createEndpointBuilder","trackType","configurationTags","buildUrlWithParameters","createEndpointUrlWithParametersBuilder","proxy","normalizedProxyUrl_1","buildEndpointHost","site","internalAnalyticsSubdomain","usePciIntake","domainParts","extension","build","api","clientToken","retry","encoding","lastFailureStatus","reverse","urlPrefix","buildTag","valueSizeLimit","TAG_SIZE_LIMIT","sanitizedValue","DefaultPrivacyLevel","ALLOW","MASK","MASK_USER_INPUT","TraceContextInjection","ALL","SAMPLED","isSampleRate","sampleRate","isMatchOption","itemType","matchList","useStartsWith","getCrypto","crypto","msCrypto","createIdentifier","bits","CONSISTENT_TRACE_SAMPLING","areBigIntIdentifiersSupported","getRandomValues","BigUint64Array","createIdentifierUsingBigInt","createIdentifierUsingUint32Array","BigInt","radix","high","low","toPaddedHexadecimalString","traceId","clearTracingIfNeeded","spanId","traceSampled","injectHeadersIfTracingAllowed","sessionManager","inject","findTrackedSession","tracingOption","allowedTracingUrls","propagatorTypes","tracingHeaders","isTraceSampled","identifier","knuthFactor","twoPow64","traceSampleRate","traceContextInjection","propagatorType","traceparent","b3","DEFAULT_PROPAGATOR_TYPES","displayRemoteConfigurationFetchingError","PageExitReason","HIDDEN","UNLOADING","PAGEHIDE","FROZEN","getMutationObserverConstructor","constructor","MutationObserver","originalInstance","createEventRateLimiter","onLimitReached","eventCount","allowNextEvent","isLimitReached","current","fields","isValidObject","VIEW_MODIFIABLE_FIELD_PATHS","USER_CUSTOMIZABLE_FIELD_PATHS","ROOT_MODIFIABLE_FIELD_PATHS","service","AbstractLifeCycle","callbacks","eventCallbacks","END_OF_TIMES","createValueHistory","maxEntries","clearOldValuesInterval","oldTimeThreshold","endTime","close","returnInactive","entries_1","closeActive","latestEntry","findAll","xhrContexts","openXhr","abortXhr","FAKE_INITIAL_DOCUMENT","RESOURCE_TYPES","initiatorType","areInOrder","numbers","hasValidResourceEntryDuration","hasValidResourceEntryTimings","areCommonTimingsInOrder","fetchStart","domainLookupStart","domainLookupEnd","connectStart","connectEnd","requestStart","responseStart","responseEnd","areRedirectionTimingsInOrder","hasRedirection","redirectEnd","redirectStart","formatTiming","origin","computeResourceEntryProtocol","nextHopProtocol","computeResourceEntryDeliveryType","deliveryType","isAllowedRequestUrl","every","param","DATA_URL_REGEX","isLongDataUrl","sanitizeDataUrl","nextRequestIndex","getNextRequestIndex","discardNegativeDuration","trackEventCounts","lifeCycle","isChildEvent","onChange","eventCounts","errorCount","longTaskCount","resourceCount","actionCount","frustrationCount","frustration","_dd","discarded","createPerformanceObservable","PerformanceObserver","stopFirstInputTiming","handlePerformanceEntries","rumPerformanceEntries","entryType","RESOURCE","isObserverInitializing","getEntries","observe","NAVIGATION","LONG_TASK","PAINT","buffered","getEntriesByType","entryTypes","clearResourceTimings","FIRST_INPUT","retrieveFirstInputTiming","startTimeStamp","timingSent","removeEventListeners","evt","cancelable","processingStart","processingEnd","sendTiming","disconnect","supportPerformanceTimingEvent","supportedEntryTypes","doWaitPageActivityEnd","pageActivityObservable","pageActivityEndCallback","maxDuration","pageActivityEndTimeoutId","hasCompleted","validationTimeoutId","complete","hadActivity","maxDurationTimeoutId","pageActivitySubscription","isBusy","lastChangeTime","createPageActivityObservable","domMutationObservable","windowOpenObservable","firstRequestIndex","pendingRequestsCount","notifyPageActivity","isExcludedUrl","startEvent","requestIndex","requestUrl","excludedActivityUrls","cssEscape","CSS","escape","ch","asCodePoint","elementMatches","msMatchesSelector","getParentElement","parentElement","nodeType","Node","ELEMENT_NODE","initialValues","isTextNode","TEXT_NODE","isElementNode","isNodeShadowHost","shadowRoot","isNodeShadowRoot","DOCUMENT_FRAGMENT_NODE","forEachChildNodes","child","firstChild","nextSibling","getParentNode","NodePrivacyLevel","IGNORE","PRIVACY_ATTR_NAME","CENSORED_IMG_MARK","FORM_PRIVATE_TAG_NAMES","INPUT","OUTPUT","TEXTAREA","SELECT","OPTION","DATALIST","OPTGROUP","getNodePrivacyLevel","defaultPrivacyLevel","cache","parentNodePrivacyLevel","nodePrivacyLevel","reducePrivacyLevel","getNodeSelfPrivacyLevel","childPrivacyLevel","inputElement","autocomplete","endsWith","getPrivacySelector","shouldIgnoreElement","nodeName","relAttribute","getLowerCaseAttribute","nameAttribute","propertyAttribute","hasAttribute","shouldMaskNode","privacyLevel","isFormElement","getTextContent","textNode","ignoreWhiteSpace","parentTagName","DEFAULT_PROGRAMMATIC_ACTION_NAME_ATTRIBUTE","getActionNameFromElementProgrammatically","targetElement","programmaticAttribute","HTMLElement","elementWithAttribute","closest","truncate","normalizeWhitespace","priorityStrategies","userProgrammaticAttribute","privacy","HTMLInputElement","labels","getActionNameFromTextualContent","ownerDocument","htmlFor","nameSource","privacyEnabledActionName","getActionNameFromStandardAttribute","labelledByAttribute","refElement","getTextualContent","fallbackStrategies","getActionNameFromElementForStrategies","strategies","recursionCounter","strategies_1","actionName","strategy","name_1","trimmedName","attribute","isContentEditable","text_1","removeTextFromElements","element_1","textToReplace","STABLE_ATTRIBUTES","GLOBALLY_UNIQUE_SELECTOR_GETTERS","getStableAttributeSelector","isGeneratedValue","UNIQUE_AMONG_CHILDREN_SELECTOR_GETTERS","classList","getClassList","classes","getSelectorFromElement","actionNameAttribute","isConnected","documentElement","contains","targetElementSelector","currentElement","globallyUniqueSelector","findSelector","isSelectorUniqueGlobally","uniqueSelectorAmongChildren","isSelectorUniqueAmongSiblings","combineSelector","getPositionSelector","sibling","firstElementChild","elementIndex","nextElementSibling","getAttributeSelector","STABLE_ATTRIBUTES_1","attributeName","selectorGetters","childSelector","selectorGetters_1","elementSelector","selectorGetter","currentElementSelector","isSiblingMatching","scopedSelector_1","supportScopeSelector","querySelector","parent","isSelectionEmpty","selection","getSelection","isCollapsed","isValidPointerEvent","Element","isPrimary","isDead","click","hasPageActivity","getUserActivity","scroll","interactionSelectorCache","updateInteractionSelector","relativeTimestamp","elapsed","ACTION_CONTEXT_TIME_OUT_DELAY","processAction","pageStateHistory","autoActionProperties","isAutoAction","loading_time","frustrationTypes","counts","long_task","resource","name_source","ACTION_NAME_MASKING","customerContext","actionEvent","in_foreground","wasInPageStateAt","domainContext","rawRumEvent","consoleObservablesByApi","buildRawReportError","partial","buildStack","sourceFile","requestIdleCallback","cancelIdleCallback","id_1","didTimeout","timeRemaining","MAX_TASK_TIME","alreadyMatchedEntries","runOnReadyState","expectedReadyState","INITIAL_DOCUMENT_OUTDATED_TRACE_ID_THRESHOLD","createDocumentTraceData","rawTraceTime","traceTime","getTraceCommentFromNode","COMMENT_NODE","getNavigationEntry","navigationEntry","timings","computeTimingsFromDeprecatedPerformanceTiming","timingElement","decodedBodySize","encodedBodySize","transferSize","workerStart","retrieveInitialDocumentResourceTiming","getDocumentTraceId","traceIdMeta","traceTimeMeta","getDocumentTraceDataFromMeta","content","getDocumentTraceDataFromComment","comment","findTraceComment","processResourceEntry","tracingInfo","computeResourceEntryTracingInfo","trace_id","span_id","createSpanIdentifier","rule_psr","rulePsr","trackResources","computeResourceEntryType","isValidUrl","RESOURCE_TYPES_1","isType","entryMetrics","computeResourceEntryMetrics","resourceEvent","responseStatus","delivery_type","performanceEntry","renderBlockingStatus","render_blocking_status","computeResourceEntrySize","encoded_body_size","decoded_body_size","transfer_size","computeResourceEntryDetails","secureConnectionStart","download","first_byte","worker","connect","ssl","dns","redirect","FCP_MAXIMUM_DELAY","LCP_MAXIMUM_DELAY","trackFirstHidden","stopListeners","visibilityState","interactionCountEstimate","minKnownInteractionId","maxKnownInteractionId","getInteractionCount","interactionCount","MAX_INP_VALUE","getScrollX","visual","visualViewport","pageLeft","offsetLeft","scrollX","pageXOffset","getScrollY","pageTop","offsetTop","scrollY","pageYOffset","initViewportObservable","getViewportDimension","scale","height","innerWidth","innerHeight","SESSION_KEEP_ALIVE_INTERVAL","KEEP_TRACKING_AFTER_VIEW_DELAY","getPathFromHash","hash","stopCallbacks","isTypeTracked","rumSessionType","createBatch","encoder","flushController","messageBytesLimit","upsertBuffer","flushSubscription","flushObservable","flush","upsertMessages","isPageExit","sendOnExit","encoderResult","formatPayloadFromEncoder","pendingMessages","bytesCount","addOrUpdate","removedMessage","messageBytesCount","serializedMessage","estimatedMessageBytesCount","hasMessageFor","notifyAfterRemoveMessage","notifyBeforeAddMessage","notifyAfterAddMessage","realMessageBytesCount","upsert","MAX_QUEUE_BYTES_COUNT","sendWithRetryStrategy","sendStrategy","reportError","transportStatus","queuedPayloads","bandwidthMonitor","canHandle","onSuccess","retryQueuedPayloads","onFailure","enqueue","scheduleRetry","dequeue","currentBackoffTime","ongoingRequestCount","isFull","queueFullReported","previousQueue","newPayloadQueue","createHttpRequest","endpointBuilder","bytesLimit","retryState","ongoingByteCount","sendStrategyForRetry","onResponse","isKeepAliveSupported","keepalive","mode","sendXHR","sendBeaconStrategy","sendBeacon","beaconUrl","hasReportedBeaconError","open","setRequestHeader","getHistoryInstrumentationTarget","History","sendCurrentPeriodMeasures","batchCount","initCurrentPeriodMeasures","createMeasure","sum","updateMeasure","measure","mergeMeasure","batchBytesCount","batchMessagesCount","globalContextBytes","userContextBytes","featureFlagBytes","initCurrentBatchMeasures","getPageState","hasFocus","watchCookieFallback","cookieName","previousCookieValue","watchCookieIntervalId","CI_VISIBILITY_TEST_ID_COOKIE_NAME","getOrCreateReplayStats","replayStats","records_count","segments_count","segments_total_raw_size","deleteOldestStats","toDelete","isFirst_1","_value","serializedNodeIds","hasSerializedNode","getSerializedNodeId","getElementInputValue","URL_IN_CSS_REF","ABSOLUTE_URL","DATA_URI","TAG_NAME_REGEX","getValidTagName","processedTagName","censoredImageForSize","serializeStyleSheets","cssStyleSheets","cssStyleSheet","cssRules","rules","cssRule","cssText","disabled","media","serializeAttribute","attributeValue","image","naturalWidth","naturalHeight","getBoundingClientRect","getCssRulesString","cssHref","isSafari","getCssRuleStringForSafari","getCssRuleString","matchingSubstring","singleQuote","urlWrappedInSingleQuotes","doubleQuote","urlWrappedInDoubleQuotes","urlNotWrappedInQuotes","quote","makeUrlAbsolute","baseUrl","rule","selectorText","styleSheet","serializeNodeWithId","serializedNode","serializeNode","DOCUMENT_NODE","serializeChildNodes","adoptedStyleSheets","isShadowRoot","serializationContext","shadowRootsController","addShadowRoot","DOCUMENT_TYPE_NODE","documentType","publicId","systemId","serializeElementNode","el","isSVG","isSVGElement","SVGElement","attributes","rr_width","rr_height","serializeAttributes","scrollTop","scrollLeft","safeAttrs","formValue","optionElement","selected","stylesheet","styleSheets","_cssText","sheet","checked","rr_mediaState","mediaElement","paused","elementsScrollPositions","rr_scrollLeft","rr_scrollTop","CDATA_SECTION_NODE","_nextId","serializedNodeWithId","childNode","serializedChildNode","isTouchEvent","changedTouches","getEventTarget","composed","composedPath","convertMouseEventToLayoutCoordinates","clientX","clientY","normalized","layoutViewportX","layoutViewportY","visualViewportX","visualViewportY","getVisualViewport","assembleIncrementalSnapshot","tryToComputeCoordinates","eventTypeToMouseInteraction","trackScroll","scrollCb","scrollPositions","updatePosition","cancelThrottle","removeListener","getPathToNestedCSSRule","currentRule","parentRule","index_1","rules_1","parentStyleSheet","trackInput","inputCb","stopPropertySetterInstrumentation","lastInputStateMap","stopEventListeners","HTMLTextAreaElement","HTMLSelectElement","onElementChange","instrumentationStoppers_1","stopper","inputState","isChecked","cbWithDedup","lastInputState","trackMutation","mutationCallback","mutationBatch","createMutationBatch","processMutationBatch","cancelScheduledFlush","pendingMutations","throttledFlush","addMutations","mutations","nodePrivacyLevelCache","filteredMutations","adds","removes","hasBeenSerialized","texts","takeRecords","mutation","removedNodes","removedNode","traverseRemovedShadowDom","shadowDomRemovedCallback","removeShadowRoot","processChildListMutations","addedAndMovedNodes","_loop_1","addedNodes","mutations_1","sortedAddedAndMovedNodes","compareDocumentPosition","DOCUMENT_POSITION_CONTAINED_BY","DOCUMENT_POSITION_CONTAINS","DOCUMENT_POSITION_FOLLOWING","DOCUMENT_POSITION_PRECEDING","addedNodeMutations","sortedAddedAndMovedNodes_1","nextId","getNextSibling","parentId","removedNodeMutations","nodeAndAncestorsHaveSerializedNode","processCharacterDataMutations","textMutations","handledNodes","filteredMutations_1","oldValue","processAttributesMutations","attributeMutations","handledElements","handledAttributes","emittedMutations","filteredMutations_2","uncensoredValue","transformedValue","inputValue","emittedMutation","attributeOldValue","characterData","characterDataOldValue","childList","subtree","initShadowRootsController","controllerByShadowRoot","mutationTracker","inputTracker","scrollTracker","createDeflateEncoder","streamId","compressedDataTrailer","compressedData","nextWriteActionId","pendingWriteActions","removeMessageListener","workerResponse","additionalBytesCount","trailer","nextPendingAction","writeCallback","byteLength","finishCallback","consumeResult","concatBuffers","buffers","buffers_1","sendResetIfNeeded","pendingWriteAction","createDeflateWorker","Worker","workerUrl","createObjectURL","startDeflateWorker","onInitializationFailure","createDeflateWorkerImpl","doStartDeflateWorker","removeErrorListener_1","removeMessageListener_1","initializationFailureCallbacks","baseMessage","worker_version","stream_id","isBrowserSupported","CSSSupportsRule","NodeList","datadogRum","makeRumPublicApi","startRumImpl","recorderApi","currentConsent","publicApi","customerDataTrackerManager","createCustomerDataTrackerManager","compressionStatus","customerDataTrackers","alreadyWarned","initialBytesCount","bytesCountLimit","tracker","createDetachedTracker","getOrCreateTracker","setCompressionStatus","newCompressionStatus","getCompressionStatus","globalContextManager","userContextManager","trackingConsentState","tryToInit","trackingConsent","update","isGranted","customVitalsState","getCommonContext","hasReplay","isRecording","createPreStartStrategy","doStartRum","firstStartViewCall","deflateWorker","cachedInitConfiguration","cachedConfiguration","ignoreInitIfSyntheticsWillInjectRum","bufferApiCalls","trackingConsentStateSubscription","tryStartRum","trackViewsManually","initialViewOptions","startRumResult","doInit","baseSerializedConfiguration","usedTracingPropagators","eventBridgeAvailable","applicationId","sessionSampleRate","session_sample_rate","telemetry_sample_rate","telemetrySampleRate","telemetry_configuration_sample_rate","telemetryConfigurationSampleRate","telemetry_usage_sample_rate","telemetryUsageSampleRate","use_before_send","beforeSend","use_cross_site_session_cookie","use_partitioned_cross_site_session_cookie","use_secure_session_cookie","use_proxy","silent_multiple_init","track_session_across_subdomains","session_persistence","sessionPersistence","allow_fallback_to_local_storage","allowFallbackToLocalStorage","store_contexts_across_pages","storeContextsAcrossPages","allow_untrusted_events","tracking_consent","session_replay_sample_rate","sessionReplaySampleRate","start_session_replay_recording_manually","startSessionReplayRecordingManually","trace_sample_rate","trace_context_injection","action_name_attribute","use_allowed_tracing_urls","selected_tracing_propagators","option","default_privacy_level","enable_privacy_for_action_name","enablePrivacyForActionName","use_excluded_activity_urls","use_worker_url","compress_intake_requests","compressIntakeRequests","track_views_manually","track_user_interactions","trackUserInteractions","track_resources","track_long_task","trackLongTasks","plugins","getConfigurationTelemetry","validateAndBuildRumConfiguration","validateAndBuildTracingOptions","tracingOptions","expectedItem","baseConfiguration","validateAndBuildConfiguration","env","datacenter","endpointBuilders","sessionStoreStrategyType","selectSessionStoreStrategyType","batchBytesLimit","eventRateLimiterThreshold","maxTelemetryEventsPerPage","flushTimeout","batchMessagesLimit","logsEndpointBuilder","rumEndpointBuilder","sessionReplayEndpointBuilder","replica","computeReplicaConfiguration","replicaConfiguration","replicaEndpointBuilders","subdomain","customerDataTelemetrySampleRate","addDurationVital","enableExperimentalFeatures","enabledFeatures","flag","callPluginsMethod","parameter","plugins_1","remoteConfigurationId","REMOTE_CONFIGURATION","fetchAndApplyRemoteConfiguration","remoteInitConfiguration","responseText","getInternalContext","stopSession","addTiming","startView","setViewName","setViewContext","setViewContextProperty","addAction","commonContext","addError","providedError","addFeatureFlagEvaluation","preStartStrategy","onRumStart","viewHistory","sanitizedOptions","feature","rumPublicApi","onReady","setTrackingConsent","setGlobalContext","getGlobalContext","setGlobalContextProperty","removeGlobalContextProperty","clearGlobalContext","getInitConfiguration","setUser","getUser","setUserProperty","sanitizedProperty","removeUserProperty","clearUser","getSessionReplayLink","startSessionReplayRecording","force","stopSessionReplayRecording","createEncoder","errorObservable","consoleObservables","reportTypes","featureFlagContexts","tracer","handleRuntimeError","apis","cleanupTasks","telemetry","startRumTelemetry","telemetryService","contextProvider","alreadySentEvents","telemetryEnabled","telemetryEnabledPerType","runtimeEnvInfo","is_local_file","is_worker","rawEvent","stringifiedEvent","event_1","format_version","runtime_env","connectivity","sdk_setup","experimental_features","setContextProvider","provider","bridge_1","application","findView","actionContexts","findActionId","endClocks","findFeatureFlagEvaluations","currentContext","pageExitObservable","stopBeforeUnloadListener","pageExitSubscription","sessionReplay","expireObservable","setForcedReplay","startSessionManager","computeSessionState","expandSession","expandSessionWhenVisible","visibilityCheckInterval","renewObservable","startSessionStore","sessionCache","sessionStateUpdateObservable","initCookieStrategy","cookieStore","oldSessionId","oldRumType","oldLogsType","cookieStoreStrategy","watchSessionTimeoutId","synchronizeSession","startSession","synchronizedSession","expandOrRenewSessionState","trackingType","isTracked","isSessionStarted","hasSessionInCache","throttledExpandOrRenewSession","cancelExpandOrRenewSession","previousState","newState","expandOrRenewSession","getSession","restartSession","updateSessionState","partialSessionState","sessionContextHistory","buildSessionContext","isReplayForced","forcedReplay","findSession","rawTrackingType","sessionEntity","serverRumEvent","telemetryEventObservable","sessionExpireObservable","batch","batchFlushObservable","batch_1","startBatchWithReplica","primary","batchFactoryImp","primaryBatch","createBatchFromConfig","replicaBatch","createFlushController","durationLimitTimeoutId","messagesLimit","durationLimit","sessionExpireSubscription","currentBytesCount","currentMessagesCount","flushReason","messagesCount","cancelDurationLimitTimeout","messageBytesCountDiff","replicated","transformMessage","locationChangeObservable","currentLocation","onHistoryChange","stopInstrumentingPushState","stopInstrumentingReplaceState","stopHistoryTracking","trackHistory","onLocationChange","stopHashTracking","trackHash","newLocation","oldLocation","startPageStateHistory","maxPageStateEntriesSelectable","currentPageState","pageStateEntryHistory","addPageState","persisted","nextPageState","eventStartTime","pageStateEntries","pageStateServerEntries","pageState","relativeStartTime","wasInPageStateDuringPeriod","stopWindowOpen","startRumEventCollection","viewValueHistory","viewport","animationFrameId","unsubscribeViewport","cookieObservable","detectCookieChangeStrategy","testExecutionId","cookieObservableSubscription","eventRateLimiters","syntheticsContext","viewUpdate","currentView","urlContexts","startUrlContexts","previousViewUrl","urlContextHistory","viewUrl","buildUrlContext","locationChangeSubscription","changeTime","findUrl","actionCollection","trackClickActions","selectionEmptyAtPointerDown","clickContext","onPointerDown","onPointerUp","userActivity","currentClickChain","stopObservable","stopClickChain","stopActionEventsListener","listenActionEvents","pointerDownEvent","clickActionBase","computeClickActionBase","defaultActionName","rect","left","hadActivityOnPointerDown","pageActivityEndEvent","startClickAction","appendClickToClickChain","newClick","activityEndTime","historyEntry","eventCountsSubscription","newActivityEndTime","hasError","addFrustration","frustrationType","isStopped","validate","domEvents","clickAction","discard","stopWaitPageActivityEnd","waitPageActivityEnd","viewEndedSubscription","stopSubscription","localUserActivity_1","tryAppend","rageClick_1","createClickChain","firstClick","onFinalize","maxDurationBetweenClicksTimeoutId","bufferedClicks","appendClick","tryFinalize","dontAcceptMoreClick","mouseEventDistance","sqrt","clicks","rageClick","computeFrustration","isRage","MIN_CLICKS_PER_SECOND_TO_CONSIDER_RAGE","hasSelectionChanged","savedCommonContext","displayContext","DELAY_VIEWPORT_COLLECTION","viewportDimension","ciVisibilityContext","changeEvent","changed","deleted","Cypress","test_execution_id","WRITABLE_RESOURCE_GRAPHQL","getSyntheticsContext","testId","_DATADOG_SYNTHETICS_PUBLIC_ID","resultId","_DATADOG_SYNTHETICS_RESULT_ID","test_id","result_id","injected","viewHistoryEntry","urlContext","actionId","drift","browser_sdk_version","needToAssembleWithAction","synthetics","ci_test","has_replay","sampled_for_replay","anonymous_id","usr","shouldSend","modifiableFieldPaths","fieldPath","fieldType","newValue","newType","stopRumEventCollection","_g","_h","_j","_k","_m","_o","_p","_q","_r","featureFlagContext","pageStates","viewEvent","getReplayStats","document_version","documentVersion","replay_stats","page_states","cumulative_layout_shift","commonViewMetrics","cumulativeLayoutShift","cumulative_layout_shift_time","cumulative_layout_shift_target_selector","targetSelector","initialViewMetrics","navigationTimings","firstByte","dom_complete","domComplete","dom_content_loaded","domContentLoaded","dom_interactive","domInteractive","first_contentful_paint","firstContentfulPaint","first_input_delay","firstInput","first_input_time","first_input_target_selector","interaction_to_next_paint","interactionToNextPaint","interaction_to_next_paint_time","interaction_to_next_paint_target_selector","is_active","isActive","largest_contentful_paint","largestContentfulPaint","largest_contentful_paint_target_selector","load_event","loadEvent","loadingTime","loading_type","loadingType","time_spent","feature_flags","max_depth","max_depth_scroll_top","maxDepthScrollTop","max_scroll_height","maxScrollHeight","max_scroll_height_time","maxScrollHeightTime","sessionIsActive","replay_level","customTimings","custom_timings","mapValues","newObject","trackViews","areViewsTrackedAutomatically","activeViews","startNewView","viewOptions","newlyCreatedView","newView","initialLocation","throttleDuration","stopOnReadyState","viewStart","stopLoadingTimeTracking","setLoadEvent","scrollValues","maxScrollDepth","stopScrollMetricsTracking","stopCLSTracking","stopINPTracking","getInteractionToNextPaint","getNavigationEntryImpl","stopNavigationTracking","firstHidden","stopFCPTracking","firstInteractionTimestamp","stopEventListener","biggestLcpSize","performanceLcpSubscription","stopLCPTracking","performanceFirstInputSubscription","stopFIDTracking","viewCreatedEvent","triggerViewUpdate","scheduleViewUpdate","cancelScheduleViewUpdate","trackLoadingTime","loadType","isWaitingForLoadEvent","isWaitingForActivityLoadingTime","loadingTimeCandidates","invokeCallbackIfAllCandidatesAreReceived","newLoadingTime","trackScrollMetrics","newScrollMetrics","ResizeObserver","throttledNotify_1","scrollHeight","scrollingElement","scrollDepth","observerTarget","resizeObserver_1","eventListener_1","shouldUpdate","trackCumulativeLayoutShift","LAYOUT_SHIFT","cumulatedValue","maxValue","maxClsTarget","maxClsStartTime","maxClsValue","isMaxValue","performanceSubscription","hadRecentInput","getTargetFromSource","WeakRef","deref","trackInteractionToNextPaint","viewLoadingType","EVENT","PerformanceEventTiming","setViewEnd","previousInteractionCount","interactionToNextPaintTargetSelector","interactionToNextPaintStartTime","interactionId","durationThreshold","getViewInteractionCount","stopViewInteractionCount","viewEnd","longestInteractions","trackLongestInteractions","sortAndTrimLongestInteractions","interactionIndex","findIndex","interaction","minLongestInteraction","estimateP98Interaction","handleEntries","newInteraction","firstInputSubscription","eventSubscription","viewEndTime","getCommonViewMetrics","stopCommonViewMetricsTracking","trackNavigationTimings","loadEventEnd","domContentLoadedEventEnd","trackFirstContentfulPaint","fcpEntry","trackLargestContentfulPaint","LARGEST_CONTENTFUL_PAINT","lcpEntry","findLast","lcpTargetSelector","trackFirstInput","firstInputEntry","firstInputDelay","firstInputTargetSelector","stopInitialViewMetricsTracking","stopEventCountsTracking","keepAliveIntervalId","currentEnd","sanitized","looksLikeRelativeTime","updatedName","pageExitEvent","otherLocation","correspondingId","stopViewCollection","stopResourceCollection","startResourceCollection","taskQueue","retrieveInitialDocumentResourceTimingImpl","createTaskQueue","pendingTasks","deadline","executionTimeRemaining","start_1","MAX_EXECUTION_TIME_ON_TIMEOUT","scheduleNextRun","task","handleResource","processRequest","matchingTiming","matchRequestResourceEntry","sameNameEntries","getEntriesByName","candidates","computeRequestTracingInfo","correspondingTimingOverrides","requestInput","performanceResourceSubscription","computeRawEvent","LONG_ANIMATION_FRAME","stopLongAnimationFrameCollection","startLongAnimationFrameCollection","entry_type","blocking_duration","blockingDuration","first_ui_event_timestamp","firstUIEventTimestamp","render_start","renderStart","style_and_layout_start","styleAndLayoutStart","start_time","pause_duration","pauseDuration","forced_style_and_layout_duration","forcedStyleAndLayoutDuration","execution_start","executionStart","source_url","sourceURL","source_function_name","sourceFunctionName","source_char_position","sourceCharPosition","invoker","invoker_type","invokerType","window_attribution","windowAttribution","startErrorCollection","initConsoleObservable","originalConsoleApi","buildConsoleLog","firstErrorParam","consoleLog","instrumentOnError","rawError","messageObj","errorObj","instrumentUnhandledRejection","initReportObservable","blockedURI","effectiveDirective","csp","disposition","originalPolicy","ReportingObserver","handleReports","reports","report","handling_stack","source_type","traceFetch","append","headers_1","Headers","header","traceXhr","trackXhr","initXhrObservable","stopInstrumentingStart","stopInstrumentingSend","sendXhr","hasBeenReported","stopInstrumentingOnReadyStateChange","DONE","onEnd","unsubscribeLoadEndListener","completeContext","stopInstrumentingAbort","clonedResponse","tryToClone","readBytesFromStream","stream","reader","getReader","chunks","readBytesCount","onDone","collectStreamBody","completeBuffer_1","limitExceeded","offset_1","readMore","vitalCollection","startVitalCollection","valueComputedBySdk","computed_value","internalContext","viewContext","application_id","session_id","user_action","makeRecorderApi","startRecordingImpl","shouldStartImmediately","cachedDeflateEncoder","getOrCreateDeflateEncoder","stopRecording","deflateEncoder","isRecordingStarted","errorType","sessionId","rumConfiguration","getSiteDefaultSubdomain","getDeflateWorkerStatus","httpRequest","addRecord","replayRequest","startRecordBridge","segmentCollection","doStartSegmentCollection","getSegmentContext","nextSegmentCreationReason","unsubscribeViewCreated","flushSegment","unsubscribePageExited","segment","rawSegmentBytesCount","formData","serializedMetadataAndSegmentSizes","FormData","raw_segment_size","compressed_segment_size","expirationTimeoutId","createSegment","creationReason","encodedBytesCount","creation_reason","has_full_snapshot","index_in_view","scrollPositionsByElement","flushMutations","fullSnapshotCallback","takeFullSnapshot","recordIds","viewportResizeSubscription","frustrationSubscription","viewEndCb","viewEndSubscription","emit","emitAndComputeStats","stopFullSnapshots","startFullSnapshots","records","has_focus","initialOffset","getIdForEvent","trackers","coordinates","timeOffset","moveCb","positions","mouseInteractionCb","viewportResizeCb","mediaInteractionCb","trackStyleSheet","styleSheetCb","checkStyleSheetAndCallback","ownerNode","instrumentationStoppers","CSSStyleSheet","instrumentGroupingCSSRuleClass","cls","CSSGroupingRule","CSSMediaRule","focusCb","trackVisualViewportResize","visualViewportResizeCb","updateDimension","frustrationCb","viewEndRecord","__ENVIRONMENT__","botRegex","initialized","initializeDatadogRum","eventData","detail","accepted","remarketingDetails","gclidFromUrl","identifyUser","userIdFromUrl","distinctIdFromUrl","emailUserIdFromUrl","emailIdFromUrl","rawEmailDistinctId","generateUserId","userEmail","uuidv5","userIdFromCookie","customerType","commonTraits","currentSite","identify","jitsuQ","traits","Source","pageOpts","hrental_id","hrental_pagetype","hrental_totalvalue","trackClicksOn","gclidCookie","gclidFromCookie","gclid","sidebarMenuHeight","BLANK_RE","foundation","active_class","destination_threshold","throttle_delay","tooltip","touch_close_text","abide","validators","valuePlaceholder","required","originalTopBarToggle","Foundation","libs","topbar","toggle","isTopNavigationExpanded","$topBar","hasClass","toggleClass","InstructionVideoEmbed","div","styles","container","h3","heading","title","frameResizer","iframe","embedUrl","frameBorder","allowFullScreen","ProfileEditRichTextEditor","LandingPageRichTextEditor","AvailabilitySourceForm","PhoneNumberForm","VenueMobileCTAs","Rating","RatingBoxAccordion","AccordionPanel","CommissionRoot","PackageEditorRoot","VenueInquiryConversationRoot","CateringInquiryConversationApp","ReadOnlyVenueInquiryConversationApp","MarkAsRepliedRoot","VenueGroupEditorApp","SendCopy","MessageTemplateEditorApp","MultiSelect","VenuePageInquiryFormNew","MultiVenueInquiryForm","SearchableInquiryIndex","FeaturedEventTypeField","FeaturedVenuesInventory","EditOrganizationTabs","SpamInquiriesTabs","EditVenueServices","EditVenueTypes","ProfileAnnouncementsEditorApp","CateringSearch","VenueProfileGallery","VenueWishlistButton","VenueProfileLocation","VenueProfileVideoSection","VenueProfileVirtualTourSection","VenueProfileStoriesOfPastEvents","VenueProfileCapacityDetails","VenueProfileCTASection","VenueProfileOtherSpacesInSameLocation","VenueProfileReviewList","VenueProfileServicesAndFacilities","VenueProfileSimilarVenues","VenueProfilePricingSection","VenueProfileAvailabilitySection","VenueProfileBasicInformation","VenueProfileTranslatedDescription","CateringBasicInformation","CateringDetailedInformation","CateringHeading","ProfileImageCarousel","CateringInquiry","CateringServicesAndPricing","CateringMenuList","SupplierProfileServicesAndPricing","SupplierProfileHeading","SupplierProfileContactInformation","SupplierProfileVideo","SupplierProfileInquiry","SupplierProfileContactImage","SupplierProfileBasicInformation","SupplierSearch","LegalNotice","PipedriveIntegrationStatus","BillingDetails","TinField","InvoicesOfDayStates","InvoicingFields","OrganizationInvoices","StripeCustomerStatus","OutcomeFeedback","EditOpeningHours","InquiryRecipientPersonaSelect","components","lazyComponents","frontPageIndex","landingPagesShow","listsShow","reviewsEdit","reviewsNew","buildModuleName","camelCaseController","upcaseAction","findScript","crudAliases","actionEntryPoints","actionFunc","initializer","require","jQuery","SERVER_RENDERER_PUBLIC_PATH","__webpack_public_path__","Button","onClick","submit","otherProps","buttonClassName","classnames","button","preventDefault","tabIndex","errorMessage","reload","sentinelProperty","branches","jsonObject","extract","failure","items","shape","extractKey","extractValue","failureStack","usingFailureStack","withFailureHandler","returnValue","fallback","boolean","mixed","extractValues","amount","moneyExtract","extractedMoney","money","webpackLocales","localizable","defaultFormatMoneyOptions","fm","alwaysShowDecimals","isInteger","formatPrice","isEqual","sitesJSON","allSites","baseDomain","requiredString","base_domain","countryInPath","optionalString","country_in_path","defaultOgImage","default_og_image","defaultSearchBounds","requiredBounds","default_search_bounds","defaultMapCenter","default_map_center","iso31661Alpha2","iso_3166_1_alpha_2","iso31661Alpha3","iso_3166_1_alpha_3","profileTimeZone","profile_time_zone","partnerSupport","extractPartnerSupport","partner_support","salesPerson","extractSalesPerson","sales_person","eInvoiceOperators","extractEInvoiceoperators","e_invoice_operators","mail","phone","team_mail","first_name","south","west","north","east","eInvoiceOperator","maybeString","sites","defaultProperties","Path","getSocialMedia","$os","inferOperatingSystem","propertiesFromTrackedLink","$link","link","linkData","allHaveData","$elements","dataKey","venueAnalyticsProps","dataFromBackend","elements","links","promise","ev","getAttributeNS","trackEvent","track","typedEvent","elementEvent","ctrlKey","shiftKey","metaKey","BOT_MATCHERS","translatedOptions","mediaTypesToMediaQueries","small","middle","medium","large","xlarge","xxlarge","smallDevice","mediaType","mediaQuery","Modernizr","Putki","modules","timer","activeKeys","currentInput","formInputs","mouseWheel","detectWheel","ignoreMap","inputMap","inputTypes","keyMap","pointerMap","eventBuffer","setInput","bufferedEvent","eventKey","pointerType","activeElement","switchInput","keyCode","which","unLogKeys","arrayPos","bindEvents","PointerEvent","MSPointerEvent","onmousewheel","ask","installedModules","moduleId","loaded","hasOwn","classNames","appendClass","parseValue","newClass"],"sourceRoot":""}