{"version":3,"file":"js/21944-240906e77f25c9c206d0.js","mappings":"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","sources":["webpack://StravaModern/./node_modules/@strava/ui/MediaQuery/index.ts","webpack://StravaModern/../../../webpack/universalModuleDefinition","webpack://StravaModern/../../../dist/react-responsive.js","webpack://StravaModern/../../../webpack/bootstrap a240fde86c0ad9ba24cd","webpack://StravaModern/../../../node_modules/prop-types/index.js","webpack://StravaModern/../../../node_modules/react-is/index.js","webpack://StravaModern/../../../node_modules/prop-types/lib/ReactPropTypesSecret.js","webpack://StravaModern/../../../node_modules/hyphenate-style-name/index.js","webpack://StravaModern/../../../src/mediaQuery.js","webpack://StravaModern/../../../src/index.js","webpack://StravaModern/../../../external {\"commonjs\":\"react\",\"commonjs2\":\"react\",\"amd\":\"react\",\"root\":\"React\"}","webpack://StravaModern/../../../node_modules/react-is/cjs/react-is.development.js","webpack://StravaModern/../../../node_modules/prop-types/factoryWithTypeCheckers.js","webpack://StravaModern/../../../node_modules/object-assign/index.js","webpack://StravaModern/../../../node_modules/prop-types/checkPropTypes.js","webpack://StravaModern/../../../node_modules/matchmediaquery/index.js","webpack://StravaModern/../../../node_modules/css-mediaquery/index.js","webpack://StravaModern/../../../src/toQuery.js","webpack://StravaModern/./node_modules/@sentry-internal/tracing/esm/browser/metrics/utils.js","webpack://StravaModern/./node_modules/@sentry-internal/tracing/esm/browser/metrics/index.js","webpack://StravaModern/./node_modules/@sentry-internal/tracing/esm/browser/browsertracing.js","webpack://StravaModern/./node_modules/@sentry-internal/tracing/esm/browser/router.js","webpack://StravaModern/./node_modules/@sentry-internal/tracing/esm/browser/backgroundtab.js","webpack://StravaModern/./node_modules/@sentry-internal/tracing/esm/browser/web-vitals/lib/bindReporter.js","webpack://StravaModern/./node_modules/@sentry-internal/tracing/esm/browser/web-vitals/lib/generateUniqueID.js","webpack://StravaModern/./node_modules/@sentry-internal/tracing/esm/browser/web-vitals/lib/getNavigationEntry.js","webpack://StravaModern/./node_modules/@sentry-internal/tracing/esm/browser/web-vitals/lib/getActivationStart.js","webpack://StravaModern/./node_modules/@sentry-internal/tracing/esm/browser/web-vitals/lib/initMetric.js","webpack://StravaModern/./node_modules/@sentry-internal/tracing/esm/browser/web-vitals/lib/observe.js","webpack://StravaModern/./node_modules/@sentry-internal/tracing/esm/browser/web-vitals/getFID.js","webpack://StravaModern/./node_modules/@sentry-internal/tracing/esm/browser/web-vitals/getLCP.js","webpack://StravaModern/./node_modules/@sentry-internal/tracing/esm/browser/instrument.js","webpack://StravaModern/./node_modules/@sentry-internal/tracing/esm/browser/web-vitals/getCLS.js","webpack://StravaModern/./node_modules/@sentry-internal/tracing/esm/common/fetch.js","webpack://StravaModern/./node_modules/@sentry-internal/tracing/esm/browser/request.js","webpack://StravaModern/./node_modules/@sentry-internal/tracing/esm/browser/types.js","webpack://StravaModern/./node_modules/@sentry-internal/tracing/esm/browser/web-vitals/lib/getVisibilityWatcher.js","webpack://StravaModern/./node_modules/@sentry-internal/tracing/esm/browser/web-vitals/lib/onHidden.js","webpack://StravaModern/./node_modules/@sentry-internal/tracing/esm/common/debug-build.js","webpack://StravaModern/./node_modules/@sentry/utils/esm/clientreport.js","webpack://StravaModern/./node_modules/@sentry/browser/esm/client.js","webpack://StravaModern/./node_modules/@sentry/browser/esm/debug-build.js","webpack://StravaModern/./node_modules/@sentry/browser/esm/eventbuilder.js","webpack://StravaModern/./node_modules/@sentry/browser/esm/helpers.js","webpack://StravaModern/./node_modules/@sentry/utils/esm/eventbuilder.js","webpack://StravaModern/./node_modules/@sentry/core/esm/integrations/linkederrors.js","webpack://StravaModern/./node_modules/@sentry/core/esm/metadata.js","webpack://StravaModern/./node_modules/@sentry/core/esm/integrations/metadata.js","webpack://StravaModern/./node_modules/@sentry/core/esm/transports/multiplexed.js","webpack://StravaModern/./node_modules/@sentry/core/esm/metrics/instance.js","webpack://StravaModern/./node_modules/@sentry/core/esm/metrics/browser-aggregator.js","webpack://StravaModern/./node_modules/@sentry/core/esm/metrics/integration.js","webpack://StravaModern/./node_modules/@sentry/core/esm/metrics/exports.js","webpack://StravaModern/./node_modules/@sentry/core/esm/tracing/measurement.js","webpack://StravaModern/./node_modules/@sentry/utils/esm/buildPolyfills/_optionalChain.js","webpack://StravaModern/./node_modules/@sentry/core/esm/utils/isSentryRequestUrl.js","webpack://StravaModern/./node_modules/@sentry/utils/esm/isBrowser.js","webpack://StravaModern/./node_modules/@sentry/replay/esm/index.js","webpack://StravaModern/./node_modules/@sentry/utils/esm/buildPolyfills/_nullishCoalesce.js","webpack://StravaModern/./node_modules/@sentry-internal/feedback/esm/index.js","webpack://StravaModern/./node_modules/@sentry/core/esm/transports/offline.js","webpack://StravaModern/./node_modules/@sentry/browser/esm/transports/offline.js","webpack://StravaModern/./node_modules/@sentry/browser/esm/profiling/utils.js","webpack://StravaModern/./node_modules/@sentry/browser/esm/profiling/hubextensions.js","webpack://StravaModern/./node_modules/@sentry/browser/esm/profiling/integration.js","webpack://StravaModern/./node_modules/@sentry/browser/esm/index.js","webpack://StravaModern/./node_modules/@sentry/utils/esm/instrument/console.js","webpack://StravaModern/./node_modules/@sentry/utils/esm/severity.js","webpack://StravaModern/./node_modules/@sentry/utils/esm/url.js","webpack://StravaModern/./node_modules/@sentry/browser/esm/integrations/breadcrumbs.js","webpack://StravaModern/./node_modules/@sentry/browser/esm/integrations/dedupe.js","webpack://StravaModern/./node_modules/@sentry/browser/esm/integrations/globalhandlers.js","webpack://StravaModern/./node_modules/@sentry/browser/esm/integrations/httpcontext.js","webpack://StravaModern/./node_modules/@sentry/browser/esm/integrations/linkederrors.js","webpack://StravaModern/./node_modules/@sentry/browser/esm/integrations/trycatch.js","webpack://StravaModern/./node_modules/@sentry/browser/esm/sdk.js","webpack://StravaModern/./node_modules/@sentry/core/esm/sdk.js","webpack://StravaModern/./node_modules/@sentry/browser/esm/stack-parsers.js","webpack://StravaModern/./node_modules/@sentry/browser/esm/transports/utils.js","webpack://StravaModern/./node_modules/@sentry/browser/esm/transports/fetch.js","webpack://StravaModern/./node_modules/@sentry/browser/esm/transports/xhr.js","webpack://StravaModern/./node_modules/@sentry/browser/esm/userfeedback.js","webpack://StravaModern/./node_modules/@sentry/core/esm/api.js","webpack://StravaModern/./node_modules/@sentry/core/esm/metrics/envelope.js","webpack://StravaModern/./node_modules/@sentry/core/esm/baseclient.js","webpack://StravaModern/./node_modules/@sentry/core/esm/constants.js","webpack://StravaModern/./node_modules/@sentry/core/esm/debug-build.js","webpack://StravaModern/./node_modules/@sentry/core/esm/envelope.js","webpack://StravaModern/./node_modules/@sentry/core/esm/eventProcessors.js","webpack://StravaModern/./node_modules/@sentry/core/esm/exports.js","webpack://StravaModern/./node_modules/@sentry/core/esm/hub.js","webpack://StravaModern/./node_modules/@sentry/core/esm/integration.js","webpack://StravaModern/./node_modules/@sentry/core/esm/integrations/functiontostring.js","webpack://StravaModern/./node_modules/@sentry/core/esm/integrations/inboundfilters.js","webpack://StravaModern/./node_modules/@sentry/core/esm/metrics/constants.js","webpack://StravaModern/./node_modules/@sentry/core/esm/metrics/utils.js","webpack://StravaModern/./node_modules/@sentry/core/esm/scope.js","webpack://StravaModern/./node_modules/@sentry/core/esm/semanticAttributes.js","webpack://StravaModern/./node_modules/@sentry/core/esm/session.js","webpack://StravaModern/./node_modules/@sentry/core/esm/tracing/dynamicSamplingContext.js","webpack://StravaModern/./node_modules/@sentry/core/esm/tracing/errors.js","webpack://StravaModern/./node_modules/@sentry/core/esm/tracing/sampling.js","webpack://StravaModern/./node_modules/@sentry/core/esm/tracing/hubextensions.js","webpack://StravaModern/./node_modules/@sentry/core/esm/tracing/idletransaction.js","webpack://StravaModern/./node_modules/@sentry/core/esm/tracing/span.js","webpack://StravaModern/./node_modules/@sentry/core/esm/utils/handleCallbackErrors.js","webpack://StravaModern/./node_modules/@sentry/core/esm/tracing/trace.js","webpack://StravaModern/./node_modules/@sentry/core/esm/tracing/transaction.js","webpack://StravaModern/./node_modules/@sentry/core/esm/tracing/utils.js","webpack://StravaModern/./node_modules/@sentry/utils/esm/promisebuffer.js","webpack://StravaModern/./node_modules/@sentry/core/esm/transports/base.js","webpack://StravaModern/./node_modules/@sentry/core/esm/utils/applyScopeDataToEvent.js","webpack://StravaModern/./node_modules/@sentry/core/esm/utils/hasTracingEnabled.js","webpack://StravaModern/./node_modules/@sentry/core/esm/utils/prepareEvent.js","webpack://StravaModern/./node_modules/@sentry/core/esm/utils/spanUtils.js","webpack://StravaModern/./node_modules/@sentry/core/esm/version.js","webpack://StravaModern/./node_modules/@sentry/utils/esm/aggregate-errors.js","webpack://StravaModern/./node_modules/@sentry/utils/esm/baggage.js","webpack://StravaModern/./node_modules/@sentry/utils/esm/browser.js","webpack://StravaModern/./node_modules/@sentry/utils/esm/debug-build.js","webpack://StravaModern/./node_modules/@sentry/utils/esm/dsn.js","webpack://StravaModern/./node_modules/@sentry/utils/esm/env.js","webpack://StravaModern/./node_modules/@sentry/utils/esm/envelope.js","webpack://StravaModern/./node_modules/@sentry/utils/esm/error.js","webpack://StravaModern/./node_modules/@sentry/utils/esm/instrument/_handlers.js","webpack://StravaModern/./node_modules/@sentry/utils/esm/instrument/dom.js","webpack://StravaModern/./node_modules/@sentry/utils/esm/instrument/fetch.js","webpack://StravaModern/./node_modules/@sentry/utils/esm/instrument/globalError.js","webpack://StravaModern/./node_modules/@sentry/utils/esm/instrument/globalUnhandledRejection.js","webpack://StravaModern/./node_modules/@sentry/utils/esm/vendor/supportsHistory.js","webpack://StravaModern/./node_modules/@sentry/utils/esm/instrument/history.js","webpack://StravaModern/./node_modules/@sentry/utils/esm/instrument/xhr.js","webpack://StravaModern/./node_modules/@sentry/utils/esm/is.js","webpack://StravaModern/./node_modules/@sentry/utils/esm/logger.js","webpack://StravaModern/./node_modules/@sentry/utils/esm/misc.js","webpack://StravaModern/./node_modules/@sentry/utils/esm/node.js","webpack://StravaModern/./node_modules/@sentry/utils/esm/normalize.js","webpack://StravaModern/./node_modules/@sentry/utils/esm/memo.js","webpack://StravaModern/./node_modules/@sentry/utils/esm/object.js","webpack://StravaModern/./node_modules/@sentry/utils/esm/ratelimit.js","webpack://StravaModern/./node_modules/@sentry/utils/esm/stacktrace.js","webpack://StravaModern/./node_modules/@sentry/utils/esm/string.js","webpack://StravaModern/./node_modules/@sentry/utils/esm/supports.js","webpack://StravaModern/./node_modules/@sentry/utils/esm/syncpromise.js","webpack://StravaModern/./node_modules/@sentry/utils/esm/time.js","webpack://StravaModern/./node_modules/@sentry/utils/esm/tracing.js","webpack://StravaModern/./node_modules/@sentry/utils/esm/worldwide.js","webpack://StravaModern/./node_modules/object-assign/index.js","webpack://StravaModern/./node_modules/react/cjs/react.production.min.js","webpack://StravaModern/./node_modules/react/index.js"],"sourcesContent":["import MediaQuery from 'react-responsive';\n\nexport const breakpoints: {\n [key: string]: number;\n} = {\n screenXs: 480,\n screenXsMax: 767,\n screenSm: 768,\n screenSmMax: 991,\n screenMd: 992,\n screenMdMax: 1199,\n screenLg: 1200,\n screenLgMax: 1249,\n screenXl: 1250\n};\n\nexport const matchMaxMedia = {\n screenXs() {\n return window.matchMedia(`(max-width: ${breakpoints.screenXs}px)`).matches;\n },\n\n screenXsMax() {\n return window.matchMedia(`(max-width: ${breakpoints.screenXsMax}px)`)\n .matches;\n },\n\n screenSm() {\n return window.matchMedia(`(max-width: ${breakpoints.screenSm}px)`).matches;\n },\n\n screenSmMax() {\n return window.matchMedia(`(max-width: ${breakpoints.screenSmMax}px)`)\n .matches;\n },\n\n screenMd() {\n return window.matchMedia(`(max-width: ${breakpoints.screenMd}px)`).matches;\n },\n\n screenMdMax() {\n return window.matchMedia(`(max-width: ${breakpoints.screenMdMax}px)`)\n .matches;\n },\n\n screenLg() {\n return window.matchMedia(`(max-width: ${breakpoints.screenLg}px)`).matches;\n },\n\n screenLgMax() {\n return window.matchMedia(`(max-width: ${breakpoints.screenLgMax}px)`)\n .matches;\n },\n\n screenXl() {\n return window.matchMedia(`(max-width: ${breakpoints.screenXl}px)`).matches;\n }\n};\n\nexport const matchMinMedia = {\n screenXs() {\n return window.matchMedia(`(min-width: ${breakpoints.screenXs}px)`).matches;\n },\n\n screenSm() {\n return window.matchMedia(`(min-width: ${breakpoints.screenSm}px)`).matches;\n },\n\n screenMd() {\n return window.matchMedia(`(min-width: ${breakpoints.screenMd}px)`).matches;\n },\n\n screenLg() {\n return window.matchMedia(`(min-width: ${breakpoints.screenLg}px)`).matches;\n },\n\n screenXl() {\n return window.matchMedia(`(min-width: ${breakpoints.screenXl}px)`).matches;\n }\n};\n\nexport default MediaQuery;\n","(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"react\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([\"react\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"MediaQuery\"] = factory(require(\"react\"));\n\telse\n\t\troot[\"MediaQuery\"] = factory(root[\"React\"]);\n})(typeof self !== 'undefined' ? self : this, function(__WEBPACK_EXTERNAL_MODULE_6__) {\nreturn \n\n\n// WEBPACK FOOTER //\n// webpack/universalModuleDefinition","(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"react\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([\"react\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"MediaQuery\"] = factory(require(\"react\"));\n\telse\n\t\troot[\"MediaQuery\"] = factory(root[\"React\"]);\n})(typeof self !== 'undefined' ? self : this, function(__WEBPACK_EXTERNAL_MODULE_6__) {\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/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\ti: moduleId,\n/******/ \t\t\tl: false,\n/******/ \t\t\texports: {}\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.l = 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// define getter function for harmony exports\n/******/ \t__webpack_require__.d = function(exports, name, getter) {\n/******/ \t\tif(!__webpack_require__.o(exports, name)) {\n/******/ \t\t\tObject.defineProperty(exports, name, {\n/******/ \t\t\t\tconfigurable: false,\n/******/ \t\t\t\tenumerable: true,\n/******/ \t\t\t\tget: getter\n/******/ \t\t\t});\n/******/ \t\t}\n/******/ \t};\n/******/\n/******/ \t// getDefaultExport function for compatibility with non-harmony modules\n/******/ \t__webpack_require__.n = function(module) {\n/******/ \t\tvar getter = module && module.__esModule ?\n/******/ \t\t\tfunction getDefault() { return module['default']; } :\n/******/ \t\t\tfunction getModuleExports() { return module; };\n/******/ \t\t__webpack_require__.d(getter, 'a', getter);\n/******/ \t\treturn getter;\n/******/ \t};\n/******/\n/******/ \t// Object.prototype.hasOwnProperty.call\n/******/ \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(__webpack_require__.s = 5);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ (function(module, exports, __webpack_require__) {\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\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\nif (true) {\n var ReactIs = __webpack_require__(1);\n\n // By explicitly using `prop-types` you are opting into new development behavior.\n // http://fb.me/prop-types-in-prod\n var throwOnDirectAccess = true;\n module.exports = __webpack_require__(8)(ReactIs.isElement, throwOnDirectAccess);\n} else {\n // By explicitly using `prop-types` you are opting into new production behavior.\n // http://fb.me/prop-types-in-prod\n module.exports = require('./factoryWithThrowingShims')();\n}\n\n\n/***/ }),\n/* 1 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nif (false) {\n module.exports = require('./cjs/react-is.production.min.js');\n} else {\n module.exports = __webpack_require__(7);\n}\n\n\n/***/ }),\n/* 2 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\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\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nmodule.exports = ReactPropTypesSecret;\n\n\n/***/ }),\n/* 3 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* eslint-disable no-var, prefer-template */\nvar uppercasePattern = /[A-Z]/g\nvar msPattern = /^ms-/\nvar cache = {}\n\nfunction toHyphenLower(match) {\n return '-' + match.toLowerCase()\n}\n\nfunction hyphenateStyleName(name) {\n if (cache.hasOwnProperty(name)) {\n return cache[name]\n }\n\n var hName = name.replace(uppercasePattern, toHyphenLower)\n return (cache[name] = msPattern.test(hName) ? '-' + hName : hName)\n}\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (hyphenateStyleName);\n\n\n/***/ }),\n/* 4 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_prop_types__ = __webpack_require__(0);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_prop_types___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_prop_types__);\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n\nvar stringOrNumber = __WEBPACK_IMPORTED_MODULE_0_prop_types___default.a.oneOfType([__WEBPACK_IMPORTED_MODULE_0_prop_types___default.a.string, __WEBPACK_IMPORTED_MODULE_0_prop_types___default.a.number]); // properties that match media queries\n\nvar matchers = {\n orientation: __WEBPACK_IMPORTED_MODULE_0_prop_types___default.a.oneOf(['portrait', 'landscape']),\n scan: __WEBPACK_IMPORTED_MODULE_0_prop_types___default.a.oneOf(['progressive', 'interlace']),\n aspectRatio: __WEBPACK_IMPORTED_MODULE_0_prop_types___default.a.string,\n deviceAspectRatio: __WEBPACK_IMPORTED_MODULE_0_prop_types___default.a.string,\n height: stringOrNumber,\n deviceHeight: stringOrNumber,\n width: stringOrNumber,\n deviceWidth: stringOrNumber,\n color: __WEBPACK_IMPORTED_MODULE_0_prop_types___default.a.bool,\n colorIndex: __WEBPACK_IMPORTED_MODULE_0_prop_types___default.a.bool,\n monochrome: __WEBPACK_IMPORTED_MODULE_0_prop_types___default.a.bool,\n resolution: stringOrNumber // media features\n\n};\n\nvar features = _objectSpread({\n minAspectRatio: __WEBPACK_IMPORTED_MODULE_0_prop_types___default.a.string,\n maxAspectRatio: __WEBPACK_IMPORTED_MODULE_0_prop_types___default.a.string,\n minDeviceAspectRatio: __WEBPACK_IMPORTED_MODULE_0_prop_types___default.a.string,\n maxDeviceAspectRatio: __WEBPACK_IMPORTED_MODULE_0_prop_types___default.a.string,\n minHeight: stringOrNumber,\n maxHeight: stringOrNumber,\n minDeviceHeight: stringOrNumber,\n maxDeviceHeight: stringOrNumber,\n minWidth: stringOrNumber,\n maxWidth: stringOrNumber,\n minDeviceWidth: stringOrNumber,\n maxDeviceWidth: stringOrNumber,\n minColor: __WEBPACK_IMPORTED_MODULE_0_prop_types___default.a.number,\n maxColor: __WEBPACK_IMPORTED_MODULE_0_prop_types___default.a.number,\n minColorIndex: __WEBPACK_IMPORTED_MODULE_0_prop_types___default.a.number,\n maxColorIndex: __WEBPACK_IMPORTED_MODULE_0_prop_types___default.a.number,\n minMonochrome: __WEBPACK_IMPORTED_MODULE_0_prop_types___default.a.number,\n maxMonochrome: __WEBPACK_IMPORTED_MODULE_0_prop_types___default.a.number,\n minResolution: stringOrNumber,\n maxResolution: stringOrNumber\n}, matchers); // media types\n\n\nvar types = {\n all: __WEBPACK_IMPORTED_MODULE_0_prop_types___default.a.bool,\n grid: __WEBPACK_IMPORTED_MODULE_0_prop_types___default.a.bool,\n aural: __WEBPACK_IMPORTED_MODULE_0_prop_types___default.a.bool,\n braille: __WEBPACK_IMPORTED_MODULE_0_prop_types___default.a.bool,\n handheld: __WEBPACK_IMPORTED_MODULE_0_prop_types___default.a.bool,\n print: __WEBPACK_IMPORTED_MODULE_0_prop_types___default.a.bool,\n projection: __WEBPACK_IMPORTED_MODULE_0_prop_types___default.a.bool,\n screen: __WEBPACK_IMPORTED_MODULE_0_prop_types___default.a.bool,\n tty: __WEBPACK_IMPORTED_MODULE_0_prop_types___default.a.bool,\n tv: __WEBPACK_IMPORTED_MODULE_0_prop_types___default.a.bool,\n embossed: __WEBPACK_IMPORTED_MODULE_0_prop_types___default.a.bool\n};\n\nvar all = _objectSpread({}, types, features); // add the type property\n\n\nmatchers.type = Object.keys(types);\n/* harmony default export */ __webpack_exports__[\"a\"] = ({\n all: all,\n types: types,\n matchers: matchers,\n features: features\n});\n\n/***/ }),\n/* 5 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\nObject.defineProperty(__webpack_exports__, \"__esModule\", { value: true });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return MediaQueryContextConsumer; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"MediaQuery\", function() { return MediaQuery; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Context\", function() { return Context; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_react__ = __webpack_require__(6);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_react___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_react__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_prop_types__ = __webpack_require__(0);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_prop_types___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_1_prop_types__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2_matchmediaquery__ = __webpack_require__(11);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2_matchmediaquery___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_2_matchmediaquery__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3_hyphenate_style_name__ = __webpack_require__(3);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__mediaQuery__ = __webpack_require__(4);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__toQuery__ = __webpack_require__(13);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"toQuery\", function() { return __WEBPACK_IMPORTED_MODULE_5__toQuery__[\"a\"]; });\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n\n\n\n\n\n\nvar defaultTypes = {\n component: __WEBPACK_IMPORTED_MODULE_1_prop_types___default.a.node,\n query: __WEBPACK_IMPORTED_MODULE_1_prop_types___default.a.string,\n values: __WEBPACK_IMPORTED_MODULE_1_prop_types___default.a.shape(__WEBPACK_IMPORTED_MODULE_4__mediaQuery__[\"a\" /* default */].matchers),\n children: __WEBPACK_IMPORTED_MODULE_1_prop_types___default.a.oneOfType([__WEBPACK_IMPORTED_MODULE_1_prop_types___default.a.node, __WEBPACK_IMPORTED_MODULE_1_prop_types___default.a.func]),\n onChange: __WEBPACK_IMPORTED_MODULE_1_prop_types___default.a.func\n};\nvar excludedQueryKeys = Object.keys(defaultTypes);\n\nvar omit = function omit(object, keys) {\n var newObject = _objectSpread({}, object);\n\n keys.forEach(function (key) {\n return delete newObject[key];\n });\n return newObject;\n};\n\nvar getValues = function getValues(_ref) {\n var values = _ref.values;\n if (!values) return null;\n var keys = Object.keys(values);\n if (keys.length === 0) return null;\n return keys.reduce(function (result, key) {\n result[Object(__WEBPACK_IMPORTED_MODULE_3_hyphenate_style_name__[\"a\" /* default */])(key)] = values[key];\n return result;\n }, {});\n};\n\nvar getQuery = function getQuery(props) {\n return props.query || Object(__WEBPACK_IMPORTED_MODULE_5__toQuery__[\"a\" /* default */])(omit(props, excludedQueryKeys));\n};\n\nvar MediaQuery =\n/*#__PURE__*/\nfunction (_React$Component) {\n _inherits(MediaQuery, _React$Component);\n\n function MediaQuery() {\n var _getPrototypeOf2;\n\n var _this;\n\n _classCallCheck(this, MediaQuery);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _possibleConstructorReturn(this, (_getPrototypeOf2 = _getPrototypeOf(MediaQuery)).call.apply(_getPrototypeOf2, [this].concat(args)));\n\n _defineProperty(_assertThisInitialized(_this), \"state\", {\n matches: false,\n mq: null,\n query: '',\n values: null\n });\n\n _defineProperty(_assertThisInitialized(_this), \"componentDidMount\", function () {\n _this.state.mq.addListener(_this.updateMatches); // make sure match is correct since status could have since first render and now\n\n\n _this.updateMatches();\n });\n\n _defineProperty(_assertThisInitialized(_this), \"componentDidUpdate\", function (prevProps, prevState) {\n if (_this.state.mq !== prevState.mq) {\n _this.cleanupMediaQuery(prevState.mq);\n\n _this.state.mq.addListener(_this.updateMatches); // we don't need to call updateMatches here because even if the old mq fired before\n // we could safely remove it, updateMatches refers to the new one mq instance\n // and it will be accurate.\n\n }\n\n if (_this.props.onChange && prevState.matches !== _this.state.matches) {\n _this.props.onChange(_this.state.matches);\n }\n });\n\n _defineProperty(_assertThisInitialized(_this), \"componentWillUnmount\", function () {\n _this._unmounted = true;\n\n _this.cleanupMediaQuery(_this.state.mq);\n });\n\n _defineProperty(_assertThisInitialized(_this), \"cleanupMediaQuery\", function (mq) {\n if (!mq) return;\n mq.removeListener(_this.updateMatches);\n mq.dispose();\n });\n\n _defineProperty(_assertThisInitialized(_this), \"updateMatches\", function () {\n if (_this._unmounted) return;\n if (_this.state.mq.matches === _this.state.matches) return;\n\n _this.setState({\n matches: _this.state.mq.matches\n });\n });\n\n _defineProperty(_assertThisInitialized(_this), \"render\", function () {\n if (typeof _this.props.children === 'function') {\n return _this.props.children(_this.state.matches);\n }\n\n return _this.state.matches ? _this.props.children : null;\n });\n\n return _this;\n }\n\n _createClass(MediaQuery, null, [{\n key: \"getDerivedStateFromProps\",\n value: function getDerivedStateFromProps(props, state) {\n var query = getQuery(props);\n if (!query) throw new Error('Invalid or missing MediaQuery!');\n var values = getValues(props);\n if (query === state.query && values === state.values) return null; // nothing changed\n\n var mq = __WEBPACK_IMPORTED_MODULE_2_matchmediaquery___default()(query, values || {}, !!values);\n return {\n matches: mq.matches,\n mq: mq,\n query: query,\n values: values\n };\n }\n }]);\n\n return MediaQuery;\n}(__WEBPACK_IMPORTED_MODULE_0_react___default.a.Component);\n\n_defineProperty(MediaQuery, \"displayName\", 'MediaQuery');\n\n_defineProperty(MediaQuery, \"defaultProps\", {\n values: null\n});\n\nvar Context = __WEBPACK_IMPORTED_MODULE_0_react___default.a.createContext();\n\nvar MediaQueryContextConsumer = function MediaQueryContextConsumer(props) {\n var values = __WEBPACK_IMPORTED_MODULE_0_react___default.a.useContext(Context);\n return __WEBPACK_IMPORTED_MODULE_0_react___default.a.createElement(MediaQuery, _extends({\n values: values\n }, props));\n};\n\nMediaQueryContextConsumer.displayName = \"MediaQueryContextConsumer\";\n\n\n/***/ }),\n/* 6 */\n/***/ (function(module, exports) {\n\nmodule.exports = __WEBPACK_EXTERNAL_MODULE_6__;\n\n/***/ }),\n/* 7 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/** @license React v16.8.6\n * react-is.development.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\n\n\n\nif (true) {\n (function() {\n'use strict';\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\n// The Symbol used to tag the ReactElement-like types. If there is no native Symbol\n// nor polyfill, then a plain number is used for performance.\nvar hasSymbol = typeof Symbol === 'function' && Symbol.for;\n\nvar REACT_ELEMENT_TYPE = hasSymbol ? Symbol.for('react.element') : 0xeac7;\nvar REACT_PORTAL_TYPE = hasSymbol ? Symbol.for('react.portal') : 0xeaca;\nvar REACT_FRAGMENT_TYPE = hasSymbol ? Symbol.for('react.fragment') : 0xeacb;\nvar REACT_STRICT_MODE_TYPE = hasSymbol ? Symbol.for('react.strict_mode') : 0xeacc;\nvar REACT_PROFILER_TYPE = hasSymbol ? Symbol.for('react.profiler') : 0xead2;\nvar REACT_PROVIDER_TYPE = hasSymbol ? Symbol.for('react.provider') : 0xeacd;\nvar REACT_CONTEXT_TYPE = hasSymbol ? Symbol.for('react.context') : 0xeace;\nvar REACT_ASYNC_MODE_TYPE = hasSymbol ? Symbol.for('react.async_mode') : 0xeacf;\nvar REACT_CONCURRENT_MODE_TYPE = hasSymbol ? Symbol.for('react.concurrent_mode') : 0xeacf;\nvar REACT_FORWARD_REF_TYPE = hasSymbol ? Symbol.for('react.forward_ref') : 0xead0;\nvar REACT_SUSPENSE_TYPE = hasSymbol ? Symbol.for('react.suspense') : 0xead1;\nvar REACT_MEMO_TYPE = hasSymbol ? Symbol.for('react.memo') : 0xead3;\nvar REACT_LAZY_TYPE = hasSymbol ? Symbol.for('react.lazy') : 0xead4;\n\nfunction isValidElementType(type) {\n return typeof type === 'string' || typeof type === 'function' ||\n // Note: its typeof might be other than 'symbol' or 'number' if it's a polyfill.\n type === REACT_FRAGMENT_TYPE || type === REACT_CONCURRENT_MODE_TYPE || type === REACT_PROFILER_TYPE || type === REACT_STRICT_MODE_TYPE || type === REACT_SUSPENSE_TYPE || typeof type === 'object' && type !== null && (type.$$typeof === REACT_LAZY_TYPE || type.$$typeof === REACT_MEMO_TYPE || type.$$typeof === REACT_PROVIDER_TYPE || type.$$typeof === REACT_CONTEXT_TYPE || type.$$typeof === REACT_FORWARD_REF_TYPE);\n}\n\n/**\n * Forked from fbjs/warning:\n * https://github.com/facebook/fbjs/blob/e66ba20ad5be433eb54423f2b097d829324d9de6/packages/fbjs/src/__forks__/warning.js\n *\n * Only change is we use console.warn instead of console.error,\n * and do nothing when 'console' is not supported.\n * This really simplifies the code.\n * ---\n * Similar to invariant but only logs a warning if the condition is not met.\n * This can be used to log issues in development environments in critical\n * paths. Removing the logging code for production environments will keep the\n * same logic and follow the same code paths.\n */\n\nvar lowPriorityWarning = function () {};\n\n{\n var printWarning = function (format) {\n for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n var argIndex = 0;\n var message = 'Warning: ' + format.replace(/%s/g, function () {\n return args[argIndex++];\n });\n if (typeof console !== 'undefined') {\n console.warn(message);\n }\n try {\n // --- Welcome to debugging React ---\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch (x) {}\n };\n\n lowPriorityWarning = function (condition, format) {\n if (format === undefined) {\n throw new Error('`lowPriorityWarning(condition, format, ...args)` requires a warning ' + 'message argument');\n }\n if (!condition) {\n for (var _len2 = arguments.length, args = Array(_len2 > 2 ? _len2 - 2 : 0), _key2 = 2; _key2 < _len2; _key2++) {\n args[_key2 - 2] = arguments[_key2];\n }\n\n printWarning.apply(undefined, [format].concat(args));\n }\n };\n}\n\nvar lowPriorityWarning$1 = lowPriorityWarning;\n\nfunction typeOf(object) {\n if (typeof object === 'object' && object !== null) {\n var $$typeof = object.$$typeof;\n switch ($$typeof) {\n case REACT_ELEMENT_TYPE:\n var type = object.type;\n\n switch (type) {\n case REACT_ASYNC_MODE_TYPE:\n case REACT_CONCURRENT_MODE_TYPE:\n case REACT_FRAGMENT_TYPE:\n case REACT_PROFILER_TYPE:\n case REACT_STRICT_MODE_TYPE:\n case REACT_SUSPENSE_TYPE:\n return type;\n default:\n var $$typeofType = type && type.$$typeof;\n\n switch ($$typeofType) {\n case REACT_CONTEXT_TYPE:\n case REACT_FORWARD_REF_TYPE:\n case REACT_PROVIDER_TYPE:\n return $$typeofType;\n default:\n return $$typeof;\n }\n }\n case REACT_LAZY_TYPE:\n case REACT_MEMO_TYPE:\n case REACT_PORTAL_TYPE:\n return $$typeof;\n }\n }\n\n return undefined;\n}\n\n// AsyncMode is deprecated along with isAsyncMode\nvar AsyncMode = REACT_ASYNC_MODE_TYPE;\nvar ConcurrentMode = REACT_CONCURRENT_MODE_TYPE;\nvar ContextConsumer = REACT_CONTEXT_TYPE;\nvar ContextProvider = REACT_PROVIDER_TYPE;\nvar Element = REACT_ELEMENT_TYPE;\nvar ForwardRef = REACT_FORWARD_REF_TYPE;\nvar Fragment = REACT_FRAGMENT_TYPE;\nvar Lazy = REACT_LAZY_TYPE;\nvar Memo = REACT_MEMO_TYPE;\nvar Portal = REACT_PORTAL_TYPE;\nvar Profiler = REACT_PROFILER_TYPE;\nvar StrictMode = REACT_STRICT_MODE_TYPE;\nvar Suspense = REACT_SUSPENSE_TYPE;\n\nvar hasWarnedAboutDeprecatedIsAsyncMode = false;\n\n// AsyncMode should be deprecated\nfunction isAsyncMode(object) {\n {\n if (!hasWarnedAboutDeprecatedIsAsyncMode) {\n hasWarnedAboutDeprecatedIsAsyncMode = true;\n lowPriorityWarning$1(false, 'The ReactIs.isAsyncMode() alias has been deprecated, ' + 'and will be removed in React 17+. Update your code to use ' + 'ReactIs.isConcurrentMode() instead. It has the exact same API.');\n }\n }\n return isConcurrentMode(object) || typeOf(object) === REACT_ASYNC_MODE_TYPE;\n}\nfunction isConcurrentMode(object) {\n return typeOf(object) === REACT_CONCURRENT_MODE_TYPE;\n}\nfunction isContextConsumer(object) {\n return typeOf(object) === REACT_CONTEXT_TYPE;\n}\nfunction isContextProvider(object) {\n return typeOf(object) === REACT_PROVIDER_TYPE;\n}\nfunction isElement(object) {\n return typeof object === 'object' && object !== null && object.$$typeof === REACT_ELEMENT_TYPE;\n}\nfunction isForwardRef(object) {\n return typeOf(object) === REACT_FORWARD_REF_TYPE;\n}\nfunction isFragment(object) {\n return typeOf(object) === REACT_FRAGMENT_TYPE;\n}\nfunction isLazy(object) {\n return typeOf(object) === REACT_LAZY_TYPE;\n}\nfunction isMemo(object) {\n return typeOf(object) === REACT_MEMO_TYPE;\n}\nfunction isPortal(object) {\n return typeOf(object) === REACT_PORTAL_TYPE;\n}\nfunction isProfiler(object) {\n return typeOf(object) === REACT_PROFILER_TYPE;\n}\nfunction isStrictMode(object) {\n return typeOf(object) === REACT_STRICT_MODE_TYPE;\n}\nfunction isSuspense(object) {\n return typeOf(object) === REACT_SUSPENSE_TYPE;\n}\n\nexports.typeOf = typeOf;\nexports.AsyncMode = AsyncMode;\nexports.ConcurrentMode = ConcurrentMode;\nexports.ContextConsumer = ContextConsumer;\nexports.ContextProvider = ContextProvider;\nexports.Element = Element;\nexports.ForwardRef = ForwardRef;\nexports.Fragment = Fragment;\nexports.Lazy = Lazy;\nexports.Memo = Memo;\nexports.Portal = Portal;\nexports.Profiler = Profiler;\nexports.StrictMode = StrictMode;\nexports.Suspense = Suspense;\nexports.isValidElementType = isValidElementType;\nexports.isAsyncMode = isAsyncMode;\nexports.isConcurrentMode = isConcurrentMode;\nexports.isContextConsumer = isContextConsumer;\nexports.isContextProvider = isContextProvider;\nexports.isElement = isElement;\nexports.isForwardRef = isForwardRef;\nexports.isFragment = isFragment;\nexports.isLazy = isLazy;\nexports.isMemo = isMemo;\nexports.isPortal = isPortal;\nexports.isProfiler = isProfiler;\nexports.isStrictMode = isStrictMode;\nexports.isSuspense = isSuspense;\n })();\n}\n\n\n/***/ }),\n/* 8 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\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\n\nvar ReactIs = __webpack_require__(1);\nvar assign = __webpack_require__(9);\n\nvar ReactPropTypesSecret = __webpack_require__(2);\nvar checkPropTypes = __webpack_require__(10);\n\nvar has = Function.call.bind(Object.prototype.hasOwnProperty);\nvar printWarning = function() {};\n\nif (true) {\n printWarning = function(text) {\n var message = 'Warning: ' + text;\n if (typeof console !== 'undefined') {\n console.error(message);\n }\n try {\n // --- Welcome to debugging React ---\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch (x) {}\n };\n}\n\nfunction emptyFunctionThatReturnsNull() {\n return null;\n}\n\nmodule.exports = function(isValidElement, throwOnDirectAccess) {\n /* global Symbol */\n var ITERATOR_SYMBOL = typeof Symbol === 'function' && Symbol.iterator;\n var FAUX_ITERATOR_SYMBOL = '@@iterator'; // Before Symbol spec.\n\n /**\n * Returns the iterator method function contained on the iterable object.\n *\n * Be sure to invoke the function with the iterable as context:\n *\n * var iteratorFn = getIteratorFn(myIterable);\n * if (iteratorFn) {\n * var iterator = iteratorFn.call(myIterable);\n * ...\n * }\n *\n * @param {?object} maybeIterable\n * @return {?function}\n */\n function getIteratorFn(maybeIterable) {\n var iteratorFn = maybeIterable && (ITERATOR_SYMBOL && maybeIterable[ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL]);\n if (typeof iteratorFn === 'function') {\n return iteratorFn;\n }\n }\n\n /**\n * Collection of methods that allow declaration and validation of props that are\n * supplied to React components. Example usage:\n *\n * var Props = require('ReactPropTypes');\n * var MyArticle = React.createClass({\n * propTypes: {\n * // An optional string prop named \"description\".\n * description: Props.string,\n *\n * // A required enum prop named \"category\".\n * category: Props.oneOf(['News','Photos']).isRequired,\n *\n * // A prop named \"dialog\" that requires an instance of Dialog.\n * dialog: Props.instanceOf(Dialog).isRequired\n * },\n * render: function() { ... }\n * });\n *\n * A more formal specification of how these methods are used:\n *\n * type := array|bool|func|object|number|string|oneOf([...])|instanceOf(...)\n * decl := ReactPropTypes.{type}(.isRequired)?\n *\n * Each and every declaration produces a function with the same signature. This\n * allows the creation of custom validation functions. For example:\n *\n * var MyLink = React.createClass({\n * propTypes: {\n * // An optional string or URI prop named \"href\".\n * href: function(props, propName, componentName) {\n * var propValue = props[propName];\n * if (propValue != null && typeof propValue !== 'string' &&\n * !(propValue instanceof URI)) {\n * return new Error(\n * 'Expected a string or an URI for ' + propName + ' in ' +\n * componentName\n * );\n * }\n * }\n * },\n * render: function() {...}\n * });\n *\n * @internal\n */\n\n var ANONYMOUS = '<>';\n\n // Important!\n // Keep this list in sync with production version in `./factoryWithThrowingShims.js`.\n var ReactPropTypes = {\n array: createPrimitiveTypeChecker('array'),\n bool: createPrimitiveTypeChecker('boolean'),\n func: createPrimitiveTypeChecker('function'),\n number: createPrimitiveTypeChecker('number'),\n object: createPrimitiveTypeChecker('object'),\n string: createPrimitiveTypeChecker('string'),\n symbol: createPrimitiveTypeChecker('symbol'),\n\n any: createAnyTypeChecker(),\n arrayOf: createArrayOfTypeChecker,\n element: createElementTypeChecker(),\n elementType: createElementTypeTypeChecker(),\n instanceOf: createInstanceTypeChecker,\n node: createNodeChecker(),\n objectOf: createObjectOfTypeChecker,\n oneOf: createEnumTypeChecker,\n oneOfType: createUnionTypeChecker,\n shape: createShapeTypeChecker,\n exact: createStrictShapeTypeChecker,\n };\n\n /**\n * inlined Object.is polyfill to avoid requiring consumers ship their own\n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is\n */\n /*eslint-disable no-self-compare*/\n function is(x, y) {\n // SameValue algorithm\n if (x === y) {\n // Steps 1-5, 7-10\n // Steps 6.b-6.e: +0 != -0\n return x !== 0 || 1 / x === 1 / y;\n } else {\n // Step 6.a: NaN == NaN\n return x !== x && y !== y;\n }\n }\n /*eslint-enable no-self-compare*/\n\n /**\n * We use an Error-like object for backward compatibility as people may call\n * PropTypes directly and inspect their output. However, we don't use real\n * Errors anymore. We don't inspect their stack anyway, and creating them\n * is prohibitively expensive if they are created too often, such as what\n * happens in oneOfType() for any type before the one that matched.\n */\n function PropTypeError(message) {\n this.message = message;\n this.stack = '';\n }\n // Make `instanceof Error` still work for returned errors.\n PropTypeError.prototype = Error.prototype;\n\n function createChainableTypeChecker(validate) {\n if (true) {\n var manualPropTypeCallCache = {};\n var manualPropTypeWarningCount = 0;\n }\n function checkType(isRequired, props, propName, componentName, location, propFullName, secret) {\n componentName = componentName || ANONYMOUS;\n propFullName = propFullName || propName;\n\n if (secret !== ReactPropTypesSecret) {\n if (throwOnDirectAccess) {\n // New behavior only for users of `prop-types` package\n var err = new Error(\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use `PropTypes.checkPropTypes()` to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n err.name = 'Invariant Violation';\n throw err;\n } else if (\"development\" !== 'production' && typeof console !== 'undefined') {\n // Old behavior for people using React.PropTypes\n var cacheKey = componentName + ':' + propName;\n if (\n !manualPropTypeCallCache[cacheKey] &&\n // Avoid spamming the console because they are often not actionable except for lib authors\n manualPropTypeWarningCount < 3\n ) {\n printWarning(\n 'You are manually calling a React.PropTypes validation ' +\n 'function for the `' + propFullName + '` prop on `' + componentName + '`. This is deprecated ' +\n 'and will throw in the standalone `prop-types` package. ' +\n 'You may be seeing this warning due to a third-party PropTypes ' +\n 'library. See https://fb.me/react-warning-dont-call-proptypes ' + 'for details.'\n );\n manualPropTypeCallCache[cacheKey] = true;\n manualPropTypeWarningCount++;\n }\n }\n }\n if (props[propName] == null) {\n if (isRequired) {\n if (props[propName] === null) {\n return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required ' + ('in `' + componentName + '`, but its value is `null`.'));\n }\n return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required in ' + ('`' + componentName + '`, but its value is `undefined`.'));\n }\n return null;\n } else {\n return validate(props, propName, componentName, location, propFullName);\n }\n }\n\n var chainedCheckType = checkType.bind(null, false);\n chainedCheckType.isRequired = checkType.bind(null, true);\n\n return chainedCheckType;\n }\n\n function createPrimitiveTypeChecker(expectedType) {\n function validate(props, propName, componentName, location, propFullName, secret) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== expectedType) {\n // `propValue` being instance of, say, date/regexp, pass the 'object'\n // check, but we can offer a more precise error message here rather than\n // 'of type `object`'.\n var preciseType = getPreciseType(propValue);\n\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + preciseType + '` supplied to `' + componentName + '`, expected ') + ('`' + expectedType + '`.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createAnyTypeChecker() {\n return createChainableTypeChecker(emptyFunctionThatReturnsNull);\n }\n\n function createArrayOfTypeChecker(typeChecker) {\n function validate(props, propName, componentName, location, propFullName) {\n if (typeof typeChecker !== 'function') {\n return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside arrayOf.');\n }\n var propValue = props[propName];\n if (!Array.isArray(propValue)) {\n var propType = getPropType(propValue);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an array.'));\n }\n for (var i = 0; i < propValue.length; i++) {\n var error = typeChecker(propValue, i, componentName, location, propFullName + '[' + i + ']', ReactPropTypesSecret);\n if (error instanceof Error) {\n return error;\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createElementTypeChecker() {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n if (!isValidElement(propValue)) {\n var propType = getPropType(propValue);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected a single ReactElement.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createElementTypeTypeChecker() {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n if (!ReactIs.isValidElementType(propValue)) {\n var propType = getPropType(propValue);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected a single ReactElement type.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createInstanceTypeChecker(expectedClass) {\n function validate(props, propName, componentName, location, propFullName) {\n if (!(props[propName] instanceof expectedClass)) {\n var expectedClassName = expectedClass.name || ANONYMOUS;\n var actualClassName = getClassName(props[propName]);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + actualClassName + '` supplied to `' + componentName + '`, expected ') + ('instance of `' + expectedClassName + '`.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createEnumTypeChecker(expectedValues) {\n if (!Array.isArray(expectedValues)) {\n if (true) {\n if (arguments.length > 1) {\n printWarning(\n 'Invalid arguments supplied to oneOf, expected an array, got ' + arguments.length + ' arguments. ' +\n 'A common mistake is to write oneOf(x, y, z) instead of oneOf([x, y, z]).'\n );\n } else {\n printWarning('Invalid argument supplied to oneOf, expected an array.');\n }\n }\n return emptyFunctionThatReturnsNull;\n }\n\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n for (var i = 0; i < expectedValues.length; i++) {\n if (is(propValue, expectedValues[i])) {\n return null;\n }\n }\n\n var valuesString = JSON.stringify(expectedValues, function replacer(key, value) {\n var type = getPreciseType(value);\n if (type === 'symbol') {\n return String(value);\n }\n return value;\n });\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of value `' + String(propValue) + '` ' + ('supplied to `' + componentName + '`, expected one of ' + valuesString + '.'));\n }\n return createChainableTypeChecker(validate);\n }\n\n function createObjectOfTypeChecker(typeChecker) {\n function validate(props, propName, componentName, location, propFullName) {\n if (typeof typeChecker !== 'function') {\n return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside objectOf.');\n }\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== 'object') {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an object.'));\n }\n for (var key in propValue) {\n if (has(propValue, key)) {\n var error = typeChecker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n if (error instanceof Error) {\n return error;\n }\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createUnionTypeChecker(arrayOfTypeCheckers) {\n if (!Array.isArray(arrayOfTypeCheckers)) {\n true ? printWarning('Invalid argument supplied to oneOfType, expected an instance of array.') : void 0;\n return emptyFunctionThatReturnsNull;\n }\n\n for (var i = 0; i < arrayOfTypeCheckers.length; i++) {\n var checker = arrayOfTypeCheckers[i];\n if (typeof checker !== 'function') {\n printWarning(\n 'Invalid argument supplied to oneOfType. Expected an array of check functions, but ' +\n 'received ' + getPostfixForTypeWarning(checker) + ' at index ' + i + '.'\n );\n return emptyFunctionThatReturnsNull;\n }\n }\n\n function validate(props, propName, componentName, location, propFullName) {\n for (var i = 0; i < arrayOfTypeCheckers.length; i++) {\n var checker = arrayOfTypeCheckers[i];\n if (checker(props, propName, componentName, location, propFullName, ReactPropTypesSecret) == null) {\n return null;\n }\n }\n\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`.'));\n }\n return createChainableTypeChecker(validate);\n }\n\n function createNodeChecker() {\n function validate(props, propName, componentName, location, propFullName) {\n if (!isNode(props[propName])) {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`, expected a ReactNode.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createShapeTypeChecker(shapeTypes) {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== 'object') {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.'));\n }\n for (var key in shapeTypes) {\n var checker = shapeTypes[key];\n if (!checker) {\n continue;\n }\n var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n if (error) {\n return error;\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createStrictShapeTypeChecker(shapeTypes) {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== 'object') {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.'));\n }\n // We need to check all keys in case some are required but missing from\n // props.\n var allKeys = assign({}, props[propName], shapeTypes);\n for (var key in allKeys) {\n var checker = shapeTypes[key];\n if (!checker) {\n return new PropTypeError(\n 'Invalid ' + location + ' `' + propFullName + '` key `' + key + '` supplied to `' + componentName + '`.' +\n '\\nBad object: ' + JSON.stringify(props[propName], null, ' ') +\n '\\nValid keys: ' + JSON.stringify(Object.keys(shapeTypes), null, ' ')\n );\n }\n var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n if (error) {\n return error;\n }\n }\n return null;\n }\n\n return createChainableTypeChecker(validate);\n }\n\n function isNode(propValue) {\n switch (typeof propValue) {\n case 'number':\n case 'string':\n case 'undefined':\n return true;\n case 'boolean':\n return !propValue;\n case 'object':\n if (Array.isArray(propValue)) {\n return propValue.every(isNode);\n }\n if (propValue === null || isValidElement(propValue)) {\n return true;\n }\n\n var iteratorFn = getIteratorFn(propValue);\n if (iteratorFn) {\n var iterator = iteratorFn.call(propValue);\n var step;\n if (iteratorFn !== propValue.entries) {\n while (!(step = iterator.next()).done) {\n if (!isNode(step.value)) {\n return false;\n }\n }\n } else {\n // Iterator will provide entry [k,v] tuples rather than values.\n while (!(step = iterator.next()).done) {\n var entry = step.value;\n if (entry) {\n if (!isNode(entry[1])) {\n return false;\n }\n }\n }\n }\n } else {\n return false;\n }\n\n return true;\n default:\n return false;\n }\n }\n\n function isSymbol(propType, propValue) {\n // Native Symbol.\n if (propType === 'symbol') {\n return true;\n }\n\n // falsy value can't be a Symbol\n if (!propValue) {\n return false;\n }\n\n // 19.4.3.5 Symbol.prototype[@@toStringTag] === 'Symbol'\n if (propValue['@@toStringTag'] === 'Symbol') {\n return true;\n }\n\n // Fallback for non-spec compliant Symbols which are polyfilled.\n if (typeof Symbol === 'function' && propValue instanceof Symbol) {\n return true;\n }\n\n return false;\n }\n\n // Equivalent of `typeof` but with special handling for array and regexp.\n function getPropType(propValue) {\n var propType = typeof propValue;\n if (Array.isArray(propValue)) {\n return 'array';\n }\n if (propValue instanceof RegExp) {\n // Old webkits (at least until Android 4.0) return 'function' rather than\n // 'object' for typeof a RegExp. We'll normalize this here so that /bla/\n // passes PropTypes.object.\n return 'object';\n }\n if (isSymbol(propType, propValue)) {\n return 'symbol';\n }\n return propType;\n }\n\n // This handles more types than `getPropType`. Only used for error messages.\n // See `createPrimitiveTypeChecker`.\n function getPreciseType(propValue) {\n if (typeof propValue === 'undefined' || propValue === null) {\n return '' + propValue;\n }\n var propType = getPropType(propValue);\n if (propType === 'object') {\n if (propValue instanceof Date) {\n return 'date';\n } else if (propValue instanceof RegExp) {\n return 'regexp';\n }\n }\n return propType;\n }\n\n // Returns a string that is postfixed to a warning about an invalid type.\n // For example, \"undefined\" or \"of type array\"\n function getPostfixForTypeWarning(value) {\n var type = getPreciseType(value);\n switch (type) {\n case 'array':\n case 'object':\n return 'an ' + type;\n case 'boolean':\n case 'date':\n case 'regexp':\n return 'a ' + type;\n default:\n return type;\n }\n }\n\n // Returns class name of the object, if any.\n function getClassName(propValue) {\n if (!propValue.constructor || !propValue.constructor.name) {\n return ANONYMOUS;\n }\n return propValue.constructor.name;\n }\n\n ReactPropTypes.checkPropTypes = checkPropTypes;\n ReactPropTypes.resetWarningCache = checkPropTypes.resetWarningCache;\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n\n\n/***/ }),\n/* 9 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/*\nobject-assign\n(c) Sindre Sorhus\n@license MIT\n*/\n\n\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\n\n/***/ }),\n/* 10 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\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\n\nvar printWarning = function() {};\n\nif (true) {\n var ReactPropTypesSecret = __webpack_require__(2);\n var loggedTypeFailures = {};\n var has = Function.call.bind(Object.prototype.hasOwnProperty);\n\n printWarning = function(text) {\n var message = 'Warning: ' + text;\n if (typeof console !== 'undefined') {\n console.error(message);\n }\n try {\n // --- Welcome to debugging React ---\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch (x) {}\n };\n}\n\n/**\n * Assert that the values match with the type specs.\n * Error messages are memorized and will only be shown once.\n *\n * @param {object} typeSpecs Map of name to a ReactPropType\n * @param {object} values Runtime values that need to be type-checked\n * @param {string} location e.g. \"prop\", \"context\", \"child context\"\n * @param {string} componentName Name of the component for error messages.\n * @param {?Function} getStack Returns the component stack.\n * @private\n */\nfunction checkPropTypes(typeSpecs, values, location, componentName, getStack) {\n if (true) {\n for (var typeSpecName in typeSpecs) {\n if (has(typeSpecs, typeSpecName)) {\n var error;\n // Prop type validation may throw. In case they do, we don't want to\n // fail the render phase where it didn't fail before. So we log it.\n // After these have been cleaned up, we'll let them throw.\n try {\n // This is intentionally an invariant that gets caught. It's the same\n // behavior as without this statement except with a better message.\n if (typeof typeSpecs[typeSpecName] !== 'function') {\n var err = Error(\n (componentName || 'React class') + ': ' + location + ' type `' + typeSpecName + '` is invalid; ' +\n 'it must be a function, usually from the `prop-types` package, but received `' + typeof typeSpecs[typeSpecName] + '`.'\n );\n err.name = 'Invariant Violation';\n throw err;\n }\n error = typeSpecs[typeSpecName](values, typeSpecName, componentName, location, null, ReactPropTypesSecret);\n } catch (ex) {\n error = ex;\n }\n if (error && !(error instanceof Error)) {\n printWarning(\n (componentName || 'React class') + ': type specification of ' +\n location + ' `' + typeSpecName + '` is invalid; the type checker ' +\n 'function must return `null` or an `Error` but returned a ' + typeof error + '. ' +\n 'You may have forgotten to pass an argument to the type checker ' +\n 'creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and ' +\n 'shape all require an argument).'\n );\n }\n if (error instanceof Error && !(error.message in loggedTypeFailures)) {\n // Only monitor this failure once because there tends to be a lot of the\n // same error.\n loggedTypeFailures[error.message] = true;\n\n var stack = getStack ? getStack() : '';\n\n printWarning(\n 'Failed ' + location + ' type: ' + error.message + (stack != null ? stack : '')\n );\n }\n }\n }\n }\n}\n\n/**\n * Resets warning cache when testing.\n *\n * @private\n */\ncheckPropTypes.resetWarningCache = function() {\n if (true) {\n loggedTypeFailures = {};\n }\n}\n\nmodule.exports = checkPropTypes;\n\n\n/***/ }),\n/* 11 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar staticMatch = __webpack_require__(12).match;\nvar dynamicMatch = typeof window !== 'undefined' ? window.matchMedia : null;\n\n// our fake MediaQueryList\nfunction Mql(query, values, forceStatic){\n var self = this;\n if(dynamicMatch && !forceStatic){\n var mql = dynamicMatch.call(window, query);\n this.matches = mql.matches;\n this.media = mql.media;\n // TODO: is there a time it makes sense to remove this listener?\n mql.addListener(update);\n } else {\n this.matches = staticMatch(query, values);\n this.media = query;\n }\n\n this.addListener = addListener;\n this.removeListener = removeListener;\n this.dispose = dispose;\n\n function addListener(listener){\n if(mql){\n mql.addListener(listener);\n }\n }\n\n function removeListener(listener){\n if(mql){\n mql.removeListener(listener);\n }\n }\n\n // update ourselves!\n function update(evt){\n self.matches = evt.matches;\n self.media = evt.media;\n }\n\n function dispose(){\n if(mql){\n mql.removeListener(update);\n }\n }\n}\n\nfunction matchMedia(query, values, forceStatic){\n return new Mql(query, values, forceStatic);\n}\n\nmodule.exports = matchMedia;\n\n\n/***/ }),\n/* 12 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/*\nCopyright (c) 2014, Yahoo! Inc. All rights reserved.\nCopyrights licensed under the New BSD License.\nSee the accompanying LICENSE file for terms.\n*/\n\n\n\nexports.match = matchQuery;\nexports.parse = parseQuery;\n\n// -----------------------------------------------------------------------------\n\nvar RE_MEDIA_QUERY = /(?:(only|not)?\\s*([^\\s\\(\\)]+)(?:\\s*and)?\\s*)?(.+)?/i,\n RE_MQ_EXPRESSION = /\\(\\s*([^\\s\\:\\)]+)\\s*(?:\\:\\s*([^\\s\\)]+))?\\s*\\)/,\n RE_MQ_FEATURE = /^(?:(min|max)-)?(.+)/,\n RE_LENGTH_UNIT = /(em|rem|px|cm|mm|in|pt|pc)?$/,\n RE_RESOLUTION_UNIT = /(dpi|dpcm|dppx)?$/;\n\nfunction matchQuery(mediaQuery, values) {\n return parseQuery(mediaQuery).some(function (query) {\n var inverse = query.inverse;\n\n // Either the parsed or specified `type` is \"all\", or the types must be\n // equal for a match.\n var typeMatch = query.type === 'all' || values.type === query.type;\n\n // Quit early when `type` doesn't match, but take \"not\" into account.\n if ((typeMatch && inverse) || !(typeMatch || inverse)) {\n return false;\n }\n\n var expressionsMatch = query.expressions.every(function (expression) {\n var feature = expression.feature,\n modifier = expression.modifier,\n expValue = expression.value,\n value = values[feature];\n\n // Missing or falsy values don't match.\n if (!value) { return false; }\n\n switch (feature) {\n case 'orientation':\n case 'scan':\n return value.toLowerCase() === expValue.toLowerCase();\n\n case 'width':\n case 'height':\n case 'device-width':\n case 'device-height':\n expValue = toPx(expValue);\n value = toPx(value);\n break;\n\n case 'resolution':\n expValue = toDpi(expValue);\n value = toDpi(value);\n break;\n\n case 'aspect-ratio':\n case 'device-aspect-ratio':\n case /* Deprecated */ 'device-pixel-ratio':\n expValue = toDecimal(expValue);\n value = toDecimal(value);\n break;\n\n case 'grid':\n case 'color':\n case 'color-index':\n case 'monochrome':\n expValue = parseInt(expValue, 10) || 1;\n value = parseInt(value, 10) || 0;\n break;\n }\n\n switch (modifier) {\n case 'min': return value >= expValue;\n case 'max': return value <= expValue;\n default : return value === expValue;\n }\n });\n\n return (expressionsMatch && !inverse) || (!expressionsMatch && inverse);\n });\n}\n\nfunction parseQuery(mediaQuery) {\n return mediaQuery.split(',').map(function (query) {\n query = query.trim();\n\n var captures = query.match(RE_MEDIA_QUERY),\n modifier = captures[1],\n type = captures[2],\n expressions = captures[3] || '',\n parsed = {};\n\n parsed.inverse = !!modifier && modifier.toLowerCase() === 'not';\n parsed.type = type ? type.toLowerCase() : 'all';\n\n // Split expressions into a list.\n expressions = expressions.match(/\\([^\\)]+\\)/g) || [];\n\n parsed.expressions = expressions.map(function (expression) {\n var captures = expression.match(RE_MQ_EXPRESSION),\n feature = captures[1].toLowerCase().match(RE_MQ_FEATURE);\n\n return {\n modifier: feature[1],\n feature : feature[2],\n value : captures[2]\n };\n });\n\n return parsed;\n });\n}\n\n// -- Utilities ----------------------------------------------------------------\n\nfunction toDecimal(ratio) {\n var decimal = Number(ratio),\n numbers;\n\n if (!decimal) {\n numbers = ratio.match(/^(\\d+)\\s*\\/\\s*(\\d+)$/);\n decimal = numbers[1] / numbers[2];\n }\n\n return decimal;\n}\n\nfunction toDpi(resolution) {\n var value = parseFloat(resolution),\n units = String(resolution).match(RE_RESOLUTION_UNIT)[1];\n\n switch (units) {\n case 'dpcm': return value / 2.54;\n case 'dppx': return value * 96;\n default : return value;\n }\n}\n\nfunction toPx(length) {\n var value = parseFloat(length),\n units = String(length).match(RE_LENGTH_UNIT)[1];\n\n switch (units) {\n case 'em' : return value * 16;\n case 'rem': return value * 16;\n case 'cm' : return value * 96 / 2.54;\n case 'mm' : return value * 96 / 2.54 / 10;\n case 'in' : return value * 96;\n case 'pt' : return value * 72;\n case 'pc' : return value * 72 / 12;\n default : return value;\n }\n}\n\n\n/***/ }),\n/* 13 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_hyphenate_style_name__ = __webpack_require__(3);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__mediaQuery__ = __webpack_require__(4);\n\n\n\nvar negate = function negate(cond) {\n return \"not \".concat(cond);\n};\n\nfunction keyVal(k, v) {\n var realKey = Object(__WEBPACK_IMPORTED_MODULE_0_hyphenate_style_name__[\"a\" /* default */])(k); // px shorthand\n\n if (typeof v === 'number') {\n v = \"\".concat(v, \"px\");\n }\n\n if (v === true) {\n return k;\n }\n\n if (v === false) {\n return negate(k);\n }\n\n return \"(\".concat(realKey, \": \").concat(v, \")\");\n}\n\nfunction join(conds) {\n return conds.join(' and ');\n}\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (function (obj) {\n var rules = [];\n Object.keys(__WEBPACK_IMPORTED_MODULE_1__mediaQuery__[\"a\" /* default */].all).forEach(function (k) {\n var v = obj[k];\n\n if (v != null) {\n rules.push(keyVal(k, v));\n }\n });\n return join(rules);\n});\n\n/***/ })\n/******/ ]);\n});\n\n\n// WEBPACK FOOTER //\n// dist/react-responsive.js"," \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 \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\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.l = 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// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, {\n \t\t\t\tconfigurable: false,\n \t\t\t\tenumerable: true,\n \t\t\t\tget: getter\n \t\t\t});\n \t\t}\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 5);\n\n\n\n// WEBPACK FOOTER //\n// webpack/bootstrap a240fde86c0ad9ba24cd","/**\n * Copyright (c) 2013-present, Facebook, Inc.\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\nif (process.env.NODE_ENV !== 'production') {\n var ReactIs = require('react-is');\n\n // By explicitly using `prop-types` you are opting into new development behavior.\n // http://fb.me/prop-types-in-prod\n var throwOnDirectAccess = true;\n module.exports = require('./factoryWithTypeCheckers')(ReactIs.isElement, throwOnDirectAccess);\n} else {\n // By explicitly using `prop-types` you are opting into new production behavior.\n // http://fb.me/prop-types-in-prod\n module.exports = require('./factoryWithThrowingShims')();\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/prop-types/index.js\n// module id = 0\n// module chunks = 0","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-is.production.min.js');\n} else {\n module.exports = require('./cjs/react-is.development.js');\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-is/index.js\n// module id = 1\n// module chunks = 0","/**\n * Copyright (c) 2013-present, Facebook, Inc.\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';\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nmodule.exports = ReactPropTypesSecret;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/prop-types/lib/ReactPropTypesSecret.js\n// module id = 2\n// module chunks = 0","/* eslint-disable no-var, prefer-template */\nvar uppercasePattern = /[A-Z]/g\nvar msPattern = /^ms-/\nvar cache = {}\n\nfunction toHyphenLower(match) {\n return '-' + match.toLowerCase()\n}\n\nfunction hyphenateStyleName(name) {\n if (cache.hasOwnProperty(name)) {\n return cache[name]\n }\n\n var hName = name.replace(uppercasePattern, toHyphenLower)\n return (cache[name] = msPattern.test(hName) ? '-' + hName : hName)\n}\n\nexport default hyphenateStyleName\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/hyphenate-style-name/index.js\n// module id = 3\n// module chunks = 0","import PropTypes from 'prop-types'\n\nconst stringOrNumber = PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.number\n])\n\n// properties that match media queries\nconst matchers = {\n orientation: PropTypes.oneOf([\n 'portrait',\n 'landscape'\n ]),\n\n scan: PropTypes.oneOf([\n 'progressive',\n 'interlace'\n ]),\n\n aspectRatio: PropTypes.string,\n deviceAspectRatio: PropTypes.string,\n\n height: stringOrNumber,\n deviceHeight: stringOrNumber,\n\n width: stringOrNumber,\n deviceWidth: stringOrNumber,\n\n color: PropTypes.bool,\n\n colorIndex: PropTypes.bool,\n\n monochrome: PropTypes.bool,\n resolution: stringOrNumber\n}\n\n// media features\nconst features = {\n minAspectRatio: PropTypes.string,\n maxAspectRatio: PropTypes.string,\n minDeviceAspectRatio: PropTypes.string,\n maxDeviceAspectRatio: PropTypes.string,\n\n minHeight: stringOrNumber,\n maxHeight: stringOrNumber,\n minDeviceHeight: stringOrNumber,\n maxDeviceHeight: stringOrNumber,\n\n minWidth: stringOrNumber,\n maxWidth: stringOrNumber,\n minDeviceWidth: stringOrNumber,\n maxDeviceWidth: stringOrNumber,\n\n minColor: PropTypes.number,\n maxColor: PropTypes.number,\n\n minColorIndex: PropTypes.number,\n maxColorIndex: PropTypes.number,\n\n minMonochrome: PropTypes.number,\n maxMonochrome: PropTypes.number,\n\n minResolution: stringOrNumber,\n maxResolution: stringOrNumber,\n\n ...matchers\n}\n\n// media types\nconst types = {\n all: PropTypes.bool,\n grid: PropTypes.bool,\n aural: PropTypes.bool,\n braille: PropTypes.bool,\n handheld: PropTypes.bool,\n print: PropTypes.bool,\n projection: PropTypes.bool,\n screen: PropTypes.bool,\n tty: PropTypes.bool,\n tv: PropTypes.bool,\n embossed: PropTypes.bool\n}\n\nconst all = { ...types, ...features }\n\n// add the type property\nmatchers.type = Object.keys(types)\n\nexport default {\n all: all,\n types: types,\n matchers: matchers,\n features: features\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/mediaQuery.js","import React from 'react'\nimport PropTypes from 'prop-types'\nimport matchMedia from 'matchmediaquery'\nimport hyphenate from 'hyphenate-style-name'\nimport mediaQuery from './mediaQuery'\nimport toQuery from './toQuery'\n\nconst defaultTypes = {\n component: PropTypes.node,\n query: PropTypes.string,\n values: PropTypes.shape(mediaQuery.matchers),\n children: PropTypes.oneOfType([ PropTypes.node, PropTypes.func ]),\n onChange: PropTypes.func\n}\n\nconst excludedQueryKeys = Object.keys(defaultTypes)\n\nconst omit = (object, keys) => {\n const newObject = { ...object }\n keys.forEach(key => delete newObject[key])\n return newObject\n}\n\nconst getValues = ({ values }) => {\n if (!values) return null\n const keys = Object.keys(values)\n if (keys.length === 0) return null\n return keys.reduce((result, key) => {\n result[hyphenate(key)] = values[key]\n return result\n }, {})\n}\n\nconst getQuery = (props) =>\n props.query || toQuery(omit(props, excludedQueryKeys))\n\nclass MediaQuery extends React.Component {\n static displayName = 'MediaQuery'\n static defaultProps = {\n values: null\n }\n\n static getDerivedStateFromProps(props, state) {\n const query = getQuery(props)\n if (!query) throw new Error('Invalid or missing MediaQuery!')\n const values = getValues(props)\n if (query === state.query && values === state.values) return null // nothing changed\n const mq = matchMedia(query, values || {}, !!values)\n return {\n matches: mq.matches,\n mq,\n query,\n values\n }\n }\n\n state = {\n matches: false,\n mq: null,\n query: '',\n values: null\n }\n\n componentDidMount = () => {\n this.state.mq.addListener(this.updateMatches)\n // make sure match is correct since status could have since first render and now\n this.updateMatches()\n }\n\n componentDidUpdate = (prevProps, prevState) => {\n if (this.state.mq !== prevState.mq) {\n this.cleanupMediaQuery(prevState.mq)\n this.state.mq.addListener(this.updateMatches)\n // we don't need to call updateMatches here because even if the old mq fired before\n // we could safely remove it, updateMatches refers to the new one mq instance\n // and it will be accurate.\n }\n if (this.props.onChange && prevState.matches !== this.state.matches) {\n this.props.onChange(this.state.matches)\n }\n }\n\n componentWillUnmount = () => {\n this._unmounted = true\n this.cleanupMediaQuery(this.state.mq)\n }\n\n cleanupMediaQuery = (mq) => {\n if (!mq) return\n mq.removeListener(this.updateMatches)\n mq.dispose()\n }\n\n updateMatches = () => {\n if (this._unmounted) return\n if (this.state.mq.matches === this.state.matches) return\n this.setState({ matches: this.state.mq.matches })\n }\n\n render = () => {\n if (typeof this.props.children === 'function') {\n return this.props.children(this.state.matches)\n }\n return this.state.matches ? this.props.children : null\n }\n}\n\nconst Context = React.createContext()\n\nconst MediaQueryContextConsumer = props => {\n const values = React.useContext(Context)\n return \n}\n\nMediaQueryContextConsumer.displayName = \"MediaQueryContextConsumer\"\n\nexport {\n MediaQueryContextConsumer as default,\n MediaQuery,\n Context,\n toQuery\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/index.js","module.exports = __WEBPACK_EXTERNAL_MODULE_6__;\n\n\n//////////////////\n// WEBPACK FOOTER\n// external {\"commonjs\":\"react\",\"commonjs2\":\"react\",\"amd\":\"react\",\"root\":\"React\"}\n// module id = 6\n// module chunks = 0","/** @license React v16.8.6\n * react-is.development.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';\n\n\n\nif (process.env.NODE_ENV !== \"production\") {\n (function() {\n'use strict';\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\n// The Symbol used to tag the ReactElement-like types. If there is no native Symbol\n// nor polyfill, then a plain number is used for performance.\nvar hasSymbol = typeof Symbol === 'function' && Symbol.for;\n\nvar REACT_ELEMENT_TYPE = hasSymbol ? Symbol.for('react.element') : 0xeac7;\nvar REACT_PORTAL_TYPE = hasSymbol ? Symbol.for('react.portal') : 0xeaca;\nvar REACT_FRAGMENT_TYPE = hasSymbol ? Symbol.for('react.fragment') : 0xeacb;\nvar REACT_STRICT_MODE_TYPE = hasSymbol ? Symbol.for('react.strict_mode') : 0xeacc;\nvar REACT_PROFILER_TYPE = hasSymbol ? Symbol.for('react.profiler') : 0xead2;\nvar REACT_PROVIDER_TYPE = hasSymbol ? Symbol.for('react.provider') : 0xeacd;\nvar REACT_CONTEXT_TYPE = hasSymbol ? Symbol.for('react.context') : 0xeace;\nvar REACT_ASYNC_MODE_TYPE = hasSymbol ? Symbol.for('react.async_mode') : 0xeacf;\nvar REACT_CONCURRENT_MODE_TYPE = hasSymbol ? Symbol.for('react.concurrent_mode') : 0xeacf;\nvar REACT_FORWARD_REF_TYPE = hasSymbol ? Symbol.for('react.forward_ref') : 0xead0;\nvar REACT_SUSPENSE_TYPE = hasSymbol ? Symbol.for('react.suspense') : 0xead1;\nvar REACT_MEMO_TYPE = hasSymbol ? Symbol.for('react.memo') : 0xead3;\nvar REACT_LAZY_TYPE = hasSymbol ? Symbol.for('react.lazy') : 0xead4;\n\nfunction isValidElementType(type) {\n return typeof type === 'string' || typeof type === 'function' ||\n // Note: its typeof might be other than 'symbol' or 'number' if it's a polyfill.\n type === REACT_FRAGMENT_TYPE || type === REACT_CONCURRENT_MODE_TYPE || type === REACT_PROFILER_TYPE || type === REACT_STRICT_MODE_TYPE || type === REACT_SUSPENSE_TYPE || typeof type === 'object' && type !== null && (type.$$typeof === REACT_LAZY_TYPE || type.$$typeof === REACT_MEMO_TYPE || type.$$typeof === REACT_PROVIDER_TYPE || type.$$typeof === REACT_CONTEXT_TYPE || type.$$typeof === REACT_FORWARD_REF_TYPE);\n}\n\n/**\n * Forked from fbjs/warning:\n * https://github.com/facebook/fbjs/blob/e66ba20ad5be433eb54423f2b097d829324d9de6/packages/fbjs/src/__forks__/warning.js\n *\n * Only change is we use console.warn instead of console.error,\n * and do nothing when 'console' is not supported.\n * This really simplifies the code.\n * ---\n * Similar to invariant but only logs a warning if the condition is not met.\n * This can be used to log issues in development environments in critical\n * paths. Removing the logging code for production environments will keep the\n * same logic and follow the same code paths.\n */\n\nvar lowPriorityWarning = function () {};\n\n{\n var printWarning = function (format) {\n for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n var argIndex = 0;\n var message = 'Warning: ' + format.replace(/%s/g, function () {\n return args[argIndex++];\n });\n if (typeof console !== 'undefined') {\n console.warn(message);\n }\n try {\n // --- Welcome to debugging React ---\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch (x) {}\n };\n\n lowPriorityWarning = function (condition, format) {\n if (format === undefined) {\n throw new Error('`lowPriorityWarning(condition, format, ...args)` requires a warning ' + 'message argument');\n }\n if (!condition) {\n for (var _len2 = arguments.length, args = Array(_len2 > 2 ? _len2 - 2 : 0), _key2 = 2; _key2 < _len2; _key2++) {\n args[_key2 - 2] = arguments[_key2];\n }\n\n printWarning.apply(undefined, [format].concat(args));\n }\n };\n}\n\nvar lowPriorityWarning$1 = lowPriorityWarning;\n\nfunction typeOf(object) {\n if (typeof object === 'object' && object !== null) {\n var $$typeof = object.$$typeof;\n switch ($$typeof) {\n case REACT_ELEMENT_TYPE:\n var type = object.type;\n\n switch (type) {\n case REACT_ASYNC_MODE_TYPE:\n case REACT_CONCURRENT_MODE_TYPE:\n case REACT_FRAGMENT_TYPE:\n case REACT_PROFILER_TYPE:\n case REACT_STRICT_MODE_TYPE:\n case REACT_SUSPENSE_TYPE:\n return type;\n default:\n var $$typeofType = type && type.$$typeof;\n\n switch ($$typeofType) {\n case REACT_CONTEXT_TYPE:\n case REACT_FORWARD_REF_TYPE:\n case REACT_PROVIDER_TYPE:\n return $$typeofType;\n default:\n return $$typeof;\n }\n }\n case REACT_LAZY_TYPE:\n case REACT_MEMO_TYPE:\n case REACT_PORTAL_TYPE:\n return $$typeof;\n }\n }\n\n return undefined;\n}\n\n// AsyncMode is deprecated along with isAsyncMode\nvar AsyncMode = REACT_ASYNC_MODE_TYPE;\nvar ConcurrentMode = REACT_CONCURRENT_MODE_TYPE;\nvar ContextConsumer = REACT_CONTEXT_TYPE;\nvar ContextProvider = REACT_PROVIDER_TYPE;\nvar Element = REACT_ELEMENT_TYPE;\nvar ForwardRef = REACT_FORWARD_REF_TYPE;\nvar Fragment = REACT_FRAGMENT_TYPE;\nvar Lazy = REACT_LAZY_TYPE;\nvar Memo = REACT_MEMO_TYPE;\nvar Portal = REACT_PORTAL_TYPE;\nvar Profiler = REACT_PROFILER_TYPE;\nvar StrictMode = REACT_STRICT_MODE_TYPE;\nvar Suspense = REACT_SUSPENSE_TYPE;\n\nvar hasWarnedAboutDeprecatedIsAsyncMode = false;\n\n// AsyncMode should be deprecated\nfunction isAsyncMode(object) {\n {\n if (!hasWarnedAboutDeprecatedIsAsyncMode) {\n hasWarnedAboutDeprecatedIsAsyncMode = true;\n lowPriorityWarning$1(false, 'The ReactIs.isAsyncMode() alias has been deprecated, ' + 'and will be removed in React 17+. Update your code to use ' + 'ReactIs.isConcurrentMode() instead. It has the exact same API.');\n }\n }\n return isConcurrentMode(object) || typeOf(object) === REACT_ASYNC_MODE_TYPE;\n}\nfunction isConcurrentMode(object) {\n return typeOf(object) === REACT_CONCURRENT_MODE_TYPE;\n}\nfunction isContextConsumer(object) {\n return typeOf(object) === REACT_CONTEXT_TYPE;\n}\nfunction isContextProvider(object) {\n return typeOf(object) === REACT_PROVIDER_TYPE;\n}\nfunction isElement(object) {\n return typeof object === 'object' && object !== null && object.$$typeof === REACT_ELEMENT_TYPE;\n}\nfunction isForwardRef(object) {\n return typeOf(object) === REACT_FORWARD_REF_TYPE;\n}\nfunction isFragment(object) {\n return typeOf(object) === REACT_FRAGMENT_TYPE;\n}\nfunction isLazy(object) {\n return typeOf(object) === REACT_LAZY_TYPE;\n}\nfunction isMemo(object) {\n return typeOf(object) === REACT_MEMO_TYPE;\n}\nfunction isPortal(object) {\n return typeOf(object) === REACT_PORTAL_TYPE;\n}\nfunction isProfiler(object) {\n return typeOf(object) === REACT_PROFILER_TYPE;\n}\nfunction isStrictMode(object) {\n return typeOf(object) === REACT_STRICT_MODE_TYPE;\n}\nfunction isSuspense(object) {\n return typeOf(object) === REACT_SUSPENSE_TYPE;\n}\n\nexports.typeOf = typeOf;\nexports.AsyncMode = AsyncMode;\nexports.ConcurrentMode = ConcurrentMode;\nexports.ContextConsumer = ContextConsumer;\nexports.ContextProvider = ContextProvider;\nexports.Element = Element;\nexports.ForwardRef = ForwardRef;\nexports.Fragment = Fragment;\nexports.Lazy = Lazy;\nexports.Memo = Memo;\nexports.Portal = Portal;\nexports.Profiler = Profiler;\nexports.StrictMode = StrictMode;\nexports.Suspense = Suspense;\nexports.isValidElementType = isValidElementType;\nexports.isAsyncMode = isAsyncMode;\nexports.isConcurrentMode = isConcurrentMode;\nexports.isContextConsumer = isContextConsumer;\nexports.isContextProvider = isContextProvider;\nexports.isElement = isElement;\nexports.isForwardRef = isForwardRef;\nexports.isFragment = isFragment;\nexports.isLazy = isLazy;\nexports.isMemo = isMemo;\nexports.isPortal = isPortal;\nexports.isProfiler = isProfiler;\nexports.isStrictMode = isStrictMode;\nexports.isSuspense = isSuspense;\n })();\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-is/cjs/react-is.development.js\n// module id = 7\n// module chunks = 0","/**\n * Copyright (c) 2013-present, Facebook, Inc.\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';\n\nvar ReactIs = require('react-is');\nvar assign = require('object-assign');\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\nvar checkPropTypes = require('./checkPropTypes');\n\nvar has = Function.call.bind(Object.prototype.hasOwnProperty);\nvar printWarning = function() {};\n\nif (process.env.NODE_ENV !== 'production') {\n printWarning = function(text) {\n var message = 'Warning: ' + text;\n if (typeof console !== 'undefined') {\n console.error(message);\n }\n try {\n // --- Welcome to debugging React ---\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch (x) {}\n };\n}\n\nfunction emptyFunctionThatReturnsNull() {\n return null;\n}\n\nmodule.exports = function(isValidElement, throwOnDirectAccess) {\n /* global Symbol */\n var ITERATOR_SYMBOL = typeof Symbol === 'function' && Symbol.iterator;\n var FAUX_ITERATOR_SYMBOL = '@@iterator'; // Before Symbol spec.\n\n /**\n * Returns the iterator method function contained on the iterable object.\n *\n * Be sure to invoke the function with the iterable as context:\n *\n * var iteratorFn = getIteratorFn(myIterable);\n * if (iteratorFn) {\n * var iterator = iteratorFn.call(myIterable);\n * ...\n * }\n *\n * @param {?object} maybeIterable\n * @return {?function}\n */\n function getIteratorFn(maybeIterable) {\n var iteratorFn = maybeIterable && (ITERATOR_SYMBOL && maybeIterable[ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL]);\n if (typeof iteratorFn === 'function') {\n return iteratorFn;\n }\n }\n\n /**\n * Collection of methods that allow declaration and validation of props that are\n * supplied to React components. Example usage:\n *\n * var Props = require('ReactPropTypes');\n * var MyArticle = React.createClass({\n * propTypes: {\n * // An optional string prop named \"description\".\n * description: Props.string,\n *\n * // A required enum prop named \"category\".\n * category: Props.oneOf(['News','Photos']).isRequired,\n *\n * // A prop named \"dialog\" that requires an instance of Dialog.\n * dialog: Props.instanceOf(Dialog).isRequired\n * },\n * render: function() { ... }\n * });\n *\n * A more formal specification of how these methods are used:\n *\n * type := array|bool|func|object|number|string|oneOf([...])|instanceOf(...)\n * decl := ReactPropTypes.{type}(.isRequired)?\n *\n * Each and every declaration produces a function with the same signature. This\n * allows the creation of custom validation functions. For example:\n *\n * var MyLink = React.createClass({\n * propTypes: {\n * // An optional string or URI prop named \"href\".\n * href: function(props, propName, componentName) {\n * var propValue = props[propName];\n * if (propValue != null && typeof propValue !== 'string' &&\n * !(propValue instanceof URI)) {\n * return new Error(\n * 'Expected a string or an URI for ' + propName + ' in ' +\n * componentName\n * );\n * }\n * }\n * },\n * render: function() {...}\n * });\n *\n * @internal\n */\n\n var ANONYMOUS = '<>';\n\n // Important!\n // Keep this list in sync with production version in `./factoryWithThrowingShims.js`.\n var ReactPropTypes = {\n array: createPrimitiveTypeChecker('array'),\n bool: createPrimitiveTypeChecker('boolean'),\n func: createPrimitiveTypeChecker('function'),\n number: createPrimitiveTypeChecker('number'),\n object: createPrimitiveTypeChecker('object'),\n string: createPrimitiveTypeChecker('string'),\n symbol: createPrimitiveTypeChecker('symbol'),\n\n any: createAnyTypeChecker(),\n arrayOf: createArrayOfTypeChecker,\n element: createElementTypeChecker(),\n elementType: createElementTypeTypeChecker(),\n instanceOf: createInstanceTypeChecker,\n node: createNodeChecker(),\n objectOf: createObjectOfTypeChecker,\n oneOf: createEnumTypeChecker,\n oneOfType: createUnionTypeChecker,\n shape: createShapeTypeChecker,\n exact: createStrictShapeTypeChecker,\n };\n\n /**\n * inlined Object.is polyfill to avoid requiring consumers ship their own\n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is\n */\n /*eslint-disable no-self-compare*/\n function is(x, y) {\n // SameValue algorithm\n if (x === y) {\n // Steps 1-5, 7-10\n // Steps 6.b-6.e: +0 != -0\n return x !== 0 || 1 / x === 1 / y;\n } else {\n // Step 6.a: NaN == NaN\n return x !== x && y !== y;\n }\n }\n /*eslint-enable no-self-compare*/\n\n /**\n * We use an Error-like object for backward compatibility as people may call\n * PropTypes directly and inspect their output. However, we don't use real\n * Errors anymore. We don't inspect their stack anyway, and creating them\n * is prohibitively expensive if they are created too often, such as what\n * happens in oneOfType() for any type before the one that matched.\n */\n function PropTypeError(message) {\n this.message = message;\n this.stack = '';\n }\n // Make `instanceof Error` still work for returned errors.\n PropTypeError.prototype = Error.prototype;\n\n function createChainableTypeChecker(validate) {\n if (process.env.NODE_ENV !== 'production') {\n var manualPropTypeCallCache = {};\n var manualPropTypeWarningCount = 0;\n }\n function checkType(isRequired, props, propName, componentName, location, propFullName, secret) {\n componentName = componentName || ANONYMOUS;\n propFullName = propFullName || propName;\n\n if (secret !== ReactPropTypesSecret) {\n if (throwOnDirectAccess) {\n // New behavior only for users of `prop-types` package\n var err = new Error(\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use `PropTypes.checkPropTypes()` to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n err.name = 'Invariant Violation';\n throw err;\n } else if (process.env.NODE_ENV !== 'production' && typeof console !== 'undefined') {\n // Old behavior for people using React.PropTypes\n var cacheKey = componentName + ':' + propName;\n if (\n !manualPropTypeCallCache[cacheKey] &&\n // Avoid spamming the console because they are often not actionable except for lib authors\n manualPropTypeWarningCount < 3\n ) {\n printWarning(\n 'You are manually calling a React.PropTypes validation ' +\n 'function for the `' + propFullName + '` prop on `' + componentName + '`. This is deprecated ' +\n 'and will throw in the standalone `prop-types` package. ' +\n 'You may be seeing this warning due to a third-party PropTypes ' +\n 'library. See https://fb.me/react-warning-dont-call-proptypes ' + 'for details.'\n );\n manualPropTypeCallCache[cacheKey] = true;\n manualPropTypeWarningCount++;\n }\n }\n }\n if (props[propName] == null) {\n if (isRequired) {\n if (props[propName] === null) {\n return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required ' + ('in `' + componentName + '`, but its value is `null`.'));\n }\n return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required in ' + ('`' + componentName + '`, but its value is `undefined`.'));\n }\n return null;\n } else {\n return validate(props, propName, componentName, location, propFullName);\n }\n }\n\n var chainedCheckType = checkType.bind(null, false);\n chainedCheckType.isRequired = checkType.bind(null, true);\n\n return chainedCheckType;\n }\n\n function createPrimitiveTypeChecker(expectedType) {\n function validate(props, propName, componentName, location, propFullName, secret) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== expectedType) {\n // `propValue` being instance of, say, date/regexp, pass the 'object'\n // check, but we can offer a more precise error message here rather than\n // 'of type `object`'.\n var preciseType = getPreciseType(propValue);\n\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + preciseType + '` supplied to `' + componentName + '`, expected ') + ('`' + expectedType + '`.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createAnyTypeChecker() {\n return createChainableTypeChecker(emptyFunctionThatReturnsNull);\n }\n\n function createArrayOfTypeChecker(typeChecker) {\n function validate(props, propName, componentName, location, propFullName) {\n if (typeof typeChecker !== 'function') {\n return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside arrayOf.');\n }\n var propValue = props[propName];\n if (!Array.isArray(propValue)) {\n var propType = getPropType(propValue);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an array.'));\n }\n for (var i = 0; i < propValue.length; i++) {\n var error = typeChecker(propValue, i, componentName, location, propFullName + '[' + i + ']', ReactPropTypesSecret);\n if (error instanceof Error) {\n return error;\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createElementTypeChecker() {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n if (!isValidElement(propValue)) {\n var propType = getPropType(propValue);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected a single ReactElement.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createElementTypeTypeChecker() {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n if (!ReactIs.isValidElementType(propValue)) {\n var propType = getPropType(propValue);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected a single ReactElement type.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createInstanceTypeChecker(expectedClass) {\n function validate(props, propName, componentName, location, propFullName) {\n if (!(props[propName] instanceof expectedClass)) {\n var expectedClassName = expectedClass.name || ANONYMOUS;\n var actualClassName = getClassName(props[propName]);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + actualClassName + '` supplied to `' + componentName + '`, expected ') + ('instance of `' + expectedClassName + '`.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createEnumTypeChecker(expectedValues) {\n if (!Array.isArray(expectedValues)) {\n if (process.env.NODE_ENV !== 'production') {\n if (arguments.length > 1) {\n printWarning(\n 'Invalid arguments supplied to oneOf, expected an array, got ' + arguments.length + ' arguments. ' +\n 'A common mistake is to write oneOf(x, y, z) instead of oneOf([x, y, z]).'\n );\n } else {\n printWarning('Invalid argument supplied to oneOf, expected an array.');\n }\n }\n return emptyFunctionThatReturnsNull;\n }\n\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n for (var i = 0; i < expectedValues.length; i++) {\n if (is(propValue, expectedValues[i])) {\n return null;\n }\n }\n\n var valuesString = JSON.stringify(expectedValues, function replacer(key, value) {\n var type = getPreciseType(value);\n if (type === 'symbol') {\n return String(value);\n }\n return value;\n });\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of value `' + String(propValue) + '` ' + ('supplied to `' + componentName + '`, expected one of ' + valuesString + '.'));\n }\n return createChainableTypeChecker(validate);\n }\n\n function createObjectOfTypeChecker(typeChecker) {\n function validate(props, propName, componentName, location, propFullName) {\n if (typeof typeChecker !== 'function') {\n return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside objectOf.');\n }\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== 'object') {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an object.'));\n }\n for (var key in propValue) {\n if (has(propValue, key)) {\n var error = typeChecker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n if (error instanceof Error) {\n return error;\n }\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createUnionTypeChecker(arrayOfTypeCheckers) {\n if (!Array.isArray(arrayOfTypeCheckers)) {\n process.env.NODE_ENV !== 'production' ? printWarning('Invalid argument supplied to oneOfType, expected an instance of array.') : void 0;\n return emptyFunctionThatReturnsNull;\n }\n\n for (var i = 0; i < arrayOfTypeCheckers.length; i++) {\n var checker = arrayOfTypeCheckers[i];\n if (typeof checker !== 'function') {\n printWarning(\n 'Invalid argument supplied to oneOfType. Expected an array of check functions, but ' +\n 'received ' + getPostfixForTypeWarning(checker) + ' at index ' + i + '.'\n );\n return emptyFunctionThatReturnsNull;\n }\n }\n\n function validate(props, propName, componentName, location, propFullName) {\n for (var i = 0; i < arrayOfTypeCheckers.length; i++) {\n var checker = arrayOfTypeCheckers[i];\n if (checker(props, propName, componentName, location, propFullName, ReactPropTypesSecret) == null) {\n return null;\n }\n }\n\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`.'));\n }\n return createChainableTypeChecker(validate);\n }\n\n function createNodeChecker() {\n function validate(props, propName, componentName, location, propFullName) {\n if (!isNode(props[propName])) {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`, expected a ReactNode.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createShapeTypeChecker(shapeTypes) {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== 'object') {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.'));\n }\n for (var key in shapeTypes) {\n var checker = shapeTypes[key];\n if (!checker) {\n continue;\n }\n var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n if (error) {\n return error;\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createStrictShapeTypeChecker(shapeTypes) {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== 'object') {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.'));\n }\n // We need to check all keys in case some are required but missing from\n // props.\n var allKeys = assign({}, props[propName], shapeTypes);\n for (var key in allKeys) {\n var checker = shapeTypes[key];\n if (!checker) {\n return new PropTypeError(\n 'Invalid ' + location + ' `' + propFullName + '` key `' + key + '` supplied to `' + componentName + '`.' +\n '\\nBad object: ' + JSON.stringify(props[propName], null, ' ') +\n '\\nValid keys: ' + JSON.stringify(Object.keys(shapeTypes), null, ' ')\n );\n }\n var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n if (error) {\n return error;\n }\n }\n return null;\n }\n\n return createChainableTypeChecker(validate);\n }\n\n function isNode(propValue) {\n switch (typeof propValue) {\n case 'number':\n case 'string':\n case 'undefined':\n return true;\n case 'boolean':\n return !propValue;\n case 'object':\n if (Array.isArray(propValue)) {\n return propValue.every(isNode);\n }\n if (propValue === null || isValidElement(propValue)) {\n return true;\n }\n\n var iteratorFn = getIteratorFn(propValue);\n if (iteratorFn) {\n var iterator = iteratorFn.call(propValue);\n var step;\n if (iteratorFn !== propValue.entries) {\n while (!(step = iterator.next()).done) {\n if (!isNode(step.value)) {\n return false;\n }\n }\n } else {\n // Iterator will provide entry [k,v] tuples rather than values.\n while (!(step = iterator.next()).done) {\n var entry = step.value;\n if (entry) {\n if (!isNode(entry[1])) {\n return false;\n }\n }\n }\n }\n } else {\n return false;\n }\n\n return true;\n default:\n return false;\n }\n }\n\n function isSymbol(propType, propValue) {\n // Native Symbol.\n if (propType === 'symbol') {\n return true;\n }\n\n // falsy value can't be a Symbol\n if (!propValue) {\n return false;\n }\n\n // 19.4.3.5 Symbol.prototype[@@toStringTag] === 'Symbol'\n if (propValue['@@toStringTag'] === 'Symbol') {\n return true;\n }\n\n // Fallback for non-spec compliant Symbols which are polyfilled.\n if (typeof Symbol === 'function' && propValue instanceof Symbol) {\n return true;\n }\n\n return false;\n }\n\n // Equivalent of `typeof` but with special handling for array and regexp.\n function getPropType(propValue) {\n var propType = typeof propValue;\n if (Array.isArray(propValue)) {\n return 'array';\n }\n if (propValue instanceof RegExp) {\n // Old webkits (at least until Android 4.0) return 'function' rather than\n // 'object' for typeof a RegExp. We'll normalize this here so that /bla/\n // passes PropTypes.object.\n return 'object';\n }\n if (isSymbol(propType, propValue)) {\n return 'symbol';\n }\n return propType;\n }\n\n // This handles more types than `getPropType`. Only used for error messages.\n // See `createPrimitiveTypeChecker`.\n function getPreciseType(propValue) {\n if (typeof propValue === 'undefined' || propValue === null) {\n return '' + propValue;\n }\n var propType = getPropType(propValue);\n if (propType === 'object') {\n if (propValue instanceof Date) {\n return 'date';\n } else if (propValue instanceof RegExp) {\n return 'regexp';\n }\n }\n return propType;\n }\n\n // Returns a string that is postfixed to a warning about an invalid type.\n // For example, \"undefined\" or \"of type array\"\n function getPostfixForTypeWarning(value) {\n var type = getPreciseType(value);\n switch (type) {\n case 'array':\n case 'object':\n return 'an ' + type;\n case 'boolean':\n case 'date':\n case 'regexp':\n return 'a ' + type;\n default:\n return type;\n }\n }\n\n // Returns class name of the object, if any.\n function getClassName(propValue) {\n if (!propValue.constructor || !propValue.constructor.name) {\n return ANONYMOUS;\n }\n return propValue.constructor.name;\n }\n\n ReactPropTypes.checkPropTypes = checkPropTypes;\n ReactPropTypes.resetWarningCache = checkPropTypes.resetWarningCache;\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/prop-types/factoryWithTypeCheckers.js\n// module id = 8\n// module chunks = 0","/*\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\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/object-assign/index.js\n// module id = 9\n// module chunks = 0","/**\n * Copyright (c) 2013-present, Facebook, Inc.\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';\n\nvar printWarning = function() {};\n\nif (process.env.NODE_ENV !== 'production') {\n var ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n var loggedTypeFailures = {};\n var has = Function.call.bind(Object.prototype.hasOwnProperty);\n\n printWarning = function(text) {\n var message = 'Warning: ' + text;\n if (typeof console !== 'undefined') {\n console.error(message);\n }\n try {\n // --- Welcome to debugging React ---\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch (x) {}\n };\n}\n\n/**\n * Assert that the values match with the type specs.\n * Error messages are memorized and will only be shown once.\n *\n * @param {object} typeSpecs Map of name to a ReactPropType\n * @param {object} values Runtime values that need to be type-checked\n * @param {string} location e.g. \"prop\", \"context\", \"child context\"\n * @param {string} componentName Name of the component for error messages.\n * @param {?Function} getStack Returns the component stack.\n * @private\n */\nfunction checkPropTypes(typeSpecs, values, location, componentName, getStack) {\n if (process.env.NODE_ENV !== 'production') {\n for (var typeSpecName in typeSpecs) {\n if (has(typeSpecs, typeSpecName)) {\n var error;\n // Prop type validation may throw. In case they do, we don't want to\n // fail the render phase where it didn't fail before. So we log it.\n // After these have been cleaned up, we'll let them throw.\n try {\n // This is intentionally an invariant that gets caught. It's the same\n // behavior as without this statement except with a better message.\n if (typeof typeSpecs[typeSpecName] !== 'function') {\n var err = Error(\n (componentName || 'React class') + ': ' + location + ' type `' + typeSpecName + '` is invalid; ' +\n 'it must be a function, usually from the `prop-types` package, but received `' + typeof typeSpecs[typeSpecName] + '`.'\n );\n err.name = 'Invariant Violation';\n throw err;\n }\n error = typeSpecs[typeSpecName](values, typeSpecName, componentName, location, null, ReactPropTypesSecret);\n } catch (ex) {\n error = ex;\n }\n if (error && !(error instanceof Error)) {\n printWarning(\n (componentName || 'React class') + ': type specification of ' +\n location + ' `' + typeSpecName + '` is invalid; the type checker ' +\n 'function must return `null` or an `Error` but returned a ' + typeof error + '. ' +\n 'You may have forgotten to pass an argument to the type checker ' +\n 'creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and ' +\n 'shape all require an argument).'\n );\n }\n if (error instanceof Error && !(error.message in loggedTypeFailures)) {\n // Only monitor this failure once because there tends to be a lot of the\n // same error.\n loggedTypeFailures[error.message] = true;\n\n var stack = getStack ? getStack() : '';\n\n printWarning(\n 'Failed ' + location + ' type: ' + error.message + (stack != null ? stack : '')\n );\n }\n }\n }\n }\n}\n\n/**\n * Resets warning cache when testing.\n *\n * @private\n */\ncheckPropTypes.resetWarningCache = function() {\n if (process.env.NODE_ENV !== 'production') {\n loggedTypeFailures = {};\n }\n}\n\nmodule.exports = checkPropTypes;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/prop-types/checkPropTypes.js\n// module id = 10\n// module chunks = 0","'use strict';\n\nvar staticMatch = require('css-mediaquery').match;\nvar dynamicMatch = typeof window !== 'undefined' ? window.matchMedia : null;\n\n// our fake MediaQueryList\nfunction Mql(query, values, forceStatic){\n var self = this;\n if(dynamicMatch && !forceStatic){\n var mql = dynamicMatch.call(window, query);\n this.matches = mql.matches;\n this.media = mql.media;\n // TODO: is there a time it makes sense to remove this listener?\n mql.addListener(update);\n } else {\n this.matches = staticMatch(query, values);\n this.media = query;\n }\n\n this.addListener = addListener;\n this.removeListener = removeListener;\n this.dispose = dispose;\n\n function addListener(listener){\n if(mql){\n mql.addListener(listener);\n }\n }\n\n function removeListener(listener){\n if(mql){\n mql.removeListener(listener);\n }\n }\n\n // update ourselves!\n function update(evt){\n self.matches = evt.matches;\n self.media = evt.media;\n }\n\n function dispose(){\n if(mql){\n mql.removeListener(update);\n }\n }\n}\n\nfunction matchMedia(query, values, forceStatic){\n return new Mql(query, values, forceStatic);\n}\n\nmodule.exports = matchMedia;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/matchmediaquery/index.js\n// module id = 11\n// module chunks = 0","/*\nCopyright (c) 2014, Yahoo! Inc. All rights reserved.\nCopyrights licensed under the New BSD License.\nSee the accompanying LICENSE file for terms.\n*/\n\n'use strict';\n\nexports.match = matchQuery;\nexports.parse = parseQuery;\n\n// -----------------------------------------------------------------------------\n\nvar RE_MEDIA_QUERY = /(?:(only|not)?\\s*([^\\s\\(\\)]+)(?:\\s*and)?\\s*)?(.+)?/i,\n RE_MQ_EXPRESSION = /\\(\\s*([^\\s\\:\\)]+)\\s*(?:\\:\\s*([^\\s\\)]+))?\\s*\\)/,\n RE_MQ_FEATURE = /^(?:(min|max)-)?(.+)/,\n RE_LENGTH_UNIT = /(em|rem|px|cm|mm|in|pt|pc)?$/,\n RE_RESOLUTION_UNIT = /(dpi|dpcm|dppx)?$/;\n\nfunction matchQuery(mediaQuery, values) {\n return parseQuery(mediaQuery).some(function (query) {\n var inverse = query.inverse;\n\n // Either the parsed or specified `type` is \"all\", or the types must be\n // equal for a match.\n var typeMatch = query.type === 'all' || values.type === query.type;\n\n // Quit early when `type` doesn't match, but take \"not\" into account.\n if ((typeMatch && inverse) || !(typeMatch || inverse)) {\n return false;\n }\n\n var expressionsMatch = query.expressions.every(function (expression) {\n var feature = expression.feature,\n modifier = expression.modifier,\n expValue = expression.value,\n value = values[feature];\n\n // Missing or falsy values don't match.\n if (!value) { return false; }\n\n switch (feature) {\n case 'orientation':\n case 'scan':\n return value.toLowerCase() === expValue.toLowerCase();\n\n case 'width':\n case 'height':\n case 'device-width':\n case 'device-height':\n expValue = toPx(expValue);\n value = toPx(value);\n break;\n\n case 'resolution':\n expValue = toDpi(expValue);\n value = toDpi(value);\n break;\n\n case 'aspect-ratio':\n case 'device-aspect-ratio':\n case /* Deprecated */ 'device-pixel-ratio':\n expValue = toDecimal(expValue);\n value = toDecimal(value);\n break;\n\n case 'grid':\n case 'color':\n case 'color-index':\n case 'monochrome':\n expValue = parseInt(expValue, 10) || 1;\n value = parseInt(value, 10) || 0;\n break;\n }\n\n switch (modifier) {\n case 'min': return value >= expValue;\n case 'max': return value <= expValue;\n default : return value === expValue;\n }\n });\n\n return (expressionsMatch && !inverse) || (!expressionsMatch && inverse);\n });\n}\n\nfunction parseQuery(mediaQuery) {\n return mediaQuery.split(',').map(function (query) {\n query = query.trim();\n\n var captures = query.match(RE_MEDIA_QUERY),\n modifier = captures[1],\n type = captures[2],\n expressions = captures[3] || '',\n parsed = {};\n\n parsed.inverse = !!modifier && modifier.toLowerCase() === 'not';\n parsed.type = type ? type.toLowerCase() : 'all';\n\n // Split expressions into a list.\n expressions = expressions.match(/\\([^\\)]+\\)/g) || [];\n\n parsed.expressions = expressions.map(function (expression) {\n var captures = expression.match(RE_MQ_EXPRESSION),\n feature = captures[1].toLowerCase().match(RE_MQ_FEATURE);\n\n return {\n modifier: feature[1],\n feature : feature[2],\n value : captures[2]\n };\n });\n\n return parsed;\n });\n}\n\n// -- Utilities ----------------------------------------------------------------\n\nfunction toDecimal(ratio) {\n var decimal = Number(ratio),\n numbers;\n\n if (!decimal) {\n numbers = ratio.match(/^(\\d+)\\s*\\/\\s*(\\d+)$/);\n decimal = numbers[1] / numbers[2];\n }\n\n return decimal;\n}\n\nfunction toDpi(resolution) {\n var value = parseFloat(resolution),\n units = String(resolution).match(RE_RESOLUTION_UNIT)[1];\n\n switch (units) {\n case 'dpcm': return value / 2.54;\n case 'dppx': return value * 96;\n default : return value;\n }\n}\n\nfunction toPx(length) {\n var value = parseFloat(length),\n units = String(length).match(RE_LENGTH_UNIT)[1];\n\n switch (units) {\n case 'em' : return value * 16;\n case 'rem': return value * 16;\n case 'cm' : return value * 96 / 2.54;\n case 'mm' : return value * 96 / 2.54 / 10;\n case 'in' : return value * 96;\n case 'pt' : return value * 72;\n case 'pc' : return value * 72 / 12;\n default : return value;\n }\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/css-mediaquery/index.js\n// module id = 12\n// module chunks = 0","import hyphenate from 'hyphenate-style-name'\nimport mq from './mediaQuery'\n\nconst negate = cond => `not ${cond}`\n\nfunction keyVal(k, v) {\n const realKey = hyphenate(k)\n\n // px shorthand\n if (typeof v === 'number') {\n v = `${v}px`\n }\n if (v === true) {\n return k\n }\n if (v === false) {\n return negate(k)\n }\n return `(${realKey}: ${v})`\n}\n\nfunction join(conds) {\n return conds.join(' and ')\n}\n\nexport default function (obj) {\n const rules = []\n Object.keys(mq.all).forEach(function (k) {\n const v = obj[k]\n if (v != null) {\n rules.push(keyVal(k, v))\n }\n })\n return join(rules)\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/toQuery.js","/**\n * Checks if a given value is a valid measurement value.\n */\nfunction isMeasurementValue(value) {\n return typeof value === 'number' && isFinite(value);\n}\n\n/**\n * Helper function to start child on transactions. This function will make sure that the transaction will\n * use the start timestamp of the created child span if it is earlier than the transactions actual\n * start timestamp.\n */\nfunction _startChild(transaction, { startTimestamp, ...ctx }) {\n if (startTimestamp && transaction.startTimestamp > startTimestamp) {\n transaction.startTimestamp = startTimestamp;\n }\n\n // eslint-disable-next-line deprecation/deprecation\n return transaction.startChild({\n startTimestamp,\n ...ctx,\n });\n}\n\nexport { _startChild, isMeasurementValue };\n//# sourceMappingURL=utils.js.map\n","import { getActiveTransaction } from '@sentry/core';\nimport { browserPerformanceTimeOrigin, htmlTreeAsString, getComponentName, logger } from '@sentry/utils';\nimport { DEBUG_BUILD } from '../../common/debug-build.js';\nimport { addPerformanceInstrumentationHandler, addClsInstrumentationHandler, addLcpInstrumentationHandler, addFidInstrumentationHandler } from '../instrument.js';\nimport { WINDOW } from '../types.js';\nimport { getVisibilityWatcher } from '../web-vitals/lib/getVisibilityWatcher.js';\nimport { _startChild, isMeasurementValue } from './utils.js';\n\nconst MAX_INT_AS_BYTES = 2147483647;\n\n/**\n * Converts from milliseconds to seconds\n * @param time time in ms\n */\nfunction msToSec(time) {\n return time / 1000;\n}\n\nfunction getBrowserPerformanceAPI() {\n // @ts-expect-error we want to make sure all of these are available, even if TS is sure they are\n return WINDOW && WINDOW.addEventListener && WINDOW.performance;\n}\n\nlet _performanceCursor = 0;\n\nlet _measurements = {};\nlet _lcpEntry;\nlet _clsEntry;\n\n/**\n * Start tracking web vitals\n *\n * @returns A function that forces web vitals collection\n */\nfunction startTrackingWebVitals() {\n const performance = getBrowserPerformanceAPI();\n if (performance && browserPerformanceTimeOrigin) {\n // @ts-expect-error we want to make sure all of these are available, even if TS is sure they are\n if (performance.mark) {\n WINDOW.performance.mark('sentry-tracing-init');\n }\n const fidCallback = _trackFID();\n const clsCallback = _trackCLS();\n const lcpCallback = _trackLCP();\n\n return () => {\n fidCallback();\n clsCallback();\n lcpCallback();\n };\n }\n\n return () => undefined;\n}\n\n/**\n * Start tracking long tasks.\n */\nfunction startTrackingLongTasks() {\n addPerformanceInstrumentationHandler('longtask', ({ entries }) => {\n for (const entry of entries) {\n // eslint-disable-next-line deprecation/deprecation\n const transaction = getActiveTransaction() ;\n if (!transaction) {\n return;\n }\n const startTime = msToSec((browserPerformanceTimeOrigin ) + entry.startTime);\n const duration = msToSec(entry.duration);\n\n // eslint-disable-next-line deprecation/deprecation\n transaction.startChild({\n description: 'Main UI thread blocked',\n op: 'ui.long-task',\n origin: 'auto.ui.browser.metrics',\n startTimestamp: startTime,\n endTimestamp: startTime + duration,\n });\n }\n });\n}\n\n/**\n * Start tracking interaction events.\n */\nfunction startTrackingInteractions() {\n addPerformanceInstrumentationHandler('event', ({ entries }) => {\n for (const entry of entries) {\n // eslint-disable-next-line deprecation/deprecation\n const transaction = getActiveTransaction() ;\n if (!transaction) {\n return;\n }\n\n if (entry.name === 'click') {\n const startTime = msToSec((browserPerformanceTimeOrigin ) + entry.startTime);\n const duration = msToSec(entry.duration);\n\n const span = {\n description: htmlTreeAsString(entry.target),\n op: `ui.interaction.${entry.name}`,\n origin: 'auto.ui.browser.metrics',\n startTimestamp: startTime,\n endTimestamp: startTime + duration,\n };\n\n const componentName = getComponentName(entry.target);\n if (componentName) {\n span.attributes = { 'ui.component_name': componentName };\n }\n\n // eslint-disable-next-line deprecation/deprecation\n transaction.startChild(span);\n }\n }\n });\n}\n\n/** Starts tracking the Cumulative Layout Shift on the current page. */\nfunction _trackCLS() {\n return addClsInstrumentationHandler(({ metric }) => {\n const entry = metric.entries.pop();\n if (!entry) {\n return;\n }\n\n DEBUG_BUILD && logger.log('[Measurements] Adding CLS');\n _measurements['cls'] = { value: metric.value, unit: '' };\n _clsEntry = entry ;\n });\n}\n\n/** Starts tracking the Largest Contentful Paint on the current page. */\nfunction _trackLCP() {\n return addLcpInstrumentationHandler(({ metric }) => {\n const entry = metric.entries.pop();\n if (!entry) {\n return;\n }\n\n DEBUG_BUILD && logger.log('[Measurements] Adding LCP');\n _measurements['lcp'] = { value: metric.value, unit: 'millisecond' };\n _lcpEntry = entry ;\n });\n}\n\n/** Starts tracking the First Input Delay on the current page. */\nfunction _trackFID() {\n return addFidInstrumentationHandler(({ metric }) => {\n const entry = metric.entries.pop();\n if (!entry) {\n return;\n }\n\n const timeOrigin = msToSec(browserPerformanceTimeOrigin );\n const startTime = msToSec(entry.startTime);\n DEBUG_BUILD && logger.log('[Measurements] Adding FID');\n _measurements['fid'] = { value: metric.value, unit: 'millisecond' };\n _measurements['mark.fid'] = { value: timeOrigin + startTime, unit: 'second' };\n });\n}\n\n/** Add performance related spans to a transaction */\nfunction addPerformanceEntries(transaction) {\n const performance = getBrowserPerformanceAPI();\n if (!performance || !WINDOW.performance.getEntries || !browserPerformanceTimeOrigin) {\n // Gatekeeper if performance API not available\n return;\n }\n\n DEBUG_BUILD && logger.log('[Tracing] Adding & adjusting spans using Performance API');\n const timeOrigin = msToSec(browserPerformanceTimeOrigin);\n\n const performanceEntries = performance.getEntries();\n\n let responseStartTimestamp;\n let requestStartTimestamp;\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n performanceEntries.slice(_performanceCursor).forEach((entry) => {\n const startTime = msToSec(entry.startTime);\n const duration = msToSec(entry.duration);\n\n if (transaction.op === 'navigation' && timeOrigin + startTime < transaction.startTimestamp) {\n return;\n }\n\n switch (entry.entryType) {\n case 'navigation': {\n _addNavigationSpans(transaction, entry, timeOrigin);\n responseStartTimestamp = timeOrigin + msToSec(entry.responseStart);\n requestStartTimestamp = timeOrigin + msToSec(entry.requestStart);\n break;\n }\n case 'mark':\n case 'paint':\n case 'measure': {\n _addMeasureSpans(transaction, entry, startTime, duration, timeOrigin);\n\n // capture web vitals\n const firstHidden = getVisibilityWatcher();\n // Only report if the page wasn't hidden prior to the web vital.\n const shouldRecord = entry.startTime < firstHidden.firstHiddenTime;\n\n if (entry.name === 'first-paint' && shouldRecord) {\n DEBUG_BUILD && logger.log('[Measurements] Adding FP');\n _measurements['fp'] = { value: entry.startTime, unit: 'millisecond' };\n }\n if (entry.name === 'first-contentful-paint' && shouldRecord) {\n DEBUG_BUILD && logger.log('[Measurements] Adding FCP');\n _measurements['fcp'] = { value: entry.startTime, unit: 'millisecond' };\n }\n break;\n }\n case 'resource': {\n const resourceName = (entry.name ).replace(WINDOW.location.origin, '');\n _addResourceSpans(transaction, entry, resourceName, startTime, duration, timeOrigin);\n break;\n }\n // Ignore other entry types.\n }\n });\n\n _performanceCursor = Math.max(performanceEntries.length - 1, 0);\n\n _trackNavigator(transaction);\n\n // Measurements are only available for pageload transactions\n if (transaction.op === 'pageload') {\n // Generate TTFB (Time to First Byte), which measured as the time between the beginning of the transaction and the\n // start of the response in milliseconds\n if (typeof responseStartTimestamp === 'number') {\n DEBUG_BUILD && logger.log('[Measurements] Adding TTFB');\n _measurements['ttfb'] = {\n value: (responseStartTimestamp - transaction.startTimestamp) * 1000,\n unit: 'millisecond',\n };\n\n if (typeof requestStartTimestamp === 'number' && requestStartTimestamp <= responseStartTimestamp) {\n // Capture the time spent making the request and receiving the first byte of the response.\n // This is the time between the start of the request and the start of the response in milliseconds.\n _measurements['ttfb.requestTime'] = {\n value: (responseStartTimestamp - requestStartTimestamp) * 1000,\n unit: 'millisecond',\n };\n }\n }\n\n ['fcp', 'fp', 'lcp'].forEach(name => {\n if (!_measurements[name] || timeOrigin >= transaction.startTimestamp) {\n return;\n }\n // The web vitals, fcp, fp, lcp, and ttfb, all measure relative to timeOrigin.\n // Unfortunately, timeOrigin is not captured within the transaction span data, so these web vitals will need\n // to be adjusted to be relative to transaction.startTimestamp.\n const oldValue = _measurements[name].value;\n const measurementTimestamp = timeOrigin + msToSec(oldValue);\n\n // normalizedValue should be in milliseconds\n const normalizedValue = Math.abs((measurementTimestamp - transaction.startTimestamp) * 1000);\n const delta = normalizedValue - oldValue;\n\n DEBUG_BUILD && logger.log(`[Measurements] Normalized ${name} from ${oldValue} to ${normalizedValue} (${delta})`);\n _measurements[name].value = normalizedValue;\n });\n\n const fidMark = _measurements['mark.fid'];\n if (fidMark && _measurements['fid']) {\n // create span for FID\n _startChild(transaction, {\n description: 'first input delay',\n endTimestamp: fidMark.value + msToSec(_measurements['fid'].value),\n op: 'ui.action',\n origin: 'auto.ui.browser.metrics',\n startTimestamp: fidMark.value,\n });\n\n // Delete mark.fid as we don't want it to be part of final payload\n delete _measurements['mark.fid'];\n }\n\n // If FCP is not recorded we should not record the cls value\n // according to the new definition of CLS.\n if (!('fcp' in _measurements)) {\n delete _measurements.cls;\n }\n\n Object.keys(_measurements).forEach(measurementName => {\n transaction.setMeasurement(\n measurementName,\n _measurements[measurementName].value,\n _measurements[measurementName].unit,\n );\n });\n\n _tagMetricInfo(transaction);\n }\n\n _lcpEntry = undefined;\n _clsEntry = undefined;\n _measurements = {};\n}\n\n/** Create measure related spans */\nfunction _addMeasureSpans(\n transaction,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n entry,\n startTime,\n duration,\n timeOrigin,\n) {\n const measureStartTimestamp = timeOrigin + startTime;\n const measureEndTimestamp = measureStartTimestamp + duration;\n\n _startChild(transaction, {\n description: entry.name ,\n endTimestamp: measureEndTimestamp,\n op: entry.entryType ,\n origin: 'auto.resource.browser.metrics',\n startTimestamp: measureStartTimestamp,\n });\n\n return measureStartTimestamp;\n}\n\n/** Instrument navigation entries */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction _addNavigationSpans(transaction, entry, timeOrigin) {\n ['unloadEvent', 'redirect', 'domContentLoadedEvent', 'loadEvent', 'connect'].forEach(event => {\n _addPerformanceNavigationTiming(transaction, entry, event, timeOrigin);\n });\n _addPerformanceNavigationTiming(transaction, entry, 'secureConnection', timeOrigin, 'TLS/SSL', 'connectEnd');\n _addPerformanceNavigationTiming(transaction, entry, 'fetch', timeOrigin, 'cache', 'domainLookupStart');\n _addPerformanceNavigationTiming(transaction, entry, 'domainLookup', timeOrigin, 'DNS');\n _addRequest(transaction, entry, timeOrigin);\n}\n\n/** Create performance navigation related spans */\nfunction _addPerformanceNavigationTiming(\n transaction,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n entry,\n event,\n timeOrigin,\n description,\n eventEnd,\n) {\n const end = eventEnd ? (entry[eventEnd] ) : (entry[`${event}End`] );\n const start = entry[`${event}Start`] ;\n if (!start || !end) {\n return;\n }\n _startChild(transaction, {\n op: 'browser',\n origin: 'auto.browser.browser.metrics',\n description: description || event,\n startTimestamp: timeOrigin + msToSec(start),\n endTimestamp: timeOrigin + msToSec(end),\n });\n}\n\n/** Create request and response related spans */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction _addRequest(transaction, entry, timeOrigin) {\n _startChild(transaction, {\n op: 'browser',\n origin: 'auto.browser.browser.metrics',\n description: 'request',\n startTimestamp: timeOrigin + msToSec(entry.requestStart ),\n endTimestamp: timeOrigin + msToSec(entry.responseEnd ),\n });\n\n _startChild(transaction, {\n op: 'browser',\n origin: 'auto.browser.browser.metrics',\n description: 'response',\n startTimestamp: timeOrigin + msToSec(entry.responseStart ),\n endTimestamp: timeOrigin + msToSec(entry.responseEnd ),\n });\n}\n\n/** Create resource-related spans */\nfunction _addResourceSpans(\n transaction,\n entry,\n resourceName,\n startTime,\n duration,\n timeOrigin,\n) {\n // we already instrument based on fetch and xhr, so we don't need to\n // duplicate spans here.\n if (entry.initiatorType === 'xmlhttprequest' || entry.initiatorType === 'fetch') {\n return;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const data = {};\n setResourceEntrySizeData(data, entry, 'transferSize', 'http.response_transfer_size');\n setResourceEntrySizeData(data, entry, 'encodedBodySize', 'http.response_content_length');\n setResourceEntrySizeData(data, entry, 'decodedBodySize', 'http.decoded_response_content_length');\n if ('renderBlockingStatus' in entry) {\n data['resource.render_blocking_status'] = entry.renderBlockingStatus;\n }\n\n const startTimestamp = timeOrigin + startTime;\n const endTimestamp = startTimestamp + duration;\n\n _startChild(transaction, {\n description: resourceName,\n endTimestamp,\n op: entry.initiatorType ? `resource.${entry.initiatorType}` : 'resource.other',\n origin: 'auto.resource.browser.metrics',\n startTimestamp,\n data,\n });\n}\n\n/**\n * Capture the information of the user agent.\n */\nfunction _trackNavigator(transaction) {\n const navigator = WINDOW.navigator ;\n if (!navigator) {\n return;\n }\n\n // track network connectivity\n const connection = navigator.connection;\n if (connection) {\n if (connection.effectiveType) {\n // TODO: Can we rewrite this to an attribute?\n // eslint-disable-next-line deprecation/deprecation\n transaction.setTag('effectiveConnectionType', connection.effectiveType);\n }\n\n if (connection.type) {\n // TODO: Can we rewrite this to an attribute?\n // eslint-disable-next-line deprecation/deprecation\n transaction.setTag('connectionType', connection.type);\n }\n\n if (isMeasurementValue(connection.rtt)) {\n _measurements['connection.rtt'] = { value: connection.rtt, unit: 'millisecond' };\n }\n }\n\n if (isMeasurementValue(navigator.deviceMemory)) {\n // TODO: Can we rewrite this to an attribute?\n // eslint-disable-next-line deprecation/deprecation\n transaction.setTag('deviceMemory', `${navigator.deviceMemory} GB`);\n }\n\n if (isMeasurementValue(navigator.hardwareConcurrency)) {\n // TODO: Can we rewrite this to an attribute?\n // eslint-disable-next-line deprecation/deprecation\n transaction.setTag('hardwareConcurrency', String(navigator.hardwareConcurrency));\n }\n}\n\n/** Add LCP / CLS data to transaction to allow debugging */\nfunction _tagMetricInfo(transaction) {\n if (_lcpEntry) {\n DEBUG_BUILD && logger.log('[Measurements] Adding LCP Data');\n\n // Capture Properties of the LCP element that contributes to the LCP.\n\n if (_lcpEntry.element) {\n // TODO: Can we rewrite this to an attribute?\n // eslint-disable-next-line deprecation/deprecation\n transaction.setTag('lcp.element', htmlTreeAsString(_lcpEntry.element));\n }\n\n if (_lcpEntry.id) {\n // TODO: Can we rewrite this to an attribute?\n // eslint-disable-next-line deprecation/deprecation\n transaction.setTag('lcp.id', _lcpEntry.id);\n }\n\n if (_lcpEntry.url) {\n // Trim URL to the first 200 characters.\n // TODO: Can we rewrite this to an attribute?\n // eslint-disable-next-line deprecation/deprecation\n transaction.setTag('lcp.url', _lcpEntry.url.trim().slice(0, 200));\n }\n\n // TODO: Can we rewrite this to an attribute?\n // eslint-disable-next-line deprecation/deprecation\n transaction.setTag('lcp.size', _lcpEntry.size);\n }\n\n // See: https://developer.mozilla.org/en-US/docs/Web/API/LayoutShift\n if (_clsEntry && _clsEntry.sources) {\n DEBUG_BUILD && logger.log('[Measurements] Adding CLS Data');\n _clsEntry.sources.forEach((source, index) =>\n // TODO: Can we rewrite this to an attribute?\n // eslint-disable-next-line deprecation/deprecation\n transaction.setTag(`cls.source.${index + 1}`, htmlTreeAsString(source.node)),\n );\n }\n}\n\nfunction setResourceEntrySizeData(\n data,\n entry,\n key,\n dataKey,\n) {\n const entryVal = entry[key];\n if (entryVal != null && entryVal < MAX_INT_AS_BYTES) {\n data[dataKey] = entryVal;\n }\n}\n\nexport { _addMeasureSpans, _addResourceSpans, addPerformanceEntries, startTrackingInteractions, startTrackingLongTasks, startTrackingWebVitals };\n//# sourceMappingURL=index.js.map\n","import { TRACING_DEFAULTS, addTracingExtensions, SEMANTIC_ATTRIBUTE_SENTRY_SOURCE, startIdleTransaction, spanIsSampled, getActiveTransaction } from '@sentry/core';\nimport { logger, tracingContextFromHeaders, getDomElement } from '@sentry/utils';\nimport { DEBUG_BUILD } from '../common/debug-build.js';\nimport { registerBackgroundTabDetection } from './backgroundtab.js';\nimport { startTrackingWebVitals, startTrackingLongTasks, startTrackingInteractions, addPerformanceEntries } from './metrics/index.js';\nimport { defaultRequestInstrumentationOptions, instrumentOutgoingRequests } from './request.js';\nimport { instrumentRoutingWithDefaults } from './router.js';\nimport { WINDOW } from './types.js';\n\nconst BROWSER_TRACING_INTEGRATION_ID = 'BrowserTracing';\n\n/** Options for Browser Tracing integration */\n\nconst DEFAULT_BROWSER_TRACING_OPTIONS = {\n ...TRACING_DEFAULTS,\n markBackgroundTransactions: true,\n routingInstrumentation: instrumentRoutingWithDefaults,\n startTransactionOnLocationChange: true,\n startTransactionOnPageLoad: true,\n enableLongTask: true,\n _experiments: {},\n ...defaultRequestInstrumentationOptions,\n};\n\n/**\n * The Browser Tracing integration automatically instruments browser pageload/navigation\n * actions as transactions, and captures requests, metrics and errors as spans.\n *\n * The integration can be configured with a variety of options, and can be extended to use\n * any routing library. This integration uses {@see IdleTransaction} to create transactions.\n */\nclass BrowserTracing {\n // This class currently doesn't have a static `id` field like the other integration classes, because it prevented\n // @sentry/tracing from being treeshaken. Tree shakers do not like static fields, because they behave like side effects.\n // TODO: Come up with a better plan, than using static fields on integration classes, and use that plan on all\n // integrations.\n\n /** Browser Tracing integration options */\n\n /**\n * @inheritDoc\n */\n\n constructor(_options) {\n this.name = BROWSER_TRACING_INTEGRATION_ID;\n this._hasSetTracePropagationTargets = false;\n\n addTracingExtensions();\n\n if (DEBUG_BUILD) {\n this._hasSetTracePropagationTargets = !!(\n _options &&\n // eslint-disable-next-line deprecation/deprecation\n (_options.tracePropagationTargets || _options.tracingOrigins)\n );\n }\n\n this.options = {\n ...DEFAULT_BROWSER_TRACING_OPTIONS,\n ..._options,\n };\n\n // Special case: enableLongTask can be set in _experiments\n // TODO (v8): Remove this in v8\n if (this.options._experiments.enableLongTask !== undefined) {\n this.options.enableLongTask = this.options._experiments.enableLongTask;\n }\n\n // TODO (v8): remove this block after tracingOrigins is removed\n // Set tracePropagationTargets to tracingOrigins if specified by the user\n // In case both are specified, tracePropagationTargets takes precedence\n // eslint-disable-next-line deprecation/deprecation\n if (_options && !_options.tracePropagationTargets && _options.tracingOrigins) {\n // eslint-disable-next-line deprecation/deprecation\n this.options.tracePropagationTargets = _options.tracingOrigins;\n }\n\n this._collectWebVitals = startTrackingWebVitals();\n if (this.options.enableLongTask) {\n startTrackingLongTasks();\n }\n if (this.options._experiments.enableInteractions) {\n startTrackingInteractions();\n }\n }\n\n /**\n * @inheritDoc\n */\n setupOnce(_, getCurrentHub) {\n this._getCurrentHub = getCurrentHub;\n const hub = getCurrentHub();\n const client = hub.getClient();\n const clientOptions = client && client.getOptions();\n\n const {\n routingInstrumentation: instrumentRouting,\n startTransactionOnLocationChange,\n startTransactionOnPageLoad,\n markBackgroundTransactions,\n traceFetch,\n traceXHR,\n shouldCreateSpanForRequest,\n enableHTTPTimings,\n _experiments,\n } = this.options;\n\n const clientOptionsTracePropagationTargets = clientOptions && clientOptions.tracePropagationTargets;\n // There are three ways to configure tracePropagationTargets:\n // 1. via top level client option `tracePropagationTargets`\n // 2. via BrowserTracing option `tracePropagationTargets`\n // 3. via BrowserTracing option `tracingOrigins` (deprecated)\n //\n // To avoid confusion, favour top level client option `tracePropagationTargets`, and fallback to\n // BrowserTracing option `tracePropagationTargets` and then `tracingOrigins` (deprecated).\n // This is done as it minimizes bundle size (we don't have to have undefined checks).\n //\n // If both 1 and either one of 2 or 3 are set (from above), we log out a warning.\n // eslint-disable-next-line deprecation/deprecation\n const tracePropagationTargets = clientOptionsTracePropagationTargets || this.options.tracePropagationTargets;\n if (DEBUG_BUILD && this._hasSetTracePropagationTargets && clientOptionsTracePropagationTargets) {\n logger.warn(\n '[Tracing] The `tracePropagationTargets` option was set in the BrowserTracing integration and top level `Sentry.init`. The top level `Sentry.init` value is being used.',\n );\n }\n\n instrumentRouting(\n (context) => {\n const transaction = this._createRouteTransaction(context);\n\n this.options._experiments.onStartRouteTransaction &&\n this.options._experiments.onStartRouteTransaction(transaction, context, getCurrentHub);\n\n return transaction;\n },\n startTransactionOnPageLoad,\n startTransactionOnLocationChange,\n );\n\n if (markBackgroundTransactions) {\n registerBackgroundTabDetection();\n }\n\n if (_experiments.enableInteractions) {\n this._registerInteractionListener();\n }\n\n instrumentOutgoingRequests({\n traceFetch,\n traceXHR,\n tracePropagationTargets,\n shouldCreateSpanForRequest,\n enableHTTPTimings,\n });\n }\n\n /** Create routing idle transaction. */\n _createRouteTransaction(context) {\n if (!this._getCurrentHub) {\n DEBUG_BUILD &&\n logger.warn(`[Tracing] Did not create ${context.op} transaction because _getCurrentHub is invalid.`);\n return undefined;\n }\n\n const hub = this._getCurrentHub();\n\n const { beforeNavigate, idleTimeout, finalTimeout, heartbeatInterval } = this.options;\n\n const isPageloadTransaction = context.op === 'pageload';\n\n const sentryTrace = isPageloadTransaction ? getMetaContent('sentry-trace') : '';\n const baggage = isPageloadTransaction ? getMetaContent('baggage') : '';\n const { traceparentData, dynamicSamplingContext, propagationContext } = tracingContextFromHeaders(\n sentryTrace,\n baggage,\n );\n\n const expandedContext = {\n ...context,\n ...traceparentData,\n metadata: {\n // eslint-disable-next-line deprecation/deprecation\n ...context.metadata,\n dynamicSamplingContext: traceparentData && !dynamicSamplingContext ? {} : dynamicSamplingContext,\n },\n trimEnd: true,\n };\n\n const modifiedContext = typeof beforeNavigate === 'function' ? beforeNavigate(expandedContext) : expandedContext;\n\n // For backwards compatibility reasons, beforeNavigate can return undefined to \"drop\" the transaction (prevent it\n // from being sent to Sentry).\n const finalContext = modifiedContext === undefined ? { ...expandedContext, sampled: false } : modifiedContext;\n\n // If `beforeNavigate` set a custom name, record that fact\n // eslint-disable-next-line deprecation/deprecation\n finalContext.metadata =\n finalContext.name !== expandedContext.name\n ? // eslint-disable-next-line deprecation/deprecation\n { ...finalContext.metadata, source: 'custom' }\n : // eslint-disable-next-line deprecation/deprecation\n finalContext.metadata;\n\n this._latestRouteName = finalContext.name;\n\n // eslint-disable-next-line deprecation/deprecation\n const sourceFromData = context.data && context.data[SEMANTIC_ATTRIBUTE_SENTRY_SOURCE];\n // eslint-disable-next-line deprecation/deprecation\n const sourceFromMetadata = finalContext.metadata && finalContext.metadata.source;\n\n this._latestRouteSource = sourceFromData || sourceFromMetadata;\n\n // eslint-disable-next-line deprecation/deprecation\n if (finalContext.sampled === false) {\n DEBUG_BUILD && logger.log(`[Tracing] Will not send ${finalContext.op} transaction because of beforeNavigate.`);\n }\n\n DEBUG_BUILD && logger.log(`[Tracing] Starting ${finalContext.op} transaction on scope`);\n\n const { location } = WINDOW;\n\n const idleTransaction = startIdleTransaction(\n hub,\n finalContext,\n idleTimeout,\n finalTimeout,\n true,\n { location }, // for use in the tracesSampler\n heartbeatInterval,\n );\n\n const scope = hub.getScope();\n\n // If it's a pageload and there is a meta tag set\n // use the traceparentData as the propagation context\n if (isPageloadTransaction && traceparentData) {\n scope.setPropagationContext(propagationContext);\n } else {\n // Navigation transactions should set a new propagation context based on the\n // created idle transaction.\n scope.setPropagationContext({\n traceId: idleTransaction.spanContext().traceId,\n spanId: idleTransaction.spanContext().spanId,\n parentSpanId: idleTransaction.parentSpanId,\n sampled: spanIsSampled(idleTransaction),\n });\n }\n\n idleTransaction.registerBeforeFinishCallback(transaction => {\n this._collectWebVitals();\n addPerformanceEntries(transaction);\n });\n\n return idleTransaction ;\n }\n\n /** Start listener for interaction transactions */\n _registerInteractionListener() {\n let inflightInteractionTransaction;\n const registerInteractionTransaction = () => {\n const { idleTimeout, finalTimeout, heartbeatInterval } = this.options;\n const op = 'ui.action.click';\n\n // eslint-disable-next-line deprecation/deprecation\n const currentTransaction = getActiveTransaction();\n if (currentTransaction && currentTransaction.op && ['navigation', 'pageload'].includes(currentTransaction.op)) {\n DEBUG_BUILD &&\n logger.warn(\n `[Tracing] Did not create ${op} transaction because a pageload or navigation transaction is in progress.`,\n );\n return undefined;\n }\n\n if (inflightInteractionTransaction) {\n inflightInteractionTransaction.setFinishReason('interactionInterrupted');\n inflightInteractionTransaction.end();\n inflightInteractionTransaction = undefined;\n }\n\n if (!this._getCurrentHub) {\n DEBUG_BUILD && logger.warn(`[Tracing] Did not create ${op} transaction because _getCurrentHub is invalid.`);\n return undefined;\n }\n\n if (!this._latestRouteName) {\n DEBUG_BUILD && logger.warn(`[Tracing] Did not create ${op} transaction because _latestRouteName is missing.`);\n return undefined;\n }\n\n const hub = this._getCurrentHub();\n const { location } = WINDOW;\n\n const context = {\n name: this._latestRouteName,\n op,\n trimEnd: true,\n data: {\n [SEMANTIC_ATTRIBUTE_SENTRY_SOURCE]: this._latestRouteSource || 'url',\n },\n };\n\n inflightInteractionTransaction = startIdleTransaction(\n hub,\n context,\n idleTimeout,\n finalTimeout,\n true,\n { location }, // for use in the tracesSampler\n heartbeatInterval,\n );\n };\n\n ['click'].forEach(type => {\n addEventListener(type, registerInteractionTransaction, { once: false, capture: true });\n });\n }\n}\n\n/** Returns the value of a meta tag */\nfunction getMetaContent(metaName) {\n // Can't specify generic to `getDomElement` because tracing can be used\n // in a variety of environments, have to disable `no-unsafe-member-access`\n // as a result.\n const metaTag = getDomElement(`meta[name=${metaName}]`);\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n return metaTag ? metaTag.getAttribute('content') : undefined;\n}\n\nexport { BROWSER_TRACING_INTEGRATION_ID, BrowserTracing, getMetaContent };\n//# sourceMappingURL=browsertracing.js.map\n","import { logger, browserPerformanceTimeOrigin, addHistoryInstrumentationHandler } from '@sentry/utils';\nimport { DEBUG_BUILD } from '../common/debug-build.js';\nimport { WINDOW } from './types.js';\n\n/**\n * Default function implementing pageload and navigation transactions\n */\nfunction instrumentRoutingWithDefaults(\n customStartTransaction,\n startTransactionOnPageLoad = true,\n startTransactionOnLocationChange = true,\n) {\n if (!WINDOW || !WINDOW.location) {\n DEBUG_BUILD && logger.warn('Could not initialize routing instrumentation due to invalid location');\n return;\n }\n\n let startingUrl = WINDOW.location.href;\n\n let activeTransaction;\n if (startTransactionOnPageLoad) {\n activeTransaction = customStartTransaction({\n name: WINDOW.location.pathname,\n // pageload should always start at timeOrigin (and needs to be in s, not ms)\n startTimestamp: browserPerformanceTimeOrigin ? browserPerformanceTimeOrigin / 1000 : undefined,\n op: 'pageload',\n origin: 'auto.pageload.browser',\n metadata: { source: 'url' },\n });\n }\n\n if (startTransactionOnLocationChange) {\n addHistoryInstrumentationHandler(({ to, from }) => {\n /**\n * This early return is there to account for some cases where a navigation transaction starts right after\n * long-running pageload. We make sure that if `from` is undefined and a valid `startingURL` exists, we don't\n * create an uneccessary navigation transaction.\n *\n * This was hard to duplicate, but this behavior stopped as soon as this fix was applied. This issue might also\n * only be caused in certain development environments where the usage of a hot module reloader is causing\n * errors.\n */\n if (from === undefined && startingUrl && startingUrl.indexOf(to) !== -1) {\n startingUrl = undefined;\n return;\n }\n\n if (from !== to) {\n startingUrl = undefined;\n if (activeTransaction) {\n DEBUG_BUILD && logger.log(`[Tracing] Finishing current transaction with op: ${activeTransaction.op}`);\n // If there's an open transaction on the scope, we need to finish it before creating an new one.\n activeTransaction.end();\n }\n activeTransaction = customStartTransaction({\n name: WINDOW.location.pathname,\n op: 'navigation',\n origin: 'auto.navigation.browser',\n metadata: { source: 'url' },\n });\n }\n });\n }\n}\n\nexport { instrumentRoutingWithDefaults };\n//# sourceMappingURL=router.js.map\n","import { getActiveTransaction } from '@sentry/core';\nimport { logger } from '@sentry/utils';\nimport { DEBUG_BUILD } from '../common/debug-build.js';\nimport { WINDOW } from './types.js';\n\n/**\n * Add a listener that cancels and finishes a transaction when the global\n * document is hidden.\n */\nfunction registerBackgroundTabDetection() {\n if (WINDOW && WINDOW.document) {\n WINDOW.document.addEventListener('visibilitychange', () => {\n // eslint-disable-next-line deprecation/deprecation\n const activeTransaction = getActiveTransaction() ;\n if (WINDOW.document.hidden && activeTransaction) {\n const statusType = 'cancelled';\n\n DEBUG_BUILD &&\n logger.log(\n `[Tracing] Transaction: ${statusType} -> since tab moved to the background, op: ${activeTransaction.op}`,\n );\n // We should not set status if it is already set, this prevent important statuses like\n // error or data loss from being overwritten on transaction.\n if (!activeTransaction.status) {\n activeTransaction.setStatus(statusType);\n }\n // TODO: Can we rewrite this to an attribute?\n // eslint-disable-next-line deprecation/deprecation\n activeTransaction.setTag('visibilitychange', 'document.hidden');\n activeTransaction.end();\n }\n });\n } else {\n DEBUG_BUILD && logger.warn('[Tracing] Could not set up background tab detection due to lack of global document');\n }\n}\n\nexport { registerBackgroundTabDetection };\n//# sourceMappingURL=backgroundtab.js.map\n","const bindReporter = (\n callback,\n metric,\n reportAllChanges,\n) => {\n let prevValue;\n let delta;\n return (forceReport) => {\n if (metric.value >= 0) {\n if (forceReport || reportAllChanges) {\n delta = metric.value - (prevValue || 0);\n\n // Report the metric if there's a non-zero delta or if no previous\n // value exists (which can happen in the case of the document becoming\n // hidden when the metric value is 0).\n // See: https://github.com/GoogleChrome/web-vitals/issues/14\n if (delta || prevValue === undefined) {\n prevValue = metric.value;\n metric.delta = delta;\n callback(metric);\n }\n }\n }\n };\n};\n\nexport { bindReporter };\n//# sourceMappingURL=bindReporter.js.map\n","/*\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * Performantly generate a unique, 30-char string by combining a version\n * number, the current timestamp with a 13-digit number integer.\n * @return {string}\n */\nconst generateUniqueID = () => {\n return `v3-${Date.now()}-${Math.floor(Math.random() * (9e12 - 1)) + 1e12}`;\n};\n\nexport { generateUniqueID };\n//# sourceMappingURL=generateUniqueID.js.map\n","import { WINDOW } from '../../types.js';\n\n/*\n * Copyright 2022 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nconst getNavigationEntryFromPerformanceTiming = () => {\n // eslint-disable-next-line deprecation/deprecation\n const timing = WINDOW.performance.timing;\n // eslint-disable-next-line deprecation/deprecation\n const type = WINDOW.performance.navigation.type;\n\n const navigationEntry = {\n entryType: 'navigation',\n startTime: 0,\n type: type == 2 ? 'back_forward' : type === 1 ? 'reload' : 'navigate',\n };\n\n for (const key in timing) {\n if (key !== 'navigationStart' && key !== 'toJSON') {\n // eslint-disable-next-line deprecation/deprecation\n navigationEntry[key] = Math.max((timing[key ] ) - timing.navigationStart, 0);\n }\n }\n return navigationEntry ;\n};\n\nconst getNavigationEntry = () => {\n if (WINDOW.__WEB_VITALS_POLYFILL__) {\n return (\n WINDOW.performance &&\n ((performance.getEntriesByType && performance.getEntriesByType('navigation')[0]) ||\n getNavigationEntryFromPerformanceTiming())\n );\n } else {\n return WINDOW.performance && performance.getEntriesByType && performance.getEntriesByType('navigation')[0];\n }\n};\n\nexport { getNavigationEntry };\n//# sourceMappingURL=getNavigationEntry.js.map\n","import { getNavigationEntry } from './getNavigationEntry.js';\n\n/*\n * Copyright 2022 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nconst getActivationStart = () => {\n const navEntry = getNavigationEntry();\n return (navEntry && navEntry.activationStart) || 0;\n};\n\nexport { getActivationStart };\n//# sourceMappingURL=getActivationStart.js.map\n","import { WINDOW } from '../../types.js';\nimport { generateUniqueID } from './generateUniqueID.js';\nimport { getActivationStart } from './getActivationStart.js';\nimport { getNavigationEntry } from './getNavigationEntry.js';\n\n/*\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nconst initMetric = (name, value) => {\n const navEntry = getNavigationEntry();\n let navigationType = 'navigate';\n\n if (navEntry) {\n if (WINDOW.document.prerendering || getActivationStart() > 0) {\n navigationType = 'prerender';\n } else {\n navigationType = navEntry.type.replace(/_/g, '-') ;\n }\n }\n\n return {\n name,\n value: typeof value === 'undefined' ? -1 : value,\n rating: 'good', // Will be updated if the value changes.\n delta: 0,\n entries: [],\n id: generateUniqueID(),\n navigationType,\n };\n};\n\nexport { initMetric };\n//# sourceMappingURL=initMetric.js.map\n","/**\n * Takes a performance entry type and a callback function, and creates a\n * `PerformanceObserver` instance that will observe the specified entry type\n * with buffering enabled and call the callback _for each entry_.\n *\n * This function also feature-detects entry support and wraps the logic in a\n * try/catch to avoid errors in unsupporting browsers.\n */\nconst observe = (\n type,\n callback,\n opts,\n) => {\n try {\n if (PerformanceObserver.supportedEntryTypes.includes(type)) {\n const po = new PerformanceObserver(list => {\n callback(list.getEntries() );\n });\n po.observe(\n Object.assign(\n {\n type,\n buffered: true,\n },\n opts || {},\n ) ,\n );\n return po;\n }\n } catch (e) {\n // Do nothing.\n }\n return;\n};\n\nexport { observe };\n//# sourceMappingURL=observe.js.map\n","import { bindReporter } from './lib/bindReporter.js';\nimport { getVisibilityWatcher } from './lib/getVisibilityWatcher.js';\nimport { initMetric } from './lib/initMetric.js';\nimport { observe } from './lib/observe.js';\nimport { onHidden } from './lib/onHidden.js';\n\n/*\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * Calculates the [FID](https://web.dev/fid/) value for the current page and\n * calls the `callback` function once the value is ready, along with the\n * relevant `first-input` performance entry used to determine the value. The\n * reported value is a `DOMHighResTimeStamp`.\n *\n * _**Important:** since FID is only reported after the user interacts with the\n * page, it's possible that it will not be reported for some page loads._\n */\nconst onFID = (onReport) => {\n const visibilityWatcher = getVisibilityWatcher();\n const metric = initMetric('FID');\n // eslint-disable-next-line prefer-const\n let report;\n\n const handleEntry = (entry) => {\n // Only report if the page wasn't hidden prior to the first input.\n if (entry.startTime < visibilityWatcher.firstHiddenTime) {\n metric.value = entry.processingStart - entry.startTime;\n metric.entries.push(entry);\n report(true);\n }\n };\n\n const handleEntries = (entries) => {\n (entries ).forEach(handleEntry);\n };\n\n const po = observe('first-input', handleEntries);\n report = bindReporter(onReport, metric);\n\n if (po) {\n onHidden(() => {\n handleEntries(po.takeRecords() );\n po.disconnect();\n }, true);\n }\n};\n\nexport { onFID };\n//# sourceMappingURL=getFID.js.map\n","import { bindReporter } from './lib/bindReporter.js';\nimport { getActivationStart } from './lib/getActivationStart.js';\nimport { getVisibilityWatcher } from './lib/getVisibilityWatcher.js';\nimport { initMetric } from './lib/initMetric.js';\nimport { observe } from './lib/observe.js';\nimport { onHidden } from './lib/onHidden.js';\n\n/*\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nconst reportedMetricIDs = {};\n\n/**\n * Calculates the [LCP](https://web.dev/lcp/) value for the current page and\n * calls the `callback` function once the value is ready (along with the\n * relevant `largest-contentful-paint` performance entry used to determine the\n * value). The reported value is a `DOMHighResTimeStamp`.\n */\nconst onLCP = (onReport) => {\n const visibilityWatcher = getVisibilityWatcher();\n const metric = initMetric('LCP');\n let report;\n\n const handleEntries = (entries) => {\n const lastEntry = entries[entries.length - 1] ;\n if (lastEntry) {\n // The startTime attribute returns the value of the renderTime if it is\n // not 0, and the value of the loadTime otherwise. The activationStart\n // reference is used because LCP should be relative to page activation\n // rather than navigation start if the page was prerendered.\n const value = Math.max(lastEntry.startTime - getActivationStart(), 0);\n\n // Only report if the page wasn't hidden prior to LCP.\n if (value < visibilityWatcher.firstHiddenTime) {\n metric.value = value;\n metric.entries = [lastEntry];\n report();\n }\n }\n };\n\n const po = observe('largest-contentful-paint', handleEntries);\n\n if (po) {\n report = bindReporter(onReport, metric);\n\n const stopListening = () => {\n if (!reportedMetricIDs[metric.id]) {\n handleEntries(po.takeRecords() );\n po.disconnect();\n reportedMetricIDs[metric.id] = true;\n report(true);\n }\n };\n\n // Stop listening after input. Note: while scrolling is an input that\n // stop LCP observation, it's unreliable since it can be programmatically\n // generated. See: https://github.com/GoogleChrome/web-vitals/issues/75\n ['keydown', 'click'].forEach(type => {\n addEventListener(type, stopListening, { once: true, capture: true });\n });\n\n onHidden(stopListening, true);\n\n return stopListening;\n }\n\n return;\n};\n\nexport { onLCP };\n//# sourceMappingURL=getLCP.js.map\n","import { logger, getFunctionName } from '@sentry/utils';\nimport { DEBUG_BUILD } from '../common/debug-build.js';\nimport { onCLS } from './web-vitals/getCLS.js';\nimport { onFID } from './web-vitals/getFID.js';\nimport { onLCP } from './web-vitals/getLCP.js';\nimport { observe } from './web-vitals/lib/observe.js';\n\nconst handlers = {};\nconst instrumented = {};\n\nlet _previousCls;\nlet _previousFid;\nlet _previousLcp;\n\n/**\n * Add a callback that will be triggered when a CLS metric is available.\n * Returns a cleanup callback which can be called to remove the instrumentation handler.\n */\nfunction addClsInstrumentationHandler(callback) {\n return addMetricObserver('cls', callback, instrumentCls, _previousCls);\n}\n\n/**\n * Add a callback that will be triggered when a LCP metric is available.\n * Returns a cleanup callback which can be called to remove the instrumentation handler.\n */\nfunction addLcpInstrumentationHandler(callback) {\n return addMetricObserver('lcp', callback, instrumentLcp, _previousLcp);\n}\n\n/**\n * Add a callback that will be triggered when a FID metric is available.\n * Returns a cleanup callback which can be called to remove the instrumentation handler.\n */\nfunction addFidInstrumentationHandler(callback) {\n return addMetricObserver('fid', callback, instrumentFid, _previousFid);\n}\n\n/**\n * Add a callback that will be triggered when a performance observer is triggered,\n * and receives the entries of the observer.\n * Returns a cleanup callback which can be called to remove the instrumentation handler.\n */\nfunction addPerformanceInstrumentationHandler(\n type,\n callback,\n) {\n addHandler(type, callback);\n\n if (!instrumented[type]) {\n instrumentPerformanceObserver(type);\n instrumented[type] = true;\n }\n\n return getCleanupCallback(type, callback);\n}\n\n/** Trigger all handlers of a given type. */\nfunction triggerHandlers(type, data) {\n const typeHandlers = handlers[type];\n\n if (!typeHandlers || !typeHandlers.length) {\n return;\n }\n\n for (const handler of typeHandlers) {\n try {\n handler(data);\n } catch (e) {\n DEBUG_BUILD &&\n logger.error(\n `Error while triggering instrumentation handler.\\nType: ${type}\\nName: ${getFunctionName(handler)}\\nError:`,\n e,\n );\n }\n }\n}\n\nfunction instrumentCls() {\n onCLS(metric => {\n triggerHandlers('cls', {\n metric,\n });\n _previousCls = metric;\n });\n}\n\nfunction instrumentFid() {\n onFID(metric => {\n triggerHandlers('fid', {\n metric,\n });\n _previousFid = metric;\n });\n}\n\nfunction instrumentLcp() {\n onLCP(metric => {\n triggerHandlers('lcp', {\n metric,\n });\n _previousLcp = metric;\n });\n}\n\nfunction addMetricObserver(\n type,\n callback,\n instrumentFn,\n previousValue,\n) {\n addHandler(type, callback);\n\n if (!instrumented[type]) {\n instrumentFn();\n instrumented[type] = true;\n }\n\n if (previousValue) {\n callback({ metric: previousValue });\n }\n\n return getCleanupCallback(type, callback);\n}\n\nfunction instrumentPerformanceObserver(type) {\n const options = {};\n\n // Special per-type options we want to use\n if (type === 'event') {\n options.durationThreshold = 0;\n }\n\n observe(\n type,\n entries => {\n triggerHandlers(type, { entries });\n },\n options,\n );\n}\n\nfunction addHandler(type, handler) {\n handlers[type] = handlers[type] || [];\n (handlers[type] ).push(handler);\n}\n\n// Get a callback which can be called to remove the instrumentation handler\nfunction getCleanupCallback(type, callback) {\n return () => {\n const typeHandlers = handlers[type];\n\n if (!typeHandlers) {\n return;\n }\n\n const index = typeHandlers.indexOf(callback);\n if (index !== -1) {\n typeHandlers.splice(index, 1);\n }\n };\n}\n\nexport { addClsInstrumentationHandler, addFidInstrumentationHandler, addLcpInstrumentationHandler, addPerformanceInstrumentationHandler };\n//# sourceMappingURL=instrument.js.map\n","import { bindReporter } from './lib/bindReporter.js';\nimport { initMetric } from './lib/initMetric.js';\nimport { observe } from './lib/observe.js';\nimport { onHidden } from './lib/onHidden.js';\n\n/*\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * Calculates the [CLS](https://web.dev/cls/) value for the current page and\n * calls the `callback` function once the value is ready to be reported, along\n * with all `layout-shift` performance entries that were used in the metric\n * value calculation. The reported value is a `double` (corresponding to a\n * [layout shift score](https://web.dev/cls/#layout-shift-score)).\n *\n * If the `reportAllChanges` configuration option is set to `true`, the\n * `callback` function will be called as soon as the value is initially\n * determined as well as any time the value changes throughout the page\n * lifespan.\n *\n * _**Important:** CLS should be continually monitored for changes throughout\n * the entire lifespan of a page—including if the user returns to the page after\n * it's been hidden/backgrounded. However, since browsers often [will not fire\n * additional callbacks once the user has backgrounded a\n * page](https://developer.chrome.com/blog/page-lifecycle-api/#advice-hidden),\n * `callback` is always called when the page's visibility state changes to\n * hidden. As a result, the `callback` function might be called multiple times\n * during the same page load._\n */\nconst onCLS = (onReport) => {\n const metric = initMetric('CLS', 0);\n let report;\n\n let sessionValue = 0;\n let sessionEntries = [];\n\n // const handleEntries = (entries: Metric['entries']) => {\n const handleEntries = (entries) => {\n entries.forEach(entry => {\n // Only count layout shifts without recent user input.\n if (!entry.hadRecentInput) {\n const firstSessionEntry = sessionEntries[0];\n const lastSessionEntry = sessionEntries[sessionEntries.length - 1];\n\n // If the entry occurred less than 1 second after the previous entry and\n // less than 5 seconds after the first entry in the session, include the\n // entry in the current session. Otherwise, start a new session.\n if (\n sessionValue &&\n sessionEntries.length !== 0 &&\n entry.startTime - lastSessionEntry.startTime < 1000 &&\n entry.startTime - firstSessionEntry.startTime < 5000\n ) {\n sessionValue += entry.value;\n sessionEntries.push(entry);\n } else {\n sessionValue = entry.value;\n sessionEntries = [entry];\n }\n\n // If the current session value is larger than the current CLS value,\n // update CLS and the entries contributing to it.\n if (sessionValue > metric.value) {\n metric.value = sessionValue;\n metric.entries = sessionEntries;\n if (report) {\n report();\n }\n }\n }\n });\n };\n\n const po = observe('layout-shift', handleEntries);\n if (po) {\n report = bindReporter(onReport, metric);\n\n const stopListening = () => {\n handleEntries(po.takeRecords() );\n report(true);\n };\n\n onHidden(stopListening);\n\n return stopListening;\n }\n\n return;\n};\n\nexport { onCLS };\n//# sourceMappingURL=getCLS.js.map\n","import { hasTracingEnabled, getCurrentScope, getClient, getActiveSpan, spanToTraceHeader, getDynamicSamplingContextFromSpan, getDynamicSamplingContextFromClient } from '@sentry/core';\nimport { generateSentryTraceHeader, dynamicSamplingContextToSentryBaggageHeader, isInstanceOf, BAGGAGE_HEADER_NAME } from '@sentry/utils';\n\n/**\n * Create and track fetch request spans for usage in combination with `addInstrumentationHandler`.\n *\n * @returns Span if a span was created, otherwise void.\n */\nfunction instrumentFetchRequest(\n handlerData,\n shouldCreateSpan,\n shouldAttachHeaders,\n spans,\n spanOrigin = 'auto.http.browser',\n) {\n if (!hasTracingEnabled() || !handlerData.fetchData) {\n return undefined;\n }\n\n const shouldCreateSpanResult = shouldCreateSpan(handlerData.fetchData.url);\n\n if (handlerData.endTimestamp && shouldCreateSpanResult) {\n const spanId = handlerData.fetchData.__span;\n if (!spanId) return;\n\n const span = spans[spanId];\n if (span) {\n if (handlerData.response) {\n span.setHttpStatus(handlerData.response.status);\n\n const contentLength =\n handlerData.response && handlerData.response.headers && handlerData.response.headers.get('content-length');\n\n if (contentLength) {\n const contentLengthNum = parseInt(contentLength);\n if (contentLengthNum > 0) {\n span.setAttribute('http.response_content_length', contentLengthNum);\n }\n }\n } else if (handlerData.error) {\n span.setStatus('internal_error');\n }\n span.end();\n\n // eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n delete spans[spanId];\n }\n return undefined;\n }\n\n const scope = getCurrentScope();\n const client = getClient();\n const parentSpan = getActiveSpan();\n\n const { method, url } = handlerData.fetchData;\n\n const span =\n shouldCreateSpanResult && parentSpan\n ? // eslint-disable-next-line deprecation/deprecation\n parentSpan.startChild({\n data: {\n url,\n type: 'fetch',\n 'http.method': method,\n },\n description: `${method} ${url}`,\n op: 'http.client',\n origin: spanOrigin,\n })\n : undefined;\n\n if (span) {\n handlerData.fetchData.__span = span.spanContext().spanId;\n spans[span.spanContext().spanId] = span;\n }\n\n if (shouldAttachHeaders(handlerData.fetchData.url) && client) {\n const request = handlerData.args[0];\n\n // In case the user hasn't set the second argument of a fetch call we default it to `{}`.\n handlerData.args[1] = handlerData.args[1] || {};\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const options = handlerData.args[1];\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unsafe-member-access\n options.headers = addTracingHeadersToFetchRequest(request, client, scope, options, span);\n }\n\n return span;\n}\n\n/**\n * Adds sentry-trace and baggage headers to the various forms of fetch headers\n */\nfunction addTracingHeadersToFetchRequest(\n request, // unknown is actually type Request but we can't export DOM types from this package,\n client,\n scope,\n options\n\n,\n requestSpan,\n) {\n // eslint-disable-next-line deprecation/deprecation\n const span = requestSpan || scope.getSpan();\n\n const transaction = span && span.transaction;\n\n const { traceId, sampled, dsc } = scope.getPropagationContext();\n\n const sentryTraceHeader = span ? spanToTraceHeader(span) : generateSentryTraceHeader(traceId, undefined, sampled);\n const dynamicSamplingContext = transaction\n ? getDynamicSamplingContextFromSpan(transaction)\n : dsc\n ? dsc\n : getDynamicSamplingContextFromClient(traceId, client, scope);\n\n const sentryBaggageHeader = dynamicSamplingContextToSentryBaggageHeader(dynamicSamplingContext);\n\n const headers =\n typeof Request !== 'undefined' && isInstanceOf(request, Request) ? (request ).headers : options.headers;\n\n if (!headers) {\n return { 'sentry-trace': sentryTraceHeader, baggage: sentryBaggageHeader };\n } else if (typeof Headers !== 'undefined' && isInstanceOf(headers, Headers)) {\n const newHeaders = new Headers(headers );\n\n newHeaders.append('sentry-trace', sentryTraceHeader);\n\n if (sentryBaggageHeader) {\n // If the same header is appended multiple times the browser will merge the values into a single request header.\n // Its therefore safe to simply push a \"baggage\" entry, even though there might already be another baggage header.\n newHeaders.append(BAGGAGE_HEADER_NAME, sentryBaggageHeader);\n }\n\n return newHeaders ;\n } else if (Array.isArray(headers)) {\n const newHeaders = [...headers, ['sentry-trace', sentryTraceHeader]];\n\n if (sentryBaggageHeader) {\n // If there are multiple entries with the same key, the browser will merge the values into a single request header.\n // Its therefore safe to simply push a \"baggage\" entry, even though there might already be another baggage header.\n newHeaders.push([BAGGAGE_HEADER_NAME, sentryBaggageHeader]);\n }\n\n return newHeaders ;\n } else {\n const existingBaggageHeader = 'baggage' in headers ? headers.baggage : undefined;\n const newBaggageHeaders = [];\n\n if (Array.isArray(existingBaggageHeader)) {\n newBaggageHeaders.push(...existingBaggageHeader);\n } else if (existingBaggageHeader) {\n newBaggageHeaders.push(existingBaggageHeader);\n }\n\n if (sentryBaggageHeader) {\n newBaggageHeaders.push(sentryBaggageHeader);\n }\n\n return {\n ...(headers ),\n 'sentry-trace': sentryTraceHeader,\n baggage: newBaggageHeaders.length > 0 ? newBaggageHeaders.join(',') : undefined,\n };\n }\n}\n\nexport { addTracingHeadersToFetchRequest, instrumentFetchRequest };\n//# sourceMappingURL=fetch.js.map\n","import { spanToJSON, hasTracingEnabled, getCurrentScope, getActiveSpan, getDynamicSamplingContextFromSpan, spanToTraceHeader, getClient, getDynamicSamplingContextFromClient } from '@sentry/core';\nimport { addFetchInstrumentationHandler, addXhrInstrumentationHandler, SENTRY_XHR_DATA_KEY, dynamicSamplingContextToSentryBaggageHeader, generateSentryTraceHeader, BAGGAGE_HEADER_NAME, browserPerformanceTimeOrigin, stringMatchesSomePattern } from '@sentry/utils';\nimport { instrumentFetchRequest } from '../common/fetch.js';\nimport { addPerformanceInstrumentationHandler } from './instrument.js';\n\n/* eslint-disable max-lines */\n\nconst DEFAULT_TRACE_PROPAGATION_TARGETS = ['localhost', /^\\/(?!\\/)/];\n\n/** Options for Request Instrumentation */\n\nconst defaultRequestInstrumentationOptions = {\n traceFetch: true,\n traceXHR: true,\n enableHTTPTimings: true,\n // TODO (v8): Remove this property\n tracingOrigins: DEFAULT_TRACE_PROPAGATION_TARGETS,\n tracePropagationTargets: DEFAULT_TRACE_PROPAGATION_TARGETS,\n};\n\n/** Registers span creators for xhr and fetch requests */\nfunction instrumentOutgoingRequests(_options) {\n const {\n traceFetch,\n traceXHR,\n // eslint-disable-next-line deprecation/deprecation\n tracePropagationTargets,\n // eslint-disable-next-line deprecation/deprecation\n tracingOrigins,\n shouldCreateSpanForRequest,\n enableHTTPTimings,\n } = {\n traceFetch: defaultRequestInstrumentationOptions.traceFetch,\n traceXHR: defaultRequestInstrumentationOptions.traceXHR,\n ..._options,\n };\n\n const shouldCreateSpan =\n typeof shouldCreateSpanForRequest === 'function' ? shouldCreateSpanForRequest : (_) => true;\n\n // TODO(v8) Remove tracingOrigins here\n // The only reason we're passing it in here is because this instrumentOutgoingRequests function is publicly exported\n // and we don't want to break the API. We can remove it in v8.\n const shouldAttachHeadersWithTargets = (url) =>\n shouldAttachHeaders(url, tracePropagationTargets || tracingOrigins);\n\n const spans = {};\n\n if (traceFetch) {\n addFetchInstrumentationHandler(handlerData => {\n const createdSpan = instrumentFetchRequest(handlerData, shouldCreateSpan, shouldAttachHeadersWithTargets, spans);\n if (enableHTTPTimings && createdSpan) {\n addHTTPTimings(createdSpan);\n }\n });\n }\n\n if (traceXHR) {\n addXhrInstrumentationHandler(handlerData => {\n const createdSpan = xhrCallback(handlerData, shouldCreateSpan, shouldAttachHeadersWithTargets, spans);\n if (enableHTTPTimings && createdSpan) {\n addHTTPTimings(createdSpan);\n }\n });\n }\n}\n\nfunction isPerformanceResourceTiming(entry) {\n return (\n entry.entryType === 'resource' &&\n 'initiatorType' in entry &&\n typeof (entry ).nextHopProtocol === 'string' &&\n (entry.initiatorType === 'fetch' || entry.initiatorType === 'xmlhttprequest')\n );\n}\n\n/**\n * Creates a temporary observer to listen to the next fetch/xhr resourcing timings,\n * so that when timings hit their per-browser limit they don't need to be removed.\n *\n * @param span A span that has yet to be finished, must contain `url` on data.\n */\nfunction addHTTPTimings(span) {\n const { url } = spanToJSON(span).data || {};\n\n if (!url || typeof url !== 'string') {\n return;\n }\n\n const cleanup = addPerformanceInstrumentationHandler('resource', ({ entries }) => {\n entries.forEach(entry => {\n if (isPerformanceResourceTiming(entry) && entry.name.endsWith(url)) {\n const spanData = resourceTimingEntryToSpanData(entry);\n spanData.forEach(data => span.setAttribute(...data));\n // In the next tick, clean this handler up\n // We have to wait here because otherwise this cleans itself up before it is fully done\n setTimeout(cleanup);\n }\n });\n });\n}\n\n/**\n * Converts ALPN protocol ids to name and version.\n *\n * (https://www.iana.org/assignments/tls-extensiontype-values/tls-extensiontype-values.xhtml#alpn-protocol-ids)\n * @param nextHopProtocol PerformanceResourceTiming.nextHopProtocol\n */\nfunction extractNetworkProtocol(nextHopProtocol) {\n let name = 'unknown';\n let version = 'unknown';\n let _name = '';\n for (const char of nextHopProtocol) {\n // http/1.1 etc.\n if (char === '/') {\n [name, version] = nextHopProtocol.split('/');\n break;\n }\n // h2, h3 etc.\n if (!isNaN(Number(char))) {\n name = _name === 'h' ? 'http' : _name;\n version = nextHopProtocol.split(_name)[1];\n break;\n }\n _name += char;\n }\n if (_name === nextHopProtocol) {\n // webrtc, ftp, etc.\n name = _name;\n }\n return { name, version };\n}\n\nfunction getAbsoluteTime(time = 0) {\n return ((browserPerformanceTimeOrigin || performance.timeOrigin) + time) / 1000;\n}\n\nfunction resourceTimingEntryToSpanData(resourceTiming) {\n const { name, version } = extractNetworkProtocol(resourceTiming.nextHopProtocol);\n\n const timingSpanData = [];\n\n timingSpanData.push(['network.protocol.version', version], ['network.protocol.name', name]);\n\n if (!browserPerformanceTimeOrigin) {\n return timingSpanData;\n }\n return [\n ...timingSpanData,\n ['http.request.redirect_start', getAbsoluteTime(resourceTiming.redirectStart)],\n ['http.request.fetch_start', getAbsoluteTime(resourceTiming.fetchStart)],\n ['http.request.domain_lookup_start', getAbsoluteTime(resourceTiming.domainLookupStart)],\n ['http.request.domain_lookup_end', getAbsoluteTime(resourceTiming.domainLookupEnd)],\n ['http.request.connect_start', getAbsoluteTime(resourceTiming.connectStart)],\n ['http.request.secure_connection_start', getAbsoluteTime(resourceTiming.secureConnectionStart)],\n ['http.request.connection_end', getAbsoluteTime(resourceTiming.connectEnd)],\n ['http.request.request_start', getAbsoluteTime(resourceTiming.requestStart)],\n ['http.request.response_start', getAbsoluteTime(resourceTiming.responseStart)],\n ['http.request.response_end', getAbsoluteTime(resourceTiming.responseEnd)],\n ];\n}\n\n/**\n * A function that determines whether to attach tracing headers to a request.\n * This was extracted from `instrumentOutgoingRequests` to make it easier to test shouldAttachHeaders.\n * We only export this fuction for testing purposes.\n */\nfunction shouldAttachHeaders(url, tracePropagationTargets) {\n return stringMatchesSomePattern(url, tracePropagationTargets || DEFAULT_TRACE_PROPAGATION_TARGETS);\n}\n\n/**\n * Create and track xhr request spans\n *\n * @returns Span if a span was created, otherwise void.\n */\n// eslint-disable-next-line complexity\nfunction xhrCallback(\n handlerData,\n shouldCreateSpan,\n shouldAttachHeaders,\n spans,\n) {\n const xhr = handlerData.xhr;\n const sentryXhrData = xhr && xhr[SENTRY_XHR_DATA_KEY];\n\n if (!hasTracingEnabled() || !xhr || xhr.__sentry_own_request__ || !sentryXhrData) {\n return undefined;\n }\n\n const shouldCreateSpanResult = shouldCreateSpan(sentryXhrData.url);\n\n // check first if the request has finished and is tracked by an existing span which should now end\n if (handlerData.endTimestamp && shouldCreateSpanResult) {\n const spanId = xhr.__sentry_xhr_span_id__;\n if (!spanId) return;\n\n const span = spans[spanId];\n if (span && sentryXhrData.status_code !== undefined) {\n span.setHttpStatus(sentryXhrData.status_code);\n span.end();\n\n // eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n delete spans[spanId];\n }\n return undefined;\n }\n\n const scope = getCurrentScope();\n const parentSpan = getActiveSpan();\n\n const span =\n shouldCreateSpanResult && parentSpan\n ? // eslint-disable-next-line deprecation/deprecation\n parentSpan.startChild({\n data: {\n type: 'xhr',\n 'http.method': sentryXhrData.method,\n url: sentryXhrData.url,\n },\n description: `${sentryXhrData.method} ${sentryXhrData.url}`,\n op: 'http.client',\n origin: 'auto.http.browser',\n })\n : undefined;\n\n if (span) {\n xhr.__sentry_xhr_span_id__ = span.spanContext().spanId;\n spans[xhr.__sentry_xhr_span_id__] = span;\n }\n\n if (xhr.setRequestHeader && shouldAttachHeaders(sentryXhrData.url)) {\n if (span) {\n const transaction = span && span.transaction;\n const dynamicSamplingContext = transaction && getDynamicSamplingContextFromSpan(transaction);\n const sentryBaggageHeader = dynamicSamplingContextToSentryBaggageHeader(dynamicSamplingContext);\n setHeaderOnXhr(xhr, spanToTraceHeader(span), sentryBaggageHeader);\n } else {\n const client = getClient();\n const { traceId, sampled, dsc } = scope.getPropagationContext();\n const sentryTraceHeader = generateSentryTraceHeader(traceId, undefined, sampled);\n const dynamicSamplingContext =\n dsc || (client ? getDynamicSamplingContextFromClient(traceId, client, scope) : undefined);\n const sentryBaggageHeader = dynamicSamplingContextToSentryBaggageHeader(dynamicSamplingContext);\n setHeaderOnXhr(xhr, sentryTraceHeader, sentryBaggageHeader);\n }\n }\n\n return span;\n}\n\nfunction setHeaderOnXhr(\n xhr,\n sentryTraceHeader,\n sentryBaggageHeader,\n) {\n try {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n xhr.setRequestHeader('sentry-trace', sentryTraceHeader);\n if (sentryBaggageHeader) {\n // From MDN: \"If this method is called several times with the same header, the values are merged into one single request header.\"\n // We can therefore simply set a baggage header without checking what was there before\n // https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/setRequestHeader\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n xhr.setRequestHeader(BAGGAGE_HEADER_NAME, sentryBaggageHeader);\n }\n } catch (_) {\n // Error: InvalidStateError: Failed to execute 'setRequestHeader' on 'XMLHttpRequest': The object's state must be OPENED.\n }\n}\n\nexport { DEFAULT_TRACE_PROPAGATION_TARGETS, defaultRequestInstrumentationOptions, extractNetworkProtocol, instrumentOutgoingRequests, shouldAttachHeaders, xhrCallback };\n//# sourceMappingURL=request.js.map\n","import { GLOBAL_OBJ } from '@sentry/utils';\n\nconst WINDOW = GLOBAL_OBJ ;\n\nexport { WINDOW };\n//# sourceMappingURL=types.js.map\n","import { WINDOW } from '../../types.js';\nimport { onHidden } from './onHidden.js';\n\n/*\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nlet firstHiddenTime = -1;\n\nconst initHiddenTime = () => {\n // If the document is hidden and not prerendering, assume it was always\n // hidden and the page was loaded in the background.\n return WINDOW.document.visibilityState === 'hidden' && !WINDOW.document.prerendering ? 0 : Infinity;\n};\n\nconst trackChanges = () => {\n // Update the time if/when the document becomes hidden.\n onHidden(({ timeStamp }) => {\n firstHiddenTime = timeStamp;\n }, true);\n};\n\nconst getVisibilityWatcher = (\n\n) => {\n if (firstHiddenTime < 0) {\n // If the document is hidden when this code runs, assume it was hidden\n // since navigation start. This isn't a perfect heuristic, but it's the\n // best we can do until an API is available to support querying past\n // visibilityState.\n firstHiddenTime = initHiddenTime();\n trackChanges();\n }\n return {\n get firstHiddenTime() {\n return firstHiddenTime;\n },\n };\n};\n\nexport { getVisibilityWatcher };\n//# sourceMappingURL=getVisibilityWatcher.js.map\n","import { WINDOW } from '../../types.js';\n\n/*\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nconst onHidden = (cb, once) => {\n const onHiddenOrPageHide = (event) => {\n if (event.type === 'pagehide' || WINDOW.document.visibilityState === 'hidden') {\n cb(event);\n if (once) {\n removeEventListener('visibilitychange', onHiddenOrPageHide, true);\n removeEventListener('pagehide', onHiddenOrPageHide, true);\n }\n }\n };\n addEventListener('visibilitychange', onHiddenOrPageHide, true);\n // Some browsers have buggy implementations of visibilitychange,\n // so we use pagehide in addition, just to be safe.\n addEventListener('pagehide', onHiddenOrPageHide, true);\n};\n\nexport { onHidden };\n//# sourceMappingURL=onHidden.js.map\n","/**\n * This serves as a build time flag that will be true by default, but false in non-debug builds or if users replace `__SENTRY_DEBUG__` in their generated code.\n *\n * ATTENTION: This constant must never cross package boundaries (i.e. be exported) to guarantee that it can be used for tree shaking.\n */\nconst DEBUG_BUILD = (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__);\n\nexport { DEBUG_BUILD };\n//# sourceMappingURL=debug-build.js.map\n","import { createEnvelope } from './envelope.js';\nimport { dateTimestampInSeconds } from './time.js';\n\n/**\n * Creates client report envelope\n * @param discarded_events An array of discard events\n * @param dsn A DSN that can be set on the header. Optional.\n */\nfunction createClientReportEnvelope(\n discarded_events,\n dsn,\n timestamp,\n) {\n const clientReportItem = [\n { type: 'client_report' },\n {\n timestamp: timestamp || dateTimestampInSeconds(),\n discarded_events,\n },\n ];\n return createEnvelope(dsn ? { dsn } : {}, [clientReportItem]);\n}\n\nexport { createClientReportEnvelope };\n//# sourceMappingURL=clientreport.js.map\n","import { BaseClient, SDK_VERSION } from '@sentry/core';\nimport { getSDKSource, logger, createClientReportEnvelope, dsnToString } from '@sentry/utils';\nimport { DEBUG_BUILD } from './debug-build.js';\nimport { eventFromException, eventFromMessage } from './eventbuilder.js';\nimport { WINDOW } from './helpers.js';\nimport { createUserFeedbackEnvelope } from './userfeedback.js';\n\n/**\n * Configuration options for the Sentry Browser SDK.\n * @see @sentry/types Options for more information.\n */\n\n/**\n * The Sentry Browser SDK Client.\n *\n * @see BrowserOptions for documentation on configuration options.\n * @see SentryClient for usage documentation.\n */\nclass BrowserClient extends BaseClient {\n /**\n * Creates a new Browser SDK instance.\n *\n * @param options Configuration options for this SDK.\n */\n constructor(options) {\n const sdkSource = WINDOW.SENTRY_SDK_SOURCE || getSDKSource();\n\n options._metadata = options._metadata || {};\n options._metadata.sdk = options._metadata.sdk || {\n name: 'sentry.javascript.browser',\n packages: [\n {\n name: `${sdkSource}:@sentry/browser`,\n version: SDK_VERSION,\n },\n ],\n version: SDK_VERSION,\n };\n\n super(options);\n\n if (options.sendClientReports && WINDOW.document) {\n WINDOW.document.addEventListener('visibilitychange', () => {\n if (WINDOW.document.visibilityState === 'hidden') {\n this._flushOutcomes();\n }\n });\n }\n }\n\n /**\n * @inheritDoc\n */\n eventFromException(exception, hint) {\n return eventFromException(this._options.stackParser, exception, hint, this._options.attachStacktrace);\n }\n\n /**\n * @inheritDoc\n */\n eventFromMessage(\n message,\n // eslint-disable-next-line deprecation/deprecation\n level = 'info',\n hint,\n ) {\n return eventFromMessage(this._options.stackParser, message, level, hint, this._options.attachStacktrace);\n }\n\n /**\n * Sends user feedback to Sentry.\n */\n captureUserFeedback(feedback) {\n if (!this._isEnabled()) {\n DEBUG_BUILD && logger.warn('SDK not enabled, will not capture user feedback.');\n return;\n }\n\n const envelope = createUserFeedbackEnvelope(feedback, {\n metadata: this.getSdkMetadata(),\n dsn: this.getDsn(),\n tunnel: this.getOptions().tunnel,\n });\n\n // _sendEnvelope should not throw\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n this._sendEnvelope(envelope);\n }\n\n /**\n * @inheritDoc\n */\n _prepareEvent(event, hint, scope) {\n event.platform = event.platform || 'javascript';\n return super._prepareEvent(event, hint, scope);\n }\n\n /**\n * Sends client reports as an envelope.\n */\n _flushOutcomes() {\n const outcomes = this._clearOutcomes();\n\n if (outcomes.length === 0) {\n DEBUG_BUILD && logger.log('No outcomes to send');\n return;\n }\n\n // This is really the only place where we want to check for a DSN and only send outcomes then\n if (!this._dsn) {\n DEBUG_BUILD && logger.log('No dsn provided, will not send outcomes');\n return;\n }\n\n DEBUG_BUILD && logger.log('Sending outcomes:', outcomes);\n\n const envelope = createClientReportEnvelope(outcomes, this._options.tunnel && dsnToString(this._dsn));\n\n // _sendEnvelope should not throw\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n this._sendEnvelope(envelope);\n }\n}\n\nexport { BrowserClient };\n//# sourceMappingURL=client.js.map\n","/**\n * This serves as a build time flag that will be true by default, but false in non-debug builds or if users replace `__SENTRY_DEBUG__` in their generated code.\n *\n * ATTENTION: This constant must never cross package boundaries (i.e. be exported) to guarantee that it can be used for tree shaking.\n */\nconst DEBUG_BUILD = (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__);\n\nexport { DEBUG_BUILD };\n//# sourceMappingURL=debug-build.js.map\n","import { getClient } from '@sentry/core';\nimport { addExceptionMechanism, resolvedSyncPromise, isErrorEvent, isDOMError, isDOMException, addExceptionTypeValue, isError, isPlainObject, isEvent, isParameterizedString, normalizeToSize, extractExceptionKeysForMessage } from '@sentry/utils';\n\n/**\n * This function creates an exception from a JavaScript Error\n */\nfunction exceptionFromError(stackParser, ex) {\n // Get the frames first since Opera can lose the stack if we touch anything else first\n const frames = parseStackFrames(stackParser, ex);\n\n const exception = {\n type: ex && ex.name,\n value: extractMessage(ex),\n };\n\n if (frames.length) {\n exception.stacktrace = { frames };\n }\n\n if (exception.type === undefined && exception.value === '') {\n exception.value = 'Unrecoverable error caught';\n }\n\n return exception;\n}\n\n/**\n * @hidden\n */\nfunction eventFromPlainObject(\n stackParser,\n exception,\n syntheticException,\n isUnhandledRejection,\n) {\n const client = getClient();\n const normalizeDepth = client && client.getOptions().normalizeDepth;\n\n const event = {\n exception: {\n values: [\n {\n type: isEvent(exception) ? exception.constructor.name : isUnhandledRejection ? 'UnhandledRejection' : 'Error',\n value: getNonErrorObjectExceptionValue(exception, { isUnhandledRejection }),\n },\n ],\n },\n extra: {\n __serialized__: normalizeToSize(exception, normalizeDepth),\n },\n };\n\n if (syntheticException) {\n const frames = parseStackFrames(stackParser, syntheticException);\n if (frames.length) {\n // event.exception.values[0] has been set above\n (event.exception ).values[0].stacktrace = { frames };\n }\n }\n\n return event;\n}\n\n/**\n * @hidden\n */\nfunction eventFromError(stackParser, ex) {\n return {\n exception: {\n values: [exceptionFromError(stackParser, ex)],\n },\n };\n}\n\n/** Parses stack frames from an error */\nfunction parseStackFrames(\n stackParser,\n ex,\n) {\n // Access and store the stacktrace property before doing ANYTHING\n // else to it because Opera is not very good at providing it\n // reliably in other circumstances.\n const stacktrace = ex.stacktrace || ex.stack || '';\n\n const popSize = getPopSize(ex);\n\n try {\n return stackParser(stacktrace, popSize);\n } catch (e) {\n // no-empty\n }\n\n return [];\n}\n\n// Based on our own mapping pattern - https://github.com/getsentry/sentry/blob/9f08305e09866c8bd6d0c24f5b0aabdd7dd6c59c/src/sentry/lang/javascript/errormapping.py#L83-L108\nconst reactMinifiedRegexp = /Minified React error #\\d+;/i;\n\nfunction getPopSize(ex) {\n if (ex) {\n if (typeof ex.framesToPop === 'number') {\n return ex.framesToPop;\n }\n\n if (reactMinifiedRegexp.test(ex.message)) {\n return 1;\n }\n }\n\n return 0;\n}\n\n/**\n * There are cases where stacktrace.message is an Event object\n * https://github.com/getsentry/sentry-javascript/issues/1949\n * In this specific case we try to extract stacktrace.message.error.message\n */\nfunction extractMessage(ex) {\n const message = ex && ex.message;\n if (!message) {\n return 'No error message';\n }\n if (message.error && typeof message.error.message === 'string') {\n return message.error.message;\n }\n return message;\n}\n\n/**\n * Creates an {@link Event} from all inputs to `captureException` and non-primitive inputs to `captureMessage`.\n * @hidden\n */\nfunction eventFromException(\n stackParser,\n exception,\n hint,\n attachStacktrace,\n) {\n const syntheticException = (hint && hint.syntheticException) || undefined;\n const event = eventFromUnknownInput(stackParser, exception, syntheticException, attachStacktrace);\n addExceptionMechanism(event); // defaults to { type: 'generic', handled: true }\n event.level = 'error';\n if (hint && hint.event_id) {\n event.event_id = hint.event_id;\n }\n return resolvedSyncPromise(event);\n}\n\n/**\n * Builds and Event from a Message\n * @hidden\n */\nfunction eventFromMessage(\n stackParser,\n message,\n // eslint-disable-next-line deprecation/deprecation\n level = 'info',\n hint,\n attachStacktrace,\n) {\n const syntheticException = (hint && hint.syntheticException) || undefined;\n const event = eventFromString(stackParser, message, syntheticException, attachStacktrace);\n event.level = level;\n if (hint && hint.event_id) {\n event.event_id = hint.event_id;\n }\n return resolvedSyncPromise(event);\n}\n\n/**\n * @hidden\n */\nfunction eventFromUnknownInput(\n stackParser,\n exception,\n syntheticException,\n attachStacktrace,\n isUnhandledRejection,\n) {\n let event;\n\n if (isErrorEvent(exception ) && (exception ).error) {\n // If it is an ErrorEvent with `error` property, extract it to get actual Error\n const errorEvent = exception ;\n return eventFromError(stackParser, errorEvent.error );\n }\n\n // If it is a `DOMError` (which is a legacy API, but still supported in some browsers) then we just extract the name\n // and message, as it doesn't provide anything else. According to the spec, all `DOMExceptions` should also be\n // `Error`s, but that's not the case in IE11, so in that case we treat it the same as we do a `DOMError`.\n //\n // https://developer.mozilla.org/en-US/docs/Web/API/DOMError\n // https://developer.mozilla.org/en-US/docs/Web/API/DOMException\n // https://webidl.spec.whatwg.org/#es-DOMException-specialness\n if (isDOMError(exception) || isDOMException(exception )) {\n const domException = exception ;\n\n if ('stack' in (exception )) {\n event = eventFromError(stackParser, exception );\n } else {\n const name = domException.name || (isDOMError(domException) ? 'DOMError' : 'DOMException');\n const message = domException.message ? `${name}: ${domException.message}` : name;\n event = eventFromString(stackParser, message, syntheticException, attachStacktrace);\n addExceptionTypeValue(event, message);\n }\n if ('code' in domException) {\n // eslint-disable-next-line deprecation/deprecation\n event.tags = { ...event.tags, 'DOMException.code': `${domException.code}` };\n }\n\n return event;\n }\n if (isError(exception)) {\n // we have a real Error object, do nothing\n return eventFromError(stackParser, exception);\n }\n if (isPlainObject(exception) || isEvent(exception)) {\n // If it's a plain object or an instance of `Event` (the built-in JS kind, not this SDK's `Event` type), serialize\n // it manually. This will allow us to group events based on top-level keys which is much better than creating a new\n // group on any key/value change.\n const objectException = exception ;\n event = eventFromPlainObject(stackParser, objectException, syntheticException, isUnhandledRejection);\n addExceptionMechanism(event, {\n synthetic: true,\n });\n return event;\n }\n\n // If none of previous checks were valid, then it means that it's not:\n // - an instance of DOMError\n // - an instance of DOMException\n // - an instance of Event\n // - an instance of Error\n // - a valid ErrorEvent (one with an error property)\n // - a plain Object\n //\n // So bail out and capture it as a simple message:\n event = eventFromString(stackParser, exception , syntheticException, attachStacktrace);\n addExceptionTypeValue(event, `${exception}`, undefined);\n addExceptionMechanism(event, {\n synthetic: true,\n });\n\n return event;\n}\n\n/**\n * @hidden\n */\nfunction eventFromString(\n stackParser,\n message,\n syntheticException,\n attachStacktrace,\n) {\n const event = {};\n\n if (attachStacktrace && syntheticException) {\n const frames = parseStackFrames(stackParser, syntheticException);\n if (frames.length) {\n event.exception = {\n values: [{ value: message, stacktrace: { frames } }],\n };\n }\n }\n\n if (isParameterizedString(message)) {\n const { __sentry_template_string__, __sentry_template_values__ } = message;\n\n event.logentry = {\n message: __sentry_template_string__,\n params: __sentry_template_values__,\n };\n return event;\n }\n\n event.message = message;\n return event;\n}\n\nfunction getNonErrorObjectExceptionValue(\n exception,\n { isUnhandledRejection },\n) {\n const keys = extractExceptionKeysForMessage(exception);\n const captureType = isUnhandledRejection ? 'promise rejection' : 'exception';\n\n // Some ErrorEvent instances do not have an `error` property, which is why they are not handled before\n // We still want to try to get a decent message for these cases\n if (isErrorEvent(exception)) {\n return `Event \\`ErrorEvent\\` captured as ${captureType} with message \\`${exception.message}\\``;\n }\n\n if (isEvent(exception)) {\n const className = getObjectClassName(exception);\n return `Event \\`${className}\\` (type=${exception.type}) captured as ${captureType}`;\n }\n\n return `Object captured as ${captureType} with keys: ${keys}`;\n}\n\nfunction getObjectClassName(obj) {\n try {\n const prototype = Object.getPrototypeOf(obj);\n return prototype ? prototype.constructor.name : undefined;\n } catch (e) {\n // ignore errors here\n }\n}\n\nexport { eventFromError, eventFromException, eventFromMessage, eventFromPlainObject, eventFromString, eventFromUnknownInput, exceptionFromError, parseStackFrames };\n//# sourceMappingURL=eventbuilder.js.map\n","import { withScope, captureException } from '@sentry/core';\nimport { GLOBAL_OBJ, getOriginalFunction, markFunctionWrapped, addNonEnumerableProperty, addExceptionTypeValue, addExceptionMechanism } from '@sentry/utils';\n\nconst WINDOW = GLOBAL_OBJ ;\n\nlet ignoreOnError = 0;\n\n/**\n * @hidden\n */\nfunction shouldIgnoreOnError() {\n return ignoreOnError > 0;\n}\n\n/**\n * @hidden\n */\nfunction ignoreNextOnError() {\n // onerror should trigger before setTimeout\n ignoreOnError++;\n setTimeout(() => {\n ignoreOnError--;\n });\n}\n\n/**\n * Instruments the given function and sends an event to Sentry every time the\n * function throws an exception.\n *\n * @param fn A function to wrap. It is generally safe to pass an unbound function, because the returned wrapper always\n * has a correct `this` context.\n * @returns The wrapped function.\n * @hidden\n */\nfunction wrap(\n fn,\n options\n\n = {},\n before,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n) {\n // for future readers what this does is wrap a function and then create\n // a bi-directional wrapping between them.\n //\n // example: wrapped = wrap(original);\n // original.__sentry_wrapped__ -> wrapped\n // wrapped.__sentry_original__ -> original\n\n if (typeof fn !== 'function') {\n return fn;\n }\n\n try {\n // if we're dealing with a function that was previously wrapped, return\n // the original wrapper.\n const wrapper = fn.__sentry_wrapped__;\n if (wrapper) {\n return wrapper;\n }\n\n // We don't wanna wrap it twice\n if (getOriginalFunction(fn)) {\n return fn;\n }\n } catch (e) {\n // Just accessing custom props in some Selenium environments\n // can cause a \"Permission denied\" exception (see raven-js#495).\n // Bail on wrapping and return the function as-is (defers to window.onerror).\n return fn;\n }\n\n /* eslint-disable prefer-rest-params */\n // It is important that `sentryWrapped` is not an arrow function to preserve the context of `this`\n const sentryWrapped = function () {\n const args = Array.prototype.slice.call(arguments);\n\n try {\n if (before && typeof before === 'function') {\n before.apply(this, arguments);\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unsafe-member-access\n const wrappedArguments = args.map((arg) => wrap(arg, options));\n\n // Attempt to invoke user-land function\n // NOTE: If you are a Sentry user, and you are seeing this stack frame, it\n // means the sentry.javascript SDK caught an error invoking your application code. This\n // is expected behavior and NOT indicative of a bug with sentry.javascript.\n return fn.apply(this, wrappedArguments);\n } catch (ex) {\n ignoreNextOnError();\n\n withScope(scope => {\n scope.addEventProcessor(event => {\n if (options.mechanism) {\n addExceptionTypeValue(event, undefined, undefined);\n addExceptionMechanism(event, options.mechanism);\n }\n\n event.extra = {\n ...event.extra,\n arguments: args,\n };\n\n return event;\n });\n\n captureException(ex);\n });\n\n throw ex;\n }\n };\n /* eslint-enable prefer-rest-params */\n\n // Accessing some objects may throw\n // ref: https://github.com/getsentry/sentry-javascript/issues/1168\n try {\n for (const property in fn) {\n if (Object.prototype.hasOwnProperty.call(fn, property)) {\n sentryWrapped[property] = fn[property];\n }\n }\n } catch (_oO) {} // eslint-disable-line no-empty\n\n // Signal that this function has been wrapped/filled already\n // for both debugging and to prevent it to being wrapped/filled twice\n markFunctionWrapped(sentryWrapped, fn);\n\n addNonEnumerableProperty(fn, '__sentry_wrapped__', sentryWrapped);\n\n // Restore original function name (not all browsers allow that)\n try {\n const descriptor = Object.getOwnPropertyDescriptor(sentryWrapped, 'name') ;\n if (descriptor.configurable) {\n Object.defineProperty(sentryWrapped, 'name', {\n get() {\n return fn.name;\n },\n });\n }\n // eslint-disable-next-line no-empty\n } catch (_oO) {}\n\n return sentryWrapped;\n}\n\n/**\n * All properties the report dialog supports\n *\n * @deprecated This type will be removed in the next major version of the Sentry SDK. `showReportDialog` will still be around, however the `eventId` option will now be required.\n */\n\nexport { WINDOW, ignoreNextOnError, shouldIgnoreOnError, wrap };\n//# sourceMappingURL=helpers.js.map\n","import { isError, isPlainObject, isParameterizedString } from './is.js';\nimport { addExceptionTypeValue, addExceptionMechanism } from './misc.js';\nimport { normalizeToSize } from './normalize.js';\nimport { extractExceptionKeysForMessage } from './object.js';\n\n/**\n * Extracts stack frames from the error.stack string\n */\nfunction parseStackFrames(stackParser, error) {\n return stackParser(error.stack || '', 1);\n}\n\n/**\n * Extracts stack frames from the error and builds a Sentry Exception\n */\nfunction exceptionFromError(stackParser, error) {\n const exception = {\n type: error.name || error.constructor.name,\n value: error.message,\n };\n\n const frames = parseStackFrames(stackParser, error);\n if (frames.length) {\n exception.stacktrace = { frames };\n }\n\n return exception;\n}\n\nfunction getMessageForObject(exception) {\n if ('name' in exception && typeof exception.name === 'string') {\n let message = `'${exception.name}' captured as exception`;\n\n if ('message' in exception && typeof exception.message === 'string') {\n message += ` with message '${exception.message}'`;\n }\n\n return message;\n } else if ('message' in exception && typeof exception.message === 'string') {\n return exception.message;\n } else {\n // This will allow us to group events based on top-level keys\n // which is much better than creating new group when any key/value change\n return `Object captured as exception with keys: ${extractExceptionKeysForMessage(\n exception ,\n )}`;\n }\n}\n\n/**\n * Builds and Event from a Exception\n *\n * TODO(v8): Remove getHub fallback\n * @hidden\n */\nfunction eventFromUnknownInput(\n getHubOrClient,\n stackParser,\n exception,\n hint,\n) {\n const client = typeof getHubOrClient === 'function' ? getHubOrClient().getClient() : getHubOrClient;\n\n let ex = exception;\n const providedMechanism =\n hint && hint.data && (hint.data ).mechanism;\n const mechanism = providedMechanism || {\n handled: true,\n type: 'generic',\n };\n\n let extras;\n\n if (!isError(exception)) {\n if (isPlainObject(exception)) {\n const normalizeDepth = client && client.getOptions().normalizeDepth;\n extras = { ['__serialized__']: normalizeToSize(exception , normalizeDepth) };\n\n const message = getMessageForObject(exception);\n ex = (hint && hint.syntheticException) || new Error(message);\n (ex ).message = message;\n } else {\n // This handles when someone does: `throw \"something awesome\";`\n // We use synthesized Error here so we can extract a (rough) stack trace.\n ex = (hint && hint.syntheticException) || new Error(exception );\n (ex ).message = exception ;\n }\n mechanism.synthetic = true;\n }\n\n const event = {\n exception: {\n values: [exceptionFromError(stackParser, ex )],\n },\n };\n\n if (extras) {\n event.extra = extras;\n }\n\n addExceptionTypeValue(event, undefined, undefined);\n addExceptionMechanism(event, mechanism);\n\n return {\n ...event,\n event_id: hint && hint.event_id,\n };\n}\n\n/**\n * Builds and Event from a Message\n * @hidden\n */\nfunction eventFromMessage(\n stackParser,\n message,\n // eslint-disable-next-line deprecation/deprecation\n level = 'info',\n hint,\n attachStacktrace,\n) {\n const event = {\n event_id: hint && hint.event_id,\n level,\n };\n\n if (attachStacktrace && hint && hint.syntheticException) {\n const frames = parseStackFrames(stackParser, hint.syntheticException);\n if (frames.length) {\n event.exception = {\n values: [\n {\n value: message,\n stacktrace: { frames },\n },\n ],\n };\n }\n }\n\n if (isParameterizedString(message)) {\n const { __sentry_template_string__, __sentry_template_values__ } = message;\n\n event.logentry = {\n message: __sentry_template_string__,\n params: __sentry_template_values__,\n };\n return event;\n }\n\n event.message = message;\n return event;\n}\n\nexport { eventFromMessage, eventFromUnknownInput, exceptionFromError, parseStackFrames };\n//# sourceMappingURL=eventbuilder.js.map\n","import { applyAggregateErrorsToEvent, exceptionFromError } from '@sentry/utils';\nimport { convertIntegrationFnToClass } from '../integration.js';\n\nconst DEFAULT_KEY = 'cause';\nconst DEFAULT_LIMIT = 5;\n\nconst INTEGRATION_NAME = 'LinkedErrors';\n\nconst linkedErrorsIntegration = (options = {}) => {\n const limit = options.limit || DEFAULT_LIMIT;\n const key = options.key || DEFAULT_KEY;\n\n return {\n name: INTEGRATION_NAME,\n preprocessEvent(event, hint, client) {\n const options = client.getOptions();\n\n applyAggregateErrorsToEvent(\n exceptionFromError,\n options.stackParser,\n options.maxValueLength,\n key,\n limit,\n event,\n hint,\n );\n },\n };\n};\n\n/** Adds SDK info to an event. */\n// eslint-disable-next-line deprecation/deprecation\nconst LinkedErrors = convertIntegrationFnToClass(INTEGRATION_NAME, linkedErrorsIntegration);\n\nexport { LinkedErrors };\n//# sourceMappingURL=linkederrors.js.map\n","import { GLOBAL_OBJ } from '@sentry/utils';\n\n/** Keys are source filename/url, values are metadata objects. */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nconst filenameMetadataMap = new Map();\n/** Set of stack strings that have already been parsed. */\nconst parsedStacks = new Set();\n\nfunction ensureMetadataStacksAreParsed(parser) {\n if (!GLOBAL_OBJ._sentryModuleMetadata) {\n return;\n }\n\n for (const stack of Object.keys(GLOBAL_OBJ._sentryModuleMetadata)) {\n const metadata = GLOBAL_OBJ._sentryModuleMetadata[stack];\n\n if (parsedStacks.has(stack)) {\n continue;\n }\n\n // Ensure this stack doesn't get parsed again\n parsedStacks.add(stack);\n\n const frames = parser(stack);\n\n // Go through the frames starting from the top of the stack and find the first one with a filename\n for (const frame of frames.reverse()) {\n if (frame.filename) {\n // Save the metadata for this filename\n filenameMetadataMap.set(frame.filename, metadata);\n break;\n }\n }\n }\n}\n\n/**\n * Retrieve metadata for a specific JavaScript file URL.\n *\n * Metadata is injected by the Sentry bundler plugins using the `_experiments.moduleMetadata` config option.\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction getMetadataForUrl(parser, filename) {\n ensureMetadataStacksAreParsed(parser);\n return filenameMetadataMap.get(filename);\n}\n\n/**\n * Adds metadata to stack frames.\n *\n * Metadata is injected by the Sentry bundler plugins using the `_experiments.moduleMetadata` config option.\n */\nfunction addMetadataToStackFrames(parser, event) {\n try {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n event.exception.values.forEach(exception => {\n if (!exception.stacktrace) {\n return;\n }\n\n for (const frame of exception.stacktrace.frames || []) {\n if (!frame.filename) {\n continue;\n }\n\n const metadata = getMetadataForUrl(parser, frame.filename);\n\n if (metadata) {\n frame.module_metadata = metadata;\n }\n }\n });\n } catch (_) {\n // To save bundle size we're just try catching here instead of checking for the existence of all the different objects.\n }\n}\n\n/**\n * Strips metadata from stack frames.\n */\nfunction stripMetadataFromStackFrames(event) {\n try {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n event.exception.values.forEach(exception => {\n if (!exception.stacktrace) {\n return;\n }\n\n for (const frame of exception.stacktrace.frames || []) {\n delete frame.module_metadata;\n }\n });\n } catch (_) {\n // To save bundle size we're just try catching here instead of checking for the existence of all the different objects.\n }\n}\n\nexport { addMetadataToStackFrames, getMetadataForUrl, stripMetadataFromStackFrames };\n//# sourceMappingURL=metadata.js.map\n","import { forEachEnvelopeItem } from '@sentry/utils';\nimport { convertIntegrationFnToClass } from '../integration.js';\nimport { stripMetadataFromStackFrames, addMetadataToStackFrames } from '../metadata.js';\n\nconst INTEGRATION_NAME = 'ModuleMetadata';\n\nconst moduleMetadataIntegration = () => {\n return {\n name: INTEGRATION_NAME,\n setup(client) {\n if (typeof client.on !== 'function') {\n return;\n }\n\n // We need to strip metadata from stack frames before sending them to Sentry since these are client side only.\n client.on('beforeEnvelope', envelope => {\n forEachEnvelopeItem(envelope, (item, type) => {\n if (type === 'event') {\n const event = Array.isArray(item) ? (item )[1] : undefined;\n\n if (event) {\n stripMetadataFromStackFrames(event);\n item[1] = event;\n }\n }\n });\n });\n },\n\n processEvent(event, _hint, client) {\n const stackParser = client.getOptions().stackParser;\n addMetadataToStackFrames(stackParser, event);\n return event;\n },\n };\n};\n\n/**\n * Adds module metadata to stack frames.\n *\n * Metadata can be injected by the Sentry bundler plugins using the `_experiments.moduleMetadata` config option.\n *\n * When this integration is added, the metadata passed to the bundler plugin is added to the stack frames of all events\n * under the `module_metadata` property. This can be used to help in tagging or routing of events from different teams\n * our sources\n */\n// eslint-disable-next-line deprecation/deprecation\nconst ModuleMetadata = convertIntegrationFnToClass(INTEGRATION_NAME, moduleMetadataIntegration);\n\nexport { ModuleMetadata };\n//# sourceMappingURL=metadata.js.map\n","import { dsnFromString, forEachEnvelopeItem } from '@sentry/utils';\nimport { getEnvelopeEndpointWithUrlEncodedAuth } from '../api.js';\n\n/**\n * Gets an event from an envelope.\n *\n * This is only exported for use in the tests\n */\nfunction eventFromEnvelope(env, types) {\n let event;\n\n forEachEnvelopeItem(env, (item, type) => {\n if (types.includes(type)) {\n event = Array.isArray(item) ? (item )[1] : undefined;\n }\n // bail out if we found an event\n return !!event;\n });\n\n return event;\n}\n\n/**\n * Creates a transport that overrides the release on all events.\n */\nfunction makeOverrideReleaseTransport(\n createTransport,\n release,\n) {\n return options => {\n const transport = createTransport(options);\n\n return {\n send: async (envelope) => {\n const event = eventFromEnvelope(envelope, ['event', 'transaction', 'profile', 'replay_event']);\n\n if (event) {\n event.release = release;\n }\n return transport.send(envelope);\n },\n flush: timeout => transport.flush(timeout),\n };\n };\n}\n\n/**\n * Creates a transport that can send events to different DSNs depending on the envelope contents.\n */\nfunction makeMultiplexedTransport(\n createTransport,\n matcher,\n) {\n return options => {\n const fallbackTransport = createTransport(options);\n const otherTransports = {};\n\n function getTransport(dsn, release) {\n // We create a transport for every unique dsn/release combination as there may be code from multiple releases in\n // use at the same time\n const key = release ? `${dsn}:${release}` : dsn;\n\n if (!otherTransports[key]) {\n const validatedDsn = dsnFromString(dsn);\n if (!validatedDsn) {\n return undefined;\n }\n const url = getEnvelopeEndpointWithUrlEncodedAuth(validatedDsn);\n\n otherTransports[key] = release\n ? makeOverrideReleaseTransport(createTransport, release)({ ...options, url })\n : createTransport({ ...options, url });\n }\n\n return otherTransports[key];\n }\n\n async function send(envelope) {\n function getEvent(types) {\n const eventTypes = types && types.length ? types : ['event'];\n return eventFromEnvelope(envelope, eventTypes);\n }\n\n const transports = matcher({ envelope, getEvent })\n .map(result => {\n if (typeof result === 'string') {\n return getTransport(result, undefined);\n } else {\n return getTransport(result.dsn, result.release);\n }\n })\n .filter((t) => !!t);\n\n // If we have no transports to send to, use the fallback transport\n if (transports.length === 0) {\n transports.push(fallbackTransport);\n }\n\n const results = await Promise.all(transports.map(transport => transport.send(envelope)));\n\n return results[0];\n }\n\n async function flush(timeout) {\n const allTransports = [...Object.keys(otherTransports).map(dsn => otherTransports[dsn]), fallbackTransport];\n const results = await Promise.all(allTransports.map(transport => transport.flush(timeout)));\n return results.every(r => r);\n }\n\n return {\n send,\n flush,\n };\n };\n}\n\nexport { eventFromEnvelope, makeMultiplexedTransport };\n//# sourceMappingURL=multiplexed.js.map\n","import { COUNTER_METRIC_TYPE, GAUGE_METRIC_TYPE, DISTRIBUTION_METRIC_TYPE, SET_METRIC_TYPE } from './constants.js';\nimport { simpleHash } from './utils.js';\n\n/**\n * A metric instance representing a counter.\n */\nclass CounterMetric {\n constructor( _value) {this._value = _value;}\n\n /** @inheritDoc */\n get weight() {\n return 1;\n }\n\n /** @inheritdoc */\n add(value) {\n this._value += value;\n }\n\n /** @inheritdoc */\n toString() {\n return `${this._value}`;\n }\n}\n\n/**\n * A metric instance representing a gauge.\n */\nclass GaugeMetric {\n\n constructor(value) {\n this._last = value;\n this._min = value;\n this._max = value;\n this._sum = value;\n this._count = 1;\n }\n\n /** @inheritDoc */\n get weight() {\n return 5;\n }\n\n /** @inheritdoc */\n add(value) {\n this._last = value;\n if (value < this._min) {\n this._min = value;\n }\n if (value > this._max) {\n this._max = value;\n }\n this._sum += value;\n this._count++;\n }\n\n /** @inheritdoc */\n toString() {\n return `${this._last}:${this._min}:${this._max}:${this._sum}:${this._count}`;\n }\n}\n\n/**\n * A metric instance representing a distribution.\n */\nclass DistributionMetric {\n\n constructor(first) {\n this._value = [first];\n }\n\n /** @inheritDoc */\n get weight() {\n return this._value.length;\n }\n\n /** @inheritdoc */\n add(value) {\n this._value.push(value);\n }\n\n /** @inheritdoc */\n toString() {\n return this._value.join(':');\n }\n}\n\n/**\n * A metric instance representing a set.\n */\nclass SetMetric {\n\n constructor( first) {this.first = first;\n this._value = new Set([first]);\n }\n\n /** @inheritDoc */\n get weight() {\n return this._value.size;\n }\n\n /** @inheritdoc */\n add(value) {\n this._value.add(value);\n }\n\n /** @inheritdoc */\n toString() {\n return Array.from(this._value)\n .map(val => (typeof val === 'string' ? simpleHash(val) : val))\n .join(':');\n }\n}\n\nconst METRIC_MAP = {\n [COUNTER_METRIC_TYPE]: CounterMetric,\n [GAUGE_METRIC_TYPE]: GaugeMetric,\n [DISTRIBUTION_METRIC_TYPE]: DistributionMetric,\n [SET_METRIC_TYPE]: SetMetric,\n};\n\nexport { CounterMetric, DistributionMetric, GaugeMetric, METRIC_MAP, SetMetric };\n//# sourceMappingURL=instance.js.map\n","import { timestampInSeconds } from '@sentry/utils';\nimport { DEFAULT_BROWSER_FLUSH_INTERVAL, NAME_AND_TAG_KEY_NORMALIZATION_REGEX } from './constants.js';\nimport { METRIC_MAP } from './instance.js';\nimport { sanitizeTags, getBucketKey } from './utils.js';\n\n/**\n * A simple metrics aggregator that aggregates metrics in memory and flushes them periodically.\n * Default flush interval is 5 seconds.\n *\n * @experimental This API is experimental and might change in the future.\n */\nclass BrowserMetricsAggregator {\n // TODO(@anonrig): Use FinalizationRegistry to have a proper way of flushing the buckets\n // when the aggregator is garbage collected.\n // Ref: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/FinalizationRegistry\n\n constructor( _client) {this._client = _client;\n this._buckets = new Map();\n this._interval = setInterval(() => this.flush(), DEFAULT_BROWSER_FLUSH_INTERVAL);\n }\n\n /**\n * @inheritDoc\n */\n add(\n metricType,\n unsanitizedName,\n value,\n unit = 'none',\n unsanitizedTags = {},\n maybeFloatTimestamp = timestampInSeconds(),\n ) {\n const timestamp = Math.floor(maybeFloatTimestamp);\n const name = unsanitizedName.replace(NAME_AND_TAG_KEY_NORMALIZATION_REGEX, '_');\n const tags = sanitizeTags(unsanitizedTags);\n\n const bucketKey = getBucketKey(metricType, name, unit, tags);\n const bucketItem = this._buckets.get(bucketKey);\n if (bucketItem) {\n bucketItem.metric.add(value);\n // TODO(abhi): Do we need this check?\n if (bucketItem.timestamp < timestamp) {\n bucketItem.timestamp = timestamp;\n }\n } else {\n this._buckets.set(bucketKey, {\n // @ts-expect-error we don't need to narrow down the type of value here, saves bundle size.\n metric: new METRIC_MAP[metricType](value),\n timestamp,\n metricType,\n name,\n unit,\n tags,\n });\n }\n }\n\n /**\n * @inheritDoc\n */\n flush() {\n // short circuit if buckets are empty.\n if (this._buckets.size === 0) {\n return;\n }\n if (this._client.captureAggregateMetrics) {\n // TODO(@anonrig): Use Object.values() when we support ES6+\n const metricBuckets = Array.from(this._buckets).map(([, bucketItem]) => bucketItem);\n this._client.captureAggregateMetrics(metricBuckets);\n }\n this._buckets.clear();\n }\n\n /**\n * @inheritDoc\n */\n close() {\n clearInterval(this._interval);\n this.flush();\n }\n}\n\nexport { BrowserMetricsAggregator };\n//# sourceMappingURL=browser-aggregator.js.map\n","import { convertIntegrationFnToClass } from '../integration.js';\nimport { BrowserMetricsAggregator } from './browser-aggregator.js';\n\nconst INTEGRATION_NAME = 'MetricsAggregator';\n\nconst metricsAggregatorIntegration = () => {\n return {\n name: INTEGRATION_NAME,\n setup(client) {\n client.metricsAggregator = new BrowserMetricsAggregator(client);\n },\n };\n};\n\n/**\n * Enables Sentry metrics monitoring.\n *\n * @experimental This API is experimental and might having breaking changes in the future.\n */\n// eslint-disable-next-line deprecation/deprecation\nconst MetricsAggregator = convertIntegrationFnToClass(INTEGRATION_NAME, metricsAggregatorIntegration);\n\nexport { MetricsAggregator };\n//# sourceMappingURL=integration.js.map\n","import { logger } from '@sentry/utils';\nimport { DEBUG_BUILD } from '../debug-build.js';\nimport { getClient, getCurrentScope } from '../exports.js';\nimport { spanToJSON } from '../utils/spanUtils.js';\nimport { COUNTER_METRIC_TYPE, DISTRIBUTION_METRIC_TYPE, SET_METRIC_TYPE, GAUGE_METRIC_TYPE } from './constants.js';\nimport { MetricsAggregator } from './integration.js';\n\nfunction addToMetricsAggregator(\n metricType,\n name,\n value,\n data = {},\n) {\n const client = getClient();\n const scope = getCurrentScope();\n if (client) {\n if (!client.metricsAggregator) {\n DEBUG_BUILD &&\n logger.warn('No metrics aggregator enabled. Please add the MetricsAggregator integration to use metrics APIs');\n return;\n }\n const { unit, tags, timestamp } = data;\n const { release, environment } = client.getOptions();\n // eslint-disable-next-line deprecation/deprecation\n const transaction = scope.getTransaction();\n const metricTags = {};\n if (release) {\n metricTags.release = release;\n }\n if (environment) {\n metricTags.environment = environment;\n }\n if (transaction) {\n metricTags.transaction = spanToJSON(transaction).description || '';\n }\n\n DEBUG_BUILD && logger.log(`Adding value of ${value} to ${metricType} metric ${name}`);\n client.metricsAggregator.add(metricType, name, value, unit, { ...metricTags, ...tags }, timestamp);\n }\n}\n\n/**\n * Adds a value to a counter metric\n *\n * @experimental This API is experimental and might have breaking changes in the future.\n */\nfunction increment(name, value = 1, data) {\n addToMetricsAggregator(COUNTER_METRIC_TYPE, name, value, data);\n}\n\n/**\n * Adds a value to a distribution metric\n *\n * @experimental This API is experimental and might have breaking changes in the future.\n */\nfunction distribution(name, value, data) {\n addToMetricsAggregator(DISTRIBUTION_METRIC_TYPE, name, value, data);\n}\n\n/**\n * Adds a value to a set metric. Value must be a string or integer.\n *\n * @experimental This API is experimental and might have breaking changes in the future.\n */\nfunction set(name, value, data) {\n addToMetricsAggregator(SET_METRIC_TYPE, name, value, data);\n}\n\n/**\n * Adds a value to a gauge metric\n *\n * @experimental This API is experimental and might have breaking changes in the future.\n */\nfunction gauge(name, value, data) {\n addToMetricsAggregator(GAUGE_METRIC_TYPE, name, value, data);\n}\n\nconst metrics = {\n increment,\n distribution,\n set,\n gauge,\n MetricsAggregator,\n};\n\nexport { distribution, gauge, increment, metrics, set };\n//# sourceMappingURL=exports.js.map\n","import { getActiveTransaction } from './utils.js';\n\n/**\n * Adds a measurement to the current active transaction.\n */\nfunction setMeasurement(name, value, unit) {\n // eslint-disable-next-line deprecation/deprecation\n const transaction = getActiveTransaction();\n if (transaction) {\n transaction.setMeasurement(name, value, unit);\n }\n}\n\nexport { setMeasurement };\n//# sourceMappingURL=measurement.js.map\n","/**\n * Polyfill for the optional chain operator, `?.`, given previous conversion of the expression into an array of values,\n * descriptors, and functions.\n *\n * Adapted from Sucrase (https://github.com/alangpierce/sucrase)\n * See https://github.com/alangpierce/sucrase/blob/265887868966917f3b924ce38dfad01fbab1329f/src/transformers/OptionalChainingNullishTransformer.ts#L15\n *\n * @param ops Array result of expression conversion\n * @returns The value of the expression\n */\nfunction _optionalChain(ops) {\n let lastAccessLHS = undefined;\n let value = ops[0];\n let i = 1;\n while (i < ops.length) {\n const op = ops[i] ;\n const fn = ops[i + 1] ;\n i += 2;\n // by checking for loose equality to `null`, we catch both `null` and `undefined`\n if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) {\n // really we're meaning to return `undefined` as an actual value here, but it saves bytes not to write it\n return;\n }\n if (op === 'access' || op === 'optionalAccess') {\n lastAccessLHS = value;\n value = fn(value);\n } else if (op === 'call' || op === 'optionalCall') {\n value = fn((...args) => (value ).call(lastAccessLHS, ...args));\n lastAccessLHS = undefined;\n }\n }\n return value;\n}\n\n// Sucrase version\n// function _optionalChain(ops) {\n// let lastAccessLHS = undefined;\n// let value = ops[0];\n// let i = 1;\n// while (i < ops.length) {\n// const op = ops[i];\n// const fn = ops[i + 1];\n// i += 2;\n// if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) {\n// return undefined;\n// }\n// if (op === 'access' || op === 'optionalAccess') {\n// lastAccessLHS = value;\n// value = fn(value);\n// } else if (op === 'call' || op === 'optionalCall') {\n// value = fn((...args) => value.call(lastAccessLHS, ...args));\n// lastAccessLHS = undefined;\n// }\n// }\n// return value;\n// }\n\nexport { _optionalChain };\n//# sourceMappingURL=_optionalChain.js.map\n","/**\n * Checks whether given url points to Sentry server\n * @param url url to verify\n *\n * TODO(v8): Remove Hub fallback type\n */\nfunction isSentryRequestUrl(url, hubOrClient) {\n const client = hubOrClient && isHub(hubOrClient) ? hubOrClient.getClient() : hubOrClient;\n const dsn = client && client.getDsn();\n const tunnel = client && client.getOptions().tunnel;\n\n return checkDsn(url, dsn) || checkTunnel(url, tunnel);\n}\n\nfunction checkTunnel(url, tunnel) {\n if (!tunnel) {\n return false;\n }\n\n return removeTrailingSlash(url) === removeTrailingSlash(tunnel);\n}\n\nfunction checkDsn(url, dsn) {\n return dsn ? url.includes(dsn.host) : false;\n}\n\nfunction removeTrailingSlash(str) {\n return str[str.length - 1] === '/' ? str.slice(0, -1) : str;\n}\n\nfunction isHub(hubOrClient) {\n return (hubOrClient ).getClient !== undefined;\n}\n\nexport { isSentryRequestUrl };\n//# sourceMappingURL=isSentryRequestUrl.js.map\n","import { isNodeEnv } from './node.js';\nimport { GLOBAL_OBJ } from './worldwide.js';\n\n/**\n * Returns true if we are in the browser.\n */\nfunction isBrowser() {\n // eslint-disable-next-line no-restricted-globals\n return typeof window !== 'undefined' && (!isNodeEnv() || isElectronNodeRenderer());\n}\n\n// Electron renderers with nodeIntegration enabled are detected as Node.js so we specifically test for them\nfunction isElectronNodeRenderer() {\n return (\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-explicit-any\n (GLOBAL_OBJ ).process !== undefined && ((GLOBAL_OBJ ).process ).type === 'renderer'\n );\n}\n\nexport { isBrowser };\n//# sourceMappingURL=isBrowser.js.map\n","import { _nullishCoalesce, _optionalChain } from '@sentry/utils';\nimport { addBreadcrumb, getClient, isSentryRequestUrl, getCurrentScope, addEventProcessor, prepareEvent, getIsolationScope, setContext, captureException, spanToJSON, SEMANTIC_ATTRIBUTE_SENTRY_SOURCE } from '@sentry/core';\nimport { GLOBAL_OBJ, normalize, fill, htmlTreeAsString, browserPerformanceTimeOrigin, logger, uuid4, SENTRY_XHR_DATA_KEY, dropUndefinedKeys, stringMatchesSomePattern, addFetchInstrumentationHandler, addXhrInstrumentationHandler, addClickKeypressInstrumentationHandler, addHistoryInstrumentationHandler, createEnvelope, createEventEnvelopeHeaders, getSdkMetadataForEnvelopeHeader, updateRateLimits, isRateLimited, consoleSandbox, isBrowser } from '@sentry/utils';\nimport { addPerformanceInstrumentationHandler, addLcpInstrumentationHandler } from '@sentry-internal/tracing';\n\n// exporting a separate copy of `WINDOW` rather than exporting the one from `@sentry/browser`\n// prevents the browser package from being bundled in the CDN bundle, and avoids a\n// circular dependency between the browser and replay packages should `@sentry/browser` import\n// from `@sentry/replay` in the future\nconst WINDOW = GLOBAL_OBJ ;\n\nconst REPLAY_SESSION_KEY = 'sentryReplaySession';\nconst REPLAY_EVENT_NAME = 'replay_event';\nconst UNABLE_TO_SEND_REPLAY = 'Unable to send Replay';\n\n// The idle limit for a session after which recording is paused.\nconst SESSION_IDLE_PAUSE_DURATION = 300000; // 5 minutes in ms\n\n// The idle limit for a session after which the session expires.\nconst SESSION_IDLE_EXPIRE_DURATION = 900000; // 15 minutes in ms\n\n/** Default flush delays */\nconst DEFAULT_FLUSH_MIN_DELAY = 5000;\n// XXX: Temp fix for our debounce logic where `maxWait` would never occur if it\n// was the same as `wait`\nconst DEFAULT_FLUSH_MAX_DELAY = 5500;\n\n/* How long to wait for error checkouts */\nconst BUFFER_CHECKOUT_TIME = 60000;\n\nconst RETRY_BASE_INTERVAL = 5000;\nconst RETRY_MAX_COUNT = 3;\n\n/* The max (uncompressed) size in bytes of a network body. Any body larger than this will be truncated. */\nconst NETWORK_BODY_MAX_SIZE = 150000;\n\n/* The max size of a single console arg that is captured. Any arg larger than this will be truncated. */\nconst CONSOLE_ARG_MAX_SIZE = 5000;\n\n/* Min. time to wait before we consider something a slow click. */\nconst SLOW_CLICK_THRESHOLD = 3000;\n/* For scroll actions after a click, we only look for a very short time period to detect programmatic scrolling. */\nconst SLOW_CLICK_SCROLL_TIMEOUT = 300;\n\n/** When encountering a total segment size exceeding this size, stop the replay (as we cannot properly ingest it). */\nconst REPLAY_MAX_EVENT_BUFFER_SIZE = 20000000; // ~20MB\n\n/** Replays must be min. 5s long before we send them. */\nconst MIN_REPLAY_DURATION = 4999;\n/* The max. allowed value that the minReplayDuration can be set to. */\nconst MIN_REPLAY_DURATION_LIMIT = 15000;\n\n/** The max. length of a replay. */\nconst MAX_REPLAY_DURATION = 3600000; // 60 minutes in ms;\n\nconst CANVAS_QUALITY = {\n low: {\n sampling: {\n canvas: 1,\n },\n dataURLOptions: {\n type: 'image/webp',\n quality: 0.25,\n },\n },\n medium: {\n sampling: {\n canvas: 2,\n },\n dataURLOptions: {\n type: 'image/webp',\n quality: 0.4,\n },\n },\n high: {\n sampling: {\n canvas: 4,\n },\n dataURLOptions: {\n type: 'image/webp',\n quality: 0.5,\n },\n },\n};\n\nfunction _nullishCoalesce$1(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } }function _optionalChain$5(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }var NodeType$1;\n(function (NodeType) {\n NodeType[NodeType[\"Document\"] = 0] = \"Document\";\n NodeType[NodeType[\"DocumentType\"] = 1] = \"DocumentType\";\n NodeType[NodeType[\"Element\"] = 2] = \"Element\";\n NodeType[NodeType[\"Text\"] = 3] = \"Text\";\n NodeType[NodeType[\"CDATA\"] = 4] = \"CDATA\";\n NodeType[NodeType[\"Comment\"] = 5] = \"Comment\";\n})(NodeType$1 || (NodeType$1 = {}));\n\nfunction isElement$1(n) {\n return n.nodeType === n.ELEMENT_NODE;\n}\nfunction isShadowRoot(n) {\n const host = _optionalChain$5([n, 'optionalAccess', _ => _.host]);\n return Boolean(_optionalChain$5([host, 'optionalAccess', _2 => _2.shadowRoot]) === n);\n}\nfunction isNativeShadowDom(shadowRoot) {\n return Object.prototype.toString.call(shadowRoot) === '[object ShadowRoot]';\n}\nfunction fixBrowserCompatibilityIssuesInCSS(cssText) {\n if (cssText.includes(' background-clip: text;') &&\n !cssText.includes(' -webkit-background-clip: text;')) {\n cssText = cssText.replace(' background-clip: text;', ' -webkit-background-clip: text; background-clip: text;');\n }\n return cssText;\n}\nfunction escapeImportStatement(rule) {\n const { cssText } = rule;\n if (cssText.split('\"').length < 3)\n return cssText;\n const statement = ['@import', `url(${JSON.stringify(rule.href)})`];\n if (rule.layerName === '') {\n statement.push(`layer`);\n }\n else if (rule.layerName) {\n statement.push(`layer(${rule.layerName})`);\n }\n if (rule.supportsText) {\n statement.push(`supports(${rule.supportsText})`);\n }\n if (rule.media.length) {\n statement.push(rule.media.mediaText);\n }\n return statement.join(' ') + ';';\n}\nfunction stringifyStylesheet(s) {\n try {\n const rules = s.rules || s.cssRules;\n return rules\n ? fixBrowserCompatibilityIssuesInCSS(Array.from(rules, stringifyRule).join(''))\n : null;\n }\n catch (error) {\n return null;\n }\n}\nfunction stringifyRule(rule) {\n let importStringified;\n if (isCSSImportRule(rule)) {\n try {\n importStringified =\n stringifyStylesheet(rule.styleSheet) ||\n escapeImportStatement(rule);\n }\n catch (error) {\n }\n }\n else if (isCSSStyleRule(rule) && rule.selectorText.includes(':')) {\n return fixSafariColons(rule.cssText);\n }\n return importStringified || rule.cssText;\n}\nfunction fixSafariColons(cssStringified) {\n const regex = /(\\[(?:[\\w-]+)[^\\\\])(:(?:[\\w-]+)\\])/gm;\n return cssStringified.replace(regex, '$1\\\\$2');\n}\nfunction isCSSImportRule(rule) {\n return 'styleSheet' in rule;\n}\nfunction isCSSStyleRule(rule) {\n return 'selectorText' in rule;\n}\nclass Mirror {\n constructor() {\n this.idNodeMap = new Map();\n this.nodeMetaMap = new WeakMap();\n }\n getId(n) {\n if (!n)\n return -1;\n const id = _optionalChain$5([this, 'access', _3 => _3.getMeta, 'call', _4 => _4(n), 'optionalAccess', _5 => _5.id]);\n return _nullishCoalesce$1(id, () => ( -1));\n }\n getNode(id) {\n return this.idNodeMap.get(id) || null;\n }\n getIds() {\n return Array.from(this.idNodeMap.keys());\n }\n getMeta(n) {\n return this.nodeMetaMap.get(n) || null;\n }\n removeNodeFromMap(n) {\n const id = this.getId(n);\n this.idNodeMap.delete(id);\n if (n.childNodes) {\n n.childNodes.forEach((childNode) => this.removeNodeFromMap(childNode));\n }\n }\n has(id) {\n return this.idNodeMap.has(id);\n }\n hasNode(node) {\n return this.nodeMetaMap.has(node);\n }\n add(n, meta) {\n const id = meta.id;\n this.idNodeMap.set(id, n);\n this.nodeMetaMap.set(n, meta);\n }\n replace(id, n) {\n const oldNode = this.getNode(id);\n if (oldNode) {\n const meta = this.nodeMetaMap.get(oldNode);\n if (meta)\n this.nodeMetaMap.set(n, meta);\n }\n this.idNodeMap.set(id, n);\n }\n reset() {\n this.idNodeMap = new Map();\n this.nodeMetaMap = new WeakMap();\n }\n}\nfunction createMirror() {\n return new Mirror();\n}\nfunction shouldMaskInput({ maskInputOptions, tagName, type, }) {\n if (tagName === 'OPTION') {\n tagName = 'SELECT';\n }\n return Boolean(maskInputOptions[tagName.toLowerCase()] ||\n (type && maskInputOptions[type]) ||\n type === 'password' ||\n (tagName === 'INPUT' && !type && maskInputOptions['text']));\n}\nfunction maskInputValue({ isMasked, element, value, maskInputFn, }) {\n let text = value || '';\n if (!isMasked) {\n return text;\n }\n if (maskInputFn) {\n text = maskInputFn(text, element);\n }\n return '*'.repeat(text.length);\n}\nfunction toLowerCase(str) {\n return str.toLowerCase();\n}\nfunction toUpperCase(str) {\n return str.toUpperCase();\n}\nconst ORIGINAL_ATTRIBUTE_NAME = '__rrweb_original__';\nfunction is2DCanvasBlank(canvas) {\n const ctx = canvas.getContext('2d');\n if (!ctx)\n return true;\n const chunkSize = 50;\n for (let x = 0; x < canvas.width; x += chunkSize) {\n for (let y = 0; y < canvas.height; y += chunkSize) {\n const getImageData = ctx.getImageData;\n const originalGetImageData = ORIGINAL_ATTRIBUTE_NAME in getImageData\n ? getImageData[ORIGINAL_ATTRIBUTE_NAME]\n : getImageData;\n const pixelBuffer = new Uint32Array(originalGetImageData.call(ctx, x, y, Math.min(chunkSize, canvas.width - x), Math.min(chunkSize, canvas.height - y)).data.buffer);\n if (pixelBuffer.some((pixel) => pixel !== 0))\n return false;\n }\n }\n return true;\n}\nfunction getInputType(element) {\n const type = element.type;\n return element.hasAttribute('data-rr-is-password')\n ? 'password'\n : type\n ?\n toLowerCase(type)\n : null;\n}\nfunction getInputValue(el, tagName, type) {\n if (tagName === 'INPUT' && (type === 'radio' || type === 'checkbox')) {\n return el.getAttribute('value') || '';\n }\n return el.value;\n}\n\nlet _id = 1;\nconst tagNameRegex = new RegExp('[^a-z0-9-_:]');\nconst IGNORED_NODE = -2;\nfunction genId() {\n return _id++;\n}\nfunction getValidTagName(element) {\n if (element instanceof HTMLFormElement) {\n return 'form';\n }\n const processedTagName = toLowerCase(element.tagName);\n if (tagNameRegex.test(processedTagName)) {\n return 'div';\n }\n return processedTagName;\n}\nfunction extractOrigin(url) {\n let origin = '';\n if (url.indexOf('//') > -1) {\n origin = url.split('/').slice(0, 3).join('/');\n }\n else {\n origin = url.split('/')[0];\n }\n origin = origin.split('?')[0];\n return origin;\n}\nlet canvasService;\nlet canvasCtx;\nconst URL_IN_CSS_REF = /url\\((?:(')([^']*)'|(\")(.*?)\"|([^)]*))\\)/gm;\nconst URL_PROTOCOL_MATCH = /^(?:[a-z+]+:)?\\/\\//i;\nconst URL_WWW_MATCH = /^www\\..*/i;\nconst DATA_URI = /^(data:)([^,]*),(.*)/i;\nfunction absoluteToStylesheet(cssText, href) {\n return (cssText || '').replace(URL_IN_CSS_REF, (origin, quote1, path1, quote2, path2, path3) => {\n const filePath = path1 || path2 || path3;\n const maybeQuote = quote1 || quote2 || '';\n if (!filePath) {\n return origin;\n }\n if (URL_PROTOCOL_MATCH.test(filePath) || URL_WWW_MATCH.test(filePath)) {\n return `url(${maybeQuote}${filePath}${maybeQuote})`;\n }\n if (DATA_URI.test(filePath)) {\n return `url(${maybeQuote}${filePath}${maybeQuote})`;\n }\n if (filePath[0] === '/') {\n return `url(${maybeQuote}${extractOrigin(href) + filePath}${maybeQuote})`;\n }\n const stack = href.split('/');\n const parts = filePath.split('/');\n stack.pop();\n for (const part of parts) {\n if (part === '.') {\n continue;\n }\n else if (part === '..') {\n stack.pop();\n }\n else {\n stack.push(part);\n }\n }\n return `url(${maybeQuote}${stack.join('/')}${maybeQuote})`;\n });\n}\nconst SRCSET_NOT_SPACES = /^[^ \\t\\n\\r\\u000c]+/;\nconst SRCSET_COMMAS_OR_SPACES = /^[, \\t\\n\\r\\u000c]+/;\nfunction getAbsoluteSrcsetString(doc, attributeValue) {\n if (attributeValue.trim() === '') {\n return attributeValue;\n }\n let pos = 0;\n function collectCharacters(regEx) {\n let chars;\n const match = regEx.exec(attributeValue.substring(pos));\n if (match) {\n chars = match[0];\n pos += chars.length;\n return chars;\n }\n return '';\n }\n const output = [];\n while (true) {\n collectCharacters(SRCSET_COMMAS_OR_SPACES);\n if (pos >= attributeValue.length) {\n break;\n }\n let url = collectCharacters(SRCSET_NOT_SPACES);\n if (url.slice(-1) === ',') {\n url = absoluteToDoc(doc, url.substring(0, url.length - 1));\n output.push(url);\n }\n else {\n let descriptorsStr = '';\n url = absoluteToDoc(doc, url);\n let inParens = false;\n while (true) {\n const c = attributeValue.charAt(pos);\n if (c === '') {\n output.push((url + descriptorsStr).trim());\n break;\n }\n else if (!inParens) {\n if (c === ',') {\n pos += 1;\n output.push((url + descriptorsStr).trim());\n break;\n }\n else if (c === '(') {\n inParens = true;\n }\n }\n else {\n if (c === ')') {\n inParens = false;\n }\n }\n descriptorsStr += c;\n pos += 1;\n }\n }\n }\n return output.join(', ');\n}\nfunction absoluteToDoc(doc, attributeValue) {\n if (!attributeValue || attributeValue.trim() === '') {\n return attributeValue;\n }\n const a = doc.createElement('a');\n a.href = attributeValue;\n return a.href;\n}\nfunction isSVGElement(el) {\n return Boolean(el.tagName === 'svg' || el.ownerSVGElement);\n}\nfunction getHref() {\n const a = document.createElement('a');\n a.href = '';\n return a.href;\n}\nfunction transformAttribute(doc, tagName, name, value, element, maskAttributeFn) {\n if (!value) {\n return value;\n }\n if (name === 'src' ||\n (name === 'href' && !(tagName === 'use' && value[0] === '#'))) {\n return absoluteToDoc(doc, value);\n }\n else if (name === 'xlink:href' && value[0] !== '#') {\n return absoluteToDoc(doc, value);\n }\n else if (name === 'background' &&\n (tagName === 'table' || tagName === 'td' || tagName === 'th')) {\n return absoluteToDoc(doc, value);\n }\n else if (name === 'srcset') {\n return getAbsoluteSrcsetString(doc, value);\n }\n else if (name === 'style') {\n return absoluteToStylesheet(value, getHref());\n }\n else if (tagName === 'object' && name === 'data') {\n return absoluteToDoc(doc, value);\n }\n if (typeof maskAttributeFn === 'function') {\n return maskAttributeFn(name, value, element);\n }\n return value;\n}\nfunction ignoreAttribute(tagName, name, _value) {\n return (tagName === 'video' || tagName === 'audio') && name === 'autoplay';\n}\nfunction _isBlockedElement(element, blockClass, blockSelector, unblockSelector) {\n try {\n if (unblockSelector && element.matches(unblockSelector)) {\n return false;\n }\n if (typeof blockClass === 'string') {\n if (element.classList.contains(blockClass)) {\n return true;\n }\n }\n else {\n for (let eIndex = element.classList.length; eIndex--;) {\n const className = element.classList[eIndex];\n if (blockClass.test(className)) {\n return true;\n }\n }\n }\n if (blockSelector) {\n return element.matches(blockSelector);\n }\n }\n catch (e) {\n }\n return false;\n}\nfunction elementClassMatchesRegex(el, regex) {\n for (let eIndex = el.classList.length; eIndex--;) {\n const className = el.classList[eIndex];\n if (regex.test(className)) {\n return true;\n }\n }\n return false;\n}\nfunction distanceToMatch(node, matchPredicate, limit = Infinity, distance = 0) {\n if (!node)\n return -1;\n if (node.nodeType !== node.ELEMENT_NODE)\n return -1;\n if (distance > limit)\n return -1;\n if (matchPredicate(node))\n return distance;\n return distanceToMatch(node.parentNode, matchPredicate, limit, distance + 1);\n}\nfunction createMatchPredicate(className, selector) {\n return (node) => {\n const el = node;\n if (el === null)\n return false;\n if (className) {\n if (typeof className === 'string') {\n if (el.matches(`.${className}`))\n return true;\n }\n else if (elementClassMatchesRegex(el, className)) {\n return true;\n }\n }\n if (selector && el.matches(selector))\n return true;\n return false;\n };\n}\nfunction needMaskingText(node, maskTextClass, maskTextSelector, unmaskTextClass, unmaskTextSelector, maskAllText) {\n try {\n const el = node.nodeType === node.ELEMENT_NODE\n ? node\n : node.parentElement;\n if (el === null)\n return false;\n let maskDistance = -1;\n let unmaskDistance = -1;\n if (maskAllText) {\n unmaskDistance = distanceToMatch(el, createMatchPredicate(unmaskTextClass, unmaskTextSelector));\n if (unmaskDistance < 0) {\n return true;\n }\n maskDistance = distanceToMatch(el, createMatchPredicate(maskTextClass, maskTextSelector), unmaskDistance >= 0 ? unmaskDistance : Infinity);\n }\n else {\n maskDistance = distanceToMatch(el, createMatchPredicate(maskTextClass, maskTextSelector));\n if (maskDistance < 0) {\n return false;\n }\n unmaskDistance = distanceToMatch(el, createMatchPredicate(unmaskTextClass, unmaskTextSelector), maskDistance >= 0 ? maskDistance : Infinity);\n }\n return maskDistance >= 0\n ? unmaskDistance >= 0\n ? maskDistance <= unmaskDistance\n : true\n : unmaskDistance >= 0\n ? false\n : !!maskAllText;\n }\n catch (e) {\n }\n return !!maskAllText;\n}\nfunction onceIframeLoaded(iframeEl, listener, iframeLoadTimeout) {\n const win = iframeEl.contentWindow;\n if (!win) {\n return;\n }\n let fired = false;\n let readyState;\n try {\n readyState = win.document.readyState;\n }\n catch (error) {\n return;\n }\n if (readyState !== 'complete') {\n const timer = setTimeout(() => {\n if (!fired) {\n listener();\n fired = true;\n }\n }, iframeLoadTimeout);\n iframeEl.addEventListener('load', () => {\n clearTimeout(timer);\n fired = true;\n listener();\n });\n return;\n }\n const blankUrl = 'about:blank';\n if (win.location.href !== blankUrl ||\n iframeEl.src === blankUrl ||\n iframeEl.src === '') {\n setTimeout(listener, 0);\n return iframeEl.addEventListener('load', listener);\n }\n iframeEl.addEventListener('load', listener);\n}\nfunction onceStylesheetLoaded(link, listener, styleSheetLoadTimeout) {\n let fired = false;\n let styleSheetLoaded;\n try {\n styleSheetLoaded = link.sheet;\n }\n catch (error) {\n return;\n }\n if (styleSheetLoaded)\n return;\n const timer = setTimeout(() => {\n if (!fired) {\n listener();\n fired = true;\n }\n }, styleSheetLoadTimeout);\n link.addEventListener('load', () => {\n clearTimeout(timer);\n fired = true;\n listener();\n });\n}\nfunction serializeNode(n, options) {\n const { doc, mirror, blockClass, blockSelector, unblockSelector, maskAllText, maskAttributeFn, maskTextClass, unmaskTextClass, maskTextSelector, unmaskTextSelector, inlineStylesheet, maskInputOptions = {}, maskTextFn, maskInputFn, dataURLOptions = {}, inlineImages, recordCanvas, keepIframeSrcFn, newlyAddedElement = false, } = options;\n const rootId = getRootId(doc, mirror);\n switch (n.nodeType) {\n case n.DOCUMENT_NODE:\n if (n.compatMode !== 'CSS1Compat') {\n return {\n type: NodeType$1.Document,\n childNodes: [],\n compatMode: n.compatMode,\n };\n }\n else {\n return {\n type: NodeType$1.Document,\n childNodes: [],\n };\n }\n case n.DOCUMENT_TYPE_NODE:\n return {\n type: NodeType$1.DocumentType,\n name: n.name,\n publicId: n.publicId,\n systemId: n.systemId,\n rootId,\n };\n case n.ELEMENT_NODE:\n return serializeElementNode(n, {\n doc,\n blockClass,\n blockSelector,\n unblockSelector,\n inlineStylesheet,\n maskAttributeFn,\n maskInputOptions,\n maskInputFn,\n dataURLOptions,\n inlineImages,\n recordCanvas,\n keepIframeSrcFn,\n newlyAddedElement,\n rootId,\n maskAllText,\n maskTextClass,\n unmaskTextClass,\n maskTextSelector,\n unmaskTextSelector,\n });\n case n.TEXT_NODE:\n return serializeTextNode(n, {\n maskAllText,\n maskTextClass,\n unmaskTextClass,\n maskTextSelector,\n unmaskTextSelector,\n maskTextFn,\n maskInputOptions,\n maskInputFn,\n rootId,\n });\n case n.CDATA_SECTION_NODE:\n return {\n type: NodeType$1.CDATA,\n textContent: '',\n rootId,\n };\n case n.COMMENT_NODE:\n return {\n type: NodeType$1.Comment,\n textContent: n.textContent || '',\n rootId,\n };\n default:\n return false;\n }\n}\nfunction getRootId(doc, mirror) {\n if (!mirror.hasNode(doc))\n return undefined;\n const docId = mirror.getId(doc);\n return docId === 1 ? undefined : docId;\n}\nfunction serializeTextNode(n, options) {\n const { maskAllText, maskTextClass, unmaskTextClass, maskTextSelector, unmaskTextSelector, maskTextFn, maskInputOptions, maskInputFn, rootId, } = options;\n const parentTagName = n.parentNode && n.parentNode.tagName;\n let textContent = n.textContent;\n const isStyle = parentTagName === 'STYLE' ? true : undefined;\n const isScript = parentTagName === 'SCRIPT' ? true : undefined;\n const isTextarea = parentTagName === 'TEXTAREA' ? true : undefined;\n if (isStyle && textContent) {\n try {\n if (n.nextSibling || n.previousSibling) {\n }\n else if (_optionalChain$5([n, 'access', _6 => _6.parentNode, 'access', _7 => _7.sheet, 'optionalAccess', _8 => _8.cssRules])) {\n textContent = stringifyStylesheet(n.parentNode.sheet);\n }\n }\n catch (err) {\n console.warn(`Cannot get CSS styles from text's parentNode. Error: ${err}`, n);\n }\n textContent = absoluteToStylesheet(textContent, getHref());\n }\n if (isScript) {\n textContent = 'SCRIPT_PLACEHOLDER';\n }\n const forceMask = needMaskingText(n, maskTextClass, maskTextSelector, unmaskTextClass, unmaskTextSelector, maskAllText);\n if (!isStyle && !isScript && !isTextarea && textContent && forceMask) {\n textContent = maskTextFn\n ? maskTextFn(textContent)\n : textContent.replace(/[\\S]/g, '*');\n }\n if (isTextarea && textContent && (maskInputOptions.textarea || forceMask)) {\n textContent = maskInputFn\n ? maskInputFn(textContent, n.parentNode)\n : textContent.replace(/[\\S]/g, '*');\n }\n if (parentTagName === 'OPTION' && textContent) {\n const isInputMasked = shouldMaskInput({\n type: null,\n tagName: parentTagName,\n maskInputOptions,\n });\n textContent = maskInputValue({\n isMasked: needMaskingText(n, maskTextClass, maskTextSelector, unmaskTextClass, unmaskTextSelector, isInputMasked),\n element: n,\n value: textContent,\n maskInputFn,\n });\n }\n return {\n type: NodeType$1.Text,\n textContent: textContent || '',\n isStyle,\n rootId,\n };\n}\nfunction serializeElementNode(n, options) {\n const { doc, blockClass, blockSelector, unblockSelector, inlineStylesheet, maskInputOptions = {}, maskAttributeFn, maskInputFn, dataURLOptions = {}, inlineImages, recordCanvas, keepIframeSrcFn, newlyAddedElement = false, rootId, maskAllText, maskTextClass, unmaskTextClass, maskTextSelector, unmaskTextSelector, } = options;\n const needBlock = _isBlockedElement(n, blockClass, blockSelector, unblockSelector);\n const tagName = getValidTagName(n);\n let attributes = {};\n const len = n.attributes.length;\n for (let i = 0; i < len; i++) {\n const attr = n.attributes[i];\n if (!ignoreAttribute(tagName, attr.name, attr.value)) {\n attributes[attr.name] = transformAttribute(doc, tagName, toLowerCase(attr.name), attr.value, n, maskAttributeFn);\n }\n }\n if (tagName === 'link' && inlineStylesheet) {\n const stylesheet = Array.from(doc.styleSheets).find((s) => {\n return s.href === n.href;\n });\n let cssText = null;\n if (stylesheet) {\n cssText = stringifyStylesheet(stylesheet);\n }\n if (cssText) {\n delete attributes.rel;\n delete attributes.href;\n attributes._cssText = absoluteToStylesheet(cssText, stylesheet.href);\n }\n }\n if (tagName === 'style' &&\n n.sheet &&\n !(n.innerText || n.textContent || '').trim().length) {\n const cssText = stringifyStylesheet(n.sheet);\n if (cssText) {\n attributes._cssText = absoluteToStylesheet(cssText, getHref());\n }\n }\n if (tagName === 'input' ||\n tagName === 'textarea' ||\n tagName === 'select' ||\n tagName === 'option') {\n const el = n;\n const type = getInputType(el);\n const value = getInputValue(el, toUpperCase(tagName), type);\n const checked = el.checked;\n if (type !== 'submit' && type !== 'button' && value) {\n const forceMask = needMaskingText(el, maskTextClass, maskTextSelector, unmaskTextClass, unmaskTextSelector, shouldMaskInput({\n type,\n tagName: toUpperCase(tagName),\n maskInputOptions,\n }));\n attributes.value = maskInputValue({\n isMasked: forceMask,\n element: el,\n value,\n maskInputFn,\n });\n }\n if (checked) {\n attributes.checked = checked;\n }\n }\n if (tagName === 'option') {\n if (n.selected && !maskInputOptions['select']) {\n attributes.selected = true;\n }\n else {\n delete attributes.selected;\n }\n }\n if (tagName === 'canvas' && recordCanvas) {\n if (n.__context === '2d') {\n if (!is2DCanvasBlank(n)) {\n attributes.rr_dataURL = n.toDataURL(dataURLOptions.type, dataURLOptions.quality);\n }\n }\n else if (!('__context' in n)) {\n const canvasDataURL = n.toDataURL(dataURLOptions.type, dataURLOptions.quality);\n const blankCanvas = document.createElement('canvas');\n blankCanvas.width = n.width;\n blankCanvas.height = n.height;\n const blankCanvasDataURL = blankCanvas.toDataURL(dataURLOptions.type, dataURLOptions.quality);\n if (canvasDataURL !== blankCanvasDataURL) {\n attributes.rr_dataURL = canvasDataURL;\n }\n }\n }\n if (tagName === 'img' && inlineImages) {\n if (!canvasService) {\n canvasService = doc.createElement('canvas');\n canvasCtx = canvasService.getContext('2d');\n }\n const image = n;\n const oldValue = image.crossOrigin;\n image.crossOrigin = 'anonymous';\n const recordInlineImage = () => {\n image.removeEventListener('load', recordInlineImage);\n try {\n canvasService.width = image.naturalWidth;\n canvasService.height = image.naturalHeight;\n canvasCtx.drawImage(image, 0, 0);\n attributes.rr_dataURL = canvasService.toDataURL(dataURLOptions.type, dataURLOptions.quality);\n }\n catch (err) {\n console.warn(`Cannot inline img src=${image.currentSrc}! Error: ${err}`);\n }\n oldValue\n ? (attributes.crossOrigin = oldValue)\n : image.removeAttribute('crossorigin');\n };\n if (image.complete && image.naturalWidth !== 0)\n recordInlineImage();\n else\n image.addEventListener('load', recordInlineImage);\n }\n if (tagName === 'audio' || tagName === 'video') {\n attributes.rr_mediaState = n.paused\n ? 'paused'\n : 'played';\n attributes.rr_mediaCurrentTime = n.currentTime;\n }\n if (!newlyAddedElement) {\n if (n.scrollLeft) {\n attributes.rr_scrollLeft = n.scrollLeft;\n }\n if (n.scrollTop) {\n attributes.rr_scrollTop = n.scrollTop;\n }\n }\n if (needBlock) {\n const { width, height } = n.getBoundingClientRect();\n attributes = {\n class: attributes.class,\n rr_width: `${width}px`,\n rr_height: `${height}px`,\n };\n }\n if (tagName === 'iframe' && !keepIframeSrcFn(attributes.src)) {\n if (!n.contentDocument) {\n attributes.rr_src = attributes.src;\n }\n delete attributes.src;\n }\n let isCustomElement;\n try {\n if (customElements.get(tagName))\n isCustomElement = true;\n }\n catch (e) {\n }\n return {\n type: NodeType$1.Element,\n tagName,\n attributes,\n childNodes: [],\n isSVG: isSVGElement(n) || undefined,\n needBlock,\n rootId,\n isCustom: isCustomElement,\n };\n}\nfunction lowerIfExists(maybeAttr) {\n if (maybeAttr === undefined || maybeAttr === null) {\n return '';\n }\n else {\n return maybeAttr.toLowerCase();\n }\n}\nfunction slimDOMExcluded(sn, slimDOMOptions) {\n if (slimDOMOptions.comment && sn.type === NodeType$1.Comment) {\n return true;\n }\n else if (sn.type === NodeType$1.Element) {\n if (slimDOMOptions.script &&\n (sn.tagName === 'script' ||\n (sn.tagName === 'link' &&\n (sn.attributes.rel === 'preload' ||\n sn.attributes.rel === 'modulepreload') &&\n sn.attributes.as === 'script') ||\n (sn.tagName === 'link' &&\n sn.attributes.rel === 'prefetch' &&\n typeof sn.attributes.href === 'string' &&\n sn.attributes.href.endsWith('.js')))) {\n return true;\n }\n else if (slimDOMOptions.headFavicon &&\n ((sn.tagName === 'link' && sn.attributes.rel === 'shortcut icon') ||\n (sn.tagName === 'meta' &&\n (lowerIfExists(sn.attributes.name).match(/^msapplication-tile(image|color)$/) ||\n lowerIfExists(sn.attributes.name) === 'application-name' ||\n lowerIfExists(sn.attributes.rel) === 'icon' ||\n lowerIfExists(sn.attributes.rel) === 'apple-touch-icon' ||\n lowerIfExists(sn.attributes.rel) === 'shortcut icon')))) {\n return true;\n }\n else if (sn.tagName === 'meta') {\n if (slimDOMOptions.headMetaDescKeywords &&\n lowerIfExists(sn.attributes.name).match(/^description|keywords$/)) {\n return true;\n }\n else if (slimDOMOptions.headMetaSocial &&\n (lowerIfExists(sn.attributes.property).match(/^(og|twitter|fb):/) ||\n lowerIfExists(sn.attributes.name).match(/^(og|twitter):/) ||\n lowerIfExists(sn.attributes.name) === 'pinterest')) {\n return true;\n }\n else if (slimDOMOptions.headMetaRobots &&\n (lowerIfExists(sn.attributes.name) === 'robots' ||\n lowerIfExists(sn.attributes.name) === 'googlebot' ||\n lowerIfExists(sn.attributes.name) === 'bingbot')) {\n return true;\n }\n else if (slimDOMOptions.headMetaHttpEquiv &&\n sn.attributes['http-equiv'] !== undefined) {\n return true;\n }\n else if (slimDOMOptions.headMetaAuthorship &&\n (lowerIfExists(sn.attributes.name) === 'author' ||\n lowerIfExists(sn.attributes.name) === 'generator' ||\n lowerIfExists(sn.attributes.name) === 'framework' ||\n lowerIfExists(sn.attributes.name) === 'publisher' ||\n lowerIfExists(sn.attributes.name) === 'progid' ||\n lowerIfExists(sn.attributes.property).match(/^article:/) ||\n lowerIfExists(sn.attributes.property).match(/^product:/))) {\n return true;\n }\n else if (slimDOMOptions.headMetaVerification &&\n (lowerIfExists(sn.attributes.name) === 'google-site-verification' ||\n lowerIfExists(sn.attributes.name) === 'yandex-verification' ||\n lowerIfExists(sn.attributes.name) === 'csrf-token' ||\n lowerIfExists(sn.attributes.name) === 'p:domain_verify' ||\n lowerIfExists(sn.attributes.name) === 'verify-v1' ||\n lowerIfExists(sn.attributes.name) === 'verification' ||\n lowerIfExists(sn.attributes.name) === 'shopify-checkout-api-token')) {\n return true;\n }\n }\n }\n return false;\n}\nfunction serializeNodeWithId(n, options) {\n const { doc, mirror, blockClass, blockSelector, unblockSelector, maskAllText, maskTextClass, unmaskTextClass, maskTextSelector, unmaskTextSelector, skipChild = false, inlineStylesheet = true, maskInputOptions = {}, maskAttributeFn, maskTextFn, maskInputFn, slimDOMOptions, dataURLOptions = {}, inlineImages = false, recordCanvas = false, onSerialize, onIframeLoad, iframeLoadTimeout = 5000, onStylesheetLoad, stylesheetLoadTimeout = 5000, keepIframeSrcFn = () => false, newlyAddedElement = false, } = options;\n let { preserveWhiteSpace = true } = options;\n const _serializedNode = serializeNode(n, {\n doc,\n mirror,\n blockClass,\n blockSelector,\n maskAllText,\n unblockSelector,\n maskTextClass,\n unmaskTextClass,\n maskTextSelector,\n unmaskTextSelector,\n inlineStylesheet,\n maskInputOptions,\n maskAttributeFn,\n maskTextFn,\n maskInputFn,\n dataURLOptions,\n inlineImages,\n recordCanvas,\n keepIframeSrcFn,\n newlyAddedElement,\n });\n if (!_serializedNode) {\n console.warn(n, 'not serialized');\n return null;\n }\n let id;\n if (mirror.hasNode(n)) {\n id = mirror.getId(n);\n }\n else if (slimDOMExcluded(_serializedNode, slimDOMOptions) ||\n (!preserveWhiteSpace &&\n _serializedNode.type === NodeType$1.Text &&\n !_serializedNode.isStyle &&\n !_serializedNode.textContent.replace(/^\\s+|\\s+$/gm, '').length)) {\n id = IGNORED_NODE;\n }\n else {\n id = genId();\n }\n const serializedNode = Object.assign(_serializedNode, { id });\n mirror.add(n, serializedNode);\n if (id === IGNORED_NODE) {\n return null;\n }\n if (onSerialize) {\n onSerialize(n);\n }\n let recordChild = !skipChild;\n if (serializedNode.type === NodeType$1.Element) {\n recordChild = recordChild && !serializedNode.needBlock;\n delete serializedNode.needBlock;\n const shadowRoot = n.shadowRoot;\n if (shadowRoot && isNativeShadowDom(shadowRoot))\n serializedNode.isShadowHost = true;\n }\n if ((serializedNode.type === NodeType$1.Document ||\n serializedNode.type === NodeType$1.Element) &&\n recordChild) {\n if (slimDOMOptions.headWhitespace &&\n serializedNode.type === NodeType$1.Element &&\n serializedNode.tagName === 'head') {\n preserveWhiteSpace = false;\n }\n const bypassOptions = {\n doc,\n mirror,\n blockClass,\n blockSelector,\n maskAllText,\n unblockSelector,\n maskTextClass,\n unmaskTextClass,\n maskTextSelector,\n unmaskTextSelector,\n skipChild,\n inlineStylesheet,\n maskInputOptions,\n maskAttributeFn,\n maskTextFn,\n maskInputFn,\n slimDOMOptions,\n dataURLOptions,\n inlineImages,\n recordCanvas,\n preserveWhiteSpace,\n onSerialize,\n onIframeLoad,\n iframeLoadTimeout,\n onStylesheetLoad,\n stylesheetLoadTimeout,\n keepIframeSrcFn,\n };\n for (const childN of Array.from(n.childNodes)) {\n const serializedChildNode = serializeNodeWithId(childN, bypassOptions);\n if (serializedChildNode) {\n serializedNode.childNodes.push(serializedChildNode);\n }\n }\n if (isElement$1(n) && n.shadowRoot) {\n for (const childN of Array.from(n.shadowRoot.childNodes)) {\n const serializedChildNode = serializeNodeWithId(childN, bypassOptions);\n if (serializedChildNode) {\n isNativeShadowDom(n.shadowRoot) &&\n (serializedChildNode.isShadow = true);\n serializedNode.childNodes.push(serializedChildNode);\n }\n }\n }\n }\n if (n.parentNode &&\n isShadowRoot(n.parentNode) &&\n isNativeShadowDom(n.parentNode)) {\n serializedNode.isShadow = true;\n }\n if (serializedNode.type === NodeType$1.Element &&\n serializedNode.tagName === 'iframe') {\n onceIframeLoaded(n, () => {\n const iframeDoc = n.contentDocument;\n if (iframeDoc && onIframeLoad) {\n const serializedIframeNode = serializeNodeWithId(iframeDoc, {\n doc: iframeDoc,\n mirror,\n blockClass,\n blockSelector,\n unblockSelector,\n maskAllText,\n maskTextClass,\n unmaskTextClass,\n maskTextSelector,\n unmaskTextSelector,\n skipChild: false,\n inlineStylesheet,\n maskInputOptions,\n maskAttributeFn,\n maskTextFn,\n maskInputFn,\n slimDOMOptions,\n dataURLOptions,\n inlineImages,\n recordCanvas,\n preserveWhiteSpace,\n onSerialize,\n onIframeLoad,\n iframeLoadTimeout,\n onStylesheetLoad,\n stylesheetLoadTimeout,\n keepIframeSrcFn,\n });\n if (serializedIframeNode) {\n onIframeLoad(n, serializedIframeNode);\n }\n }\n }, iframeLoadTimeout);\n }\n if (serializedNode.type === NodeType$1.Element &&\n serializedNode.tagName === 'link' &&\n serializedNode.attributes.rel === 'stylesheet') {\n onceStylesheetLoaded(n, () => {\n if (onStylesheetLoad) {\n const serializedLinkNode = serializeNodeWithId(n, {\n doc,\n mirror,\n blockClass,\n blockSelector,\n unblockSelector,\n maskAllText,\n maskTextClass,\n unmaskTextClass,\n maskTextSelector,\n unmaskTextSelector,\n skipChild: false,\n inlineStylesheet,\n maskInputOptions,\n maskAttributeFn,\n maskTextFn,\n maskInputFn,\n slimDOMOptions,\n dataURLOptions,\n inlineImages,\n recordCanvas,\n preserveWhiteSpace,\n onSerialize,\n onIframeLoad,\n iframeLoadTimeout,\n onStylesheetLoad,\n stylesheetLoadTimeout,\n keepIframeSrcFn,\n });\n if (serializedLinkNode) {\n onStylesheetLoad(n, serializedLinkNode);\n }\n }\n }, stylesheetLoadTimeout);\n }\n return serializedNode;\n}\nfunction snapshot(n, options) {\n const { mirror = new Mirror(), blockClass = 'rr-block', blockSelector = null, unblockSelector = null, maskAllText = false, maskTextClass = 'rr-mask', unmaskTextClass = null, maskTextSelector = null, unmaskTextSelector = null, inlineStylesheet = true, inlineImages = false, recordCanvas = false, maskAllInputs = false, maskAttributeFn, maskTextFn, maskInputFn, slimDOM = false, dataURLOptions, preserveWhiteSpace, onSerialize, onIframeLoad, iframeLoadTimeout, onStylesheetLoad, stylesheetLoadTimeout, keepIframeSrcFn = () => false, } = options || {};\n const maskInputOptions = maskAllInputs === true\n ? {\n color: true,\n date: true,\n 'datetime-local': true,\n email: true,\n month: true,\n number: true,\n range: true,\n search: true,\n tel: true,\n text: true,\n time: true,\n url: true,\n week: true,\n textarea: true,\n select: true,\n }\n : maskAllInputs === false\n ? {}\n : maskAllInputs;\n const slimDOMOptions = slimDOM === true || slimDOM === 'all'\n ?\n {\n script: true,\n comment: true,\n headFavicon: true,\n headWhitespace: true,\n headMetaDescKeywords: slimDOM === 'all',\n headMetaSocial: true,\n headMetaRobots: true,\n headMetaHttpEquiv: true,\n headMetaAuthorship: true,\n headMetaVerification: true,\n }\n : slimDOM === false\n ? {}\n : slimDOM;\n return serializeNodeWithId(n, {\n doc: n,\n mirror,\n blockClass,\n blockSelector,\n unblockSelector,\n maskAllText,\n maskTextClass,\n unmaskTextClass,\n maskTextSelector,\n unmaskTextSelector,\n skipChild: false,\n inlineStylesheet,\n maskInputOptions,\n maskAttributeFn,\n maskTextFn,\n maskInputFn,\n slimDOMOptions,\n dataURLOptions,\n inlineImages,\n recordCanvas,\n preserveWhiteSpace,\n onSerialize,\n onIframeLoad,\n iframeLoadTimeout,\n onStylesheetLoad,\n stylesheetLoadTimeout,\n keepIframeSrcFn,\n newlyAddedElement: false,\n });\n}\n\nfunction _optionalChain$4(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }\nfunction on(type, fn, target = document) {\n const options = { capture: true, passive: true };\n target.addEventListener(type, fn, options);\n return () => target.removeEventListener(type, fn, options);\n}\nconst DEPARTED_MIRROR_ACCESS_WARNING = 'Please stop import mirror directly. Instead of that,' +\n '\\r\\n' +\n 'now you can use replayer.getMirror() to access the mirror instance of a replayer,' +\n '\\r\\n' +\n 'or you can use record.mirror to access the mirror instance during recording.';\nlet _mirror = {\n map: {},\n getId() {\n console.error(DEPARTED_MIRROR_ACCESS_WARNING);\n return -1;\n },\n getNode() {\n console.error(DEPARTED_MIRROR_ACCESS_WARNING);\n return null;\n },\n removeNodeFromMap() {\n console.error(DEPARTED_MIRROR_ACCESS_WARNING);\n },\n has() {\n console.error(DEPARTED_MIRROR_ACCESS_WARNING);\n return false;\n },\n reset() {\n console.error(DEPARTED_MIRROR_ACCESS_WARNING);\n },\n};\nif (typeof window !== 'undefined' && window.Proxy && window.Reflect) {\n _mirror = new Proxy(_mirror, {\n get(target, prop, receiver) {\n if (prop === 'map') {\n console.error(DEPARTED_MIRROR_ACCESS_WARNING);\n }\n return Reflect.get(target, prop, receiver);\n },\n });\n}\nfunction throttle$1(func, wait, options = {}) {\n let timeout = null;\n let previous = 0;\n return function (...args) {\n const now = Date.now();\n if (!previous && options.leading === false) {\n previous = now;\n }\n const remaining = wait - (now - previous);\n const context = this;\n if (remaining <= 0 || remaining > wait) {\n if (timeout) {\n clearTimeout(timeout);\n timeout = null;\n }\n previous = now;\n func.apply(context, args);\n }\n else if (!timeout && options.trailing !== false) {\n timeout = setTimeout(() => {\n previous = options.leading === false ? 0 : Date.now();\n timeout = null;\n func.apply(context, args);\n }, remaining);\n }\n };\n}\nfunction hookSetter(target, key, d, isRevoked, win = window) {\n const original = win.Object.getOwnPropertyDescriptor(target, key);\n win.Object.defineProperty(target, key, isRevoked\n ? d\n : {\n set(value) {\n setTimeout(() => {\n d.set.call(this, value);\n }, 0);\n if (original && original.set) {\n original.set.call(this, value);\n }\n },\n });\n return () => hookSetter(target, key, original || {}, true);\n}\nfunction patch(source, name, replacement) {\n try {\n if (!(name in source)) {\n return () => {\n };\n }\n const original = source[name];\n const wrapped = replacement(original);\n if (typeof wrapped === 'function') {\n wrapped.prototype = wrapped.prototype || {};\n Object.defineProperties(wrapped, {\n __rrweb_original__: {\n enumerable: false,\n value: original,\n },\n });\n }\n source[name] = wrapped;\n return () => {\n source[name] = original;\n };\n }\n catch (e2) {\n return () => {\n };\n }\n}\nlet nowTimestamp = Date.now;\nif (!(/[1-9][0-9]{12}/.test(Date.now().toString()))) {\n nowTimestamp = () => new Date().getTime();\n}\nfunction getWindowScroll(win) {\n const doc = win.document;\n return {\n left: doc.scrollingElement\n ? doc.scrollingElement.scrollLeft\n : win.pageXOffset !== undefined\n ? win.pageXOffset\n : _optionalChain$4([doc, 'optionalAccess', _ => _.documentElement, 'access', _2 => _2.scrollLeft]) ||\n _optionalChain$4([doc, 'optionalAccess', _3 => _3.body, 'optionalAccess', _4 => _4.parentElement, 'optionalAccess', _5 => _5.scrollLeft]) ||\n _optionalChain$4([doc, 'optionalAccess', _6 => _6.body, 'optionalAccess', _7 => _7.scrollLeft]) ||\n 0,\n top: doc.scrollingElement\n ? doc.scrollingElement.scrollTop\n : win.pageYOffset !== undefined\n ? win.pageYOffset\n : _optionalChain$4([doc, 'optionalAccess', _8 => _8.documentElement, 'access', _9 => _9.scrollTop]) ||\n _optionalChain$4([doc, 'optionalAccess', _10 => _10.body, 'optionalAccess', _11 => _11.parentElement, 'optionalAccess', _12 => _12.scrollTop]) ||\n _optionalChain$4([doc, 'optionalAccess', _13 => _13.body, 'optionalAccess', _14 => _14.scrollTop]) ||\n 0,\n };\n}\nfunction getWindowHeight() {\n return (window.innerHeight ||\n (document.documentElement && document.documentElement.clientHeight) ||\n (document.body && document.body.clientHeight));\n}\nfunction getWindowWidth() {\n return (window.innerWidth ||\n (document.documentElement && document.documentElement.clientWidth) ||\n (document.body && document.body.clientWidth));\n}\nfunction isBlocked(node, blockClass, blockSelector, unblockSelector, checkAncestors) {\n if (!node) {\n return false;\n }\n const el = node.nodeType === node.ELEMENT_NODE\n ? node\n : node.parentElement;\n if (!el)\n return false;\n const blockedPredicate = createMatchPredicate(blockClass, blockSelector);\n if (!checkAncestors) {\n const isUnblocked = unblockSelector && el.matches(unblockSelector);\n return blockedPredicate(el) && !isUnblocked;\n }\n const blockDistance = distanceToMatch(el, blockedPredicate);\n let unblockDistance = -1;\n if (blockDistance < 0) {\n return false;\n }\n if (unblockSelector) {\n unblockDistance = distanceToMatch(el, createMatchPredicate(null, unblockSelector));\n }\n if (blockDistance > -1 && unblockDistance < 0) {\n return true;\n }\n return blockDistance < unblockDistance;\n}\nfunction isSerialized(n, mirror) {\n return mirror.getId(n) !== -1;\n}\nfunction isIgnored(n, mirror) {\n return mirror.getId(n) === IGNORED_NODE;\n}\nfunction isAncestorRemoved(target, mirror) {\n if (isShadowRoot(target)) {\n return false;\n }\n const id = mirror.getId(target);\n if (!mirror.has(id)) {\n return true;\n }\n if (target.parentNode &&\n target.parentNode.nodeType === target.DOCUMENT_NODE) {\n return false;\n }\n if (!target.parentNode) {\n return true;\n }\n return isAncestorRemoved(target.parentNode, mirror);\n}\nfunction legacy_isTouchEvent(event) {\n return Boolean(event.changedTouches);\n}\nfunction polyfill(win = window) {\n if ('NodeList' in win && !win.NodeList.prototype.forEach) {\n win.NodeList.prototype.forEach = Array.prototype\n .forEach;\n }\n if ('DOMTokenList' in win && !win.DOMTokenList.prototype.forEach) {\n win.DOMTokenList.prototype.forEach = Array.prototype\n .forEach;\n }\n if (!Node.prototype.contains) {\n Node.prototype.contains = (...args) => {\n let node = args[0];\n if (!(0 in args)) {\n throw new TypeError('1 argument is required');\n }\n do {\n if (this === node) {\n return true;\n }\n } while ((node = node && node.parentNode));\n return false;\n };\n }\n}\nfunction isSerializedIframe(n, mirror) {\n return Boolean(n.nodeName === 'IFRAME' && mirror.getMeta(n));\n}\nfunction isSerializedStylesheet(n, mirror) {\n return Boolean(n.nodeName === 'LINK' &&\n n.nodeType === n.ELEMENT_NODE &&\n n.getAttribute &&\n n.getAttribute('rel') === 'stylesheet' &&\n mirror.getMeta(n));\n}\nfunction hasShadowRoot(n) {\n return Boolean(_optionalChain$4([n, 'optionalAccess', _18 => _18.shadowRoot]));\n}\nclass StyleSheetMirror {\n constructor() {\n this.id = 1;\n this.styleIDMap = new WeakMap();\n this.idStyleMap = new Map();\n }\n getId(stylesheet) {\n return _nullishCoalesce(this.styleIDMap.get(stylesheet), () => ( -1));\n }\n has(stylesheet) {\n return this.styleIDMap.has(stylesheet);\n }\n add(stylesheet, id) {\n if (this.has(stylesheet))\n return this.getId(stylesheet);\n let newId;\n if (id === undefined) {\n newId = this.id++;\n }\n else\n newId = id;\n this.styleIDMap.set(stylesheet, newId);\n this.idStyleMap.set(newId, stylesheet);\n return newId;\n }\n getStyle(id) {\n return this.idStyleMap.get(id) || null;\n }\n reset() {\n this.styleIDMap = new WeakMap();\n this.idStyleMap = new Map();\n this.id = 1;\n }\n generateId() {\n return this.id++;\n }\n}\nfunction getShadowHost(n) {\n let shadowHost = null;\n if (_optionalChain$4([n, 'access', _19 => _19.getRootNode, 'optionalCall', _20 => _20(), 'optionalAccess', _21 => _21.nodeType]) === Node.DOCUMENT_FRAGMENT_NODE &&\n n.getRootNode().host)\n shadowHost = n.getRootNode().host;\n return shadowHost;\n}\nfunction getRootShadowHost(n) {\n let rootShadowHost = n;\n let shadowHost;\n while ((shadowHost = getShadowHost(rootShadowHost)))\n rootShadowHost = shadowHost;\n return rootShadowHost;\n}\nfunction shadowHostInDom(n) {\n const doc = n.ownerDocument;\n if (!doc)\n return false;\n const shadowHost = getRootShadowHost(n);\n return doc.contains(shadowHost);\n}\nfunction inDom(n) {\n const doc = n.ownerDocument;\n if (!doc)\n return false;\n return doc.contains(n) || shadowHostInDom(n);\n}\nlet cachedRequestAnimationFrameImplementation;\nfunction getRequestAnimationFrameImplementation() {\n if (cachedRequestAnimationFrameImplementation) {\n return cachedRequestAnimationFrameImplementation;\n }\n const document = window.document;\n let requestAnimationFrameImplementation = window.requestAnimationFrame;\n if (document && typeof document.createElement === 'function') {\n try {\n const sandbox = document.createElement('iframe');\n sandbox.hidden = true;\n document.head.appendChild(sandbox);\n const contentWindow = sandbox.contentWindow;\n if (contentWindow && contentWindow.requestAnimationFrame) {\n requestAnimationFrameImplementation =\n contentWindow.requestAnimationFrame;\n }\n document.head.removeChild(sandbox);\n }\n catch (e) {\n }\n }\n return (cachedRequestAnimationFrameImplementation =\n requestAnimationFrameImplementation.bind(window));\n}\nfunction onRequestAnimationFrame(...rest) {\n return getRequestAnimationFrameImplementation()(...rest);\n}\n\nvar EventType = /* @__PURE__ */ ((EventType2) => {\n EventType2[EventType2[\"DomContentLoaded\"] = 0] = \"DomContentLoaded\";\n EventType2[EventType2[\"Load\"] = 1] = \"Load\";\n EventType2[EventType2[\"FullSnapshot\"] = 2] = \"FullSnapshot\";\n EventType2[EventType2[\"IncrementalSnapshot\"] = 3] = \"IncrementalSnapshot\";\n EventType2[EventType2[\"Meta\"] = 4] = \"Meta\";\n EventType2[EventType2[\"Custom\"] = 5] = \"Custom\";\n EventType2[EventType2[\"Plugin\"] = 6] = \"Plugin\";\n return EventType2;\n})(EventType || {});\nvar IncrementalSource = /* @__PURE__ */ ((IncrementalSource2) => {\n IncrementalSource2[IncrementalSource2[\"Mutation\"] = 0] = \"Mutation\";\n IncrementalSource2[IncrementalSource2[\"MouseMove\"] = 1] = \"MouseMove\";\n IncrementalSource2[IncrementalSource2[\"MouseInteraction\"] = 2] = \"MouseInteraction\";\n IncrementalSource2[IncrementalSource2[\"Scroll\"] = 3] = \"Scroll\";\n IncrementalSource2[IncrementalSource2[\"ViewportResize\"] = 4] = \"ViewportResize\";\n IncrementalSource2[IncrementalSource2[\"Input\"] = 5] = \"Input\";\n IncrementalSource2[IncrementalSource2[\"TouchMove\"] = 6] = \"TouchMove\";\n IncrementalSource2[IncrementalSource2[\"MediaInteraction\"] = 7] = \"MediaInteraction\";\n IncrementalSource2[IncrementalSource2[\"StyleSheetRule\"] = 8] = \"StyleSheetRule\";\n IncrementalSource2[IncrementalSource2[\"CanvasMutation\"] = 9] = \"CanvasMutation\";\n IncrementalSource2[IncrementalSource2[\"Font\"] = 10] = \"Font\";\n IncrementalSource2[IncrementalSource2[\"Log\"] = 11] = \"Log\";\n IncrementalSource2[IncrementalSource2[\"Drag\"] = 12] = \"Drag\";\n IncrementalSource2[IncrementalSource2[\"StyleDeclaration\"] = 13] = \"StyleDeclaration\";\n IncrementalSource2[IncrementalSource2[\"Selection\"] = 14] = \"Selection\";\n IncrementalSource2[IncrementalSource2[\"AdoptedStyleSheet\"] = 15] = \"AdoptedStyleSheet\";\n IncrementalSource2[IncrementalSource2[\"CustomElement\"] = 16] = \"CustomElement\";\n return IncrementalSource2;\n})(IncrementalSource || {});\nvar MouseInteractions = /* @__PURE__ */ ((MouseInteractions2) => {\n MouseInteractions2[MouseInteractions2[\"MouseUp\"] = 0] = \"MouseUp\";\n MouseInteractions2[MouseInteractions2[\"MouseDown\"] = 1] = \"MouseDown\";\n MouseInteractions2[MouseInteractions2[\"Click\"] = 2] = \"Click\";\n MouseInteractions2[MouseInteractions2[\"ContextMenu\"] = 3] = \"ContextMenu\";\n MouseInteractions2[MouseInteractions2[\"DblClick\"] = 4] = \"DblClick\";\n MouseInteractions2[MouseInteractions2[\"Focus\"] = 5] = \"Focus\";\n MouseInteractions2[MouseInteractions2[\"Blur\"] = 6] = \"Blur\";\n MouseInteractions2[MouseInteractions2[\"TouchStart\"] = 7] = \"TouchStart\";\n MouseInteractions2[MouseInteractions2[\"TouchMove_Departed\"] = 8] = \"TouchMove_Departed\";\n MouseInteractions2[MouseInteractions2[\"TouchEnd\"] = 9] = \"TouchEnd\";\n MouseInteractions2[MouseInteractions2[\"TouchCancel\"] = 10] = \"TouchCancel\";\n return MouseInteractions2;\n})(MouseInteractions || {});\nvar PointerTypes = /* @__PURE__ */ ((PointerTypes2) => {\n PointerTypes2[PointerTypes2[\"Mouse\"] = 0] = \"Mouse\";\n PointerTypes2[PointerTypes2[\"Pen\"] = 1] = \"Pen\";\n PointerTypes2[PointerTypes2[\"Touch\"] = 2] = \"Touch\";\n return PointerTypes2;\n})(PointerTypes || {});\n\nfunction _optionalChain$3(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }\nfunction isNodeInLinkedList(n) {\n return '__ln' in n;\n}\nclass DoubleLinkedList {\n constructor() {\n this.length = 0;\n this.head = null;\n this.tail = null;\n }\n get(position) {\n if (position >= this.length) {\n throw new Error('Position outside of list range');\n }\n let current = this.head;\n for (let index = 0; index < position; index++) {\n current = _optionalChain$3([current, 'optionalAccess', _ => _.next]) || null;\n }\n return current;\n }\n addNode(n) {\n const node = {\n value: n,\n previous: null,\n next: null,\n };\n n.__ln = node;\n if (n.previousSibling && isNodeInLinkedList(n.previousSibling)) {\n const current = n.previousSibling.__ln.next;\n node.next = current;\n node.previous = n.previousSibling.__ln;\n n.previousSibling.__ln.next = node;\n if (current) {\n current.previous = node;\n }\n }\n else if (n.nextSibling &&\n isNodeInLinkedList(n.nextSibling) &&\n n.nextSibling.__ln.previous) {\n const current = n.nextSibling.__ln.previous;\n node.previous = current;\n node.next = n.nextSibling.__ln;\n n.nextSibling.__ln.previous = node;\n if (current) {\n current.next = node;\n }\n }\n else {\n if (this.head) {\n this.head.previous = node;\n }\n node.next = this.head;\n this.head = node;\n }\n if (node.next === null) {\n this.tail = node;\n }\n this.length++;\n }\n removeNode(n) {\n const current = n.__ln;\n if (!this.head) {\n return;\n }\n if (!current.previous) {\n this.head = current.next;\n if (this.head) {\n this.head.previous = null;\n }\n else {\n this.tail = null;\n }\n }\n else {\n current.previous.next = current.next;\n if (current.next) {\n current.next.previous = current.previous;\n }\n else {\n this.tail = current.previous;\n }\n }\n if (n.__ln) {\n delete n.__ln;\n }\n this.length--;\n }\n}\nconst moveKey = (id, parentId) => `${id}@${parentId}`;\nclass MutationBuffer {\n constructor() {\n this.frozen = false;\n this.locked = false;\n this.texts = [];\n this.attributes = [];\n this.removes = [];\n this.mapRemoves = [];\n this.movedMap = {};\n this.addedSet = new Set();\n this.movedSet = new Set();\n this.droppedSet = new Set();\n this.processMutations = (mutations) => {\n mutations.forEach(this.processMutation);\n this.emit();\n };\n this.emit = () => {\n if (this.frozen || this.locked) {\n return;\n }\n const adds = [];\n const addedIds = new Set();\n const addList = new DoubleLinkedList();\n const getNextId = (n) => {\n let ns = n;\n let nextId = IGNORED_NODE;\n while (nextId === IGNORED_NODE) {\n ns = ns && ns.nextSibling;\n nextId = ns && this.mirror.getId(ns);\n }\n return nextId;\n };\n const pushAdd = (n) => {\n if (!n.parentNode || !inDom(n)) {\n return;\n }\n const parentId = isShadowRoot(n.parentNode)\n ? this.mirror.getId(getShadowHost(n))\n : this.mirror.getId(n.parentNode);\n const nextId = getNextId(n);\n if (parentId === -1 || nextId === -1) {\n return addList.addNode(n);\n }\n const sn = serializeNodeWithId(n, {\n doc: this.doc,\n mirror: this.mirror,\n blockClass: this.blockClass,\n blockSelector: this.blockSelector,\n maskAllText: this.maskAllText,\n unblockSelector: this.unblockSelector,\n maskTextClass: this.maskTextClass,\n unmaskTextClass: this.unmaskTextClass,\n maskTextSelector: this.maskTextSelector,\n unmaskTextSelector: this.unmaskTextSelector,\n skipChild: true,\n newlyAddedElement: true,\n inlineStylesheet: this.inlineStylesheet,\n maskInputOptions: this.maskInputOptions,\n maskAttributeFn: this.maskAttributeFn,\n maskTextFn: this.maskTextFn,\n maskInputFn: this.maskInputFn,\n slimDOMOptions: this.slimDOMOptions,\n dataURLOptions: this.dataURLOptions,\n recordCanvas: this.recordCanvas,\n inlineImages: this.inlineImages,\n onSerialize: (currentN) => {\n if (isSerializedIframe(currentN, this.mirror)) {\n this.iframeManager.addIframe(currentN);\n }\n if (isSerializedStylesheet(currentN, this.mirror)) {\n this.stylesheetManager.trackLinkElement(currentN);\n }\n if (hasShadowRoot(n)) {\n this.shadowDomManager.addShadowRoot(n.shadowRoot, this.doc);\n }\n },\n onIframeLoad: (iframe, childSn) => {\n this.iframeManager.attachIframe(iframe, childSn);\n this.shadowDomManager.observeAttachShadow(iframe);\n },\n onStylesheetLoad: (link, childSn) => {\n this.stylesheetManager.attachLinkElement(link, childSn);\n },\n });\n if (sn) {\n adds.push({\n parentId,\n nextId,\n node: sn,\n });\n addedIds.add(sn.id);\n }\n };\n while (this.mapRemoves.length) {\n this.mirror.removeNodeFromMap(this.mapRemoves.shift());\n }\n for (const n of this.movedSet) {\n if (isParentRemoved(this.removes, n, this.mirror) &&\n !this.movedSet.has(n.parentNode)) {\n continue;\n }\n pushAdd(n);\n }\n for (const n of this.addedSet) {\n if (!isAncestorInSet(this.droppedSet, n) &&\n !isParentRemoved(this.removes, n, this.mirror)) {\n pushAdd(n);\n }\n else if (isAncestorInSet(this.movedSet, n)) {\n pushAdd(n);\n }\n else {\n this.droppedSet.add(n);\n }\n }\n let candidate = null;\n while (addList.length) {\n let node = null;\n if (candidate) {\n const parentId = this.mirror.getId(candidate.value.parentNode);\n const nextId = getNextId(candidate.value);\n if (parentId !== -1 && nextId !== -1) {\n node = candidate;\n }\n }\n if (!node) {\n let tailNode = addList.tail;\n while (tailNode) {\n const _node = tailNode;\n tailNode = tailNode.previous;\n if (_node) {\n const parentId = this.mirror.getId(_node.value.parentNode);\n const nextId = getNextId(_node.value);\n if (nextId === -1)\n continue;\n else if (parentId !== -1) {\n node = _node;\n break;\n }\n else {\n const unhandledNode = _node.value;\n if (unhandledNode.parentNode &&\n unhandledNode.parentNode.nodeType ===\n Node.DOCUMENT_FRAGMENT_NODE) {\n const shadowHost = unhandledNode.parentNode\n .host;\n const parentId = this.mirror.getId(shadowHost);\n if (parentId !== -1) {\n node = _node;\n break;\n }\n }\n }\n }\n }\n }\n if (!node) {\n while (addList.head) {\n addList.removeNode(addList.head.value);\n }\n break;\n }\n candidate = node.previous;\n addList.removeNode(node.value);\n pushAdd(node.value);\n }\n const payload = {\n texts: this.texts\n .map((text) => ({\n id: this.mirror.getId(text.node),\n value: text.value,\n }))\n .filter((text) => !addedIds.has(text.id))\n .filter((text) => this.mirror.has(text.id)),\n attributes: this.attributes\n .map((attribute) => {\n const { attributes } = attribute;\n if (typeof attributes.style === 'string') {\n const diffAsStr = JSON.stringify(attribute.styleDiff);\n const unchangedAsStr = JSON.stringify(attribute._unchangedStyles);\n if (diffAsStr.length < attributes.style.length) {\n if ((diffAsStr + unchangedAsStr).split('var(').length ===\n attributes.style.split('var(').length) {\n attributes.style = attribute.styleDiff;\n }\n }\n }\n return {\n id: this.mirror.getId(attribute.node),\n attributes: attributes,\n };\n })\n .filter((attribute) => !addedIds.has(attribute.id))\n .filter((attribute) => this.mirror.has(attribute.id)),\n removes: this.removes,\n adds,\n };\n if (!payload.texts.length &&\n !payload.attributes.length &&\n !payload.removes.length &&\n !payload.adds.length) {\n return;\n }\n this.texts = [];\n this.attributes = [];\n this.removes = [];\n this.addedSet = new Set();\n this.movedSet = new Set();\n this.droppedSet = new Set();\n this.movedMap = {};\n this.mutationCb(payload);\n };\n this.processMutation = (m) => {\n if (isIgnored(m.target, this.mirror)) {\n return;\n }\n let unattachedDoc;\n try {\n unattachedDoc = document.implementation.createHTMLDocument();\n }\n catch (e) {\n unattachedDoc = this.doc;\n }\n switch (m.type) {\n case 'characterData': {\n const value = m.target.textContent;\n if (!isBlocked(m.target, this.blockClass, this.blockSelector, this.unblockSelector, false) &&\n value !== m.oldValue) {\n this.texts.push({\n value: needMaskingText(m.target, this.maskTextClass, this.maskTextSelector, this.unmaskTextClass, this.unmaskTextSelector, this.maskAllText) && value\n ? this.maskTextFn\n ? this.maskTextFn(value)\n : value.replace(/[\\S]/g, '*')\n : value,\n node: m.target,\n });\n }\n break;\n }\n case 'attributes': {\n const target = m.target;\n let attributeName = m.attributeName;\n let value = m.target.getAttribute(attributeName);\n if (attributeName === 'value') {\n const type = getInputType(target);\n const tagName = target.tagName;\n value = getInputValue(target, tagName, type);\n const isInputMasked = shouldMaskInput({\n maskInputOptions: this.maskInputOptions,\n tagName,\n type,\n });\n const forceMask = needMaskingText(m.target, this.maskTextClass, this.maskTextSelector, this.unmaskTextClass, this.unmaskTextSelector, isInputMasked);\n value = maskInputValue({\n isMasked: forceMask,\n element: target,\n value,\n maskInputFn: this.maskInputFn,\n });\n }\n if (isBlocked(m.target, this.blockClass, this.blockSelector, this.unblockSelector, false) ||\n value === m.oldValue) {\n return;\n }\n let item = this.attributes.find((a) => a.node === m.target);\n if (target.tagName === 'IFRAME' &&\n attributeName === 'src' &&\n !this.keepIframeSrcFn(value)) {\n if (!target.contentDocument) {\n attributeName = 'rr_src';\n }\n else {\n return;\n }\n }\n if (!item) {\n item = {\n node: m.target,\n attributes: {},\n styleDiff: {},\n _unchangedStyles: {},\n };\n this.attributes.push(item);\n }\n if (attributeName === 'type' &&\n target.tagName === 'INPUT' &&\n (m.oldValue || '').toLowerCase() === 'password') {\n target.setAttribute('data-rr-is-password', 'true');\n }\n if (!ignoreAttribute(target.tagName, attributeName)) {\n item.attributes[attributeName] = transformAttribute(this.doc, toLowerCase(target.tagName), toLowerCase(attributeName), value, target, this.maskAttributeFn);\n if (attributeName === 'style') {\n const old = unattachedDoc.createElement('span');\n if (m.oldValue) {\n old.setAttribute('style', m.oldValue);\n }\n for (const pname of Array.from(target.style)) {\n const newValue = target.style.getPropertyValue(pname);\n const newPriority = target.style.getPropertyPriority(pname);\n if (newValue !== old.style.getPropertyValue(pname) ||\n newPriority !== old.style.getPropertyPriority(pname)) {\n if (newPriority === '') {\n item.styleDiff[pname] = newValue;\n }\n else {\n item.styleDiff[pname] = [newValue, newPriority];\n }\n }\n else {\n item._unchangedStyles[pname] = [newValue, newPriority];\n }\n }\n for (const pname of Array.from(old.style)) {\n if (target.style.getPropertyValue(pname) === '') {\n item.styleDiff[pname] = false;\n }\n }\n }\n }\n break;\n }\n case 'childList': {\n if (isBlocked(m.target, this.blockClass, this.blockSelector, this.unblockSelector, true)) {\n return;\n }\n m.addedNodes.forEach((n) => this.genAdds(n, m.target));\n m.removedNodes.forEach((n) => {\n const nodeId = this.mirror.getId(n);\n const parentId = isShadowRoot(m.target)\n ? this.mirror.getId(m.target.host)\n : this.mirror.getId(m.target);\n if (isBlocked(m.target, this.blockClass, this.blockSelector, this.unblockSelector, false) ||\n isIgnored(n, this.mirror) ||\n !isSerialized(n, this.mirror)) {\n return;\n }\n if (this.addedSet.has(n)) {\n deepDelete(this.addedSet, n);\n this.droppedSet.add(n);\n }\n else if (this.addedSet.has(m.target) && nodeId === -1) ;\n else if (isAncestorRemoved(m.target, this.mirror)) ;\n else if (this.movedSet.has(n) &&\n this.movedMap[moveKey(nodeId, parentId)]) {\n deepDelete(this.movedSet, n);\n }\n else {\n this.removes.push({\n parentId,\n id: nodeId,\n isShadow: isShadowRoot(m.target) && isNativeShadowDom(m.target)\n ? true\n : undefined,\n });\n }\n this.mapRemoves.push(n);\n });\n break;\n }\n }\n };\n this.genAdds = (n, target) => {\n if (this.processedNodeManager.inOtherBuffer(n, this))\n return;\n if (this.addedSet.has(n) || this.movedSet.has(n))\n return;\n if (this.mirror.hasNode(n)) {\n if (isIgnored(n, this.mirror)) {\n return;\n }\n this.movedSet.add(n);\n let targetId = null;\n if (target && this.mirror.hasNode(target)) {\n targetId = this.mirror.getId(target);\n }\n if (targetId && targetId !== -1) {\n this.movedMap[moveKey(this.mirror.getId(n), targetId)] = true;\n }\n }\n else {\n this.addedSet.add(n);\n this.droppedSet.delete(n);\n }\n if (!isBlocked(n, this.blockClass, this.blockSelector, this.unblockSelector, false)) {\n n.childNodes.forEach((childN) => this.genAdds(childN));\n if (hasShadowRoot(n)) {\n n.shadowRoot.childNodes.forEach((childN) => {\n this.processedNodeManager.add(childN, this);\n this.genAdds(childN, n);\n });\n }\n }\n };\n }\n init(options) {\n [\n 'mutationCb',\n 'blockClass',\n 'blockSelector',\n 'unblockSelector',\n 'maskAllText',\n 'maskTextClass',\n 'unmaskTextClass',\n 'maskTextSelector',\n 'unmaskTextSelector',\n 'inlineStylesheet',\n 'maskInputOptions',\n 'maskAttributeFn',\n 'maskTextFn',\n 'maskInputFn',\n 'keepIframeSrcFn',\n 'recordCanvas',\n 'inlineImages',\n 'slimDOMOptions',\n 'dataURLOptions',\n 'doc',\n 'mirror',\n 'iframeManager',\n 'stylesheetManager',\n 'shadowDomManager',\n 'canvasManager',\n 'processedNodeManager',\n ].forEach((key) => {\n this[key] = options[key];\n });\n }\n freeze() {\n this.frozen = true;\n this.canvasManager.freeze();\n }\n unfreeze() {\n this.frozen = false;\n this.canvasManager.unfreeze();\n this.emit();\n }\n isFrozen() {\n return this.frozen;\n }\n lock() {\n this.locked = true;\n this.canvasManager.lock();\n }\n unlock() {\n this.locked = false;\n this.canvasManager.unlock();\n this.emit();\n }\n reset() {\n this.shadowDomManager.reset();\n this.canvasManager.reset();\n }\n}\nfunction deepDelete(addsSet, n) {\n addsSet.delete(n);\n n.childNodes.forEach((childN) => deepDelete(addsSet, childN));\n}\nfunction isParentRemoved(removes, n, mirror) {\n if (removes.length === 0)\n return false;\n return _isParentRemoved(removes, n, mirror);\n}\nfunction _isParentRemoved(removes, n, mirror) {\n const { parentNode } = n;\n if (!parentNode) {\n return false;\n }\n const parentId = mirror.getId(parentNode);\n if (removes.some((r) => r.id === parentId)) {\n return true;\n }\n return _isParentRemoved(removes, parentNode, mirror);\n}\nfunction isAncestorInSet(set, n) {\n if (set.size === 0)\n return false;\n return _isAncestorInSet(set, n);\n}\nfunction _isAncestorInSet(set, n) {\n const { parentNode } = n;\n if (!parentNode) {\n return false;\n }\n if (set.has(parentNode)) {\n return true;\n }\n return _isAncestorInSet(set, parentNode);\n}\n\nlet errorHandler;\nfunction registerErrorHandler(handler) {\n errorHandler = handler;\n}\nfunction unregisterErrorHandler() {\n errorHandler = undefined;\n}\nconst callbackWrapper = (cb) => {\n if (!errorHandler) {\n return cb;\n }\n const rrwebWrapped = ((...rest) => {\n try {\n return cb(...rest);\n }\n catch (error) {\n if (errorHandler && errorHandler(error) === true) {\n return () => {\n };\n }\n throw error;\n }\n });\n return rrwebWrapped;\n};\n\nfunction _optionalChain$2(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }\nconst mutationBuffers = [];\nfunction getEventTarget(event) {\n try {\n if ('composedPath' in event) {\n const path = event.composedPath();\n if (path.length) {\n return path[0];\n }\n }\n else if ('path' in event && event.path.length) {\n return event.path[0];\n }\n }\n catch (e2) {\n }\n return event && event.target;\n}\nfunction initMutationObserver(options, rootEl) {\n const mutationBuffer = new MutationBuffer();\n mutationBuffers.push(mutationBuffer);\n mutationBuffer.init(options);\n let mutationObserverCtor = window.MutationObserver ||\n window.__rrMutationObserver;\n const angularZoneSymbol = _optionalChain$2([window, 'optionalAccess', _ => _.Zone, 'optionalAccess', _2 => _2.__symbol__, 'optionalCall', _3 => _3('MutationObserver')]);\n if (angularZoneSymbol &&\n window[angularZoneSymbol]) {\n mutationObserverCtor = window[angularZoneSymbol];\n }\n const observer = new mutationObserverCtor(callbackWrapper((mutations) => {\n if (options.onMutation && options.onMutation(mutations) === false) {\n return;\n }\n mutationBuffer.processMutations.bind(mutationBuffer)(mutations);\n }));\n observer.observe(rootEl, {\n attributes: true,\n attributeOldValue: true,\n characterData: true,\n characterDataOldValue: true,\n childList: true,\n subtree: true,\n });\n return observer;\n}\nfunction initMoveObserver({ mousemoveCb, sampling, doc, mirror, }) {\n if (sampling.mousemove === false) {\n return () => {\n };\n }\n const threshold = typeof sampling.mousemove === 'number' ? sampling.mousemove : 50;\n const callbackThreshold = typeof sampling.mousemoveCallback === 'number'\n ? sampling.mousemoveCallback\n : 500;\n let positions = [];\n let timeBaseline;\n const wrappedCb = throttle$1(callbackWrapper((source) => {\n const totalOffset = Date.now() - timeBaseline;\n mousemoveCb(positions.map((p) => {\n p.timeOffset -= totalOffset;\n return p;\n }), source);\n positions = [];\n timeBaseline = null;\n }), callbackThreshold);\n const updatePosition = callbackWrapper(throttle$1(callbackWrapper((evt) => {\n const target = getEventTarget(evt);\n const { clientX, clientY } = legacy_isTouchEvent(evt)\n ? evt.changedTouches[0]\n : evt;\n if (!timeBaseline) {\n timeBaseline = nowTimestamp();\n }\n positions.push({\n x: clientX,\n y: clientY,\n id: mirror.getId(target),\n timeOffset: nowTimestamp() - timeBaseline,\n });\n wrappedCb(typeof DragEvent !== 'undefined' && evt instanceof DragEvent\n ? IncrementalSource.Drag\n : evt instanceof MouseEvent\n ? IncrementalSource.MouseMove\n : IncrementalSource.TouchMove);\n }), threshold, {\n trailing: false,\n }));\n const handlers = [\n on('mousemove', updatePosition, doc),\n on('touchmove', updatePosition, doc),\n on('drag', updatePosition, doc),\n ];\n return callbackWrapper(() => {\n handlers.forEach((h) => h());\n });\n}\nfunction initMouseInteractionObserver({ mouseInteractionCb, doc, mirror, blockClass, blockSelector, unblockSelector, sampling, }) {\n if (sampling.mouseInteraction === false) {\n return () => {\n };\n }\n const disableMap = sampling.mouseInteraction === true ||\n sampling.mouseInteraction === undefined\n ? {}\n : sampling.mouseInteraction;\n const handlers = [];\n let currentPointerType = null;\n const getHandler = (eventKey) => {\n return (event) => {\n const target = getEventTarget(event);\n if (isBlocked(target, blockClass, blockSelector, unblockSelector, true)) {\n return;\n }\n let pointerType = null;\n let thisEventKey = eventKey;\n if ('pointerType' in event) {\n switch (event.pointerType) {\n case 'mouse':\n pointerType = PointerTypes.Mouse;\n break;\n case 'touch':\n pointerType = PointerTypes.Touch;\n break;\n case 'pen':\n pointerType = PointerTypes.Pen;\n break;\n }\n if (pointerType === PointerTypes.Touch) {\n if (MouseInteractions[eventKey] === MouseInteractions.MouseDown) {\n thisEventKey = 'TouchStart';\n }\n else if (MouseInteractions[eventKey] === MouseInteractions.MouseUp) {\n thisEventKey = 'TouchEnd';\n }\n }\n else if (pointerType === PointerTypes.Pen) ;\n }\n else if (legacy_isTouchEvent(event)) {\n pointerType = PointerTypes.Touch;\n }\n if (pointerType !== null) {\n currentPointerType = pointerType;\n if ((thisEventKey.startsWith('Touch') &&\n pointerType === PointerTypes.Touch) ||\n (thisEventKey.startsWith('Mouse') &&\n pointerType === PointerTypes.Mouse)) {\n pointerType = null;\n }\n }\n else if (MouseInteractions[eventKey] === MouseInteractions.Click) {\n pointerType = currentPointerType;\n currentPointerType = null;\n }\n const e = legacy_isTouchEvent(event) ? event.changedTouches[0] : event;\n if (!e) {\n return;\n }\n const id = mirror.getId(target);\n const { clientX, clientY } = e;\n callbackWrapper(mouseInteractionCb)({\n type: MouseInteractions[thisEventKey],\n id,\n x: clientX,\n y: clientY,\n ...(pointerType !== null && { pointerType }),\n });\n };\n };\n Object.keys(MouseInteractions)\n .filter((key) => Number.isNaN(Number(key)) &&\n !key.endsWith('_Departed') &&\n disableMap[key] !== false)\n .forEach((eventKey) => {\n let eventName = toLowerCase(eventKey);\n const handler = getHandler(eventKey);\n if (window.PointerEvent) {\n switch (MouseInteractions[eventKey]) {\n case MouseInteractions.MouseDown:\n case MouseInteractions.MouseUp:\n eventName = eventName.replace('mouse', 'pointer');\n break;\n case MouseInteractions.TouchStart:\n case MouseInteractions.TouchEnd:\n return;\n }\n }\n handlers.push(on(eventName, handler, doc));\n });\n return callbackWrapper(() => {\n handlers.forEach((h) => h());\n });\n}\nfunction initScrollObserver({ scrollCb, doc, mirror, blockClass, blockSelector, unblockSelector, sampling, }) {\n const updatePosition = callbackWrapper(throttle$1(callbackWrapper((evt) => {\n const target = getEventTarget(evt);\n if (!target ||\n isBlocked(target, blockClass, blockSelector, unblockSelector, true)) {\n return;\n }\n const id = mirror.getId(target);\n if (target === doc && doc.defaultView) {\n const scrollLeftTop = getWindowScroll(doc.defaultView);\n scrollCb({\n id,\n x: scrollLeftTop.left,\n y: scrollLeftTop.top,\n });\n }\n else {\n scrollCb({\n id,\n x: target.scrollLeft,\n y: target.scrollTop,\n });\n }\n }), sampling.scroll || 100));\n return on('scroll', updatePosition, doc);\n}\nfunction initViewportResizeObserver({ viewportResizeCb }, { win }) {\n let lastH = -1;\n let lastW = -1;\n const updateDimension = callbackWrapper(throttle$1(callbackWrapper(() => {\n const height = getWindowHeight();\n const width = getWindowWidth();\n if (lastH !== height || lastW !== width) {\n viewportResizeCb({\n width: Number(width),\n height: Number(height),\n });\n lastH = height;\n lastW = width;\n }\n }), 200));\n return on('resize', updateDimension, win);\n}\nconst INPUT_TAGS = ['INPUT', 'TEXTAREA', 'SELECT'];\nconst lastInputValueMap = new WeakMap();\nfunction initInputObserver({ inputCb, doc, mirror, blockClass, blockSelector, unblockSelector, ignoreClass, ignoreSelector, maskInputOptions, maskInputFn, sampling, userTriggeredOnInput, maskTextClass, unmaskTextClass, maskTextSelector, unmaskTextSelector, }) {\n function eventHandler(event) {\n let target = getEventTarget(event);\n const userTriggered = event.isTrusted;\n const tagName = target && toUpperCase(target.tagName);\n if (tagName === 'OPTION')\n target = target.parentElement;\n if (!target ||\n !tagName ||\n INPUT_TAGS.indexOf(tagName) < 0 ||\n isBlocked(target, blockClass, blockSelector, unblockSelector, true)) {\n return;\n }\n const el = target;\n if (el.classList.contains(ignoreClass) ||\n (ignoreSelector && el.matches(ignoreSelector))) {\n return;\n }\n const type = getInputType(target);\n let text = getInputValue(el, tagName, type);\n let isChecked = false;\n const isInputMasked = shouldMaskInput({\n maskInputOptions,\n tagName,\n type,\n });\n const forceMask = needMaskingText(target, maskTextClass, maskTextSelector, unmaskTextClass, unmaskTextSelector, isInputMasked);\n if (type === 'radio' || type === 'checkbox') {\n isChecked = target.checked;\n }\n text = maskInputValue({\n isMasked: forceMask,\n element: target,\n value: text,\n maskInputFn,\n });\n cbWithDedup(target, userTriggeredOnInput\n ? { text, isChecked, userTriggered }\n : { text, isChecked });\n const name = target.name;\n if (type === 'radio' && name && isChecked) {\n doc\n .querySelectorAll(`input[type=\"radio\"][name=\"${name}\"]`)\n .forEach((el) => {\n if (el !== target) {\n const text = maskInputValue({\n isMasked: forceMask,\n element: el,\n value: getInputValue(el, tagName, type),\n maskInputFn,\n });\n cbWithDedup(el, userTriggeredOnInput\n ? { text, isChecked: !isChecked, userTriggered: false }\n : { text, isChecked: !isChecked });\n }\n });\n }\n }\n function cbWithDedup(target, v) {\n const lastInputValue = lastInputValueMap.get(target);\n if (!lastInputValue ||\n lastInputValue.text !== v.text ||\n lastInputValue.isChecked !== v.isChecked) {\n lastInputValueMap.set(target, v);\n const id = mirror.getId(target);\n callbackWrapper(inputCb)({\n ...v,\n id,\n });\n }\n }\n const events = sampling.input === 'last' ? ['change'] : ['input', 'change'];\n const handlers = events.map((eventName) => on(eventName, callbackWrapper(eventHandler), doc));\n const currentWindow = doc.defaultView;\n if (!currentWindow) {\n return () => {\n handlers.forEach((h) => h());\n };\n }\n const propertyDescriptor = currentWindow.Object.getOwnPropertyDescriptor(currentWindow.HTMLInputElement.prototype, 'value');\n const hookProperties = [\n [currentWindow.HTMLInputElement.prototype, 'value'],\n [currentWindow.HTMLInputElement.prototype, 'checked'],\n [currentWindow.HTMLSelectElement.prototype, 'value'],\n [currentWindow.HTMLTextAreaElement.prototype, 'value'],\n [currentWindow.HTMLSelectElement.prototype, 'selectedIndex'],\n [currentWindow.HTMLOptionElement.prototype, 'selected'],\n ];\n if (propertyDescriptor && propertyDescriptor.set) {\n handlers.push(...hookProperties.map((p) => hookSetter(p[0], p[1], {\n set() {\n callbackWrapper(eventHandler)({\n target: this,\n isTrusted: false,\n });\n },\n }, false, currentWindow)));\n }\n return callbackWrapper(() => {\n handlers.forEach((h) => h());\n });\n}\nfunction getNestedCSSRulePositions(rule) {\n const positions = [];\n function recurse(childRule, pos) {\n if ((hasNestedCSSRule('CSSGroupingRule') &&\n childRule.parentRule instanceof CSSGroupingRule) ||\n (hasNestedCSSRule('CSSMediaRule') &&\n childRule.parentRule instanceof CSSMediaRule) ||\n (hasNestedCSSRule('CSSSupportsRule') &&\n childRule.parentRule instanceof CSSSupportsRule) ||\n (hasNestedCSSRule('CSSConditionRule') &&\n childRule.parentRule instanceof CSSConditionRule)) {\n const rules = Array.from(childRule.parentRule.cssRules);\n const index = rules.indexOf(childRule);\n pos.unshift(index);\n }\n else if (childRule.parentStyleSheet) {\n const rules = Array.from(childRule.parentStyleSheet.cssRules);\n const index = rules.indexOf(childRule);\n pos.unshift(index);\n }\n return pos;\n }\n return recurse(rule, positions);\n}\nfunction getIdAndStyleId(sheet, mirror, styleMirror) {\n let id, styleId;\n if (!sheet)\n return {};\n if (sheet.ownerNode)\n id = mirror.getId(sheet.ownerNode);\n else\n styleId = styleMirror.getId(sheet);\n return {\n styleId,\n id,\n };\n}\nfunction initStyleSheetObserver({ styleSheetRuleCb, mirror, stylesheetManager }, { win }) {\n if (!win.CSSStyleSheet || !win.CSSStyleSheet.prototype) {\n return () => {\n };\n }\n const insertRule = win.CSSStyleSheet.prototype.insertRule;\n win.CSSStyleSheet.prototype.insertRule = new Proxy(insertRule, {\n apply: callbackWrapper((target, thisArg, argumentsList) => {\n const [rule, index] = argumentsList;\n const { id, styleId } = getIdAndStyleId(thisArg, mirror, stylesheetManager.styleMirror);\n if ((id && id !== -1) || (styleId && styleId !== -1)) {\n styleSheetRuleCb({\n id,\n styleId,\n adds: [{ rule, index }],\n });\n }\n return target.apply(thisArg, argumentsList);\n }),\n });\n const deleteRule = win.CSSStyleSheet.prototype.deleteRule;\n win.CSSStyleSheet.prototype.deleteRule = new Proxy(deleteRule, {\n apply: callbackWrapper((target, thisArg, argumentsList) => {\n const [index] = argumentsList;\n const { id, styleId } = getIdAndStyleId(thisArg, mirror, stylesheetManager.styleMirror);\n if ((id && id !== -1) || (styleId && styleId !== -1)) {\n styleSheetRuleCb({\n id,\n styleId,\n removes: [{ index }],\n });\n }\n return target.apply(thisArg, argumentsList);\n }),\n });\n let replace;\n if (win.CSSStyleSheet.prototype.replace) {\n replace = win.CSSStyleSheet.prototype.replace;\n win.CSSStyleSheet.prototype.replace = new Proxy(replace, {\n apply: callbackWrapper((target, thisArg, argumentsList) => {\n const [text] = argumentsList;\n const { id, styleId } = getIdAndStyleId(thisArg, mirror, stylesheetManager.styleMirror);\n if ((id && id !== -1) || (styleId && styleId !== -1)) {\n styleSheetRuleCb({\n id,\n styleId,\n replace: text,\n });\n }\n return target.apply(thisArg, argumentsList);\n }),\n });\n }\n let replaceSync;\n if (win.CSSStyleSheet.prototype.replaceSync) {\n replaceSync = win.CSSStyleSheet.prototype.replaceSync;\n win.CSSStyleSheet.prototype.replaceSync = new Proxy(replaceSync, {\n apply: callbackWrapper((target, thisArg, argumentsList) => {\n const [text] = argumentsList;\n const { id, styleId } = getIdAndStyleId(thisArg, mirror, stylesheetManager.styleMirror);\n if ((id && id !== -1) || (styleId && styleId !== -1)) {\n styleSheetRuleCb({\n id,\n styleId,\n replaceSync: text,\n });\n }\n return target.apply(thisArg, argumentsList);\n }),\n });\n }\n const supportedNestedCSSRuleTypes = {};\n if (canMonkeyPatchNestedCSSRule('CSSGroupingRule')) {\n supportedNestedCSSRuleTypes.CSSGroupingRule = win.CSSGroupingRule;\n }\n else {\n if (canMonkeyPatchNestedCSSRule('CSSMediaRule')) {\n supportedNestedCSSRuleTypes.CSSMediaRule = win.CSSMediaRule;\n }\n if (canMonkeyPatchNestedCSSRule('CSSConditionRule')) {\n supportedNestedCSSRuleTypes.CSSConditionRule = win.CSSConditionRule;\n }\n if (canMonkeyPatchNestedCSSRule('CSSSupportsRule')) {\n supportedNestedCSSRuleTypes.CSSSupportsRule = win.CSSSupportsRule;\n }\n }\n const unmodifiedFunctions = {};\n Object.entries(supportedNestedCSSRuleTypes).forEach(([typeKey, type]) => {\n unmodifiedFunctions[typeKey] = {\n insertRule: type.prototype.insertRule,\n deleteRule: type.prototype.deleteRule,\n };\n type.prototype.insertRule = new Proxy(unmodifiedFunctions[typeKey].insertRule, {\n apply: callbackWrapper((target, thisArg, argumentsList) => {\n const [rule, index] = argumentsList;\n const { id, styleId } = getIdAndStyleId(thisArg.parentStyleSheet, mirror, stylesheetManager.styleMirror);\n if ((id && id !== -1) || (styleId && styleId !== -1)) {\n styleSheetRuleCb({\n id,\n styleId,\n adds: [\n {\n rule,\n index: [\n ...getNestedCSSRulePositions(thisArg),\n index || 0,\n ],\n },\n ],\n });\n }\n return target.apply(thisArg, argumentsList);\n }),\n });\n type.prototype.deleteRule = new Proxy(unmodifiedFunctions[typeKey].deleteRule, {\n apply: callbackWrapper((target, thisArg, argumentsList) => {\n const [index] = argumentsList;\n const { id, styleId } = getIdAndStyleId(thisArg.parentStyleSheet, mirror, stylesheetManager.styleMirror);\n if ((id && id !== -1) || (styleId && styleId !== -1)) {\n styleSheetRuleCb({\n id,\n styleId,\n removes: [\n { index: [...getNestedCSSRulePositions(thisArg), index] },\n ],\n });\n }\n return target.apply(thisArg, argumentsList);\n }),\n });\n });\n return callbackWrapper(() => {\n win.CSSStyleSheet.prototype.insertRule = insertRule;\n win.CSSStyleSheet.prototype.deleteRule = deleteRule;\n replace && (win.CSSStyleSheet.prototype.replace = replace);\n replaceSync && (win.CSSStyleSheet.prototype.replaceSync = replaceSync);\n Object.entries(supportedNestedCSSRuleTypes).forEach(([typeKey, type]) => {\n type.prototype.insertRule = unmodifiedFunctions[typeKey].insertRule;\n type.prototype.deleteRule = unmodifiedFunctions[typeKey].deleteRule;\n });\n });\n}\nfunction initAdoptedStyleSheetObserver({ mirror, stylesheetManager, }, host) {\n let hostId = null;\n if (host.nodeName === '#document')\n hostId = mirror.getId(host);\n else\n hostId = mirror.getId(host.host);\n const patchTarget = host.nodeName === '#document'\n ? _optionalChain$2([host, 'access', _4 => _4.defaultView, 'optionalAccess', _5 => _5.Document])\n : _optionalChain$2([host, 'access', _6 => _6.ownerDocument, 'optionalAccess', _7 => _7.defaultView, 'optionalAccess', _8 => _8.ShadowRoot]);\n const originalPropertyDescriptor = _optionalChain$2([patchTarget, 'optionalAccess', _9 => _9.prototype])\n ? Object.getOwnPropertyDescriptor(_optionalChain$2([patchTarget, 'optionalAccess', _10 => _10.prototype]), 'adoptedStyleSheets')\n : undefined;\n if (hostId === null ||\n hostId === -1 ||\n !patchTarget ||\n !originalPropertyDescriptor)\n return () => {\n };\n Object.defineProperty(host, 'adoptedStyleSheets', {\n configurable: originalPropertyDescriptor.configurable,\n enumerable: originalPropertyDescriptor.enumerable,\n get() {\n return _optionalChain$2([originalPropertyDescriptor, 'access', _11 => _11.get, 'optionalAccess', _12 => _12.call, 'call', _13 => _13(this)]);\n },\n set(sheets) {\n const result = _optionalChain$2([originalPropertyDescriptor, 'access', _14 => _14.set, 'optionalAccess', _15 => _15.call, 'call', _16 => _16(this, sheets)]);\n if (hostId !== null && hostId !== -1) {\n try {\n stylesheetManager.adoptStyleSheets(sheets, hostId);\n }\n catch (e) {\n }\n }\n return result;\n },\n });\n return callbackWrapper(() => {\n Object.defineProperty(host, 'adoptedStyleSheets', {\n configurable: originalPropertyDescriptor.configurable,\n enumerable: originalPropertyDescriptor.enumerable,\n get: originalPropertyDescriptor.get,\n set: originalPropertyDescriptor.set,\n });\n });\n}\nfunction initStyleDeclarationObserver({ styleDeclarationCb, mirror, ignoreCSSAttributes, stylesheetManager, }, { win }) {\n const setProperty = win.CSSStyleDeclaration.prototype.setProperty;\n win.CSSStyleDeclaration.prototype.setProperty = new Proxy(setProperty, {\n apply: callbackWrapper((target, thisArg, argumentsList) => {\n const [property, value, priority] = argumentsList;\n if (ignoreCSSAttributes.has(property)) {\n return setProperty.apply(thisArg, [property, value, priority]);\n }\n const { id, styleId } = getIdAndStyleId(_optionalChain$2([thisArg, 'access', _17 => _17.parentRule, 'optionalAccess', _18 => _18.parentStyleSheet]), mirror, stylesheetManager.styleMirror);\n if ((id && id !== -1) || (styleId && styleId !== -1)) {\n styleDeclarationCb({\n id,\n styleId,\n set: {\n property,\n value,\n priority,\n },\n index: getNestedCSSRulePositions(thisArg.parentRule),\n });\n }\n return target.apply(thisArg, argumentsList);\n }),\n });\n const removeProperty = win.CSSStyleDeclaration.prototype.removeProperty;\n win.CSSStyleDeclaration.prototype.removeProperty = new Proxy(removeProperty, {\n apply: callbackWrapper((target, thisArg, argumentsList) => {\n const [property] = argumentsList;\n if (ignoreCSSAttributes.has(property)) {\n return removeProperty.apply(thisArg, [property]);\n }\n const { id, styleId } = getIdAndStyleId(_optionalChain$2([thisArg, 'access', _19 => _19.parentRule, 'optionalAccess', _20 => _20.parentStyleSheet]), mirror, stylesheetManager.styleMirror);\n if ((id && id !== -1) || (styleId && styleId !== -1)) {\n styleDeclarationCb({\n id,\n styleId,\n remove: {\n property,\n },\n index: getNestedCSSRulePositions(thisArg.parentRule),\n });\n }\n return target.apply(thisArg, argumentsList);\n }),\n });\n return callbackWrapper(() => {\n win.CSSStyleDeclaration.prototype.setProperty = setProperty;\n win.CSSStyleDeclaration.prototype.removeProperty = removeProperty;\n });\n}\nfunction initMediaInteractionObserver({ mediaInteractionCb, blockClass, blockSelector, unblockSelector, mirror, sampling, doc, }) {\n const handler = callbackWrapper((type) => throttle$1(callbackWrapper((event) => {\n const target = getEventTarget(event);\n if (!target ||\n isBlocked(target, blockClass, blockSelector, unblockSelector, true)) {\n return;\n }\n const { currentTime, volume, muted, playbackRate } = target;\n mediaInteractionCb({\n type,\n id: mirror.getId(target),\n currentTime,\n volume,\n muted,\n playbackRate,\n });\n }), sampling.media || 500));\n const handlers = [\n on('play', handler(0), doc),\n on('pause', handler(1), doc),\n on('seeked', handler(2), doc),\n on('volumechange', handler(3), doc),\n on('ratechange', handler(4), doc),\n ];\n return callbackWrapper(() => {\n handlers.forEach((h) => h());\n });\n}\nfunction initFontObserver({ fontCb, doc }) {\n const win = doc.defaultView;\n if (!win) {\n return () => {\n };\n }\n const handlers = [];\n const fontMap = new WeakMap();\n const originalFontFace = win.FontFace;\n win.FontFace = function FontFace(family, source, descriptors) {\n const fontFace = new originalFontFace(family, source, descriptors);\n fontMap.set(fontFace, {\n family,\n buffer: typeof source !== 'string',\n descriptors,\n fontSource: typeof source === 'string'\n ? source\n : JSON.stringify(Array.from(new Uint8Array(source))),\n });\n return fontFace;\n };\n const restoreHandler = patch(doc.fonts, 'add', function (original) {\n return function (fontFace) {\n setTimeout(callbackWrapper(() => {\n const p = fontMap.get(fontFace);\n if (p) {\n fontCb(p);\n fontMap.delete(fontFace);\n }\n }), 0);\n return original.apply(this, [fontFace]);\n };\n });\n handlers.push(() => {\n win.FontFace = originalFontFace;\n });\n handlers.push(restoreHandler);\n return callbackWrapper(() => {\n handlers.forEach((h) => h());\n });\n}\nfunction initSelectionObserver(param) {\n const { doc, mirror, blockClass, blockSelector, unblockSelector, selectionCb, } = param;\n let collapsed = true;\n const updateSelection = callbackWrapper(() => {\n const selection = doc.getSelection();\n if (!selection || (collapsed && _optionalChain$2([selection, 'optionalAccess', _21 => _21.isCollapsed])))\n return;\n collapsed = selection.isCollapsed || false;\n const ranges = [];\n const count = selection.rangeCount || 0;\n for (let i = 0; i < count; i++) {\n const range = selection.getRangeAt(i);\n const { startContainer, startOffset, endContainer, endOffset } = range;\n const blocked = isBlocked(startContainer, blockClass, blockSelector, unblockSelector, true) ||\n isBlocked(endContainer, blockClass, blockSelector, unblockSelector, true);\n if (blocked)\n continue;\n ranges.push({\n start: mirror.getId(startContainer),\n startOffset,\n end: mirror.getId(endContainer),\n endOffset,\n });\n }\n selectionCb({ ranges });\n });\n updateSelection();\n return on('selectionchange', updateSelection);\n}\nfunction initCustomElementObserver({ doc, customElementCb, }) {\n const win = doc.defaultView;\n if (!win || !win.customElements) {\n return () => {\n };\n }\n const restoreHandler = patch(win.customElements, 'define', function (original) {\n return function (name, constructor, options) {\n try {\n customElementCb({\n define: {\n name,\n },\n });\n }\n catch (e) {\n }\n return original.apply(this, [name, constructor, options]);\n };\n });\n return restoreHandler;\n}\nfunction initObservers(o, _hooks = {}) {\n const currentWindow = o.doc.defaultView;\n if (!currentWindow) {\n return () => {\n };\n }\n const mutationObserver = initMutationObserver(o, o.doc);\n const mousemoveHandler = initMoveObserver(o);\n const mouseInteractionHandler = initMouseInteractionObserver(o);\n const scrollHandler = initScrollObserver(o);\n const viewportResizeHandler = initViewportResizeObserver(o, {\n win: currentWindow,\n });\n const inputHandler = initInputObserver(o);\n const mediaInteractionHandler = initMediaInteractionObserver(o);\n const styleSheetObserver = initStyleSheetObserver(o, { win: currentWindow });\n const adoptedStyleSheetObserver = initAdoptedStyleSheetObserver(o, o.doc);\n const styleDeclarationObserver = initStyleDeclarationObserver(o, {\n win: currentWindow,\n });\n const fontObserver = o.collectFonts\n ? initFontObserver(o)\n : () => {\n };\n const selectionObserver = initSelectionObserver(o);\n const customElementObserver = initCustomElementObserver(o);\n const pluginHandlers = [];\n for (const plugin of o.plugins) {\n pluginHandlers.push(plugin.observer(plugin.callback, currentWindow, plugin.options));\n }\n return callbackWrapper(() => {\n mutationBuffers.forEach((b) => b.reset());\n mutationObserver.disconnect();\n mousemoveHandler();\n mouseInteractionHandler();\n scrollHandler();\n viewportResizeHandler();\n inputHandler();\n mediaInteractionHandler();\n styleSheetObserver();\n adoptedStyleSheetObserver();\n styleDeclarationObserver();\n fontObserver();\n selectionObserver();\n customElementObserver();\n pluginHandlers.forEach((h) => h());\n });\n}\nfunction hasNestedCSSRule(prop) {\n return typeof window[prop] !== 'undefined';\n}\nfunction canMonkeyPatchNestedCSSRule(prop) {\n return Boolean(typeof window[prop] !== 'undefined' &&\n window[prop].prototype &&\n 'insertRule' in window[prop].prototype &&\n 'deleteRule' in window[prop].prototype);\n}\n\nclass CrossOriginIframeMirror {\n constructor(generateIdFn) {\n this.generateIdFn = generateIdFn;\n this.iframeIdToRemoteIdMap = new WeakMap();\n this.iframeRemoteIdToIdMap = new WeakMap();\n }\n getId(iframe, remoteId, idToRemoteMap, remoteToIdMap) {\n const idToRemoteIdMap = idToRemoteMap || this.getIdToRemoteIdMap(iframe);\n const remoteIdToIdMap = remoteToIdMap || this.getRemoteIdToIdMap(iframe);\n let id = idToRemoteIdMap.get(remoteId);\n if (!id) {\n id = this.generateIdFn();\n idToRemoteIdMap.set(remoteId, id);\n remoteIdToIdMap.set(id, remoteId);\n }\n return id;\n }\n getIds(iframe, remoteId) {\n const idToRemoteIdMap = this.getIdToRemoteIdMap(iframe);\n const remoteIdToIdMap = this.getRemoteIdToIdMap(iframe);\n return remoteId.map((id) => this.getId(iframe, id, idToRemoteIdMap, remoteIdToIdMap));\n }\n getRemoteId(iframe, id, map) {\n const remoteIdToIdMap = map || this.getRemoteIdToIdMap(iframe);\n if (typeof id !== 'number')\n return id;\n const remoteId = remoteIdToIdMap.get(id);\n if (!remoteId)\n return -1;\n return remoteId;\n }\n getRemoteIds(iframe, ids) {\n const remoteIdToIdMap = this.getRemoteIdToIdMap(iframe);\n return ids.map((id) => this.getRemoteId(iframe, id, remoteIdToIdMap));\n }\n reset(iframe) {\n if (!iframe) {\n this.iframeIdToRemoteIdMap = new WeakMap();\n this.iframeRemoteIdToIdMap = new WeakMap();\n return;\n }\n this.iframeIdToRemoteIdMap.delete(iframe);\n this.iframeRemoteIdToIdMap.delete(iframe);\n }\n getIdToRemoteIdMap(iframe) {\n let idToRemoteIdMap = this.iframeIdToRemoteIdMap.get(iframe);\n if (!idToRemoteIdMap) {\n idToRemoteIdMap = new Map();\n this.iframeIdToRemoteIdMap.set(iframe, idToRemoteIdMap);\n }\n return idToRemoteIdMap;\n }\n getRemoteIdToIdMap(iframe) {\n let remoteIdToIdMap = this.iframeRemoteIdToIdMap.get(iframe);\n if (!remoteIdToIdMap) {\n remoteIdToIdMap = new Map();\n this.iframeRemoteIdToIdMap.set(iframe, remoteIdToIdMap);\n }\n return remoteIdToIdMap;\n }\n}\n\nfunction _optionalChain$1(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }\nclass IframeManagerNoop {\n constructor() {\n this.crossOriginIframeMirror = new CrossOriginIframeMirror(genId);\n this.crossOriginIframeRootIdMap = new WeakMap();\n }\n addIframe() {\n }\n addLoadListener() {\n }\n attachIframe() {\n }\n}\nclass IframeManager {\n constructor(options) {\n this.iframes = new WeakMap();\n this.crossOriginIframeMap = new WeakMap();\n this.crossOriginIframeMirror = new CrossOriginIframeMirror(genId);\n this.crossOriginIframeRootIdMap = new WeakMap();\n this.mutationCb = options.mutationCb;\n this.wrappedEmit = options.wrappedEmit;\n this.stylesheetManager = options.stylesheetManager;\n this.recordCrossOriginIframes = options.recordCrossOriginIframes;\n this.crossOriginIframeStyleMirror = new CrossOriginIframeMirror(this.stylesheetManager.styleMirror.generateId.bind(this.stylesheetManager.styleMirror));\n this.mirror = options.mirror;\n if (this.recordCrossOriginIframes) {\n window.addEventListener('message', this.handleMessage.bind(this));\n }\n }\n addIframe(iframeEl) {\n this.iframes.set(iframeEl, true);\n if (iframeEl.contentWindow)\n this.crossOriginIframeMap.set(iframeEl.contentWindow, iframeEl);\n }\n addLoadListener(cb) {\n this.loadListener = cb;\n }\n attachIframe(iframeEl, childSn) {\n this.mutationCb({\n adds: [\n {\n parentId: this.mirror.getId(iframeEl),\n nextId: null,\n node: childSn,\n },\n ],\n removes: [],\n texts: [],\n attributes: [],\n isAttachIframe: true,\n });\n _optionalChain$1([this, 'access', _ => _.loadListener, 'optionalCall', _2 => _2(iframeEl)]);\n if (iframeEl.contentDocument &&\n iframeEl.contentDocument.adoptedStyleSheets &&\n iframeEl.contentDocument.adoptedStyleSheets.length > 0)\n this.stylesheetManager.adoptStyleSheets(iframeEl.contentDocument.adoptedStyleSheets, this.mirror.getId(iframeEl.contentDocument));\n }\n handleMessage(message) {\n const crossOriginMessageEvent = message;\n if (crossOriginMessageEvent.data.type !== 'rrweb' ||\n crossOriginMessageEvent.origin !== crossOriginMessageEvent.data.origin)\n return;\n const iframeSourceWindow = message.source;\n if (!iframeSourceWindow)\n return;\n const iframeEl = this.crossOriginIframeMap.get(message.source);\n if (!iframeEl)\n return;\n const transformedEvent = this.transformCrossOriginEvent(iframeEl, crossOriginMessageEvent.data.event);\n if (transformedEvent)\n this.wrappedEmit(transformedEvent, crossOriginMessageEvent.data.isCheckout);\n }\n transformCrossOriginEvent(iframeEl, e) {\n switch (e.type) {\n case EventType.FullSnapshot: {\n this.crossOriginIframeMirror.reset(iframeEl);\n this.crossOriginIframeStyleMirror.reset(iframeEl);\n this.replaceIdOnNode(e.data.node, iframeEl);\n const rootId = e.data.node.id;\n this.crossOriginIframeRootIdMap.set(iframeEl, rootId);\n this.patchRootIdOnNode(e.data.node, rootId);\n return {\n timestamp: e.timestamp,\n type: EventType.IncrementalSnapshot,\n data: {\n source: IncrementalSource.Mutation,\n adds: [\n {\n parentId: this.mirror.getId(iframeEl),\n nextId: null,\n node: e.data.node,\n },\n ],\n removes: [],\n texts: [],\n attributes: [],\n isAttachIframe: true,\n },\n };\n }\n case EventType.Meta:\n case EventType.Load:\n case EventType.DomContentLoaded: {\n return false;\n }\n case EventType.Plugin: {\n return e;\n }\n case EventType.Custom: {\n this.replaceIds(e.data.payload, iframeEl, ['id', 'parentId', 'previousId', 'nextId']);\n return e;\n }\n case EventType.IncrementalSnapshot: {\n switch (e.data.source) {\n case IncrementalSource.Mutation: {\n e.data.adds.forEach((n) => {\n this.replaceIds(n, iframeEl, [\n 'parentId',\n 'nextId',\n 'previousId',\n ]);\n this.replaceIdOnNode(n.node, iframeEl);\n const rootId = this.crossOriginIframeRootIdMap.get(iframeEl);\n rootId && this.patchRootIdOnNode(n.node, rootId);\n });\n e.data.removes.forEach((n) => {\n this.replaceIds(n, iframeEl, ['parentId', 'id']);\n });\n e.data.attributes.forEach((n) => {\n this.replaceIds(n, iframeEl, ['id']);\n });\n e.data.texts.forEach((n) => {\n this.replaceIds(n, iframeEl, ['id']);\n });\n return e;\n }\n case IncrementalSource.Drag:\n case IncrementalSource.TouchMove:\n case IncrementalSource.MouseMove: {\n e.data.positions.forEach((p) => {\n this.replaceIds(p, iframeEl, ['id']);\n });\n return e;\n }\n case IncrementalSource.ViewportResize: {\n return false;\n }\n case IncrementalSource.MediaInteraction:\n case IncrementalSource.MouseInteraction:\n case IncrementalSource.Scroll:\n case IncrementalSource.CanvasMutation:\n case IncrementalSource.Input: {\n this.replaceIds(e.data, iframeEl, ['id']);\n return e;\n }\n case IncrementalSource.StyleSheetRule:\n case IncrementalSource.StyleDeclaration: {\n this.replaceIds(e.data, iframeEl, ['id']);\n this.replaceStyleIds(e.data, iframeEl, ['styleId']);\n return e;\n }\n case IncrementalSource.Font: {\n return e;\n }\n case IncrementalSource.Selection: {\n e.data.ranges.forEach((range) => {\n this.replaceIds(range, iframeEl, ['start', 'end']);\n });\n return e;\n }\n case IncrementalSource.AdoptedStyleSheet: {\n this.replaceIds(e.data, iframeEl, ['id']);\n this.replaceStyleIds(e.data, iframeEl, ['styleIds']);\n _optionalChain$1([e, 'access', _3 => _3.data, 'access', _4 => _4.styles, 'optionalAccess', _5 => _5.forEach, 'call', _6 => _6((style) => {\n this.replaceStyleIds(style, iframeEl, ['styleId']);\n })]);\n return e;\n }\n }\n }\n }\n return false;\n }\n replace(iframeMirror, obj, iframeEl, keys) {\n for (const key of keys) {\n if (!Array.isArray(obj[key]) && typeof obj[key] !== 'number')\n continue;\n if (Array.isArray(obj[key])) {\n obj[key] = iframeMirror.getIds(iframeEl, obj[key]);\n }\n else {\n obj[key] = iframeMirror.getId(iframeEl, obj[key]);\n }\n }\n return obj;\n }\n replaceIds(obj, iframeEl, keys) {\n return this.replace(this.crossOriginIframeMirror, obj, iframeEl, keys);\n }\n replaceStyleIds(obj, iframeEl, keys) {\n return this.replace(this.crossOriginIframeStyleMirror, obj, iframeEl, keys);\n }\n replaceIdOnNode(node, iframeEl) {\n this.replaceIds(node, iframeEl, ['id', 'rootId']);\n if ('childNodes' in node) {\n node.childNodes.forEach((child) => {\n this.replaceIdOnNode(child, iframeEl);\n });\n }\n }\n patchRootIdOnNode(node, rootId) {\n if (node.type !== NodeType$1.Document && !node.rootId)\n node.rootId = rootId;\n if ('childNodes' in node) {\n node.childNodes.forEach((child) => {\n this.patchRootIdOnNode(child, rootId);\n });\n }\n }\n}\n\nclass ShadowDomManagerNoop {\n init() {\n }\n addShadowRoot() {\n }\n observeAttachShadow() {\n }\n reset() {\n }\n}\nclass ShadowDomManager {\n constructor(options) {\n this.shadowDoms = new WeakSet();\n this.restoreHandlers = [];\n this.mutationCb = options.mutationCb;\n this.scrollCb = options.scrollCb;\n this.bypassOptions = options.bypassOptions;\n this.mirror = options.mirror;\n this.init();\n }\n init() {\n this.reset();\n this.patchAttachShadow(Element, document);\n }\n addShadowRoot(shadowRoot, doc) {\n if (!isNativeShadowDom(shadowRoot))\n return;\n if (this.shadowDoms.has(shadowRoot))\n return;\n this.shadowDoms.add(shadowRoot);\n const observer = initMutationObserver({\n ...this.bypassOptions,\n doc,\n mutationCb: this.mutationCb,\n mirror: this.mirror,\n shadowDomManager: this,\n }, shadowRoot);\n this.restoreHandlers.push(() => observer.disconnect());\n this.restoreHandlers.push(initScrollObserver({\n ...this.bypassOptions,\n scrollCb: this.scrollCb,\n doc: shadowRoot,\n mirror: this.mirror,\n }));\n setTimeout(() => {\n if (shadowRoot.adoptedStyleSheets &&\n shadowRoot.adoptedStyleSheets.length > 0)\n this.bypassOptions.stylesheetManager.adoptStyleSheets(shadowRoot.adoptedStyleSheets, this.mirror.getId(shadowRoot.host));\n this.restoreHandlers.push(initAdoptedStyleSheetObserver({\n mirror: this.mirror,\n stylesheetManager: this.bypassOptions.stylesheetManager,\n }, shadowRoot));\n }, 0);\n }\n observeAttachShadow(iframeElement) {\n if (!iframeElement.contentWindow || !iframeElement.contentDocument)\n return;\n this.patchAttachShadow(iframeElement.contentWindow.Element, iframeElement.contentDocument);\n }\n patchAttachShadow(element, doc) {\n const manager = this;\n this.restoreHandlers.push(patch(element.prototype, 'attachShadow', function (original) {\n return function (option) {\n const shadowRoot = original.call(this, option);\n if (this.shadowRoot && inDom(this))\n manager.addShadowRoot(this.shadowRoot, doc);\n return shadowRoot;\n };\n }));\n }\n reset() {\n this.restoreHandlers.forEach((handler) => {\n try {\n handler();\n }\n catch (e) {\n }\n });\n this.restoreHandlers = [];\n this.shadowDoms = new WeakSet();\n }\n}\n\nclass CanvasManagerNoop {\n reset() {\n }\n freeze() {\n }\n unfreeze() {\n }\n lock() {\n }\n unlock() {\n }\n}\n\nclass StylesheetManager {\n constructor(options) {\n this.trackedLinkElements = new WeakSet();\n this.styleMirror = new StyleSheetMirror();\n this.mutationCb = options.mutationCb;\n this.adoptedStyleSheetCb = options.adoptedStyleSheetCb;\n }\n attachLinkElement(linkEl, childSn) {\n if ('_cssText' in childSn.attributes)\n this.mutationCb({\n adds: [],\n removes: [],\n texts: [],\n attributes: [\n {\n id: childSn.id,\n attributes: childSn\n .attributes,\n },\n ],\n });\n this.trackLinkElement(linkEl);\n }\n trackLinkElement(linkEl) {\n if (this.trackedLinkElements.has(linkEl))\n return;\n this.trackedLinkElements.add(linkEl);\n this.trackStylesheetInLinkElement(linkEl);\n }\n adoptStyleSheets(sheets, hostId) {\n if (sheets.length === 0)\n return;\n const adoptedStyleSheetData = {\n id: hostId,\n styleIds: [],\n };\n const styles = [];\n for (const sheet of sheets) {\n let styleId;\n if (!this.styleMirror.has(sheet)) {\n styleId = this.styleMirror.add(sheet);\n styles.push({\n styleId,\n rules: Array.from(sheet.rules || CSSRule, (r, index) => ({\n rule: stringifyRule(r),\n index,\n })),\n });\n }\n else\n styleId = this.styleMirror.getId(sheet);\n adoptedStyleSheetData.styleIds.push(styleId);\n }\n if (styles.length > 0)\n adoptedStyleSheetData.styles = styles;\n this.adoptedStyleSheetCb(adoptedStyleSheetData);\n }\n reset() {\n this.styleMirror.reset();\n this.trackedLinkElements = new WeakSet();\n }\n trackStylesheetInLinkElement(linkEl) {\n }\n}\n\nclass ProcessedNodeManager {\n constructor() {\n this.nodeMap = new WeakMap();\n this.loop = true;\n this.periodicallyClear();\n }\n periodicallyClear() {\n onRequestAnimationFrame(() => {\n this.clear();\n if (this.loop)\n this.periodicallyClear();\n });\n }\n inOtherBuffer(node, thisBuffer) {\n const buffers = this.nodeMap.get(node);\n return (buffers && Array.from(buffers).some((buffer) => buffer !== thisBuffer));\n }\n add(node, buffer) {\n this.nodeMap.set(node, (this.nodeMap.get(node) || new Set()).add(buffer));\n }\n clear() {\n this.nodeMap = new WeakMap();\n }\n destroy() {\n this.loop = false;\n }\n}\n\nfunction wrapEvent(e) {\n const eWithTime = e;\n eWithTime.timestamp = nowTimestamp();\n return eWithTime;\n}\nlet _wrappedEmit;\nlet _takeFullSnapshot;\nconst mirror = createMirror();\nfunction record(options = {}) {\n const { emit, checkoutEveryNms, checkoutEveryNth, blockClass = 'rr-block', blockSelector = null, unblockSelector = null, ignoreClass = 'rr-ignore', ignoreSelector = null, maskAllText = false, maskTextClass = 'rr-mask', unmaskTextClass = null, maskTextSelector = null, unmaskTextSelector = null, inlineStylesheet = true, maskAllInputs, maskInputOptions: _maskInputOptions, slimDOMOptions: _slimDOMOptions, maskAttributeFn, maskInputFn, maskTextFn, packFn, sampling = {}, dataURLOptions = {}, mousemoveWait, recordCanvas = false, recordCrossOriginIframes = false, recordAfter = options.recordAfter === 'DOMContentLoaded'\n ? options.recordAfter\n : 'load', userTriggeredOnInput = false, collectFonts = false, inlineImages = false, plugins, keepIframeSrcFn = () => false, ignoreCSSAttributes = new Set([]), errorHandler, onMutation, getCanvasManager, } = options;\n registerErrorHandler(errorHandler);\n const inEmittingFrame = recordCrossOriginIframes\n ? window.parent === window\n : true;\n let passEmitsToParent = false;\n if (!inEmittingFrame) {\n try {\n if (window.parent.document) {\n passEmitsToParent = false;\n }\n }\n catch (e) {\n passEmitsToParent = true;\n }\n }\n if (inEmittingFrame && !emit) {\n throw new Error('emit function is required');\n }\n if (mousemoveWait !== undefined && sampling.mousemove === undefined) {\n sampling.mousemove = mousemoveWait;\n }\n mirror.reset();\n const maskInputOptions = maskAllInputs === true\n ? {\n color: true,\n date: true,\n 'datetime-local': true,\n email: true,\n month: true,\n number: true,\n range: true,\n search: true,\n tel: true,\n text: true,\n time: true,\n url: true,\n week: true,\n textarea: true,\n select: true,\n radio: true,\n checkbox: true,\n }\n : _maskInputOptions !== undefined\n ? _maskInputOptions\n : {};\n const slimDOMOptions = _slimDOMOptions === true || _slimDOMOptions === 'all'\n ? {\n script: true,\n comment: true,\n headFavicon: true,\n headWhitespace: true,\n headMetaSocial: true,\n headMetaRobots: true,\n headMetaHttpEquiv: true,\n headMetaVerification: true,\n headMetaAuthorship: _slimDOMOptions === 'all',\n headMetaDescKeywords: _slimDOMOptions === 'all',\n }\n : _slimDOMOptions\n ? _slimDOMOptions\n : {};\n polyfill();\n let lastFullSnapshotEvent;\n let incrementalSnapshotCount = 0;\n const eventProcessor = (e) => {\n for (const plugin of plugins || []) {\n if (plugin.eventProcessor) {\n e = plugin.eventProcessor(e);\n }\n }\n if (packFn &&\n !passEmitsToParent) {\n e = packFn(e);\n }\n return e;\n };\n const wrappedEmit = (e, isCheckout) => {\n if (_optionalChain([mutationBuffers, 'access', _ => _[0], 'optionalAccess', _2 => _2.isFrozen, 'call', _3 => _3()]) &&\n e.type !== EventType.FullSnapshot &&\n !(e.type === EventType.IncrementalSnapshot &&\n e.data.source === IncrementalSource.Mutation)) {\n mutationBuffers.forEach((buf) => buf.unfreeze());\n }\n if (inEmittingFrame) {\n _optionalChain([emit, 'optionalCall', _4 => _4(eventProcessor(e), isCheckout)]);\n }\n else if (passEmitsToParent) {\n const message = {\n type: 'rrweb',\n event: eventProcessor(e),\n origin: window.location.origin,\n isCheckout,\n };\n window.parent.postMessage(message, '*');\n }\n if (e.type === EventType.FullSnapshot) {\n lastFullSnapshotEvent = e;\n incrementalSnapshotCount = 0;\n }\n else if (e.type === EventType.IncrementalSnapshot) {\n if (e.data.source === IncrementalSource.Mutation &&\n e.data.isAttachIframe) {\n return;\n }\n incrementalSnapshotCount++;\n const exceedCount = checkoutEveryNth && incrementalSnapshotCount >= checkoutEveryNth;\n const exceedTime = checkoutEveryNms &&\n e.timestamp - lastFullSnapshotEvent.timestamp > checkoutEveryNms;\n if (exceedCount || exceedTime) {\n takeFullSnapshot(true);\n }\n }\n };\n _wrappedEmit = wrappedEmit;\n const wrappedMutationEmit = (m) => {\n wrappedEmit(wrapEvent({\n type: EventType.IncrementalSnapshot,\n data: {\n source: IncrementalSource.Mutation,\n ...m,\n },\n }));\n };\n const wrappedScrollEmit = (p) => wrappedEmit(wrapEvent({\n type: EventType.IncrementalSnapshot,\n data: {\n source: IncrementalSource.Scroll,\n ...p,\n },\n }));\n const wrappedCanvasMutationEmit = (p) => wrappedEmit(wrapEvent({\n type: EventType.IncrementalSnapshot,\n data: {\n source: IncrementalSource.CanvasMutation,\n ...p,\n },\n }));\n const wrappedAdoptedStyleSheetEmit = (a) => wrappedEmit(wrapEvent({\n type: EventType.IncrementalSnapshot,\n data: {\n source: IncrementalSource.AdoptedStyleSheet,\n ...a,\n },\n }));\n const stylesheetManager = new StylesheetManager({\n mutationCb: wrappedMutationEmit,\n adoptedStyleSheetCb: wrappedAdoptedStyleSheetEmit,\n });\n const iframeManager = typeof __RRWEB_EXCLUDE_IFRAME__ === 'boolean' && __RRWEB_EXCLUDE_IFRAME__\n ? new IframeManagerNoop()\n : new IframeManager({\n mirror,\n mutationCb: wrappedMutationEmit,\n stylesheetManager: stylesheetManager,\n recordCrossOriginIframes,\n wrappedEmit,\n });\n for (const plugin of plugins || []) {\n if (plugin.getMirror)\n plugin.getMirror({\n nodeMirror: mirror,\n crossOriginIframeMirror: iframeManager.crossOriginIframeMirror,\n crossOriginIframeStyleMirror: iframeManager.crossOriginIframeStyleMirror,\n });\n }\n const processedNodeManager = new ProcessedNodeManager();\n const canvasManager = _getCanvasManager(getCanvasManager, {\n recordCanvas,\n blockClass,\n blockSelector,\n unblockSelector,\n sampling: sampling['canvas'],\n dataURLOptions,\n });\n const shadowDomManager = typeof __RRWEB_EXCLUDE_SHADOW_DOM__ === 'boolean' &&\n __RRWEB_EXCLUDE_SHADOW_DOM__\n ? new ShadowDomManagerNoop()\n : new ShadowDomManager({\n mutationCb: wrappedMutationEmit,\n scrollCb: wrappedScrollEmit,\n bypassOptions: {\n onMutation,\n blockClass,\n blockSelector,\n unblockSelector,\n maskAllText,\n maskTextClass,\n unmaskTextClass,\n maskTextSelector,\n unmaskTextSelector,\n inlineStylesheet,\n maskInputOptions,\n dataURLOptions,\n maskAttributeFn,\n maskTextFn,\n maskInputFn,\n recordCanvas,\n inlineImages,\n sampling,\n slimDOMOptions,\n iframeManager,\n stylesheetManager,\n canvasManager,\n keepIframeSrcFn,\n processedNodeManager,\n },\n mirror,\n });\n const takeFullSnapshot = (isCheckout = false) => {\n wrappedEmit(wrapEvent({\n type: EventType.Meta,\n data: {\n href: window.location.href,\n width: getWindowWidth(),\n height: getWindowHeight(),\n },\n }), isCheckout);\n stylesheetManager.reset();\n shadowDomManager.init();\n mutationBuffers.forEach((buf) => buf.lock());\n const node = snapshot(document, {\n mirror,\n blockClass,\n blockSelector,\n unblockSelector,\n maskAllText,\n maskTextClass,\n unmaskTextClass,\n maskTextSelector,\n unmaskTextSelector,\n inlineStylesheet,\n maskAllInputs: maskInputOptions,\n maskAttributeFn,\n maskInputFn,\n maskTextFn,\n slimDOM: slimDOMOptions,\n dataURLOptions,\n recordCanvas,\n inlineImages,\n onSerialize: (n) => {\n if (isSerializedIframe(n, mirror)) {\n iframeManager.addIframe(n);\n }\n if (isSerializedStylesheet(n, mirror)) {\n stylesheetManager.trackLinkElement(n);\n }\n if (hasShadowRoot(n)) {\n shadowDomManager.addShadowRoot(n.shadowRoot, document);\n }\n },\n onIframeLoad: (iframe, childSn) => {\n iframeManager.attachIframe(iframe, childSn);\n shadowDomManager.observeAttachShadow(iframe);\n },\n onStylesheetLoad: (linkEl, childSn) => {\n stylesheetManager.attachLinkElement(linkEl, childSn);\n },\n keepIframeSrcFn,\n });\n if (!node) {\n return console.warn('Failed to snapshot the document');\n }\n wrappedEmit(wrapEvent({\n type: EventType.FullSnapshot,\n data: {\n node,\n initialOffset: getWindowScroll(window),\n },\n }));\n mutationBuffers.forEach((buf) => buf.unlock());\n if (document.adoptedStyleSheets && document.adoptedStyleSheets.length > 0)\n stylesheetManager.adoptStyleSheets(document.adoptedStyleSheets, mirror.getId(document));\n };\n _takeFullSnapshot = takeFullSnapshot;\n try {\n const handlers = [];\n const observe = (doc) => {\n return callbackWrapper(initObservers)({\n onMutation,\n mutationCb: wrappedMutationEmit,\n mousemoveCb: (positions, source) => wrappedEmit(wrapEvent({\n type: EventType.IncrementalSnapshot,\n data: {\n source,\n positions,\n },\n })),\n mouseInteractionCb: (d) => wrappedEmit(wrapEvent({\n type: EventType.IncrementalSnapshot,\n data: {\n source: IncrementalSource.MouseInteraction,\n ...d,\n },\n })),\n scrollCb: wrappedScrollEmit,\n viewportResizeCb: (d) => wrappedEmit(wrapEvent({\n type: EventType.IncrementalSnapshot,\n data: {\n source: IncrementalSource.ViewportResize,\n ...d,\n },\n })),\n inputCb: (v) => wrappedEmit(wrapEvent({\n type: EventType.IncrementalSnapshot,\n data: {\n source: IncrementalSource.Input,\n ...v,\n },\n })),\n mediaInteractionCb: (p) => wrappedEmit(wrapEvent({\n type: EventType.IncrementalSnapshot,\n data: {\n source: IncrementalSource.MediaInteraction,\n ...p,\n },\n })),\n styleSheetRuleCb: (r) => wrappedEmit(wrapEvent({\n type: EventType.IncrementalSnapshot,\n data: {\n source: IncrementalSource.StyleSheetRule,\n ...r,\n },\n })),\n styleDeclarationCb: (r) => wrappedEmit(wrapEvent({\n type: EventType.IncrementalSnapshot,\n data: {\n source: IncrementalSource.StyleDeclaration,\n ...r,\n },\n })),\n canvasMutationCb: wrappedCanvasMutationEmit,\n fontCb: (p) => wrappedEmit(wrapEvent({\n type: EventType.IncrementalSnapshot,\n data: {\n source: IncrementalSource.Font,\n ...p,\n },\n })),\n selectionCb: (p) => {\n wrappedEmit(wrapEvent({\n type: EventType.IncrementalSnapshot,\n data: {\n source: IncrementalSource.Selection,\n ...p,\n },\n }));\n },\n customElementCb: (c) => {\n wrappedEmit(wrapEvent({\n type: EventType.IncrementalSnapshot,\n data: {\n source: IncrementalSource.CustomElement,\n ...c,\n },\n }));\n },\n blockClass,\n ignoreClass,\n ignoreSelector,\n maskAllText,\n maskTextClass,\n unmaskTextClass,\n maskTextSelector,\n unmaskTextSelector,\n maskInputOptions,\n inlineStylesheet,\n sampling,\n recordCanvas,\n inlineImages,\n userTriggeredOnInput,\n collectFonts,\n doc,\n maskAttributeFn,\n maskInputFn,\n maskTextFn,\n keepIframeSrcFn,\n blockSelector,\n unblockSelector,\n slimDOMOptions,\n dataURLOptions,\n mirror,\n iframeManager,\n stylesheetManager,\n shadowDomManager,\n processedNodeManager,\n canvasManager,\n ignoreCSSAttributes,\n plugins: _optionalChain([plugins\n, 'optionalAccess', _5 => _5.filter, 'call', _6 => _6((p) => p.observer)\n, 'optionalAccess', _7 => _7.map, 'call', _8 => _8((p) => ({\n observer: p.observer,\n options: p.options,\n callback: (payload) => wrappedEmit(wrapEvent({\n type: EventType.Plugin,\n data: {\n plugin: p.name,\n payload,\n },\n })),\n }))]) || [],\n }, {});\n };\n iframeManager.addLoadListener((iframeEl) => {\n try {\n handlers.push(observe(iframeEl.contentDocument));\n }\n catch (error) {\n console.warn(error);\n }\n });\n const init = () => {\n takeFullSnapshot();\n handlers.push(observe(document));\n };\n if (document.readyState === 'interactive' ||\n document.readyState === 'complete') {\n init();\n }\n else {\n handlers.push(on('DOMContentLoaded', () => {\n wrappedEmit(wrapEvent({\n type: EventType.DomContentLoaded,\n data: {},\n }));\n if (recordAfter === 'DOMContentLoaded')\n init();\n }));\n handlers.push(on('load', () => {\n wrappedEmit(wrapEvent({\n type: EventType.Load,\n data: {},\n }));\n if (recordAfter === 'load')\n init();\n }, window));\n }\n return () => {\n handlers.forEach((h) => h());\n processedNodeManager.destroy();\n _takeFullSnapshot = undefined;\n unregisterErrorHandler();\n };\n }\n catch (error) {\n console.warn(error);\n }\n}\nfunction takeFullSnapshot(isCheckout) {\n if (!_takeFullSnapshot) {\n throw new Error('please take full snapshot after start recording');\n }\n _takeFullSnapshot(isCheckout);\n}\nfunction wrappedEmit(e) {\n if (!_wrappedEmit) {\n return;\n }\n _wrappedEmit(e);\n}\nrecord.mirror = mirror;\nrecord.takeFullSnapshot = takeFullSnapshot;\nfunction _getCanvasManager(getCanvasManagerFn, options) {\n return getCanvasManagerFn\n ? getCanvasManagerFn({\n ...options,\n mirror,\n win: window,\n mutationCb: (p) => wrappedEmit(wrapEvent({\n type: EventType.IncrementalSnapshot,\n data: {\n source: IncrementalSource.CanvasMutation,\n ...p,\n },\n })),\n })\n : new CanvasManagerNoop();\n}\n\nconst ReplayEventTypeIncrementalSnapshot = 3;\nconst ReplayEventTypeCustom = 5;\n\n/**\n * Converts a timestamp to ms, if it was in s, or keeps it as ms.\n */\nfunction timestampToMs(timestamp) {\n const isMs = timestamp > 9999999999;\n return isMs ? timestamp : timestamp * 1000;\n}\n\n/**\n * Converts a timestamp to s, if it was in ms, or keeps it as s.\n */\nfunction timestampToS(timestamp) {\n const isMs = timestamp > 9999999999;\n return isMs ? timestamp / 1000 : timestamp;\n}\n\n/**\n * Add a breadcrumb event to replay.\n */\nfunction addBreadcrumbEvent(replay, breadcrumb) {\n if (breadcrumb.category === 'sentry.transaction') {\n return;\n }\n\n if (['ui.click', 'ui.input'].includes(breadcrumb.category )) {\n replay.triggerUserActivity();\n } else {\n replay.checkAndHandleExpiredSession();\n }\n\n replay.addUpdate(() => {\n // This should never reject\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n replay.throttledAddEvent({\n type: EventType.Custom,\n // TODO: We were converting from ms to seconds for breadcrumbs, spans,\n // but maybe we should just keep them as milliseconds\n timestamp: (breadcrumb.timestamp || 0) * 1000,\n data: {\n tag: 'breadcrumb',\n // normalize to max. 10 depth and 1_000 properties per object\n payload: normalize(breadcrumb, 10, 1000),\n },\n });\n\n // Do not flush after console log messages\n return breadcrumb.category === 'console';\n });\n}\n\nconst INTERACTIVE_SELECTOR = 'button,a';\n\n/** Get the closest interactive parent element, or else return the given element. */\nfunction getClosestInteractive(element) {\n const closestInteractive = element.closest(INTERACTIVE_SELECTOR);\n return closestInteractive || element;\n}\n\n/**\n * For clicks, we check if the target is inside of a button or link\n * If so, we use this as the target instead\n * This is useful because if you click on the image in ,\n * The target will be the image, not the button, which we don't want here\n */\nfunction getClickTargetNode(event) {\n const target = getTargetNode(event);\n\n if (!target || !(target instanceof Element)) {\n return target;\n }\n\n return getClosestInteractive(target);\n}\n\n/** Get the event target node. */\nfunction getTargetNode(event) {\n if (isEventWithTarget(event)) {\n return event.target ;\n }\n\n return event;\n}\n\nfunction isEventWithTarget(event) {\n return typeof event === 'object' && !!event && 'target' in event;\n}\n\nlet handlers;\n\n/**\n * Register a handler to be called when `window.open()` is called.\n * Returns a cleanup function.\n */\nfunction onWindowOpen(cb) {\n // Ensure to only register this once\n if (!handlers) {\n handlers = [];\n monkeyPatchWindowOpen();\n }\n\n handlers.push(cb);\n\n return () => {\n const pos = handlers ? handlers.indexOf(cb) : -1;\n if (pos > -1) {\n (handlers ).splice(pos, 1);\n }\n };\n}\n\nfunction monkeyPatchWindowOpen() {\n fill(WINDOW, 'open', function (originalWindowOpen) {\n return function (...args) {\n if (handlers) {\n try {\n handlers.forEach(handler => handler());\n } catch (e) {\n // ignore errors in here\n }\n }\n\n return originalWindowOpen.apply(WINDOW, args);\n };\n });\n}\n\n/** Handle a click. */\nfunction handleClick(clickDetector, clickBreadcrumb, node) {\n clickDetector.handleClick(clickBreadcrumb, node);\n}\n\n/** A click detector class that can be used to detect slow or rage clicks on elements. */\nclass ClickDetector {\n // protected for testing\n\n constructor(\n replay,\n slowClickConfig,\n // Just for easier testing\n _addBreadcrumbEvent = addBreadcrumbEvent,\n ) {\n this._lastMutation = 0;\n this._lastScroll = 0;\n this._clicks = [];\n\n // We want everything in s, but options are in ms\n this._timeout = slowClickConfig.timeout / 1000;\n this._threshold = slowClickConfig.threshold / 1000;\n this._scollTimeout = slowClickConfig.scrollTimeout / 1000;\n this._replay = replay;\n this._ignoreSelector = slowClickConfig.ignoreSelector;\n this._addBreadcrumbEvent = _addBreadcrumbEvent;\n }\n\n /** Register click detection handlers on mutation or scroll. */\n addListeners() {\n const cleanupWindowOpen = onWindowOpen(() => {\n // Treat window.open as mutation\n this._lastMutation = nowInSeconds();\n });\n\n this._teardown = () => {\n cleanupWindowOpen();\n\n this._clicks = [];\n this._lastMutation = 0;\n this._lastScroll = 0;\n };\n }\n\n /** Clean up listeners. */\n removeListeners() {\n if (this._teardown) {\n this._teardown();\n }\n\n if (this._checkClickTimeout) {\n clearTimeout(this._checkClickTimeout);\n }\n }\n\n /** @inheritDoc */\n handleClick(breadcrumb, node) {\n if (ignoreElement(node, this._ignoreSelector) || !isClickBreadcrumb(breadcrumb)) {\n return;\n }\n\n const newClick = {\n timestamp: timestampToS(breadcrumb.timestamp),\n clickBreadcrumb: breadcrumb,\n // Set this to 0 so we know it originates from the click breadcrumb\n clickCount: 0,\n node,\n };\n\n // If there was a click in the last 1s on the same element, ignore it - only keep a single reference per second\n if (\n this._clicks.some(click => click.node === newClick.node && Math.abs(click.timestamp - newClick.timestamp) < 1)\n ) {\n return;\n }\n\n this._clicks.push(newClick);\n\n // If this is the first new click, set a timeout to check for multi clicks\n if (this._clicks.length === 1) {\n this._scheduleCheckClicks();\n }\n }\n\n /** @inheritDoc */\n registerMutation(timestamp = Date.now()) {\n this._lastMutation = timestampToS(timestamp);\n }\n\n /** @inheritDoc */\n registerScroll(timestamp = Date.now()) {\n this._lastScroll = timestampToS(timestamp);\n }\n\n /** @inheritDoc */\n registerClick(element) {\n const node = getClosestInteractive(element);\n this._handleMultiClick(node );\n }\n\n /** Count multiple clicks on elements. */\n _handleMultiClick(node) {\n this._getClicks(node).forEach(click => {\n click.clickCount++;\n });\n }\n\n /** Get all pending clicks for a given node. */\n _getClicks(node) {\n return this._clicks.filter(click => click.node === node);\n }\n\n /** Check the clicks that happened. */\n _checkClicks() {\n const timedOutClicks = [];\n\n const now = nowInSeconds();\n\n this._clicks.forEach(click => {\n if (!click.mutationAfter && this._lastMutation) {\n click.mutationAfter = click.timestamp <= this._lastMutation ? this._lastMutation - click.timestamp : undefined;\n }\n if (!click.scrollAfter && this._lastScroll) {\n click.scrollAfter = click.timestamp <= this._lastScroll ? this._lastScroll - click.timestamp : undefined;\n }\n\n // All of these are in seconds!\n if (click.timestamp + this._timeout <= now) {\n timedOutClicks.push(click);\n }\n });\n\n // Remove \"old\" clicks\n for (const click of timedOutClicks) {\n const pos = this._clicks.indexOf(click);\n\n if (pos > -1) {\n this._generateBreadcrumbs(click);\n this._clicks.splice(pos, 1);\n }\n }\n\n // Trigger new check, unless no clicks left\n if (this._clicks.length) {\n this._scheduleCheckClicks();\n }\n }\n\n /** Generate matching breadcrumb(s) for the click. */\n _generateBreadcrumbs(click) {\n const replay = this._replay;\n const hadScroll = click.scrollAfter && click.scrollAfter <= this._scollTimeout;\n const hadMutation = click.mutationAfter && click.mutationAfter <= this._threshold;\n\n const isSlowClick = !hadScroll && !hadMutation;\n const { clickCount, clickBreadcrumb } = click;\n\n // Slow click\n if (isSlowClick) {\n // If `mutationAfter` is set, it means a mutation happened after the threshold, but before the timeout\n // If not, it means we just timed out without scroll & mutation\n const timeAfterClickMs = Math.min(click.mutationAfter || this._timeout, this._timeout) * 1000;\n const endReason = timeAfterClickMs < this._timeout * 1000 ? 'mutation' : 'timeout';\n\n const breadcrumb = {\n type: 'default',\n message: clickBreadcrumb.message,\n timestamp: clickBreadcrumb.timestamp,\n category: 'ui.slowClickDetected',\n data: {\n ...clickBreadcrumb.data,\n url: WINDOW.location.href,\n route: replay.getCurrentRoute(),\n timeAfterClickMs,\n endReason,\n // If clickCount === 0, it means multiClick was not correctly captured here\n // - we still want to send 1 in this case\n clickCount: clickCount || 1,\n },\n };\n\n this._addBreadcrumbEvent(replay, breadcrumb);\n return;\n }\n\n // Multi click\n if (clickCount > 1) {\n const breadcrumb = {\n type: 'default',\n message: clickBreadcrumb.message,\n timestamp: clickBreadcrumb.timestamp,\n category: 'ui.multiClick',\n data: {\n ...clickBreadcrumb.data,\n url: WINDOW.location.href,\n route: replay.getCurrentRoute(),\n clickCount,\n metric: true,\n },\n };\n\n this._addBreadcrumbEvent(replay, breadcrumb);\n }\n }\n\n /** Schedule to check current clicks. */\n _scheduleCheckClicks() {\n if (this._checkClickTimeout) {\n clearTimeout(this._checkClickTimeout);\n }\n\n this._checkClickTimeout = setTimeout(() => this._checkClicks(), 1000);\n }\n}\n\nconst SLOW_CLICK_TAGS = ['A', 'BUTTON', 'INPUT'];\n\n/** exported for tests only */\nfunction ignoreElement(node, ignoreSelector) {\n if (!SLOW_CLICK_TAGS.includes(node.tagName)) {\n return true;\n }\n\n // If tag, we only want to consider input[type='submit'] & input[type='button']\n if (node.tagName === 'INPUT' && !['submit', 'button'].includes(node.getAttribute('type') || '')) {\n return true;\n }\n\n // If tag, detect special variants that may not lead to an action\n // If target !== _self, we may open the link somewhere else, which would lead to no action\n // Also, when downloading a file, we may not leave the page, but still not trigger an action\n if (\n node.tagName === 'A' &&\n (node.hasAttribute('download') || (node.hasAttribute('target') && node.getAttribute('target') !== '_self'))\n ) {\n return true;\n }\n\n if (ignoreSelector && node.matches(ignoreSelector)) {\n return true;\n }\n\n return false;\n}\n\nfunction isClickBreadcrumb(breadcrumb) {\n return !!(breadcrumb.data && typeof breadcrumb.data.nodeId === 'number' && breadcrumb.timestamp);\n}\n\n// This is good enough for us, and is easier to test/mock than `timestampInSeconds`\nfunction nowInSeconds() {\n return Date.now() / 1000;\n}\n\n/** Update the click detector based on a recording event of rrweb. */\nfunction updateClickDetectorForRecordingEvent(clickDetector, event) {\n try {\n // note: We only consider incremental snapshots here\n // This means that any full snapshot is ignored for mutation detection - the reason is that we simply cannot know if a mutation happened here.\n // E.g. think that we are buffering, an error happens and we take a full snapshot because we switched to session mode -\n // in this scenario, we would not know if a dead click happened because of the error, which is a key dead click scenario.\n // Instead, by ignoring full snapshots, we have the risk that we generate a false positive\n // (if a mutation _did_ happen but was \"swallowed\" by the full snapshot)\n // But this should be more unlikely as we'd generally capture the incremental snapshot right away\n\n if (!isIncrementalEvent(event)) {\n return;\n }\n\n const { source } = event.data;\n if (source === IncrementalSource.Mutation) {\n clickDetector.registerMutation(event.timestamp);\n }\n\n if (source === IncrementalSource.Scroll) {\n clickDetector.registerScroll(event.timestamp);\n }\n\n if (isIncrementalMouseInteraction(event)) {\n const { type, id } = event.data;\n const node = record.mirror.getNode(id);\n\n if (node instanceof HTMLElement && type === MouseInteractions.Click) {\n clickDetector.registerClick(node);\n }\n }\n } catch (e) {\n // ignore errors here, e.g. if accessing something that does not exist\n }\n}\n\nfunction isIncrementalEvent(event) {\n return event.type === ReplayEventTypeIncrementalSnapshot;\n}\n\nfunction isIncrementalMouseInteraction(\n event,\n) {\n return event.data.source === IncrementalSource.MouseInteraction;\n}\n\n/**\n * Create a breadcrumb for a replay.\n */\nfunction createBreadcrumb(\n breadcrumb,\n) {\n return {\n timestamp: Date.now() / 1000,\n type: 'default',\n ...breadcrumb,\n };\n}\n\nvar NodeType;\n(function (NodeType) {\n NodeType[NodeType[\"Document\"] = 0] = \"Document\";\n NodeType[NodeType[\"DocumentType\"] = 1] = \"DocumentType\";\n NodeType[NodeType[\"Element\"] = 2] = \"Element\";\n NodeType[NodeType[\"Text\"] = 3] = \"Text\";\n NodeType[NodeType[\"CDATA\"] = 4] = \"CDATA\";\n NodeType[NodeType[\"Comment\"] = 5] = \"Comment\";\n})(NodeType || (NodeType = {}));\n\n// Note that these are the serialized attributes and not attributes directly on\n// the DOM Node. Attributes we are interested in:\nconst ATTRIBUTES_TO_RECORD = new Set([\n 'id',\n 'class',\n 'aria-label',\n 'role',\n 'name',\n 'alt',\n 'title',\n 'data-test-id',\n 'data-testid',\n 'disabled',\n 'aria-disabled',\n 'data-sentry-component',\n]);\n\n/**\n * Inclusion list of attributes that we want to record from the DOM element\n */\nfunction getAttributesToRecord(attributes) {\n const obj = {};\n for (const key in attributes) {\n if (ATTRIBUTES_TO_RECORD.has(key)) {\n let normalizedKey = key;\n\n if (key === 'data-testid' || key === 'data-test-id') {\n normalizedKey = 'testId';\n }\n\n obj[normalizedKey] = attributes[key];\n }\n }\n\n return obj;\n}\n\nconst handleDomListener = (\n replay,\n) => {\n return (handlerData) => {\n if (!replay.isEnabled()) {\n return;\n }\n\n const result = handleDom(handlerData);\n\n if (!result) {\n return;\n }\n\n const isClick = handlerData.name === 'click';\n const event = isClick ? (handlerData.event ) : undefined;\n // Ignore clicks if ctrl/alt/meta/shift keys are held down as they alter behavior of clicks (e.g. open in new tab)\n if (\n isClick &&\n replay.clickDetector &&\n event &&\n event.target &&\n !event.altKey &&\n !event.metaKey &&\n !event.ctrlKey &&\n !event.shiftKey\n ) {\n handleClick(\n replay.clickDetector,\n result ,\n getClickTargetNode(handlerData.event ) ,\n );\n }\n\n addBreadcrumbEvent(replay, result);\n };\n};\n\n/** Get the base DOM breadcrumb. */\nfunction getBaseDomBreadcrumb(target, message) {\n const nodeId = record.mirror.getId(target);\n const node = nodeId && record.mirror.getNode(nodeId);\n const meta = node && record.mirror.getMeta(node);\n const element = meta && isElement(meta) ? meta : null;\n\n return {\n message,\n data: element\n ? {\n nodeId,\n node: {\n id: nodeId,\n tagName: element.tagName,\n textContent: Array.from(element.childNodes)\n .map((node) => node.type === NodeType.Text && node.textContent)\n .filter(Boolean) // filter out empty values\n .map(text => (text ).trim())\n .join(''),\n attributes: getAttributesToRecord(element.attributes),\n },\n }\n : {},\n };\n}\n\n/**\n * An event handler to react to DOM events.\n * Exported for tests.\n */\nfunction handleDom(handlerData) {\n const { target, message } = getDomTarget(handlerData);\n\n return createBreadcrumb({\n category: `ui.${handlerData.name}`,\n ...getBaseDomBreadcrumb(target, message),\n });\n}\n\nfunction getDomTarget(handlerData) {\n const isClick = handlerData.name === 'click';\n\n let message;\n let target = null;\n\n // Accessing event.target can throw (see getsentry/raven-js#838, #768)\n try {\n target = isClick ? getClickTargetNode(handlerData.event ) : getTargetNode(handlerData.event );\n message = htmlTreeAsString(target, { maxStringLength: 200 }) || '';\n } catch (e) {\n message = '';\n }\n\n return { target, message };\n}\n\nfunction isElement(node) {\n return node.type === NodeType.Element;\n}\n\n/** Handle keyboard events & create breadcrumbs. */\nfunction handleKeyboardEvent(replay, event) {\n if (!replay.isEnabled()) {\n return;\n }\n\n // Update user activity, but do not restart recording as it can create\n // noisy/low-value replays (e.g. user comes back from idle, hits alt-tab, new\n // session with a single \"keydown\" breadcrumb is created)\n replay.updateUserActivity();\n\n const breadcrumb = getKeyboardBreadcrumb(event);\n\n if (!breadcrumb) {\n return;\n }\n\n addBreadcrumbEvent(replay, breadcrumb);\n}\n\n/** exported only for tests */\nfunction getKeyboardBreadcrumb(event) {\n const { metaKey, shiftKey, ctrlKey, altKey, key, target } = event;\n\n // never capture for input fields\n if (!target || isInputElement(target ) || !key) {\n return null;\n }\n\n // Note: We do not consider shift here, as that means \"uppercase\"\n const hasModifierKey = metaKey || ctrlKey || altKey;\n const isCharacterKey = key.length === 1; // other keys like Escape, Tab, etc have a longer length\n\n // Do not capture breadcrumb if only a word key is pressed\n // This could leak e.g. user input\n if (!hasModifierKey && isCharacterKey) {\n return null;\n }\n\n const message = htmlTreeAsString(target, { maxStringLength: 200 }) || '';\n const baseBreadcrumb = getBaseDomBreadcrumb(target , message);\n\n return createBreadcrumb({\n category: 'ui.keyDown',\n message,\n data: {\n ...baseBreadcrumb.data,\n metaKey,\n shiftKey,\n ctrlKey,\n altKey,\n key,\n },\n });\n}\n\nfunction isInputElement(target) {\n return target.tagName === 'INPUT' || target.tagName === 'TEXTAREA' || target.isContentEditable;\n}\n\n// Map entryType -> function to normalize data for event\nconst ENTRY_TYPES\n\n = {\n // @ts-expect-error TODO: entry type does not fit the create* functions entry type\n resource: createResourceEntry,\n paint: createPaintEntry,\n // @ts-expect-error TODO: entry type does not fit the create* functions entry type\n navigation: createNavigationEntry,\n};\n\n/**\n * Create replay performance entries from the browser performance entries.\n */\nfunction createPerformanceEntries(\n entries,\n) {\n return entries.map(createPerformanceEntry).filter(Boolean) ;\n}\n\nfunction createPerformanceEntry(entry) {\n if (!ENTRY_TYPES[entry.entryType]) {\n return null;\n }\n\n return ENTRY_TYPES[entry.entryType](entry);\n}\n\nfunction getAbsoluteTime(time) {\n // browserPerformanceTimeOrigin can be undefined if `performance` or\n // `performance.now` doesn't exist, but this is already checked by this integration\n return ((browserPerformanceTimeOrigin || WINDOW.performance.timeOrigin) + time) / 1000;\n}\n\nfunction createPaintEntry(entry) {\n const { duration, entryType, name, startTime } = entry;\n\n const start = getAbsoluteTime(startTime);\n return {\n type: entryType,\n name,\n start,\n end: start + duration,\n data: undefined,\n };\n}\n\nfunction createNavigationEntry(entry) {\n const {\n entryType,\n name,\n decodedBodySize,\n duration,\n domComplete,\n encodedBodySize,\n domContentLoadedEventStart,\n domContentLoadedEventEnd,\n domInteractive,\n loadEventStart,\n loadEventEnd,\n redirectCount,\n startTime,\n transferSize,\n type,\n } = entry;\n\n // Ignore entries with no duration, they do not seem to be useful and cause dupes\n if (duration === 0) {\n return null;\n }\n\n return {\n type: `${entryType}.${type}`,\n start: getAbsoluteTime(startTime),\n end: getAbsoluteTime(domComplete),\n name,\n data: {\n size: transferSize,\n decodedBodySize,\n encodedBodySize,\n duration,\n domInteractive,\n domContentLoadedEventStart,\n domContentLoadedEventEnd,\n loadEventStart,\n loadEventEnd,\n domComplete,\n redirectCount,\n },\n };\n}\n\nfunction createResourceEntry(\n entry,\n) {\n const {\n entryType,\n initiatorType,\n name,\n responseEnd,\n startTime,\n decodedBodySize,\n encodedBodySize,\n responseStatus,\n transferSize,\n } = entry;\n\n // Core SDK handles these\n if (['fetch', 'xmlhttprequest'].includes(initiatorType)) {\n return null;\n }\n\n return {\n type: `${entryType}.${initiatorType}`,\n start: getAbsoluteTime(startTime),\n end: getAbsoluteTime(responseEnd),\n name,\n data: {\n size: transferSize,\n statusCode: responseStatus,\n decodedBodySize,\n encodedBodySize,\n },\n };\n}\n\n/**\n * Add a LCP event to the replay based on an LCP metric.\n */\nfunction getLargestContentfulPaint(metric\n\n) {\n const entries = metric.entries;\n const lastEntry = entries[entries.length - 1] ;\n const element = lastEntry ? lastEntry.element : undefined;\n\n const value = metric.value;\n\n const end = getAbsoluteTime(value);\n\n const data = {\n type: 'largest-contentful-paint',\n name: 'largest-contentful-paint',\n start: end,\n end,\n data: {\n value,\n size: value,\n nodeId: element ? record.mirror.getId(element) : undefined,\n },\n };\n\n return data;\n}\n\n/**\n * Sets up a PerformanceObserver to listen to all performance entry types.\n * Returns a callback to stop observing.\n */\nfunction setupPerformanceObserver(replay) {\n function addPerformanceEntry(entry) {\n // It is possible for entries to come up multiple times\n if (!replay.performanceEntries.includes(entry)) {\n replay.performanceEntries.push(entry);\n }\n }\n\n function onEntries({ entries }) {\n entries.forEach(addPerformanceEntry);\n }\n\n const clearCallbacks = [];\n\n (['navigation', 'paint', 'resource'] ).forEach(type => {\n clearCallbacks.push(addPerformanceInstrumentationHandler(type, onEntries));\n });\n\n clearCallbacks.push(\n addLcpInstrumentationHandler(({ metric }) => {\n replay.replayPerformanceEntries.push(getLargestContentfulPaint(metric));\n }),\n );\n\n // A callback to cleanup all handlers\n return () => {\n clearCallbacks.forEach(clearCallback => clearCallback());\n };\n}\n\n/**\n * This serves as a build time flag that will be true by default, but false in non-debug builds or if users replace `__SENTRY_DEBUG__` in their generated code.\n *\n * ATTENTION: This constant must never cross package boundaries (i.e. be exported) to guarantee that it can be used for tree shaking.\n */\nconst DEBUG_BUILD = (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__);\n\nconst r = `var t=Uint8Array,n=Uint16Array,r=Int32Array,e=new t([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,0,0,0]),i=new t([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,0,0]),a=new t([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),s=function(t,e){for(var i=new n(31),a=0;a<31;++a)i[a]=e+=1<>1|(21845&c)<<1;v=(61680&(v=(52428&v)>>2|(13107&v)<<2))>>4|(3855&v)<<4,u[c]=((65280&v)>>8|(255&v)<<8)>>1}var d=function(t,r,e){for(var i=t.length,a=0,s=new n(r);a>h]=l}else for(o=new n(i),a=0;a>15-t[a]);return o},g=new t(288);for(c=0;c<144;++c)g[c]=8;for(c=144;c<256;++c)g[c]=9;for(c=256;c<280;++c)g[c]=7;for(c=280;c<288;++c)g[c]=8;var w=new t(32);for(c=0;c<32;++c)w[c]=5;var p=d(g,9,0),y=d(w,5,0),m=function(t){return(t+7)/8|0},b=function(n,r,e){return(null==r||r<0)&&(r=0),(null==e||e>n.length)&&(e=n.length),new t(n.subarray(r,e))},M=[\"unexpected EOF\",\"invalid block type\",\"invalid length/literal\",\"invalid distance\",\"stream finished\",\"no stream handler\",,\"no callback\",\"invalid UTF-8 data\",\"extra field too long\",\"date not in range 1980-2099\",\"filename too long\",\"stream finishing\",\"invalid zip data\"],E=function(t,n,r){var e=new Error(n||M[t]);if(e.code=t,Error.captureStackTrace&&Error.captureStackTrace(e,E),!r)throw e;return e},z=function(t,n,r){r<<=7&n;var e=n/8|0;t[e]|=r,t[e+1]|=r>>8},A=function(t,n,r){r<<=7&n;var e=n/8|0;t[e]|=r,t[e+1]|=r>>8,t[e+2]|=r>>16},_=function(r,e){for(var i=[],a=0;ad&&(d=o[a].s);var g=new n(d+1),w=x(i[c-1],g,0);if(w>e){a=0;var p=0,y=w-e,m=1<e))break;p+=m-(1<>=y;p>0;){var M=o[a].s;g[M]=0&&p;--a){var E=o[a].s;g[E]==e&&(--g[E],++p)}w=e}return{t:new t(g),l:w}},x=function(t,n,r){return-1==t.s?Math.max(x(t.l,n,r+1),x(t.r,n,r+1)):n[t.s]=r},D=function(t){for(var r=t.length;r&&!t[--r];);for(var e=new n(++r),i=0,a=t[0],s=1,o=function(t){e[i++]=t},f=1;f<=r;++f)if(t[f]==a&&f!=r)++s;else{if(!a&&s>2){for(;s>138;s-=138)o(32754);s>2&&(o(s>10?s-11<<5|28690:s-3<<5|12305),s=0)}else if(s>3){for(o(a),--s;s>6;s-=6)o(8304);s>2&&(o(s-3<<5|8208),s=0)}for(;s--;)o(a);s=1,a=t[f]}return{c:e.subarray(0,i),n:r}},T=function(t,n){for(var r=0,e=0;e>8,t[i+2]=255^t[i],t[i+3]=255^t[i+1];for(var a=0;a4&&!H[a[K-1]];--K);var N,P,Q,R,V=v+5<<3,W=T(f,g)+T(h,w)+l,X=T(f,M)+T(h,C)+l+14+3*K+T(q,H)+2*q[16]+3*q[17]+7*q[18];if(c>=0&&V<=W&&V<=X)return k(r,m,t.subarray(c,c+v));if(z(r,m,1+(X15&&(z(r,m,tt[B]>>5&127),m+=tt[B]>>12)}}}else N=p,P=g,Q=y,R=w;for(B=0;B255){A(r,m,N[(nt=rt>>18&31)+257]),m+=P[nt+257],nt>7&&(z(r,m,rt>>23&31),m+=e[nt]);var et=31&rt;A(r,m,Q[et]),m+=R[et],et>3&&(A(r,m,rt>>5&8191),m+=i[et])}else A(r,m,N[rt]),m+=P[rt]}return A(r,m,N[256]),m+P[256]},U=new r([65540,131080,131088,131104,262176,1048704,1048832,2114560,2117632]),F=new t(0),I=function(){for(var t=new Int32Array(256),n=0;n<256;++n){for(var r=n,e=9;--e;)r=(1&r&&-306674912)^r>>>1;t[n]=r}return t}(),S=function(){var t=1,n=0;return{p:function(r){for(var e=t,i=n,a=0|r.length,s=0;s!=a;){for(var o=Math.min(s+2655,a);s>16),i=(65535&i)+15*(i>>16)}t=e,n=i},d:function(){return(255&(t%=65521))<<24|(65280&t)<<8|(255&(n%=65521))<<8|n>>8}}},L=function(a,s,o,f,u){if(!u&&(u={l:1},s.dictionary)){var c=s.dictionary.subarray(-32768),v=new t(c.length+a.length);v.set(c),v.set(a,c.length),a=v,u.w=c.length}return function(a,s,o,f,u,c){var v=c.z||a.length,d=new t(f+v+5*(1+Math.ceil(v/7e3))+u),g=d.subarray(f,d.length-u),w=c.l,p=7&(c.r||0);if(s){p&&(g[0]=c.r>>3);for(var y=U[s-1],M=y>>13,E=8191&y,z=(1<7e3||q>24576)&&(N>423||!w)){p=C(a,g,0,F,I,S,O,q,G,j-G,p),q=L=O=0,G=j;for(var P=0;P<286;++P)I[P]=0;for(P=0;P<30;++P)S[P]=0}var Q=2,R=0,V=E,W=J-K&32767;if(N>2&&H==T(j-W))for(var X=Math.min(M,N)-1,Y=Math.min(32767,j),Z=Math.min(258,N);W<=Y&&--V&&J!=K;){if(a[j+Q]==a[j+Q-W]){for(var $=0;$Q){if(Q=$,R=W,$>X)break;var tt=Math.min(W,$-2),nt=0;for(P=0;Pnt&&(nt=et,K=rt)}}}W+=(J=K)-(K=A[J])&32767}if(R){F[q++]=268435456|h[Q]<<18|l[R];var it=31&h[Q],at=31&l[R];O+=e[it]+i[at],++I[257+it],++S[at],B=j+Q,++L}else F[q++]=a[j],++I[a[j]]}}for(j=Math.max(j,B);j=v&&(g[p/8|0]=w,st=v),p=k(g,p+1,a.subarray(j,st))}c.i=v}return b(d,0,f+m(p)+u)}(a,null==s.level?6:s.level,null==s.mem?Math.ceil(1.5*Math.max(8,Math.min(13,Math.log(a.length)))):12+s.mem,o,f,u)},O=function(t,n,r){for(;r;++n)t[n]=r,r>>>=8},j=function(){function n(n,r){if(\"function\"==typeof n&&(r=n,n={}),this.ondata=r,this.o=n||{},this.s={l:0,i:32768,w:32768,z:32768},this.b=new t(98304),this.o.dictionary){var e=this.o.dictionary.subarray(-32768);this.b.set(e,32768-e.length),this.s.i=32768-e.length}}return n.prototype.p=function(t,n){this.ondata(L(t,this.o,0,0,this.s),n)},n.prototype.push=function(n,r){this.ondata||E(5),this.s.l&&E(4);var e=n.length+this.s.z;if(e>this.b.length){if(e>2*this.b.length-32768){var i=new t(-32768&e);i.set(this.b.subarray(0,this.s.z)),this.b=i}var a=this.b.length-this.s.z;a&&(this.b.set(n.subarray(0,a),this.s.z),this.s.z=this.b.length,this.p(this.b,!1)),this.b.set(this.b.subarray(-32768)),this.b.set(n.subarray(a),32768),this.s.z=n.length-a+32768,this.s.i=32766,this.s.w=32768}else this.b.set(n,this.s.z),this.s.z+=n.length;this.s.l=1&r,(this.s.z>this.s.w+8191||r)&&(this.p(this.b,r||!1),this.s.w=this.s.i,this.s.i-=2)},n}();function q(t,n){n||(n={});var r=function(){var t=-1;return{p:function(n){for(var r=t,e=0;e>>8;t=r},d:function(){return~t}}}(),e=t.length;r.p(t);var i,a=L(t,n,10+((i=n).filename?i.filename.length+1:0),8),s=a.length;return function(t,n){var r=n.filename;if(t[0]=31,t[1]=139,t[2]=8,t[8]=n.level<2?4:9==n.level?2:0,t[9]=3,0!=n.mtime&&O(t,4,Math.floor(new Date(n.mtime||Date.now())/1e3)),r){t[3]=8;for(var e=0;e<=r.length;++e)t[e+10]=r.charCodeAt(e)}}(a,n),O(a,s-8,r.d()),O(a,s-4,e),a}var B=function(){function t(t,n){this.c=S(),this.v=1,j.call(this,t,n)}return t.prototype.push=function(t,n){this.c.p(t),j.prototype.push.call(this,t,n)},t.prototype.p=function(t,n){var r=L(t,this.o,this.v&&(this.o.dictionary?6:2),n&&4,this.s);this.v&&(function(t,n){var r=n.level,e=0==r?0:r<6?1:9==r?3:2;if(t[0]=120,t[1]=e<<6|(n.dictionary&&32),t[1]|=31-(t[0]<<8|t[1])%31,n.dictionary){var i=S();i.p(n.dictionary),O(t,2,i.d())}}(r,this.o),this.v=0),n&&O(r,r.length-4,this.c.d()),this.ondata(r,n)},t}(),G=\"undefined\"!=typeof TextEncoder&&new TextEncoder,H=\"undefined\"!=typeof TextDecoder&&new TextDecoder;try{H.decode(F,{stream:!0})}catch(t){}var J=function(){function t(t){this.ondata=t}return t.prototype.push=function(t,n){this.ondata||E(5),this.d&&E(4),this.ondata(K(t),this.d=n||!1)},t}();function K(n,r){if(r){for(var e=new t(n.length),i=0;i>1)),o=0,f=function(t){s[o++]=t};for(i=0;is.length){var h=new t(o+8+(a-i<<1));h.set(s),s=h}var l=n.charCodeAt(i);l<128||r?f(l):l<2048?(f(192|l>>6),f(128|63&l)):l>55295&&l<57344?(f(240|(l=65536+(1047552&l)|1023&n.charCodeAt(++i))>>18),f(128|l>>12&63),f(128|l>>6&63),f(128|63&l)):(f(224|l>>12),f(128|l>>6&63),f(128|63&l))}return b(s,0,o)}const N=new class{constructor(){this._init()}clear(){this._init()}addEvent(t){if(!t)throw new Error(\"Adding invalid event\");const n=this._hasEvents?\",\":\"\";this.stream.push(n+t),this._hasEvents=!0}finish(){this.stream.push(\"]\",!0);const t=function(t){let n=0;for(let r=0,e=t.length;r{this._deflatedData.push(t)},this.stream=new J(((t,n)=>{this.deflate.push(t,n)})),this.stream.push(\"[\")}},P={clear:()=>{N.clear()},addEvent:t=>N.addEvent(t),finish:()=>N.finish(),compress:t=>function(t){return q(K(t))}(t)};addEventListener(\"message\",(function(t){const n=t.data.method,r=t.data.id,e=t.data.arg;if(n in P&&\"function\"==typeof P[n])try{const t=P[n](e);postMessage({id:r,method:n,success:!0,response:t})}catch(t){postMessage({id:r,method:n,success:!1,response:t.message}),console.error(t)}})),postMessage({id:void 0,method:\"init\",success:!0,response:void 0});`;\n\nfunction e(){const e=new Blob([r]);return URL.createObjectURL(e)}\n\n/**\n * Log a message in debug mode, and add a breadcrumb when _experiment.traceInternals is enabled.\n */\nfunction logInfo(message, shouldAddBreadcrumb) {\n if (!DEBUG_BUILD) {\n return;\n }\n\n logger.info(message);\n\n if (shouldAddBreadcrumb) {\n addLogBreadcrumb(message);\n }\n}\n\n/**\n * Log a message, and add a breadcrumb in the next tick.\n * This is necessary when the breadcrumb may be added before the replay is initialized.\n */\nfunction logInfoNextTick(message, shouldAddBreadcrumb) {\n if (!DEBUG_BUILD) {\n return;\n }\n\n logger.info(message);\n\n if (shouldAddBreadcrumb) {\n // Wait a tick here to avoid race conditions for some initial logs\n // which may be added before replay is initialized\n setTimeout(() => {\n addLogBreadcrumb(message);\n }, 0);\n }\n}\n\nfunction addLogBreadcrumb(message) {\n addBreadcrumb(\n {\n category: 'console',\n data: {\n logger: 'replay',\n },\n level: 'info',\n message,\n },\n { level: 'info' },\n );\n}\n\n/** This error indicates that the event buffer size exceeded the limit.. */\nclass EventBufferSizeExceededError extends Error {\n constructor() {\n super(`Event buffer exceeded maximum size of ${REPLAY_MAX_EVENT_BUFFER_SIZE}.`);\n }\n}\n\n/**\n * A basic event buffer that does not do any compression.\n * Used as fallback if the compression worker cannot be loaded or is disabled.\n */\nclass EventBufferArray {\n /** All the events that are buffered to be sent. */\n\n /** @inheritdoc */\n\n constructor() {\n this.events = [];\n this._totalSize = 0;\n this.hasCheckout = false;\n }\n\n /** @inheritdoc */\n get hasEvents() {\n return this.events.length > 0;\n }\n\n /** @inheritdoc */\n get type() {\n return 'sync';\n }\n\n /** @inheritdoc */\n destroy() {\n this.events = [];\n }\n\n /** @inheritdoc */\n async addEvent(event) {\n const eventSize = JSON.stringify(event).length;\n this._totalSize += eventSize;\n if (this._totalSize > REPLAY_MAX_EVENT_BUFFER_SIZE) {\n throw new EventBufferSizeExceededError();\n }\n\n this.events.push(event);\n }\n\n /** @inheritdoc */\n finish() {\n return new Promise(resolve => {\n // Make a copy of the events array reference and immediately clear the\n // events member so that we do not lose new events while uploading\n // attachment.\n const eventsRet = this.events;\n this.clear();\n resolve(JSON.stringify(eventsRet));\n });\n }\n\n /** @inheritdoc */\n clear() {\n this.events = [];\n this._totalSize = 0;\n this.hasCheckout = false;\n }\n\n /** @inheritdoc */\n getEarliestTimestamp() {\n const timestamp = this.events.map(event => event.timestamp).sort()[0];\n\n if (!timestamp) {\n return null;\n }\n\n return timestampToMs(timestamp);\n }\n}\n\n/**\n * Event buffer that uses a web worker to compress events.\n * Exported only for testing.\n */\nclass WorkerHandler {\n\n constructor(worker) {\n this._worker = worker;\n this._id = 0;\n }\n\n /**\n * Ensure the worker is ready (or not).\n * This will either resolve when the worker is ready, or reject if an error occured.\n */\n ensureReady() {\n // Ensure we only check once\n if (this._ensureReadyPromise) {\n return this._ensureReadyPromise;\n }\n\n this._ensureReadyPromise = new Promise((resolve, reject) => {\n this._worker.addEventListener(\n 'message',\n ({ data }) => {\n if ((data ).success) {\n resolve();\n } else {\n reject();\n }\n },\n { once: true },\n );\n\n this._worker.addEventListener(\n 'error',\n error => {\n reject(error);\n },\n { once: true },\n );\n });\n\n return this._ensureReadyPromise;\n }\n\n /**\n * Destroy the worker.\n */\n destroy() {\n logInfo('[Replay] Destroying compression worker');\n this._worker.terminate();\n }\n\n /**\n * Post message to worker and wait for response before resolving promise.\n */\n postMessage(method, arg) {\n const id = this._getAndIncrementId();\n\n return new Promise((resolve, reject) => {\n const listener = ({ data }) => {\n const response = data ;\n if (response.method !== method) {\n return;\n }\n\n // There can be multiple listeners for a single method, the id ensures\n // that the response matches the caller.\n if (response.id !== id) {\n return;\n }\n\n // At this point, we'll always want to remove listener regardless of result status\n this._worker.removeEventListener('message', listener);\n\n if (!response.success) {\n // TODO: Do some error handling, not sure what\n DEBUG_BUILD && logger.error('[Replay]', response.response);\n\n reject(new Error('Error in compression worker'));\n return;\n }\n\n resolve(response.response );\n };\n\n // Note: we can't use `once` option because it's possible it needs to\n // listen to multiple messages\n this._worker.addEventListener('message', listener);\n this._worker.postMessage({ id, method, arg });\n });\n }\n\n /** Get the current ID and increment it for the next call. */\n _getAndIncrementId() {\n return this._id++;\n }\n}\n\n/**\n * Event buffer that uses a web worker to compress events.\n * Exported only for testing.\n */\nclass EventBufferCompressionWorker {\n /** @inheritdoc */\n\n constructor(worker) {\n this._worker = new WorkerHandler(worker);\n this._earliestTimestamp = null;\n this._totalSize = 0;\n this.hasCheckout = false;\n }\n\n /** @inheritdoc */\n get hasEvents() {\n return !!this._earliestTimestamp;\n }\n\n /** @inheritdoc */\n get type() {\n return 'worker';\n }\n\n /**\n * Ensure the worker is ready (or not).\n * This will either resolve when the worker is ready, or reject if an error occured.\n */\n ensureReady() {\n return this._worker.ensureReady();\n }\n\n /**\n * Destroy the event buffer.\n */\n destroy() {\n this._worker.destroy();\n }\n\n /**\n * Add an event to the event buffer.\n *\n * Returns true if event was successfuly received and processed by worker.\n */\n addEvent(event) {\n const timestamp = timestampToMs(event.timestamp);\n if (!this._earliestTimestamp || timestamp < this._earliestTimestamp) {\n this._earliestTimestamp = timestamp;\n }\n\n const data = JSON.stringify(event);\n this._totalSize += data.length;\n\n if (this._totalSize > REPLAY_MAX_EVENT_BUFFER_SIZE) {\n return Promise.reject(new EventBufferSizeExceededError());\n }\n\n return this._sendEventToWorker(data);\n }\n\n /**\n * Finish the event buffer and return the compressed data.\n */\n finish() {\n return this._finishRequest();\n }\n\n /** @inheritdoc */\n clear() {\n this._earliestTimestamp = null;\n this._totalSize = 0;\n this.hasCheckout = false;\n\n // We do not wait on this, as we assume the order of messages is consistent for the worker\n this._worker.postMessage('clear').then(null, e => {\n DEBUG_BUILD && logger.warn('[Replay] Sending \"clear\" message to worker failed', e);\n });\n }\n\n /** @inheritdoc */\n getEarliestTimestamp() {\n return this._earliestTimestamp;\n }\n\n /**\n * Send the event to the worker.\n */\n _sendEventToWorker(data) {\n return this._worker.postMessage('addEvent', data);\n }\n\n /**\n * Finish the request and return the compressed data from the worker.\n */\n async _finishRequest() {\n const response = await this._worker.postMessage('finish');\n\n this._earliestTimestamp = null;\n this._totalSize = 0;\n\n return response;\n }\n}\n\n/**\n * This proxy will try to use the compression worker, and fall back to use the simple buffer if an error occurs there.\n * This can happen e.g. if the worker cannot be loaded.\n * Exported only for testing.\n */\nclass EventBufferProxy {\n\n constructor(worker) {\n this._fallback = new EventBufferArray();\n this._compression = new EventBufferCompressionWorker(worker);\n this._used = this._fallback;\n\n this._ensureWorkerIsLoadedPromise = this._ensureWorkerIsLoaded();\n }\n\n /** @inheritdoc */\n get type() {\n return this._used.type;\n }\n\n /** @inheritDoc */\n get hasEvents() {\n return this._used.hasEvents;\n }\n\n /** @inheritdoc */\n get hasCheckout() {\n return this._used.hasCheckout;\n }\n /** @inheritdoc */\n set hasCheckout(value) {\n this._used.hasCheckout = value;\n }\n\n /** @inheritDoc */\n destroy() {\n this._fallback.destroy();\n this._compression.destroy();\n }\n\n /** @inheritdoc */\n clear() {\n return this._used.clear();\n }\n\n /** @inheritdoc */\n getEarliestTimestamp() {\n return this._used.getEarliestTimestamp();\n }\n\n /**\n * Add an event to the event buffer.\n *\n * Returns true if event was successfully added.\n */\n addEvent(event) {\n return this._used.addEvent(event);\n }\n\n /** @inheritDoc */\n async finish() {\n // Ensure the worker is loaded, so the sent event is compressed\n await this.ensureWorkerIsLoaded();\n\n return this._used.finish();\n }\n\n /** Ensure the worker has loaded. */\n ensureWorkerIsLoaded() {\n return this._ensureWorkerIsLoadedPromise;\n }\n\n /** Actually check if the worker has been loaded. */\n async _ensureWorkerIsLoaded() {\n try {\n await this._compression.ensureReady();\n } catch (error) {\n // If the worker fails to load, we fall back to the simple buffer.\n // Nothing more to do from our side here\n logInfo('[Replay] Failed to load the compression worker, falling back to simple buffer');\n return;\n }\n\n // Now we need to switch over the array buffer to the compression worker\n await this._switchToCompressionWorker();\n }\n\n /** Switch the used buffer to the compression worker. */\n async _switchToCompressionWorker() {\n const { events, hasCheckout } = this._fallback;\n\n const addEventPromises = [];\n for (const event of events) {\n addEventPromises.push(this._compression.addEvent(event));\n }\n\n this._compression.hasCheckout = hasCheckout;\n\n // We switch over to the new buffer immediately - any further events will be added\n // after the previously buffered ones\n this._used = this._compression;\n\n // Wait for original events to be re-added before resolving\n try {\n await Promise.all(addEventPromises);\n } catch (error) {\n DEBUG_BUILD && logger.warn('[Replay] Failed to add events when switching buffers.', error);\n }\n }\n}\n\n/**\n * Create an event buffer for replays.\n */\nfunction createEventBuffer({\n useCompression,\n workerUrl: customWorkerUrl,\n}) {\n if (\n useCompression &&\n // eslint-disable-next-line no-restricted-globals\n window.Worker\n ) {\n const worker = _loadWorker(customWorkerUrl);\n\n if (worker) {\n return worker;\n }\n }\n\n logInfo('[Replay] Using simple buffer');\n return new EventBufferArray();\n}\n\nfunction _loadWorker(customWorkerUrl) {\n try {\n const workerUrl = customWorkerUrl || _getWorkerUrl();\n\n if (!workerUrl) {\n return;\n }\n\n logInfo(`[Replay] Using compression worker${customWorkerUrl ? ` from ${customWorkerUrl}` : ''}`);\n const worker = new Worker(workerUrl);\n return new EventBufferProxy(worker);\n } catch (error) {\n logInfo('[Replay] Failed to create compression worker');\n // Fall back to use simple event buffer array\n }\n}\n\nfunction _getWorkerUrl() {\n if (typeof __SENTRY_EXCLUDE_REPLAY_WORKER__ === 'undefined' || !__SENTRY_EXCLUDE_REPLAY_WORKER__) {\n return e();\n }\n\n return '';\n}\n\n/** If sessionStorage is available. */\nfunction hasSessionStorage() {\n try {\n // This can throw, e.g. when being accessed in a sandboxed iframe\n return 'sessionStorage' in WINDOW && !!WINDOW.sessionStorage;\n } catch (e) {\n return false;\n }\n}\n\n/**\n * Removes the session from Session Storage and unsets session in replay instance\n */\nfunction clearSession(replay) {\n deleteSession();\n replay.session = undefined;\n}\n\n/**\n * Deletes a session from storage\n */\nfunction deleteSession() {\n if (!hasSessionStorage()) {\n return;\n }\n\n try {\n WINDOW.sessionStorage.removeItem(REPLAY_SESSION_KEY);\n } catch (e) {\n // Ignore potential SecurityError exceptions\n }\n}\n\n/**\n * Given a sample rate, returns true if replay should be sampled.\n *\n * 1.0 = 100% sampling\n * 0.0 = 0% sampling\n */\nfunction isSampled(sampleRate) {\n if (sampleRate === undefined) {\n return false;\n }\n\n // Math.random() returns a number in range of 0 to 1 (inclusive of 0, but not 1)\n return Math.random() < sampleRate;\n}\n\n/**\n * Get a session with defaults & applied sampling.\n */\nfunction makeSession(session) {\n const now = Date.now();\n const id = session.id || uuid4();\n // Note that this means we cannot set a started/lastActivity of `0`, but this should not be relevant outside of tests.\n const started = session.started || now;\n const lastActivity = session.lastActivity || now;\n const segmentId = session.segmentId || 0;\n const sampled = session.sampled;\n const previousSessionId = session.previousSessionId;\n\n return {\n id,\n started,\n lastActivity,\n segmentId,\n sampled,\n previousSessionId,\n };\n}\n\n/**\n * Save a session to session storage.\n */\nfunction saveSession(session) {\n if (!hasSessionStorage()) {\n return;\n }\n\n try {\n WINDOW.sessionStorage.setItem(REPLAY_SESSION_KEY, JSON.stringify(session));\n } catch (e) {\n // Ignore potential SecurityError exceptions\n }\n}\n\n/**\n * Get the sampled status for a session based on sample rates & current sampled status.\n */\nfunction getSessionSampleType(sessionSampleRate, allowBuffering) {\n return isSampled(sessionSampleRate) ? 'session' : allowBuffering ? 'buffer' : false;\n}\n\n/**\n * Create a new session, which in its current implementation is a Sentry event\n * that all replays will be saved to as attachments. Currently, we only expect\n * one of these Sentry events per \"replay session\".\n */\nfunction createSession(\n { sessionSampleRate, allowBuffering, stickySession = false },\n { previousSessionId } = {},\n) {\n const sampled = getSessionSampleType(sessionSampleRate, allowBuffering);\n const session = makeSession({\n sampled,\n previousSessionId,\n });\n\n if (stickySession) {\n saveSession(session);\n }\n\n return session;\n}\n\n/**\n * Fetches a session from storage\n */\nfunction fetchSession(traceInternals) {\n if (!hasSessionStorage()) {\n return null;\n }\n\n try {\n // This can throw if cookies are disabled\n const sessionStringFromStorage = WINDOW.sessionStorage.getItem(REPLAY_SESSION_KEY);\n\n if (!sessionStringFromStorage) {\n return null;\n }\n\n const sessionObj = JSON.parse(sessionStringFromStorage) ;\n\n logInfoNextTick('[Replay] Loading existing session', traceInternals);\n\n return makeSession(sessionObj);\n } catch (e) {\n return null;\n }\n}\n\n/**\n * Given an initial timestamp and an expiry duration, checks to see if current\n * time should be considered as expired.\n */\nfunction isExpired(\n initialTime,\n expiry,\n targetTime = +new Date(),\n) {\n // Always expired if < 0\n if (initialTime === null || expiry === undefined || expiry < 0) {\n return true;\n }\n\n // Never expires if == 0\n if (expiry === 0) {\n return false;\n }\n\n return initialTime + expiry <= targetTime;\n}\n\n/**\n * Checks to see if session is expired\n */\nfunction isSessionExpired(\n session,\n {\n maxReplayDuration,\n sessionIdleExpire,\n targetTime = Date.now(),\n },\n) {\n return (\n // First, check that maximum session length has not been exceeded\n isExpired(session.started, maxReplayDuration, targetTime) ||\n // check that the idle timeout has not been exceeded (i.e. user has\n // performed an action within the last `sessionIdleExpire` ms)\n isExpired(session.lastActivity, sessionIdleExpire, targetTime)\n );\n}\n\n/** If the session should be refreshed or not. */\nfunction shouldRefreshSession(\n session,\n { sessionIdleExpire, maxReplayDuration },\n) {\n // If not expired, all good, just keep the session\n if (!isSessionExpired(session, { sessionIdleExpire, maxReplayDuration })) {\n return false;\n }\n\n // If we are buffering & haven't ever flushed yet, always continue\n if (session.sampled === 'buffer' && session.segmentId === 0) {\n return false;\n }\n\n return true;\n}\n\n/**\n * Get or create a session, when initializing the replay.\n * Returns a session that may be unsampled.\n */\nfunction loadOrCreateSession(\n {\n traceInternals,\n sessionIdleExpire,\n maxReplayDuration,\n previousSessionId,\n }\n\n,\n sessionOptions,\n) {\n const existingSession = sessionOptions.stickySession && fetchSession(traceInternals);\n\n // No session exists yet, just create a new one\n if (!existingSession) {\n logInfoNextTick('[Replay] Creating new session', traceInternals);\n return createSession(sessionOptions, { previousSessionId });\n }\n\n if (!shouldRefreshSession(existingSession, { sessionIdleExpire, maxReplayDuration })) {\n return existingSession;\n }\n\n logInfoNextTick('[Replay] Session in sessionStorage is expired, creating new one...');\n return createSession(sessionOptions, { previousSessionId: existingSession.id });\n}\n\nfunction isCustomEvent(event) {\n return event.type === EventType.Custom;\n}\n\n/**\n * Add an event to the event buffer.\n * In contrast to `addEvent`, this does not return a promise & does not wait for the adding of the event to succeed/fail.\n * Instead this returns `true` if we tried to add the event, else false.\n * It returns `false` e.g. if we are paused, disabled, or out of the max replay duration.\n *\n * `isCheckout` is true if this is either the very first event, or an event triggered by `checkoutEveryNms`.\n */\nfunction addEventSync(replay, event, isCheckout) {\n if (!shouldAddEvent(replay, event)) {\n return false;\n }\n\n // This should never reject\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n _addEvent(replay, event, isCheckout);\n\n return true;\n}\n\n/**\n * Add an event to the event buffer.\n * Resolves to `null` if no event was added, else to `void`.\n *\n * `isCheckout` is true if this is either the very first event, or an event triggered by `checkoutEveryNms`.\n */\nfunction addEvent(\n replay,\n event,\n isCheckout,\n) {\n if (!shouldAddEvent(replay, event)) {\n return Promise.resolve(null);\n }\n\n return _addEvent(replay, event, isCheckout);\n}\n\nasync function _addEvent(\n replay,\n event,\n isCheckout,\n) {\n if (!replay.eventBuffer) {\n return null;\n }\n\n try {\n if (isCheckout && replay.recordingMode === 'buffer') {\n replay.eventBuffer.clear();\n }\n\n if (isCheckout) {\n replay.eventBuffer.hasCheckout = true;\n }\n\n const replayOptions = replay.getOptions();\n\n const eventAfterPossibleCallback = maybeApplyCallback(event, replayOptions.beforeAddRecordingEvent);\n\n if (!eventAfterPossibleCallback) {\n return;\n }\n\n return await replay.eventBuffer.addEvent(eventAfterPossibleCallback);\n } catch (error) {\n const reason = error && error instanceof EventBufferSizeExceededError ? 'addEventSizeExceeded' : 'addEvent';\n\n DEBUG_BUILD && logger.error(error);\n await replay.stop({ reason });\n\n const client = getClient();\n\n if (client) {\n client.recordDroppedEvent('internal_sdk_error', 'replay');\n }\n }\n}\n\n/** Exported only for tests. */\nfunction shouldAddEvent(replay, event) {\n if (!replay.eventBuffer || replay.isPaused() || !replay.isEnabled()) {\n return false;\n }\n\n const timestampInMs = timestampToMs(event.timestamp);\n\n // Throw out events that happen more than 5 minutes ago. This can happen if\n // page has been left open and idle for a long period of time and user\n // comes back to trigger a new session. The performance entries rely on\n // `performance.timeOrigin`, which is when the page first opened.\n if (timestampInMs + replay.timeouts.sessionIdlePause < Date.now()) {\n return false;\n }\n\n // Throw out events that are +60min from the initial timestamp\n if (timestampInMs > replay.getContext().initialTimestamp + replay.getOptions().maxReplayDuration) {\n logInfo(\n `[Replay] Skipping event with timestamp ${timestampInMs} because it is after maxReplayDuration`,\n replay.getOptions()._experiments.traceInternals,\n );\n return false;\n }\n\n return true;\n}\n\nfunction maybeApplyCallback(\n event,\n callback,\n) {\n try {\n if (typeof callback === 'function' && isCustomEvent(event)) {\n return callback(event);\n }\n } catch (error) {\n DEBUG_BUILD &&\n logger.error('[Replay] An error occured in the `beforeAddRecordingEvent` callback, skipping the event...', error);\n return null;\n }\n\n return event;\n}\n\n/** If the event is an error event */\nfunction isErrorEvent(event) {\n return !event.type;\n}\n\n/** If the event is a transaction event */\nfunction isTransactionEvent(event) {\n return event.type === 'transaction';\n}\n\n/** If the event is an replay event */\nfunction isReplayEvent(event) {\n return event.type === 'replay_event';\n}\n\n/** If the event is a feedback event */\nfunction isFeedbackEvent(event) {\n return event.type === 'feedback';\n}\n\n/**\n * Returns a listener to be added to `client.on('afterSendErrorEvent, listener)`.\n */\nfunction handleAfterSendEvent(replay) {\n // Custom transports may still be returning `Promise`, which means we cannot expect the status code to be available there\n // TODO (v8): remove this check as it will no longer be necessary\n const enforceStatusCode = isBaseTransportSend();\n\n return (event, sendResponse) => {\n if (!replay.isEnabled() || (!isErrorEvent(event) && !isTransactionEvent(event))) {\n return;\n }\n\n const statusCode = sendResponse && sendResponse.statusCode;\n\n // We only want to do stuff on successful error sending, otherwise you get error replays without errors attached\n // If not using the base transport, we allow `undefined` response (as a custom transport may not implement this correctly yet)\n // If we do use the base transport, we skip if we encountered an non-OK status code\n if (enforceStatusCode && (!statusCode || statusCode < 200 || statusCode >= 300)) {\n return;\n }\n\n if (isTransactionEvent(event)) {\n handleTransactionEvent(replay, event);\n return;\n }\n\n handleErrorEvent(replay, event);\n };\n}\n\nfunction handleTransactionEvent(replay, event) {\n const replayContext = replay.getContext();\n\n // Collect traceIds in _context regardless of `recordingMode`\n // In error mode, _context gets cleared on every checkout\n // We limit to max. 100 transactions linked\n if (event.contexts && event.contexts.trace && event.contexts.trace.trace_id && replayContext.traceIds.size < 100) {\n replayContext.traceIds.add(event.contexts.trace.trace_id );\n }\n}\n\nfunction handleErrorEvent(replay, event) {\n const replayContext = replay.getContext();\n\n // Add error to list of errorIds of replay. This is ok to do even if not\n // sampled because context will get reset at next checkout.\n // XXX: There is also a race condition where it's possible to capture an\n // error to Sentry before Replay SDK has loaded, but response returns after\n // it was loaded, and this gets called.\n // We limit to max. 100 errors linked\n if (event.event_id && replayContext.errorIds.size < 100) {\n replayContext.errorIds.add(event.event_id);\n }\n\n // If error event is tagged with replay id it means it was sampled (when in buffer mode)\n // Need to be very careful that this does not cause an infinite loop\n if (replay.recordingMode !== 'buffer' || !event.tags || !event.tags.replayId) {\n return;\n }\n\n const { beforeErrorSampling } = replay.getOptions();\n if (typeof beforeErrorSampling === 'function' && !beforeErrorSampling(event)) {\n return;\n }\n\n setTimeout(() => {\n // Capture current event buffer as new replay\n // This should never reject\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n replay.sendBufferedReplayOrFlush();\n });\n}\n\nfunction isBaseTransportSend() {\n const client = getClient();\n if (!client) {\n return false;\n }\n\n const transport = client.getTransport();\n if (!transport) {\n return false;\n }\n\n return (\n (transport.send ).__sentry__baseTransport__ || false\n );\n}\n\n/**\n * Returns a listener to be added to `client.on('afterSendErrorEvent, listener)`.\n */\nfunction handleBeforeSendEvent(replay) {\n return (event) => {\n if (!replay.isEnabled() || !isErrorEvent(event)) {\n return;\n }\n\n handleHydrationError(replay, event);\n };\n}\n\nfunction handleHydrationError(replay, event) {\n const exceptionValue = event.exception && event.exception.values && event.exception.values[0].value;\n if (typeof exceptionValue !== 'string') {\n return;\n }\n\n if (\n // Only matches errors in production builds of react-dom\n // Example https://reactjs.org/docs/error-decoder.html?invariant=423\n exceptionValue.match(/reactjs\\.org\\/docs\\/error-decoder\\.html\\?invariant=(418|419|422|423|425)/) ||\n // Development builds of react-dom\n // Error 1: Hydration failed because the initial UI does not match what was rendered on the server.\n // Error 2: Text content does not match server-rendered HTML. Warning: Text content did not match.\n exceptionValue.match(/(does not match server-rendered HTML|Hydration failed because)/i)\n ) {\n const breadcrumb = createBreadcrumb({\n category: 'replay.hydrate-error',\n });\n addBreadcrumbEvent(replay, breadcrumb);\n }\n}\n\n/**\n * Returns true if we think the given event is an error originating inside of rrweb.\n */\nfunction isRrwebError(event, hint) {\n if (event.type || !event.exception || !event.exception.values || !event.exception.values.length) {\n return false;\n }\n\n // @ts-expect-error this may be set by rrweb when it finds errors\n if (hint.originalException && hint.originalException.__rrweb__) {\n return true;\n }\n\n return false;\n}\n\n/**\n * Add a feedback breadcrumb event to replay.\n */\nfunction addFeedbackBreadcrumb(replay, event) {\n replay.triggerUserActivity();\n replay.addUpdate(() => {\n if (!event.timestamp) {\n // Ignore events that don't have timestamps (this shouldn't happen, more of a typing issue)\n // Return true here so that we don't flush\n return true;\n }\n\n // This should never reject\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n replay.throttledAddEvent({\n type: EventType.Custom,\n timestamp: event.timestamp * 1000,\n data: {\n timestamp: event.timestamp,\n tag: 'breadcrumb',\n payload: {\n category: 'sentry.feedback',\n data: {\n feedbackId: event.event_id,\n },\n },\n },\n });\n\n return false;\n });\n}\n\n/**\n * Determine if event should be sampled (only applies in buffer mode).\n * When an event is captured by `hanldleGlobalEvent`, when in buffer mode\n * we determine if we want to sample the error or not.\n */\nfunction shouldSampleForBufferEvent(replay, event) {\n if (replay.recordingMode !== 'buffer') {\n return false;\n }\n\n // ignore this error because otherwise we could loop indefinitely with\n // trying to capture replay and failing\n if (event.message === UNABLE_TO_SEND_REPLAY) {\n return false;\n }\n\n // Require the event to be an error event & to have an exception\n if (!event.exception || event.type) {\n return false;\n }\n\n return isSampled(replay.getOptions().errorSampleRate);\n}\n\n/**\n * Returns a listener to be added to `addEventProcessor(listener)`.\n */\nfunction handleGlobalEventListener(\n replay,\n includeAfterSendEventHandling = false,\n) {\n const afterSendHandler = includeAfterSendEventHandling ? handleAfterSendEvent(replay) : undefined;\n\n return Object.assign(\n (event, hint) => {\n // Do nothing if replay has been disabled\n if (!replay.isEnabled()) {\n return event;\n }\n\n if (isReplayEvent(event)) {\n // Replays have separate set of breadcrumbs, do not include breadcrumbs\n // from core SDK\n delete event.breadcrumbs;\n return event;\n }\n\n // We only want to handle errors, transactions, and feedbacks, nothing else\n if (!isErrorEvent(event) && !isTransactionEvent(event) && !isFeedbackEvent(event)) {\n return event;\n }\n\n // Ensure we do not add replay_id if the session is expired\n const isSessionActive = replay.checkAndHandleExpiredSession();\n if (!isSessionActive) {\n return event;\n }\n\n if (isFeedbackEvent(event)) {\n // This should never reject\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n replay.flush();\n event.contexts.feedback.replay_id = replay.getSessionId();\n // Add a replay breadcrumb for this piece of feedback\n addFeedbackBreadcrumb(replay, event);\n return event;\n }\n\n // Unless `captureExceptions` is enabled, we want to ignore errors coming from rrweb\n // As there can be a bunch of stuff going wrong in internals there, that we don't want to bubble up to users\n if (isRrwebError(event, hint) && !replay.getOptions()._experiments.captureExceptions) {\n DEBUG_BUILD && logger.log('[Replay] Ignoring error from rrweb internals', event);\n return null;\n }\n\n // When in buffer mode, we decide to sample here.\n // Later, in `handleAfterSendEvent`, if the replayId is set, we know that we sampled\n // And convert the buffer session to a full session\n const isErrorEventSampled = shouldSampleForBufferEvent(replay, event);\n\n // Tag errors if it has been sampled in buffer mode, or if it is session mode\n // Only tag transactions if in session mode\n const shouldTagReplayId = isErrorEventSampled || replay.recordingMode === 'session';\n\n if (shouldTagReplayId) {\n event.tags = { ...event.tags, replayId: replay.getSessionId() };\n }\n\n // In cases where a custom client is used that does not support the new hooks (yet),\n // we manually call this hook method here\n if (afterSendHandler) {\n // Pretend the error had a 200 response so we always capture it\n afterSendHandler(event, { statusCode: 200 });\n }\n\n return event;\n },\n { id: 'Replay' },\n );\n}\n\n/**\n * Create a \"span\" for each performance entry.\n */\nfunction createPerformanceSpans(\n replay,\n entries,\n) {\n return entries.map(({ type, start, end, name, data }) => {\n const response = replay.throttledAddEvent({\n type: EventType.Custom,\n timestamp: start,\n data: {\n tag: 'performanceSpan',\n payload: {\n op: type,\n description: name,\n startTimestamp: start,\n endTimestamp: end,\n data,\n },\n },\n });\n\n // If response is a string, it means its either THROTTLED or SKIPPED\n return typeof response === 'string' ? Promise.resolve(null) : response;\n });\n}\n\nfunction handleHistory(handlerData) {\n const { from, to } = handlerData;\n\n const now = Date.now() / 1000;\n\n return {\n type: 'navigation.push',\n start: now,\n end: now,\n name: to,\n data: {\n previous: from,\n },\n };\n}\n\n/**\n * Returns a listener to be added to `addHistoryInstrumentationHandler(listener)`.\n */\nfunction handleHistorySpanListener(replay) {\n return (handlerData) => {\n if (!replay.isEnabled()) {\n return;\n }\n\n const result = handleHistory(handlerData);\n\n if (result === null) {\n return;\n }\n\n // Need to collect visited URLs\n replay.getContext().urls.push(result.name);\n replay.triggerUserActivity();\n\n replay.addUpdate(() => {\n createPerformanceSpans(replay, [result]);\n // Returning false to flush\n return false;\n });\n };\n}\n\n/**\n * Check whether a given request URL should be filtered out. This is so we\n * don't log Sentry ingest requests.\n */\nfunction shouldFilterRequest(replay, url) {\n // If we enabled the `traceInternals` experiment, we want to trace everything\n if (DEBUG_BUILD && replay.getOptions()._experiments.traceInternals) {\n return false;\n }\n\n return isSentryRequestUrl(url, getClient());\n}\n\n/** Add a performance entry breadcrumb */\nfunction addNetworkBreadcrumb(\n replay,\n result,\n) {\n if (!replay.isEnabled()) {\n return;\n }\n\n if (result === null) {\n return;\n }\n\n if (shouldFilterRequest(replay, result.name)) {\n return;\n }\n\n replay.addUpdate(() => {\n createPerformanceSpans(replay, [result]);\n // Returning true will cause `addUpdate` to not flush\n // We do not want network requests to cause a flush. This will prevent\n // recurring/polling requests from keeping the replay session alive.\n return true;\n });\n}\n\n/** only exported for tests */\nfunction handleFetch(handlerData) {\n const { startTimestamp, endTimestamp, fetchData, response } = handlerData;\n\n if (!endTimestamp) {\n return null;\n }\n\n // This is only used as a fallback, so we know the body sizes are never set here\n const { method, url } = fetchData;\n\n return {\n type: 'resource.fetch',\n start: startTimestamp / 1000,\n end: endTimestamp / 1000,\n name: url,\n data: {\n method,\n statusCode: response ? (response ).status : undefined,\n },\n };\n}\n\n/**\n * Returns a listener to be added to `addFetchInstrumentationHandler(listener)`.\n */\nfunction handleFetchSpanListener(replay) {\n return (handlerData) => {\n if (!replay.isEnabled()) {\n return;\n }\n\n const result = handleFetch(handlerData);\n\n addNetworkBreadcrumb(replay, result);\n };\n}\n\n/** only exported for tests */\nfunction handleXhr(handlerData) {\n const { startTimestamp, endTimestamp, xhr } = handlerData;\n\n const sentryXhrData = xhr[SENTRY_XHR_DATA_KEY];\n\n if (!startTimestamp || !endTimestamp || !sentryXhrData) {\n return null;\n }\n\n // This is only used as a fallback, so we know the body sizes are never set here\n const { method, url, status_code: statusCode } = sentryXhrData;\n\n if (url === undefined) {\n return null;\n }\n\n return {\n type: 'resource.xhr',\n name: url,\n start: startTimestamp / 1000,\n end: endTimestamp / 1000,\n data: {\n method,\n statusCode,\n },\n };\n}\n\n/**\n * Returns a listener to be added to `addXhrInstrumentationHandler(listener)`.\n */\nfunction handleXhrSpanListener(replay) {\n return (handlerData) => {\n if (!replay.isEnabled()) {\n return;\n }\n\n const result = handleXhr(handlerData);\n\n addNetworkBreadcrumb(replay, result);\n };\n}\n\n/** Get the size of a body. */\nfunction getBodySize(\n body,\n textEncoder,\n) {\n if (!body) {\n return undefined;\n }\n\n try {\n if (typeof body === 'string') {\n return textEncoder.encode(body).length;\n }\n\n if (body instanceof URLSearchParams) {\n return textEncoder.encode(body.toString()).length;\n }\n\n if (body instanceof FormData) {\n const formDataStr = _serializeFormData(body);\n return textEncoder.encode(formDataStr).length;\n }\n\n if (body instanceof Blob) {\n return body.size;\n }\n\n if (body instanceof ArrayBuffer) {\n return body.byteLength;\n }\n\n // Currently unhandled types: ArrayBufferView, ReadableStream\n } catch (e) {\n // just return undefined\n }\n\n return undefined;\n}\n\n/** Convert a Content-Length header to number/undefined. */\nfunction parseContentLengthHeader(header) {\n if (!header) {\n return undefined;\n }\n\n const size = parseInt(header, 10);\n return isNaN(size) ? undefined : size;\n}\n\n/** Get the string representation of a body. */\nfunction getBodyString(body) {\n try {\n if (typeof body === 'string') {\n return [body];\n }\n\n if (body instanceof URLSearchParams) {\n return [body.toString()];\n }\n\n if (body instanceof FormData) {\n return [_serializeFormData(body)];\n }\n\n if (!body) {\n return [undefined];\n }\n } catch (e2) {\n DEBUG_BUILD && logger.warn('[Replay] Failed to serialize body', body);\n return [undefined, 'BODY_PARSE_ERROR'];\n }\n\n DEBUG_BUILD && logger.info('[Replay] Skipping network body because of body type', body);\n\n return [undefined, 'UNPARSEABLE_BODY_TYPE'];\n}\n\n/** Merge a warning into an existing network request/response. */\nfunction mergeWarning(\n info,\n warning,\n) {\n if (!info) {\n return {\n headers: {},\n size: undefined,\n _meta: {\n warnings: [warning],\n },\n };\n }\n\n const newMeta = { ...info._meta };\n const existingWarnings = newMeta.warnings || [];\n newMeta.warnings = [...existingWarnings, warning];\n\n info._meta = newMeta;\n return info;\n}\n\n/** Convert ReplayNetworkRequestData to a PerformanceEntry. */\nfunction makeNetworkReplayBreadcrumb(\n type,\n data,\n) {\n if (!data) {\n return null;\n }\n\n const { startTimestamp, endTimestamp, url, method, statusCode, request, response } = data;\n\n const result = {\n type,\n start: startTimestamp / 1000,\n end: endTimestamp / 1000,\n name: url,\n data: dropUndefinedKeys({\n method,\n statusCode,\n request,\n response,\n }),\n };\n\n return result;\n}\n\n/** Build the request or response part of a replay network breadcrumb that was skipped. */\nfunction buildSkippedNetworkRequestOrResponse(bodySize) {\n return {\n headers: {},\n size: bodySize,\n _meta: {\n warnings: ['URL_SKIPPED'],\n },\n };\n}\n\n/** Build the request or response part of a replay network breadcrumb. */\nfunction buildNetworkRequestOrResponse(\n headers,\n bodySize,\n body,\n) {\n if (!bodySize && Object.keys(headers).length === 0) {\n return undefined;\n }\n\n if (!bodySize) {\n return {\n headers,\n };\n }\n\n if (!body) {\n return {\n headers,\n size: bodySize,\n };\n }\n\n const info = {\n headers,\n size: bodySize,\n };\n\n const { body: normalizedBody, warnings } = normalizeNetworkBody(body);\n info.body = normalizedBody;\n if (warnings && warnings.length > 0) {\n info._meta = {\n warnings,\n };\n }\n\n return info;\n}\n\n/** Filter a set of headers */\nfunction getAllowedHeaders(headers, allowedHeaders) {\n return Object.keys(headers).reduce((filteredHeaders, key) => {\n const normalizedKey = key.toLowerCase();\n // Avoid putting empty strings into the headers\n if (allowedHeaders.includes(normalizedKey) && headers[key]) {\n filteredHeaders[normalizedKey] = headers[key];\n }\n return filteredHeaders;\n }, {});\n}\n\nfunction _serializeFormData(formData) {\n // This is a bit simplified, but gives us a decent estimate\n // This converts e.g. { name: 'Anne Smith', age: 13 } to 'name=Anne+Smith&age=13'\n // @ts-expect-error passing FormData to URLSearchParams actually works\n return new URLSearchParams(formData).toString();\n}\n\nfunction normalizeNetworkBody(body)\n\n {\n if (!body || typeof body !== 'string') {\n return {\n body,\n };\n }\n\n const exceedsSizeLimit = body.length > NETWORK_BODY_MAX_SIZE;\n const isProbablyJson = _strIsProbablyJson(body);\n\n if (exceedsSizeLimit) {\n const truncatedBody = body.slice(0, NETWORK_BODY_MAX_SIZE);\n\n if (isProbablyJson) {\n return {\n body: truncatedBody,\n warnings: ['MAYBE_JSON_TRUNCATED'],\n };\n }\n\n return {\n body: `${truncatedBody}…`,\n warnings: ['TEXT_TRUNCATED'],\n };\n }\n\n if (isProbablyJson) {\n try {\n const jsonBody = JSON.parse(body);\n return {\n body: jsonBody,\n };\n } catch (e3) {\n // fall back to just send the body as string\n }\n }\n\n return {\n body,\n };\n}\n\nfunction _strIsProbablyJson(str) {\n const first = str[0];\n const last = str[str.length - 1];\n\n // Simple check: If this does not start & end with {} or [], it's not JSON\n return (first === '[' && last === ']') || (first === '{' && last === '}');\n}\n\n/** Match an URL against a list of strings/Regex. */\nfunction urlMatches(url, urls) {\n const fullUrl = getFullUrl(url);\n\n return stringMatchesSomePattern(fullUrl, urls);\n}\n\n/** exported for tests */\nfunction getFullUrl(url, baseURI = WINDOW.document.baseURI) {\n // Short circuit for common cases:\n if (url.startsWith('http://') || url.startsWith('https://') || url.startsWith(WINDOW.location.origin)) {\n return url;\n }\n const fixedUrl = new URL(url, baseURI);\n\n // If these do not match, we are not dealing with a relative URL, so just return it\n if (fixedUrl.origin !== new URL(baseURI).origin) {\n return url;\n }\n\n const fullUrl = fixedUrl.href;\n\n // Remove trailing slashes, if they don't match the original URL\n if (!url.endsWith('/') && fullUrl.endsWith('/')) {\n return fullUrl.slice(0, -1);\n }\n\n return fullUrl;\n}\n\n/**\n * Capture a fetch breadcrumb to a replay.\n * This adds additional data (where approriate).\n */\nasync function captureFetchBreadcrumbToReplay(\n breadcrumb,\n hint,\n options\n\n,\n) {\n try {\n const data = await _prepareFetchData(breadcrumb, hint, options);\n\n // Create a replay performance entry from this breadcrumb\n const result = makeNetworkReplayBreadcrumb('resource.fetch', data);\n addNetworkBreadcrumb(options.replay, result);\n } catch (error) {\n DEBUG_BUILD && logger.error('[Replay] Failed to capture fetch breadcrumb', error);\n }\n}\n\n/**\n * Enrich a breadcrumb with additional data.\n * This has to be sync & mutate the given breadcrumb,\n * as the breadcrumb is afterwards consumed by other handlers.\n */\nfunction enrichFetchBreadcrumb(\n breadcrumb,\n hint,\n options,\n) {\n const { input, response } = hint;\n\n const body = input ? _getFetchRequestArgBody(input) : undefined;\n const reqSize = getBodySize(body, options.textEncoder);\n\n const resSize = response ? parseContentLengthHeader(response.headers.get('content-length')) : undefined;\n\n if (reqSize !== undefined) {\n breadcrumb.data.request_body_size = reqSize;\n }\n if (resSize !== undefined) {\n breadcrumb.data.response_body_size = resSize;\n }\n}\n\nasync function _prepareFetchData(\n breadcrumb,\n hint,\n options\n\n,\n) {\n const now = Date.now();\n const { startTimestamp = now, endTimestamp = now } = hint;\n\n const {\n url,\n method,\n status_code: statusCode = 0,\n request_body_size: requestBodySize,\n response_body_size: responseBodySize,\n } = breadcrumb.data;\n\n const captureDetails =\n urlMatches(url, options.networkDetailAllowUrls) && !urlMatches(url, options.networkDetailDenyUrls);\n\n const request = captureDetails\n ? _getRequestInfo(options, hint.input, requestBodySize)\n : buildSkippedNetworkRequestOrResponse(requestBodySize);\n const response = await _getResponseInfo(captureDetails, options, hint.response, responseBodySize);\n\n return {\n startTimestamp,\n endTimestamp,\n url,\n method,\n statusCode,\n request,\n response,\n };\n}\n\nfunction _getRequestInfo(\n { networkCaptureBodies, networkRequestHeaders },\n input,\n requestBodySize,\n) {\n const headers = input ? getRequestHeaders(input, networkRequestHeaders) : {};\n\n if (!networkCaptureBodies) {\n return buildNetworkRequestOrResponse(headers, requestBodySize, undefined);\n }\n\n // We only want to transmit string or string-like bodies\n const requestBody = _getFetchRequestArgBody(input);\n const [bodyStr, warning] = getBodyString(requestBody);\n const data = buildNetworkRequestOrResponse(headers, requestBodySize, bodyStr);\n\n if (warning) {\n return mergeWarning(data, warning);\n }\n\n return data;\n}\n\n/** Exported only for tests. */\nasync function _getResponseInfo(\n captureDetails,\n {\n networkCaptureBodies,\n textEncoder,\n networkResponseHeaders,\n }\n\n,\n response,\n responseBodySize,\n) {\n if (!captureDetails && responseBodySize !== undefined) {\n return buildSkippedNetworkRequestOrResponse(responseBodySize);\n }\n\n const headers = response ? getAllHeaders(response.headers, networkResponseHeaders) : {};\n\n if (!response || (!networkCaptureBodies && responseBodySize !== undefined)) {\n return buildNetworkRequestOrResponse(headers, responseBodySize, undefined);\n }\n\n const [bodyText, warning] = await _parseFetchResponseBody(response);\n const result = getResponseData(bodyText, {\n networkCaptureBodies,\n textEncoder,\n responseBodySize,\n captureDetails,\n headers,\n });\n\n if (warning) {\n return mergeWarning(result, warning);\n }\n\n return result;\n}\n\nfunction getResponseData(\n bodyText,\n {\n networkCaptureBodies,\n textEncoder,\n responseBodySize,\n captureDetails,\n headers,\n }\n\n,\n) {\n try {\n const size =\n bodyText && bodyText.length && responseBodySize === undefined\n ? getBodySize(bodyText, textEncoder)\n : responseBodySize;\n\n if (!captureDetails) {\n return buildSkippedNetworkRequestOrResponse(size);\n }\n\n if (networkCaptureBodies) {\n return buildNetworkRequestOrResponse(headers, size, bodyText);\n }\n\n return buildNetworkRequestOrResponse(headers, size, undefined);\n } catch (error) {\n DEBUG_BUILD && logger.warn('[Replay] Failed to serialize response body', error);\n // fallback\n return buildNetworkRequestOrResponse(headers, responseBodySize, undefined);\n }\n}\n\nasync function _parseFetchResponseBody(response) {\n const res = _tryCloneResponse(response);\n\n if (!res) {\n return [undefined, 'BODY_PARSE_ERROR'];\n }\n\n try {\n const text = await _tryGetResponseText(res);\n return [text];\n } catch (error) {\n DEBUG_BUILD && logger.warn('[Replay] Failed to get text body from response', error);\n return [undefined, 'BODY_PARSE_ERROR'];\n }\n}\n\nfunction _getFetchRequestArgBody(fetchArgs = []) {\n // We only support getting the body from the fetch options\n if (fetchArgs.length !== 2 || typeof fetchArgs[1] !== 'object') {\n return undefined;\n }\n\n return (fetchArgs[1] ).body;\n}\n\nfunction getAllHeaders(headers, allowedHeaders) {\n const allHeaders = {};\n\n allowedHeaders.forEach(header => {\n if (headers.get(header)) {\n allHeaders[header] = headers.get(header) ;\n }\n });\n\n return allHeaders;\n}\n\nfunction getRequestHeaders(fetchArgs, allowedHeaders) {\n if (fetchArgs.length === 1 && typeof fetchArgs[0] !== 'string') {\n return getHeadersFromOptions(fetchArgs[0] , allowedHeaders);\n }\n\n if (fetchArgs.length === 2) {\n return getHeadersFromOptions(fetchArgs[1] , allowedHeaders);\n }\n\n return {};\n}\n\nfunction getHeadersFromOptions(\n input,\n allowedHeaders,\n) {\n if (!input) {\n return {};\n }\n\n const headers = input.headers;\n\n if (!headers) {\n return {};\n }\n\n if (headers instanceof Headers) {\n return getAllHeaders(headers, allowedHeaders);\n }\n\n // We do not support this, as it is not really documented (anymore?)\n if (Array.isArray(headers)) {\n return {};\n }\n\n return getAllowedHeaders(headers, allowedHeaders);\n}\n\nfunction _tryCloneResponse(response) {\n try {\n // We have to clone this, as the body can only be read once\n return response.clone();\n } catch (error) {\n // this can throw if the response was already consumed before\n DEBUG_BUILD && logger.warn('[Replay] Failed to clone response body', error);\n }\n}\n\n/**\n * Get the response body of a fetch request, or timeout after 500ms.\n * Fetch can return a streaming body, that may not resolve (or not for a long time).\n * If that happens, we rather abort after a short time than keep waiting for this.\n */\nfunction _tryGetResponseText(response) {\n return new Promise((resolve, reject) => {\n const timeout = setTimeout(() => reject(new Error('Timeout while trying to read response body')), 500);\n\n _getResponseText(response)\n .then(\n txt => resolve(txt),\n reason => reject(reason),\n )\n .finally(() => clearTimeout(timeout));\n });\n}\n\nasync function _getResponseText(response) {\n // Force this to be a promise, just to be safe\n // eslint-disable-next-line no-return-await\n return await response.text();\n}\n\n/**\n * Capture an XHR breadcrumb to a replay.\n * This adds additional data (where approriate).\n */\nasync function captureXhrBreadcrumbToReplay(\n breadcrumb,\n hint,\n options,\n) {\n try {\n const data = _prepareXhrData(breadcrumb, hint, options);\n\n // Create a replay performance entry from this breadcrumb\n const result = makeNetworkReplayBreadcrumb('resource.xhr', data);\n addNetworkBreadcrumb(options.replay, result);\n } catch (error) {\n DEBUG_BUILD && logger.error('[Replay] Failed to capture xhr breadcrumb', error);\n }\n}\n\n/**\n * Enrich a breadcrumb with additional data.\n * This has to be sync & mutate the given breadcrumb,\n * as the breadcrumb is afterwards consumed by other handlers.\n */\nfunction enrichXhrBreadcrumb(\n breadcrumb,\n hint,\n options,\n) {\n const { xhr, input } = hint;\n\n if (!xhr) {\n return;\n }\n\n const reqSize = getBodySize(input, options.textEncoder);\n const resSize = xhr.getResponseHeader('content-length')\n ? parseContentLengthHeader(xhr.getResponseHeader('content-length'))\n : _getBodySize(xhr.response, xhr.responseType, options.textEncoder);\n\n if (reqSize !== undefined) {\n breadcrumb.data.request_body_size = reqSize;\n }\n if (resSize !== undefined) {\n breadcrumb.data.response_body_size = resSize;\n }\n}\n\nfunction _prepareXhrData(\n breadcrumb,\n hint,\n options,\n) {\n const now = Date.now();\n const { startTimestamp = now, endTimestamp = now, input, xhr } = hint;\n\n const {\n url,\n method,\n status_code: statusCode = 0,\n request_body_size: requestBodySize,\n response_body_size: responseBodySize,\n } = breadcrumb.data;\n\n if (!url) {\n return null;\n }\n\n if (!xhr || !urlMatches(url, options.networkDetailAllowUrls) || urlMatches(url, options.networkDetailDenyUrls)) {\n const request = buildSkippedNetworkRequestOrResponse(requestBodySize);\n const response = buildSkippedNetworkRequestOrResponse(responseBodySize);\n return {\n startTimestamp,\n endTimestamp,\n url,\n method,\n statusCode,\n request,\n response,\n };\n }\n\n const xhrInfo = xhr[SENTRY_XHR_DATA_KEY];\n const networkRequestHeaders = xhrInfo\n ? getAllowedHeaders(xhrInfo.request_headers, options.networkRequestHeaders)\n : {};\n const networkResponseHeaders = getAllowedHeaders(getResponseHeaders(xhr), options.networkResponseHeaders);\n\n const [requestBody, requestWarning] = options.networkCaptureBodies ? getBodyString(input) : [undefined];\n const [responseBody, responseWarning] = options.networkCaptureBodies ? _getXhrResponseBody(xhr) : [undefined];\n\n const request = buildNetworkRequestOrResponse(networkRequestHeaders, requestBodySize, requestBody);\n const response = buildNetworkRequestOrResponse(networkResponseHeaders, responseBodySize, responseBody);\n\n return {\n startTimestamp,\n endTimestamp,\n url,\n method,\n statusCode,\n request: requestWarning ? mergeWarning(request, requestWarning) : request,\n response: responseWarning ? mergeWarning(response, responseWarning) : response,\n };\n}\n\nfunction getResponseHeaders(xhr) {\n const headers = xhr.getAllResponseHeaders();\n\n if (!headers) {\n return {};\n }\n\n return headers.split('\\r\\n').reduce((acc, line) => {\n const [key, value] = line.split(': ');\n acc[key.toLowerCase()] = value;\n return acc;\n }, {});\n}\n\nfunction _getXhrResponseBody(xhr) {\n // We collect errors that happen, but only log them if we can't get any response body\n const errors = [];\n\n try {\n return [xhr.responseText];\n } catch (e) {\n errors.push(e);\n }\n\n // Try to manually parse the response body, if responseText fails\n try {\n return _parseXhrResponse(xhr.response, xhr.responseType);\n } catch (e) {\n errors.push(e);\n }\n\n DEBUG_BUILD && logger.warn('[Replay] Failed to get xhr response body', ...errors);\n\n return [undefined];\n}\n\n/**\n * Get the string representation of the XHR response.\n * Based on MDN, these are the possible types of the response:\n * string\n * ArrayBuffer\n * Blob\n * Document\n * POJO\n *\n * Exported only for tests.\n */\nfunction _parseXhrResponse(\n body,\n responseType,\n) {\n try {\n if (typeof body === 'string') {\n return [body];\n }\n\n if (body instanceof Document) {\n return [body.body.outerHTML];\n }\n\n if (responseType === 'json' && body && typeof body === 'object') {\n return [JSON.stringify(body)];\n }\n\n if (!body) {\n return [undefined];\n }\n } catch (e2) {\n DEBUG_BUILD && logger.warn('[Replay] Failed to serialize body', body);\n return [undefined, 'BODY_PARSE_ERROR'];\n }\n\n DEBUG_BUILD && logger.info('[Replay] Skipping network body because of body type', body);\n\n return [undefined, 'UNPARSEABLE_BODY_TYPE'];\n}\n\nfunction _getBodySize(\n body,\n responseType,\n textEncoder,\n) {\n try {\n const bodyStr = responseType === 'json' && body && typeof body === 'object' ? JSON.stringify(body) : body;\n return getBodySize(bodyStr, textEncoder);\n } catch (e3) {\n return undefined;\n }\n}\n\n/**\n * This method does two things:\n * - It enriches the regular XHR/fetch breadcrumbs with request/response size data\n * - It captures the XHR/fetch breadcrumbs to the replay\n * (enriching it with further data that is _not_ added to the regular breadcrumbs)\n */\nfunction handleNetworkBreadcrumbs(replay) {\n const client = getClient();\n\n try {\n const textEncoder = new TextEncoder();\n\n const {\n networkDetailAllowUrls,\n networkDetailDenyUrls,\n networkCaptureBodies,\n networkRequestHeaders,\n networkResponseHeaders,\n } = replay.getOptions();\n\n const options = {\n replay,\n textEncoder,\n networkDetailAllowUrls,\n networkDetailDenyUrls,\n networkCaptureBodies,\n networkRequestHeaders,\n networkResponseHeaders,\n };\n\n if (client && client.on) {\n client.on('beforeAddBreadcrumb', (breadcrumb, hint) => beforeAddNetworkBreadcrumb(options, breadcrumb, hint));\n } else {\n // Fallback behavior\n addFetchInstrumentationHandler(handleFetchSpanListener(replay));\n addXhrInstrumentationHandler(handleXhrSpanListener(replay));\n }\n } catch (e2) {\n // Do nothing\n }\n}\n\n/** just exported for tests */\nfunction beforeAddNetworkBreadcrumb(\n options,\n breadcrumb,\n hint,\n) {\n if (!breadcrumb.data) {\n return;\n }\n\n try {\n if (_isXhrBreadcrumb(breadcrumb) && _isXhrHint(hint)) {\n // This has to be sync, as we need to ensure the breadcrumb is enriched in the same tick\n // Because the hook runs synchronously, and the breadcrumb is afterwards passed on\n // So any async mutations to it will not be reflected in the final breadcrumb\n enrichXhrBreadcrumb(breadcrumb, hint, options);\n\n // This call should not reject\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n captureXhrBreadcrumbToReplay(breadcrumb, hint, options);\n }\n\n if (_isFetchBreadcrumb(breadcrumb) && _isFetchHint(hint)) {\n // This has to be sync, as we need to ensure the breadcrumb is enriched in the same tick\n // Because the hook runs synchronously, and the breadcrumb is afterwards passed on\n // So any async mutations to it will not be reflected in the final breadcrumb\n enrichFetchBreadcrumb(breadcrumb, hint, options);\n\n // This call should not reject\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n captureFetchBreadcrumbToReplay(breadcrumb, hint, options);\n }\n } catch (e) {\n DEBUG_BUILD && logger.warn('Error when enriching network breadcrumb');\n }\n}\n\nfunction _isXhrBreadcrumb(breadcrumb) {\n return breadcrumb.category === 'xhr';\n}\n\nfunction _isFetchBreadcrumb(breadcrumb) {\n return breadcrumb.category === 'fetch';\n}\n\nfunction _isXhrHint(hint) {\n return hint && hint.xhr;\n}\n\nfunction _isFetchHint(hint) {\n return hint && hint.response;\n}\n\nlet _LAST_BREADCRUMB = null;\n\nfunction isBreadcrumbWithCategory(breadcrumb) {\n return !!breadcrumb.category;\n}\n\nconst handleScopeListener =\n (replay) =>\n (scope) => {\n if (!replay.isEnabled()) {\n return;\n }\n\n const result = handleScope(scope);\n\n if (!result) {\n return;\n }\n\n addBreadcrumbEvent(replay, result);\n };\n\n/**\n * An event handler to handle scope changes.\n */\nfunction handleScope(scope) {\n // TODO (v8): Remove this guard. This was put in place because we introduced\n // Scope.getLastBreadcrumb mid-v7 which caused incompatibilities with older SDKs.\n // For now, we'll just return null if the method doesn't exist but we should eventually\n // get rid of this guard.\n const newBreadcrumb = scope.getLastBreadcrumb && scope.getLastBreadcrumb();\n\n // Listener can be called when breadcrumbs have not changed, so we store the\n // reference to the last crumb and only return a crumb if it has changed\n if (_LAST_BREADCRUMB === newBreadcrumb || !newBreadcrumb) {\n return null;\n }\n\n _LAST_BREADCRUMB = newBreadcrumb;\n\n if (\n !isBreadcrumbWithCategory(newBreadcrumb) ||\n ['fetch', 'xhr', 'sentry.event', 'sentry.transaction'].includes(newBreadcrumb.category) ||\n newBreadcrumb.category.startsWith('ui.')\n ) {\n return null;\n }\n\n if (newBreadcrumb.category === 'console') {\n return normalizeConsoleBreadcrumb(newBreadcrumb);\n }\n\n return createBreadcrumb(newBreadcrumb);\n}\n\n/** exported for tests only */\nfunction normalizeConsoleBreadcrumb(\n breadcrumb,\n) {\n const args = breadcrumb.data && breadcrumb.data.arguments;\n\n if (!Array.isArray(args) || args.length === 0) {\n return createBreadcrumb(breadcrumb);\n }\n\n let isTruncated = false;\n\n // Avoid giant args captures\n const normalizedArgs = args.map(arg => {\n if (!arg) {\n return arg;\n }\n if (typeof arg === 'string') {\n if (arg.length > CONSOLE_ARG_MAX_SIZE) {\n isTruncated = true;\n return `${arg.slice(0, CONSOLE_ARG_MAX_SIZE)}…`;\n }\n\n return arg;\n }\n if (typeof arg === 'object') {\n try {\n const normalizedArg = normalize(arg, 7);\n const stringified = JSON.stringify(normalizedArg);\n if (stringified.length > CONSOLE_ARG_MAX_SIZE) {\n isTruncated = true;\n // We use the pretty printed JSON string here as a base\n return `${JSON.stringify(normalizedArg, null, 2).slice(0, CONSOLE_ARG_MAX_SIZE)}…`;\n }\n return normalizedArg;\n } catch (e) {\n // fall back to default\n }\n }\n\n return arg;\n });\n\n return createBreadcrumb({\n ...breadcrumb,\n data: {\n ...breadcrumb.data,\n arguments: normalizedArgs,\n ...(isTruncated ? { _meta: { warnings: ['CONSOLE_ARG_TRUNCATED'] } } : {}),\n },\n });\n}\n\n/**\n * Add global listeners that cannot be removed.\n */\nfunction addGlobalListeners(replay) {\n // Listeners from core SDK //\n const scope = getCurrentScope();\n const client = getClient();\n\n scope.addScopeListener(handleScopeListener(replay));\n addClickKeypressInstrumentationHandler(handleDomListener(replay));\n addHistoryInstrumentationHandler(handleHistorySpanListener(replay));\n handleNetworkBreadcrumbs(replay);\n\n // Tag all (non replay) events that get sent to Sentry with the current\n // replay ID so that we can reference them later in the UI\n const eventProcessor = handleGlobalEventListener(replay, !hasHooks(client));\n if (client && client.addEventProcessor) {\n client.addEventProcessor(eventProcessor);\n } else {\n addEventProcessor(eventProcessor);\n }\n\n // If a custom client has no hooks yet, we continue to use the \"old\" implementation\n if (hasHooks(client)) {\n client.on('beforeSendEvent', handleBeforeSendEvent(replay));\n client.on('afterSendEvent', handleAfterSendEvent(replay));\n client.on('createDsc', (dsc) => {\n const replayId = replay.getSessionId();\n // We do not want to set the DSC when in buffer mode, as that means the replay has not been sent (yet)\n if (replayId && replay.isEnabled() && replay.recordingMode === 'session') {\n // Ensure to check that the session is still active - it could have expired in the meanwhile\n const isSessionActive = replay.checkAndHandleExpiredSession();\n if (isSessionActive) {\n dsc.replay_id = replayId;\n }\n }\n });\n\n client.on('startTransaction', transaction => {\n replay.lastTransaction = transaction;\n });\n\n // We may be missing the initial startTransaction due to timing issues,\n // so we capture it on finish again.\n client.on('finishTransaction', transaction => {\n replay.lastTransaction = transaction;\n });\n\n // We want to flush replay\n client.on('beforeSendFeedback', (feedbackEvent, options) => {\n const replayId = replay.getSessionId();\n if (options && options.includeReplay && replay.isEnabled() && replayId) {\n // This should never reject\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n replay.flush();\n if (feedbackEvent.contexts && feedbackEvent.contexts.feedback) {\n feedbackEvent.contexts.feedback.replay_id = replayId;\n }\n }\n });\n }\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction hasHooks(client) {\n return !!(client && client.on);\n}\n\n/**\n * Create a \"span\" for the total amount of memory being used by JS objects\n * (including v8 internal objects).\n */\nasync function addMemoryEntry(replay) {\n // window.performance.memory is a non-standard API and doesn't work on all browsers, so we try-catch this\n try {\n return Promise.all(\n createPerformanceSpans(replay, [\n // @ts-expect-error memory doesn't exist on type Performance as the API is non-standard (we check that it exists above)\n createMemoryEntry(WINDOW.performance.memory),\n ]),\n );\n } catch (error) {\n // Do nothing\n return [];\n }\n}\n\nfunction createMemoryEntry(memoryEntry) {\n const { jsHeapSizeLimit, totalJSHeapSize, usedJSHeapSize } = memoryEntry;\n // we don't want to use `getAbsoluteTime` because it adds the event time to the\n // time origin, so we get the current timestamp instead\n const time = Date.now() / 1000;\n return {\n type: 'memory',\n name: 'memory',\n start: time,\n end: time,\n data: {\n memory: {\n jsHeapSizeLimit,\n totalJSHeapSize,\n usedJSHeapSize,\n },\n },\n };\n}\n\n/**\n * Heavily simplified debounce function based on lodash.debounce.\n *\n * This function takes a callback function (@param fun) and delays its invocation\n * by @param wait milliseconds. Optionally, a maxWait can be specified in @param options,\n * which ensures that the callback is invoked at least once after the specified max. wait time.\n *\n * @param func the function whose invocation is to be debounced\n * @param wait the minimum time until the function is invoked after it was called once\n * @param options the options object, which can contain the `maxWait` property\n *\n * @returns the debounced version of the function, which needs to be called at least once to start the\n * debouncing process. Subsequent calls will reset the debouncing timer and, in case @paramfunc\n * was already invoked in the meantime, return @param func's return value.\n * The debounced function has two additional properties:\n * - `flush`: Invokes the debounced function immediately and returns its return value\n * - `cancel`: Cancels the debouncing process and resets the debouncing timer\n */\nfunction debounce(func, wait, options) {\n let callbackReturnValue;\n\n let timerId;\n let maxTimerId;\n\n const maxWait = options && options.maxWait ? Math.max(options.maxWait, wait) : 0;\n\n function invokeFunc() {\n cancelTimers();\n callbackReturnValue = func();\n return callbackReturnValue;\n }\n\n function cancelTimers() {\n timerId !== undefined && clearTimeout(timerId);\n maxTimerId !== undefined && clearTimeout(maxTimerId);\n timerId = maxTimerId = undefined;\n }\n\n function flush() {\n if (timerId !== undefined || maxTimerId !== undefined) {\n return invokeFunc();\n }\n return callbackReturnValue;\n }\n\n function debounced() {\n if (timerId) {\n clearTimeout(timerId);\n }\n timerId = setTimeout(invokeFunc, wait);\n\n if (maxWait && maxTimerId === undefined) {\n maxTimerId = setTimeout(invokeFunc, maxWait);\n }\n\n return callbackReturnValue;\n }\n\n debounced.cancel = cancelTimers;\n debounced.flush = flush;\n return debounced;\n}\n\n/**\n * Handler for recording events.\n *\n * Adds to event buffer, and has varying flushing behaviors if the event was a checkout.\n */\nfunction getHandleRecordingEmit(replay) {\n let hadFirstEvent = false;\n\n return (event, _isCheckout) => {\n // If this is false, it means session is expired, create and a new session and wait for checkout\n if (!replay.checkAndHandleExpiredSession()) {\n DEBUG_BUILD && logger.warn('[Replay] Received replay event after session expired.');\n\n return;\n }\n\n // `_isCheckout` is only set when the checkout is due to `checkoutEveryNms`\n // We also want to treat the first event as a checkout, so we handle this specifically here\n const isCheckout = _isCheckout || !hadFirstEvent;\n hadFirstEvent = true;\n\n if (replay.clickDetector) {\n updateClickDetectorForRecordingEvent(replay.clickDetector, event);\n }\n\n // The handler returns `true` if we do not want to trigger debounced flush, `false` if we want to debounce flush.\n replay.addUpdate(() => {\n // The session is always started immediately on pageload/init, but for\n // error-only replays, it should reflect the most recent checkout\n // when an error occurs. Clear any state that happens before this current\n // checkout. This needs to happen before `addEvent()` which updates state\n // dependent on this reset.\n if (replay.recordingMode === 'buffer' && isCheckout) {\n replay.setInitialState();\n }\n\n // If the event is not added (e.g. due to being paused, disabled, or out of the max replay duration),\n // Skip all further steps\n if (!addEventSync(replay, event, isCheckout)) {\n // Return true to skip scheduling a debounced flush\n return true;\n }\n\n // Different behavior for full snapshots (type=2), ignore other event types\n // See https://github.com/rrweb-io/rrweb/blob/d8f9290ca496712aa1e7d472549480c4e7876594/packages/rrweb/src/types.ts#L16\n if (!isCheckout) {\n return false;\n }\n\n // Additionally, create a meta event that will capture certain SDK settings.\n // In order to handle buffer mode, this needs to either be done when we\n // receive checkout events or at flush time.\n //\n // `isCheckout` is always true, but want to be explicit that it should\n // only be added for checkouts\n addSettingsEvent(replay, isCheckout);\n\n // If there is a previousSessionId after a full snapshot occurs, then\n // the replay session was started due to session expiration. The new session\n // is started before triggering a new checkout and contains the id\n // of the previous session. Do not immediately flush in this case\n // to avoid capturing only the checkout and instead the replay will\n // be captured if they perform any follow-up actions.\n if (replay.session && replay.session.previousSessionId) {\n return true;\n }\n\n // When in buffer mode, make sure we adjust the session started date to the current earliest event of the buffer\n // this should usually be the timestamp of the checkout event, but to be safe...\n if (replay.recordingMode === 'buffer' && replay.session && replay.eventBuffer) {\n const earliestEvent = replay.eventBuffer.getEarliestTimestamp();\n if (earliestEvent) {\n logInfo(\n `[Replay] Updating session start time to earliest event in buffer to ${new Date(earliestEvent)}`,\n replay.getOptions()._experiments.traceInternals,\n );\n\n replay.session.started = earliestEvent;\n\n if (replay.getOptions().stickySession) {\n saveSession(replay.session);\n }\n }\n }\n\n if (replay.recordingMode === 'session') {\n // If the full snapshot is due to an initial load, we will not have\n // a previous session ID. In this case, we want to buffer events\n // for a set amount of time before flushing. This can help avoid\n // capturing replays of users that immediately close the window.\n\n // This should never reject\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n void replay.flush();\n }\n\n return true;\n });\n };\n}\n\n/**\n * Exported for tests\n */\nfunction createOptionsEvent(replay) {\n const options = replay.getOptions();\n return {\n type: EventType.Custom,\n timestamp: Date.now(),\n data: {\n tag: 'options',\n payload: {\n sessionSampleRate: options.sessionSampleRate,\n errorSampleRate: options.errorSampleRate,\n useCompressionOption: options.useCompression,\n blockAllMedia: options.blockAllMedia,\n maskAllText: options.maskAllText,\n maskAllInputs: options.maskAllInputs,\n useCompression: replay.eventBuffer ? replay.eventBuffer.type === 'worker' : false,\n networkDetailHasUrls: options.networkDetailAllowUrls.length > 0,\n networkCaptureBodies: options.networkCaptureBodies,\n networkRequestHasHeaders: options.networkRequestHeaders.length > 0,\n networkResponseHasHeaders: options.networkResponseHeaders.length > 0,\n },\n },\n };\n}\n\n/**\n * Add a \"meta\" event that contains a simplified view on current configuration\n * options. This should only be included on the first segment of a recording.\n */\nfunction addSettingsEvent(replay, isCheckout) {\n // Only need to add this event when sending the first segment\n if (!isCheckout || !replay.session || replay.session.segmentId !== 0) {\n return;\n }\n\n addEventSync(replay, createOptionsEvent(replay), false);\n}\n\n/**\n * Create a replay envelope ready to be sent.\n * This includes both the replay event, as well as the recording data.\n */\nfunction createReplayEnvelope(\n replayEvent,\n recordingData,\n dsn,\n tunnel,\n) {\n return createEnvelope(\n createEventEnvelopeHeaders(replayEvent, getSdkMetadataForEnvelopeHeader(replayEvent), tunnel, dsn),\n [\n [{ type: 'replay_event' }, replayEvent],\n [\n {\n type: 'replay_recording',\n // If string then we need to encode to UTF8, otherwise will have\n // wrong size. TextEncoder has similar browser support to\n // MutationObserver, although it does not accept IE11.\n length:\n typeof recordingData === 'string' ? new TextEncoder().encode(recordingData).length : recordingData.length,\n },\n recordingData,\n ],\n ],\n );\n}\n\n/**\n * Prepare the recording data ready to be sent.\n */\nfunction prepareRecordingData({\n recordingData,\n headers,\n}\n\n) {\n let payloadWithSequence;\n\n // XXX: newline is needed to separate sequence id from events\n const replayHeaders = `${JSON.stringify(headers)}\n`;\n\n if (typeof recordingData === 'string') {\n payloadWithSequence = `${replayHeaders}${recordingData}`;\n } else {\n const enc = new TextEncoder();\n // XXX: newline is needed to separate sequence id from events\n const sequence = enc.encode(replayHeaders);\n // Merge the two Uint8Arrays\n payloadWithSequence = new Uint8Array(sequence.length + recordingData.length);\n payloadWithSequence.set(sequence);\n payloadWithSequence.set(recordingData, sequence.length);\n }\n\n return payloadWithSequence;\n}\n\n/**\n * Prepare a replay event & enrich it with the SDK metadata.\n */\nasync function prepareReplayEvent({\n client,\n scope,\n replayId: event_id,\n event,\n}\n\n) {\n const integrations =\n typeof client._integrations === 'object' && client._integrations !== null && !Array.isArray(client._integrations)\n ? Object.keys(client._integrations)\n : undefined;\n\n const eventHint = { event_id, integrations };\n\n if (client.emit) {\n client.emit('preprocessEvent', event, eventHint);\n }\n\n const preparedEvent = (await prepareEvent(\n client.getOptions(),\n event,\n eventHint,\n scope,\n client,\n getIsolationScope(),\n )) ;\n\n // If e.g. a global event processor returned null\n if (!preparedEvent) {\n return null;\n }\n\n // This normally happens in browser client \"_prepareEvent\"\n // but since we do not use this private method from the client, but rather the plain import\n // we need to do this manually.\n preparedEvent.platform = preparedEvent.platform || 'javascript';\n\n // extract the SDK name because `client._prepareEvent` doesn't add it to the event\n const metadata = client.getSdkMetadata && client.getSdkMetadata();\n const { name, version } = (metadata && metadata.sdk) || {};\n\n preparedEvent.sdk = {\n ...preparedEvent.sdk,\n name: name || 'sentry.javascript.unknown',\n version: version || '0.0.0',\n };\n\n return preparedEvent;\n}\n\n/**\n * Send replay attachment using `fetch()`\n */\nasync function sendReplayRequest({\n recordingData,\n replayId,\n segmentId: segment_id,\n eventContext,\n timestamp,\n session,\n}) {\n const preparedRecordingData = prepareRecordingData({\n recordingData,\n headers: {\n segment_id,\n },\n });\n\n const { urls, errorIds, traceIds, initialTimestamp } = eventContext;\n\n const client = getClient();\n const scope = getCurrentScope();\n const transport = client && client.getTransport();\n const dsn = client && client.getDsn();\n\n if (!client || !transport || !dsn || !session.sampled) {\n return;\n }\n\n const baseEvent = {\n type: REPLAY_EVENT_NAME,\n replay_start_timestamp: initialTimestamp / 1000,\n timestamp: timestamp / 1000,\n error_ids: errorIds,\n trace_ids: traceIds,\n urls,\n replay_id: replayId,\n segment_id,\n replay_type: session.sampled,\n };\n\n const replayEvent = await prepareReplayEvent({ scope, client, replayId, event: baseEvent });\n\n if (!replayEvent) {\n // Taken from baseclient's `_processEvent` method, where this is handled for errors/transactions\n client.recordDroppedEvent('event_processor', 'replay', baseEvent);\n logInfo('An event processor returned `null`, will not send event.');\n return;\n }\n\n /*\n For reference, the fully built event looks something like this:\n {\n \"type\": \"replay_event\",\n \"timestamp\": 1670837008.634,\n \"error_ids\": [\n \"errorId\"\n ],\n \"trace_ids\": [\n \"traceId\"\n ],\n \"urls\": [\n \"https://example.com\"\n ],\n \"replay_id\": \"eventId\",\n \"segment_id\": 3,\n \"replay_type\": \"error\",\n \"platform\": \"javascript\",\n \"event_id\": \"eventId\",\n \"environment\": \"production\",\n \"sdk\": {\n \"integrations\": [\n \"BrowserTracing\",\n \"Replay\"\n ],\n \"name\": \"sentry.javascript.browser\",\n \"version\": \"7.25.0\"\n },\n \"sdkProcessingMetadata\": {},\n \"contexts\": {\n },\n }\n */\n\n // Prevent this data (which, if it exists, was used in earlier steps in the processing pipeline) from being sent to\n // sentry. (Note: Our use of this property comes and goes with whatever we might be debugging, whatever hacks we may\n // have temporarily added, etc. Even if we don't happen to be using it at some point in the future, let's not get rid\n // of this `delete`, lest we miss putting it back in the next time the property is in use.)\n delete replayEvent.sdkProcessingMetadata;\n\n const envelope = createReplayEnvelope(replayEvent, preparedRecordingData, dsn, client.getOptions().tunnel);\n\n let response;\n\n try {\n response = await transport.send(envelope);\n } catch (err) {\n const error = new Error(UNABLE_TO_SEND_REPLAY);\n\n try {\n // In case browsers don't allow this property to be writable\n // @ts-expect-error This needs lib es2022 and newer\n error.cause = err;\n } catch (e) {\n // nothing to do\n }\n throw error;\n }\n\n // TODO (v8): we can remove this guard once transport.send's type signature doesn't include void anymore\n if (!response) {\n return response;\n }\n\n // If the status code is invalid, we want to immediately stop & not retry\n if (typeof response.statusCode === 'number' && (response.statusCode < 200 || response.statusCode >= 300)) {\n throw new TransportStatusCodeError(response.statusCode);\n }\n\n const rateLimits = updateRateLimits({}, response);\n if (isRateLimited(rateLimits, 'replay')) {\n throw new RateLimitError(rateLimits);\n }\n\n return response;\n}\n\n/**\n * This error indicates that the transport returned an invalid status code.\n */\nclass TransportStatusCodeError extends Error {\n constructor(statusCode) {\n super(`Transport returned status code ${statusCode}`);\n }\n}\n\n/**\n * This error indicates that we hit a rate limit API error.\n */\nclass RateLimitError extends Error {\n\n constructor(rateLimits) {\n super('Rate limit hit');\n this.rateLimits = rateLimits;\n }\n}\n\n/**\n * Finalize and send the current replay event to Sentry\n */\nasync function sendReplay(\n replayData,\n retryConfig = {\n count: 0,\n interval: RETRY_BASE_INTERVAL,\n },\n) {\n const { recordingData, options } = replayData;\n\n // short circuit if there's no events to upload (this shouldn't happen as _runFlush makes this check)\n if (!recordingData.length) {\n return;\n }\n\n try {\n await sendReplayRequest(replayData);\n return true;\n } catch (err) {\n if (err instanceof TransportStatusCodeError || err instanceof RateLimitError) {\n throw err;\n }\n\n // Capture error for every failed replay\n setContext('Replays', {\n _retryCount: retryConfig.count,\n });\n\n if (DEBUG_BUILD && options._experiments && options._experiments.captureExceptions) {\n captureException(err);\n }\n\n // If an error happened here, it's likely that uploading the attachment\n // failed, we'll can retry with the same events payload\n if (retryConfig.count >= RETRY_MAX_COUNT) {\n const error = new Error(`${UNABLE_TO_SEND_REPLAY} - max retries exceeded`);\n\n try {\n // In case browsers don't allow this property to be writable\n // @ts-expect-error This needs lib es2022 and newer\n error.cause = err;\n } catch (e) {\n // nothing to do\n }\n\n throw error;\n }\n\n // will retry in intervals of 5, 10, 30\n retryConfig.interval *= ++retryConfig.count;\n\n return new Promise((resolve, reject) => {\n setTimeout(async () => {\n try {\n await sendReplay(replayData, retryConfig);\n resolve(true);\n } catch (err) {\n reject(err);\n }\n }, retryConfig.interval);\n });\n }\n}\n\nconst THROTTLED = '__THROTTLED';\nconst SKIPPED = '__SKIPPED';\n\n/**\n * Create a throttled function off a given function.\n * When calling the throttled function, it will call the original function only\n * if it hasn't been called more than `maxCount` times in the last `durationSeconds`.\n *\n * Returns `THROTTLED` if throttled for the first time, after that `SKIPPED`,\n * or else the return value of the original function.\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction throttle(\n fn,\n maxCount,\n durationSeconds,\n) {\n const counter = new Map();\n\n const _cleanup = (now) => {\n const threshold = now - durationSeconds;\n counter.forEach((_value, key) => {\n if (key < threshold) {\n counter.delete(key);\n }\n });\n };\n\n const _getTotalCount = () => {\n return [...counter.values()].reduce((a, b) => a + b, 0);\n };\n\n let isThrottled = false;\n\n return (...rest) => {\n // Date in second-precision, which we use as basis for the throttling\n const now = Math.floor(Date.now() / 1000);\n\n // First, make sure to delete any old entries\n _cleanup(now);\n\n // If already over limit, do nothing\n if (_getTotalCount() >= maxCount) {\n const wasThrottled = isThrottled;\n isThrottled = true;\n return wasThrottled ? SKIPPED : THROTTLED;\n }\n\n isThrottled = false;\n const count = counter.get(now) || 0;\n counter.set(now, count + 1);\n\n return fn(...rest);\n };\n}\n\n/* eslint-disable max-lines */ // TODO: We might want to split this file up\n\n/**\n * The main replay container class, which holds all the state and methods for recording and sending replays.\n */\nclass ReplayContainer {\n\n /**\n * Recording can happen in one of three modes:\n * - session: Record the whole session, sending it continuously\n * - buffer: Always keep the last 60s of recording, requires:\n * - having replaysOnErrorSampleRate > 0 to capture replay when an error occurs\n * - or calling `flush()` to send the replay\n */\n\n /**\n * The current or last active transcation.\n * This is only available when performance is enabled.\n */\n\n /**\n * These are here so we can overwrite them in tests etc.\n * @hidden\n */\n\n /**\n * Options to pass to `rrweb.record()`\n */\n\n /**\n * Timestamp of the last user activity. This lives across sessions.\n */\n\n /**\n * Is the integration currently active?\n */\n\n /**\n * Paused is a state where:\n * - DOM Recording is not listening at all\n * - Nothing will be added to event buffer (e.g. core SDK events)\n */\n\n /**\n * Have we attached listeners to the core SDK?\n * Note we have to track this as there is no way to remove instrumentation handlers.\n */\n\n /**\n * Function to stop recording\n */\n\n constructor({\n options,\n recordingOptions,\n }\n\n) {ReplayContainer.prototype.__init.call(this);ReplayContainer.prototype.__init2.call(this);ReplayContainer.prototype.__init3.call(this);ReplayContainer.prototype.__init4.call(this);ReplayContainer.prototype.__init5.call(this);ReplayContainer.prototype.__init6.call(this);\n this.eventBuffer = null;\n this.performanceEntries = [];\n this.replayPerformanceEntries = [];\n this.recordingMode = 'session';\n this.timeouts = {\n sessionIdlePause: SESSION_IDLE_PAUSE_DURATION,\n sessionIdleExpire: SESSION_IDLE_EXPIRE_DURATION,\n } ;\n this._lastActivity = Date.now();\n this._isEnabled = false;\n this._isPaused = false;\n this._hasInitializedCoreListeners = false;\n this._context = {\n errorIds: new Set(),\n traceIds: new Set(),\n urls: [],\n initialTimestamp: Date.now(),\n initialUrl: '',\n };\n\n this._recordingOptions = recordingOptions;\n this._options = options;\n\n this._debouncedFlush = debounce(() => this._flush(), this._options.flushMinDelay, {\n maxWait: this._options.flushMaxDelay,\n });\n\n this._throttledAddEvent = throttle(\n (event, isCheckout) => addEvent(this, event, isCheckout),\n // Max 300 events...\n 300,\n // ... per 5s\n 5,\n );\n\n const { slowClickTimeout, slowClickIgnoreSelectors } = this.getOptions();\n\n const slowClickConfig = slowClickTimeout\n ? {\n threshold: Math.min(SLOW_CLICK_THRESHOLD, slowClickTimeout),\n timeout: slowClickTimeout,\n scrollTimeout: SLOW_CLICK_SCROLL_TIMEOUT,\n ignoreSelector: slowClickIgnoreSelectors ? slowClickIgnoreSelectors.join(',') : '',\n }\n : undefined;\n\n if (slowClickConfig) {\n this.clickDetector = new ClickDetector(this, slowClickConfig);\n }\n }\n\n /** Get the event context. */\n getContext() {\n return this._context;\n }\n\n /** If recording is currently enabled. */\n isEnabled() {\n return this._isEnabled;\n }\n\n /** If recording is currently paused. */\n isPaused() {\n return this._isPaused;\n }\n\n /** Get the replay integration options. */\n getOptions() {\n return this._options;\n }\n\n /**\n * Initializes the plugin based on sampling configuration. Should not be\n * called outside of constructor.\n */\n initializeSampling(previousSessionId) {\n const { errorSampleRate, sessionSampleRate } = this._options;\n\n // If neither sample rate is > 0, then do nothing - user will need to call one of\n // `start()` or `startBuffering` themselves.\n if (errorSampleRate <= 0 && sessionSampleRate <= 0) {\n return;\n }\n\n // Otherwise if there is _any_ sample rate set, try to load an existing\n // session, or create a new one.\n this._initializeSessionForSampling(previousSessionId);\n\n if (!this.session) {\n // This should not happen, something wrong has occurred\n this._handleException(new Error('Unable to initialize and create session'));\n return;\n }\n\n if (this.session.sampled === false) {\n // This should only occur if `errorSampleRate` is 0 and was unsampled for\n // session-based replay. In this case there is nothing to do.\n return;\n }\n\n // If segmentId > 0, it means we've previously already captured this session\n // In this case, we still want to continue in `session` recording mode\n this.recordingMode = this.session.sampled === 'buffer' && this.session.segmentId === 0 ? 'buffer' : 'session';\n\n logInfoNextTick(\n `[Replay] Starting replay in ${this.recordingMode} mode`,\n this._options._experiments.traceInternals,\n );\n\n this._initializeRecording();\n }\n\n /**\n * Start a replay regardless of sampling rate. Calling this will always\n * create a new session. Will throw an error if replay is already in progress.\n *\n * Creates or loads a session, attaches listeners to varying events (DOM,\n * _performanceObserver, Recording, Sentry SDK, etc)\n */\n start() {\n if (this._isEnabled && this.recordingMode === 'session') {\n throw new Error('Replay recording is already in progress');\n }\n\n if (this._isEnabled && this.recordingMode === 'buffer') {\n throw new Error('Replay buffering is in progress, call `flush()` to save the replay');\n }\n\n logInfoNextTick('[Replay] Starting replay in session mode', this._options._experiments.traceInternals);\n\n const session = loadOrCreateSession(\n {\n maxReplayDuration: this._options.maxReplayDuration,\n sessionIdleExpire: this.timeouts.sessionIdleExpire,\n traceInternals: this._options._experiments.traceInternals,\n },\n {\n stickySession: this._options.stickySession,\n // This is intentional: create a new session-based replay when calling `start()`\n sessionSampleRate: 1,\n allowBuffering: false,\n },\n );\n\n this.session = session;\n\n this._initializeRecording();\n }\n\n /**\n * Start replay buffering. Buffers until `flush()` is called or, if\n * `replaysOnErrorSampleRate` > 0, an error occurs.\n */\n startBuffering() {\n if (this._isEnabled) {\n throw new Error('Replay recording is already in progress');\n }\n\n logInfoNextTick('[Replay] Starting replay in buffer mode', this._options._experiments.traceInternals);\n\n const session = loadOrCreateSession(\n {\n sessionIdleExpire: this.timeouts.sessionIdleExpire,\n maxReplayDuration: this._options.maxReplayDuration,\n traceInternals: this._options._experiments.traceInternals,\n },\n {\n stickySession: this._options.stickySession,\n sessionSampleRate: 0,\n allowBuffering: true,\n },\n );\n\n this.session = session;\n\n this.recordingMode = 'buffer';\n this._initializeRecording();\n }\n\n /**\n * Start recording.\n *\n * Note that this will cause a new DOM checkout\n */\n startRecording() {\n try {\n const canvas = this._options._experiments.canvas;\n this._stopRecording = record({\n ...this._recordingOptions,\n // When running in error sampling mode, we need to overwrite `checkoutEveryNms`\n // Without this, it would record forever, until an error happens, which we don't want\n // instead, we'll always keep the last 60 seconds of replay before an error happened\n ...(this.recordingMode === 'buffer' && { checkoutEveryNms: BUFFER_CHECKOUT_TIME }),\n emit: getHandleRecordingEmit(this),\n onMutation: this._onMutationHandler,\n ...(canvas &&\n canvas.manager && {\n recordCanvas: true,\n getCanvasManager: canvas.manager,\n ...(CANVAS_QUALITY[canvas.quality || 'medium'] || CANVAS_QUALITY.medium),\n }),\n });\n } catch (err) {\n this._handleException(err);\n }\n }\n\n /**\n * Stops the recording, if it was running.\n *\n * Returns true if it was previously stopped, or is now stopped,\n * otherwise false.\n */\n stopRecording() {\n try {\n if (this._stopRecording) {\n this._stopRecording();\n this._stopRecording = undefined;\n }\n\n return true;\n } catch (err) {\n this._handleException(err);\n return false;\n }\n }\n\n /**\n * Currently, this needs to be manually called (e.g. for tests). Sentry SDK\n * does not support a teardown\n */\n async stop({ forceFlush = false, reason } = {}) {\n if (!this._isEnabled) {\n return;\n }\n\n // We can't move `_isEnabled` after awaiting a flush, otherwise we can\n // enter into an infinite loop when `stop()` is called while flushing.\n this._isEnabled = false;\n\n try {\n logInfo(\n `[Replay] Stopping Replay${reason ? ` triggered by ${reason}` : ''}`,\n this._options._experiments.traceInternals,\n );\n\n this._removeListeners();\n this.stopRecording();\n\n this._debouncedFlush.cancel();\n // See comment above re: `_isEnabled`, we \"force\" a flush, ignoring the\n // `_isEnabled` state of the plugin since it was disabled above.\n if (forceFlush) {\n await this._flush({ force: true });\n }\n\n // After flush, destroy event buffer\n this.eventBuffer && this.eventBuffer.destroy();\n this.eventBuffer = null;\n\n // Clear session from session storage, note this means if a new session\n // is started after, it will not have `previousSessionId`\n clearSession(this);\n } catch (err) {\n this._handleException(err);\n }\n }\n\n /**\n * Pause some replay functionality. See comments for `_isPaused`.\n * This differs from stop as this only stops DOM recording, it is\n * not as thorough of a shutdown as `stop()`.\n */\n pause() {\n if (this._isPaused) {\n return;\n }\n\n this._isPaused = true;\n this.stopRecording();\n\n logInfo('[Replay] Pausing replay', this._options._experiments.traceInternals);\n }\n\n /**\n * Resumes recording, see notes for `pause().\n *\n * Note that calling `startRecording()` here will cause a\n * new DOM checkout.`\n */\n resume() {\n if (!this._isPaused || !this._checkSession()) {\n return;\n }\n\n this._isPaused = false;\n this.startRecording();\n\n logInfo('[Replay] Resuming replay', this._options._experiments.traceInternals);\n }\n\n /**\n * If not in \"session\" recording mode, flush event buffer which will create a new replay.\n * Unless `continueRecording` is false, the replay will continue to record and\n * behave as a \"session\"-based replay.\n *\n * Otherwise, queue up a flush.\n */\n async sendBufferedReplayOrFlush({ continueRecording = true } = {}) {\n if (this.recordingMode === 'session') {\n return this.flushImmediate();\n }\n\n const activityTime = Date.now();\n\n logInfo('[Replay] Converting buffer to session', this._options._experiments.traceInternals);\n\n // Allow flush to complete before resuming as a session recording, otherwise\n // the checkout from `startRecording` may be included in the payload.\n // Prefer to keep the error replay as a separate (and smaller) segment\n // than the session replay.\n await this.flushImmediate();\n\n const hasStoppedRecording = this.stopRecording();\n\n if (!continueRecording || !hasStoppedRecording) {\n return;\n }\n\n // To avoid race conditions where this is called multiple times, we check here again that we are still buffering\n if ((this.recordingMode ) === 'session') {\n return;\n }\n\n // Re-start recording in session-mode\n this.recordingMode = 'session';\n\n // Once this session ends, we do not want to refresh it\n if (this.session) {\n this._updateUserActivity(activityTime);\n this._updateSessionActivity(activityTime);\n this._maybeSaveSession();\n }\n\n this.startRecording();\n }\n\n /**\n * We want to batch uploads of replay events. Save events only if\n * `` milliseconds have elapsed since the last event\n * *OR* if `` milliseconds have elapsed.\n *\n * Accepts a callback to perform side-effects and returns true to stop batch\n * processing and hand back control to caller.\n */\n addUpdate(cb) {\n // We need to always run `cb` (e.g. in the case of `this.recordingMode == 'buffer'`)\n const cbResult = cb();\n\n // If this option is turned on then we will only want to call `flush`\n // explicitly\n if (this.recordingMode === 'buffer') {\n return;\n }\n\n // If callback is true, we do not want to continue with flushing -- the\n // caller will need to handle it.\n if (cbResult === true) {\n return;\n }\n\n // addUpdate is called quite frequently - use _debouncedFlush so that it\n // respects the flush delays and does not flush immediately\n this._debouncedFlush();\n }\n\n /**\n * Updates the user activity timestamp and resumes recording. This should be\n * called in an event handler for a user action that we consider as the user\n * being \"active\" (e.g. a mouse click).\n */\n triggerUserActivity() {\n this._updateUserActivity();\n\n // This case means that recording was once stopped due to inactivity.\n // Ensure that recording is resumed.\n if (!this._stopRecording) {\n // Create a new session, otherwise when the user action is flushed, it\n // will get rejected due to an expired session.\n if (!this._checkSession()) {\n return;\n }\n\n // Note: This will cause a new DOM checkout\n this.resume();\n return;\n }\n\n // Otherwise... recording was never suspended, continue as normalish\n this.checkAndHandleExpiredSession();\n\n this._updateSessionActivity();\n }\n\n /**\n * Updates the user activity timestamp *without* resuming\n * recording. Some user events (e.g. keydown) can be create\n * low-value replays that only contain the keypress as a\n * breadcrumb. Instead this would require other events to\n * create a new replay after a session has expired.\n */\n updateUserActivity() {\n this._updateUserActivity();\n this._updateSessionActivity();\n }\n\n /**\n * Only flush if `this.recordingMode === 'session'`\n */\n conditionalFlush() {\n if (this.recordingMode === 'buffer') {\n return Promise.resolve();\n }\n\n return this.flushImmediate();\n }\n\n /**\n * Flush using debounce flush\n */\n flush() {\n return this._debouncedFlush() ;\n }\n\n /**\n * Always flush via `_debouncedFlush` so that we do not have flushes triggered\n * from calling both `flush` and `_debouncedFlush`. Otherwise, there could be\n * cases of mulitple flushes happening closely together.\n */\n flushImmediate() {\n this._debouncedFlush();\n // `.flush` is provided by the debounced function, analogously to lodash.debounce\n return this._debouncedFlush.flush() ;\n }\n\n /**\n * Cancels queued up flushes.\n */\n cancelFlush() {\n this._debouncedFlush.cancel();\n }\n\n /** Get the current sesion (=replay) ID */\n getSessionId() {\n return this.session && this.session.id;\n }\n\n /**\n * Checks if recording should be stopped due to user inactivity. Otherwise\n * check if session is expired and create a new session if so. Triggers a new\n * full snapshot on new session.\n *\n * Returns true if session is not expired, false otherwise.\n * @hidden\n */\n checkAndHandleExpiredSession() {\n // Prevent starting a new session if the last user activity is older than\n // SESSION_IDLE_PAUSE_DURATION. Otherwise non-user activity can trigger a new\n // session+recording. This creates noisy replays that do not have much\n // content in them.\n if (\n this._lastActivity &&\n isExpired(this._lastActivity, this.timeouts.sessionIdlePause) &&\n this.session &&\n this.session.sampled === 'session'\n ) {\n // Pause recording only for session-based replays. Otherwise, resuming\n // will create a new replay and will conflict with users who only choose\n // to record error-based replays only. (e.g. the resumed replay will not\n // contain a reference to an error)\n this.pause();\n return;\n }\n\n // --- There is recent user activity --- //\n // This will create a new session if expired, based on expiry length\n if (!this._checkSession()) {\n // Check session handles the refreshing itself\n return false;\n }\n\n return true;\n }\n\n /**\n * Capture some initial state that can change throughout the lifespan of the\n * replay. This is required because otherwise they would be captured at the\n * first flush.\n */\n setInitialState() {\n const urlPath = `${WINDOW.location.pathname}${WINDOW.location.hash}${WINDOW.location.search}`;\n const url = `${WINDOW.location.origin}${urlPath}`;\n\n this.performanceEntries = [];\n this.replayPerformanceEntries = [];\n\n // Reset _context as well\n this._clearContext();\n\n this._context.initialUrl = url;\n this._context.initialTimestamp = Date.now();\n this._context.urls.push(url);\n }\n\n /**\n * Add a breadcrumb event, that may be throttled.\n * If it was throttled, we add a custom breadcrumb to indicate that.\n */\n throttledAddEvent(\n event,\n isCheckout,\n ) {\n const res = this._throttledAddEvent(event, isCheckout);\n\n // If this is THROTTLED, it means we have throttled the event for the first time\n // In this case, we want to add a breadcrumb indicating that something was skipped\n if (res === THROTTLED) {\n const breadcrumb = createBreadcrumb({\n category: 'replay.throttled',\n });\n\n this.addUpdate(() => {\n // Return `false` if the event _was_ added, as that means we schedule a flush\n return !addEventSync(this, {\n type: ReplayEventTypeCustom,\n timestamp: breadcrumb.timestamp || 0,\n data: {\n tag: 'breadcrumb',\n payload: breadcrumb,\n metric: true,\n },\n });\n });\n }\n\n return res;\n }\n\n /**\n * This will get the parametrized route name of the current page.\n * This is only available if performance is enabled, and if an instrumented router is used.\n */\n getCurrentRoute() {\n // eslint-disable-next-line deprecation/deprecation\n const lastTransaction = this.lastTransaction || getCurrentScope().getTransaction();\n\n const attributes = (lastTransaction && spanToJSON(lastTransaction).data) || {};\n const source = attributes[SEMANTIC_ATTRIBUTE_SENTRY_SOURCE];\n if (!lastTransaction || !source || !['route', 'custom'].includes(source)) {\n return undefined;\n }\n\n return spanToJSON(lastTransaction).description;\n }\n\n /**\n * Initialize and start all listeners to varying events (DOM,\n * Performance Observer, Recording, Sentry SDK, etc)\n */\n _initializeRecording() {\n this.setInitialState();\n\n // this method is generally called on page load or manually - in both cases\n // we should treat it as an activity\n this._updateSessionActivity();\n\n this.eventBuffer = createEventBuffer({\n useCompression: this._options.useCompression,\n workerUrl: this._options.workerUrl,\n });\n\n this._removeListeners();\n this._addListeners();\n\n // Need to set as enabled before we start recording, as `record()` can trigger a flush with a new checkout\n this._isEnabled = true;\n this._isPaused = false;\n\n this.startRecording();\n }\n\n /** A wrapper to conditionally capture exceptions. */\n _handleException(error) {\n DEBUG_BUILD && logger.error('[Replay]', error);\n\n if (DEBUG_BUILD && this._options._experiments && this._options._experiments.captureExceptions) {\n captureException(error);\n }\n }\n\n /**\n * Loads (or refreshes) the current session.\n */\n _initializeSessionForSampling(previousSessionId) {\n // Whenever there is _any_ error sample rate, we always allow buffering\n // Because we decide on sampling when an error occurs, we need to buffer at all times if sampling for errors\n const allowBuffering = this._options.errorSampleRate > 0;\n\n const session = loadOrCreateSession(\n {\n sessionIdleExpire: this.timeouts.sessionIdleExpire,\n maxReplayDuration: this._options.maxReplayDuration,\n traceInternals: this._options._experiments.traceInternals,\n previousSessionId,\n },\n {\n stickySession: this._options.stickySession,\n sessionSampleRate: this._options.sessionSampleRate,\n allowBuffering,\n },\n );\n\n this.session = session;\n }\n\n /**\n * Checks and potentially refreshes the current session.\n * Returns false if session is not recorded.\n */\n _checkSession() {\n // If there is no session yet, we do not want to refresh anything\n // This should generally not happen, but to be safe....\n if (!this.session) {\n return false;\n }\n\n const currentSession = this.session;\n\n if (\n shouldRefreshSession(currentSession, {\n sessionIdleExpire: this.timeouts.sessionIdleExpire,\n maxReplayDuration: this._options.maxReplayDuration,\n })\n ) {\n // This should never reject\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n this._refreshSession(currentSession);\n return false;\n }\n\n return true;\n }\n\n /**\n * Refresh a session with a new one.\n * This stops the current session (without forcing a flush, as that would never work since we are expired),\n * and then does a new sampling based on the refreshed session.\n */\n async _refreshSession(session) {\n if (!this._isEnabled) {\n return;\n }\n await this.stop({ reason: 'refresh session' });\n this.initializeSampling(session.id);\n }\n\n /**\n * Adds listeners to record events for the replay\n */\n _addListeners() {\n try {\n WINDOW.document.addEventListener('visibilitychange', this._handleVisibilityChange);\n WINDOW.addEventListener('blur', this._handleWindowBlur);\n WINDOW.addEventListener('focus', this._handleWindowFocus);\n WINDOW.addEventListener('keydown', this._handleKeyboardEvent);\n\n if (this.clickDetector) {\n this.clickDetector.addListeners();\n }\n\n // There is no way to remove these listeners, so ensure they are only added once\n if (!this._hasInitializedCoreListeners) {\n addGlobalListeners(this);\n\n this._hasInitializedCoreListeners = true;\n }\n } catch (err) {\n this._handleException(err);\n }\n\n this._performanceCleanupCallback = setupPerformanceObserver(this);\n }\n\n /**\n * Cleans up listeners that were created in `_addListeners`\n */\n _removeListeners() {\n try {\n WINDOW.document.removeEventListener('visibilitychange', this._handleVisibilityChange);\n\n WINDOW.removeEventListener('blur', this._handleWindowBlur);\n WINDOW.removeEventListener('focus', this._handleWindowFocus);\n WINDOW.removeEventListener('keydown', this._handleKeyboardEvent);\n\n if (this.clickDetector) {\n this.clickDetector.removeListeners();\n }\n\n if (this._performanceCleanupCallback) {\n this._performanceCleanupCallback();\n }\n } catch (err) {\n this._handleException(err);\n }\n }\n\n /**\n * Handle when visibility of the page content changes. Opening a new tab will\n * cause the state to change to hidden because of content of current page will\n * be hidden. Likewise, moving a different window to cover the contents of the\n * page will also trigger a change to a hidden state.\n */\n __init() {this._handleVisibilityChange = () => {\n if (WINDOW.document.visibilityState === 'visible') {\n this._doChangeToForegroundTasks();\n } else {\n this._doChangeToBackgroundTasks();\n }\n };}\n\n /**\n * Handle when page is blurred\n */\n __init2() {this._handleWindowBlur = () => {\n const breadcrumb = createBreadcrumb({\n category: 'ui.blur',\n });\n\n // Do not count blur as a user action -- it's part of the process of them\n // leaving the page\n this._doChangeToBackgroundTasks(breadcrumb);\n };}\n\n /**\n * Handle when page is focused\n */\n __init3() {this._handleWindowFocus = () => {\n const breadcrumb = createBreadcrumb({\n category: 'ui.focus',\n });\n\n // Do not count focus as a user action -- instead wait until they focus and\n // interactive with page\n this._doChangeToForegroundTasks(breadcrumb);\n };}\n\n /** Ensure page remains active when a key is pressed. */\n __init4() {this._handleKeyboardEvent = (event) => {\n handleKeyboardEvent(this, event);\n };}\n\n /**\n * Tasks to run when we consider a page to be hidden (via blurring and/or visibility)\n */\n _doChangeToBackgroundTasks(breadcrumb) {\n if (!this.session) {\n return;\n }\n\n const expired = isSessionExpired(this.session, {\n maxReplayDuration: this._options.maxReplayDuration,\n sessionIdleExpire: this.timeouts.sessionIdleExpire,\n });\n\n if (expired) {\n return;\n }\n\n if (breadcrumb) {\n this._createCustomBreadcrumb(breadcrumb);\n }\n\n // Send replay when the page/tab becomes hidden. There is no reason to send\n // replay if it becomes visible, since no actions we care about were done\n // while it was hidden\n // This should never reject\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n void this.conditionalFlush();\n }\n\n /**\n * Tasks to run when we consider a page to be visible (via focus and/or visibility)\n */\n _doChangeToForegroundTasks(breadcrumb) {\n if (!this.session) {\n return;\n }\n\n const isSessionActive = this.checkAndHandleExpiredSession();\n\n if (!isSessionActive) {\n // If the user has come back to the page within SESSION_IDLE_PAUSE_DURATION\n // ms, we will re-use the existing session, otherwise create a new\n // session\n logInfo('[Replay] Document has become active, but session has expired');\n return;\n }\n\n if (breadcrumb) {\n this._createCustomBreadcrumb(breadcrumb);\n }\n }\n\n /**\n * Update user activity (across session lifespans)\n */\n _updateUserActivity(_lastActivity = Date.now()) {\n this._lastActivity = _lastActivity;\n }\n\n /**\n * Updates the session's last activity timestamp\n */\n _updateSessionActivity(_lastActivity = Date.now()) {\n if (this.session) {\n this.session.lastActivity = _lastActivity;\n this._maybeSaveSession();\n }\n }\n\n /**\n * Helper to create (and buffer) a replay breadcrumb from a core SDK breadcrumb\n */\n _createCustomBreadcrumb(breadcrumb) {\n this.addUpdate(() => {\n // This should never reject\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n this.throttledAddEvent({\n type: EventType.Custom,\n timestamp: breadcrumb.timestamp || 0,\n data: {\n tag: 'breadcrumb',\n payload: breadcrumb,\n },\n });\n });\n }\n\n /**\n * Observed performance events are added to `this.performanceEntries`. These\n * are included in the replay event before it is finished and sent to Sentry.\n */\n _addPerformanceEntries() {\n const performanceEntries = createPerformanceEntries(this.performanceEntries).concat(this.replayPerformanceEntries);\n\n this.performanceEntries = [];\n this.replayPerformanceEntries = [];\n\n return Promise.all(createPerformanceSpans(this, performanceEntries));\n }\n\n /**\n * Clear _context\n */\n _clearContext() {\n // XXX: `initialTimestamp` and `initialUrl` do not get cleared\n this._context.errorIds.clear();\n this._context.traceIds.clear();\n this._context.urls = [];\n }\n\n /** Update the initial timestamp based on the buffer content. */\n _updateInitialTimestampFromEventBuffer() {\n const { session, eventBuffer } = this;\n if (!session || !eventBuffer) {\n return;\n }\n\n // we only ever update this on the initial segment\n if (session.segmentId) {\n return;\n }\n\n const earliestEvent = eventBuffer.getEarliestTimestamp();\n if (earliestEvent && earliestEvent < this._context.initialTimestamp) {\n this._context.initialTimestamp = earliestEvent;\n }\n }\n\n /**\n * Return and clear _context\n */\n _popEventContext() {\n const _context = {\n initialTimestamp: this._context.initialTimestamp,\n initialUrl: this._context.initialUrl,\n errorIds: Array.from(this._context.errorIds),\n traceIds: Array.from(this._context.traceIds),\n urls: this._context.urls,\n };\n\n this._clearContext();\n\n return _context;\n }\n\n /**\n * Flushes replay event buffer to Sentry.\n *\n * Performance events are only added right before flushing - this is\n * due to the buffered performance observer events.\n *\n * Should never be called directly, only by `flush`\n */\n async _runFlush() {\n const replayId = this.getSessionId();\n\n if (!this.session || !this.eventBuffer || !replayId) {\n DEBUG_BUILD && logger.error('[Replay] No session or eventBuffer found to flush.');\n return;\n }\n\n await this._addPerformanceEntries();\n\n // Check eventBuffer again, as it could have been stopped in the meanwhile\n if (!this.eventBuffer || !this.eventBuffer.hasEvents) {\n return;\n }\n\n // Only attach memory event if eventBuffer is not empty\n await addMemoryEntry(this);\n\n // Check eventBuffer again, as it could have been stopped in the meanwhile\n if (!this.eventBuffer) {\n return;\n }\n\n // if this changed in the meanwhile, e.g. because the session was refreshed or similar, we abort here\n if (replayId !== this.getSessionId()) {\n return;\n }\n\n try {\n // This uses the data from the eventBuffer, so we need to call this before `finish()\n this._updateInitialTimestampFromEventBuffer();\n\n const timestamp = Date.now();\n\n // Check total duration again, to avoid sending outdated stuff\n // We leave 30s wiggle room to accomodate late flushing etc.\n // This _could_ happen when the browser is suspended during flushing, in which case we just want to stop\n if (timestamp - this._context.initialTimestamp > this._options.maxReplayDuration + 30000) {\n throw new Error('Session is too long, not sending replay');\n }\n\n const eventContext = this._popEventContext();\n // Always increment segmentId regardless of outcome of sending replay\n const segmentId = this.session.segmentId++;\n this._maybeSaveSession();\n\n // Note this empties the event buffer regardless of outcome of sending replay\n const recordingData = await this.eventBuffer.finish();\n\n await sendReplay({\n replayId,\n recordingData,\n segmentId,\n eventContext,\n session: this.session,\n options: this.getOptions(),\n timestamp,\n });\n } catch (err) {\n this._handleException(err);\n\n // This means we retried 3 times and all of them failed,\n // or we ran into a problem we don't want to retry, like rate limiting.\n // In this case, we want to completely stop the replay - otherwise, we may get inconsistent segments\n // This should never reject\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n this.stop({ reason: 'sendReplay' });\n\n const client = getClient();\n\n if (client) {\n client.recordDroppedEvent('send_error', 'replay');\n }\n }\n }\n\n /**\n * Flush recording data to Sentry. Creates a lock so that only a single flush\n * can be active at a time. Do not call this directly.\n */\n __init5() {this._flush = async ({\n force = false,\n }\n\n = {}) => {\n if (!this._isEnabled && !force) {\n // This can happen if e.g. the replay was stopped because of exceeding the retry limit\n return;\n }\n\n if (!this.checkAndHandleExpiredSession()) {\n DEBUG_BUILD && logger.error('[Replay] Attempting to finish replay event after session expired.');\n return;\n }\n\n if (!this.session) {\n // should never happen, as we would have bailed out before\n return;\n }\n\n const start = this.session.started;\n const now = Date.now();\n const duration = now - start;\n\n // A flush is about to happen, cancel any queued flushes\n this._debouncedFlush.cancel();\n\n // If session is too short, or too long (allow some wiggle room over maxReplayDuration), do not send it\n // This _should_ not happen, but it may happen if flush is triggered due to a page activity change or similar\n const tooShort = duration < this._options.minReplayDuration;\n const tooLong = duration > this._options.maxReplayDuration + 5000;\n if (tooShort || tooLong) {\n logInfo(\n `[Replay] Session duration (${Math.floor(duration / 1000)}s) is too ${\n tooShort ? 'short' : 'long'\n }, not sending replay.`,\n this._options._experiments.traceInternals,\n );\n\n if (tooShort) {\n this._debouncedFlush();\n }\n return;\n }\n\n const eventBuffer = this.eventBuffer;\n if (eventBuffer && this.session.segmentId === 0 && !eventBuffer.hasCheckout) {\n logInfo('[Replay] Flushing initial segment without checkout.', this._options._experiments.traceInternals);\n // TODO FN: Evaluate if we want to stop here, or remove this again?\n }\n\n // this._flushLock acts as a lock so that future calls to `_flush()`\n // will be blocked until this promise resolves\n if (!this._flushLock) {\n this._flushLock = this._runFlush();\n await this._flushLock;\n this._flushLock = undefined;\n return;\n }\n\n // Wait for previous flush to finish, then call the debounced `_flush()`.\n // It's possible there are other flush requests queued and waiting for it\n // to resolve. We want to reduce all outstanding requests (as well as any\n // new flush requests that occur within a second of the locked flush\n // completing) into a single flush.\n\n try {\n await this._flushLock;\n } catch (err) {\n DEBUG_BUILD && logger.error(err);\n } finally {\n this._debouncedFlush();\n }\n };}\n\n /** Save the session, if it is sticky */\n _maybeSaveSession() {\n if (this.session && this._options.stickySession) {\n saveSession(this.session);\n }\n }\n\n /** Handler for rrweb.record.onMutation */\n __init6() {this._onMutationHandler = (mutations) => {\n const count = mutations.length;\n\n const mutationLimit = this._options.mutationLimit;\n const mutationBreadcrumbLimit = this._options.mutationBreadcrumbLimit;\n const overMutationLimit = mutationLimit && count > mutationLimit;\n\n // Create a breadcrumb if a lot of mutations happen at the same time\n // We can show this in the UI as an information with potential performance improvements\n if (count > mutationBreadcrumbLimit || overMutationLimit) {\n const breadcrumb = createBreadcrumb({\n category: 'replay.mutations',\n data: {\n count,\n limit: overMutationLimit,\n },\n });\n this._createCustomBreadcrumb(breadcrumb);\n }\n\n // Stop replay if over the mutation limit\n if (overMutationLimit) {\n // This should never reject\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n this.stop({ reason: 'mutationLimit', forceFlush: this.recordingMode === 'session' });\n return false;\n }\n\n // `true` means we use the regular mutation handling by rrweb\n return true;\n };}\n}\n\nfunction getOption(\n selectors,\n defaultSelectors,\n deprecatedClassOption,\n deprecatedSelectorOption,\n) {\n const deprecatedSelectors = typeof deprecatedSelectorOption === 'string' ? deprecatedSelectorOption.split(',') : [];\n\n const allSelectors = [\n ...selectors,\n // @deprecated\n ...deprecatedSelectors,\n\n // sentry defaults\n ...defaultSelectors,\n ];\n\n // @deprecated\n if (typeof deprecatedClassOption !== 'undefined') {\n // NOTE: No support for RegExp\n if (typeof deprecatedClassOption === 'string') {\n allSelectors.push(`.${deprecatedClassOption}`);\n }\n\n consoleSandbox(() => {\n // eslint-disable-next-line no-console\n console.warn(\n '[Replay] You are using a deprecated configuration item for privacy. Read the documentation on how to use the new privacy configuration.',\n );\n });\n }\n\n return allSelectors.join(',');\n}\n\n/**\n * Returns privacy related configuration for use in rrweb\n */\nfunction getPrivacyOptions({\n mask,\n unmask,\n block,\n unblock,\n ignore,\n\n // eslint-disable-next-line deprecation/deprecation\n blockClass,\n // eslint-disable-next-line deprecation/deprecation\n blockSelector,\n // eslint-disable-next-line deprecation/deprecation\n maskTextClass,\n // eslint-disable-next-line deprecation/deprecation\n maskTextSelector,\n // eslint-disable-next-line deprecation/deprecation\n ignoreClass,\n}) {\n const defaultBlockedElements = ['base[href=\"/\"]'];\n\n const maskSelector = getOption(mask, ['.sentry-mask', '[data-sentry-mask]'], maskTextClass, maskTextSelector);\n const unmaskSelector = getOption(unmask, ['.sentry-unmask', '[data-sentry-unmask]']);\n\n const options = {\n // We are making the decision to make text and input selectors the same\n maskTextSelector: maskSelector,\n unmaskTextSelector: unmaskSelector,\n\n blockSelector: getOption(\n block,\n ['.sentry-block', '[data-sentry-block]', ...defaultBlockedElements],\n blockClass,\n blockSelector,\n ),\n unblockSelector: getOption(unblock, ['.sentry-unblock', '[data-sentry-unblock]']),\n ignoreSelector: getOption(ignore, ['.sentry-ignore', '[data-sentry-ignore]', 'input[type=\"file\"]'], ignoreClass),\n };\n\n if (blockClass instanceof RegExp) {\n options.blockClass = blockClass;\n }\n\n if (maskTextClass instanceof RegExp) {\n options.maskTextClass = maskTextClass;\n }\n\n return options;\n}\n\n/**\n * Masks an attribute if necessary, otherwise return attribute value as-is.\n */\nfunction maskAttribute({\n el,\n key,\n maskAttributes,\n maskAllText,\n privacyOptions,\n value,\n}) {\n // We only mask attributes if `maskAllText` is true\n if (!maskAllText) {\n return value;\n }\n\n // unmaskTextSelector takes precendence\n if (privacyOptions.unmaskTextSelector && el.matches(privacyOptions.unmaskTextSelector)) {\n return value;\n }\n\n if (\n maskAttributes.includes(key) ||\n // Need to mask `value` attribute for `` if it's a button-like\n // type\n (key === 'value' && el.tagName === 'INPUT' && ['submit', 'button'].includes(el.getAttribute('type') || ''))\n ) {\n return value.replace(/[\\S]/g, '*');\n }\n\n return value;\n}\n\nconst MEDIA_SELECTORS =\n 'img,image,svg,video,object,picture,embed,map,audio,link[rel=\"icon\"],link[rel=\"apple-touch-icon\"]';\n\nconst DEFAULT_NETWORK_HEADERS = ['content-length', 'content-type', 'accept'];\n\nlet _initialized = false;\n\n/**\n * The main replay integration class, to be passed to `init({ integrations: [] })`.\n */\nclass Replay {\n /**\n * @inheritDoc\n */\n static __initStatic() {this.id = 'Replay';}\n\n /**\n * @inheritDoc\n */\n\n /**\n * Options to pass to `rrweb.record()`\n */\n\n /**\n * Initial options passed to the replay integration, merged with default values.\n * Note: `sessionSampleRate` and `errorSampleRate` are not required here, as they\n * can only be finally set when setupOnce() is called.\n *\n * @private\n */\n\n constructor({\n flushMinDelay = DEFAULT_FLUSH_MIN_DELAY,\n flushMaxDelay = DEFAULT_FLUSH_MAX_DELAY,\n minReplayDuration = MIN_REPLAY_DURATION,\n maxReplayDuration = MAX_REPLAY_DURATION,\n stickySession = true,\n useCompression = true,\n workerUrl,\n _experiments = {},\n sessionSampleRate,\n errorSampleRate,\n maskAllText = true,\n maskAllInputs = true,\n blockAllMedia = true,\n\n mutationBreadcrumbLimit = 750,\n mutationLimit = 10000,\n\n slowClickTimeout = 7000,\n slowClickIgnoreSelectors = [],\n\n networkDetailAllowUrls = [],\n networkDetailDenyUrls = [],\n networkCaptureBodies = true,\n networkRequestHeaders = [],\n networkResponseHeaders = [],\n\n mask = [],\n maskAttributes = ['title', 'placeholder'],\n unmask = [],\n block = [],\n unblock = [],\n ignore = [],\n maskFn,\n\n beforeAddRecordingEvent,\n beforeErrorSampling,\n\n // eslint-disable-next-line deprecation/deprecation\n blockClass,\n // eslint-disable-next-line deprecation/deprecation\n blockSelector,\n // eslint-disable-next-line deprecation/deprecation\n maskInputOptions,\n // eslint-disable-next-line deprecation/deprecation\n maskTextClass,\n // eslint-disable-next-line deprecation/deprecation\n maskTextSelector,\n // eslint-disable-next-line deprecation/deprecation\n ignoreClass,\n } = {}) {\n this.name = Replay.id;\n\n const privacyOptions = getPrivacyOptions({\n mask,\n unmask,\n block,\n unblock,\n ignore,\n blockClass,\n blockSelector,\n maskTextClass,\n maskTextSelector,\n ignoreClass,\n });\n\n this._recordingOptions = {\n maskAllInputs,\n maskAllText,\n maskInputOptions: { ...(maskInputOptions || {}), password: true },\n maskTextFn: maskFn,\n maskInputFn: maskFn,\n maskAttributeFn: (key, value, el) =>\n maskAttribute({\n maskAttributes,\n maskAllText,\n privacyOptions,\n key,\n value,\n el,\n }),\n\n ...privacyOptions,\n\n // Our defaults\n slimDOMOptions: 'all',\n inlineStylesheet: true,\n // Disable inline images as it will increase segment/replay size\n inlineImages: false,\n // collect fonts, but be aware that `sentry.io` needs to be an allowed\n // origin for playback\n collectFonts: true,\n errorHandler: (err) => {\n try {\n err.__rrweb__ = true;\n } catch (error) {\n // ignore errors here\n // this can happen if the error is frozen or does not allow mutation for other reasons\n }\n },\n };\n\n this._initialOptions = {\n flushMinDelay,\n flushMaxDelay,\n minReplayDuration: Math.min(minReplayDuration, MIN_REPLAY_DURATION_LIMIT),\n maxReplayDuration: Math.min(maxReplayDuration, MAX_REPLAY_DURATION),\n stickySession,\n sessionSampleRate,\n errorSampleRate,\n useCompression,\n workerUrl,\n blockAllMedia,\n maskAllInputs,\n maskAllText,\n mutationBreadcrumbLimit,\n mutationLimit,\n slowClickTimeout,\n slowClickIgnoreSelectors,\n networkDetailAllowUrls,\n networkDetailDenyUrls,\n networkCaptureBodies,\n networkRequestHeaders: _getMergedNetworkHeaders(networkRequestHeaders),\n networkResponseHeaders: _getMergedNetworkHeaders(networkResponseHeaders),\n beforeAddRecordingEvent,\n beforeErrorSampling,\n\n _experiments,\n };\n\n if (typeof sessionSampleRate === 'number') {\n // eslint-disable-next-line\n console.warn(\n `[Replay] You are passing \\`sessionSampleRate\\` to the Replay integration.\nThis option is deprecated and will be removed soon.\nInstead, configure \\`replaysSessionSampleRate\\` directly in the SDK init options, e.g.:\nSentry.init({ replaysSessionSampleRate: ${sessionSampleRate} })`,\n );\n\n this._initialOptions.sessionSampleRate = sessionSampleRate;\n }\n\n if (typeof errorSampleRate === 'number') {\n // eslint-disable-next-line\n console.warn(\n `[Replay] You are passing \\`errorSampleRate\\` to the Replay integration.\nThis option is deprecated and will be removed soon.\nInstead, configure \\`replaysOnErrorSampleRate\\` directly in the SDK init options, e.g.:\nSentry.init({ replaysOnErrorSampleRate: ${errorSampleRate} })`,\n );\n\n this._initialOptions.errorSampleRate = errorSampleRate;\n }\n\n if (this._initialOptions.blockAllMedia) {\n // `blockAllMedia` is a more user friendly option to configure blocking\n // embedded media elements\n this._recordingOptions.blockSelector = !this._recordingOptions.blockSelector\n ? MEDIA_SELECTORS\n : `${this._recordingOptions.blockSelector},${MEDIA_SELECTORS}`;\n }\n\n if (this._isInitialized && isBrowser()) {\n throw new Error('Multiple Sentry Session Replay instances are not supported');\n }\n\n this._isInitialized = true;\n }\n\n /** If replay has already been initialized */\n get _isInitialized() {\n return _initialized;\n }\n\n /** Update _isInitialized */\n set _isInitialized(value) {\n _initialized = value;\n }\n\n /**\n * Setup and initialize replay container\n */\n setupOnce() {\n if (!isBrowser()) {\n return;\n }\n\n this._setup();\n\n // Once upon a time, we tried to create a transaction in `setupOnce` and it would\n // potentially create a transaction before some native SDK integrations have run\n // and applied their own global event processor. An example is:\n // https://github.com/getsentry/sentry-javascript/blob/b47ceafbdac7f8b99093ce6023726ad4687edc48/packages/browser/src/integrations/useragent.ts\n //\n // So we call `this._initialize()` in next event loop as a workaround to wait for other\n // global event processors to finish. This is no longer needed, but keeping it\n // here to avoid any future issues.\n setTimeout(() => this._initialize());\n }\n\n /**\n * Start a replay regardless of sampling rate. Calling this will always\n * create a new session. Will throw an error if replay is already in progress.\n *\n * Creates or loads a session, attaches listeners to varying events (DOM,\n * PerformanceObserver, Recording, Sentry SDK, etc)\n */\n start() {\n if (!this._replay) {\n return;\n }\n\n this._replay.start();\n }\n\n /**\n * Start replay buffering. Buffers until `flush()` is called or, if\n * `replaysOnErrorSampleRate` > 0, until an error occurs.\n */\n startBuffering() {\n if (!this._replay) {\n return;\n }\n\n this._replay.startBuffering();\n }\n\n /**\n * Currently, this needs to be manually called (e.g. for tests). Sentry SDK\n * does not support a teardown\n */\n stop() {\n if (!this._replay) {\n return Promise.resolve();\n }\n\n return this._replay.stop({ forceFlush: this._replay.recordingMode === 'session' });\n }\n\n /**\n * If not in \"session\" recording mode, flush event buffer which will create a new replay.\n * Unless `continueRecording` is false, the replay will continue to record and\n * behave as a \"session\"-based replay.\n *\n * Otherwise, queue up a flush.\n */\n flush(options) {\n if (!this._replay || !this._replay.isEnabled()) {\n return Promise.resolve();\n }\n\n return this._replay.sendBufferedReplayOrFlush(options);\n }\n\n /**\n * Get the current session ID.\n */\n getReplayId() {\n if (!this._replay || !this._replay.isEnabled()) {\n return;\n }\n\n return this._replay.getSessionId();\n }\n /**\n * Initializes replay.\n */\n _initialize() {\n if (!this._replay) {\n return;\n }\n\n this._replay.initializeSampling();\n }\n\n /** Setup the integration. */\n _setup() {\n // Client is not available in constructor, so we need to wait until setupOnce\n const finalOptions = loadReplayOptionsFromClient(this._initialOptions);\n\n this._replay = new ReplayContainer({\n options: finalOptions,\n recordingOptions: this._recordingOptions,\n });\n }\n}Replay.__initStatic();\n\n/** Parse Replay-related options from SDK options */\nfunction loadReplayOptionsFromClient(initialOptions) {\n const client = getClient();\n const opt = client && (client.getOptions() );\n\n const finalOptions = { sessionSampleRate: 0, errorSampleRate: 0, ...dropUndefinedKeys(initialOptions) };\n\n if (!opt) {\n consoleSandbox(() => {\n // eslint-disable-next-line no-console\n console.warn('SDK client is not available.');\n });\n return finalOptions;\n }\n\n if (\n initialOptions.sessionSampleRate == null && // TODO remove once deprecated rates are removed\n initialOptions.errorSampleRate == null && // TODO remove once deprecated rates are removed\n opt.replaysSessionSampleRate == null &&\n opt.replaysOnErrorSampleRate == null\n ) {\n consoleSandbox(() => {\n // eslint-disable-next-line no-console\n console.warn(\n 'Replay is disabled because neither `replaysSessionSampleRate` nor `replaysOnErrorSampleRate` are set.',\n );\n });\n }\n\n if (typeof opt.replaysSessionSampleRate === 'number') {\n finalOptions.sessionSampleRate = opt.replaysSessionSampleRate;\n }\n\n if (typeof opt.replaysOnErrorSampleRate === 'number') {\n finalOptions.errorSampleRate = opt.replaysOnErrorSampleRate;\n }\n\n return finalOptions;\n}\n\nfunction _getMergedNetworkHeaders(headers) {\n return [...DEFAULT_NETWORK_HEADERS, ...headers.map(header => header.toLowerCase())];\n}\n\nexport { Replay };\n//# sourceMappingURL=index.js.map\n","// https://github.com/alangpierce/sucrase/tree/265887868966917f3b924ce38dfad01fbab1329f\n//\n// The MIT License (MIT)\n//\n// Copyright (c) 2012-2018 various contributors (see AUTHORS)\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in all\n// copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n// SOFTWARE.\n\n/**\n * Polyfill for the nullish coalescing operator (`??`).\n *\n * Note that the RHS is wrapped in a function so that if it's a computed value, that evaluation won't happen unless the\n * LHS evaluates to a nullish value, to mimic the operator's short-circuiting behavior.\n *\n * Adapted from Sucrase (https://github.com/alangpierce/sucrase)\n *\n * @param lhs The value of the expression to the left of the `??`\n * @param rhsFn A function returning the value of the expression to the right of the `??`\n * @returns The LHS value, unless it's `null` or `undefined`, in which case, the RHS value\n */\nfunction _nullishCoalesce(lhs, rhsFn) {\n // by checking for loose equality to `null`, we catch both `null` and `undefined`\n return lhs != null ? lhs : rhsFn();\n}\n\n// Sucrase version:\n// function _nullishCoalesce(lhs, rhsFn) {\n// if (lhs != null) {\n// return lhs;\n// } else {\n// return rhsFn();\n// }\n// }\n\nexport { _nullishCoalesce };\n//# sourceMappingURL=_nullishCoalesce.js.map\n","import { GLOBAL_OBJ, getLocationHref, logger, isBrowser } from '@sentry/utils';\nimport { prepareEvent, getIsolationScope, getClient, withScope, createEventEnvelope, getCurrentScope } from '@sentry/core';\n\n// exporting a separate copy of `WINDOW` rather than exporting the one from `@sentry/browser`\n// prevents the browser package from being bundled in the CDN bundle, and avoids a\n// circular dependency between the browser and feedback packages\nconst WINDOW = GLOBAL_OBJ ;\n\nconst LIGHT_BACKGROUND = '#ffffff';\nconst INHERIT = 'inherit';\nconst SUBMIT_COLOR = 'rgba(108, 95, 199, 1)';\nconst LIGHT_THEME = {\n fontFamily: \"'Helvetica Neue', Arial, sans-serif\",\n fontSize: '14px',\n\n background: LIGHT_BACKGROUND,\n backgroundHover: '#f6f6f7',\n foreground: '#2b2233',\n border: '1.5px solid rgba(41, 35, 47, 0.13)',\n boxShadow: '0px 4px 24px 0px rgba(43, 34, 51, 0.12)',\n\n success: '#268d75',\n error: '#df3338',\n\n submitBackground: 'rgba(88, 74, 192, 1)',\n submitBackgroundHover: SUBMIT_COLOR,\n submitBorder: SUBMIT_COLOR,\n submitOutlineFocus: '#29232f',\n submitForeground: LIGHT_BACKGROUND,\n submitForegroundHover: LIGHT_BACKGROUND,\n\n cancelBackground: 'transparent',\n cancelBackgroundHover: 'var(--background-hover)',\n cancelBorder: 'var(--border)',\n cancelOutlineFocus: 'var(--input-outline-focus)',\n cancelForeground: 'var(--foreground)',\n cancelForegroundHover: 'var(--foreground)',\n\n inputBackground: INHERIT,\n inputForeground: INHERIT,\n inputBorder: 'var(--border)',\n inputOutlineFocus: SUBMIT_COLOR,\n};\n\nconst DEFAULT_THEME = {\n light: LIGHT_THEME,\n dark: {\n ...LIGHT_THEME,\n\n background: '#29232f',\n backgroundHover: '#352f3b',\n foreground: '#ebe6ef',\n border: '1.5px solid rgba(235, 230, 239, 0.15)',\n\n success: '#2da98c',\n error: '#f55459',\n },\n};\n\nconst ACTOR_LABEL = 'Report a Bug';\nconst CANCEL_BUTTON_LABEL = 'Cancel';\nconst SUBMIT_BUTTON_LABEL = 'Send Bug Report';\nconst FORM_TITLE = 'Report a Bug';\nconst EMAIL_PLACEHOLDER = 'your.email@example.org';\nconst EMAIL_LABEL = 'Email';\nconst MESSAGE_PLACEHOLDER = \"What's the bug? What did you expect?\";\nconst MESSAGE_LABEL = 'Description';\nconst NAME_PLACEHOLDER = 'Your Name';\nconst NAME_LABEL = 'Name';\nconst SUCCESS_MESSAGE_TEXT = 'Thank you for your report!';\n\nconst FEEDBACK_WIDGET_SOURCE = 'widget';\nconst FEEDBACK_API_SOURCE = 'api';\n\n/**\n * Prepare a feedback event & enrich it with the SDK metadata.\n */\nasync function prepareFeedbackEvent({\n client,\n scope,\n event,\n}) {\n const eventHint = {};\n if (client.emit) {\n client.emit('preprocessEvent', event, eventHint);\n }\n\n const preparedEvent = (await prepareEvent(\n client.getOptions(),\n event,\n eventHint,\n scope,\n client,\n getIsolationScope(),\n )) ;\n\n if (preparedEvent === null) {\n // Taken from baseclient's `_processEvent` method, where this is handled for errors/transactions\n client.recordDroppedEvent('event_processor', 'feedback', event);\n return null;\n }\n\n // This normally happens in browser client \"_prepareEvent\"\n // but since we do not use this private method from the client, but rather the plain import\n // we need to do this manually.\n preparedEvent.platform = preparedEvent.platform || 'javascript';\n\n return preparedEvent;\n}\n\n/**\n * Send feedback using transport\n */\nasync function sendFeedbackRequest(\n { feedback: { message, email, name, source, url } },\n { includeReplay = true } = {},\n) {\n const client = getClient();\n const transport = client && client.getTransport();\n const dsn = client && client.getDsn();\n\n if (!client || !transport || !dsn) {\n return;\n }\n\n const baseEvent = {\n contexts: {\n feedback: {\n contact_email: email,\n name,\n message,\n url,\n source,\n },\n },\n type: 'feedback',\n };\n\n return withScope(async scope => {\n // No use for breadcrumbs in feedback\n scope.clearBreadcrumbs();\n\n if ([FEEDBACK_API_SOURCE, FEEDBACK_WIDGET_SOURCE].includes(String(source))) {\n scope.setLevel('info');\n }\n\n const feedbackEvent = await prepareFeedbackEvent({\n scope,\n client,\n event: baseEvent,\n });\n\n if (!feedbackEvent) {\n return;\n }\n\n if (client.emit) {\n client.emit('beforeSendFeedback', feedbackEvent, { includeReplay: Boolean(includeReplay) });\n }\n\n const envelope = createEventEnvelope(feedbackEvent, dsn, client.getOptions()._metadata, client.getOptions().tunnel);\n\n let response;\n\n try {\n response = await transport.send(envelope);\n } catch (err) {\n const error = new Error('Unable to send Feedback');\n\n try {\n // In case browsers don't allow this property to be writable\n // @ts-expect-error This needs lib es2022 and newer\n error.cause = err;\n } catch (e) {\n // nothing to do\n }\n throw error;\n }\n\n // TODO (v8): we can remove this guard once transport.send's type signature doesn't include void anymore\n if (!response) {\n return;\n }\n\n // Require valid status codes, otherwise can assume feedback was not sent successfully\n if (typeof response.statusCode === 'number' && (response.statusCode < 200 || response.statusCode >= 300)) {\n throw new Error('Unable to send Feedback');\n }\n\n return response;\n });\n}\n\n/*\n * For reference, the fully built event looks something like this:\n * {\n * \"type\": \"feedback\",\n * \"event_id\": \"d2132d31b39445f1938d7e21b6bf0ec4\",\n * \"timestamp\": 1597977777.6189718,\n * \"dist\": \"1.12\",\n * \"platform\": \"javascript\",\n * \"environment\": \"production\",\n * \"release\": 42,\n * \"tags\": {\"transaction\": \"/organizations/:orgId/performance/:eventSlug/\"},\n * \"sdk\": {\"name\": \"name\", \"version\": \"version\"},\n * \"user\": {\n * \"id\": \"123\",\n * \"username\": \"user\",\n * \"email\": \"user@site.com\",\n * \"ip_address\": \"192.168.11.12\",\n * },\n * \"request\": {\n * \"url\": None,\n * \"headers\": {\n * \"user-Agent\": \"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/15.5 Safari/605.1.15\"\n * },\n * },\n * \"contexts\": {\n * \"feedback\": {\n * \"message\": \"test message\",\n * \"contact_email\": \"test@example.com\",\n * \"type\": \"feedback\",\n * },\n * \"trace\": {\n * \"trace_id\": \"4C79F60C11214EB38604F4AE0781BFB2\",\n * \"span_id\": \"FA90FDEAD5F74052\",\n * \"type\": \"trace\",\n * },\n * \"replay\": {\n * \"replay_id\": \"e2d42047b1c5431c8cba85ee2a8ab25d\",\n * },\n * },\n * }\n */\n\n/**\n * Public API to send a Feedback item to Sentry\n */\nfunction sendFeedback(\n { name, email, message, source = FEEDBACK_API_SOURCE, url = getLocationHref() },\n options = {},\n) {\n if (!message) {\n throw new Error('Unable to submit feedback with empty message');\n }\n\n return sendFeedbackRequest(\n {\n feedback: {\n name,\n email,\n message,\n url,\n source,\n },\n },\n options,\n );\n}\n\n/**\n * This serves as a build time flag that will be true by default, but false in non-debug builds or if users replace `__SENTRY_DEBUG__` in their generated code.\n *\n * ATTENTION: This constant must never cross package boundaries (i.e. be exported) to guarantee that it can be used for tree shaking.\n */\nconst DEBUG_BUILD = (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__);\n\n/**\n * Quick and dirty deep merge for the Feedback integration options\n */\nfunction mergeOptions(\n defaultOptions,\n optionOverrides,\n) {\n return {\n ...defaultOptions,\n ...optionOverrides,\n themeDark: {\n ...defaultOptions.themeDark,\n ...optionOverrides.themeDark,\n },\n themeLight: {\n ...defaultOptions.themeLight,\n ...optionOverrides.themeLight,\n },\n };\n}\n\n/**\n * Creates