{"version":3,"file":"static/js/main.e4d719f2.js","mappings":"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","sources":["components/Environment.ts","utils/ApiAssetUtil.ts","utils/AppVersionUtil.ts","utils/AuthUtil.ts","utils/FetchUtil.ts","utils/LazyUtil.ts","utils/LocalStorageUtil.ts","utils/ObjectUtil.ts","../node_modules/@sentry/src/version.ts","../node_modules/@sentry/src/integrations/inboundfilters.ts","../node_modules/@sentry/src/integrations/functiontostring.ts","../node_modules/@sentry/src/integration.ts","../node_modules/@sentry/src/sdk.ts","../node_modules/@sentry/src/api.ts","../node_modules/@babel/runtime/helpers/esm/construct.js","../node_modules/@babel/runtime/helpers/esm/wrapNativeSuper.js","../node_modules/@babel/runtime/helpers/esm/isNativeFunction.js","../node_modules/@sentry/src/error.ts","../node_modules/@sentry/src/dsn.ts","../node_modules/@sentry/src/memo.ts","../node_modules/@sentry/src/normalize.ts","../node_modules/@sentry/src/envelope.ts","../node_modules/@sentry/src/baseclient.ts","../node_modules/src/eventbuilder.ts","../node_modules/src/helpers.ts","../node_modules/@sentry/src/severity.ts","../node_modules/@sentry/src/url.ts","../node_modules/src/integrations/breadcrumbs.ts","../node_modules/src/client.ts","../node_modules/@sentry/src/clientreport.ts","../node_modules/src/stack-parsers.ts","../node_modules/src/integrations/trycatch.ts","../node_modules/src/integrations/globalhandlers.ts","../node_modules/src/integrations/linkederrors.ts","../node_modules/src/integrations/dedupe.ts","../node_modules/src/integrations/httpcontext.ts","../node_modules/@sentry/src/promisebuffer.ts","../node_modules/@sentry/src/ratelimit.ts","../node_modules/@sentry/src/transports/base.ts","../node_modules/src/transports/utils.ts","../node_modules/src/transports/fetch.ts","../node_modules/src/transports/xhr.ts","../node_modules/src/sdk.ts","../node_modules/@sentry/src/reactrouter.tsx","../node_modules/@sentry/src/tracing.ts","../node_modules/@sentry/src/baggage.ts","../node_modules/src/browser/types.ts","../node_modules/src/browser/web-vitals/lib/bindReporter.ts","../node_modules/src/browser/web-vitals/lib/getNavigationEntry.ts","../node_modules/src/browser/web-vitals/lib/getActivationStart.ts","../node_modules/src/browser/web-vitals/lib/initMetric.ts","../node_modules/src/browser/web-vitals/lib/generateUniqueID.ts","../node_modules/src/browser/web-vitals/lib/observe.ts","../node_modules/src/browser/web-vitals/lib/onHidden.ts","../node_modules/src/browser/web-vitals/lib/getVisibilityWatcher.ts","../node_modules/src/browser/web-vitals/getLCP.ts","../node_modules/src/browser/metrics/utils.ts","../node_modules/src/browser/metrics/index.ts","../node_modules/src/browser/web-vitals/getCLS.ts","../node_modules/src/browser/web-vitals/getFID.ts","../node_modules/src/browser/request.ts","../node_modules/src/browser/browsertracing.ts","../node_modules/src/browser/router.ts","../node_modules/@sentry/src/buildPolyfills/_optionalChain.ts","../node_modules/src/browser/backgroundtab.ts","../node_modules/src/index.ts","utils/SentryUtil.ts","../node_modules/@sentry/src/exports.ts","../node_modules/@sentry/src/hub.ts","../node_modules/@sentry/src/scope.ts","../node_modules/@sentry/src/session.ts","../node_modules/@sentry/react/node_modules/hoist-non-react-statics/dist/hoist-non-react-statics.cjs.js","../node_modules/src/errors.ts","../node_modules/src/hubextensions.ts","../node_modules/src/idletransaction.ts","../node_modules/src/span.ts","../node_modules/src/transaction.ts","../node_modules/src/utils.ts","../node_modules/@sentry/src/browser.ts","../node_modules/@sentry/src/buildPolyfills/_nullishCoalesce.ts","../node_modules/@sentry/src/instrument.ts","../node_modules/@sentry/src/is.ts","../node_modules/@sentry/src/logger.ts","../node_modules/@sentry/src/misc.ts","../node_modules/@sentry/src/node.ts","../node_modules/@sentry/src/env.ts","../node_modules/@sentry/src/object.ts","../node_modules/@sentry/src/stacktrace.ts","../node_modules/@sentry/src/string.ts","../node_modules/@sentry/src/supports.ts","../node_modules/@sentry/src/syncpromise.ts","../node_modules/@sentry/src/time.ts","../node_modules/@sentry/src/worldwide.ts","../node_modules/decode-uri-component/index.js","../node_modules/gud/index.js","../node_modules/resolve-pathname/esm/resolve-pathname.js","../node_modules/value-equal/esm/value-equal.js","../node_modules/history/esm/history.js","../node_modules/hoist-non-react-statics/dist/hoist-non-react-statics.cjs.js","../node_modules/isarray/index.js","../node_modules/object-assign/index.js","../node_modules/path-to-regexp/index.js","../node_modules/prop-types/factoryWithThrowingShims.js","../node_modules/prop-types/index.js","../node_modules/prop-types/lib/ReactPropTypesSecret.js","../node_modules/query-string/index.js","../node_modules/react-dom/cjs/react-dom.production.min.js","../node_modules/react-dom/index.js","../node_modules/react-is/cjs/react-is.production.min.js","../node_modules/react-is/index.js","../node_modules/mini-create-react-context/dist/esm/index.js","../node_modules/react-router/modules/RouterContext.js","../node_modules/react-router/modules/Router.js","../node_modules/react-router/modules/MemoryRouter.js","../node_modules/react-router/modules/Lifecycle.js","../node_modules/react-router/modules/generatePath.js","../node_modules/react-router/modules/Redirect.js","../node_modules/react-router/modules/matchPath.js","../node_modules/react-router/modules/Route.js","../node_modules/react-router/modules/StaticRouter.js","../node_modules/react-router/modules/Switch.js","../node_modules/react-router/modules/withRouter.js","../node_modules/react-router/modules/hooks.js","../node_modules/react/cjs/react-jsx-runtime.production.min.js","../node_modules/react/cjs/react.production.min.js","../node_modules/react/index.js","../node_modules/react/jsx-runtime.js","../node_modules/scheduler/cjs/scheduler.production.min.js","../node_modules/scheduler/index.js","../node_modules/strict-uri-encode/index.js","../node_modules/tiny-invariant/dist/tiny-invariant.esm.js","../node_modules/@babel/runtime/helpers/esm/arrayLikeToArray.js","../node_modules/@babel/runtime/helpers/esm/arrayWithHoles.js","../node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js","../node_modules/@babel/runtime/helpers/esm/asyncToGenerator.js","../node_modules/@babel/runtime/helpers/esm/classCallCheck.js","../node_modules/@babel/runtime/helpers/esm/createClass.js","../node_modules/@babel/runtime/helpers/esm/createForOfIteratorHelper.js","../node_modules/@babel/runtime/helpers/esm/createSuper.js","../node_modules/@babel/runtime/helpers/esm/defineProperty.js","../node_modules/@babel/runtime/helpers/esm/extends.js","../node_modules/@babel/runtime/helpers/esm/superPropBase.js","../node_modules/@babel/runtime/helpers/esm/get.js","../node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js","../node_modules/@babel/runtime/helpers/esm/inherits.js","../node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","../node_modules/@babel/runtime/helpers/esm/isNativeReflectConstruct.js","../node_modules/@babel/runtime/helpers/esm/iterableToArray.js","../node_modules/@babel/runtime/helpers/esm/nonIterableRest.js","../node_modules/@babel/runtime/helpers/esm/objectSpread2.js","../node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js","../node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js","../node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js","../node_modules/@babel/runtime/helpers/esm/regeneratorRuntime.js","../node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","../node_modules/@babel/runtime/helpers/esm/slicedToArray.js","../node_modules/@babel/runtime/helpers/esm/iterableToArrayLimit.js","../node_modules/@babel/runtime/helpers/esm/toConsumableArray.js","../node_modules/@babel/runtime/helpers/esm/arrayWithoutHoles.js","../node_modules/@babel/runtime/helpers/esm/nonIterableSpread.js","../node_modules/@babel/runtime/helpers/esm/toPropertyKey.js","../node_modules/@babel/runtime/helpers/esm/toPrimitive.js","../node_modules/@babel/runtime/helpers/esm/typeof.js","../node_modules/@babel/runtime/helpers/esm/unsupportedIterableToArray.js","../webpack/bootstrap","../webpack/runtime/compat get default export","../webpack/runtime/define property getters","../webpack/runtime/ensure chunk","../webpack/runtime/get javascript chunk filename","../webpack/runtime/get mini-css chunk filename","../webpack/runtime/global","../webpack/runtime/harmony module decorator","../webpack/runtime/hasOwnProperty shorthand","../webpack/runtime/load script","../webpack/runtime/make namespace object","../webpack/runtime/node module decorator","../webpack/runtime/publicPath","../webpack/runtime/css loading","../webpack/runtime/jsonp chunk loading","index.tsx"],"sourcesContent":["/**\n * Class uses for determining the current app environment\n */\n\nconst ENV = process.env.REACT_APP_ENV;\n\nexport default class Environment {\n static toString = (): string | undefined => ENV;\n static isProduction = (): boolean => ENV === 'production';\n}","import ApiAsset from \"types/ApiAsset\";\n\nexport default class ApiAssetUtil {\n static TYPE_TO_LABEL: { [key: string]: string } = {\n account: \"Account\",\n custom_field: \"Custom Field\",\n email: \"Email\",\n form: \"Form\",\n form_submission: \"Form Submission\",\n segment: \"Segment\",\n smart_content: \"Smart Content\",\n site: \"Site\",\n user: \"User\",\n visit: \"Visit\",\n visitor: \"Visitor\",\n visitor_attribute: \"Visitor Attribute\",\n webhook: \"Webhook\"\n };\n\n static TYPE_TO_CLIENT_ENDPOINT: { [key: string]: string } = {\n account: \"accounts\",\n custom_field: \"customfields\",\n email: \"emails\",\n form: \"forms\",\n form_submission: \"submissions\",\n segment: \"segments\",\n smart_content: \"smartcontents\",\n site: \"sites\",\n user: \"users\",\n visit: \"visits\",\n visitor: \"visitors\",\n visitor_attribute: \"visitorattributes\"\n };\n\n static CLIENT_ENDPOINT_TO_TYPE: {[key: string]: string} = {\n accounts: \"account\",\n custom_fields: \"custom_field\",\n emails: \"email\",\n forms: \"form\",\n submissions: \"submission\",\n segments: \"segment\",\n smart_contents: \"smart_content\",\n sites: \"site\",\n users: \"user\",\n visits: \"visit\",\n visitors: \"visitor\",\n visitor_attributes: \"visitor_attribute\"\n };\n\n static TYPE_TO_API_ENDPOINT: { [key: string]: string } = {\n account: ApiAssetUtil.TYPE_TO_CLIENT_ENDPOINT[\"account\"],\n custom_field: \"custom_fields\",\n email: ApiAssetUtil.TYPE_TO_CLIENT_ENDPOINT[\"email\"],\n form: ApiAssetUtil.TYPE_TO_CLIENT_ENDPOINT[\"form\"],\n form_submission: \"form_submissions\",\n segment: \"segments\",\n smart_content: \"smart_contents\",\n site: ApiAssetUtil.TYPE_TO_CLIENT_ENDPOINT[\"site\"],\n user: ApiAssetUtil.TYPE_TO_CLIENT_ENDPOINT[\"user\"],\n visit: \"visits\",\n visitor: \"visitors\",\n visitor_attribute: \"visitor_attributes\",\n webhook: \"form_webhooks\"\n };\n\n static getLabelFromType(assetType: string): string {\n return this.TYPE_TO_LABEL[assetType];\n };\n\n static getApiEndpointFromType(assetType: string): string {\n return this.TYPE_TO_API_ENDPOINT[assetType];\n };\n\n static getClientEndpointFromType(assetType: string): string {\n return this.TYPE_TO_CLIENT_ENDPOINT[assetType];\n };\n\n static getTypeFromClientEndpoint(assetType: string): string {\n return this.CLIENT_ENDPOINT_TO_TYPE[assetType];\n };\n\n static isNotEmptyAsset(asset: ApiAsset): boolean {\n return asset && !!asset.id;\n };\n}","import * as Sentry from '@sentry/react';\nimport FetchUtil from \"./FetchUtil\";\nimport Environment from \"components/Environment\";\n\nexport default class AppVersionUtil {\n static async verify(): Promise {\n const clientVersion = process.env.REACT_APP_SOURCE_VERSION;\n\n if (!clientVersion) {\n const message = \"Client's version does not seem to be a proper value: \" + clientVersion;\n console.warn(message);\n if (Environment.isProduction()) Sentry.captureException(message);\n\n return;\n }\n\n try {\n const appVersion: string = await FetchUtil.fetchText(`/api/app_version`);\n\n if (!appVersion) {\n const message = \"Failed to retrieve a proper App Version: \" + appVersion;\n console.warn(message);\n if (Environment.isProduction()) Sentry.captureException(message);\n\n return;\n }\n\n if (appVersion !== clientVersion) {\n console.log(\"App version updated. Refreshing the screen.\");\n window.location.reload(true);\n }\n\n } catch (e) {\n console.error(\"Could not get the app version \", e);\n }\n }\n}","import FetchUtil from './FetchUtil';\nimport queryString from 'query-string';\nimport LocalStorageUtil, {StorageKey} from \"./LocalStorageUtil\";\n\nconst USER_TOKEN_CREATION_ENDPOINT = '/api/user_token';\nconst USER_TOKEN_VERIFICATION_ENDPOINT = '/api/verify_token';\n\ntype TokenReadyCallback = (authToken: string | null) => any;\n\nlet authToken: string | null = null;\nlet isAuthTokenReady: boolean = false;\nconst waitingCallbacks: TokenReadyCallback[] = [];\n\n// If localStorage is available and accessing it doesn't throw any error, authToken can be retrieved at any time\nauthToken = LocalStorageUtil.get(StorageKey.jwt);\nif (authToken)\n isAuthTokenReady = true;\n\nif (!isAuthTokenReady && window.parent) {\n window.addEventListener('message', event => {\n if (event.data && event.data.action === 'authTokenLoaded')\n updateLocalAuthToken(event.data.authToken);\n });\n\n window.parent.postMessage({\n action: 'loadCliveAuthToken'\n }, '*');\n}\n\nfunction updateLocalAuthToken(token?: string | null) {\n isAuthTokenReady = true;\n authToken = token || null;\n waitingCallbacks.forEach((waitingCallback: TokenReadyCallback) => waitingCallback(authToken));\n waitingCallbacks.length = 0;\n}\n\nfunction handleAuthStorage(token: string) {\n updateLocalAuthToken(token);\n\n if (LocalStorageUtil.store(StorageKey.jwt, token)) {\n // After logging in reset current site and account, which could be old settings used by user who was previously using this browser\n LocalStorageUtil.delete(StorageKey.currentSiteId);\n LocalStorageUtil.delete(StorageKey.currentAccountId);\n\n return;\n }\n\n // Fallback when accessing localStorage throws an error or is null/undefined, which can happen in a Cascade iframe when 3rd party cookies are disabled\n if (window.parent)\n window.parent.postMessage({action: 'saveCliveAuthToken', authToken}, '*');\n}\n\nexport function onAuthTokenReady(callback: TokenReadyCallback) {\n if (isAuthTokenReady)\n callback(authToken);\n\n waitingCallbacks.push(callback);\n}\n\nexport function storedAuthTokenExists(): boolean {\n return authToken !== null;\n}\n\nexport function deleteStoredAuthToken(): void {\n updateLocalAuthToken(null);\n\n if (LocalStorageUtil.delete(StorageKey.jwt))\n return;\n\n // Fallback when accessing localStorage throws an error or is null/undefined, which can happen in a Cascade iframe when 3rd party cookies are disabled\n if (window.parent)\n window.parent.postMessage({action: 'deleteCliveAuthToken'}, '*');\n}\n\nexport function getAuthTokenAuthorizationHeader(): { Authorization: string } {\n return {'Authorization': \"Bearer \" + authToken};\n}\n\n/**\n * Attempts to retrieve a new authentication token for the user using his/her username + password and\n * returns a Promise for hooking into a successful login or catching an error.\n * @param username\n * @param password\n * @return Promise\n */\nexport async function getNewAuthToken(username: string, password: string) {\n const request = {\"auth\": {\"email\": username, \"password\": password}};\n\n return FetchUtil.fetchJson(USER_TOKEN_CREATION_ENDPOINT, {\n method: 'POST',\n body: JSON.stringify(request),\n includeAuthToken: false\n })\n .then(json => handleAuthStorage(json.jwt));\n}\n\n/**\n * Determines if the currently stored JWT (if there is one) is still valid.\n * @returns {boolean} returns false if there is no stored JWT or if it is no longer valid and true otherwise.\n */\nexport function verifyAuthTokenIsValid(callbacks) {\n callbacks = callbacks || {};\n if (!storedAuthTokenExists())\n if (callbacks.failure)\n return callbacks.failure();\n\n FetchUtil.fetchJson(USER_TOKEN_VERIFICATION_ENDPOINT, {\n method: 'POST',\n })\n .then(json => {\n if (callbacks.success)\n callbacks.success(json);\n })\n .catch(error => {\n if (callbacks.failure)\n callbacks.failure(error);\n });\n}\n\nexport function checkGoogleLogin(locationSearch, callbacks) {\n const query = queryString.parse(locationSearch);\n\n if (query.error) {\n if (callbacks.failure)\n callbacks.failure();\n }\n\n if (query.jwt) {\n handleAuthStorage(query.jwt);\n\n if (callbacks.success)\n callbacks.success();\n }\n}","import {getAuthTokenAuthorizationHeader} from './AuthUtil';\nimport {hasKeyIgnoreCase} from \"utils/ObjectUtil\";\n\nexport type Json = { [key: string]: any };\n\nexport default class FetchUtil {\n static async fetchJson(url: string, options?: Json): Promise<{ [key: string]: any }> {\n options = prepOptions(options);\n options = setJsonContentTypeIfEmpty(options);\n return await fetch(url, options)\n .then(handleErrorResponse)\n .then(handleJsonResponse);\n }\n\n static async send(url: string, options?: Json): Promise {\n return await fetch(url, prepOptions(options))\n .then(handleErrorResponse);\n }\n\n static async fetchText(url: string, options?: Json): Promise {\n return await fetch(url, prepOptions(options))\n .then(handleErrorResponse)\n .then(handleTextResponse);\n }\n\n static async fetchFile(url: string, options?: Json): Promise {\n const response = await fetch(url, prepOptions(options));\n \n if (!response.ok)\n return Promise.reject(response);\n \n const fileName = getFileNameFromResponse(response);\n const fileType = getFileTypeFromResponse(response);\n const blob = await response.blob();\n return new File([blob], fileName, {type: fileType});\n }\n}\n\nasync function handleErrorResponse(response) {\n if (response.ok) {\n return response;\n }\n\n if (isUnauthorized(response.status))\n return redirectToLogin()\n\n const exceptionToThrow = new Error(response.statusText || response.status);\n\n try {\n exceptionToThrow['response'] = response;\n const jsonError = await response.json();\n\n if (jsonError[\"correct_account_id\"] && window.location.href.indexOf('/accounts/') === -1)\n handleInvalidAccountError(jsonError, exceptionToThrow);\n else if (jsonError[\"error_messages\"])\n exceptionToThrow['errors'] = jsonError[\"error_messages\"];\n } catch (e) {\n throwSystemError(response, e);\n }\n\n throw exceptionToThrow;\n}\n\nfunction isUnauthorized(status) {\n return status === 401\n}\n\nfunction redirectToLogin() {\n window.location.href = \"/\";\n}\n\nfunction handleInvalidAccountError(invalidAccountError, exceptionToThrow) {\n window.location.href = window.location.origin + '/accounts/' + invalidAccountError[\"correct_account_id\"] + window.location.pathname;\n exceptionToThrow['errors'] = false; // This will prevent the error from appearing on the screen while it is reloading\n}\n\nasync function handleJsonResponse(response) {\n try {\n return await response.json();\n } catch (e) {\n // Catch any issues when parsing the response body as JSON.\n throwSystemError(response, e);\n }\n}\n\nasync function handleTextResponse(response) {\n try {\n return await response.text();\n } catch (e) {\n // Catch any issues when parsing the response body as text.\n throwSystemError(response, e);\n }\n}\n\nfunction prepOptions(options?: Json): Json {\n if (!options)\n options = {};\n\n if (!options.credentials)\n options.credentials = 'include';\n\n if (options.includeAuthToken !== false) {\n if (!options.headers)\n options.headers = {};\n options.headers = Object.assign(options.headers, getAuthTokenAuthorizationHeader());\n } else\n options.includeAuthToken = null; // Prevent this option from being included in the request\n\n return options;\n}\n\nfunction getFileNameFromResponse(response) {\n const contentDispositionHeader = response.headers.get('Content-Disposition');\n const filenameRegex = /filename=\"(.*?)\"/;\n const filenameMatch = filenameRegex.exec(contentDispositionHeader);\n\n return filenameMatch ? filenameMatch[1] || '' : '';\n}\n\nfunction throwSystemError(response, e?): void {\n const error = new Error(response.statusText || response.status);\n error['response'] = response;\n error['errors'] = [\"A system error occurred. We have been notified of the problem.\"];\n\n if (e)\n error['errors'].push(e);\n\n throw error;\n}\n\nfunction getFileTypeFromResponse(response) {\n return response.headers.get('Content-Type') || 'text/plain';\n}\n\nfunction setJsonContentTypeIfEmpty(options: Json): Json {\n if (!options.headers)\n options.headers = {};\n\n if (!hasKeyIgnoreCase(options.headers, 'content-type'))\n options.headers['Content-Type'] = 'application/json';\n\n return options;\n}","import {lazy} from 'react';\nimport AppVersionUtil from \"./AppVersionUtil\";\n\nexport const chunk = (lazyComponent : () => Promise | undefined) => {\n return lazy(() => {\n AppVersionUtil.verify();\n const component = lazyComponent();\n\n if (!component) {\n window.location.reload(true);\n return Promise.resolve();\n }\n\n return component.catch(() => {\n return;\n });\n });\n};","export enum StorageKey {\n jwt = 'jwt',\n currentSiteId = 'currentSiteId',\n currentAccountId = 'currentAccountId'\n}\n\ntype StoreSuccess = boolean;\n\nexport default class LocalStorageUtil {\n public static store(key: StorageKey, value: string | number): StoreSuccess {\n try {\n if (window.localStorage) {\n window.localStorage.setItem(key, value + '');\n return true;\n }\n } catch (e) {\n }\n return false\n }\n\n public static get(key: StorageKey): string | null {\n try {\n if (localStorage) {\n return localStorage.getItem(key);\n }\n } catch (e) {\n }\n return null;\n }\n\n public static delete(key: StorageKey): StoreSuccess {\n try {\n if (localStorage) {\n localStorage.removeItem(key);\n return true;\n }\n } catch (e) {\n }\n\n return false;\n }\n}","/**\n * Util functions for dealing with object literals\n */\n\n/**\n * Does a deep clone of an object literal\n * @param objectToClone\n */\nexport function deepClone(objectToClone: any): any {\n return JSON.parse(JSON.stringify(objectToClone));\n}\n\nexport function objectsEqual(object1: any, object2: any): boolean {\n // IMPROVEMENT: This will return false if object1 has its properties populated in a different order than object2\n return JSON.stringify(object1) === JSON.stringify(object2);\n}\n\nexport function emptyObject(object: any): boolean {\n for (var key in object) {\n if (object.hasOwnProperty(key))\n return false;\n }\n return true;\n}\n\nexport function hasKeyIgnoreCase(object: any, keyToFind: string): boolean {\n keyToFind = keyToFind.toLowerCase();\n return !!Object.keys(object).find(key => key.toLowerCase() === keyToFind);\n}","export const SDK_VERSION = '7.20.0';\n","import { Event, EventProcessor, Hub, Integration, StackFrame } from '@sentry/types';\nimport { getEventDescription, logger, stringMatchesSomePattern } from '@sentry/utils';\n\n// \"Script error.\" is hard coded into browsers for errors that it can't read.\n// this is the result of a script being pulled in from an external domain and CORS.\nconst DEFAULT_IGNORE_ERRORS = [/^Script error\\.?$/, /^Javascript error: Script error\\.? on line 0$/];\n\n/** Options for the InboundFilters integration */\nexport interface InboundFiltersOptions {\n allowUrls: Array;\n denyUrls: Array;\n ignoreErrors: Array;\n ignoreInternal: boolean;\n}\n\n/** Inbound filters configurable by the user */\nexport class InboundFilters implements Integration {\n /**\n * @inheritDoc\n */\n public static id: string = 'InboundFilters';\n\n /**\n * @inheritDoc\n */\n public name: string = InboundFilters.id;\n\n public constructor(private readonly _options: Partial = {}) {}\n\n /**\n * @inheritDoc\n */\n public setupOnce(addGlobalEventProcessor: (processor: EventProcessor) => void, getCurrentHub: () => Hub): void {\n const eventProcess: EventProcessor = (event: Event) => {\n const hub = getCurrentHub();\n if (hub) {\n const self = hub.getIntegration(InboundFilters);\n if (self) {\n const client = hub.getClient();\n const clientOptions = client ? client.getOptions() : {};\n const options = _mergeOptions(self._options, clientOptions);\n return _shouldDropEvent(event, options) ? null : event;\n }\n }\n return event;\n };\n\n eventProcess.id = this.name;\n addGlobalEventProcessor(eventProcess);\n }\n}\n\n/** JSDoc */\nexport function _mergeOptions(\n internalOptions: Partial = {},\n clientOptions: Partial = {},\n): Partial {\n return {\n allowUrls: [...(internalOptions.allowUrls || []), ...(clientOptions.allowUrls || [])],\n denyUrls: [...(internalOptions.denyUrls || []), ...(clientOptions.denyUrls || [])],\n ignoreErrors: [\n ...(internalOptions.ignoreErrors || []),\n ...(clientOptions.ignoreErrors || []),\n ...DEFAULT_IGNORE_ERRORS,\n ],\n ignoreInternal: internalOptions.ignoreInternal !== undefined ? internalOptions.ignoreInternal : true,\n };\n}\n\n/** JSDoc */\nexport function _shouldDropEvent(event: Event, options: Partial): boolean {\n if (options.ignoreInternal && _isSentryError(event)) {\n __DEBUG_BUILD__ &&\n logger.warn(`Event dropped due to being internal Sentry Error.\\nEvent: ${getEventDescription(event)}`);\n return true;\n }\n if (_isIgnoredError(event, options.ignoreErrors)) {\n __DEBUG_BUILD__ &&\n logger.warn(\n `Event dropped due to being matched by \\`ignoreErrors\\` option.\\nEvent: ${getEventDescription(event)}`,\n );\n return true;\n }\n if (_isDeniedUrl(event, options.denyUrls)) {\n __DEBUG_BUILD__ &&\n logger.warn(\n `Event dropped due to being matched by \\`denyUrls\\` option.\\nEvent: ${getEventDescription(\n event,\n )}.\\nUrl: ${_getEventFilterUrl(event)}`,\n );\n return true;\n }\n if (!_isAllowedUrl(event, options.allowUrls)) {\n __DEBUG_BUILD__ &&\n logger.warn(\n `Event dropped due to not being matched by \\`allowUrls\\` option.\\nEvent: ${getEventDescription(\n event,\n )}.\\nUrl: ${_getEventFilterUrl(event)}`,\n );\n return true;\n }\n return false;\n}\n\nfunction _isIgnoredError(event: Event, ignoreErrors?: Array): boolean {\n if (!ignoreErrors || !ignoreErrors.length) {\n return false;\n }\n\n return _getPossibleEventMessages(event).some(message => stringMatchesSomePattern(message, ignoreErrors));\n}\n\nfunction _isDeniedUrl(event: Event, denyUrls?: Array): boolean {\n // TODO: Use Glob instead?\n if (!denyUrls || !denyUrls.length) {\n return false;\n }\n const url = _getEventFilterUrl(event);\n return !url ? false : stringMatchesSomePattern(url, denyUrls);\n}\n\nfunction _isAllowedUrl(event: Event, allowUrls?: Array): boolean {\n // TODO: Use Glob instead?\n if (!allowUrls || !allowUrls.length) {\n return true;\n }\n const url = _getEventFilterUrl(event);\n return !url ? true : stringMatchesSomePattern(url, allowUrls);\n}\n\nfunction _getPossibleEventMessages(event: Event): string[] {\n if (event.message) {\n return [event.message];\n }\n if (event.exception) {\n try {\n const { type = '', value = '' } = (event.exception.values && event.exception.values[0]) || {};\n return [`${value}`, `${type}: ${value}`];\n } catch (oO) {\n __DEBUG_BUILD__ && logger.error(`Cannot extract message for event ${getEventDescription(event)}`);\n return [];\n }\n }\n return [];\n}\n\nfunction _isSentryError(event: Event): boolean {\n try {\n // @ts-ignore can't be a sentry error if undefined\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n return event.exception.values[0].type === 'SentryError';\n } catch (e) {\n // ignore\n }\n return false;\n}\n\nfunction _getLastValidUrl(frames: StackFrame[] = []): string | null {\n for (let i = frames.length - 1; i >= 0; i--) {\n const frame = frames[i];\n\n if (frame && frame.filename !== '' && frame.filename !== '[native code]') {\n return frame.filename || null;\n }\n }\n\n return null;\n}\n\nfunction _getEventFilterUrl(event: Event): string | null {\n try {\n let frames;\n try {\n // @ts-ignore we only care about frames if the whole thing here is defined\n frames = event.exception.values[0].stacktrace.frames;\n } catch (e) {\n // ignore\n }\n return frames ? _getLastValidUrl(frames) : null;\n } catch (oO) {\n __DEBUG_BUILD__ && logger.error(`Cannot extract url for event ${getEventDescription(event)}`);\n return null;\n }\n}\n","import { Integration, WrappedFunction } from '@sentry/types';\nimport { getOriginalFunction } from '@sentry/utils';\n\nlet originalFunctionToString: () => void;\n\n/** Patch toString calls to return proper name for wrapped functions */\nexport class FunctionToString implements Integration {\n /**\n * @inheritDoc\n */\n public static id: string = 'FunctionToString';\n\n /**\n * @inheritDoc\n */\n public name: string = FunctionToString.id;\n\n /**\n * @inheritDoc\n */\n public setupOnce(): void {\n // eslint-disable-next-line @typescript-eslint/unbound-method\n originalFunctionToString = Function.prototype.toString;\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n Function.prototype.toString = function (this: WrappedFunction, ...args: any[]): string {\n const context = getOriginalFunction(this) || this;\n return originalFunctionToString.apply(context, args);\n };\n }\n}\n","import { Integration, Options } from '@sentry/types';\nimport { arrayify, logger } from '@sentry/utils';\n\nimport { getCurrentHub } from './hub';\nimport { addGlobalEventProcessor } from './scope';\n\ndeclare module '@sentry/types' {\n interface Integration {\n isDefaultInstance?: boolean;\n }\n}\n\nexport const installedIntegrations: string[] = [];\n\n/** Map of integrations assigned to a client */\nexport type IntegrationIndex = {\n [key: string]: Integration;\n};\n\n/**\n * Remove duplicates from the given array, preferring the last instance of any duplicate. Not guaranteed to\n * preseve the order of integrations in the array.\n *\n * @private\n */\nfunction filterDuplicates(integrations: Integration[]): Integration[] {\n const integrationsByName: { [key: string]: Integration } = {};\n\n integrations.forEach(currentInstance => {\n const { name } = currentInstance;\n\n const existingInstance = integrationsByName[name];\n\n // We want integrations later in the array to overwrite earlier ones of the same type, except that we never want a\n // default instance to overwrite an existing user instance\n if (existingInstance && !existingInstance.isDefaultInstance && currentInstance.isDefaultInstance) {\n return;\n }\n\n integrationsByName[name] = currentInstance;\n });\n\n return Object.values(integrationsByName);\n}\n\n/** Gets integrations to install */\nexport function getIntegrationsToSetup(options: Options): Integration[] {\n const defaultIntegrations = options.defaultIntegrations || [];\n const userIntegrations = options.integrations;\n\n // We flag default instances, so that later we can tell them apart from any user-created instances of the same class\n defaultIntegrations.forEach(integration => {\n integration.isDefaultInstance = true;\n });\n\n let integrations: Integration[];\n\n if (Array.isArray(userIntegrations)) {\n integrations = [...defaultIntegrations, ...userIntegrations];\n } else if (typeof userIntegrations === 'function') {\n integrations = arrayify(userIntegrations(defaultIntegrations));\n } else {\n integrations = defaultIntegrations;\n }\n\n const finalIntegrations = filterDuplicates(integrations);\n\n // The `Debug` integration prints copies of the `event` and `hint` which will be passed to `beforeSend` or\n // `beforeSendTransaction`. It therefore has to run after all other integrations, so that the changes of all event\n // processors will be reflected in the printed values. For lack of a more elegant way to guarantee that, we therefore\n // locate it and, assuming it exists, pop it out of its current spot and shove it onto the end of the array.\n const debugIndex = finalIntegrations.findIndex(integration => integration.name === 'Debug');\n if (debugIndex !== -1) {\n const [debugInstance] = finalIntegrations.splice(debugIndex, 1);\n finalIntegrations.push(debugInstance);\n }\n\n return finalIntegrations;\n}\n\n/**\n * Given a list of integration instances this installs them all. When `withDefaults` is set to `true` then all default\n * integrations are added unless they were already provided before.\n * @param integrations array of integration instances\n * @param withDefault should enable default integrations\n */\nexport function setupIntegrations(integrations: Integration[]): IntegrationIndex {\n const integrationIndex: IntegrationIndex = {};\n\n integrations.forEach(integration => {\n integrationIndex[integration.name] = integration;\n\n if (installedIntegrations.indexOf(integration.name) === -1) {\n integration.setupOnce(addGlobalEventProcessor, getCurrentHub);\n installedIntegrations.push(integration.name);\n __DEBUG_BUILD__ && logger.log(`Integration installed: ${integration.name}`);\n }\n });\n\n return integrationIndex;\n}\n","import { Client, ClientOptions } from '@sentry/types';\nimport { logger } from '@sentry/utils';\n\nimport { getCurrentHub } from './hub';\n\n/** A class object that can instantiate Client objects. */\nexport type ClientClass = new (options: O) => F;\n\n/**\n * Internal function to create a new SDK client instance. The client is\n * installed and then bound to the current scope.\n *\n * @param clientClass The client class to instantiate.\n * @param options Options to pass to the client.\n */\nexport function initAndBind(\n clientClass: ClientClass,\n options: O,\n): void {\n if (options.debug === true) {\n if (__DEBUG_BUILD__) {\n logger.enable();\n } else {\n // use `console.warn` rather than `logger.warn` since by non-debug bundles have all `logger.x` statements stripped\n // eslint-disable-next-line no-console\n console.warn('[Sentry] Cannot initialize SDK with `debug` option using a non-debug bundle.');\n }\n }\n const hub = getCurrentHub();\n const scope = hub.getScope();\n if (scope) {\n scope.update(options.initialScope);\n }\n\n const client = new clientClass(options);\n hub.bindClient(client);\n}\n","import { ClientOptions, DsnComponents, DsnLike, SdkInfo } from '@sentry/types';\nimport { dsnToString, makeDsn, urlEncode } from '@sentry/utils';\n\nconst SENTRY_API_VERSION = '7';\n\n/** Returns the prefix to construct Sentry ingestion API endpoints. */\nfunction getBaseApiEndpoint(dsn: DsnComponents): string {\n const protocol = dsn.protocol ? `${dsn.protocol}:` : '';\n const port = dsn.port ? `:${dsn.port}` : '';\n return `${protocol}//${dsn.host}${port}${dsn.path ? `/${dsn.path}` : ''}/api/`;\n}\n\n/** Returns the ingest API endpoint for target. */\nfunction _getIngestEndpoint(dsn: DsnComponents): string {\n return `${getBaseApiEndpoint(dsn)}${dsn.projectId}/envelope/`;\n}\n\n/** Returns a URL-encoded string with auth config suitable for a query string. */\nfunction _encodedAuth(dsn: DsnComponents, sdkInfo: SdkInfo | undefined): string {\n return urlEncode({\n // We send only the minimum set of required information. See\n // https://github.com/getsentry/sentry-javascript/issues/2572.\n sentry_key: dsn.publicKey,\n sentry_version: SENTRY_API_VERSION,\n ...(sdkInfo && { sentry_client: `${sdkInfo.name}/${sdkInfo.version}` }),\n });\n}\n\n/**\n * Returns the envelope endpoint URL with auth in the query string.\n *\n * Sending auth as part of the query string and not as custom HTTP headers avoids CORS preflight requests.\n */\nexport function getEnvelopeEndpointWithUrlEncodedAuth(\n dsn: DsnComponents,\n // TODO (v8): Remove `tunnelOrOptions` in favor of `options`, and use the substitute code below\n // options: ClientOptions = {} as ClientOptions,\n tunnelOrOptions: string | ClientOptions = {} as ClientOptions,\n): string {\n // TODO (v8): Use this code instead\n // const { tunnel, _metadata = {} } = options;\n // return tunnel ? tunnel : `${_getIngestEndpoint(dsn)}?${_encodedAuth(dsn, _metadata.sdk)}`;\n\n const tunnel = typeof tunnelOrOptions === 'string' ? tunnelOrOptions : tunnelOrOptions.tunnel;\n const sdkInfo =\n typeof tunnelOrOptions === 'string' || !tunnelOrOptions._metadata ? undefined : tunnelOrOptions._metadata.sdk;\n\n return tunnel ? tunnel : `${_getIngestEndpoint(dsn)}?${_encodedAuth(dsn, sdkInfo)}`;\n}\n\n/** Returns the url to the report dialog endpoint. */\nexport function getReportDialogEndpoint(\n dsnLike: DsnLike,\n dialogOptions: {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n [key: string]: any;\n user?: { name?: string; email?: string };\n },\n): string {\n const dsn = makeDsn(dsnLike);\n const endpoint = `${getBaseApiEndpoint(dsn)}embed/error-page/`;\n\n let encodedOptions = `dsn=${dsnToString(dsn)}`;\n for (const key in dialogOptions) {\n if (key === 'dsn') {\n continue;\n }\n\n if (key === 'user') {\n const user = dialogOptions.user;\n if (!user) {\n continue;\n }\n if (user.name) {\n encodedOptions += `&name=${encodeURIComponent(user.name)}`;\n }\n if (user.email) {\n encodedOptions += `&email=${encodeURIComponent(user.email)}`;\n }\n } else {\n encodedOptions += `&${encodeURIComponent(key)}=${encodeURIComponent(dialogOptions[key] as string)}`;\n }\n }\n\n return `${endpoint}?${encodedOptions}`;\n}\n","import setPrototypeOf from \"./setPrototypeOf.js\";\nimport isNativeReflectConstruct from \"./isNativeReflectConstruct.js\";\nexport default function _construct(Parent, args, Class) {\n if (isNativeReflectConstruct()) {\n _construct = Reflect.construct.bind();\n } else {\n _construct = function _construct(Parent, args, Class) {\n var a = [null];\n a.push.apply(a, args);\n var Constructor = Function.bind.apply(Parent, a);\n var instance = new Constructor();\n if (Class) setPrototypeOf(instance, Class.prototype);\n return instance;\n };\n }\n return _construct.apply(null, arguments);\n}","import getPrototypeOf from \"./getPrototypeOf.js\";\nimport setPrototypeOf from \"./setPrototypeOf.js\";\nimport isNativeFunction from \"./isNativeFunction.js\";\nimport construct from \"./construct.js\";\nexport default function _wrapNativeSuper(Class) {\n var _cache = typeof Map === \"function\" ? new Map() : undefined;\n _wrapNativeSuper = function _wrapNativeSuper(Class) {\n if (Class === null || !isNativeFunction(Class)) return Class;\n if (typeof Class !== \"function\") {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n if (typeof _cache !== \"undefined\") {\n if (_cache.has(Class)) return _cache.get(Class);\n _cache.set(Class, Wrapper);\n }\n function Wrapper() {\n return construct(Class, arguments, getPrototypeOf(this).constructor);\n }\n Wrapper.prototype = Object.create(Class.prototype, {\n constructor: {\n value: Wrapper,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n return setPrototypeOf(Wrapper, Class);\n };\n return _wrapNativeSuper(Class);\n}","export default function _isNativeFunction(fn) {\n return Function.toString.call(fn).indexOf(\"[native code]\") !== -1;\n}","import type { ConsoleLevel } from './logger';\n\n/** An error emitted by Sentry SDKs and related utilities. */\nexport class SentryError extends Error {\n /** Display name of this error instance. */\n public name: string;\n\n public logLevel: ConsoleLevel;\n\n public constructor(public message: string, logLevel: ConsoleLevel = 'warn') {\n super(message);\n\n this.name = new.target.prototype.constructor.name;\n // This sets the prototype to be `Error`, not `SentryError`. It's unclear why we do this, but commenting this line\n // out causes various (seemingly totally unrelated) playwright tests consistently time out. FYI, this makes\n // instances of `SentryError` fail `obj instanceof SentryError` checks.\n Object.setPrototypeOf(this, new.target.prototype);\n this.logLevel = logLevel;\n }\n}\n","import { DsnComponents, DsnLike, DsnProtocol } from '@sentry/types';\n\nimport { SentryError } from './error';\n\n/** Regular expression used to parse a Dsn. */\nconst DSN_REGEX = /^(?:(\\w+):)\\/\\/(?:(\\w+)(?::(\\w+)?)?@)([\\w.-]+)(?::(\\d+))?\\/(.+)/;\n\nfunction isValidProtocol(protocol?: string): protocol is DsnProtocol {\n return protocol === 'http' || protocol === 'https';\n}\n\n/**\n * Renders the string representation of this Dsn.\n *\n * By default, this will render the public representation without the password\n * component. To get the deprecated private representation, set `withPassword`\n * to true.\n *\n * @param withPassword When set to true, the password will be included.\n */\nexport function dsnToString(dsn: DsnComponents, withPassword: boolean = false): string {\n const { host, path, pass, port, projectId, protocol, publicKey } = dsn;\n return (\n `${protocol}://${publicKey}${withPassword && pass ? `:${pass}` : ''}` +\n `@${host}${port ? `:${port}` : ''}/${path ? `${path}/` : path}${projectId}`\n );\n}\n\n/**\n * Parses a Dsn from a given string.\n *\n * @param str A Dsn as string\n * @returns Dsn as DsnComponents\n */\nexport function dsnFromString(str: string): DsnComponents {\n const match = DSN_REGEX.exec(str);\n\n if (!match) {\n throw new SentryError(`Invalid Sentry Dsn: ${str}`);\n }\n\n const [protocol, publicKey, pass = '', host, port = '', lastPath] = match.slice(1);\n let path = '';\n let projectId = lastPath;\n\n const split = projectId.split('/');\n if (split.length > 1) {\n path = split.slice(0, -1).join('/');\n projectId = split.pop() as string;\n }\n\n if (projectId) {\n const projectMatch = projectId.match(/^\\d+/);\n if (projectMatch) {\n projectId = projectMatch[0];\n }\n }\n\n return dsnFromComponents({ host, pass, path, projectId, port, protocol: protocol as DsnProtocol, publicKey });\n}\n\nfunction dsnFromComponents(components: DsnComponents): DsnComponents {\n return {\n protocol: components.protocol,\n publicKey: components.publicKey || '',\n pass: components.pass || '',\n host: components.host,\n port: components.port || '',\n path: components.path || '',\n projectId: components.projectId,\n };\n}\n\nfunction validateDsn(dsn: DsnComponents): boolean | void {\n if (!__DEBUG_BUILD__) {\n return;\n }\n\n const { port, projectId, protocol } = dsn;\n\n const requiredComponents: ReadonlyArray = ['protocol', 'publicKey', 'host', 'projectId'];\n requiredComponents.forEach(component => {\n if (!dsn[component]) {\n throw new SentryError(`Invalid Sentry Dsn: ${component} missing`);\n }\n });\n\n if (!projectId.match(/^\\d+$/)) {\n throw new SentryError(`Invalid Sentry Dsn: Invalid projectId ${projectId}`);\n }\n\n if (!isValidProtocol(protocol)) {\n throw new SentryError(`Invalid Sentry Dsn: Invalid protocol ${protocol}`);\n }\n\n if (port && isNaN(parseInt(port, 10))) {\n throw new SentryError(`Invalid Sentry Dsn: Invalid port ${port}`);\n }\n\n return true;\n}\n\n/** The Sentry Dsn, identifying a Sentry instance and project. */\nexport function makeDsn(from: DsnLike): DsnComponents {\n const components = typeof from === 'string' ? dsnFromString(from) : dsnFromComponents(from);\n validateDsn(components);\n return components;\n}\n","/* eslint-disable @typescript-eslint/no-unsafe-member-access */\n/* eslint-disable @typescript-eslint/no-explicit-any */\n\nexport type MemoFunc = [\n // memoize\n (obj: any) => boolean,\n // unmemoize\n (obj: any) => void,\n];\n\n/**\n * Helper to decycle json objects\n */\nexport function memoBuilder(): MemoFunc {\n const hasWeakSet = typeof WeakSet === 'function';\n const inner: any = hasWeakSet ? new WeakSet() : [];\n function memoize(obj: any): boolean {\n if (hasWeakSet) {\n if (inner.has(obj)) {\n return true;\n }\n inner.add(obj);\n return false;\n }\n // eslint-disable-next-line @typescript-eslint/prefer-for-of\n for (let i = 0; i < inner.length; i++) {\n const value = inner[i];\n if (value === obj) {\n return true;\n }\n }\n inner.push(obj);\n return false;\n }\n\n function unmemoize(obj: any): void {\n if (hasWeakSet) {\n inner.delete(obj);\n } else {\n for (let i = 0; i < inner.length; i++) {\n if (inner[i] === obj) {\n inner.splice(i, 1);\n break;\n }\n }\n }\n }\n return [memoize, unmemoize];\n}\n","import { Primitive } from '@sentry/types';\n\nimport { isNaN, isSyntheticEvent } from './is';\nimport { memoBuilder, MemoFunc } from './memo';\nimport { convertToPlainObject } from './object';\nimport { getFunctionName } from './stacktrace';\n\ntype Prototype = { constructor: (...args: unknown[]) => unknown };\n// This is a hack to placate TS, relying on the fact that technically, arrays are objects with integer keys. Normally we\n// think of those keys as actual numbers, but `arr['0']` turns out to work just as well as `arr[0]`, and doing it this\n// way lets us use a single type in the places where behave as if we are only dealing with objects, even if some of them\n// might be arrays.\ntype ObjOrArray = { [key: string]: T };\n\n/**\n * Recursively normalizes the given object.\n *\n * - Creates a copy to prevent original input mutation\n * - Skips non-enumerable properties\n * - When stringifying, calls `toJSON` if implemented\n * - Removes circular references\n * - Translates non-serializable values (`undefined`/`NaN`/functions) to serializable format\n * - Translates known global objects/classes to a string representations\n * - Takes care of `Error` object serialization\n * - Optionally limits depth of final output\n * - Optionally limits number of properties/elements included in any single object/array\n *\n * @param input The object to be normalized.\n * @param depth The max depth to which to normalize the object. (Anything deeper stringified whole.)\n * @param maxProperties The max number of elements or properties to be included in any single array or\n * object in the normallized output.\n * @returns A normalized version of the object, or `\"**non-serializable**\"` if any errors are thrown during normalization.\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function normalize(input: unknown, depth: number = +Infinity, maxProperties: number = +Infinity): any {\n try {\n // since we're at the outermost level, we don't provide a key\n return visit('', input, depth, maxProperties);\n } catch (err) {\n return { ERROR: `**non-serializable** (${err})` };\n }\n}\n\n/** JSDoc */\nexport function normalizeToSize(\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n object: { [key: string]: any },\n // Default Node.js REPL depth\n depth: number = 3,\n // 100kB, as 200kB is max payload size, so half sounds reasonable\n maxSize: number = 100 * 1024,\n): T {\n const normalized = normalize(object, depth);\n\n if (jsonSize(normalized) > maxSize) {\n return normalizeToSize(object, depth - 1, maxSize);\n }\n\n return normalized as T;\n}\n\n/**\n * Visits a node to perform normalization on it\n *\n * @param key The key corresponding to the given node\n * @param value The node to be visited\n * @param depth Optional number indicating the maximum recursion depth\n * @param maxProperties Optional maximum number of properties/elements included in any single object/array\n * @param memo Optional Memo class handling decycling\n */\nfunction visit(\n key: string,\n value: unknown,\n depth: number = +Infinity,\n maxProperties: number = +Infinity,\n memo: MemoFunc = memoBuilder(),\n): Primitive | ObjOrArray {\n const [memoize, unmemoize] = memo;\n\n // Get the simple cases out of the way first\n if (value === null || (['number', 'boolean', 'string'].includes(typeof value) && !isNaN(value))) {\n return value as Primitive;\n }\n\n const stringified = stringifyValue(key, value);\n\n // Anything we could potentially dig into more (objects or arrays) will have come back as `\"[object XXXX]\"`.\n // Everything else will have already been serialized, so if we don't see that pattern, we're done.\n if (!stringified.startsWith('[object ')) {\n return stringified;\n }\n\n // From here on, we can assert that `value` is either an object or an array.\n\n // Do not normalize objects that we know have already been normalized. As a general rule, the\n // \"__sentry_skip_normalization__\" property should only be used sparingly and only should only be set on objects that\n // have already been normalized.\n if ((value as ObjOrArray)['__sentry_skip_normalization__']) {\n return value as ObjOrArray;\n }\n\n // We're also done if we've reached the max depth\n if (depth === 0) {\n // At this point we know `serialized` is a string of the form `\"[object XXXX]\"`. Clean it up so it's just `\"[XXXX]\"`.\n return stringified.replace('object ', '');\n }\n\n // If we've already visited this branch, bail out, as it's circular reference. If not, note that we're seeing it now.\n if (memoize(value)) {\n return '[Circular ~]';\n }\n\n // If the value has a `toJSON` method, we call it to extract more information\n const valueWithToJSON = value as unknown & { toJSON?: () => unknown };\n if (valueWithToJSON && typeof valueWithToJSON.toJSON === 'function') {\n try {\n const jsonValue = valueWithToJSON.toJSON();\n // We need to normalize the return value of `.toJSON()` in case it has circular references\n return visit('', jsonValue, depth - 1, maxProperties, memo);\n } catch (err) {\n // pass (The built-in `toJSON` failed, but we can still try to do it ourselves)\n }\n }\n\n // At this point we know we either have an object or an array, we haven't seen it before, and we're going to recurse\n // because we haven't yet reached the max depth. Create an accumulator to hold the results of visiting each\n // property/entry, and keep track of the number of items we add to it.\n const normalized = (Array.isArray(value) ? [] : {}) as ObjOrArray;\n let numAdded = 0;\n\n // Before we begin, convert`Error` and`Event` instances into plain objects, since some of each of their relevant\n // properties are non-enumerable and otherwise would get missed.\n const visitable = convertToPlainObject(value as ObjOrArray);\n\n for (const visitKey in visitable) {\n // Avoid iterating over fields in the prototype if they've somehow been exposed to enumeration.\n if (!Object.prototype.hasOwnProperty.call(visitable, visitKey)) {\n continue;\n }\n\n if (numAdded >= maxProperties) {\n normalized[visitKey] = '[MaxProperties ~]';\n break;\n }\n\n // Recursively visit all the child nodes\n const visitValue = visitable[visitKey];\n normalized[visitKey] = visit(visitKey, visitValue, depth - 1, maxProperties, memo);\n\n numAdded += 1;\n }\n\n // Once we've visited all the branches, remove the parent from memo storage\n unmemoize(value);\n\n // Return accumulated values\n return normalized;\n}\n\n// TODO remove this in v7 (this means the method will no longer be exported, under any name)\nexport { visit as walk };\n\n/**\n * Stringify the given value. Handles various known special values and types.\n *\n * Not meant to be used on simple primitives which already have a string representation, as it will, for example, turn\n * the number 1231 into \"[Object Number]\", nor on `null`, as it will throw.\n *\n * @param value The value to stringify\n * @returns A stringified representation of the given value\n */\nfunction stringifyValue(\n key: unknown,\n // this type is a tiny bit of a cheat, since this function does handle NaN (which is technically a number), but for\n // our internal use, it'll do\n value: Exclude,\n): string {\n try {\n if (key === 'domain' && value && typeof value === 'object' && (value as { _events: unknown })._events) {\n return '[Domain]';\n }\n\n if (key === 'domainEmitter') {\n return '[DomainEmitter]';\n }\n\n // It's safe to use `global`, `window`, and `document` here in this manner, as we are asserting using `typeof` first\n // which won't throw if they are not present.\n\n if (typeof global !== 'undefined' && value === global) {\n return '[Global]';\n }\n\n // eslint-disable-next-line no-restricted-globals\n if (typeof window !== 'undefined' && value === window) {\n return '[Window]';\n }\n\n // eslint-disable-next-line no-restricted-globals\n if (typeof document !== 'undefined' && value === document) {\n return '[Document]';\n }\n\n // React's SyntheticEvent thingy\n if (isSyntheticEvent(value)) {\n return '[SyntheticEvent]';\n }\n\n if (typeof value === 'number' && value !== value) {\n return '[NaN]';\n }\n\n // this catches `undefined` (but not `null`, which is a primitive and can be serialized on its own)\n if (value === void 0) {\n return '[undefined]';\n }\n\n if (typeof value === 'function') {\n return `[Function: ${getFunctionName(value)}]`;\n }\n\n if (typeof value === 'symbol') {\n return `[${String(value)}]`;\n }\n\n // stringified BigInts are indistinguishable from regular numbers, so we need to label them to avoid confusion\n if (typeof value === 'bigint') {\n return `[BigInt: ${String(value)}]`;\n }\n\n // Now that we've knocked out all the special cases and the primitives, all we have left are objects. Simply casting\n // them to strings means that instances of classes which haven't defined their `toStringTag` will just come out as\n // `\"[object Object]\"`. If we instead look at the constructor's name (which is the same as the name of the class),\n // we can make sure that only plain objects come out that way.\n return `[object ${(Object.getPrototypeOf(value) as Prototype).constructor.name}]`;\n } catch (err) {\n return `**non-serializable** (${err})`;\n }\n}\n\n/** Calculates bytes size of input string */\nfunction utf8Length(value: string): number {\n // eslint-disable-next-line no-bitwise\n return ~-encodeURI(value).split(/%..|./).length;\n}\n\n/** Calculates bytes size of input object */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction jsonSize(value: any): number {\n return utf8Length(JSON.stringify(value));\n}\n","import {\n Attachment,\n AttachmentItem,\n DataCategory,\n Envelope,\n EnvelopeItem,\n EnvelopeItemType,\n TextEncoderInternal,\n} from '@sentry/types';\n\nimport { normalize } from './normalize';\nimport { dropUndefinedKeys } from './object';\n\n/**\n * Creates an envelope.\n * Make sure to always explicitly provide the generic to this function\n * so that the envelope types resolve correctly.\n */\nexport function createEnvelope(headers: E[0], items: E[1] = []): E {\n return [headers, items] as E;\n}\n\n/**\n * Add an item to an envelope.\n * Make sure to always explicitly provide the generic to this function\n * so that the envelope types resolve correctly.\n */\nexport function addItemToEnvelope(envelope: E, newItem: E[1][number]): E {\n const [headers, items] = envelope;\n return [headers, [...items, newItem]] as E;\n}\n\n/**\n * Convenience function to loop through the items and item types of an envelope.\n * (This function was mostly created because working with envelope types is painful at the moment)\n */\nexport function forEachEnvelopeItem(\n envelope: Envelope,\n callback: (envelopeItem: E[1][number], envelopeItemType: E[1][number][0]['type']) => void,\n): void {\n const envelopeItems = envelope[1];\n envelopeItems.forEach((envelopeItem: EnvelopeItem) => {\n const envelopeItemType = envelopeItem[0].type;\n callback(envelopeItem, envelopeItemType);\n });\n}\n\nfunction encodeUTF8(input: string, textEncoder?: TextEncoderInternal): Uint8Array {\n const utf8 = textEncoder || new TextEncoder();\n return utf8.encode(input);\n}\n\n/**\n * Serializes an envelope.\n */\nexport function serializeEnvelope(envelope: Envelope, textEncoder?: TextEncoderInternal): string | Uint8Array {\n const [envHeaders, items] = envelope;\n\n // Initially we construct our envelope as a string and only convert to binary chunks if we encounter binary data\n let parts: string | Uint8Array[] = JSON.stringify(envHeaders);\n\n function append(next: string | Uint8Array): void {\n if (typeof parts === 'string') {\n parts = typeof next === 'string' ? parts + next : [encodeUTF8(parts, textEncoder), next];\n } else {\n parts.push(typeof next === 'string' ? encodeUTF8(next, textEncoder) : next);\n }\n }\n\n for (const item of items) {\n const [itemHeaders, payload] = item;\n\n append(`\\n${JSON.stringify(itemHeaders)}\\n`);\n\n if (typeof payload === 'string' || payload instanceof Uint8Array) {\n append(payload);\n } else {\n let stringifiedPayload: string;\n try {\n stringifiedPayload = JSON.stringify(payload);\n } catch (e) {\n // In case, despite all our efforts to keep `payload` circular-dependency-free, `JSON.strinify()` still\n // fails, we try again after normalizing it again with infinite normalization depth. This of course has a\n // performance impact but in this case a performance hit is better than throwing.\n stringifiedPayload = JSON.stringify(normalize(payload));\n }\n append(stringifiedPayload);\n }\n }\n\n return typeof parts === 'string' ? parts : concatBuffers(parts);\n}\n\nfunction concatBuffers(buffers: Uint8Array[]): Uint8Array {\n const totalLength = buffers.reduce((acc, buf) => acc + buf.length, 0);\n\n const merged = new Uint8Array(totalLength);\n let offset = 0;\n for (const buffer of buffers) {\n merged.set(buffer, offset);\n offset += buffer.length;\n }\n\n return merged;\n}\n\n/**\n * Creates attachment envelope items\n */\nexport function createAttachmentEnvelopeItem(\n attachment: Attachment,\n textEncoder?: TextEncoderInternal,\n): AttachmentItem {\n const buffer = typeof attachment.data === 'string' ? encodeUTF8(attachment.data, textEncoder) : attachment.data;\n\n return [\n dropUndefinedKeys({\n type: 'attachment',\n length: buffer.length,\n filename: attachment.filename,\n content_type: attachment.contentType,\n attachment_type: attachment.attachmentType,\n }),\n buffer,\n ];\n}\n\nconst ITEM_TYPE_TO_DATA_CATEGORY_MAP: Record = {\n session: 'session',\n sessions: 'session',\n attachment: 'attachment',\n transaction: 'transaction',\n event: 'error',\n client_report: 'internal',\n user_report: 'default',\n};\n\n/**\n * Maps the type of an envelope item to a data category.\n */\nexport function envelopeItemTypeToDataCategory(type: EnvelopeItemType): DataCategory {\n return ITEM_TYPE_TO_DATA_CATEGORY_MAP[type];\n}\n","/* eslint-disable max-lines */\nimport {\n Client,\n ClientOptions,\n DataCategory,\n DsnComponents,\n Envelope,\n Event,\n EventDropReason,\n EventHint,\n Integration,\n IntegrationClass,\n Outcome,\n Session,\n SessionAggregates,\n Severity,\n SeverityLevel,\n Transport,\n} from '@sentry/types';\nimport {\n addItemToEnvelope,\n checkOrSetAlreadyCaught,\n createAttachmentEnvelopeItem,\n dateTimestampInSeconds,\n isPlainObject,\n isPrimitive,\n isThenable,\n logger,\n makeDsn,\n normalize,\n rejectedSyncPromise,\n resolvedSyncPromise,\n SentryError,\n SyncPromise,\n truncate,\n uuid4,\n} from '@sentry/utils';\n\nimport { getEnvelopeEndpointWithUrlEncodedAuth } from './api';\nimport { createEventEnvelope, createSessionEnvelope } from './envelope';\nimport { IntegrationIndex, setupIntegrations } from './integration';\nimport { Scope } from './scope';\nimport { updateSession } from './session';\n\nconst ALREADY_SEEN_ERROR = \"Not capturing exception because it's already been captured.\";\n\n/**\n * Base implementation for all JavaScript SDK clients.\n *\n * Call the constructor with the corresponding options\n * specific to the client subclass. To access these options later, use\n * {@link Client.getOptions}.\n *\n * If a Dsn is specified in the options, it will be parsed and stored. Use\n * {@link Client.getDsn} to retrieve the Dsn at any moment. In case the Dsn is\n * invalid, the constructor will throw a {@link SentryException}. Note that\n * without a valid Dsn, the SDK will not send any events to Sentry.\n *\n * Before sending an event, it is passed through\n * {@link BaseClient._prepareEvent} to add SDK information and scope data\n * (breadcrumbs and context). To add more custom information, override this\n * method and extend the resulting prepared event.\n *\n * To issue automatically created events (e.g. via instrumentation), use\n * {@link Client.captureEvent}. It will prepare the event and pass it through\n * the callback lifecycle. To issue auto-breadcrumbs, use\n * {@link Client.addBreadcrumb}.\n *\n * @example\n * class NodeClient extends BaseClient {\n * public constructor(options: NodeOptions) {\n * super(options);\n * }\n *\n * // ...\n * }\n */\nexport abstract class BaseClient implements Client {\n /** Options passed to the SDK. */\n protected readonly _options: O;\n\n /** The client Dsn, if specified in options. Without this Dsn, the SDK will be disabled. */\n protected readonly _dsn?: DsnComponents;\n\n protected readonly _transport?: Transport;\n\n /** Array of set up integrations. */\n protected _integrations: IntegrationIndex = {};\n\n /** Indicates whether this client's integrations have been set up. */\n protected _integrationsInitialized: boolean = false;\n\n /** Number of calls being processed */\n protected _numProcessing: number = 0;\n\n /** Holds flushable */\n private _outcomes: { [key: string]: number } = {};\n\n /**\n * Initializes this client instance.\n *\n * @param options Options for the client.\n */\n protected constructor(options: O) {\n this._options = options;\n if (options.dsn) {\n this._dsn = makeDsn(options.dsn);\n const url = getEnvelopeEndpointWithUrlEncodedAuth(this._dsn, options);\n this._transport = options.transport({\n recordDroppedEvent: this.recordDroppedEvent.bind(this),\n ...options.transportOptions,\n url,\n });\n } else {\n __DEBUG_BUILD__ && logger.warn('No DSN provided, client will not do anything.');\n }\n }\n\n /**\n * @inheritDoc\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types\n public captureException(exception: any, hint?: EventHint, scope?: Scope): string | undefined {\n // ensure we haven't captured this very object before\n if (checkOrSetAlreadyCaught(exception)) {\n __DEBUG_BUILD__ && logger.log(ALREADY_SEEN_ERROR);\n return;\n }\n\n let eventId: string | undefined = hint && hint.event_id;\n\n this._process(\n this.eventFromException(exception, hint)\n .then(event => this._captureEvent(event, hint, scope))\n .then(result => {\n eventId = result;\n }),\n );\n\n return eventId;\n }\n\n /**\n * @inheritDoc\n */\n public captureMessage(\n message: string,\n // eslint-disable-next-line deprecation/deprecation\n level?: Severity | SeverityLevel,\n hint?: EventHint,\n scope?: Scope,\n ): string | undefined {\n let eventId: string | undefined = hint && hint.event_id;\n\n const promisedEvent = isPrimitive(message)\n ? this.eventFromMessage(String(message), level, hint)\n : this.eventFromException(message, hint);\n\n this._process(\n promisedEvent\n .then(event => this._captureEvent(event, hint, scope))\n .then(result => {\n eventId = result;\n }),\n );\n\n return eventId;\n }\n\n /**\n * @inheritDoc\n */\n public captureEvent(event: Event, hint?: EventHint, scope?: Scope): string | undefined {\n // ensure we haven't captured this very object before\n if (hint && hint.originalException && checkOrSetAlreadyCaught(hint.originalException)) {\n __DEBUG_BUILD__ && logger.log(ALREADY_SEEN_ERROR);\n return;\n }\n\n let eventId: string | undefined = hint && hint.event_id;\n\n this._process(\n this._captureEvent(event, hint, scope).then(result => {\n eventId = result;\n }),\n );\n\n return eventId;\n }\n\n /**\n * @inheritDoc\n */\n public captureSession(session: Session): void {\n if (!this._isEnabled()) {\n __DEBUG_BUILD__ && logger.warn('SDK not enabled, will not capture session.');\n return;\n }\n\n if (!(typeof session.release === 'string')) {\n __DEBUG_BUILD__ && logger.warn('Discarded session because of missing or non-string release');\n } else {\n this.sendSession(session);\n // After sending, we set init false to indicate it's not the first occurrence\n updateSession(session, { init: false });\n }\n }\n\n /**\n * @inheritDoc\n */\n public getDsn(): DsnComponents | undefined {\n return this._dsn;\n }\n\n /**\n * @inheritDoc\n */\n public getOptions(): O {\n return this._options;\n }\n\n /**\n * @inheritDoc\n */\n public getTransport(): Transport | undefined {\n return this._transport;\n }\n\n /**\n * @inheritDoc\n */\n public flush(timeout?: number): PromiseLike {\n const transport = this._transport;\n if (transport) {\n return this._isClientDoneProcessing(timeout).then(clientFinished => {\n return transport.flush(timeout).then(transportFlushed => clientFinished && transportFlushed);\n });\n } else {\n return resolvedSyncPromise(true);\n }\n }\n\n /**\n * @inheritDoc\n */\n public close(timeout?: number): PromiseLike {\n return this.flush(timeout).then(result => {\n this.getOptions().enabled = false;\n return result;\n });\n }\n\n /**\n * Sets up the integrations\n */\n public setupIntegrations(): void {\n if (this._isEnabled() && !this._integrationsInitialized) {\n this._integrations = setupIntegrations(this._options.integrations);\n this._integrationsInitialized = true;\n }\n }\n\n /**\n * Gets an installed integration by its `id`.\n *\n * @returns The installed integration or `undefined` if no integration with that `id` was installed.\n */\n public getIntegrationById(integrationId: string): Integration | undefined {\n return this._integrations[integrationId];\n }\n\n /**\n * @inheritDoc\n */\n public getIntegration(integration: IntegrationClass): T | null {\n try {\n return (this._integrations[integration.id] as T) || null;\n } catch (_oO) {\n __DEBUG_BUILD__ && logger.warn(`Cannot retrieve integration ${integration.id} from the current Client`);\n return null;\n }\n }\n\n /**\n * @inheritDoc\n */\n public sendEvent(event: Event, hint: EventHint = {}): void {\n if (this._dsn) {\n let env = createEventEnvelope(event, this._dsn, this._options._metadata, this._options.tunnel);\n\n for (const attachment of hint.attachments || []) {\n env = addItemToEnvelope(\n env,\n createAttachmentEnvelopeItem(\n attachment,\n this._options.transportOptions && this._options.transportOptions.textEncoder,\n ),\n );\n }\n\n this._sendEnvelope(env);\n }\n }\n\n /**\n * @inheritDoc\n */\n public sendSession(session: Session | SessionAggregates): void {\n if (this._dsn) {\n const env = createSessionEnvelope(session, this._dsn, this._options._metadata, this._options.tunnel);\n this._sendEnvelope(env);\n }\n }\n\n /**\n * @inheritDoc\n */\n public recordDroppedEvent(reason: EventDropReason, category: DataCategory): void {\n if (this._options.sendClientReports) {\n // We want to track each category (error, transaction, session) separately\n // but still keep the distinction between different type of outcomes.\n // We could use nested maps, but it's much easier to read and type this way.\n // A correct type for map-based implementation if we want to go that route\n // would be `Partial>>>`\n // With typescript 4.1 we could even use template literal types\n const key = `${reason}:${category}`;\n __DEBUG_BUILD__ && logger.log(`Adding outcome: \"${key}\"`);\n\n // The following works because undefined + 1 === NaN and NaN is falsy\n this._outcomes[key] = this._outcomes[key] + 1 || 1;\n }\n }\n\n /** Updates existing session based on the provided event */\n protected _updateSessionFromEvent(session: Session, event: Event): void {\n let crashed = false;\n let errored = false;\n const exceptions = event.exception && event.exception.values;\n\n if (exceptions) {\n errored = true;\n\n for (const ex of exceptions) {\n const mechanism = ex.mechanism;\n if (mechanism && mechanism.handled === false) {\n crashed = true;\n break;\n }\n }\n }\n\n // A session is updated and that session update is sent in only one of the two following scenarios:\n // 1. Session with non terminal status and 0 errors + an error occurred -> Will set error count to 1 and send update\n // 2. Session with non terminal status and 1 error + a crash occurred -> Will set status crashed and send update\n const sessionNonTerminal = session.status === 'ok';\n const shouldUpdateAndSend = (sessionNonTerminal && session.errors === 0) || (sessionNonTerminal && crashed);\n\n if (shouldUpdateAndSend) {\n updateSession(session, {\n ...(crashed && { status: 'crashed' }),\n errors: session.errors || Number(errored || crashed),\n });\n this.captureSession(session);\n }\n }\n\n /**\n * Determine if the client is finished processing. Returns a promise because it will wait `timeout` ms before saying\n * \"no\" (resolving to `false`) in order to give the client a chance to potentially finish first.\n *\n * @param timeout The time, in ms, after which to resolve to `false` if the client is still busy. Passing `0` (or not\n * passing anything) will make the promise wait as long as it takes for processing to finish before resolving to\n * `true`.\n * @returns A promise which will resolve to `true` if processing is already done or finishes before the timeout, and\n * `false` otherwise\n */\n protected _isClientDoneProcessing(timeout?: number): PromiseLike {\n return new SyncPromise(resolve => {\n let ticked: number = 0;\n const tick: number = 1;\n\n const interval = setInterval(() => {\n if (this._numProcessing == 0) {\n clearInterval(interval);\n resolve(true);\n } else {\n ticked += tick;\n if (timeout && ticked >= timeout) {\n clearInterval(interval);\n resolve(false);\n }\n }\n }, tick);\n });\n }\n\n /** Determines whether this SDK is enabled and a valid Dsn is present. */\n protected _isEnabled(): boolean {\n return this.getOptions().enabled !== false && this._dsn !== undefined;\n }\n\n /**\n * Adds common information to events.\n *\n * The information includes release and environment from `options`,\n * breadcrumbs and context (extra, tags and user) from the scope.\n *\n * Information that is already present in the event is never overwritten. For\n * nested objects, such as the context, keys are merged.\n *\n * @param event The original event.\n * @param hint May contain additional information about the original exception.\n * @param scope A scope containing event metadata.\n * @returns A new event with more information.\n */\n protected _prepareEvent(event: Event, hint: EventHint, scope?: Scope): PromiseLike {\n const { normalizeDepth = 3, normalizeMaxBreadth = 1_000 } = this.getOptions();\n const prepared: Event = {\n ...event,\n event_id: event.event_id || hint.event_id || uuid4(),\n timestamp: event.timestamp || dateTimestampInSeconds(),\n };\n\n this._applyClientOptions(prepared);\n this._applyIntegrationsMetadata(prepared);\n\n // If we have scope given to us, use it as the base for further modifications.\n // This allows us to prevent unnecessary copying of data if `captureContext` is not provided.\n let finalScope = scope;\n if (hint.captureContext) {\n finalScope = Scope.clone(finalScope).update(hint.captureContext);\n }\n\n // We prepare the result here with a resolved Event.\n let result = resolvedSyncPromise(prepared);\n\n // This should be the last thing called, since we want that\n // {@link Hub.addEventProcessor} gets the finished prepared event.\n if (finalScope) {\n // Collect attachments from the hint and scope\n const attachments = [...(hint.attachments || []), ...finalScope.getAttachments()];\n\n if (attachments.length) {\n hint.attachments = attachments;\n }\n\n // In case we have a hub we reassign it.\n result = finalScope.applyToEvent(prepared, hint);\n }\n\n return result.then(evt => {\n if (typeof normalizeDepth === 'number' && normalizeDepth > 0) {\n return this._normalizeEvent(evt, normalizeDepth, normalizeMaxBreadth);\n }\n return evt;\n });\n }\n\n /**\n * Applies `normalize` function on necessary `Event` attributes to make them safe for serialization.\n * Normalized keys:\n * - `breadcrumbs.data`\n * - `user`\n * - `contexts`\n * - `extra`\n * @param event Event\n * @returns Normalized event\n */\n protected _normalizeEvent(event: Event | null, depth: number, maxBreadth: number): Event | null {\n if (!event) {\n return null;\n }\n\n const normalized: Event = {\n ...event,\n ...(event.breadcrumbs && {\n breadcrumbs: event.breadcrumbs.map(b => ({\n ...b,\n ...(b.data && {\n data: normalize(b.data, depth, maxBreadth),\n }),\n })),\n }),\n ...(event.user && {\n user: normalize(event.user, depth, maxBreadth),\n }),\n ...(event.contexts && {\n contexts: normalize(event.contexts, depth, maxBreadth),\n }),\n ...(event.extra && {\n extra: normalize(event.extra, depth, maxBreadth),\n }),\n };\n\n // event.contexts.trace stores information about a Transaction. Similarly,\n // event.spans[] stores information about child Spans. Given that a\n // Transaction is conceptually a Span, normalization should apply to both\n // Transactions and Spans consistently.\n // For now the decision is to skip normalization of Transactions and Spans,\n // so this block overwrites the normalized event to add back the original\n // Transaction information prior to normalization.\n if (event.contexts && event.contexts.trace && normalized.contexts) {\n normalized.contexts.trace = event.contexts.trace;\n\n // event.contexts.trace.data may contain circular/dangerous data so we need to normalize it\n if (event.contexts.trace.data) {\n normalized.contexts.trace.data = normalize(event.contexts.trace.data, depth, maxBreadth);\n }\n }\n\n // event.spans[].data may contain circular/dangerous data so we need to normalize it\n if (event.spans) {\n normalized.spans = event.spans.map(span => {\n // We cannot use the spread operator here because `toJSON` on `span` is non-enumerable\n if (span.data) {\n span.data = normalize(span.data, depth, maxBreadth);\n }\n return span;\n });\n }\n\n return normalized;\n }\n\n /**\n * Enhances event using the client configuration.\n * It takes care of all \"static\" values like environment, release and `dist`,\n * as well as truncating overly long values.\n * @param event event instance to be enhanced\n */\n protected _applyClientOptions(event: Event): void {\n const options = this.getOptions();\n const { environment, release, dist, maxValueLength = 250 } = options;\n\n if (!('environment' in event)) {\n event.environment = 'environment' in options ? environment : 'production';\n }\n\n if (event.release === undefined && release !== undefined) {\n event.release = release;\n }\n\n if (event.dist === undefined && dist !== undefined) {\n event.dist = dist;\n }\n\n if (event.message) {\n event.message = truncate(event.message, maxValueLength);\n }\n\n const exception = event.exception && event.exception.values && event.exception.values[0];\n if (exception && exception.value) {\n exception.value = truncate(exception.value, maxValueLength);\n }\n\n const request = event.request;\n if (request && request.url) {\n request.url = truncate(request.url, maxValueLength);\n }\n }\n\n /**\n * This function adds all used integrations to the SDK info in the event.\n * @param event The event that will be filled with all integrations.\n */\n protected _applyIntegrationsMetadata(event: Event): void {\n const integrationsArray = Object.keys(this._integrations);\n if (integrationsArray.length > 0) {\n event.sdk = event.sdk || {};\n event.sdk.integrations = [...(event.sdk.integrations || []), ...integrationsArray];\n }\n }\n\n /**\n * Processes the event and logs an error in case of rejection\n * @param event\n * @param hint\n * @param scope\n */\n protected _captureEvent(event: Event, hint: EventHint = {}, scope?: Scope): PromiseLike {\n return this._processEvent(event, hint, scope).then(\n finalEvent => {\n return finalEvent.event_id;\n },\n reason => {\n if (__DEBUG_BUILD__) {\n // If something's gone wrong, log the error as a warning. If it's just us having used a `SentryError` for\n // control flow, log just the message (no stack) as a log-level log.\n const sentryError = reason as SentryError;\n if (sentryError.logLevel === 'log') {\n logger.log(sentryError.message);\n } else {\n logger.warn(sentryError);\n }\n }\n return undefined;\n },\n );\n }\n\n /**\n * Processes an event (either error or message) and sends it to Sentry.\n *\n * This also adds breadcrumbs and context information to the event. However,\n * platform specific meta data (such as the User's IP address) must be added\n * by the SDK implementor.\n *\n *\n * @param event The event to send to Sentry.\n * @param hint May contain additional information about the original exception.\n * @param scope A scope containing event metadata.\n * @returns A SyncPromise that resolves with the event or rejects in case event was/will not be send.\n */\n protected _processEvent(event: Event, hint: EventHint, scope?: Scope): PromiseLike {\n const options = this.getOptions();\n const { sampleRate } = options;\n\n if (!this._isEnabled()) {\n return rejectedSyncPromise(new SentryError('SDK not enabled, will not capture event.', 'log'));\n }\n\n const isTransaction = event.type === 'transaction';\n const beforeSendProcessorName = isTransaction ? 'beforeSendTransaction' : 'beforeSend';\n const beforeSendProcessor = options[beforeSendProcessorName];\n\n // 1.0 === 100% events are sent\n // 0.0 === 0% events are sent\n // Sampling for transaction happens somewhere else\n if (!isTransaction && typeof sampleRate === 'number' && Math.random() > sampleRate) {\n this.recordDroppedEvent('sample_rate', 'error');\n return rejectedSyncPromise(\n new SentryError(\n `Discarding event because it's not included in the random sample (sampling rate = ${sampleRate})`,\n 'log',\n ),\n );\n }\n\n return this._prepareEvent(event, hint, scope)\n .then(prepared => {\n if (prepared === null) {\n this.recordDroppedEvent('event_processor', event.type || 'error');\n throw new SentryError('An event processor returned `null`, will not send event.', 'log');\n }\n\n const isInternalException = hint.data && (hint.data as { __sentry__: boolean }).__sentry__ === true;\n if (isInternalException || !beforeSendProcessor) {\n return prepared;\n }\n\n const beforeSendResult = beforeSendProcessor(prepared, hint);\n return _validateBeforeSendResult(beforeSendResult, beforeSendProcessorName);\n })\n .then(processedEvent => {\n if (processedEvent === null) {\n this.recordDroppedEvent('before_send', event.type || 'error');\n throw new SentryError(`\\`${beforeSendProcessorName}\\` returned \\`null\\`, will not send event.`, 'log');\n }\n\n const session = scope && scope.getSession();\n if (!isTransaction && session) {\n this._updateSessionFromEvent(session, processedEvent);\n }\n\n // None of the Sentry built event processor will update transaction name,\n // so if the transaction name has been changed by an event processor, we know\n // it has to come from custom event processor added by a user\n const transactionInfo = processedEvent.transaction_info;\n if (isTransaction && transactionInfo && processedEvent.transaction !== event.transaction) {\n const source = 'custom';\n processedEvent.transaction_info = {\n ...transactionInfo,\n source,\n changes: [\n ...transactionInfo.changes,\n {\n source,\n // use the same timestamp as the processed event.\n timestamp: processedEvent.timestamp as number,\n propagations: transactionInfo.propagations,\n },\n ],\n };\n }\n\n this.sendEvent(processedEvent, hint);\n return processedEvent;\n })\n .then(null, reason => {\n if (reason instanceof SentryError) {\n throw reason;\n }\n\n this.captureException(reason, {\n data: {\n __sentry__: true,\n },\n originalException: reason as Error,\n });\n throw new SentryError(\n `Event processing pipeline threw an error, original event will not be sent. Details have been sent as a new event.\\nReason: ${reason}`,\n );\n });\n }\n\n /**\n * Occupies the client with processing and event\n */\n protected _process(promise: PromiseLike): void {\n this._numProcessing += 1;\n void promise.then(\n value => {\n this._numProcessing -= 1;\n return value;\n },\n reason => {\n this._numProcessing -= 1;\n return reason;\n },\n );\n }\n\n /**\n * @inheritdoc\n */\n protected _sendEnvelope(envelope: Envelope): void {\n if (this._transport && this._dsn) {\n this._transport.send(envelope).then(null, reason => {\n __DEBUG_BUILD__ && logger.error('Error while sending event:', reason);\n });\n } else {\n __DEBUG_BUILD__ && logger.error('Transport disabled');\n }\n }\n\n /**\n * Clears outcomes on this client and returns them.\n */\n protected _clearOutcomes(): Outcome[] {\n const outcomes = this._outcomes;\n this._outcomes = {};\n return Object.keys(outcomes).map(key => {\n const [reason, category] = key.split(':') as [EventDropReason, DataCategory];\n return {\n reason,\n category,\n quantity: outcomes[key],\n };\n });\n }\n\n /**\n * @inheritDoc\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types\n public abstract eventFromException(_exception: any, _hint?: EventHint): PromiseLike;\n\n /**\n * @inheritDoc\n */\n public abstract eventFromMessage(\n _message: string,\n // eslint-disable-next-line deprecation/deprecation\n _level?: Severity | SeverityLevel,\n _hint?: EventHint,\n ): PromiseLike;\n}\n\n/**\n * Verifies that return value of configured `beforeSend` or `beforeSendTransaction` is of expected type, and returns the value if so.\n */\nfunction _validateBeforeSendResult(\n beforeSendResult: PromiseLike | Event | null,\n beforeSendProcessorName: 'beforeSend' | 'beforeSendTransaction',\n): PromiseLike | Event | null {\n const invalidValueError = `\\`${beforeSendProcessorName}\\` must return \\`null\\` or a valid event.`;\n if (isThenable(beforeSendResult)) {\n return beforeSendResult.then(\n event => {\n if (!isPlainObject(event) && event !== null) {\n throw new SentryError(invalidValueError);\n }\n return event;\n },\n e => {\n throw new SentryError(`\\`${beforeSendProcessorName}\\` rejected with ${e}`);\n },\n );\n } else if (!isPlainObject(beforeSendResult) && beforeSendResult !== null) {\n throw new SentryError(invalidValueError);\n }\n return beforeSendResult;\n}\n","import { getCurrentHub } from '@sentry/core';\nimport { Event, EventHint, Exception, Severity, SeverityLevel, StackFrame, StackParser } from '@sentry/types';\nimport {\n addExceptionMechanism,\n addExceptionTypeValue,\n extractExceptionKeysForMessage,\n isDOMError,\n isDOMException,\n isError,\n isErrorEvent,\n isEvent,\n isPlainObject,\n normalizeToSize,\n resolvedSyncPromise,\n} from '@sentry/utils';\n\n/**\n * This function creates an exception from a JavaScript Error\n */\nexport function exceptionFromError(stackParser: StackParser, ex: Error): Exception {\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: 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 */\nexport function eventFromPlainObject(\n stackParser: StackParser,\n exception: Record,\n syntheticException?: Error,\n isUnhandledRejection?: boolean,\n): Event {\n const hub = getCurrentHub();\n const client = hub.getClient();\n const normalizeDepth = client && client.getOptions().normalizeDepth;\n\n const event: Event = {\n exception: {\n values: [\n {\n type: isEvent(exception) ? exception.constructor.name : isUnhandledRejection ? 'UnhandledRejection' : 'Error',\n value: `Non-Error ${\n isUnhandledRejection ? 'promise rejection' : 'exception'\n } captured with keys: ${extractExceptionKeysForMessage(exception)}`,\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 as { values: Exception[] }).values[0].stacktrace = { frames };\n }\n }\n\n return event;\n}\n\n/**\n * @hidden\n */\nexport function eventFromError(stackParser: StackParser, ex: Error): Event {\n return {\n exception: {\n values: [exceptionFromError(stackParser, ex)],\n },\n };\n}\n\n/** Parses stack frames from an error */\nexport function parseStackFrames(\n stackParser: StackParser,\n ex: Error & { framesToPop?: number; stacktrace?: string },\n): StackFrame[] {\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: Error & { framesToPop?: number }): number {\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: Error & { message: { error?: Error } }): string {\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 */\nexport function eventFromException(\n stackParser: StackParser,\n exception: unknown,\n hint?: EventHint,\n attachStacktrace?: boolean,\n): PromiseLike {\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 */\nexport function eventFromMessage(\n stackParser: StackParser,\n message: string,\n // eslint-disable-next-line deprecation/deprecation\n level: Severity | SeverityLevel = 'info',\n hint?: EventHint,\n attachStacktrace?: boolean,\n): PromiseLike {\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 */\nexport function eventFromUnknownInput(\n stackParser: StackParser,\n exception: unknown,\n syntheticException?: Error,\n attachStacktrace?: boolean,\n isUnhandledRejection?: boolean,\n): Event {\n let event: Event;\n\n if (isErrorEvent(exception as ErrorEvent) && (exception as ErrorEvent).error) {\n // If it is an ErrorEvent with `error` property, extract it to get actual Error\n const errorEvent = exception as ErrorEvent;\n return eventFromError(stackParser, errorEvent.error as 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 as DOMError) || isDOMException(exception as DOMException)) {\n const domException = exception as DOMException;\n\n if ('stack' in (exception as Error)) {\n event = eventFromError(stackParser, exception as Error);\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 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 as Record;\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 as string, syntheticException, attachStacktrace);\n addExceptionTypeValue(event, `${exception}`, undefined);\n addExceptionMechanism(event, {\n synthetic: true,\n });\n\n return event;\n}\n\n/**\n * @hidden\n */\nexport function eventFromString(\n stackParser: StackParser,\n input: string,\n syntheticException?: Error,\n attachStacktrace?: boolean,\n): Event {\n const event: Event = {\n message: input,\n };\n\n if (attachStacktrace && syntheticException) {\n const frames = parseStackFrames(stackParser, syntheticException);\n if (frames.length) {\n event.exception = {\n values: [{ value: input, stacktrace: { frames } }],\n };\n }\n }\n\n return event;\n}\n","import { captureException, withScope } from '@sentry/core';\nimport { DsnLike, Event as SentryEvent, Mechanism, Scope, WrappedFunction } from '@sentry/types';\nimport {\n addExceptionMechanism,\n addExceptionTypeValue,\n addNonEnumerableProperty,\n getOriginalFunction,\n GLOBAL_OBJ,\n markFunctionWrapped,\n} from '@sentry/utils';\n\nexport const WINDOW = GLOBAL_OBJ as typeof GLOBAL_OBJ & Window;\n\nlet ignoreOnError: number = 0;\n\n/**\n * @hidden\n */\nexport function shouldIgnoreOnError(): boolean {\n return ignoreOnError > 0;\n}\n\n/**\n * @hidden\n */\nexport function ignoreNextOnError(): void {\n // onerror should trigger before setTimeout\n ignoreOnError += 1;\n setTimeout(() => {\n ignoreOnError -= 1;\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 */\nexport function wrap(\n fn: WrappedFunction,\n options: {\n mechanism?: Mechanism;\n } = {},\n before?: WrappedFunction,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n): any {\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: WrappedFunction = function (this: unknown): void {\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: any) => 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: Scope) => {\n scope.addEventProcessor((event: SentryEvent) => {\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') as PropertyDescriptor;\n if (descriptor.configurable) {\n Object.defineProperty(sentryWrapped, 'name', {\n get(): string {\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 */\nexport interface ReportDialogOptions {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n [key: string]: any;\n eventId?: string;\n dsn?: DsnLike;\n user?: {\n email?: string;\n name?: string;\n };\n lang?: string;\n title?: string;\n subtitle?: string;\n subtitle2?: string;\n labelName?: string;\n labelEmail?: string;\n labelComments?: string;\n labelClose?: string;\n labelSubmit?: string;\n errorGeneric?: string;\n errorFormEntry?: string;\n successMessage?: string;\n /** Callback after reportDialog showed up */\n onLoad?(): void;\n}\n","/* eslint-disable deprecation/deprecation */\nimport { Severity, SeverityLevel } from '@sentry/types';\n\n// Note: Ideally the `SeverityLevel` type would be derived from `validSeverityLevels`, but that would mean either\n//\n// a) moving `validSeverityLevels` to `@sentry/types`,\n// b) moving the`SeverityLevel` type here, or\n// c) importing `validSeverityLevels` from here into `@sentry/types`.\n//\n// Option A would make `@sentry/types` a runtime dependency of `@sentry/utils` (not good), and options B and C would\n// create a circular dependency between `@sentry/types` and `@sentry/utils` (also not good). So a TODO accompanying the\n// type, reminding anyone who changes it to change this list also, will have to do.\n\nexport const validSeverityLevels = ['fatal', 'error', 'warning', 'log', 'info', 'debug'];\n\n/**\n * Converts a string-based level into a member of the deprecated {@link Severity} enum.\n *\n * @deprecated `severityFromString` is deprecated. Please use `severityLevelFromString` instead.\n *\n * @param level String representation of Severity\n * @returns Severity\n */\nexport function severityFromString(level: Severity | SeverityLevel | string): Severity {\n return severityLevelFromString(level) as Severity;\n}\n\n/**\n * Converts a string-based level into a `SeverityLevel`, normalizing it along the way.\n *\n * @param level String representation of desired `SeverityLevel`.\n * @returns The `SeverityLevel` corresponding to the given string, or 'log' if the string isn't a valid level.\n */\nexport function severityLevelFromString(level: SeverityLevel | string): SeverityLevel {\n return (level === 'warn' ? 'warning' : validSeverityLevels.includes(level) ? level : 'log') as SeverityLevel;\n}\n","/**\n * Parses string form of URL into an object\n * // borrowed from https://tools.ietf.org/html/rfc3986#appendix-B\n * // intentionally using regex and not href parsing trick because React Native and other\n * // environments where DOM might not be available\n * @returns parsed URL object\n */\nexport function parseUrl(url: string): {\n host?: string;\n path?: string;\n protocol?: string;\n relative?: string;\n} {\n if (!url) {\n return {};\n }\n\n const match = url.match(/^(([^:/?#]+):)?(\\/\\/([^/?#]*))?([^?#]*)(\\?([^#]*))?(#(.*))?$/);\n\n if (!match) {\n return {};\n }\n\n // coerce to undefined values to empty string so we don't get 'undefined'\n const query = match[6] || '';\n const fragment = match[8] || '';\n return {\n host: match[4],\n path: match[5],\n protocol: match[2],\n relative: match[5] + query + fragment, // everything minus origin\n };\n}\n\n/**\n * Strip the query string and fragment off of a given URL or path (if present)\n *\n * @param urlPath Full URL or path, including possible query string and/or fragment\n * @returns URL or path without query string or fragment\n */\nexport function stripUrlQueryAndFragment(urlPath: string): string {\n // eslint-disable-next-line no-useless-escape\n return urlPath.split(/[\\?#]/, 1)[0];\n}\n\n/**\n * Returns number of URL segments of a passed string URL.\n */\nexport function getNumberOfUrlSegments(url: string): number {\n // split at '/' or at '\\/' to split regex urls correctly\n return url.split(/\\\\?\\//).filter(s => s.length > 0 && s !== ',').length;\n}\n","/* eslint-disable @typescript-eslint/no-unsafe-member-access */\n/* eslint-disable max-lines */\nimport { getCurrentHub } from '@sentry/core';\nimport { Integration } from '@sentry/types';\nimport {\n addInstrumentationHandler,\n htmlTreeAsString,\n parseUrl,\n safeJoin,\n severityLevelFromString,\n} from '@sentry/utils';\n\nimport { WINDOW } from '../helpers';\n\n/** JSDoc */\ninterface BreadcrumbsOptions {\n console: boolean;\n dom: boolean | { serializeAttribute: string | string[] };\n fetch: boolean;\n history: boolean;\n sentry: boolean;\n xhr: boolean;\n}\n\nexport const BREADCRUMB_INTEGRATION_ID = 'Breadcrumbs';\n\n/**\n * Default Breadcrumbs instrumentations\n * TODO: Deprecated - with v6, this will be renamed to `Instrument`\n */\nexport class Breadcrumbs implements Integration {\n /**\n * @inheritDoc\n */\n public static id: string = BREADCRUMB_INTEGRATION_ID;\n\n /**\n * @inheritDoc\n */\n public name: string = Breadcrumbs.id;\n\n /**\n * Options of the breadcrumbs integration.\n */\n // This field is public, because we use it in the browser client to check if the `sentry` option is enabled.\n public readonly options: Readonly;\n\n /**\n * @inheritDoc\n */\n public constructor(options?: Partial) {\n this.options = {\n console: true,\n dom: true,\n fetch: true,\n history: true,\n sentry: true,\n xhr: true,\n ...options,\n };\n }\n\n /**\n * Instrument browser built-ins w/ breadcrumb capturing\n * - Console API\n * - DOM API (click/typing)\n * - XMLHttpRequest API\n * - Fetch API\n * - History API\n */\n public setupOnce(): void {\n if (this.options.console) {\n addInstrumentationHandler('console', _consoleBreadcrumb);\n }\n if (this.options.dom) {\n addInstrumentationHandler('dom', _domBreadcrumb(this.options.dom));\n }\n if (this.options.xhr) {\n addInstrumentationHandler('xhr', _xhrBreadcrumb);\n }\n if (this.options.fetch) {\n addInstrumentationHandler('fetch', _fetchBreadcrumb);\n }\n if (this.options.history) {\n addInstrumentationHandler('history', _historyBreadcrumb);\n }\n }\n}\n\n/**\n * A HOC that creaes a function that creates breadcrumbs from DOM API calls.\n * This is a HOC so that we get access to dom options in the closure.\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction _domBreadcrumb(dom: BreadcrumbsOptions['dom']): (handlerData: { [key: string]: any }) => void {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n function _innerDomBreadcrumb(handlerData: { [key: string]: any }): void {\n let target;\n let keyAttrs = typeof dom === 'object' ? dom.serializeAttribute : undefined;\n\n if (typeof keyAttrs === 'string') {\n keyAttrs = [keyAttrs];\n }\n\n // Accessing event.target can throw (see getsentry/raven-js#838, #768)\n try {\n target = handlerData.event.target\n ? htmlTreeAsString(handlerData.event.target as Node, keyAttrs)\n : htmlTreeAsString(handlerData.event as unknown as Node, keyAttrs);\n } catch (e) {\n target = '';\n }\n\n if (target.length === 0) {\n return;\n }\n\n getCurrentHub().addBreadcrumb(\n {\n category: `ui.${handlerData.name}`,\n message: target,\n },\n {\n event: handlerData.event,\n name: handlerData.name,\n global: handlerData.global,\n },\n );\n }\n\n return _innerDomBreadcrumb;\n}\n\n/**\n * Creates breadcrumbs from console API calls\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction _consoleBreadcrumb(handlerData: { [key: string]: any }): void {\n // This is a hack to fix a Vue3-specific bug that causes an infinite loop of\n // console warnings. This happens when a Vue template is rendered with\n // an undeclared variable, which we try to stringify, ultimately causing\n // Vue to issue another warning which repeats indefinitely.\n // see: https://github.com/getsentry/sentry-javascript/pull/6010\n // see: https://github.com/getsentry/sentry-javascript/issues/5916\n for (let i = 0; i < handlerData.args.length; i++) {\n if (handlerData.args[i] === 'ref=Ref<') {\n handlerData.args[i + 1] = 'viewRef';\n break;\n }\n }\n const breadcrumb = {\n category: 'console',\n data: {\n arguments: handlerData.args,\n logger: 'console',\n },\n level: severityLevelFromString(handlerData.level),\n message: safeJoin(handlerData.args, ' '),\n };\n\n if (handlerData.level === 'assert') {\n if (handlerData.args[0] === false) {\n breadcrumb.message = `Assertion failed: ${safeJoin(handlerData.args.slice(1), ' ') || 'console.assert'}`;\n breadcrumb.data.arguments = handlerData.args.slice(1);\n } else {\n // Don't capture a breadcrumb for passed assertions\n return;\n }\n }\n\n getCurrentHub().addBreadcrumb(breadcrumb, {\n input: handlerData.args,\n level: handlerData.level,\n });\n}\n\n/**\n * Creates breadcrumbs from XHR API calls\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction _xhrBreadcrumb(handlerData: { [key: string]: any }): void {\n if (handlerData.endTimestamp) {\n // We only capture complete, non-sentry requests\n if (handlerData.xhr.__sentry_own_request__) {\n return;\n }\n\n const { method, url, status_code, body } = handlerData.xhr.__sentry_xhr__ || {};\n\n getCurrentHub().addBreadcrumb(\n {\n category: 'xhr',\n data: {\n method,\n url,\n status_code,\n },\n type: 'http',\n },\n {\n xhr: handlerData.xhr,\n input: body,\n },\n );\n\n return;\n }\n}\n\n/**\n * Creates breadcrumbs from fetch API calls\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction _fetchBreadcrumb(handlerData: { [key: string]: any }): void {\n // We only capture complete fetch requests\n if (!handlerData.endTimestamp) {\n return;\n }\n\n if (handlerData.fetchData.url.match(/sentry_key/) && handlerData.fetchData.method === 'POST') {\n // We will not create breadcrumbs for fetch requests that contain `sentry_key` (internal sentry requests)\n return;\n }\n\n if (handlerData.error) {\n getCurrentHub().addBreadcrumb(\n {\n category: 'fetch',\n data: handlerData.fetchData,\n level: 'error',\n type: 'http',\n },\n {\n data: handlerData.error,\n input: handlerData.args,\n },\n );\n } else {\n getCurrentHub().addBreadcrumb(\n {\n category: 'fetch',\n data: {\n ...handlerData.fetchData,\n status_code: handlerData.response.status,\n },\n type: 'http',\n },\n {\n input: handlerData.args,\n response: handlerData.response,\n },\n );\n }\n}\n\n/**\n * Creates breadcrumbs from history API calls\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction _historyBreadcrumb(handlerData: { [key: string]: any }): void {\n let from = handlerData.from;\n let to = handlerData.to;\n const parsedLoc = parseUrl(WINDOW.location.href);\n let parsedFrom = parseUrl(from);\n const parsedTo = parseUrl(to);\n\n // Initial pushState doesn't provide `from` information\n if (!parsedFrom.path) {\n parsedFrom = parsedLoc;\n }\n\n // Use only the path component of the URL if the URL matches the current\n // document (almost all the time when using pushState)\n if (parsedLoc.protocol === parsedTo.protocol && parsedLoc.host === parsedTo.host) {\n to = parsedTo.relative;\n }\n if (parsedLoc.protocol === parsedFrom.protocol && parsedLoc.host === parsedFrom.host) {\n from = parsedFrom.relative;\n }\n\n getCurrentHub().addBreadcrumb({\n category: 'navigation',\n data: {\n from,\n to,\n },\n });\n}\n","import { BaseClient, getCurrentHub, getEnvelopeEndpointWithUrlEncodedAuth, Scope, SDK_VERSION } from '@sentry/core';\nimport { ClientOptions, Event, EventHint, Options, Severity, SeverityLevel } from '@sentry/types';\nimport { createClientReportEnvelope, dsnToString, getEventDescription, logger, serializeEnvelope } from '@sentry/utils';\n\nimport { eventFromException, eventFromMessage } from './eventbuilder';\nimport { WINDOW } from './helpers';\nimport { Breadcrumbs } from './integrations';\nimport { BREADCRUMB_INTEGRATION_ID } from './integrations/breadcrumbs';\nimport { BrowserTransportOptions } from './transports/types';\n\nexport interface BaseBrowserOptions {\n /**\n * A pattern for error URLs which should exclusively be sent to Sentry.\n * This is the opposite of {@link Options.denyUrls}.\n * By default, all errors will be sent.\n */\n allowUrls?: Array;\n\n /**\n * A pattern for error URLs which should not be sent to Sentry.\n * To allow certain errors instead, use {@link Options.allowUrls}.\n * By default, all errors will be sent.\n */\n denyUrls?: Array;\n}\n\n/**\n * Configuration options for the Sentry Browser SDK.\n * @see @sentry/types Options for more information.\n */\nexport interface BrowserOptions extends Options, BaseBrowserOptions {}\n\n/**\n * Configuration options for the Sentry Browser SDK Client class\n * @see BrowserClient for more information.\n */\nexport interface BrowserClientOptions extends ClientOptions, BaseBrowserOptions {}\n\n/**\n * The Sentry Browser SDK Client.\n *\n * @see BrowserOptions for documentation on configuration options.\n * @see SentryClient for usage documentation.\n */\nexport class BrowserClient extends BaseClient {\n /**\n * Creates a new Browser SDK instance.\n *\n * @param options Configuration options for this SDK.\n */\n public constructor(options: BrowserClientOptions) {\n options._metadata = options._metadata || {};\n options._metadata.sdk = options._metadata.sdk || {\n name: 'sentry.javascript.browser',\n packages: [\n {\n name: 'npm:@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 public eventFromException(exception: unknown, hint?: EventHint): PromiseLike {\n return eventFromException(this._options.stackParser, exception, hint, this._options.attachStacktrace);\n }\n\n /**\n * @inheritDoc\n */\n public eventFromMessage(\n message: string,\n // eslint-disable-next-line deprecation/deprecation\n level: Severity | SeverityLevel = 'info',\n hint?: EventHint,\n ): PromiseLike {\n return eventFromMessage(this._options.stackParser, message, level, hint, this._options.attachStacktrace);\n }\n\n /**\n * @inheritDoc\n */\n public sendEvent(event: Event, hint?: EventHint): void {\n // We only want to add the sentry event breadcrumb when the user has the breadcrumb integration installed and\n // activated its `sentry` option.\n // We also do not want to use the `Breadcrumbs` class here directly, because we do not want it to be included in\n // bundles, if it is not used by the SDK.\n // This all sadly is a bit ugly, but we currently don't have a \"pre-send\" hook on the integrations so we do it this\n // way for now.\n const breadcrumbIntegration = this.getIntegrationById(BREADCRUMB_INTEGRATION_ID) as Breadcrumbs | null;\n if (\n breadcrumbIntegration &&\n // We check for definedness of `options`, even though it is not strictly necessary, because that access to\n // `.sentry` below does not throw, in case users provided their own integration with id \"Breadcrumbs\" that does\n // not have an`options` field\n breadcrumbIntegration.options &&\n breadcrumbIntegration.options.sentry\n ) {\n getCurrentHub().addBreadcrumb(\n {\n category: `sentry.${event.type === 'transaction' ? 'transaction' : 'event'}`,\n event_id: event.event_id,\n level: event.level,\n message: getEventDescription(event),\n },\n {\n event,\n },\n );\n }\n\n super.sendEvent(event, hint);\n }\n\n /**\n * @inheritDoc\n */\n protected _prepareEvent(event: Event, hint: EventHint, scope?: Scope): PromiseLike {\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 private _flushOutcomes(): void {\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 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 url = getEnvelopeEndpointWithUrlEncodedAuth(this._dsn, this._options);\n const envelope = createClientReportEnvelope(outcomes, this._options.tunnel && dsnToString(this._dsn));\n\n try {\n const isRealNavigator = Object.prototype.toString.call(WINDOW && WINDOW.navigator) === '[object Navigator]';\n const hasSendBeacon = isRealNavigator && typeof WINDOW.navigator.sendBeacon === 'function';\n // Make sure beacon is not used if user configures custom transport options\n if (hasSendBeacon && !this._options.transportOptions) {\n // Prevent illegal invocations - https://xgwang.me/posts/you-may-not-know-beacon/#it-may-throw-error%2C-be-sure-to-catch\n const sendBeacon = WINDOW.navigator.sendBeacon.bind(WINDOW.navigator);\n sendBeacon(url, serializeEnvelope(envelope));\n } else {\n // If beacon is not supported or if they are using the tunnel option\n // use our regular transport to send client reports to Sentry.\n this._sendEnvelope(envelope);\n }\n } catch (e) {\n __DEBUG_BUILD__ && logger.error(e);\n }\n }\n}\n","import { ClientReport, ClientReportEnvelope, ClientReportItem } from '@sentry/types';\n\nimport { createEnvelope } from './envelope';\nimport { dateTimestampInSeconds } from './time';\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 */\nexport function createClientReportEnvelope(\n discarded_events: ClientReport['discarded_events'],\n dsn?: string,\n timestamp?: number,\n): ClientReportEnvelope {\n const clientReportItem: ClientReportItem = [\n { type: 'client_report' },\n {\n timestamp: timestamp || dateTimestampInSeconds(),\n discarded_events,\n },\n ];\n return createEnvelope(dsn ? { dsn } : {}, [clientReportItem]);\n}\n","import { StackFrame, StackLineParser, StackLineParserFn } from '@sentry/types';\nimport { createStackParser } from '@sentry/utils';\n\n// global reference to slice\nconst UNKNOWN_FUNCTION = '?';\n\nconst OPERA10_PRIORITY = 10;\nconst OPERA11_PRIORITY = 20;\nconst CHROME_PRIORITY = 30;\nconst WINJS_PRIORITY = 40;\nconst GECKO_PRIORITY = 50;\n\nfunction createFrame(filename: string, func: string, lineno?: number, colno?: number): StackFrame {\n const frame: StackFrame = {\n filename,\n function: func,\n // All browser frames are considered in_app\n in_app: true,\n };\n\n if (lineno !== undefined) {\n frame.lineno = lineno;\n }\n\n if (colno !== undefined) {\n frame.colno = colno;\n }\n\n return frame;\n}\n\n// Chromium based browsers: Chrome, Brave, new Opera, new Edge\nconst chromeRegex =\n /^\\s*at (?:(.*\\).*?|.*?) ?\\((?:address at )?)?((?:file|https?|blob|chrome-extension|address|native|eval|webpack||[-a-z]+:|.*bundle|\\/)?.*?)(?::(\\d+))?(?::(\\d+))?\\)?\\s*$/i;\nconst chromeEvalRegex = /\\((\\S*)(?::(\\d+))(?::(\\d+))\\)/;\n\nconst chrome: StackLineParserFn = line => {\n const parts = chromeRegex.exec(line);\n\n if (parts) {\n const isEval = parts[2] && parts[2].indexOf('eval') === 0; // start of line\n\n if (isEval) {\n const subMatch = chromeEvalRegex.exec(parts[2]);\n\n if (subMatch) {\n // throw out eval line/column and use top-most line/column number\n parts[2] = subMatch[1]; // url\n parts[3] = subMatch[2]; // line\n parts[4] = subMatch[3]; // column\n }\n }\n\n // Kamil: One more hack won't hurt us right? Understanding and adding more rules on top of these regexps right now\n // would be way too time consuming. (TODO: Rewrite whole RegExp to be more readable)\n const [func, filename] = extractSafariExtensionDetails(parts[1] || UNKNOWN_FUNCTION, parts[2]);\n\n return createFrame(filename, func, parts[3] ? +parts[3] : undefined, parts[4] ? +parts[4] : undefined);\n }\n\n return;\n};\n\nexport const chromeStackLineParser: StackLineParser = [CHROME_PRIORITY, chrome];\n\n// gecko regex: `(?:bundle|\\d+\\.js)`: `bundle` is for react native, `\\d+\\.js` also but specifically for ram bundles because it\n// generates filenames without a prefix like `file://` the filenames in the stacktrace are just 42.js\n// We need this specific case for now because we want no other regex to match.\nconst geckoREgex =\n /^\\s*(.*?)(?:\\((.*?)\\))?(?:^|@)?((?:file|https?|blob|chrome|webpack|resource|moz-extension|safari-extension|safari-web-extension|capacitor)?:\\/.*?|\\[native code\\]|[^@]*(?:bundle|\\d+\\.js)|\\/[\\w\\-. /=]+)(?::(\\d+))?(?::(\\d+))?\\s*$/i;\nconst geckoEvalRegex = /(\\S+) line (\\d+)(?: > eval line \\d+)* > eval/i;\n\nconst gecko: StackLineParserFn = line => {\n const parts = geckoREgex.exec(line);\n\n if (parts) {\n const isEval = parts[3] && parts[3].indexOf(' > eval') > -1;\n if (isEval) {\n const subMatch = geckoEvalRegex.exec(parts[3]);\n\n if (subMatch) {\n // throw out eval line/column and use top-most line number\n parts[1] = parts[1] || 'eval';\n parts[3] = subMatch[1];\n parts[4] = subMatch[2];\n parts[5] = ''; // no column when eval\n }\n }\n\n let filename = parts[3];\n let func = parts[1] || UNKNOWN_FUNCTION;\n [func, filename] = extractSafariExtensionDetails(func, filename);\n\n return createFrame(filename, func, parts[4] ? +parts[4] : undefined, parts[5] ? +parts[5] : undefined);\n }\n\n return;\n};\n\nexport const geckoStackLineParser: StackLineParser = [GECKO_PRIORITY, gecko];\n\nconst winjsRegex =\n /^\\s*at (?:((?:\\[object object\\])?.+) )?\\(?((?:file|ms-appx|https?|webpack|blob):.*?):(\\d+)(?::(\\d+))?\\)?\\s*$/i;\n\nconst winjs: StackLineParserFn = line => {\n const parts = winjsRegex.exec(line);\n\n return parts\n ? createFrame(parts[2], parts[1] || UNKNOWN_FUNCTION, +parts[3], parts[4] ? +parts[4] : undefined)\n : undefined;\n};\n\nexport const winjsStackLineParser: StackLineParser = [WINJS_PRIORITY, winjs];\n\nconst opera10Regex = / line (\\d+).*script (?:in )?(\\S+)(?:: in function (\\S+))?$/i;\n\nconst opera10: StackLineParserFn = line => {\n const parts = opera10Regex.exec(line);\n return parts ? createFrame(parts[2], parts[3] || UNKNOWN_FUNCTION, +parts[1]) : undefined;\n};\n\nexport const opera10StackLineParser: StackLineParser = [OPERA10_PRIORITY, opera10];\n\nconst opera11Regex =\n / line (\\d+), column (\\d+)\\s*(?:in (?:]+)>|([^)]+))\\(.*\\))? in (.*):\\s*$/i;\n\nconst opera11: StackLineParserFn = line => {\n const parts = opera11Regex.exec(line);\n return parts ? createFrame(parts[5], parts[3] || parts[4] || UNKNOWN_FUNCTION, +parts[1], +parts[2]) : undefined;\n};\n\nexport const opera11StackLineParser: StackLineParser = [OPERA11_PRIORITY, opera11];\n\nexport const defaultStackLineParsers = [chromeStackLineParser, geckoStackLineParser, winjsStackLineParser];\n\nexport const defaultStackParser = createStackParser(...defaultStackLineParsers);\n\n/**\n * Safari web extensions, starting version unknown, can produce \"frames-only\" stacktraces.\n * What it means, is that instead of format like:\n *\n * Error: wat\n * at function@url:row:col\n * at function@url:row:col\n * at function@url:row:col\n *\n * it produces something like:\n *\n * function@url:row:col\n * function@url:row:col\n * function@url:row:col\n *\n * Because of that, it won't be captured by `chrome` RegExp and will fall into `Gecko` branch.\n * This function is extracted so that we can use it in both places without duplicating the logic.\n * Unfortunately \"just\" changing RegExp is too complicated now and making it pass all tests\n * and fix this case seems like an impossible, or at least way too time-consuming task.\n */\nconst extractSafariExtensionDetails = (func: string, filename: string): [string, string] => {\n const isSafariExtension = func.indexOf('safari-extension') !== -1;\n const isSafariWebExtension = func.indexOf('safari-web-extension') !== -1;\n\n return isSafariExtension || isSafariWebExtension\n ? [\n func.indexOf('@') !== -1 ? func.split('@')[0] : UNKNOWN_FUNCTION,\n isSafariExtension ? `safari-extension:${filename}` : `safari-web-extension:${filename}`,\n ]\n : [func, filename];\n};\n","import { Integration, WrappedFunction } from '@sentry/types';\nimport { fill, getFunctionName, getOriginalFunction } from '@sentry/utils';\n\nimport { WINDOW, wrap } from '../helpers';\n\nconst DEFAULT_EVENT_TARGET = [\n 'EventTarget',\n 'Window',\n 'Node',\n 'ApplicationCache',\n 'AudioTrackList',\n 'ChannelMergerNode',\n 'CryptoOperation',\n 'EventSource',\n 'FileReader',\n 'HTMLUnknownElement',\n 'IDBDatabase',\n 'IDBRequest',\n 'IDBTransaction',\n 'KeyOperation',\n 'MediaController',\n 'MessagePort',\n 'ModalWindow',\n 'Notification',\n 'SVGElementInstance',\n 'Screen',\n 'TextTrack',\n 'TextTrackCue',\n 'TextTrackList',\n 'WebSocket',\n 'WebSocketWorker',\n 'Worker',\n 'XMLHttpRequest',\n 'XMLHttpRequestEventTarget',\n 'XMLHttpRequestUpload',\n];\n\ntype XMLHttpRequestProp = 'onload' | 'onerror' | 'onprogress' | 'onreadystatechange';\n\n/** JSDoc */\ninterface TryCatchOptions {\n setTimeout: boolean;\n setInterval: boolean;\n requestAnimationFrame: boolean;\n XMLHttpRequest: boolean;\n eventTarget: boolean | string[];\n}\n\n/** Wrap timer functions and event targets to catch errors and provide better meta data */\nexport class TryCatch implements Integration {\n /**\n * @inheritDoc\n */\n public static id: string = 'TryCatch';\n\n /**\n * @inheritDoc\n */\n public name: string = TryCatch.id;\n\n /** JSDoc */\n private readonly _options: TryCatchOptions;\n\n /**\n * @inheritDoc\n */\n public constructor(options?: Partial) {\n this._options = {\n XMLHttpRequest: true,\n eventTarget: true,\n requestAnimationFrame: true,\n setInterval: true,\n setTimeout: true,\n ...options,\n };\n }\n\n /**\n * Wrap timer functions and event targets to catch errors\n * and provide better metadata.\n */\n public setupOnce(): void {\n if (this._options.setTimeout) {\n fill(WINDOW, 'setTimeout', _wrapTimeFunction);\n }\n\n if (this._options.setInterval) {\n fill(WINDOW, 'setInterval', _wrapTimeFunction);\n }\n\n if (this._options.requestAnimationFrame) {\n fill(WINDOW, 'requestAnimationFrame', _wrapRAF);\n }\n\n if (this._options.XMLHttpRequest && 'XMLHttpRequest' in WINDOW) {\n fill(XMLHttpRequest.prototype, 'send', _wrapXHR);\n }\n\n const eventTargetOption = this._options.eventTarget;\n if (eventTargetOption) {\n const eventTarget = Array.isArray(eventTargetOption) ? eventTargetOption : DEFAULT_EVENT_TARGET;\n eventTarget.forEach(_wrapEventTarget);\n }\n }\n}\n\n/** JSDoc */\nfunction _wrapTimeFunction(original: () => void): () => number {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return function (this: any, ...args: any[]): number {\n const originalCallback = args[0];\n args[0] = wrap(originalCallback, {\n mechanism: {\n data: { function: getFunctionName(original) },\n handled: true,\n type: 'instrument',\n },\n });\n return original.apply(this, args);\n };\n}\n\n/** JSDoc */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction _wrapRAF(original: any): (callback: () => void) => any {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return function (this: any, callback: () => void): () => void {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n return original.apply(this, [\n wrap(callback, {\n mechanism: {\n data: {\n function: 'requestAnimationFrame',\n handler: getFunctionName(original),\n },\n handled: true,\n type: 'instrument',\n },\n }),\n ]);\n };\n}\n\n/** JSDoc */\nfunction _wrapXHR(originalSend: () => void): () => void {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return function (this: XMLHttpRequest, ...args: any[]): void {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const xhr = this;\n const xmlHttpRequestProps: XMLHttpRequestProp[] = ['onload', 'onerror', 'onprogress', 'onreadystatechange'];\n\n xmlHttpRequestProps.forEach(prop => {\n if (prop in xhr && typeof xhr[prop] === 'function') {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n fill(xhr, prop, function (original: WrappedFunction): () => any {\n const wrapOptions = {\n mechanism: {\n data: {\n function: prop,\n handler: getFunctionName(original),\n },\n handled: true,\n type: 'instrument',\n },\n };\n\n // If Instrument integration has been called before TryCatch, get the name of original function\n const originalFunction = getOriginalFunction(original);\n if (originalFunction) {\n wrapOptions.mechanism.data.handler = getFunctionName(originalFunction);\n }\n\n // Otherwise wrap directly\n return wrap(original, wrapOptions);\n });\n }\n });\n\n return originalSend.apply(this, args);\n };\n}\n\n/** JSDoc */\nfunction _wrapEventTarget(target: string): void {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const globalObject = WINDOW as { [key: string]: any };\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n const proto = globalObject[target] && globalObject[target].prototype;\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access, no-prototype-builtins\n if (!proto || !proto.hasOwnProperty || !proto.hasOwnProperty('addEventListener')) {\n return;\n }\n\n fill(proto, 'addEventListener', function (original: () => void): (\n eventName: string,\n fn: EventListenerObject,\n options?: boolean | AddEventListenerOptions,\n ) => void {\n return function (\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this: any,\n eventName: string,\n fn: EventListenerObject,\n options?: boolean | AddEventListenerOptions,\n ): (eventName: string, fn: EventListenerObject, capture?: boolean, secure?: boolean) => void {\n try {\n if (typeof fn.handleEvent === 'function') {\n // ESlint disable explanation:\n // First, it is generally safe to call `wrap` with an unbound function. Furthermore, using `.bind()` would\n // introduce a bug here, because bind returns a new function that doesn't have our\n // flags(like __sentry_original__) attached. `wrap` checks for those flags to avoid unnecessary wrapping.\n // Without those flags, every call to addEventListener wraps the function again, causing a memory leak.\n // eslint-disable-next-line @typescript-eslint/unbound-method\n fn.handleEvent = wrap(fn.handleEvent, {\n mechanism: {\n data: {\n function: 'handleEvent',\n handler: getFunctionName(fn),\n target,\n },\n handled: true,\n type: 'instrument',\n },\n });\n }\n } catch (err) {\n // can sometimes get 'Permission denied to access property \"handle Event'\n }\n\n return original.apply(this, [\n eventName,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n wrap(fn as any as WrappedFunction, {\n mechanism: {\n data: {\n function: 'addEventListener',\n handler: getFunctionName(fn),\n target,\n },\n handled: true,\n type: 'instrument',\n },\n }),\n options,\n ]);\n };\n });\n\n fill(\n proto,\n 'removeEventListener',\n function (\n originalRemoveEventListener: () => void,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n ): (this: any, eventName: string, fn: EventListenerObject, options?: boolean | EventListenerOptions) => () => void {\n return function (\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this: any,\n eventName: string,\n fn: EventListenerObject,\n options?: boolean | EventListenerOptions,\n ): () => void {\n /**\n * There are 2 possible scenarios here:\n *\n * 1. Someone passes a callback, which was attached prior to Sentry initialization, or by using unmodified\n * method, eg. `document.addEventListener.call(el, name, handler). In this case, we treat this function\n * as a pass-through, and call original `removeEventListener` with it.\n *\n * 2. Someone passes a callback, which was attached after Sentry was initialized, which means that it was using\n * our wrapped version of `addEventListener`, which internally calls `wrap` helper.\n * This helper \"wraps\" whole callback inside a try/catch statement, and attached appropriate metadata to it,\n * in order for us to make a distinction between wrapped/non-wrapped functions possible.\n * If a function was wrapped, it has additional property of `__sentry_wrapped__`, holding the handler.\n *\n * When someone adds a handler prior to initialization, and then do it again, but after,\n * then we have to detach both of them. Otherwise, if we'd detach only wrapped one, it'd be impossible\n * to get rid of the initial handler and it'd stick there forever.\n */\n const wrappedEventHandler = fn as unknown as WrappedFunction;\n try {\n const originalEventHandler = wrappedEventHandler && wrappedEventHandler.__sentry_wrapped__;\n if (originalEventHandler) {\n originalRemoveEventListener.call(this, eventName, originalEventHandler, options);\n }\n } catch (e) {\n // ignore, accessing __sentry_wrapped__ will throw in some Selenium environments\n }\n return originalRemoveEventListener.call(this, eventName, wrappedEventHandler, options);\n };\n },\n );\n}\n","/* eslint-disable @typescript-eslint/no-unsafe-member-access */\nimport { getCurrentHub } from '@sentry/core';\nimport { Event, EventHint, Hub, Integration, Primitive, StackParser } from '@sentry/types';\nimport {\n addExceptionMechanism,\n addInstrumentationHandler,\n getLocationHref,\n isErrorEvent,\n isPrimitive,\n isString,\n logger,\n} from '@sentry/utils';\n\nimport { BrowserClient } from '../client';\nimport { eventFromUnknownInput } from '../eventbuilder';\nimport { shouldIgnoreOnError } from '../helpers';\n\ntype GlobalHandlersIntegrationsOptionKeys = 'onerror' | 'onunhandledrejection';\n\n/** JSDoc */\ntype GlobalHandlersIntegrations = Record;\n\n/** Global handlers */\nexport class GlobalHandlers implements Integration {\n /**\n * @inheritDoc\n */\n public static id: string = 'GlobalHandlers';\n\n /**\n * @inheritDoc\n */\n public name: string = GlobalHandlers.id;\n\n /** JSDoc */\n private readonly _options: GlobalHandlersIntegrations;\n\n /**\n * Stores references functions to installing handlers. Will set to undefined\n * after they have been run so that they are not used twice.\n */\n private _installFunc: Record void) | undefined> = {\n onerror: _installGlobalOnErrorHandler,\n onunhandledrejection: _installGlobalOnUnhandledRejectionHandler,\n };\n\n /** JSDoc */\n public constructor(options?: GlobalHandlersIntegrations) {\n this._options = {\n onerror: true,\n onunhandledrejection: true,\n ...options,\n };\n }\n /**\n * @inheritDoc\n */\n public setupOnce(): void {\n Error.stackTraceLimit = 50;\n const options = this._options;\n\n // We can disable guard-for-in as we construct the options object above + do checks against\n // `this._installFunc` for the property.\n // eslint-disable-next-line guard-for-in\n for (const key in options) {\n const installFunc = this._installFunc[key as GlobalHandlersIntegrationsOptionKeys];\n if (installFunc && options[key as GlobalHandlersIntegrationsOptionKeys]) {\n globalHandlerLog(key);\n installFunc();\n this._installFunc[key as GlobalHandlersIntegrationsOptionKeys] = undefined;\n }\n }\n }\n}\n\n/** JSDoc */\nfunction _installGlobalOnErrorHandler(): void {\n addInstrumentationHandler(\n 'error',\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (data: { msg: any; url: any; line: any; column: any; error: any }) => {\n const [hub, stackParser, attachStacktrace] = getHubAndOptions();\n if (!hub.getIntegration(GlobalHandlers)) {\n return;\n }\n const { msg, url, line, column, error } = data;\n if (shouldIgnoreOnError() || (error && error.__sentry_own_request__)) {\n return;\n }\n\n const event =\n error === undefined && isString(msg)\n ? _eventFromIncompleteOnError(msg, url, line, column)\n : _enhanceEventWithInitialFrame(\n eventFromUnknownInput(stackParser, error || msg, undefined, attachStacktrace, false),\n url,\n line,\n column,\n );\n\n event.level = 'error';\n\n addMechanismAndCapture(hub, error, event, 'onerror');\n },\n );\n}\n\n/** JSDoc */\nfunction _installGlobalOnUnhandledRejectionHandler(): void {\n addInstrumentationHandler(\n 'unhandledrejection',\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (e: any) => {\n const [hub, stackParser, attachStacktrace] = getHubAndOptions();\n if (!hub.getIntegration(GlobalHandlers)) {\n return;\n }\n let error = e;\n\n // dig the object of the rejection out of known event types\n try {\n // PromiseRejectionEvents store the object of the rejection under 'reason'\n // see https://developer.mozilla.org/en-US/docs/Web/API/PromiseRejectionEvent\n if ('reason' in e) {\n error = e.reason;\n }\n // something, somewhere, (likely a browser extension) effectively casts PromiseRejectionEvents\n // to CustomEvents, moving the `promise` and `reason` attributes of the PRE into\n // the CustomEvent's `detail` attribute, since they're not part of CustomEvent's spec\n // see https://developer.mozilla.org/en-US/docs/Web/API/CustomEvent and\n // https://github.com/getsentry/sentry-javascript/issues/2380\n else if ('detail' in e && 'reason' in e.detail) {\n error = e.detail.reason;\n }\n } catch (_oO) {\n // no-empty\n }\n\n if (shouldIgnoreOnError() || (error && error.__sentry_own_request__)) {\n return true;\n }\n\n const event = isPrimitive(error)\n ? _eventFromRejectionWithPrimitive(error)\n : eventFromUnknownInput(stackParser, error, undefined, attachStacktrace, true);\n\n event.level = 'error';\n\n addMechanismAndCapture(hub, error, event, 'onunhandledrejection');\n return;\n },\n );\n}\n\n/**\n * Create an event from a promise rejection where the `reason` is a primitive.\n *\n * @param reason: The `reason` property of the promise rejection\n * @returns An Event object with an appropriate `exception` value\n */\nfunction _eventFromRejectionWithPrimitive(reason: Primitive): Event {\n return {\n exception: {\n values: [\n {\n type: 'UnhandledRejection',\n // String() is needed because the Primitive type includes symbols (which can't be automatically stringified)\n value: `Non-Error promise rejection captured with value: ${String(reason)}`,\n },\n ],\n },\n };\n}\n\n/**\n * This function creates a stack from an old, error-less onerror handler.\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction _eventFromIncompleteOnError(msg: any, url: any, line: any, column: any): Event {\n const ERROR_TYPES_RE =\n /^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/i;\n\n // If 'message' is ErrorEvent, get real message from inside\n let message = isErrorEvent(msg) ? msg.message : msg;\n let name = 'Error';\n\n const groups = message.match(ERROR_TYPES_RE);\n if (groups) {\n name = groups[1];\n message = groups[2];\n }\n\n const event = {\n exception: {\n values: [\n {\n type: name,\n value: message,\n },\n ],\n },\n };\n\n return _enhanceEventWithInitialFrame(event, url, line, column);\n}\n\n/** JSDoc */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction _enhanceEventWithInitialFrame(event: Event, url: any, line: any, column: any): Event {\n // event.exception\n const e = (event.exception = event.exception || {});\n // event.exception.values\n const ev = (e.values = e.values || []);\n // event.exception.values[0]\n const ev0 = (ev[0] = ev[0] || {});\n // event.exception.values[0].stacktrace\n const ev0s = (ev0.stacktrace = ev0.stacktrace || {});\n // event.exception.values[0].stacktrace.frames\n const ev0sf = (ev0s.frames = ev0s.frames || []);\n\n const colno = isNaN(parseInt(column, 10)) ? undefined : column;\n const lineno = isNaN(parseInt(line, 10)) ? undefined : line;\n const filename = isString(url) && url.length > 0 ? url : getLocationHref();\n\n // event.exception.values[0].stacktrace.frames\n if (ev0sf.length === 0) {\n ev0sf.push({\n colno,\n filename,\n function: '?',\n in_app: true,\n lineno,\n });\n }\n\n return event;\n}\n\nfunction globalHandlerLog(type: string): void {\n __DEBUG_BUILD__ && logger.log(`Global Handler attached: ${type}`);\n}\n\nfunction addMechanismAndCapture(hub: Hub, error: EventHint['originalException'], event: Event, type: string): void {\n addExceptionMechanism(event, {\n handled: false,\n type,\n });\n hub.captureEvent(event, {\n originalException: error,\n });\n}\n\nfunction getHubAndOptions(): [Hub, StackParser, boolean | undefined] {\n const hub = getCurrentHub();\n const client = hub.getClient();\n const options = (client && client.getOptions()) || {\n stackParser: () => [],\n attachStacktrace: false,\n };\n return [hub, options.stackParser, options.attachStacktrace];\n}\n","import { addGlobalEventProcessor, getCurrentHub } from '@sentry/core';\nimport { Event, EventHint, Exception, ExtendedError, Integration, StackParser } from '@sentry/types';\nimport { isInstanceOf } from '@sentry/utils';\n\nimport { BrowserClient } from '../client';\nimport { exceptionFromError } from '../eventbuilder';\n\nconst DEFAULT_KEY = 'cause';\nconst DEFAULT_LIMIT = 5;\n\ninterface LinkedErrorsOptions {\n key: string;\n limit: number;\n}\n\n/** Adds SDK info to an event. */\nexport class LinkedErrors implements Integration {\n /**\n * @inheritDoc\n */\n public static id: string = 'LinkedErrors';\n\n /**\n * @inheritDoc\n */\n public readonly name: string = LinkedErrors.id;\n\n /**\n * @inheritDoc\n */\n private readonly _key: LinkedErrorsOptions['key'];\n\n /**\n * @inheritDoc\n */\n private readonly _limit: LinkedErrorsOptions['limit'];\n\n /**\n * @inheritDoc\n */\n public constructor(options: Partial = {}) {\n this._key = options.key || DEFAULT_KEY;\n this._limit = options.limit || DEFAULT_LIMIT;\n }\n\n /**\n * @inheritDoc\n */\n public setupOnce(): void {\n const client = getCurrentHub().getClient();\n if (!client) {\n return;\n }\n addGlobalEventProcessor((event: Event, hint?: EventHint) => {\n const self = getCurrentHub().getIntegration(LinkedErrors);\n return self ? _handler(client.getOptions().stackParser, self._key, self._limit, event, hint) : event;\n });\n }\n}\n\n/**\n * @inheritDoc\n */\nexport function _handler(\n parser: StackParser,\n key: string,\n limit: number,\n event: Event,\n hint?: EventHint,\n): Event | null {\n if (!event.exception || !event.exception.values || !hint || !isInstanceOf(hint.originalException, Error)) {\n return event;\n }\n const linkedErrors = _walkErrorTree(parser, limit, hint.originalException as ExtendedError, key);\n event.exception.values = [...linkedErrors, ...event.exception.values];\n return event;\n}\n\n/**\n * JSDOC\n */\nexport function _walkErrorTree(\n parser: StackParser,\n limit: number,\n error: ExtendedError,\n key: string,\n stack: Exception[] = [],\n): Exception[] {\n if (!isInstanceOf(error[key], Error) || stack.length + 1 >= limit) {\n return stack;\n }\n const exception = exceptionFromError(parser, error[key]);\n return _walkErrorTree(parser, limit, error[key], key, [exception, ...stack]);\n}\n","import { Event, EventProcessor, Exception, Hub, Integration, StackFrame } from '@sentry/types';\nimport { logger } from '@sentry/utils';\n\n/** Deduplication filter */\nexport class Dedupe implements Integration {\n /**\n * @inheritDoc\n */\n public static id: string = 'Dedupe';\n\n /**\n * @inheritDoc\n */\n public name: string = Dedupe.id;\n\n /**\n * @inheritDoc\n */\n private _previousEvent?: Event;\n\n /**\n * @inheritDoc\n */\n public setupOnce(addGlobalEventProcessor: (callback: EventProcessor) => void, getCurrentHub: () => Hub): void {\n const eventProcessor: EventProcessor = currentEvent => {\n const self = getCurrentHub().getIntegration(Dedupe);\n if (self) {\n // Juuust in case something goes wrong\n try {\n if (_shouldDropEvent(currentEvent, self._previousEvent)) {\n __DEBUG_BUILD__ && logger.warn('Event dropped due to being a duplicate of previously captured event.');\n return null;\n }\n } catch (_oO) {\n return (self._previousEvent = currentEvent);\n }\n\n return (self._previousEvent = currentEvent);\n }\n return currentEvent;\n };\n\n eventProcessor.id = this.name;\n addGlobalEventProcessor(eventProcessor);\n }\n}\n\n/** JSDoc */\nfunction _shouldDropEvent(currentEvent: Event, previousEvent?: Event): boolean {\n if (!previousEvent) {\n return false;\n }\n\n if (_isSameMessageEvent(currentEvent, previousEvent)) {\n return true;\n }\n\n if (_isSameExceptionEvent(currentEvent, previousEvent)) {\n return true;\n }\n\n return false;\n}\n\n/** JSDoc */\nfunction _isSameMessageEvent(currentEvent: Event, previousEvent: Event): boolean {\n const currentMessage = currentEvent.message;\n const previousMessage = previousEvent.message;\n\n // If neither event has a message property, they were both exceptions, so bail out\n if (!currentMessage && !previousMessage) {\n return false;\n }\n\n // If only one event has a stacktrace, but not the other one, they are not the same\n if ((currentMessage && !previousMessage) || (!currentMessage && previousMessage)) {\n return false;\n }\n\n if (currentMessage !== previousMessage) {\n return false;\n }\n\n if (!_isSameFingerprint(currentEvent, previousEvent)) {\n return false;\n }\n\n if (!_isSameStacktrace(currentEvent, previousEvent)) {\n return false;\n }\n\n return true;\n}\n\n/** JSDoc */\nfunction _isSameExceptionEvent(currentEvent: Event, previousEvent: Event): boolean {\n const previousException = _getExceptionFromEvent(previousEvent);\n const currentException = _getExceptionFromEvent(currentEvent);\n\n if (!previousException || !currentException) {\n return false;\n }\n\n if (previousException.type !== currentException.type || previousException.value !== currentException.value) {\n return false;\n }\n\n if (!_isSameFingerprint(currentEvent, previousEvent)) {\n return false;\n }\n\n if (!_isSameStacktrace(currentEvent, previousEvent)) {\n return false;\n }\n\n return true;\n}\n\n/** JSDoc */\nfunction _isSameStacktrace(currentEvent: Event, previousEvent: Event): boolean {\n let currentFrames = _getFramesFromEvent(currentEvent);\n let previousFrames = _getFramesFromEvent(previousEvent);\n\n // If neither event has a stacktrace, they are assumed to be the same\n if (!currentFrames && !previousFrames) {\n return true;\n }\n\n // If only one event has a stacktrace, but not the other one, they are not the same\n if ((currentFrames && !previousFrames) || (!currentFrames && previousFrames)) {\n return false;\n }\n\n currentFrames = currentFrames as StackFrame[];\n previousFrames = previousFrames as StackFrame[];\n\n // If number of frames differ, they are not the same\n if (previousFrames.length !== currentFrames.length) {\n return false;\n }\n\n // Otherwise, compare the two\n for (let i = 0; i < previousFrames.length; i++) {\n const frameA = previousFrames[i];\n const frameB = currentFrames[i];\n\n if (\n frameA.filename !== frameB.filename ||\n frameA.lineno !== frameB.lineno ||\n frameA.colno !== frameB.colno ||\n frameA.function !== frameB.function\n ) {\n return false;\n }\n }\n\n return true;\n}\n\n/** JSDoc */\nfunction _isSameFingerprint(currentEvent: Event, previousEvent: Event): boolean {\n let currentFingerprint = currentEvent.fingerprint;\n let previousFingerprint = previousEvent.fingerprint;\n\n // If neither event has a fingerprint, they are assumed to be the same\n if (!currentFingerprint && !previousFingerprint) {\n return true;\n }\n\n // If only one event has a fingerprint, but not the other one, they are not the same\n if ((currentFingerprint && !previousFingerprint) || (!currentFingerprint && previousFingerprint)) {\n return false;\n }\n\n currentFingerprint = currentFingerprint as string[];\n previousFingerprint = previousFingerprint as string[];\n\n // Otherwise, compare the two\n try {\n return !!(currentFingerprint.join('') === previousFingerprint.join(''));\n } catch (_oO) {\n return false;\n }\n}\n\n/** JSDoc */\nfunction _getExceptionFromEvent(event: Event): Exception | undefined {\n return event.exception && event.exception.values && event.exception.values[0];\n}\n\n/** JSDoc */\nfunction _getFramesFromEvent(event: Event): StackFrame[] | undefined {\n const exception = event.exception;\n\n if (exception) {\n try {\n // @ts-ignore Object could be undefined\n return exception.values[0].stacktrace.frames;\n } catch (_oO) {\n return undefined;\n }\n }\n return undefined;\n}\n","import { addGlobalEventProcessor, getCurrentHub } from '@sentry/core';\nimport { Event, Integration } from '@sentry/types';\n\nimport { WINDOW } from '../helpers';\n\n/** HttpContext integration collects information about HTTP request headers */\nexport class HttpContext implements Integration {\n /**\n * @inheritDoc\n */\n public static id: string = 'HttpContext';\n\n /**\n * @inheritDoc\n */\n public name: string = HttpContext.id;\n\n /**\n * @inheritDoc\n */\n public setupOnce(): void {\n addGlobalEventProcessor((event: Event) => {\n if (getCurrentHub().getIntegration(HttpContext)) {\n // if none of the information we want exists, don't bother\n if (!WINDOW.navigator && !WINDOW.location && !WINDOW.document) {\n return event;\n }\n\n // grab as much info as exists and add it to the event\n const url = (event.request && event.request.url) || (WINDOW.location && WINDOW.location.href);\n const { referrer } = WINDOW.document || {};\n const { userAgent } = WINDOW.navigator || {};\n\n const headers = {\n ...(event.request && event.request.headers),\n ...(referrer && { Referer: referrer }),\n ...(userAgent && { 'User-Agent': userAgent }),\n };\n const request = { ...(url && { url }), headers };\n\n return { ...event, request };\n }\n return event;\n });\n }\n}\n","import { SentryError } from './error';\nimport { rejectedSyncPromise, resolvedSyncPromise, SyncPromise } from './syncpromise';\n\nexport interface PromiseBuffer {\n // exposes the internal array so tests can assert on the state of it.\n // XXX: this really should not be public api.\n $: Array>;\n add(taskProducer: () => PromiseLike): PromiseLike;\n drain(timeout?: number): PromiseLike;\n}\n\n/**\n * Creates an new PromiseBuffer object with the specified limit\n * @param limit max number of promises that can be stored in the buffer\n */\nexport function makePromiseBuffer(limit?: number): PromiseBuffer {\n const buffer: Array> = [];\n\n function isReady(): boolean {\n return limit === undefined || buffer.length < limit;\n }\n\n /**\n * Remove a promise from the queue.\n *\n * @param task Can be any PromiseLike\n * @returns Removed promise.\n */\n function remove(task: PromiseLike): PromiseLike {\n return buffer.splice(buffer.indexOf(task), 1)[0];\n }\n\n /**\n * Add a promise (representing an in-flight action) to the queue, and set it to remove itself on fulfillment.\n *\n * @param taskProducer A function producing any PromiseLike; In previous versions this used to be `task:\n * PromiseLike`, but under that model, Promises were instantly created on the call-site and their executor\n * functions therefore ran immediately. Thus, even if the buffer was full, the action still happened. By\n * requiring the promise to be wrapped in a function, we can defer promise creation until after the buffer\n * limit check.\n * @returns The original promise.\n */\n function add(taskProducer: () => PromiseLike): PromiseLike {\n if (!isReady()) {\n return rejectedSyncPromise(new SentryError('Not adding Promise because buffer limit was reached.'));\n }\n\n // start the task and add its promise to the queue\n const task = taskProducer();\n if (buffer.indexOf(task) === -1) {\n buffer.push(task);\n }\n void task\n .then(() => remove(task))\n // Use `then(null, rejectionHandler)` rather than `catch(rejectionHandler)` so that we can use `PromiseLike`\n // rather than `Promise`. `PromiseLike` doesn't have a `.catch` method, making its polyfill smaller. (ES5 didn't\n // have promises, so TS has to polyfill when down-compiling.)\n .then(null, () =>\n remove(task).then(null, () => {\n // We have to add another catch here because `remove()` starts a new promise chain.\n }),\n );\n return task;\n }\n\n /**\n * Wait for all promises in the queue to resolve or for timeout to expire, whichever comes first.\n *\n * @param timeout The time, in ms, after which to resolve to `false` if the queue is still non-empty. Passing `0` (or\n * not passing anything) will make the promise wait as long as it takes for the queue to drain before resolving to\n * `true`.\n * @returns A promise which will resolve to `true` if the queue is already empty or drains before the timeout, and\n * `false` otherwise\n */\n function drain(timeout?: number): PromiseLike {\n return new SyncPromise((resolve, reject) => {\n let counter = buffer.length;\n\n if (!counter) {\n return resolve(true);\n }\n\n // wait for `timeout` ms and then resolve to `false` (if not cancelled first)\n const capturedSetTimeout = setTimeout(() => {\n if (timeout && timeout > 0) {\n resolve(false);\n }\n }, timeout);\n\n // if all promises resolve in time, cancel the timer and resolve to `true`\n buffer.forEach(item => {\n void resolvedSyncPromise(item).then(() => {\n // eslint-disable-next-line no-plusplus\n if (!--counter) {\n clearTimeout(capturedSetTimeout);\n resolve(true);\n }\n }, reject);\n });\n });\n }\n\n return {\n $: buffer,\n add,\n drain,\n };\n}\n","import { TransportMakeRequestResponse } from '@sentry/types';\n\n// Intentionally keeping the key broad, as we don't know for sure what rate limit headers get returned from backend\nexport type RateLimits = Record;\n\nexport const DEFAULT_RETRY_AFTER = 60 * 1000; // 60 seconds\n\n/**\n * Extracts Retry-After value from the request header or returns default value\n * @param header string representation of 'Retry-After' header\n * @param now current unix timestamp\n *\n */\nexport function parseRetryAfterHeader(header: string, now: number = Date.now()): number {\n const headerDelay = parseInt(`${header}`, 10);\n if (!isNaN(headerDelay)) {\n return headerDelay * 1000;\n }\n\n const headerDate = Date.parse(`${header}`);\n if (!isNaN(headerDate)) {\n return headerDate - now;\n }\n\n return DEFAULT_RETRY_AFTER;\n}\n\n/**\n * Gets the time that given category is disabled until for rate limiting\n */\nexport function disabledUntil(limits: RateLimits, category: string): number {\n return limits[category] || limits.all || 0;\n}\n\n/**\n * Checks if a category is rate limited\n */\nexport function isRateLimited(limits: RateLimits, category: string, now: number = Date.now()): boolean {\n return disabledUntil(limits, category) > now;\n}\n\n/**\n * Update ratelimits from incoming headers.\n * Returns true if headers contains a non-empty rate limiting header.\n */\nexport function updateRateLimits(\n limits: RateLimits,\n { statusCode, headers }: TransportMakeRequestResponse,\n now: number = Date.now(),\n): RateLimits {\n const updatedRateLimits: RateLimits = {\n ...limits,\n };\n\n // \"The name is case-insensitive.\"\n // https://developer.mozilla.org/en-US/docs/Web/API/Headers/get\n const rateLimitHeader = headers && headers['x-sentry-rate-limits'];\n const retryAfterHeader = headers && headers['retry-after'];\n\n if (rateLimitHeader) {\n /**\n * rate limit headers are of the form\n *
,
,..\n * where each
is of the form\n * : : : \n * where\n * is a delay in seconds\n * is the event type(s) (error, transaction, etc) being rate limited and is of the form\n * ;;...\n * is what's being limited (org, project, or key) - ignored by SDK\n * is an arbitrary string like \"org_quota\" - ignored by SDK\n */\n for (const limit of rateLimitHeader.trim().split(',')) {\n const [retryAfter, categories] = limit.split(':', 2);\n const headerDelay = parseInt(retryAfter, 10);\n const delay = (!isNaN(headerDelay) ? headerDelay : 60) * 1000; // 60sec default\n if (!categories) {\n updatedRateLimits.all = now + delay;\n } else {\n for (const category of categories.split(';')) {\n updatedRateLimits[category] = now + delay;\n }\n }\n }\n } else if (retryAfterHeader) {\n updatedRateLimits.all = now + parseRetryAfterHeader(retryAfterHeader, now);\n } else if (statusCode === 429) {\n updatedRateLimits.all = now + 60 * 1000;\n }\n\n return updatedRateLimits;\n}\n","import {\n Envelope,\n EnvelopeItem,\n EventDropReason,\n InternalBaseTransportOptions,\n Transport,\n TransportRequestExecutor,\n} from '@sentry/types';\nimport {\n createEnvelope,\n envelopeItemTypeToDataCategory,\n forEachEnvelopeItem,\n isRateLimited,\n logger,\n makePromiseBuffer,\n PromiseBuffer,\n RateLimits,\n resolvedSyncPromise,\n SentryError,\n serializeEnvelope,\n updateRateLimits,\n} from '@sentry/utils';\n\nexport const DEFAULT_TRANSPORT_BUFFER_SIZE = 30;\n\n/**\n * Creates an instance of a Sentry `Transport`\n *\n * @param options\n * @param makeRequest\n */\nexport function createTransport(\n options: InternalBaseTransportOptions,\n makeRequest: TransportRequestExecutor,\n buffer: PromiseBuffer = makePromiseBuffer(options.bufferSize || DEFAULT_TRANSPORT_BUFFER_SIZE),\n): Transport {\n let rateLimits: RateLimits = {};\n\n const flush = (timeout?: number): PromiseLike => buffer.drain(timeout);\n\n function send(envelope: Envelope): PromiseLike {\n const filteredEnvelopeItems: EnvelopeItem[] = [];\n\n // Drop rate limited items from envelope\n forEachEnvelopeItem(envelope, (item, type) => {\n const envelopeItemDataCategory = envelopeItemTypeToDataCategory(type);\n if (isRateLimited(rateLimits, envelopeItemDataCategory)) {\n options.recordDroppedEvent('ratelimit_backoff', envelopeItemDataCategory);\n } else {\n filteredEnvelopeItems.push(item);\n }\n });\n\n // Skip sending if envelope is empty after filtering out rate limited events\n if (filteredEnvelopeItems.length === 0) {\n return resolvedSyncPromise();\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const filteredEnvelope: Envelope = createEnvelope(envelope[0], filteredEnvelopeItems as any);\n\n // Creates client report for each item in an envelope\n const recordEnvelopeLoss = (reason: EventDropReason): void => {\n forEachEnvelopeItem(filteredEnvelope, (_, type) => {\n options.recordDroppedEvent(reason, envelopeItemTypeToDataCategory(type));\n });\n };\n\n const requestTask = (): PromiseLike =>\n makeRequest({ body: serializeEnvelope(filteredEnvelope, options.textEncoder) }).then(\n response => {\n // We don't want to throw on NOK responses, but we want to at least log them\n if (response.statusCode !== undefined && (response.statusCode < 200 || response.statusCode >= 300)) {\n __DEBUG_BUILD__ && logger.warn(`Sentry responded with status code ${response.statusCode} to sent event.`);\n }\n\n rateLimits = updateRateLimits(rateLimits, response);\n },\n error => {\n __DEBUG_BUILD__ && logger.error('Failed while sending event:', error);\n recordEnvelopeLoss('network_error');\n },\n );\n\n return buffer.add(requestTask).then(\n result => result,\n error => {\n if (error instanceof SentryError) {\n __DEBUG_BUILD__ && logger.error('Skipped sending event because buffer is full.');\n recordEnvelopeLoss('queue_overflow');\n return resolvedSyncPromise();\n } else {\n throw error;\n }\n },\n );\n }\n\n return {\n send,\n flush,\n };\n}\n","import { isNativeFetch, logger } from '@sentry/utils';\n\nimport { WINDOW } from '../helpers';\n\nlet cachedFetchImpl: FetchImpl | undefined = undefined;\n\nexport type FetchImpl = typeof fetch;\n\n/**\n * A special usecase for incorrectly wrapped Fetch APIs in conjunction with ad-blockers.\n * Whenever someone wraps the Fetch API and returns the wrong promise chain,\n * this chain becomes orphaned and there is no possible way to capture it's rejections\n * other than allowing it bubble up to this very handler. eg.\n *\n * const f = window.fetch;\n * window.fetch = function () {\n * const p = f.apply(this, arguments);\n *\n * p.then(function() {\n * console.log('hi.');\n * });\n *\n * return p;\n * }\n *\n * `p.then(function () { ... })` is producing a completely separate promise chain,\n * however, what's returned is `p` - the result of original `fetch` call.\n *\n * This mean, that whenever we use the Fetch API to send our own requests, _and_\n * some ad-blocker blocks it, this orphaned chain will _always_ reject,\n * effectively causing another event to be captured.\n * This makes a whole process become an infinite loop, which we need to somehow\n * deal with, and break it in one way or another.\n *\n * To deal with this issue, we are making sure that we _always_ use the real\n * browser Fetch API, instead of relying on what `window.fetch` exposes.\n * The only downside to this would be missing our own requests as breadcrumbs,\n * but because we are already not doing this, it should be just fine.\n *\n * Possible failed fetch error messages per-browser:\n *\n * Chrome: Failed to fetch\n * Edge: Failed to Fetch\n * Firefox: NetworkError when attempting to fetch resource\n * Safari: resource blocked by content blocker\n */\nexport function getNativeFetchImplementation(): FetchImpl {\n if (cachedFetchImpl) {\n return cachedFetchImpl;\n }\n\n /* eslint-disable @typescript-eslint/unbound-method */\n\n // Fast path to avoid DOM I/O\n if (isNativeFetch(WINDOW.fetch)) {\n return (cachedFetchImpl = WINDOW.fetch.bind(WINDOW));\n }\n\n const document = WINDOW.document;\n let fetchImpl = WINDOW.fetch;\n // eslint-disable-next-line deprecation/deprecation\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.fetch) {\n fetchImpl = contentWindow.fetch;\n }\n document.head.removeChild(sandbox);\n } catch (e) {\n __DEBUG_BUILD__ &&\n logger.warn('Could not create sandbox iframe for pure fetch check, bailing to window.fetch: ', e);\n }\n }\n\n return (cachedFetchImpl = fetchImpl.bind(WINDOW));\n /* eslint-enable @typescript-eslint/unbound-method */\n}\n\n/** Clears cached fetch impl */\nexport function clearCachedFetchImplementation(): void {\n cachedFetchImpl = undefined;\n}\n","import { createTransport } from '@sentry/core';\nimport { Transport, TransportMakeRequestResponse, TransportRequest } from '@sentry/types';\nimport { rejectedSyncPromise } from '@sentry/utils';\n\nimport { BrowserTransportOptions } from './types';\nimport { clearCachedFetchImplementation, FetchImpl, getNativeFetchImplementation } from './utils';\n\n/**\n * Creates a Transport that uses the Fetch API to send events to Sentry.\n */\nexport function makeFetchTransport(\n options: BrowserTransportOptions,\n nativeFetch: FetchImpl = getNativeFetchImplementation(),\n): Transport {\n function makeRequest(request: TransportRequest): PromiseLike {\n const requestOptions: RequestInit = {\n body: request.body,\n method: 'POST',\n referrerPolicy: 'origin',\n headers: options.headers,\n // Outgoing requests are usually cancelled when navigating to a different page, causing a \"TypeError: Failed to\n // fetch\" error and sending a \"network_error\" client-outcome - in Chrome, the request status shows \"(cancelled)\".\n // The `keepalive` flag keeps outgoing requests alive, even when switching pages. We want this since we're\n // frequently sending events right before the user is switching pages (eg. whenfinishing navigation transactions).\n // Gotchas:\n // - `keepalive` isn't supported by Firefox\n // - As per spec (https://fetch.spec.whatwg.org/#http-network-or-cache-fetch), a request with `keepalive: true`\n // and a content length of > 64 kibibytes returns a network error. We will therefore only activate the flag when\n // we're below that limit.\n keepalive: request.body.length <= 65536,\n ...options.fetchOptions,\n };\n\n try {\n return nativeFetch(options.url, requestOptions).then(response => ({\n statusCode: response.status,\n headers: {\n 'x-sentry-rate-limits': response.headers.get('X-Sentry-Rate-Limits'),\n 'retry-after': response.headers.get('Retry-After'),\n },\n }));\n } catch (e) {\n clearCachedFetchImplementation();\n return rejectedSyncPromise(e);\n }\n }\n\n return createTransport(options, makeRequest);\n}\n","import { createTransport } from '@sentry/core';\nimport { Transport, TransportMakeRequestResponse, TransportRequest } from '@sentry/types';\nimport { SyncPromise } from '@sentry/utils';\n\nimport { BrowserTransportOptions } from './types';\n\n/**\n * The DONE ready state for XmlHttpRequest\n *\n * Defining it here as a constant b/c XMLHttpRequest.DONE is not always defined\n * (e.g. during testing, it is `undefined`)\n *\n * @see {@link https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/readyState}\n */\nconst XHR_READYSTATE_DONE = 4;\n\n/**\n * Creates a Transport that uses the XMLHttpRequest API to send events to Sentry.\n */\nexport function makeXHRTransport(options: BrowserTransportOptions): Transport {\n function makeRequest(request: TransportRequest): PromiseLike {\n return new SyncPromise((resolve, reject) => {\n const xhr = new XMLHttpRequest();\n\n xhr.onerror = reject;\n\n xhr.onreadystatechange = (): void => {\n if (xhr.readyState === XHR_READYSTATE_DONE) {\n resolve({\n statusCode: xhr.status,\n headers: {\n 'x-sentry-rate-limits': xhr.getResponseHeader('X-Sentry-Rate-Limits'),\n 'retry-after': xhr.getResponseHeader('Retry-After'),\n },\n });\n }\n };\n\n xhr.open('POST', options.url);\n\n for (const header in options.headers) {\n if (Object.prototype.hasOwnProperty.call(options.headers, header)) {\n xhr.setRequestHeader(header, options.headers[header]);\n }\n }\n\n xhr.send(request.body);\n });\n }\n\n return createTransport(options, makeRequest);\n}\n","import {\n getCurrentHub,\n getIntegrationsToSetup,\n getReportDialogEndpoint,\n Hub,\n initAndBind,\n Integrations as CoreIntegrations,\n} from '@sentry/core';\nimport {\n addInstrumentationHandler,\n logger,\n resolvedSyncPromise,\n stackParserFromStackParserOptions,\n supportsFetch,\n} from '@sentry/utils';\n\nimport { BrowserClient, BrowserClientOptions, BrowserOptions } from './client';\nimport { ReportDialogOptions, WINDOW, wrap as internalWrap } from './helpers';\nimport { Breadcrumbs, Dedupe, GlobalHandlers, HttpContext, LinkedErrors, TryCatch } from './integrations';\nimport { defaultStackParser } from './stack-parsers';\nimport { makeFetchTransport, makeXHRTransport } from './transports';\n\nexport const defaultIntegrations = [\n new CoreIntegrations.InboundFilters(),\n new CoreIntegrations.FunctionToString(),\n new TryCatch(),\n new Breadcrumbs(),\n new GlobalHandlers(),\n new LinkedErrors(),\n new Dedupe(),\n new HttpContext(),\n];\n\n/**\n * The Sentry Browser SDK Client.\n *\n * To use this SDK, call the {@link init} function as early as possible when\n * loading the web page. To set context information or send manual events, use\n * the provided methods.\n *\n * @example\n *\n * ```\n *\n * import { init } from '@sentry/browser';\n *\n * init({\n * dsn: '__DSN__',\n * // ...\n * });\n * ```\n *\n * @example\n * ```\n *\n * import { configureScope } from '@sentry/browser';\n * configureScope((scope: Scope) => {\n * scope.setExtra({ battery: 0.7 });\n * scope.setTag({ user_mode: 'admin' });\n * scope.setUser({ id: '4711' });\n * });\n * ```\n *\n * @example\n * ```\n *\n * import { addBreadcrumb } from '@sentry/browser';\n * addBreadcrumb({\n * message: 'My Breadcrumb',\n * // ...\n * });\n * ```\n *\n * @example\n *\n * ```\n *\n * import * as Sentry from '@sentry/browser';\n * Sentry.captureMessage('Hello, world!');\n * Sentry.captureException(new Error('Good bye'));\n * Sentry.captureEvent({\n * message: 'Manual',\n * stacktrace: [\n * // ...\n * ],\n * });\n * ```\n *\n * @see {@link BrowserOptions} for documentation on configuration options.\n */\nexport function init(options: BrowserOptions = {}): void {\n if (options.defaultIntegrations === undefined) {\n options.defaultIntegrations = defaultIntegrations;\n }\n if (options.release === undefined) {\n // This supports the variable that sentry-webpack-plugin injects\n if (WINDOW.SENTRY_RELEASE && WINDOW.SENTRY_RELEASE.id) {\n options.release = WINDOW.SENTRY_RELEASE.id;\n }\n }\n if (options.autoSessionTracking === undefined) {\n options.autoSessionTracking = true;\n }\n if (options.sendClientReports === undefined) {\n options.sendClientReports = true;\n }\n\n const clientOptions: BrowserClientOptions = {\n ...options,\n stackParser: stackParserFromStackParserOptions(options.stackParser || defaultStackParser),\n integrations: getIntegrationsToSetup(options),\n transport: options.transport || (supportsFetch() ? makeFetchTransport : makeXHRTransport),\n };\n\n initAndBind(BrowserClient, clientOptions);\n\n if (options.autoSessionTracking) {\n startSessionTracking();\n }\n}\n\n/**\n * Present the user with a report dialog.\n *\n * @param options Everything is optional, we try to fetch all info need from the global scope.\n */\nexport function showReportDialog(options: ReportDialogOptions = {}, hub: Hub = getCurrentHub()): void {\n // doesn't work without a document (React Native)\n if (!WINDOW.document) {\n __DEBUG_BUILD__ && logger.error('Global document not defined in showReportDialog call');\n return;\n }\n\n const { client, scope } = hub.getStackTop();\n const dsn = options.dsn || (client && client.getDsn());\n if (!dsn) {\n __DEBUG_BUILD__ && logger.error('DSN not configured for showReportDialog call');\n return;\n }\n\n if (scope) {\n options.user = {\n ...scope.getUser(),\n ...options.user,\n };\n }\n\n if (!options.eventId) {\n options.eventId = hub.lastEventId();\n }\n\n const script = WINDOW.document.createElement('script');\n script.async = true;\n script.src = getReportDialogEndpoint(dsn, options);\n\n if (options.onLoad) {\n // eslint-disable-next-line @typescript-eslint/unbound-method\n script.onload = options.onLoad;\n }\n\n const injectionPoint = WINDOW.document.head || WINDOW.document.body;\n if (injectionPoint) {\n injectionPoint.appendChild(script);\n } else {\n __DEBUG_BUILD__ && logger.error('Not injecting report dialog. No injection point found in HTML');\n }\n}\n\n/**\n * This is the getter for lastEventId.\n *\n * @returns The last event id of a captured event.\n */\nexport function lastEventId(): string | undefined {\n return getCurrentHub().lastEventId();\n}\n\n/**\n * This function is here to be API compatible with the loader.\n * @hidden\n */\nexport function forceLoad(): void {\n // Noop\n}\n\n/**\n * This function is here to be API compatible with the loader.\n * @hidden\n */\nexport function onLoad(callback: () => void): void {\n callback();\n}\n\n/**\n * Call `flush()` on the current client, if there is one. See {@link Client.flush}.\n *\n * @param timeout Maximum time in ms the client should wait to flush its event queue. Omitting this parameter will cause\n * the client to wait until all events are sent before resolving the promise.\n * @returns A promise which resolves to `true` if the queue successfully drains before the timeout, or `false` if it\n * doesn't (or if there's no client defined).\n */\nexport function flush(timeout?: number): PromiseLike {\n const client = getCurrentHub().getClient();\n if (client) {\n return client.flush(timeout);\n }\n __DEBUG_BUILD__ && logger.warn('Cannot flush events. No client defined.');\n return resolvedSyncPromise(false);\n}\n\n/**\n * Call `close()` on the current client, if there is one. See {@link Client.close}.\n *\n * @param timeout Maximum time in ms the client should wait to flush its event queue before shutting down. Omitting this\n * parameter will cause the client to wait until all events are sent before disabling itself.\n * @returns A promise which resolves to `true` if the queue successfully drains before the timeout, or `false` if it\n * doesn't (or if there's no client defined).\n */\nexport function close(timeout?: number): PromiseLike {\n const client = getCurrentHub().getClient();\n if (client) {\n return client.close(timeout);\n }\n __DEBUG_BUILD__ && logger.warn('Cannot flush events and disable SDK. No client defined.');\n return resolvedSyncPromise(false);\n}\n\n/**\n * Wrap code within a try/catch block so the SDK is able to capture errors.\n *\n * @param fn A function to wrap.\n *\n * @returns The result of wrapped function call.\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function wrap(fn: (...args: any) => any): any {\n return internalWrap(fn)();\n}\n\nfunction startSessionOnHub(hub: Hub): void {\n hub.startSession({ ignoreDuration: true });\n hub.captureSession();\n}\n\n/**\n * Enable automatic Session Tracking for the initial page load.\n */\nfunction startSessionTracking(): void {\n if (typeof WINDOW.document === 'undefined') {\n __DEBUG_BUILD__ &&\n logger.warn('Session tracking in non-browser environment with @sentry/browser is not supported.');\n return;\n }\n\n const hub = getCurrentHub();\n\n // The only way for this to be false is for there to be a version mismatch between @sentry/browser (>= 6.0.0) and\n // @sentry/hub (< 5.27.0). In the simple case, there won't ever be such a mismatch, because the two packages are\n // pinned at the same version in package.json, but there are edge cases where it's possible. See\n // https://github.com/getsentry/sentry-javascript/issues/3207 and\n // https://github.com/getsentry/sentry-javascript/issues/3234 and\n // https://github.com/getsentry/sentry-javascript/issues/3278.\n if (!hub.captureSession) {\n return;\n }\n\n // The session duration for browser sessions does not track a meaningful\n // concept that can be used as a metric.\n // Automatically captured sessions are akin to page views, and thus we\n // discard their duration.\n startSessionOnHub(hub);\n\n // We want to create a session for every navigation as well\n addInstrumentationHandler('history', ({ from, to }) => {\n // Don't create an additional session for the initial route or if the location did not change\n if (!(from === undefined || from === to)) {\n startSessionOnHub(getCurrentHub());\n }\n });\n}\n","import { WINDOW } from '@sentry/browser';\nimport { Transaction, TransactionSource } from '@sentry/types';\nimport hoistNonReactStatics from 'hoist-non-react-statics';\nimport * as React from 'react';\n\nimport { Action, Location, ReactRouterInstrumentation } from './types';\n\n// We need to disable eslint no-explict-any because any is required for the\n// react-router typings.\n/* eslint-disable @typescript-eslint/no-explicit-any */\ntype Match = { path: string; url: string; params: Record; isExact: boolean };\n\nexport type RouterHistory = {\n location?: Location;\n listen?(cb: (location: Location, action: Action) => void): void;\n} & Record;\n\nexport type RouteConfig = {\n [propName: string]: any;\n path?: string | string[];\n exact?: boolean;\n component?: JSX.Element;\n routes?: RouteConfig[];\n};\n\ntype MatchPath = (pathname: string, props: string | string[] | any, parent?: Match | null) => Match | null;\n/* eslint-enable @typescript-eslint/no-explicit-any */\n\nlet activeTransaction: Transaction | undefined;\n\nexport function reactRouterV4Instrumentation(\n history: RouterHistory,\n routes?: RouteConfig[],\n matchPath?: MatchPath,\n): ReactRouterInstrumentation {\n return createReactRouterInstrumentation(history, 'react-router-v4', routes, matchPath);\n}\n\nexport function reactRouterV5Instrumentation(\n history: RouterHistory,\n routes?: RouteConfig[],\n matchPath?: MatchPath,\n): ReactRouterInstrumentation {\n return createReactRouterInstrumentation(history, 'react-router-v5', routes, matchPath);\n}\n\nfunction createReactRouterInstrumentation(\n history: RouterHistory,\n name: string,\n allRoutes: RouteConfig[] = [],\n matchPath?: MatchPath,\n): ReactRouterInstrumentation {\n function getInitPathName(): string | undefined {\n if (history && history.location) {\n return history.location.pathname;\n }\n\n if (WINDOW && WINDOW.location) {\n return WINDOW.location.pathname;\n }\n\n return undefined;\n }\n\n /**\n * Normalizes a transaction name. Returns the new name as well as the\n * source of the transaction.\n *\n * @param pathname The initial pathname we normalize\n */\n function normalizeTransactionName(pathname: string): [string, TransactionSource] {\n if (allRoutes.length === 0 || !matchPath) {\n return [pathname, 'url'];\n }\n\n const branches = matchRoutes(allRoutes, pathname, matchPath);\n // eslint-disable-next-line @typescript-eslint/prefer-for-of\n for (let x = 0; x < branches.length; x++) {\n if (branches[x].match.isExact) {\n return [branches[x].match.path, 'route'];\n }\n }\n\n return [pathname, 'url'];\n }\n\n const tags = {\n 'routing.instrumentation': name,\n };\n\n return (customStartTransaction, startTransactionOnPageLoad = true, startTransactionOnLocationChange = true): void => {\n const initPathName = getInitPathName();\n if (startTransactionOnPageLoad && initPathName) {\n const [name, source] = normalizeTransactionName(initPathName);\n activeTransaction = customStartTransaction({\n name,\n op: 'pageload',\n tags,\n metadata: {\n source,\n },\n });\n }\n\n if (startTransactionOnLocationChange && history.listen) {\n history.listen((location, action) => {\n if (action && (action === 'PUSH' || action === 'POP')) {\n if (activeTransaction) {\n activeTransaction.finish();\n }\n\n const [name, source] = normalizeTransactionName(location.pathname);\n activeTransaction = customStartTransaction({\n name,\n op: 'navigation',\n tags,\n metadata: {\n source,\n },\n });\n }\n });\n }\n };\n}\n\n/**\n * Matches a set of routes to a pathname\n * Based on implementation from\n */\nfunction matchRoutes(\n routes: RouteConfig[],\n pathname: string,\n matchPath: MatchPath,\n branch: Array<{ route: RouteConfig; match: Match }> = [],\n): Array<{ route: RouteConfig; match: Match }> {\n routes.some(route => {\n const match = route.path\n ? matchPath(pathname, route)\n : branch.length\n ? branch[branch.length - 1].match // use parent match\n : computeRootMatch(pathname); // use default \"root\" match\n\n if (match) {\n branch.push({ route, match });\n\n if (route.routes) {\n matchRoutes(route.routes, pathname, matchPath, branch);\n }\n }\n\n return !!match;\n });\n\n return branch;\n}\n\nfunction computeRootMatch(pathname: string): Match {\n return { path: '/', url: '/', params: {}, isExact: pathname === '/' };\n}\n\n/* eslint-disable @typescript-eslint/no-explicit-any, @typescript-eslint/no-unsafe-member-access */\nexport function withSentryRouting

, R extends React.ComponentType

>(Route: R): R {\n const componentDisplayName = (Route as any).displayName || (Route as any).name;\n\n const WrappedRoute: React.FC

= (props: P) => {\n if (activeTransaction && props && props.computedMatch && props.computedMatch.isExact) {\n activeTransaction.setName(props.computedMatch.path, 'route');\n }\n\n // @ts-ignore Setting more specific React Component typing for `R` generic above\n // will break advanced type inference done by react router params:\n // https://github.com/DefinitelyTyped/DefinitelyTyped/blob/13dc4235c069e25fe7ee16e11f529d909f9f3ff8/types/react-router/index.d.ts#L154-L164\n return ;\n };\n\n WrappedRoute.displayName = `sentryRoute(${componentDisplayName})`;\n hoistNonReactStatics(WrappedRoute, Route);\n // @ts-ignore Setting more specific React Component typing for `R` generic above\n // will break advanced type inference done by react router params:\n // https://github.com/DefinitelyTyped/DefinitelyTyped/blob/13dc4235c069e25fe7ee16e11f529d909f9f3ff8/types/react-router/index.d.ts#L154-L164\n return WrappedRoute;\n}\n/* eslint-enable @typescript-eslint/no-explicit-any, @typescript-eslint/no-unsafe-member-access */\n","import { TraceparentData } from '@sentry/types';\n\nexport const TRACEPARENT_REGEXP = new RegExp(\n '^[ \\\\t]*' + // whitespace\n '([0-9a-f]{32})?' + // trace_id\n '-?([0-9a-f]{16})?' + // span_id\n '-?([01])?' + // sampled\n '[ \\\\t]*$', // whitespace\n);\n\n/**\n * Extract transaction context data from a `sentry-trace` header.\n *\n * @param traceparent Traceparent string\n *\n * @returns Object containing data from the header, or undefined if traceparent string is malformed\n */\nexport function extractTraceparentData(traceparent: string): TraceparentData | undefined {\n const matches = traceparent.match(TRACEPARENT_REGEXP);\n\n if (!traceparent || !matches) {\n // empty string or no matches is invalid traceparent data\n return undefined;\n }\n\n let parentSampled: boolean | undefined;\n if (matches[3] === '1') {\n parentSampled = true;\n } else if (matches[3] === '0') {\n parentSampled = false;\n }\n\n return {\n traceId: matches[1],\n parentSampled,\n parentSpanId: matches[2],\n };\n}\n","import { DynamicSamplingContext } from '@sentry/types';\n\nimport { isString } from './is';\nimport { logger } from './logger';\n\nexport const BAGGAGE_HEADER_NAME = 'baggage';\n\nexport const SENTRY_BAGGAGE_KEY_PREFIX = 'sentry-';\n\nexport const SENTRY_BAGGAGE_KEY_PREFIX_REGEX = /^sentry-/;\n\n/**\n * Max length of a serialized baggage string\n *\n * https://www.w3.org/TR/baggage/#limits\n */\nexport const MAX_BAGGAGE_STRING_LENGTH = 8192;\n\n/**\n * Takes a baggage header and turns it into Dynamic Sampling Context, by extracting all the \"sentry-\" prefixed values\n * from it.\n *\n * @param baggageHeader A very bread definition of a baggage header as it might appear in various frameworks.\n * @returns The Dynamic Sampling Context that was found on `baggageHeader`, if there was any, `undefined` otherwise.\n */\nexport function baggageHeaderToDynamicSamplingContext(\n // Very liberal definition of what any incoming header might look like\n baggageHeader: string | string[] | number | null | undefined | boolean,\n): Partial | undefined {\n if (!isString(baggageHeader) && !Array.isArray(baggageHeader)) {\n return undefined;\n }\n\n // Intermediary object to store baggage key value pairs of incoming baggage headers on.\n // It is later used to read Sentry-DSC-values from.\n let baggageObject: Readonly> = {};\n\n if (Array.isArray(baggageHeader)) {\n // Combine all baggage headers into one object containing the baggage values so we can later read the Sentry-DSC-values from it\n baggageObject = baggageHeader.reduce>((acc, curr) => {\n const currBaggageObject = baggageHeaderToObject(curr);\n return {\n ...acc,\n ...currBaggageObject,\n };\n }, {});\n } else {\n // Return undefined if baggage header is an empty string (technically an empty baggage header is not spec conform but\n // this is how we choose to handle it)\n if (!baggageHeader) {\n return undefined;\n }\n\n baggageObject = baggageHeaderToObject(baggageHeader);\n }\n\n // Read all \"sentry-\" prefixed values out of the baggage object and put it onto a dynamic sampling context object.\n const dynamicSamplingContext = Object.entries(baggageObject).reduce>((acc, [key, value]) => {\n if (key.match(SENTRY_BAGGAGE_KEY_PREFIX_REGEX)) {\n const nonPrefixedKey = key.slice(SENTRY_BAGGAGE_KEY_PREFIX.length);\n acc[nonPrefixedKey] = value;\n }\n return acc;\n }, {});\n\n // Only return a dynamic sampling context object if there are keys in it.\n // A keyless object means there were no sentry values on the header, which means that there is no DSC.\n if (Object.keys(dynamicSamplingContext).length > 0) {\n return dynamicSamplingContext as Partial;\n } else {\n return undefined;\n }\n}\n\n/**\n * Turns a Dynamic Sampling Object into a baggage header by prefixing all the keys on the object with \"sentry-\".\n *\n * @param dynamicSamplingContext The Dynamic Sampling Context to turn into a header. For convenience and compatibility\n * with the `getDynamicSamplingContext` method on the Transaction class ,this argument can also be `undefined`. If it is\n * `undefined` the function will return `undefined`.\n * @returns a baggage header, created from `dynamicSamplingContext`, or `undefined` either if `dynamicSamplingContext`\n * was `undefined`, or if `dynamicSamplingContext` didn't contain any values.\n */\nexport function dynamicSamplingContextToSentryBaggageHeader(\n // this also takes undefined for convenience and bundle size in other places\n dynamicSamplingContext: Partial,\n): string | undefined {\n // Prefix all DSC keys with \"sentry-\" and put them into a new object\n const sentryPrefixedDSC = Object.entries(dynamicSamplingContext).reduce>(\n (acc, [dscKey, dscValue]) => {\n if (dscValue) {\n acc[`${SENTRY_BAGGAGE_KEY_PREFIX}${dscKey}`] = dscValue;\n }\n return acc;\n },\n {},\n );\n\n return objectToBaggageHeader(sentryPrefixedDSC);\n}\n\n/**\n * Will parse a baggage header, which is a simple key-value map, into a flat object.\n *\n * @param baggageHeader The baggage header to parse.\n * @returns a flat object containing all the key-value pairs from `baggageHeader`.\n */\nfunction baggageHeaderToObject(baggageHeader: string): Record {\n return baggageHeader\n .split(',')\n .map(baggageEntry => baggageEntry.split('=').map(keyOrValue => decodeURIComponent(keyOrValue.trim())))\n .reduce>((acc, [key, value]) => {\n acc[key] = value;\n return acc;\n }, {});\n}\n\n/**\n * Turns a flat object (key-value pairs) into a baggage header, which is also just key-value pairs.\n *\n * @param object The object to turn into a baggage header.\n * @returns a baggage header string, or `undefined` if the object didn't have any values, since an empty baggage header\n * is not spec compliant.\n */\nfunction objectToBaggageHeader(object: Record): string | undefined {\n if (Object.keys(object).length === 0) {\n // An empty baggage header is not spec compliant: We return undefined.\n return undefined;\n }\n\n return Object.entries(object).reduce((baggageHeader, [objectKey, objectValue], currentIndex) => {\n const baggageEntry = `${encodeURIComponent(objectKey)}=${encodeURIComponent(objectValue)}`;\n const newBaggageHeader = currentIndex === 0 ? baggageEntry : `${baggageHeader},${baggageEntry}`;\n if (newBaggageHeader.length > MAX_BAGGAGE_STRING_LENGTH) {\n __DEBUG_BUILD__ &&\n logger.warn(\n `Not adding key: ${objectKey} with val: ${objectValue} to baggage header due to exceeding baggage size limits.`,\n );\n return baggageHeader;\n } else {\n return newBaggageHeader;\n }\n }, '');\n}\n","import { GLOBAL_OBJ } from '@sentry/utils';\n\nexport const WINDOW = GLOBAL_OBJ as typeof GLOBAL_OBJ & Window;\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\nimport { Metric, ReportCallback } from '../types';\n\nexport const bindReporter = (\n callback: ReportCallback,\n metric: Metric,\n reportAllChanges?: boolean,\n): ((forceReport?: boolean) => void) => {\n let prevValue: number;\n let delta: number;\n return (forceReport?: boolean) => {\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","/*\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\nimport { WINDOW } from '../../types';\nimport { NavigationTimingPolyfillEntry } from '../types';\n\nconst getNavigationEntryFromPerformanceTiming = (): NavigationTimingPolyfillEntry => {\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: { [key: string]: number | string } = {\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 navigationEntry[key] = Math.max((timing[key as keyof PerformanceTiming] as number) - timing.navigationStart, 0);\n }\n }\n return navigationEntry as unknown as NavigationTimingPolyfillEntry;\n};\n\nexport const getNavigationEntry = (): PerformanceNavigationTiming | NavigationTimingPolyfillEntry | undefined => {\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","/*\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\nimport { getNavigationEntry } from './getNavigationEntry';\n\nexport const getActivationStart = (): number => {\n const navEntry = getNavigationEntry();\n return (navEntry && navEntry.activationStart) || 0;\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\nimport { WINDOW } from '../../types';\nimport { Metric } from '../types';\nimport { generateUniqueID } from './generateUniqueID';\nimport { getActivationStart } from './getActivationStart';\nimport { getNavigationEntry } from './getNavigationEntry';\n\nexport const initMetric = (name: Metric['name'], value?: number): Metric => {\n const navEntry = getNavigationEntry();\n let navigationType: Metric['navigationType'] = 'navigate';\n\n if (navEntry) {\n if (WINDOW.document.prerendering || getActivationStart() > 0) {\n navigationType = 'prerender';\n } else {\n navigationType = navEntry.type.replace(/_/g, '-') as Metric['navigationType'];\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","/*\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 */\nexport const generateUniqueID = (): string => {\n return `v3-${Date.now()}-${Math.floor(Math.random() * (9e12 - 1)) + 1e12}`;\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\nimport { FirstInputPolyfillEntry, NavigationTimingPolyfillEntry, PerformancePaintTiming } from '../types';\n\nexport interface PerformanceEntryHandler {\n (entry: PerformanceEntry): void;\n}\n\ninterface PerformanceEntryMap {\n event: PerformanceEventTiming[];\n paint: PerformancePaintTiming[];\n 'layout-shift': LayoutShift[];\n 'largest-contentful-paint': LargestContentfulPaint[];\n 'first-input': PerformanceEventTiming[] | FirstInputPolyfillEntry[];\n navigation: PerformanceNavigationTiming[] | NavigationTimingPolyfillEntry[];\n resource: PerformanceResourceTiming[];\n longtask: PerformanceEntry[];\n}\n\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 */\nexport const observe = (\n type: K,\n callback: (entries: PerformanceEntryMap[K]) => void,\n opts?: PerformanceObserverInit,\n): PerformanceObserver | undefined => {\n try {\n if (PerformanceObserver.supportedEntryTypes.includes(type)) {\n const po = new PerformanceObserver(list => {\n callback(list.getEntries() as PerformanceEntryMap[K]);\n });\n po.observe(\n Object.assign(\n {\n type,\n buffered: true,\n },\n opts || {},\n ) as PerformanceObserverInit,\n );\n return po;\n }\n } catch (e) {\n // Do nothing.\n }\n return;\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\nimport { WINDOW } from '../../types';\n\nexport interface OnHiddenCallback {\n (event: Event): void;\n}\n\nexport const onHidden = (cb: OnHiddenCallback, once?: boolean): void => {\n const onHiddenOrPageHide = (event: Event): void => {\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","/*\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\nimport { WINDOW } from '../../types';\nimport { onHidden } from './onHidden';\n\nlet firstHiddenTime = -1;\n\nconst initHiddenTime = (): number => {\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 = (): void => {\n // Update the time if/when the document becomes hidden.\n onHidden(({ timeStamp }) => {\n firstHiddenTime = timeStamp;\n }, true);\n};\n\nexport const getVisibilityWatcher = (): {\n readonly firstHiddenTime: number;\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","/*\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\nimport { bindReporter } from './lib/bindReporter';\nimport { getActivationStart } from './lib/getActivationStart';\nimport { getVisibilityWatcher } from './lib/getVisibilityWatcher';\nimport { initMetric } from './lib/initMetric';\nimport { observe } from './lib/observe';\nimport { onHidden } from './lib/onHidden';\nimport { LCPMetric, ReportCallback, ReportOpts } from './types';\n\nconst reportedMetricIDs: Record = {};\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 *\n * If the `reportAllChanges` configuration option is set to `true`, the\n * `callback` function will be called any time a new `largest-contentful-paint`\n * performance entry is dispatched, or once the final value of the metric has\n * been determined.\n */\nexport const onLCP = (onReport: ReportCallback, opts: ReportOpts = {}): void => {\n const visibilityWatcher = getVisibilityWatcher();\n const metric = initMetric('LCP');\n let report: ReturnType;\n\n const handleEntries = (entries: LCPMetric['entries']): void => {\n const lastEntry = entries[entries.length - 1] as LargestContentfulPaint;\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, opts.reportAllChanges);\n\n const stopListening = (): void => {\n if (!reportedMetricIDs[metric.id]) {\n handleEntries(po.takeRecords() as LCPMetric['entries']);\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};\n","import { Span, SpanContext } from '@sentry/types';\n\nimport { Transaction } from '../../transaction';\n\n/**\n * Checks if a given value is a valid measurement value.\n */\nexport function isMeasurementValue(value: unknown): value is number {\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 */\nexport function _startChild(transaction: Transaction, { startTimestamp, ...ctx }: SpanContext): Span {\n if (startTimestamp && transaction.startTimestamp > startTimestamp) {\n transaction.startTimestamp = startTimestamp;\n }\n\n return transaction.startChild({\n startTimestamp,\n ...ctx,\n });\n}\n","/* eslint-disable max-lines */\nimport { Measurements } from '@sentry/types';\nimport { browserPerformanceTimeOrigin, htmlTreeAsString, logger } from '@sentry/utils';\n\nimport { IdleTransaction } from '../../idletransaction';\nimport { Transaction } from '../../transaction';\nimport { getActiveTransaction, msToSec } from '../../utils';\nimport { WINDOW } from '../types';\nimport { onCLS } from '../web-vitals/getCLS';\nimport { onFID } from '../web-vitals/getFID';\nimport { onLCP } from '../web-vitals/getLCP';\nimport { getVisibilityWatcher } from '../web-vitals/lib/getVisibilityWatcher';\nimport { observe } from '../web-vitals/lib/observe';\nimport { NavigatorDeviceMemory, NavigatorNetworkInformation } from '../web-vitals/types';\nimport { _startChild, isMeasurementValue } from './utils';\n\nfunction getBrowserPerformanceAPI(): Performance | undefined {\n return WINDOW && WINDOW.addEventListener && WINDOW.performance;\n}\n\nlet _performanceCursor: number = 0;\n\nlet _measurements: Measurements = {};\nlet _lcpEntry: LargestContentfulPaint | undefined;\nlet _clsEntry: LayoutShift | undefined;\n\n/**\n * Start tracking web vitals\n */\nexport function startTrackingWebVitals(reportAllChanges: boolean = false): void {\n const performance = getBrowserPerformanceAPI();\n if (performance && browserPerformanceTimeOrigin) {\n if (performance.mark) {\n WINDOW.performance.mark('sentry-tracing-init');\n }\n _trackCLS();\n _trackLCP(reportAllChanges);\n _trackFID();\n }\n}\n\n/**\n * Start tracking long tasks.\n */\nexport function startTrackingLongTasks(): void {\n const entryHandler = (entries: PerformanceEntry[]): void => {\n for (const entry of entries) {\n const transaction = getActiveTransaction() as IdleTransaction | undefined;\n if (!transaction) {\n return;\n }\n const startTime = msToSec((browserPerformanceTimeOrigin as number) + entry.startTime);\n const duration = msToSec(entry.duration);\n\n transaction.startChild({\n description: 'Main UI thread blocked',\n op: 'ui.long-task',\n startTimestamp: startTime,\n endTimestamp: startTime + duration,\n });\n }\n };\n\n observe('longtask', entryHandler);\n}\n\n/** Starts tracking the Cumulative Layout Shift on the current page. */\nfunction _trackCLS(): void {\n // See:\n // https://web.dev/evolving-cls/\n // https://web.dev/cls-web-tooling/\n onCLS(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 as LayoutShift;\n });\n}\n\n/** Starts tracking the Largest Contentful Paint on the current page. */\nfunction _trackLCP(reportAllChanges: boolean): void {\n onLCP(\n 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 as LargestContentfulPaint;\n },\n { reportAllChanges },\n );\n}\n\n/** Starts tracking the First Input Delay on the current page. */\nfunction _trackFID(): void {\n onFID(metric => {\n const entry = metric.entries.pop();\n if (!entry) {\n return;\n }\n\n const timeOrigin = msToSec(browserPerformanceTimeOrigin as number);\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 */\nexport function addPerformanceEntries(transaction: Transaction): void {\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: number | undefined;\n let requestStartTimestamp: number | undefined;\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n performanceEntries.slice(_performanceCursor).forEach((entry: Record) => {\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 as string).replace(WINDOW.location.origin, '');\n _addResourceSpans(transaction, entry, resourceName, startTime, duration, timeOrigin);\n break;\n }\n default:\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__ &&\n 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 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 */\nexport function _addMeasureSpans(\n transaction: Transaction,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n entry: Record,\n startTime: number,\n duration: number,\n timeOrigin: number,\n): number {\n const measureStartTimestamp = timeOrigin + startTime;\n const measureEndTimestamp = measureStartTimestamp + duration;\n\n _startChild(transaction, {\n description: entry.name as string,\n endTimestamp: measureEndTimestamp,\n op: entry.entryType as string,\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: Transaction, entry: Record, timeOrigin: number): void {\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: Transaction,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n entry: Record,\n event: string,\n timeOrigin: number,\n description?: string,\n eventEnd?: string,\n): void {\n const end = eventEnd ? (entry[eventEnd] as number | undefined) : (entry[`${event}End`] as number | undefined);\n const start = entry[`${event}Start`] as number | undefined;\n if (!start || !end) {\n return;\n }\n _startChild(transaction, {\n op: 'browser',\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: Transaction, entry: Record, timeOrigin: number): void {\n _startChild(transaction, {\n op: 'browser',\n description: 'request',\n startTimestamp: timeOrigin + msToSec(entry.requestStart as number),\n endTimestamp: timeOrigin + msToSec(entry.responseEnd as number),\n });\n\n _startChild(transaction, {\n op: 'browser',\n description: 'response',\n startTimestamp: timeOrigin + msToSec(entry.responseStart as number),\n endTimestamp: timeOrigin + msToSec(entry.responseEnd as number),\n });\n}\n\nexport interface ResourceEntry extends Record {\n initiatorType?: string;\n transferSize?: number;\n encodedBodySize?: number;\n decodedBodySize?: number;\n}\n\n/** Create resource-related spans */\nexport function _addResourceSpans(\n transaction: Transaction,\n entry: ResourceEntry,\n resourceName: string,\n startTime: number,\n duration: number,\n timeOrigin: number,\n): void {\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: Record = {};\n if ('transferSize' in entry) {\n data['Transfer Size'] = entry.transferSize;\n }\n if ('encodedBodySize' in entry) {\n data['Encoded Body Size'] = entry.encodedBodySize;\n }\n if ('decodedBodySize' in entry) {\n data['Decoded Body Size'] = entry.decodedBodySize;\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 startTimestamp,\n data,\n });\n}\n\n/**\n * Capture the information of the user agent.\n */\nfunction _trackNavigator(transaction: Transaction): void {\n const navigator = WINDOW.navigator as null | (Navigator & NavigatorNetworkInformation & NavigatorDeviceMemory);\n if (!navigator) {\n return;\n }\n\n // track network connectivity\n const connection = navigator.connection;\n if (connection) {\n if (connection.effectiveType) {\n transaction.setTag('effectiveConnectionType', connection.effectiveType);\n }\n\n if (connection.type) {\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 transaction.setTag('deviceMemory', `${navigator.deviceMemory} GB`);\n }\n\n if (isMeasurementValue(navigator.hardwareConcurrency)) {\n transaction.setTag('hardwareConcurrency', String(navigator.hardwareConcurrency));\n }\n}\n\n/** Add LCP / CLS data to transaction to allow debugging */\nfunction _tagMetricInfo(transaction: Transaction): void {\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 transaction.setTag('lcp.element', htmlTreeAsString(_lcpEntry.element));\n }\n\n if (_lcpEntry.id) {\n transaction.setTag('lcp.id', _lcpEntry.id);\n }\n\n if (_lcpEntry.url) {\n // Trim URL to the first 200 characters.\n transaction.setTag('lcp.url', _lcpEntry.url.trim().slice(0, 200));\n }\n\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 transaction.setTag(`cls.source.${index + 1}`, htmlTreeAsString(source.node)),\n );\n }\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\nimport { bindReporter } from './lib/bindReporter';\nimport { initMetric } from './lib/initMetric';\nimport { observe } from './lib/observe';\nimport { onHidden } from './lib/onHidden';\nimport { CLSMetric, ReportCallback, ReportOpts } from './types';\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 */\nexport const onCLS = (onReport: ReportCallback, opts: ReportOpts = {}): void => {\n const metric = initMetric('CLS', 0);\n let report: ReturnType;\n\n let sessionValue = 0;\n let sessionEntries: PerformanceEntry[] = [];\n\n // const handleEntries = (entries: Metric['entries']) => {\n const handleEntries = (entries: LayoutShift[]): void => {\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, opts.reportAllChanges);\n\n onHidden(() => {\n handleEntries(po.takeRecords() as CLSMetric['entries']);\n report(true);\n });\n }\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\nimport { bindReporter } from './lib/bindReporter';\nimport { getVisibilityWatcher } from './lib/getVisibilityWatcher';\nimport { initMetric } from './lib/initMetric';\nimport { observe } from './lib/observe';\nimport { onHidden } from './lib/onHidden';\nimport { FIDMetric, PerformanceEventTiming, ReportCallback, ReportOpts } from './types';\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 */\nexport const onFID = (onReport: ReportCallback, opts: ReportOpts = {}): void => {\n const visibilityWatcher = getVisibilityWatcher();\n const metric = initMetric('FID');\n // eslint-disable-next-line prefer-const\n let report: ReturnType;\n\n const handleEntry = (entry: PerformanceEventTiming): void => {\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: FIDMetric['entries']): void => {\n (entries as PerformanceEventTiming[]).forEach(handleEntry);\n };\n\n const po = observe('first-input', handleEntries);\n report = bindReporter(onReport, metric, opts.reportAllChanges);\n\n if (po) {\n onHidden(() => {\n handleEntries(po.takeRecords() as FIDMetric['entries']);\n po.disconnect();\n }, true);\n }\n};\n","/* eslint-disable max-lines */\nimport type { DynamicSamplingContext, Span } from '@sentry/types';\nimport {\n addInstrumentationHandler,\n BAGGAGE_HEADER_NAME,\n dynamicSamplingContextToSentryBaggageHeader,\n isInstanceOf,\n stringMatchesSomePattern,\n} from '@sentry/utils';\n\nimport { getActiveTransaction, hasTracingEnabled } from '../utils';\n\n// TODO (v8): Remove `tracingOrigins`\nexport const DEFAULT_TRACING_ORIGINS = ['localhost', /^\\//];\nexport const DEFAULT_TRACE_PROPAGATION_TARGETS = ['localhost', /^\\//];\n\n/** Options for Request Instrumentation */\nexport interface RequestInstrumentationOptions {\n /**\n * @deprecated Will be removed in v8.\n * Use `shouldCreateSpanForRequest` to control span creation and `tracePropagationTargets` to control\n * trace header attachment.\n */\n tracingOrigins: Array;\n\n /**\n * List of strings and/or regexes used to determine which outgoing requests will have `sentry-trace` and `baggage`\n * headers attached.\n *\n * Default: ['localhost', /^\\//] {@see DEFAULT_TRACE_PROPAGATION_TARGETS}\n */\n tracePropagationTargets: Array;\n\n /**\n * Flag to disable patching all together for fetch requests.\n *\n * Default: true\n */\n traceFetch: boolean;\n\n /**\n * Flag to disable patching all together for xhr requests.\n *\n * Default: true\n */\n traceXHR: boolean;\n\n /**\n * This function will be called before creating a span for a request with the given url.\n * Return false if you don't want a span for the given url.\n *\n * Default: (url: string) => true\n */\n shouldCreateSpanForRequest?(url: string): boolean;\n}\n\n/** Data returned from fetch callback */\nexport interface FetchData {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n args: any[]; // the arguments passed to the fetch call itself\n fetchData?: {\n method: string;\n url: string;\n // span_id\n __span?: string;\n };\n\n // TODO Should this be unknown instead? If we vendor types, make it a Response\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n response?: any;\n error?: unknown;\n\n startTimestamp: number;\n endTimestamp?: number;\n}\n\n/** Data returned from XHR request */\nexport interface XHRData {\n xhr?: {\n __sentry_xhr__?: {\n method: string;\n url: string;\n status_code: number;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n data: Record;\n };\n __sentry_xhr_span_id__?: string;\n setRequestHeader?: (key: string, val: string) => void;\n getRequestHeader?: (key: string) => string;\n __sentry_own_request__?: boolean;\n };\n startTimestamp: number;\n endTimestamp?: number;\n}\n\ntype PolymorphicRequestHeaders =\n | Record\n | Array<[string, string]>\n // the below is not preicsely the Header type used in Request, but it'll pass duck-typing\n | {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n [key: string]: any;\n append: (key: string, value: string) => void;\n get: (key: string) => string;\n };\n\nexport const defaultRequestInstrumentationOptions: RequestInstrumentationOptions = {\n traceFetch: true,\n traceXHR: true,\n tracingOrigins: DEFAULT_TRACING_ORIGINS,\n tracePropagationTargets: DEFAULT_TRACE_PROPAGATION_TARGETS,\n};\n\n/** Registers span creators for xhr and fetch requests */\nexport function instrumentOutgoingRequests(_options?: Partial): void {\n // eslint-disable-next-line deprecation/deprecation\n const { traceFetch, traceXHR, tracingOrigins, tracePropagationTargets, shouldCreateSpanForRequest } = {\n ...defaultRequestInstrumentationOptions,\n ..._options,\n };\n\n const shouldCreateSpan =\n typeof shouldCreateSpanForRequest === 'function' ? shouldCreateSpanForRequest : (_: string) => true;\n\n const shouldAttachHeaders = (url: string): boolean =>\n stringMatchesSomePattern(url, tracingOrigins) || stringMatchesSomePattern(url, tracePropagationTargets);\n\n const spans: Record = {};\n\n if (traceFetch) {\n addInstrumentationHandler('fetch', (handlerData: FetchData) => {\n fetchCallback(handlerData, shouldCreateSpan, shouldAttachHeaders, spans);\n });\n }\n\n if (traceXHR) {\n addInstrumentationHandler('xhr', (handlerData: XHRData) => {\n xhrCallback(handlerData, shouldCreateSpan, shouldAttachHeaders, spans);\n });\n }\n}\n\n/**\n * Create and track fetch request spans\n */\nexport function fetchCallback(\n handlerData: FetchData,\n shouldCreateSpan: (url: string) => boolean,\n shouldAttachHeaders: (url: string) => boolean,\n spans: Record,\n): void {\n if (!hasTracingEnabled() || !(handlerData.fetchData && shouldCreateSpan(handlerData.fetchData.url))) {\n return;\n }\n\n if (handlerData.endTimestamp) {\n const spanId = handlerData.fetchData.__span;\n if (!spanId) return;\n\n const span = spans[spanId];\n if (span) {\n if (handlerData.response) {\n // TODO (kmclb) remove this once types PR goes through\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n span.setHttpStatus(handlerData.response.status);\n } else if (handlerData.error) {\n span.setStatus('internal_error');\n }\n span.finish();\n\n // eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n delete spans[spanId];\n }\n return;\n }\n\n const activeTransaction = getActiveTransaction();\n if (activeTransaction) {\n const span = activeTransaction.startChild({\n data: {\n ...handlerData.fetchData,\n type: 'fetch',\n },\n description: `${handlerData.fetchData.method} ${handlerData.fetchData.url}`,\n op: 'http.client',\n });\n\n handlerData.fetchData.__span = span.spanId;\n spans[span.spanId] = span;\n\n const request: string | 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: { [key: string]: any } = handlerData.args[1];\n\n if (shouldAttachHeaders(handlerData.fetchData.url)) {\n options.headers = addTracingHeadersToFetchRequest(\n request,\n activeTransaction.getDynamicSamplingContext(),\n span,\n options,\n );\n\n activeTransaction.metadata.propagations += 1;\n }\n }\n}\n\nfunction addTracingHeadersToFetchRequest(\n request: string | Request,\n dynamicSamplingContext: Partial,\n span: Span,\n options: {\n headers?:\n | {\n [key: string]: string[] | string | undefined;\n }\n | Request['headers'];\n },\n): PolymorphicRequestHeaders {\n const sentryBaggageHeader = dynamicSamplingContextToSentryBaggageHeader(dynamicSamplingContext);\n const sentryTraceHeader = span.toTraceparent();\n\n const headers =\n typeof Request !== 'undefined' && isInstanceOf(request, Request) ? (request as 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 as Headers);\n\n newHeaders.append('sentry-trace', sentryTraceHeader);\n\n if (sentryBaggageHeader) {\n // If the same header is appended miultiple 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 as PolymorphicRequestHeaders;\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: string[] = [];\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 as Exclude),\n 'sentry-trace': sentryTraceHeader,\n baggage: newBaggageHeaders.length > 0 ? newBaggageHeaders.join(',') : undefined,\n };\n }\n}\n\n/**\n * Create and track xhr request spans\n */\nexport function xhrCallback(\n handlerData: XHRData,\n shouldCreateSpan: (url: string) => boolean,\n shouldAttachHeaders: (url: string) => boolean,\n spans: Record,\n): void {\n if (\n !hasTracingEnabled() ||\n (handlerData.xhr && handlerData.xhr.__sentry_own_request__) ||\n !(handlerData.xhr && handlerData.xhr.__sentry_xhr__ && shouldCreateSpan(handlerData.xhr.__sentry_xhr__.url))\n ) {\n return;\n }\n\n const xhr = handlerData.xhr.__sentry_xhr__;\n\n // check first if the request has finished and is tracked by an existing span which should now end\n if (handlerData.endTimestamp) {\n const spanId = handlerData.xhr.__sentry_xhr_span_id__;\n if (!spanId) return;\n\n const span = spans[spanId];\n if (span) {\n span.setHttpStatus(xhr.status_code);\n span.finish();\n\n // eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n delete spans[spanId];\n }\n return;\n }\n\n // if not, create a new span to track it\n const activeTransaction = getActiveTransaction();\n if (activeTransaction) {\n const span = activeTransaction.startChild({\n data: {\n ...xhr.data,\n type: 'xhr',\n method: xhr.method,\n url: xhr.url,\n },\n description: `${xhr.method} ${xhr.url}`,\n op: 'http.client',\n });\n\n handlerData.xhr.__sentry_xhr_span_id__ = span.spanId;\n spans[handlerData.xhr.__sentry_xhr_span_id__] = span;\n\n if (handlerData.xhr.setRequestHeader && shouldAttachHeaders(handlerData.xhr.__sentry_xhr__.url)) {\n try {\n handlerData.xhr.setRequestHeader('sentry-trace', span.toTraceparent());\n\n const dynamicSamplingContext = activeTransaction.getDynamicSamplingContext();\n const sentryBaggageHeader = dynamicSamplingContextToSentryBaggageHeader(dynamicSamplingContext);\n\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 handlerData.xhr.setRequestHeader(BAGGAGE_HEADER_NAME, sentryBaggageHeader);\n }\n\n activeTransaction.metadata.propagations += 1;\n } catch (_) {\n // Error: InvalidStateError: Failed to execute 'setRequestHeader' on 'XMLHttpRequest': The object's state must be OPENED.\n }\n }\n }\n}\n","/* eslint-disable max-lines */\nimport { Hub } from '@sentry/core';\nimport { EventProcessor, Integration, Transaction, TransactionContext } from '@sentry/types';\nimport { baggageHeaderToDynamicSamplingContext, getDomElement, logger } from '@sentry/utils';\n\nimport { startIdleTransaction } from '../hubextensions';\nimport { DEFAULT_FINAL_TIMEOUT, DEFAULT_HEARTBEAT_INTERVAL, DEFAULT_IDLE_TIMEOUT } from '../idletransaction';\nimport { extractTraceparentData } from '../utils';\nimport { registerBackgroundTabDetection } from './backgroundtab';\nimport { addPerformanceEntries, startTrackingLongTasks, startTrackingWebVitals } from './metrics';\nimport {\n defaultRequestInstrumentationOptions,\n instrumentOutgoingRequests,\n RequestInstrumentationOptions,\n} from './request';\nimport { instrumentRoutingWithDefaults } from './router';\nimport { WINDOW } from './types';\n\nexport const BROWSER_TRACING_INTEGRATION_ID = 'BrowserTracing';\n\n/** Options for Browser Tracing integration */\nexport interface BrowserTracingOptions extends RequestInstrumentationOptions {\n /**\n * The time to wait in ms until the transaction will be finished during an idle state. An idle state is defined\n * by a moment where there are no in-progress spans.\n *\n * The transaction will use the end timestamp of the last finished span as the endtime for the transaction.\n * If there are still active spans when this the `idleTimeout` is set, the `idleTimeout` will get reset.\n * Time is in ms.\n *\n * Default: 1000\n */\n idleTimeout: number;\n\n /**\n * The max duration for a transaction. If a transaction duration hits the `finalTimeout` value, it\n * will be finished.\n * Time is in ms.\n *\n * Default: 30000\n */\n finalTimeout: number;\n\n /**\n * The heartbeat interval. If no new spans are started or open spans are finished within 3 heartbeats,\n * the transaction will be finished.\n * Time is in ms.\n *\n * Default: 5000\n */\n heartbeatInterval: number;\n\n /**\n * Flag to enable/disable creation of `navigation` transaction on history changes.\n *\n * Default: true\n */\n startTransactionOnLocationChange: boolean;\n\n /**\n * Flag to enable/disable creation of `pageload` transaction on first pageload.\n *\n * Default: true\n */\n startTransactionOnPageLoad: boolean;\n\n /**\n * Flag Transactions where tabs moved to background with \"cancelled\". Browser background tab timing is\n * not suited towards doing precise measurements of operations. By default, we recommend that this option\n * be enabled as background transactions can mess up your statistics in nondeterministic ways.\n *\n * Default: true\n */\n markBackgroundTransactions: boolean;\n\n /**\n * _metricOptions allows the user to send options to change how metrics are collected.\n *\n * _metricOptions is currently experimental.\n *\n * Default: undefined\n */\n _metricOptions?: Partial<{ _reportAllChanges: boolean }>;\n\n /**\n * _experiments allows the user to send options to define how this integration works.\n *\n * Default: undefined\n */\n _experiments?: Partial<{ enableLongTask: boolean }>;\n\n /**\n * beforeNavigate is called before a pageload/navigation transaction is created and allows users to modify transaction\n * context data, or drop the transaction entirely (by setting `sampled = false` in the context).\n *\n * Note: For legacy reasons, transactions can also be dropped by returning `undefined`.\n *\n * @param context: The context data which will be passed to `startTransaction` by default\n *\n * @returns A (potentially) modified context object, with `sampled = false` if the transaction should be dropped.\n */\n beforeNavigate?(context: TransactionContext): TransactionContext | undefined;\n\n /**\n * Instrumentation that creates routing change transactions. By default creates\n * pageload and navigation transactions.\n */\n routingInstrumentation(\n customStartTransaction: (context: TransactionContext) => T | undefined,\n startTransactionOnPageLoad?: boolean,\n startTransactionOnLocationChange?: boolean,\n ): void;\n}\n\nconst DEFAULT_BROWSER_TRACING_OPTIONS = {\n idleTimeout: DEFAULT_IDLE_TIMEOUT,\n finalTimeout: DEFAULT_FINAL_TIMEOUT,\n heartbeatInterval: DEFAULT_HEARTBEAT_INTERVAL,\n markBackgroundTransactions: true,\n routingInstrumentation: instrumentRoutingWithDefaults,\n startTransactionOnLocationChange: true,\n startTransactionOnPageLoad: true,\n _experiments: { enableLongTask: true },\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 */\nexport class BrowserTracing implements Integration {\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 public options: BrowserTracingOptions;\n\n /**\n * @inheritDoc\n */\n public name: string = BROWSER_TRACING_INTEGRATION_ID;\n\n private _getCurrentHub?: () => Hub;\n\n public constructor(_options?: Partial) {\n this.options = {\n ...DEFAULT_BROWSER_TRACING_OPTIONS,\n ..._options,\n };\n\n const { _metricOptions } = this.options;\n startTrackingWebVitals(_metricOptions && _metricOptions._reportAllChanges);\n if (this.options._experiments?.enableLongTask) {\n startTrackingLongTasks();\n }\n }\n\n /**\n * @inheritDoc\n */\n public setupOnce(_: (callback: EventProcessor) => void, getCurrentHub: () => Hub): void {\n this._getCurrentHub = getCurrentHub;\n\n // eslint-disable-next-line @typescript-eslint/unbound-method\n const {\n routingInstrumentation: instrumentRouting,\n startTransactionOnLocationChange,\n startTransactionOnPageLoad,\n markBackgroundTransactions,\n traceFetch,\n traceXHR,\n // eslint-disable-next-line deprecation/deprecation\n tracingOrigins,\n shouldCreateSpanForRequest,\n } = this.options;\n\n instrumentRouting(\n (context: TransactionContext) => this._createRouteTransaction(context),\n startTransactionOnPageLoad,\n startTransactionOnLocationChange,\n );\n\n if (markBackgroundTransactions) {\n registerBackgroundTabDetection();\n }\n\n instrumentOutgoingRequests({ traceFetch, traceXHR, tracingOrigins, shouldCreateSpanForRequest });\n }\n\n /** Create routing idle transaction. */\n private _createRouteTransaction(context: TransactionContext): Transaction | undefined {\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 // eslint-disable-next-line @typescript-eslint/unbound-method\n const { beforeNavigate, idleTimeout, finalTimeout, heartbeatInterval } = this.options;\n\n const isPageloadTransaction = context.op === 'pageload';\n\n const sentryTraceMetaTagValue = isPageloadTransaction ? getMetaContent('sentry-trace') : null;\n const baggageMetaTagValue = isPageloadTransaction ? getMetaContent('baggage') : null;\n\n const traceParentData = sentryTraceMetaTagValue ? extractTraceparentData(sentryTraceMetaTagValue) : undefined;\n const dynamicSamplingContext = baggageMetaTagValue\n ? baggageHeaderToDynamicSamplingContext(baggageMetaTagValue)\n : undefined;\n\n const expandedContext: TransactionContext = {\n ...context,\n ...traceParentData,\n metadata: {\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 finalContext.metadata =\n finalContext.name !== expandedContext.name\n ? { ...finalContext.metadata, source: 'custom' }\n : finalContext.metadata;\n\n if (finalContext.sampled === false) {\n __DEBUG_BUILD__ &&\n 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 hub = this._getCurrentHub();\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 idleTransaction.registerBeforeFinishCallback(transaction => {\n addPerformanceEntries(transaction);\n transaction.setTag(\n 'sentry_reportAllChanges',\n Boolean(this.options._metricOptions && this.options._metricOptions._reportAllChanges),\n );\n });\n\n return idleTransaction as Transaction;\n }\n}\n\n/** Returns the value of a meta tag */\nexport function getMetaContent(metaName: string): string | null {\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') : null;\n}\n","import { Transaction, TransactionContext } from '@sentry/types';\nimport { addInstrumentationHandler, logger } from '@sentry/utils';\n\nimport { WINDOW } from './types';\n\n/**\n * Default function implementing pageload and navigation transactions\n */\nexport function instrumentRoutingWithDefaults(\n customStartTransaction: (context: TransactionContext) => T | undefined,\n startTransactionOnPageLoad: boolean = true,\n startTransactionOnLocationChange: boolean = true,\n): void {\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: string | undefined = WINDOW.location.href;\n\n let activeTransaction: T | undefined;\n if (startTransactionOnPageLoad) {\n activeTransaction = customStartTransaction({\n name: WINDOW.location.pathname,\n op: 'pageload',\n metadata: { source: 'url' },\n });\n }\n\n if (startTransactionOnLocationChange) {\n addInstrumentationHandler('history', ({ to, from }: { to: string; from?: string }) => {\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.finish();\n }\n activeTransaction = customStartTransaction({\n name: WINDOW.location.pathname,\n op: 'navigation',\n metadata: { source: 'url' },\n });\n }\n });\n }\n}\n","import { GenericFunction } from './types';\n\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 */\nexport function _optionalChain(ops: unknown[]): unknown {\n let lastAccessLHS: unknown = undefined;\n let value = ops[0];\n let i = 1;\n while (i < ops.length) {\n const op = ops[i] as string;\n const fn = ops[i + 1] as (intermediateValue: unknown) => unknown;\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: unknown[]) => (value as GenericFunction).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","import { logger } from '@sentry/utils';\n\nimport { IdleTransaction } from '../idletransaction';\nimport { SpanStatusType } from '../span';\nimport { getActiveTransaction } from '../utils';\nimport { WINDOW } from './types';\n\n/**\n * Add a listener that cancels and finishes a transaction when the global\n * document is hidden.\n */\nexport function registerBackgroundTabDetection(): void {\n if (WINDOW && WINDOW.document) {\n WINDOW.document.addEventListener('visibilitychange', () => {\n const activeTransaction = getActiveTransaction() as IdleTransaction;\n if (WINDOW.document.hidden && activeTransaction) {\n const statusType: SpanStatusType = '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 activeTransaction.setTag('visibilitychange', 'document.hidden');\n activeTransaction.finish();\n }\n });\n } else {\n __DEBUG_BUILD__ &&\n logger.warn('[Tracing] Could not set up background tab detection due to lack of global document');\n }\n}\n","import { addExtensionMethods } from './hubextensions';\nimport * as Integrations from './integrations';\n\nexport type { RequestInstrumentationOptions } from './browser';\nexport type { SpanStatusType } from './span';\n\nexport { Integrations };\n\n// This is already exported as part of `Integrations` above (and for the moment will remain so for\n// backwards compatibility), but that interferes with treeshaking, so we also export it separately\n// here.\n//\n// Previously we expected users to import tracing integrations like\n//\n// import { Integrations } from '@sentry/tracing';\n// const instance = new Integrations.BrowserTracing();\n//\n// This makes the integrations unable to be treeshaken though. To address this, we now have\n// this individual export. We now expect users to consume BrowserTracing like so:\n//\n// import { BrowserTracing } from '@sentry/tracing';\n// const instance = new BrowserTracing();\n//\n// For an example of of the new usage of BrowserTracing, see @sentry/nextjs index.client.ts\nexport { BrowserTracing, BROWSER_TRACING_INTEGRATION_ID } from './browser';\n\nexport { Span, spanStatusfromHttpCode } from './span';\n// eslint-disable-next-line deprecation/deprecation\nexport { SpanStatus } from './spanstatus';\nexport { Transaction } from './transaction';\nexport { instrumentOutgoingRequests, defaultRequestInstrumentationOptions } from './browser';\nexport { IdleTransaction } from './idletransaction';\nexport { startIdleTransaction } from './hubextensions';\n\n// Treeshakable guard to remove all code related to tracing\ndeclare const __SENTRY_TRACING__: boolean;\n\n// Guard for tree\nif (typeof __SENTRY_TRACING__ === 'undefined' || __SENTRY_TRACING__) {\n // We are patching the global object with our hub extension methods\n addExtensionMethods();\n}\n\nexport { addExtensionMethods };\n\nexport {\n extractTraceparentData,\n getActiveTransaction,\n hasTracingEnabled,\n stripUrlQueryAndFragment,\n TRACEPARENT_REGEXP,\n} from './utils';\n","import * as Sentry from \"@sentry/react\";\nimport {Integrations} from \"@sentry/tracing\";\n\nimport Account from \"types/Account\";\nimport User from \"types/User\";\nimport Environment from \"components/Environment\";\nimport ApiAssetUtil from \"utils/ApiAssetUtil\";\nimport {History} from 'history';\n\n/**\n * Sentry related utility functions\n */\nexport default class SentryUtil {\n private static sentryInitialized: boolean = false;\n\n static init(history: History) {\n if (Environment.isProduction()) {\n Sentry.init({\n dsn: process.env.REACT_APP_SENTRY_DSN,\n integrations: [\n new Integrations.BrowserTracing({\n // Can also use reactRouterV3Instrumentation or reactRouterV4Instrumentation\n routingInstrumentation: Sentry.reactRouterV5Instrumentation(history),\n }),\n ],\n environment: Environment.toString(),\n release: process.env.REACT_APP_HEROKU_SLUG_COMMIT,\n tracesSampleRate: 0,\n });\n\n Sentry.configureScope((scope) => {\n scope.setTag('clive_source', 'client');\n });\n\n this.sentryInitialized = true;\n }\n }\n\n /**\n * Adds context about the user to Sentry when reporting events.\n *\n * @param {User} user - The user associated with the Sentry event\n * @param {Account} account - The account associated with the Sentry event\n */\n static setUserContext(user: User, account: Account) {\n if (!this.sentryInitialized) {\n return;\n }\n\n if (ApiAssetUtil.isNotEmptyAsset(user)) {\n Sentry.setUser({\n id: user.id + \"\",\n email: user.email,\n account_id: ApiAssetUtil.isNotEmptyAsset(account) ? account.id : \"\"\n });\n }\n }\n}\n","import {\n Breadcrumb,\n CaptureContext,\n CustomSamplingContext,\n Event,\n EventHint,\n Extra,\n Extras,\n Primitive,\n Severity,\n SeverityLevel,\n TransactionContext,\n User,\n} from '@sentry/types';\n\nimport { getCurrentHub, Hub } from './hub';\nimport { Scope } from './scope';\n\n// Note: All functions in this file are typed with a return value of `ReturnType`,\n// where HUB_FUNCTION is some method on the Hub class.\n//\n// This is done to make sure the top level SDK methods stay in sync with the hub methods.\n// Although every method here has an explicit return type, some of them (that map to void returns) do not\n// contain `return` keywords. This is done to save on bundle size, as `return` is not minifiable.\n\n/**\n * Captures an exception event and sends it to Sentry.\n *\n * @param exception An exception-like object.\n * @param captureContext Additional scope data to apply to exception event.\n * @returns The generated eventId.\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types\nexport function captureException(exception: any, captureContext?: CaptureContext): ReturnType {\n return getCurrentHub().captureException(exception, { captureContext });\n}\n\n/**\n * Captures a message event and sends it to Sentry.\n *\n * @param message The message to send to Sentry.\n * @param Severity Define the level of the message.\n * @returns The generated eventId.\n */\nexport function captureMessage(\n message: string,\n // eslint-disable-next-line deprecation/deprecation\n captureContext?: CaptureContext | Severity | SeverityLevel,\n): ReturnType {\n // This is necessary to provide explicit scopes upgrade, without changing the original\n // arity of the `captureMessage(message, level)` method.\n const level = typeof captureContext === 'string' ? captureContext : undefined;\n const context = typeof captureContext !== 'string' ? { captureContext } : undefined;\n return getCurrentHub().captureMessage(message, level, context);\n}\n\n/**\n * Captures a manually created event and sends it to Sentry.\n *\n * @param event The event to send to Sentry.\n * @returns The generated eventId.\n */\nexport function captureEvent(event: Event, hint?: EventHint): ReturnType {\n return getCurrentHub().captureEvent(event, hint);\n}\n\n/**\n * Callback to set context information onto the scope.\n * @param callback Callback function that receives Scope.\n */\nexport function configureScope(callback: (scope: Scope) => void): ReturnType {\n getCurrentHub().configureScope(callback);\n}\n\n/**\n * Records a new breadcrumb which will be attached to future events.\n *\n * Breadcrumbs will be added to subsequent events to provide more context on\n * user's actions prior to an error or crash.\n *\n * @param breadcrumb The breadcrumb to record.\n */\nexport function addBreadcrumb(breadcrumb: Breadcrumb): ReturnType {\n getCurrentHub().addBreadcrumb(breadcrumb);\n}\n\n/**\n * Sets context data with the given name.\n * @param name of the context\n * @param context Any kind of data. This data will be normalized.\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function setContext(name: string, context: { [key: string]: any } | null): ReturnType {\n getCurrentHub().setContext(name, context);\n}\n\n/**\n * Set an object that will be merged sent as extra data with the event.\n * @param extras Extras object to merge into current context.\n */\nexport function setExtras(extras: Extras): ReturnType {\n getCurrentHub().setExtras(extras);\n}\n\n/**\n * Set key:value that will be sent as extra data with the event.\n * @param key String of extra\n * @param extra Any kind of data. This data will be normalized.\n */\nexport function setExtra(key: string, extra: Extra): ReturnType {\n getCurrentHub().setExtra(key, extra);\n}\n\n/**\n * Set an object that will be merged sent as tags data with the event.\n * @param tags Tags context object to merge into current context.\n */\nexport function setTags(tags: { [key: string]: Primitive }): ReturnType {\n getCurrentHub().setTags(tags);\n}\n\n/**\n * Set key:value that will be sent as tags data with the event.\n *\n * Can also be used to unset a tag, by passing `undefined`.\n *\n * @param key String key of tag\n * @param value Value of tag\n */\nexport function setTag(key: string, value: Primitive): ReturnType {\n getCurrentHub().setTag(key, value);\n}\n\n/**\n * Updates user context information for future events.\n *\n * @param user User context object to be set in the current context. Pass `null` to unset the user.\n */\nexport function setUser(user: User | null): ReturnType {\n getCurrentHub().setUser(user);\n}\n\n/**\n * Creates a new scope with and executes the given operation within.\n * The scope is automatically removed once the operation\n * finishes or throws.\n *\n * This is essentially a convenience function for:\n *\n * pushScope();\n * callback();\n * popScope();\n *\n * @param callback that will be enclosed into push/popScope.\n */\nexport function withScope(callback: (scope: Scope) => void): ReturnType {\n getCurrentHub().withScope(callback);\n}\n\n/**\n * Starts a new `Transaction` and returns it. This is the entry point to manual tracing instrumentation.\n *\n * A tree structure can be built by adding child spans to the transaction, and child spans to other spans. To start a\n * new child span within the transaction or any span, call the respective `.startChild()` method.\n *\n * Every child span must be finished before the transaction is finished, otherwise the unfinished spans are discarded.\n *\n * The transaction must be finished with a call to its `.finish()` method, at which point the transaction with all its\n * finished child spans will be sent to Sentry.\n *\n * NOTE: This function should only be used for *manual* instrumentation. Auto-instrumentation should call\n * `startTransaction` directly on the hub.\n *\n * @param context Properties of the new `Transaction`.\n * @param customSamplingContext Information given to the transaction sampling function (along with context-dependent\n * default values). See {@link Options.tracesSampler}.\n *\n * @returns The transaction which was just started\n */\nexport function startTransaction(\n context: TransactionContext,\n customSamplingContext?: CustomSamplingContext,\n): ReturnType {\n return getCurrentHub().startTransaction({ ...context }, customSamplingContext);\n}\n","/* eslint-disable max-lines */\nimport {\n Breadcrumb,\n BreadcrumbHint,\n Client,\n CustomSamplingContext,\n Event,\n EventHint,\n Extra,\n Extras,\n Hub as HubInterface,\n Integration,\n IntegrationClass,\n Primitive,\n Session,\n SessionContext,\n Severity,\n SeverityLevel,\n Transaction,\n TransactionContext,\n User,\n} from '@sentry/types';\nimport {\n consoleSandbox,\n dateTimestampInSeconds,\n getGlobalSingleton,\n GLOBAL_OBJ,\n isNodeEnv,\n logger,\n uuid4,\n} from '@sentry/utils';\n\nimport { Scope } from './scope';\nimport { closeSession, makeSession, updateSession } from './session';\n\n/**\n * API compatibility version of this hub.\n *\n * WARNING: This number should only be increased when the global interface\n * changes and new methods are introduced.\n *\n * @hidden\n */\nexport const API_VERSION = 4;\n\n/**\n * Default maximum number of breadcrumbs added to an event. Can be overwritten\n * with {@link Options.maxBreadcrumbs}.\n */\nconst DEFAULT_BREADCRUMBS = 100;\n\n/**\n * A layer in the process stack.\n * @hidden\n */\nexport interface Layer {\n client?: Client;\n scope?: Scope;\n}\n\n/**\n * An object that contains a hub and maintains a scope stack.\n * @hidden\n */\nexport interface Carrier {\n __SENTRY__?: {\n hub?: Hub;\n /**\n * Extra Hub properties injected by various SDKs\n */\n integrations?: Integration[];\n extensions?: {\n /** Hack to prevent bundlers from breaking our usage of the domain package in the cross-platform Hub package */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n domain?: { [key: string]: any };\n } & {\n /** Extension methods for the hub, which are bound to the current Hub instance */\n // eslint-disable-next-line @typescript-eslint/ban-types\n [key: string]: Function;\n };\n };\n}\n\n/**\n * @inheritDoc\n */\nexport class Hub implements HubInterface {\n /** Is a {@link Layer}[] containing the client and scope */\n private readonly _stack: Layer[] = [{}];\n\n /** Contains the last event id of a captured event. */\n private _lastEventId?: string;\n\n /**\n * Creates a new instance of the hub, will push one {@link Layer} into the\n * internal stack on creation.\n *\n * @param client bound to the hub.\n * @param scope bound to the hub.\n * @param version number, higher number means higher priority.\n */\n public constructor(client?: Client, scope: Scope = new Scope(), private readonly _version: number = API_VERSION) {\n this.getStackTop().scope = scope;\n if (client) {\n this.bindClient(client);\n }\n }\n\n /**\n * @inheritDoc\n */\n public isOlderThan(version: number): boolean {\n return this._version < version;\n }\n\n /**\n * @inheritDoc\n */\n public bindClient(client?: Client): void {\n const top = this.getStackTop();\n top.client = client;\n if (client && client.setupIntegrations) {\n client.setupIntegrations();\n }\n }\n\n /**\n * @inheritDoc\n */\n public pushScope(): Scope {\n // We want to clone the content of prev scope\n const scope = Scope.clone(this.getScope());\n this.getStack().push({\n client: this.getClient(),\n scope,\n });\n return scope;\n }\n\n /**\n * @inheritDoc\n */\n public popScope(): boolean {\n if (this.getStack().length <= 1) return false;\n return !!this.getStack().pop();\n }\n\n /**\n * @inheritDoc\n */\n public withScope(callback: (scope: Scope) => void): void {\n const scope = this.pushScope();\n try {\n callback(scope);\n } finally {\n this.popScope();\n }\n }\n\n /**\n * @inheritDoc\n */\n public getClient(): C | undefined {\n return this.getStackTop().client as C;\n }\n\n /** Returns the scope of the top stack. */\n public getScope(): Scope | undefined {\n return this.getStackTop().scope;\n }\n\n /** Returns the scope stack for domains or the process. */\n public getStack(): Layer[] {\n return this._stack;\n }\n\n /** Returns the topmost scope layer in the order domain > local > process. */\n public getStackTop(): Layer {\n return this._stack[this._stack.length - 1];\n }\n\n /**\n * @inheritDoc\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types\n public captureException(exception: any, hint?: EventHint): string {\n const eventId = (this._lastEventId = hint && hint.event_id ? hint.event_id : uuid4());\n const syntheticException = new Error('Sentry syntheticException');\n this._withClient((client, scope) => {\n client.captureException(\n exception,\n {\n originalException: exception,\n syntheticException,\n ...hint,\n event_id: eventId,\n },\n scope,\n );\n });\n return eventId;\n }\n\n /**\n * @inheritDoc\n */\n public captureMessage(\n message: string,\n // eslint-disable-next-line deprecation/deprecation\n level?: Severity | SeverityLevel,\n hint?: EventHint,\n ): string {\n const eventId = (this._lastEventId = hint && hint.event_id ? hint.event_id : uuid4());\n const syntheticException = new Error(message);\n this._withClient((client, scope) => {\n client.captureMessage(\n message,\n level,\n {\n originalException: message,\n syntheticException,\n ...hint,\n event_id: eventId,\n },\n scope,\n );\n });\n return eventId;\n }\n\n /**\n * @inheritDoc\n */\n public captureEvent(event: Event, hint?: EventHint): string {\n const eventId = hint && hint.event_id ? hint.event_id : uuid4();\n if (event.type !== 'transaction') {\n this._lastEventId = eventId;\n }\n\n this._withClient((client, scope) => {\n client.captureEvent(event, { ...hint, event_id: eventId }, scope);\n });\n return eventId;\n }\n\n /**\n * @inheritDoc\n */\n public lastEventId(): string | undefined {\n return this._lastEventId;\n }\n\n /**\n * @inheritDoc\n */\n public addBreadcrumb(breadcrumb: Breadcrumb, hint?: BreadcrumbHint): void {\n const { scope, client } = this.getStackTop();\n\n if (!scope || !client) return;\n\n // eslint-disable-next-line @typescript-eslint/unbound-method\n const { beforeBreadcrumb = null, maxBreadcrumbs = DEFAULT_BREADCRUMBS } =\n (client.getOptions && client.getOptions()) || {};\n\n if (maxBreadcrumbs <= 0) return;\n\n const timestamp = dateTimestampInSeconds();\n const mergedBreadcrumb = { timestamp, ...breadcrumb };\n const finalBreadcrumb = beforeBreadcrumb\n ? (consoleSandbox(() => beforeBreadcrumb(mergedBreadcrumb, hint)) as Breadcrumb | null)\n : mergedBreadcrumb;\n\n if (finalBreadcrumb === null) return;\n\n scope.addBreadcrumb(finalBreadcrumb, maxBreadcrumbs);\n }\n\n /**\n * @inheritDoc\n */\n public setUser(user: User | null): void {\n const scope = this.getScope();\n if (scope) scope.setUser(user);\n }\n\n /**\n * @inheritDoc\n */\n public setTags(tags: { [key: string]: Primitive }): void {\n const scope = this.getScope();\n if (scope) scope.setTags(tags);\n }\n\n /**\n * @inheritDoc\n */\n public setExtras(extras: Extras): void {\n const scope = this.getScope();\n if (scope) scope.setExtras(extras);\n }\n\n /**\n * @inheritDoc\n */\n public setTag(key: string, value: Primitive): void {\n const scope = this.getScope();\n if (scope) scope.setTag(key, value);\n }\n\n /**\n * @inheritDoc\n */\n public setExtra(key: string, extra: Extra): void {\n const scope = this.getScope();\n if (scope) scope.setExtra(key, extra);\n }\n\n /**\n * @inheritDoc\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n public setContext(name: string, context: { [key: string]: any } | null): void {\n const scope = this.getScope();\n if (scope) scope.setContext(name, context);\n }\n\n /**\n * @inheritDoc\n */\n public configureScope(callback: (scope: Scope) => void): void {\n const { scope, client } = this.getStackTop();\n if (scope && client) {\n callback(scope);\n }\n }\n\n /**\n * @inheritDoc\n */\n public run(callback: (hub: Hub) => void): void {\n const oldHub = makeMain(this);\n try {\n callback(this);\n } finally {\n makeMain(oldHub);\n }\n }\n\n /**\n * @inheritDoc\n */\n public getIntegration(integration: IntegrationClass): T | null {\n const client = this.getClient();\n if (!client) return null;\n try {\n return client.getIntegration(integration);\n } catch (_oO) {\n __DEBUG_BUILD__ && logger.warn(`Cannot retrieve integration ${integration.id} from the current Hub`);\n return null;\n }\n }\n\n /**\n * @inheritDoc\n */\n public startTransaction(context: TransactionContext, customSamplingContext?: CustomSamplingContext): Transaction {\n return this._callExtensionMethod('startTransaction', context, customSamplingContext);\n }\n\n /**\n * @inheritDoc\n */\n public traceHeaders(): { [key: string]: string } {\n return this._callExtensionMethod<{ [key: string]: string }>('traceHeaders');\n }\n\n /**\n * @inheritDoc\n */\n public captureSession(endSession: boolean = false): void {\n // both send the update and pull the session from the scope\n if (endSession) {\n return this.endSession();\n }\n\n // only send the update\n this._sendSessionUpdate();\n }\n\n /**\n * @inheritDoc\n */\n public endSession(): void {\n const layer = this.getStackTop();\n const scope = layer && layer.scope;\n const session = scope && scope.getSession();\n if (session) {\n closeSession(session);\n }\n this._sendSessionUpdate();\n\n // the session is over; take it off of the scope\n if (scope) {\n scope.setSession();\n }\n }\n\n /**\n * @inheritDoc\n */\n public startSession(context?: SessionContext): Session {\n const { scope, client } = this.getStackTop();\n const { release, environment } = (client && client.getOptions()) || {};\n\n // Will fetch userAgent if called from browser sdk\n const { userAgent } = GLOBAL_OBJ.navigator || {};\n\n const session = makeSession({\n release,\n environment,\n ...(scope && { user: scope.getUser() }),\n ...(userAgent && { userAgent }),\n ...context,\n });\n\n if (scope) {\n // End existing session if there's one\n const currentSession = scope.getSession && scope.getSession();\n if (currentSession && currentSession.status === 'ok') {\n updateSession(currentSession, { status: 'exited' });\n }\n this.endSession();\n\n // Afterwards we set the new session on the scope\n scope.setSession(session);\n }\n\n return session;\n }\n\n /**\n * Returns if default PII should be sent to Sentry and propagated in ourgoing requests\n * when Tracing is used.\n */\n public shouldSendDefaultPii(): boolean {\n const client = this.getClient();\n const options = client && client.getOptions();\n return Boolean(options && options.sendDefaultPii);\n }\n\n /**\n * Sends the current Session on the scope\n */\n private _sendSessionUpdate(): void {\n const { scope, client } = this.getStackTop();\n if (!scope) return;\n\n const session = scope.getSession();\n if (session) {\n if (client && client.captureSession) {\n client.captureSession(session);\n }\n }\n }\n\n /**\n * Internal helper function to call a method on the top client if it exists.\n *\n * @param method The method to call on the client.\n * @param args Arguments to pass to the client function.\n */\n private _withClient(callback: (client: Client, scope: Scope | undefined) => void): void {\n const { scope, client } = this.getStackTop();\n if (client) {\n callback(client, scope);\n }\n }\n\n /**\n * Calls global extension method and binding current instance to the function call\n */\n // @ts-ignore Function lacks ending return statement and return type does not include 'undefined'. ts(2366)\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private _callExtensionMethod(method: string, ...args: any[]): T {\n const carrier = getMainCarrier();\n const sentry = carrier.__SENTRY__;\n if (sentry && sentry.extensions && typeof sentry.extensions[method] === 'function') {\n return sentry.extensions[method].apply(this, args);\n }\n __DEBUG_BUILD__ && logger.warn(`Extension method ${method} couldn't be found, doing nothing.`);\n }\n}\n\n/**\n * Returns the global shim registry.\n *\n * FIXME: This function is problematic, because despite always returning a valid Carrier,\n * it has an optional `__SENTRY__` property, which then in turn requires us to always perform an unnecessary check\n * at the call-site. We always access the carrier through this function, so we can guarantee that `__SENTRY__` is there.\n **/\nexport function getMainCarrier(): Carrier {\n GLOBAL_OBJ.__SENTRY__ = GLOBAL_OBJ.__SENTRY__ || {\n extensions: {},\n hub: undefined,\n };\n return GLOBAL_OBJ;\n}\n\n/**\n * Replaces the current main hub with the passed one on the global object\n *\n * @returns The old replaced hub\n */\nexport function makeMain(hub: Hub): Hub {\n const registry = getMainCarrier();\n const oldHub = getHubFromCarrier(registry);\n setHubOnCarrier(registry, hub);\n return oldHub;\n}\n\n/**\n * Returns the default hub instance.\n *\n * If a hub is already registered in the global carrier but this module\n * contains a more recent version, it replaces the registered version.\n * Otherwise, the currently registered hub will be returned.\n */\nexport function getCurrentHub(): Hub {\n // Get main carrier (global for every environment)\n const registry = getMainCarrier();\n\n // If there's no hub, or its an old API, assign a new one\n if (!hasHubOnCarrier(registry) || getHubFromCarrier(registry).isOlderThan(API_VERSION)) {\n setHubOnCarrier(registry, new Hub());\n }\n\n // Prefer domains over global if they are there (applicable only to Node environment)\n if (isNodeEnv()) {\n return getHubFromActiveDomain(registry);\n }\n // Return hub that lives on a global object\n return getHubFromCarrier(registry);\n}\n\n/**\n * Try to read the hub from an active domain, and fallback to the registry if one doesn't exist\n * @returns discovered hub\n */\nfunction getHubFromActiveDomain(registry: Carrier): Hub {\n try {\n const sentry = getMainCarrier().__SENTRY__;\n const activeDomain = sentry && sentry.extensions && sentry.extensions.domain && sentry.extensions.domain.active;\n\n // If there's no active domain, just return global hub\n if (!activeDomain) {\n return getHubFromCarrier(registry);\n }\n\n // If there's no hub on current domain, or it's an old API, assign a new one\n if (!hasHubOnCarrier(activeDomain) || getHubFromCarrier(activeDomain).isOlderThan(API_VERSION)) {\n const registryHubTopStack = getHubFromCarrier(registry).getStackTop();\n setHubOnCarrier(activeDomain, new Hub(registryHubTopStack.client, Scope.clone(registryHubTopStack.scope)));\n }\n\n // Return hub that lives on a domain\n return getHubFromCarrier(activeDomain);\n } catch (_Oo) {\n // Return hub that lives on a global object\n return getHubFromCarrier(registry);\n }\n}\n\n/**\n * This will tell whether a carrier has a hub on it or not\n * @param carrier object\n */\nfunction hasHubOnCarrier(carrier: Carrier): boolean {\n return !!(carrier && carrier.__SENTRY__ && carrier.__SENTRY__.hub);\n}\n\n/**\n * This will create a new {@link Hub} and add to the passed object on\n * __SENTRY__.hub.\n * @param carrier object\n * @hidden\n */\nexport function getHubFromCarrier(carrier: Carrier): Hub {\n return getGlobalSingleton('hub', () => new Hub(), carrier);\n}\n\n/**\n * This will set passed {@link Hub} on the passed object's __SENTRY__.hub attribute\n * @param carrier object\n * @param hub Hub\n * @returns A boolean indicating success or failure\n */\nexport function setHubOnCarrier(carrier: Carrier, hub: Hub): boolean {\n if (!carrier) return false;\n const __SENTRY__ = (carrier.__SENTRY__ = carrier.__SENTRY__ || {});\n __SENTRY__.hub = hub;\n return true;\n}\n","/* eslint-disable max-lines */\nimport {\n Attachment,\n Breadcrumb,\n CaptureContext,\n Context,\n Contexts,\n Event,\n EventHint,\n EventProcessor,\n Extra,\n Extras,\n Primitive,\n RequestSession,\n Scope as ScopeInterface,\n ScopeContext,\n Session,\n Severity,\n SeverityLevel,\n Span,\n Transaction,\n User,\n} from '@sentry/types';\nimport {\n arrayify,\n dateTimestampInSeconds,\n getGlobalSingleton,\n isPlainObject,\n isThenable,\n logger,\n SyncPromise,\n} from '@sentry/utils';\n\nimport { updateSession } from './session';\n\n/**\n * Default value for maximum number of breadcrumbs added to an event.\n */\nconst DEFAULT_MAX_BREADCRUMBS = 100;\n\n/**\n * Holds additional event information. {@link Scope.applyToEvent} will be\n * called by the client before an event will be sent.\n */\nexport class Scope implements ScopeInterface {\n /** Flag if notifying is happening. */\n protected _notifyingListeners: boolean;\n\n /** Callback for client to receive scope changes. */\n protected _scopeListeners: Array<(scope: Scope) => void>;\n\n /** Callback list that will be called after {@link applyToEvent}. */\n protected _eventProcessors: EventProcessor[];\n\n /** Array of breadcrumbs. */\n protected _breadcrumbs: Breadcrumb[];\n\n /** User */\n protected _user: User;\n\n /** Tags */\n protected _tags: { [key: string]: Primitive };\n\n /** Extra */\n protected _extra: Extras;\n\n /** Contexts */\n protected _contexts: Contexts;\n\n /** Attachments */\n protected _attachments: Attachment[];\n\n /**\n * A place to stash data which is needed at some point in the SDK's event processing pipeline but which shouldn't get\n * sent to Sentry\n */\n protected _sdkProcessingMetadata: { [key: string]: unknown };\n\n /** Fingerprint */\n protected _fingerprint?: string[];\n\n /** Severity */\n // eslint-disable-next-line deprecation/deprecation\n protected _level?: Severity | SeverityLevel;\n\n /** Transaction Name */\n protected _transactionName?: string;\n\n /** Span */\n protected _span?: Span;\n\n /** Session */\n protected _session?: Session;\n\n /** Request Mode Session Status */\n protected _requestSession?: RequestSession;\n\n public constructor() {\n this._notifyingListeners = false;\n this._scopeListeners = [];\n this._eventProcessors = [];\n this._breadcrumbs = [];\n this._attachments = [];\n this._user = {};\n this._tags = {};\n this._extra = {};\n this._contexts = {};\n this._sdkProcessingMetadata = {};\n }\n\n /**\n * Inherit values from the parent scope.\n * @param scope to clone.\n */\n public static clone(scope?: Scope): Scope {\n const newScope = new Scope();\n if (scope) {\n newScope._breadcrumbs = [...scope._breadcrumbs];\n newScope._tags = { ...scope._tags };\n newScope._extra = { ...scope._extra };\n newScope._contexts = { ...scope._contexts };\n newScope._user = scope._user;\n newScope._level = scope._level;\n newScope._span = scope._span;\n newScope._session = scope._session;\n newScope._transactionName = scope._transactionName;\n newScope._fingerprint = scope._fingerprint;\n newScope._eventProcessors = [...scope._eventProcessors];\n newScope._requestSession = scope._requestSession;\n newScope._attachments = [...scope._attachments];\n }\n return newScope;\n }\n\n /**\n * Add internal on change listener. Used for sub SDKs that need to store the scope.\n * @hidden\n */\n public addScopeListener(callback: (scope: Scope) => void): void {\n this._scopeListeners.push(callback);\n }\n\n /**\n * @inheritDoc\n */\n public addEventProcessor(callback: EventProcessor): this {\n this._eventProcessors.push(callback);\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public setUser(user: User | null): this {\n this._user = user || {};\n if (this._session) {\n updateSession(this._session, { user });\n }\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public getUser(): User | undefined {\n return this._user;\n }\n\n /**\n * @inheritDoc\n */\n public getRequestSession(): RequestSession | undefined {\n return this._requestSession;\n }\n\n /**\n * @inheritDoc\n */\n public setRequestSession(requestSession?: RequestSession): this {\n this._requestSession = requestSession;\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public setTags(tags: { [key: string]: Primitive }): this {\n this._tags = {\n ...this._tags,\n ...tags,\n };\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public setTag(key: string, value: Primitive): this {\n this._tags = { ...this._tags, [key]: value };\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public setExtras(extras: Extras): this {\n this._extra = {\n ...this._extra,\n ...extras,\n };\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public setExtra(key: string, extra: Extra): this {\n this._extra = { ...this._extra, [key]: extra };\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public setFingerprint(fingerprint: string[]): this {\n this._fingerprint = fingerprint;\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public setLevel(\n // eslint-disable-next-line deprecation/deprecation\n level: Severity | SeverityLevel,\n ): this {\n this._level = level;\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public setTransactionName(name?: string): this {\n this._transactionName = name;\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public setContext(key: string, context: Context | null): this {\n if (context === null) {\n // eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n delete this._contexts[key];\n } else {\n this._contexts[key] = context;\n }\n\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public setSpan(span?: Span): this {\n this._span = span;\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public getSpan(): Span | undefined {\n return this._span;\n }\n\n /**\n * @inheritDoc\n */\n public getTransaction(): Transaction | undefined {\n // Often, this span (if it exists at all) will be a transaction, but it's not guaranteed to be. Regardless, it will\n // have a pointer to the currently-active transaction.\n const span = this.getSpan();\n return span && span.transaction;\n }\n\n /**\n * @inheritDoc\n */\n public setSession(session?: Session): this {\n if (!session) {\n delete this._session;\n } else {\n this._session = session;\n }\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public getSession(): Session | undefined {\n return this._session;\n }\n\n /**\n * @inheritDoc\n */\n public update(captureContext?: CaptureContext): this {\n if (!captureContext) {\n return this;\n }\n\n if (typeof captureContext === 'function') {\n const updatedScope = (captureContext as (scope: T) => T)(this);\n return updatedScope instanceof Scope ? updatedScope : this;\n }\n\n if (captureContext instanceof Scope) {\n this._tags = { ...this._tags, ...captureContext._tags };\n this._extra = { ...this._extra, ...captureContext._extra };\n this._contexts = { ...this._contexts, ...captureContext._contexts };\n if (captureContext._user && Object.keys(captureContext._user).length) {\n this._user = captureContext._user;\n }\n if (captureContext._level) {\n this._level = captureContext._level;\n }\n if (captureContext._fingerprint) {\n this._fingerprint = captureContext._fingerprint;\n }\n if (captureContext._requestSession) {\n this._requestSession = captureContext._requestSession;\n }\n } else if (isPlainObject(captureContext)) {\n // eslint-disable-next-line no-param-reassign\n captureContext = captureContext as ScopeContext;\n this._tags = { ...this._tags, ...captureContext.tags };\n this._extra = { ...this._extra, ...captureContext.extra };\n this._contexts = { ...this._contexts, ...captureContext.contexts };\n if (captureContext.user) {\n this._user = captureContext.user;\n }\n if (captureContext.level) {\n this._level = captureContext.level;\n }\n if (captureContext.fingerprint) {\n this._fingerprint = captureContext.fingerprint;\n }\n if (captureContext.requestSession) {\n this._requestSession = captureContext.requestSession;\n }\n }\n\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public clear(): this {\n this._breadcrumbs = [];\n this._tags = {};\n this._extra = {};\n this._user = {};\n this._contexts = {};\n this._level = undefined;\n this._transactionName = undefined;\n this._fingerprint = undefined;\n this._requestSession = undefined;\n this._span = undefined;\n this._session = undefined;\n this._notifyScopeListeners();\n this._attachments = [];\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public addBreadcrumb(breadcrumb: Breadcrumb, maxBreadcrumbs?: number): this {\n const maxCrumbs = typeof maxBreadcrumbs === 'number' ? maxBreadcrumbs : DEFAULT_MAX_BREADCRUMBS;\n\n // No data has been changed, so don't notify scope listeners\n if (maxCrumbs <= 0) {\n return this;\n }\n\n const mergedBreadcrumb = {\n timestamp: dateTimestampInSeconds(),\n ...breadcrumb,\n };\n this._breadcrumbs = [...this._breadcrumbs, mergedBreadcrumb].slice(-maxCrumbs);\n this._notifyScopeListeners();\n\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public clearBreadcrumbs(): this {\n this._breadcrumbs = [];\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public addAttachment(attachment: Attachment): this {\n this._attachments.push(attachment);\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public getAttachments(): Attachment[] {\n return this._attachments;\n }\n\n /**\n * @inheritDoc\n */\n public clearAttachments(): this {\n this._attachments = [];\n return this;\n }\n\n /**\n * Applies data from the scope to the event and runs all event processors on it.\n *\n * @param event Event\n * @param hint Object containing additional information about the original exception, for use by the event processors.\n * @hidden\n */\n public applyToEvent(event: Event, hint: EventHint = {}): PromiseLike {\n if (this._extra && Object.keys(this._extra).length) {\n event.extra = { ...this._extra, ...event.extra };\n }\n if (this._tags && Object.keys(this._tags).length) {\n event.tags = { ...this._tags, ...event.tags };\n }\n if (this._user && Object.keys(this._user).length) {\n event.user = { ...this._user, ...event.user };\n }\n if (this._contexts && Object.keys(this._contexts).length) {\n event.contexts = { ...this._contexts, ...event.contexts };\n }\n if (this._level) {\n event.level = this._level;\n }\n if (this._transactionName) {\n event.transaction = this._transactionName;\n }\n\n // We want to set the trace context for normal events only if there isn't already\n // a trace context on the event. There is a product feature in place where we link\n // errors with transaction and it relies on that.\n if (this._span) {\n event.contexts = { trace: this._span.getTraceContext(), ...event.contexts };\n const transactionName = this._span.transaction && this._span.transaction.name;\n if (transactionName) {\n event.tags = { transaction: transactionName, ...event.tags };\n }\n }\n\n this._applyFingerprint(event);\n\n event.breadcrumbs = [...(event.breadcrumbs || []), ...this._breadcrumbs];\n event.breadcrumbs = event.breadcrumbs.length > 0 ? event.breadcrumbs : undefined;\n\n event.sdkProcessingMetadata = { ...event.sdkProcessingMetadata, ...this._sdkProcessingMetadata };\n\n return this._notifyEventProcessors([...getGlobalEventProcessors(), ...this._eventProcessors], event, hint);\n }\n\n /**\n * Add data which will be accessible during event processing but won't get sent to Sentry\n */\n public setSDKProcessingMetadata(newData: { [key: string]: unknown }): this {\n this._sdkProcessingMetadata = { ...this._sdkProcessingMetadata, ...newData };\n\n return this;\n }\n\n /**\n * This will be called after {@link applyToEvent} is finished.\n */\n protected _notifyEventProcessors(\n processors: EventProcessor[],\n event: Event | null,\n hint: EventHint,\n index: number = 0,\n ): PromiseLike {\n return new SyncPromise((resolve, reject) => {\n const processor = processors[index];\n if (event === null || typeof processor !== 'function') {\n resolve(event);\n } else {\n const result = processor({ ...event }, hint) as Event | null;\n\n __DEBUG_BUILD__ &&\n processor.id &&\n result === null &&\n logger.log(`Event processor \"${processor.id}\" dropped event`);\n\n if (isThenable(result)) {\n void result\n .then(final => this._notifyEventProcessors(processors, final, hint, index + 1).then(resolve))\n .then(null, reject);\n } else {\n void this._notifyEventProcessors(processors, result, hint, index + 1)\n .then(resolve)\n .then(null, reject);\n }\n }\n });\n }\n\n /**\n * This will be called on every set call.\n */\n protected _notifyScopeListeners(): void {\n // We need this check for this._notifyingListeners to be able to work on scope during updates\n // If this check is not here we'll produce endless recursion when something is done with the scope\n // during the callback.\n if (!this._notifyingListeners) {\n this._notifyingListeners = true;\n this._scopeListeners.forEach(callback => {\n callback(this);\n });\n this._notifyingListeners = false;\n }\n }\n\n /**\n * Applies fingerprint from the scope to the event if there's one,\n * uses message if there's one instead or get rid of empty fingerprint\n */\n private _applyFingerprint(event: Event): void {\n // Make sure it's an array first and we actually have something in place\n event.fingerprint = event.fingerprint ? arrayify(event.fingerprint) : [];\n\n // If we have something on the scope, then merge it with event\n if (this._fingerprint) {\n event.fingerprint = event.fingerprint.concat(this._fingerprint);\n }\n\n // If we have no data at all, remove empty array default\n if (event.fingerprint && !event.fingerprint.length) {\n delete event.fingerprint;\n }\n }\n}\n\n/**\n * Returns the global event processors.\n */\nfunction getGlobalEventProcessors(): EventProcessor[] {\n return getGlobalSingleton('globalEventProcessors', () => []);\n}\n\n/**\n * Add a EventProcessor to be kept globally.\n * @param callback EventProcessor to add\n */\nexport function addGlobalEventProcessor(callback: EventProcessor): void {\n getGlobalEventProcessors().push(callback);\n}\n","import { SerializedSession, Session, SessionContext, SessionStatus } from '@sentry/types';\nimport { dropUndefinedKeys, timestampInSeconds, uuid4 } from '@sentry/utils';\n\n/**\n * Creates a new `Session` object by setting certain default parameters. If optional @param context\n * is passed, the passed properties are applied to the session object.\n *\n * @param context (optional) additional properties to be applied to the returned session object\n *\n * @returns a new `Session` object\n */\nexport function makeSession(context?: Omit): Session {\n // Both timestamp and started are in seconds since the UNIX epoch.\n const startingTime = timestampInSeconds();\n\n const session: Session = {\n sid: uuid4(),\n init: true,\n timestamp: startingTime,\n started: startingTime,\n duration: 0,\n status: 'ok',\n errors: 0,\n ignoreDuration: false,\n toJSON: () => sessionToJSON(session),\n };\n\n if (context) {\n updateSession(session, context);\n }\n\n return session;\n}\n\n/**\n * Updates a session object with the properties passed in the context.\n *\n * Note that this function mutates the passed object and returns void.\n * (Had to do this instead of returning a new and updated session because closing and sending a session\n * makes an update to the session after it was passed to the sending logic.\n * @see BaseClient.captureSession )\n *\n * @param session the `Session` to update\n * @param context the `SessionContext` holding the properties that should be updated in @param session\n */\n// eslint-disable-next-line complexity\nexport function updateSession(session: Session, context: SessionContext = {}): void {\n if (context.user) {\n if (!session.ipAddress && context.user.ip_address) {\n session.ipAddress = context.user.ip_address;\n }\n\n if (!session.did && !context.did) {\n session.did = context.user.id || context.user.email || context.user.username;\n }\n }\n\n session.timestamp = context.timestamp || timestampInSeconds();\n\n if (context.ignoreDuration) {\n session.ignoreDuration = context.ignoreDuration;\n }\n if (context.sid) {\n // Good enough uuid validation. — Kamil\n session.sid = context.sid.length === 32 ? context.sid : uuid4();\n }\n if (context.init !== undefined) {\n session.init = context.init;\n }\n if (!session.did && context.did) {\n session.did = `${context.did}`;\n }\n if (typeof context.started === 'number') {\n session.started = context.started;\n }\n if (session.ignoreDuration) {\n session.duration = undefined;\n } else if (typeof context.duration === 'number') {\n session.duration = context.duration;\n } else {\n const duration = session.timestamp - session.started;\n session.duration = duration >= 0 ? duration : 0;\n }\n if (context.release) {\n session.release = context.release;\n }\n if (context.environment) {\n session.environment = context.environment;\n }\n if (!session.ipAddress && context.ipAddress) {\n session.ipAddress = context.ipAddress;\n }\n if (!session.userAgent && context.userAgent) {\n session.userAgent = context.userAgent;\n }\n if (typeof context.errors === 'number') {\n session.errors = context.errors;\n }\n if (context.status) {\n session.status = context.status;\n }\n}\n\n/**\n * Closes a session by setting its status and updating the session object with it.\n * Internally calls `updateSession` to update the passed session object.\n *\n * Note that this function mutates the passed session (@see updateSession for explanation).\n *\n * @param session the `Session` object to be closed\n * @param status the `SessionStatus` with which the session was closed. If you don't pass a status,\n * this function will keep the previously set status, unless it was `'ok'` in which case\n * it is changed to `'exited'`.\n */\nexport function closeSession(session: Session, status?: Exclude): void {\n let context = {};\n if (status) {\n context = { status };\n } else if (session.status === 'ok') {\n context = { status: 'exited' };\n }\n\n updateSession(session, context);\n}\n\n/**\n * Serializes a passed session object to a JSON object with a slightly different structure.\n * This is necessary because the Sentry backend requires a slightly different schema of a session\n * than the one the JS SDKs use internally.\n *\n * @param session the session to be converted\n *\n * @returns a JSON object of the passed session\n */\nfunction sessionToJSON(session: Session): SerializedSession {\n return dropUndefinedKeys({\n sid: `${session.sid}`,\n init: session.init,\n // Make sure that sec is converted to ms for date constructor\n started: new Date(session.started * 1000).toISOString(),\n timestamp: new Date(session.timestamp * 1000).toISOString(),\n status: session.status,\n errors: session.errors,\n did: typeof session.did === 'number' || typeof session.did === 'string' ? `${session.did}` : undefined,\n duration: session.duration,\n attrs: {\n release: session.release,\n environment: session.environment,\n ip_address: session.ipAddress,\n user_agent: session.userAgent,\n },\n });\n}\n","'use strict';\n\nvar reactIs = require('react-is');\n\n/**\n * Copyright 2015, Yahoo! Inc.\n * Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms.\n */\nvar REACT_STATICS = {\n childContextTypes: true,\n contextType: true,\n contextTypes: true,\n defaultProps: true,\n displayName: true,\n getDefaultProps: true,\n getDerivedStateFromError: true,\n getDerivedStateFromProps: true,\n mixins: true,\n propTypes: true,\n type: true\n};\nvar KNOWN_STATICS = {\n name: true,\n length: true,\n prototype: true,\n caller: true,\n callee: true,\n arguments: true,\n arity: true\n};\nvar FORWARD_REF_STATICS = {\n '$$typeof': true,\n render: true,\n defaultProps: true,\n displayName: true,\n propTypes: true\n};\nvar MEMO_STATICS = {\n '$$typeof': true,\n compare: true,\n defaultProps: true,\n displayName: true,\n propTypes: true,\n type: true\n};\nvar TYPE_STATICS = {};\nTYPE_STATICS[reactIs.ForwardRef] = FORWARD_REF_STATICS;\nTYPE_STATICS[reactIs.Memo] = MEMO_STATICS;\n\nfunction getStatics(component) {\n // React v16.11 and below\n if (reactIs.isMemo(component)) {\n return MEMO_STATICS;\n } // React v16.12 and above\n\n\n return TYPE_STATICS[component['$$typeof']] || REACT_STATICS;\n}\n\nvar defineProperty = Object.defineProperty;\nvar getOwnPropertyNames = Object.getOwnPropertyNames;\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\nvar getPrototypeOf = Object.getPrototypeOf;\nvar objectPrototype = Object.prototype;\nfunction hoistNonReactStatics(targetComponent, sourceComponent, blacklist) {\n if (typeof sourceComponent !== 'string') {\n // don't hoist over string (html) components\n if (objectPrototype) {\n var inheritedComponent = getPrototypeOf(sourceComponent);\n\n if (inheritedComponent && inheritedComponent !== objectPrototype) {\n hoistNonReactStatics(targetComponent, inheritedComponent, blacklist);\n }\n }\n\n var keys = getOwnPropertyNames(sourceComponent);\n\n if (getOwnPropertySymbols) {\n keys = keys.concat(getOwnPropertySymbols(sourceComponent));\n }\n\n var targetStatics = getStatics(targetComponent);\n var sourceStatics = getStatics(sourceComponent);\n\n for (var i = 0; i < keys.length; ++i) {\n var key = keys[i];\n\n if (!KNOWN_STATICS[key] && !(blacklist && blacklist[key]) && !(sourceStatics && sourceStatics[key]) && !(targetStatics && targetStatics[key])) {\n var descriptor = getOwnPropertyDescriptor(sourceComponent, key);\n\n try {\n // Avoid failures from read-only properties\n defineProperty(targetComponent, key, descriptor);\n } catch (e) {}\n }\n }\n }\n\n return targetComponent;\n}\n\nmodule.exports = hoistNonReactStatics;\n","import { addInstrumentationHandler, logger } from '@sentry/utils';\n\nimport { SpanStatusType } from './span';\nimport { getActiveTransaction } from './utils';\n\n/**\n * Configures global error listeners\n */\nexport function registerErrorInstrumentation(): void {\n addInstrumentationHandler('error', errorCallback);\n addInstrumentationHandler('unhandledrejection', errorCallback);\n}\n\n/**\n * If an error or unhandled promise occurs, we mark the active transaction as failed\n */\nfunction errorCallback(): void {\n const activeTransaction = getActiveTransaction();\n if (activeTransaction) {\n const status: SpanStatusType = 'internal_error';\n __DEBUG_BUILD__ && logger.log(`[Tracing] Transaction: ${status} -> Global error occured`);\n activeTransaction.setStatus(status);\n }\n}\n","import { getMainCarrier, Hub } from '@sentry/core';\nimport {\n ClientOptions,\n CustomSamplingContext,\n Integration,\n IntegrationClass,\n Options,\n SamplingContext,\n TransactionContext,\n} from '@sentry/types';\nimport { dynamicRequire, isNaN, isNodeEnv, loadModule, logger } from '@sentry/utils';\n\nimport { registerErrorInstrumentation } from './errors';\nimport { IdleTransaction } from './idletransaction';\nimport { Transaction } from './transaction';\nimport { hasTracingEnabled } from './utils';\n\n/** Returns all trace headers that are currently on the top scope. */\nfunction traceHeaders(this: Hub): { [key: string]: string } {\n const scope = this.getScope();\n if (scope) {\n const span = scope.getSpan();\n if (span) {\n return {\n 'sentry-trace': span.toTraceparent(),\n };\n }\n }\n return {};\n}\n\n/**\n * Makes a sampling decision for the given transaction and stores it on the transaction.\n *\n * Called every time a transaction is created. Only transactions which emerge with a `sampled` value of `true` will be\n * sent to Sentry.\n *\n * @param transaction: The transaction needing a sampling decision\n * @param options: The current client's options, so we can access `tracesSampleRate` and/or `tracesSampler`\n * @param samplingContext: Default and user-provided data which may be used to help make the decision\n *\n * @returns The given transaction with its `sampled` value set\n */\nfunction sample(\n transaction: T,\n options: Pick,\n samplingContext: SamplingContext,\n): T {\n // nothing to do if tracing is not enabled\n if (!hasTracingEnabled(options)) {\n transaction.sampled = false;\n return transaction;\n }\n\n // if the user has forced a sampling decision by passing a `sampled` value in their transaction context, go with that\n if (transaction.sampled !== undefined) {\n transaction.setMetadata({\n sampleRate: Number(transaction.sampled),\n });\n return transaction;\n }\n\n // we would have bailed already if neither `tracesSampler` nor `tracesSampleRate` were defined, so one of these should\n // work; prefer the hook if so\n let sampleRate;\n if (typeof options.tracesSampler === 'function') {\n sampleRate = options.tracesSampler(samplingContext);\n transaction.setMetadata({\n sampleRate: Number(sampleRate),\n });\n } else if (samplingContext.parentSampled !== undefined) {\n sampleRate = samplingContext.parentSampled;\n } else {\n sampleRate = options.tracesSampleRate;\n transaction.setMetadata({\n sampleRate: Number(sampleRate),\n });\n }\n\n // Since this is coming from the user (or from a function provided by the user), who knows what we might get. (The\n // only valid values are booleans or numbers between 0 and 1.)\n if (!isValidSampleRate(sampleRate)) {\n __DEBUG_BUILD__ && logger.warn('[Tracing] Discarding transaction because of invalid sample rate.');\n transaction.sampled = false;\n return transaction;\n }\n\n // if the function returned 0 (or false), or if `tracesSampleRate` is 0, it's a sign the transaction should be dropped\n if (!sampleRate) {\n __DEBUG_BUILD__ &&\n logger.log(\n `[Tracing] Discarding transaction because ${\n typeof options.tracesSampler === 'function'\n ? 'tracesSampler returned 0 or false'\n : 'a negative sampling decision was inherited or tracesSampleRate is set to 0'\n }`,\n );\n transaction.sampled = false;\n return transaction;\n }\n\n // Now we roll the dice. Math.random is inclusive of 0, but not of 1, so strict < is safe here. In case sampleRate is\n // a boolean, the < comparison will cause it to be automatically cast to 1 if it's true and 0 if it's false.\n transaction.sampled = Math.random() < (sampleRate as number | boolean);\n\n // if we're not going to keep it, we're done\n if (!transaction.sampled) {\n __DEBUG_BUILD__ &&\n logger.log(\n `[Tracing] Discarding transaction because it's not included in the random sample (sampling rate = ${Number(\n sampleRate,\n )})`,\n );\n return transaction;\n }\n\n __DEBUG_BUILD__ && logger.log(`[Tracing] starting ${transaction.op} transaction - ${transaction.name}`);\n return transaction;\n}\n\n/**\n * Checks the given sample rate to make sure it is valid type and value (a boolean, or a number between 0 and 1).\n */\nfunction isValidSampleRate(rate: unknown): boolean {\n // we need to check NaN explicitly because it's of type 'number' and therefore wouldn't get caught by this typecheck\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (isNaN(rate) || !(typeof rate === 'number' || typeof rate === 'boolean')) {\n __DEBUG_BUILD__ &&\n logger.warn(\n `[Tracing] Given sample rate is invalid. Sample rate must be a boolean or a number between 0 and 1. Got ${JSON.stringify(\n rate,\n )} of type ${JSON.stringify(typeof rate)}.`,\n );\n return false;\n }\n\n // in case sampleRate is a boolean, it will get automatically cast to 1 if it's true and 0 if it's false\n if (rate < 0 || rate > 1) {\n __DEBUG_BUILD__ &&\n logger.warn(`[Tracing] Given sample rate is invalid. Sample rate must be between 0 and 1. Got ${rate}.`);\n return false;\n }\n return true;\n}\n\n/**\n * Creates a new transaction and adds a sampling decision if it doesn't yet have one.\n *\n * The Hub.startTransaction method delegates to this method to do its work, passing the Hub instance in as `this`, as if\n * it had been called on the hub directly. Exists as a separate function so that it can be injected into the class as an\n * \"extension method.\"\n *\n * @param this: The Hub starting the transaction\n * @param transactionContext: Data used to configure the transaction\n * @param CustomSamplingContext: Optional data to be provided to the `tracesSampler` function (if any)\n *\n * @returns The new transaction\n *\n * @see {@link Hub.startTransaction}\n */\nfunction _startTransaction(\n this: Hub,\n transactionContext: TransactionContext,\n customSamplingContext?: CustomSamplingContext,\n): Transaction {\n const client = this.getClient();\n const options: Partial = (client && client.getOptions()) || {};\n\n const configInstrumenter = options.instrumenter || 'sentry';\n const transactionInstrumenter = transactionContext.instrumenter || 'sentry';\n\n if (configInstrumenter !== transactionInstrumenter) {\n __DEBUG_BUILD__ &&\n logger.error(\n `A transaction was started with instrumenter=\\`${transactionInstrumenter}\\`, but the SDK is configured with the \\`${configInstrumenter}\\` instrumenter.\nThe transaction will not be sampled. Please use the ${configInstrumenter} instrumentation to start transactions.`,\n );\n\n transactionContext.sampled = false;\n }\n\n let transaction = new Transaction(transactionContext, this);\n transaction = sample(transaction, options, {\n parentSampled: transactionContext.parentSampled,\n transactionContext,\n ...customSamplingContext,\n });\n if (transaction.sampled) {\n transaction.initSpanRecorder(options._experiments && (options._experiments.maxSpans as number));\n }\n return transaction;\n}\n\n/**\n * Create new idle transaction.\n */\nexport function startIdleTransaction(\n hub: Hub,\n transactionContext: TransactionContext,\n idleTimeout: number,\n finalTimeout: number,\n onScope?: boolean,\n customSamplingContext?: CustomSamplingContext,\n heartbeatInterval?: number,\n): IdleTransaction {\n const client = hub.getClient();\n const options: Partial = (client && client.getOptions()) || {};\n\n let transaction = new IdleTransaction(transactionContext, hub, idleTimeout, finalTimeout, heartbeatInterval, onScope);\n transaction = sample(transaction, options, {\n parentSampled: transactionContext.parentSampled,\n transactionContext,\n ...customSamplingContext,\n });\n if (transaction.sampled) {\n transaction.initSpanRecorder(options._experiments && (options._experiments.maxSpans as number));\n }\n return transaction;\n}\n\n/**\n * @private\n */\nexport function _addTracingExtensions(): void {\n const carrier = getMainCarrier();\n if (!carrier.__SENTRY__) {\n return;\n }\n carrier.__SENTRY__.extensions = carrier.__SENTRY__.extensions || {};\n if (!carrier.__SENTRY__.extensions.startTransaction) {\n carrier.__SENTRY__.extensions.startTransaction = _startTransaction;\n }\n if (!carrier.__SENTRY__.extensions.traceHeaders) {\n carrier.__SENTRY__.extensions.traceHeaders = traceHeaders;\n }\n}\n\n/**\n * @private\n */\nfunction _autoloadDatabaseIntegrations(): void {\n const carrier = getMainCarrier();\n if (!carrier.__SENTRY__) {\n return;\n }\n\n const packageToIntegrationMapping: Record Integration> = {\n mongodb() {\n const integration = dynamicRequire(module, './integrations/node/mongo') as {\n Mongo: IntegrationClass;\n };\n return new integration.Mongo();\n },\n mongoose() {\n const integration = dynamicRequire(module, './integrations/node/mongo') as {\n Mongo: IntegrationClass;\n };\n return new integration.Mongo({ mongoose: true });\n },\n mysql() {\n const integration = dynamicRequire(module, './integrations/node/mysql') as {\n Mysql: IntegrationClass;\n };\n return new integration.Mysql();\n },\n pg() {\n const integration = dynamicRequire(module, './integrations/node/postgres') as {\n Postgres: IntegrationClass;\n };\n return new integration.Postgres();\n },\n };\n\n const mappedPackages = Object.keys(packageToIntegrationMapping)\n .filter(moduleName => !!loadModule(moduleName))\n .map(pkg => {\n try {\n return packageToIntegrationMapping[pkg]();\n } catch (e) {\n return undefined;\n }\n })\n .filter(p => p) as Integration[];\n\n if (mappedPackages.length > 0) {\n carrier.__SENTRY__.integrations = [...(carrier.__SENTRY__.integrations || []), ...mappedPackages];\n }\n}\n\n/**\n * This patches the global object and injects the Tracing extensions methods\n */\nexport function addExtensionMethods(): void {\n _addTracingExtensions();\n\n // Detect and automatically load specified integrations.\n if (isNodeEnv()) {\n _autoloadDatabaseIntegrations();\n }\n\n // If an error happens globally, we should make sure transaction status is set to error.\n registerErrorInstrumentation();\n}\n","/* eslint-disable max-lines */\nimport { Hub } from '@sentry/core';\nimport { TransactionContext } from '@sentry/types';\nimport { logger, timestampWithMs } from '@sentry/utils';\n\nimport { Span, SpanRecorder } from './span';\nimport { Transaction } from './transaction';\n\nexport const DEFAULT_IDLE_TIMEOUT = 1000;\nexport const DEFAULT_FINAL_TIMEOUT = 30000;\nexport const DEFAULT_HEARTBEAT_INTERVAL = 5000;\n\n/**\n * @inheritDoc\n */\nexport class IdleTransactionSpanRecorder extends SpanRecorder {\n public constructor(\n private readonly _pushActivity: (id: string) => void,\n private readonly _popActivity: (id: string) => void,\n public transactionSpanId: string,\n maxlen?: number,\n ) {\n super(maxlen);\n }\n\n /**\n * @inheritDoc\n */\n public add(span: Span): void {\n // We should make sure we do not push and pop activities for\n // the transaction that this span recorder belongs to.\n if (span.spanId !== this.transactionSpanId) {\n // We patch span.finish() to pop an activity after setting an endTimestamp.\n span.finish = (endTimestamp?: number) => {\n span.endTimestamp = typeof endTimestamp === 'number' ? endTimestamp : timestampWithMs();\n this._popActivity(span.spanId);\n };\n\n // We should only push new activities if the span does not have an end timestamp.\n if (span.endTimestamp === undefined) {\n this._pushActivity(span.spanId);\n }\n }\n\n super.add(span);\n }\n}\n\nexport type BeforeFinishCallback = (transactionSpan: IdleTransaction, endTimestamp: number) => void;\n\n/**\n * An IdleTransaction is a transaction that automatically finishes. It does this by tracking child spans as activities.\n * You can have multiple IdleTransactions active, but if the `onScope` option is specified, the idle transaction will\n * put itself on the scope on creation.\n */\nexport class IdleTransaction extends Transaction {\n // Activities store a list of active spans\n public activities: Record = {};\n\n // Track state of activities in previous heartbeat\n private _prevHeartbeatString: string | undefined;\n\n // Amount of times heartbeat has counted. Will cause transaction to finish after 3 beats.\n private _heartbeatCounter: number = 0;\n\n // We should not use heartbeat if we finished a transaction\n private _finished: boolean = false;\n\n private readonly _beforeFinishCallbacks: BeforeFinishCallback[] = [];\n\n /**\n * Timer that tracks Transaction idleTimeout\n */\n private _idleTimeoutID: ReturnType | undefined;\n\n public constructor(\n transactionContext: TransactionContext,\n private readonly _idleHub: Hub,\n /**\n * The time to wait in ms until the idle transaction will be finished. This timer is started each time\n * there are no active spans on this transaction.\n */\n private readonly _idleTimeout: number = DEFAULT_IDLE_TIMEOUT,\n /**\n * The final value in ms that a transaction cannot exceed\n */\n private readonly _finalTimeout: number = DEFAULT_FINAL_TIMEOUT,\n private readonly _heartbeatInterval: number = DEFAULT_HEARTBEAT_INTERVAL,\n // Whether or not the transaction should put itself on the scope when it starts and pop itself off when it ends\n private readonly _onScope: boolean = false,\n ) {\n super(transactionContext, _idleHub);\n\n if (_onScope) {\n // There should only be one active transaction on the scope\n clearActiveTransaction(_idleHub);\n\n // We set the transaction here on the scope so error events pick up the trace\n // context and attach it to the error.\n __DEBUG_BUILD__ && logger.log(`Setting idle transaction on scope. Span ID: ${this.spanId}`);\n _idleHub.configureScope(scope => scope.setSpan(this));\n }\n\n this._startIdleTimeout();\n setTimeout(() => {\n if (!this._finished) {\n this.setStatus('deadline_exceeded');\n this.finish();\n }\n }, this._finalTimeout);\n }\n\n /** {@inheritDoc} */\n public finish(endTimestamp: number = timestampWithMs()): string | undefined {\n this._finished = true;\n this.activities = {};\n\n if (this.spanRecorder) {\n __DEBUG_BUILD__ &&\n logger.log('[Tracing] finishing IdleTransaction', new Date(endTimestamp * 1000).toISOString(), this.op);\n\n for (const callback of this._beforeFinishCallbacks) {\n callback(this, endTimestamp);\n }\n\n this.spanRecorder.spans = this.spanRecorder.spans.filter((span: Span) => {\n // If we are dealing with the transaction itself, we just return it\n if (span.spanId === this.spanId) {\n return true;\n }\n\n // We cancel all pending spans with status \"cancelled\" to indicate the idle transaction was finished early\n if (!span.endTimestamp) {\n span.endTimestamp = endTimestamp;\n span.setStatus('cancelled');\n __DEBUG_BUILD__ &&\n logger.log('[Tracing] cancelling span since transaction ended early', JSON.stringify(span, undefined, 2));\n }\n\n const keepSpan = span.startTimestamp < endTimestamp;\n if (!keepSpan) {\n __DEBUG_BUILD__ &&\n logger.log(\n '[Tracing] discarding Span since it happened after Transaction was finished',\n JSON.stringify(span, undefined, 2),\n );\n }\n return keepSpan;\n });\n\n __DEBUG_BUILD__ && logger.log('[Tracing] flushing IdleTransaction');\n } else {\n __DEBUG_BUILD__ && logger.log('[Tracing] No active IdleTransaction');\n }\n\n // if `this._onScope` is `true`, the transaction put itself on the scope when it started\n if (this._onScope) {\n clearActiveTransaction(this._idleHub);\n }\n\n return super.finish(endTimestamp);\n }\n\n /**\n * Register a callback function that gets excecuted before the transaction finishes.\n * Useful for cleanup or if you want to add any additional spans based on current context.\n *\n * This is exposed because users have no other way of running something before an idle transaction\n * finishes.\n */\n public registerBeforeFinishCallback(callback: BeforeFinishCallback): void {\n this._beforeFinishCallbacks.push(callback);\n }\n\n /**\n * @inheritDoc\n */\n public initSpanRecorder(maxlen?: number): void {\n if (!this.spanRecorder) {\n const pushActivity = (id: string): void => {\n if (this._finished) {\n return;\n }\n this._pushActivity(id);\n };\n const popActivity = (id: string): void => {\n if (this._finished) {\n return;\n }\n this._popActivity(id);\n };\n\n this.spanRecorder = new IdleTransactionSpanRecorder(pushActivity, popActivity, this.spanId, maxlen);\n\n // Start heartbeat so that transactions do not run forever.\n __DEBUG_BUILD__ && logger.log('Starting heartbeat');\n this._pingHeartbeat();\n }\n this.spanRecorder.add(this);\n }\n\n /**\n * Cancels the existing idletimeout, if there is one\n */\n private _cancelIdleTimeout(): void {\n if (this._idleTimeoutID) {\n clearTimeout(this._idleTimeoutID);\n this._idleTimeoutID = undefined;\n }\n }\n\n /**\n * Creates an idletimeout\n */\n private _startIdleTimeout(endTimestamp?: Parameters[0]): void {\n this._cancelIdleTimeout();\n this._idleTimeoutID = setTimeout(() => {\n if (!this._finished && Object.keys(this.activities).length === 0) {\n this.finish(endTimestamp);\n }\n }, this._idleTimeout);\n }\n\n /**\n * Start tracking a specific activity.\n * @param spanId The span id that represents the activity\n */\n private _pushActivity(spanId: string): void {\n this._cancelIdleTimeout();\n __DEBUG_BUILD__ && logger.log(`[Tracing] pushActivity: ${spanId}`);\n this.activities[spanId] = true;\n __DEBUG_BUILD__ && logger.log('[Tracing] new activities count', Object.keys(this.activities).length);\n }\n\n /**\n * Remove an activity from usage\n * @param spanId The span id that represents the activity\n */\n private _popActivity(spanId: string): void {\n if (this.activities[spanId]) {\n __DEBUG_BUILD__ && logger.log(`[Tracing] popActivity ${spanId}`);\n // eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n delete this.activities[spanId];\n __DEBUG_BUILD__ && logger.log('[Tracing] new activities count', Object.keys(this.activities).length);\n }\n\n if (Object.keys(this.activities).length === 0) {\n // We need to add the timeout here to have the real endtimestamp of the transaction\n // Remember timestampWithMs is in seconds, timeout is in ms\n const endTimestamp = timestampWithMs() + this._idleTimeout / 1000;\n this._startIdleTimeout(endTimestamp);\n }\n }\n\n /**\n * Checks when entries of this.activities are not changing for 3 beats.\n * If this occurs we finish the transaction.\n */\n private _beat(): void {\n // We should not be running heartbeat if the idle transaction is finished.\n if (this._finished) {\n return;\n }\n\n const heartbeatString = Object.keys(this.activities).join('');\n\n if (heartbeatString === this._prevHeartbeatString) {\n this._heartbeatCounter += 1;\n } else {\n this._heartbeatCounter = 1;\n }\n\n this._prevHeartbeatString = heartbeatString;\n\n if (this._heartbeatCounter >= 3) {\n __DEBUG_BUILD__ && logger.log('[Tracing] Transaction finished because of no change for 3 heart beats');\n this.setStatus('deadline_exceeded');\n this.finish();\n } else {\n this._pingHeartbeat();\n }\n }\n\n /**\n * Pings the heartbeat\n */\n private _pingHeartbeat(): void {\n __DEBUG_BUILD__ && logger.log(`pinging Heartbeat -> current counter: ${this._heartbeatCounter}`);\n setTimeout(() => {\n this._beat();\n }, this._heartbeatInterval);\n }\n}\n\n/**\n * Reset transaction on scope to `undefined`\n */\nfunction clearActiveTransaction(hub: Hub): void {\n const scope = hub.getScope();\n if (scope) {\n const transaction = scope.getTransaction();\n if (transaction) {\n scope.setSpan(undefined);\n }\n }\n}\n","/* eslint-disable max-lines */\nimport { Instrumenter, Primitive, Span as SpanInterface, SpanContext, Transaction } from '@sentry/types';\nimport { dropUndefinedKeys, logger, timestampWithMs, uuid4 } from '@sentry/utils';\n\n/**\n * Keeps track of finished spans for a given transaction\n * @internal\n * @hideconstructor\n * @hidden\n */\nexport class SpanRecorder {\n public spans: Span[] = [];\n\n private readonly _maxlen: number;\n\n public constructor(maxlen: number = 1000) {\n this._maxlen = maxlen;\n }\n\n /**\n * This is just so that we don't run out of memory while recording a lot\n * of spans. At some point we just stop and flush out the start of the\n * trace tree (i.e.the first n spans with the smallest\n * start_timestamp).\n */\n public add(span: Span): void {\n if (this.spans.length > this._maxlen) {\n span.spanRecorder = undefined;\n } else {\n this.spans.push(span);\n }\n }\n}\n\n/**\n * Span contains all data about a span\n */\nexport class Span implements SpanInterface {\n /**\n * @inheritDoc\n */\n public traceId: string = uuid4();\n\n /**\n * @inheritDoc\n */\n public spanId: string = uuid4().substring(16);\n\n /**\n * @inheritDoc\n */\n public parentSpanId?: string;\n\n /**\n * Internal keeper of the status\n */\n public status?: SpanStatusType | string;\n\n /**\n * @inheritDoc\n */\n public sampled?: boolean;\n\n /**\n * Timestamp in seconds when the span was created.\n */\n public startTimestamp: number = timestampWithMs();\n\n /**\n * Timestamp in seconds when the span ended.\n */\n public endTimestamp?: number;\n\n /**\n * @inheritDoc\n */\n public op?: string;\n\n /**\n * @inheritDoc\n */\n public description?: string;\n\n /**\n * @inheritDoc\n */\n public tags: { [key: string]: Primitive } = {};\n\n /**\n * @inheritDoc\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n public data: { [key: string]: any } = {};\n\n /**\n * List of spans that were finalized\n */\n public spanRecorder?: SpanRecorder;\n\n /**\n * @inheritDoc\n */\n public transaction?: Transaction;\n\n /**\n * The instrumenter that created this span.\n */\n public instrumenter: Instrumenter = 'sentry';\n\n /**\n * You should never call the constructor manually, always use `Sentry.startTransaction()`\n * or call `startChild()` on an existing span.\n * @internal\n * @hideconstructor\n * @hidden\n */\n public constructor(spanContext?: SpanContext) {\n if (!spanContext) {\n return this;\n }\n if (spanContext.traceId) {\n this.traceId = spanContext.traceId;\n }\n if (spanContext.spanId) {\n this.spanId = spanContext.spanId;\n }\n if (spanContext.parentSpanId) {\n this.parentSpanId = spanContext.parentSpanId;\n }\n // We want to include booleans as well here\n if ('sampled' in spanContext) {\n this.sampled = spanContext.sampled;\n }\n if (spanContext.op) {\n this.op = spanContext.op;\n }\n if (spanContext.description) {\n this.description = spanContext.description;\n }\n if (spanContext.data) {\n this.data = spanContext.data;\n }\n if (spanContext.tags) {\n this.tags = spanContext.tags;\n }\n if (spanContext.status) {\n this.status = spanContext.status;\n }\n if (spanContext.startTimestamp) {\n this.startTimestamp = spanContext.startTimestamp;\n }\n if (spanContext.endTimestamp) {\n this.endTimestamp = spanContext.endTimestamp;\n }\n if (spanContext.instrumenter) {\n this.instrumenter = spanContext.instrumenter;\n }\n }\n\n /**\n * @inheritDoc\n */\n public startChild(\n spanContext?: Pick>,\n ): Span {\n const childSpan = new Span({\n ...spanContext,\n parentSpanId: this.spanId,\n sampled: this.sampled,\n traceId: this.traceId,\n });\n\n childSpan.spanRecorder = this.spanRecorder;\n if (childSpan.spanRecorder) {\n childSpan.spanRecorder.add(childSpan);\n }\n\n childSpan.transaction = this.transaction;\n\n if (__DEBUG_BUILD__ && childSpan.transaction) {\n const opStr = (spanContext && spanContext.op) || '< unknown op >';\n const nameStr = childSpan.transaction.name || '< unknown name >';\n const idStr = childSpan.transaction.spanId;\n\n const logMessage = `[Tracing] Starting '${opStr}' span on transaction '${nameStr}' (${idStr}).`;\n childSpan.transaction.metadata.spanMetadata[childSpan.spanId] = { logMessage };\n logger.log(logMessage);\n }\n\n return childSpan;\n }\n\n /**\n * @inheritDoc\n */\n public setTag(key: string, value: Primitive): this {\n this.tags = { ...this.tags, [key]: value };\n return this;\n }\n\n /**\n * @inheritDoc\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types\n public setData(key: string, value: any): this {\n this.data = { ...this.data, [key]: value };\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public setStatus(value: SpanStatusType): this {\n this.status = value;\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public setHttpStatus(httpStatus: number): this {\n this.setTag('http.status_code', String(httpStatus));\n const spanStatus = spanStatusfromHttpCode(httpStatus);\n if (spanStatus !== 'unknown_error') {\n this.setStatus(spanStatus);\n }\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public isSuccess(): boolean {\n return this.status === 'ok';\n }\n\n /**\n * @inheritDoc\n */\n public finish(endTimestamp?: number): void {\n if (\n __DEBUG_BUILD__ &&\n // Don't call this for transactions\n this.transaction &&\n this.transaction.spanId !== this.spanId\n ) {\n const { logMessage } = this.transaction.metadata.spanMetadata[this.spanId];\n if (logMessage) {\n logger.log((logMessage as string).replace('Starting', 'Finishing'));\n }\n }\n\n this.endTimestamp = typeof endTimestamp === 'number' ? endTimestamp : timestampWithMs();\n }\n\n /**\n * @inheritDoc\n */\n public toTraceparent(): string {\n let sampledString = '';\n if (this.sampled !== undefined) {\n sampledString = this.sampled ? '-1' : '-0';\n }\n return `${this.traceId}-${this.spanId}${sampledString}`;\n }\n\n /**\n * @inheritDoc\n */\n public toContext(): SpanContext {\n return dropUndefinedKeys({\n data: this.data,\n description: this.description,\n endTimestamp: this.endTimestamp,\n op: this.op,\n parentSpanId: this.parentSpanId,\n sampled: this.sampled,\n spanId: this.spanId,\n startTimestamp: this.startTimestamp,\n status: this.status,\n tags: this.tags,\n traceId: this.traceId,\n });\n }\n\n /**\n * @inheritDoc\n */\n public updateWithContext(spanContext: SpanContext): this {\n this.data = spanContext.data ?? {};\n this.description = spanContext.description;\n this.endTimestamp = spanContext.endTimestamp;\n this.op = spanContext.op;\n this.parentSpanId = spanContext.parentSpanId;\n this.sampled = spanContext.sampled;\n this.spanId = spanContext.spanId ?? this.spanId;\n this.startTimestamp = spanContext.startTimestamp ?? this.startTimestamp;\n this.status = spanContext.status;\n this.tags = spanContext.tags ?? {};\n this.traceId = spanContext.traceId ?? this.traceId;\n\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public getTraceContext(): {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n data?: { [key: string]: any };\n description?: string;\n op?: string;\n parent_span_id?: string;\n span_id: string;\n status?: string;\n tags?: { [key: string]: Primitive };\n trace_id: string;\n } {\n return dropUndefinedKeys({\n data: Object.keys(this.data).length > 0 ? this.data : undefined,\n description: this.description,\n op: this.op,\n parent_span_id: this.parentSpanId,\n span_id: this.spanId,\n status: this.status,\n tags: Object.keys(this.tags).length > 0 ? this.tags : undefined,\n trace_id: this.traceId,\n });\n }\n\n /**\n * @inheritDoc\n */\n public toJSON(): {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n data?: { [key: string]: any };\n description?: string;\n op?: string;\n parent_span_id?: string;\n span_id: string;\n start_timestamp: number;\n status?: string;\n tags?: { [key: string]: Primitive };\n timestamp?: number;\n trace_id: string;\n } {\n return dropUndefinedKeys({\n data: Object.keys(this.data).length > 0 ? this.data : undefined,\n description: this.description,\n op: this.op,\n parent_span_id: this.parentSpanId,\n span_id: this.spanId,\n start_timestamp: this.startTimestamp,\n status: this.status,\n tags: Object.keys(this.tags).length > 0 ? this.tags : undefined,\n timestamp: this.endTimestamp,\n trace_id: this.traceId,\n });\n }\n}\n\nexport type SpanStatusType =\n /** The operation completed successfully. */\n | 'ok'\n /** Deadline expired before operation could complete. */\n | 'deadline_exceeded'\n /** 401 Unauthorized (actually does mean unauthenticated according to RFC 7235) */\n | 'unauthenticated'\n /** 403 Forbidden */\n | 'permission_denied'\n /** 404 Not Found. Some requested entity (file or directory) was not found. */\n | 'not_found'\n /** 429 Too Many Requests */\n | 'resource_exhausted'\n /** Client specified an invalid argument. 4xx. */\n | 'invalid_argument'\n /** 501 Not Implemented */\n | 'unimplemented'\n /** 503 Service Unavailable */\n | 'unavailable'\n /** Other/generic 5xx. */\n | 'internal_error'\n /** Unknown. Any non-standard HTTP status code. */\n | 'unknown_error'\n /** The operation was cancelled (typically by the user). */\n | 'cancelled'\n /** Already exists (409) */\n | 'already_exists'\n /** Operation was rejected because the system is not in a state required for the operation's */\n | 'failed_precondition'\n /** The operation was aborted, typically due to a concurrency issue. */\n | 'aborted'\n /** Operation was attempted past the valid range. */\n | 'out_of_range'\n /** Unrecoverable data loss or corruption */\n | 'data_loss';\n\n/**\n * Converts a HTTP status code into a {@link SpanStatusType}.\n *\n * @param httpStatus The HTTP response status code.\n * @returns The span status or unknown_error.\n */\nexport function spanStatusfromHttpCode(httpStatus: number): SpanStatusType {\n if (httpStatus < 400 && httpStatus >= 100) {\n return 'ok';\n }\n\n if (httpStatus >= 400 && httpStatus < 500) {\n switch (httpStatus) {\n case 401:\n return 'unauthenticated';\n case 403:\n return 'permission_denied';\n case 404:\n return 'not_found';\n case 409:\n return 'already_exists';\n case 413:\n return 'failed_precondition';\n case 429:\n return 'resource_exhausted';\n default:\n return 'invalid_argument';\n }\n }\n\n if (httpStatus >= 500 && httpStatus < 600) {\n switch (httpStatus) {\n case 501:\n return 'unimplemented';\n case 503:\n return 'unavailable';\n case 504:\n return 'deadline_exceeded';\n default:\n return 'internal_error';\n }\n }\n\n return 'unknown_error';\n}\n","import { getCurrentHub, Hub } from '@sentry/core';\nimport {\n Context,\n Contexts,\n DynamicSamplingContext,\n Event,\n Measurements,\n MeasurementUnit,\n Transaction as TransactionInterface,\n TransactionContext,\n TransactionMetadata,\n} from '@sentry/types';\nimport { dropUndefinedKeys, logger, timestampInSeconds } from '@sentry/utils';\n\nimport { Span as SpanClass, SpanRecorder } from './span';\n\n/** JSDoc */\nexport class Transaction extends SpanClass implements TransactionInterface {\n public metadata: TransactionMetadata;\n\n /**\n * The reference to the current hub.\n */\n public readonly _hub: Hub;\n\n private _name: string;\n\n private _measurements: Measurements = {};\n\n private _contexts: Contexts = {};\n\n private _trimEnd?: boolean;\n\n private _frozenDynamicSamplingContext: Readonly> | undefined = undefined;\n\n /**\n * This constructor should never be called manually. Those instrumenting tracing should use\n * `Sentry.startTransaction()`, and internal methods should use `hub.startTransaction()`.\n * @internal\n * @hideconstructor\n * @hidden\n */\n public constructor(transactionContext: TransactionContext, hub?: Hub) {\n super(transactionContext);\n\n this._hub = hub || getCurrentHub();\n\n this._name = transactionContext.name || '';\n\n this.metadata = {\n source: 'custom',\n ...transactionContext.metadata,\n spanMetadata: {},\n changes: [],\n propagations: 0,\n };\n\n this._trimEnd = transactionContext.trimEnd;\n\n // this is because transactions are also spans, and spans have a transaction pointer\n this.transaction = this;\n\n // If Dynamic Sampling Context is provided during the creation of the transaction, we freeze it as it usually means\n // there is incoming Dynamic Sampling Context. (Either through an incoming request, a baggage meta-tag, or other means)\n const incomingDynamicSamplingContext = this.metadata.dynamicSamplingContext;\n if (incomingDynamicSamplingContext) {\n // We shallow copy this in case anything writes to the original reference of the passed in `dynamicSamplingContext`\n this._frozenDynamicSamplingContext = { ...incomingDynamicSamplingContext };\n }\n }\n\n /** Getter for `name` property */\n public get name(): string {\n return this._name;\n }\n\n /** Setter for `name` property, which also sets `source` as custom */\n public set name(newName: string) {\n this.setName(newName);\n }\n\n /**\n * JSDoc\n */\n public setName(name: string, source: TransactionMetadata['source'] = 'custom'): void {\n // `source` could change without the name changing if we discover that an unparameterized route is actually\n // parameterized by virtue of having no parameters in its path\n if (name !== this.name || source !== this.metadata.source) {\n this.metadata.changes.push({\n // log previous source\n source: this.metadata.source,\n timestamp: timestampInSeconds(),\n propagations: this.metadata.propagations,\n });\n }\n\n this._name = name;\n this.metadata.source = source;\n }\n\n /**\n * Attaches SpanRecorder to the span itself\n * @param maxlen maximum number of spans that can be recorded\n */\n public initSpanRecorder(maxlen: number = 1000): void {\n if (!this.spanRecorder) {\n this.spanRecorder = new SpanRecorder(maxlen);\n }\n this.spanRecorder.add(this);\n }\n\n /**\n * @inheritDoc\n */\n public setContext(key: string, context: Context | null): void {\n if (context === null) {\n // eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n delete this._contexts[key];\n } else {\n this._contexts[key] = context;\n }\n }\n\n /**\n * @inheritDoc\n */\n public setMeasurement(name: string, value: number, unit: MeasurementUnit = ''): void {\n this._measurements[name] = { value, unit };\n }\n\n /**\n * @inheritDoc\n */\n public setMetadata(newMetadata: Partial): void {\n this.metadata = { ...this.metadata, ...newMetadata };\n }\n\n /**\n * @inheritDoc\n */\n public finish(endTimestamp?: number): string | undefined {\n // This transaction is already finished, so we should not flush it again.\n if (this.endTimestamp !== undefined) {\n return undefined;\n }\n\n if (!this.name) {\n __DEBUG_BUILD__ && logger.warn('Transaction has no name, falling back to ``.');\n this.name = '';\n }\n\n // just sets the end timestamp\n super.finish(endTimestamp);\n\n if (this.sampled !== true) {\n // At this point if `sampled !== true` we want to discard the transaction.\n __DEBUG_BUILD__ && logger.log('[Tracing] Discarding transaction because its trace was not chosen to be sampled.');\n\n const client = this._hub.getClient();\n if (client) {\n client.recordDroppedEvent('sample_rate', 'transaction');\n }\n\n return undefined;\n }\n\n const finishedSpans = this.spanRecorder ? this.spanRecorder.spans.filter(s => s !== this && s.endTimestamp) : [];\n\n if (this._trimEnd && finishedSpans.length > 0) {\n this.endTimestamp = finishedSpans.reduce((prev: SpanClass, current: SpanClass) => {\n if (prev.endTimestamp && current.endTimestamp) {\n return prev.endTimestamp > current.endTimestamp ? prev : current;\n }\n return prev;\n }).endTimestamp;\n }\n\n const metadata = this.metadata;\n\n const transaction: Event = {\n contexts: {\n ...this._contexts,\n // We don't want to override trace context\n trace: this.getTraceContext(),\n },\n spans: finishedSpans,\n start_timestamp: this.startTimestamp,\n tags: this.tags,\n timestamp: this.endTimestamp,\n transaction: this.name,\n type: 'transaction',\n sdkProcessingMetadata: {\n ...metadata,\n dynamicSamplingContext: this.getDynamicSamplingContext(),\n },\n ...(metadata.source && {\n transaction_info: {\n source: metadata.source,\n changes: metadata.changes,\n propagations: metadata.propagations,\n },\n }),\n };\n\n const hasMeasurements = Object.keys(this._measurements).length > 0;\n\n if (hasMeasurements) {\n __DEBUG_BUILD__ &&\n logger.log(\n '[Measurements] Adding measurements to transaction',\n JSON.stringify(this._measurements, undefined, 2),\n );\n transaction.measurements = this._measurements;\n }\n\n __DEBUG_BUILD__ && logger.log(`[Tracing] Finishing ${this.op} transaction: ${this.name}.`);\n\n return this._hub.captureEvent(transaction);\n }\n\n /**\n * @inheritDoc\n */\n public toContext(): TransactionContext {\n const spanContext = super.toContext();\n\n return dropUndefinedKeys({\n ...spanContext,\n name: this.name,\n trimEnd: this._trimEnd,\n });\n }\n\n /**\n * @inheritDoc\n */\n public updateWithContext(transactionContext: TransactionContext): this {\n super.updateWithContext(transactionContext);\n\n this.name = transactionContext.name ?? '';\n\n this._trimEnd = transactionContext.trimEnd;\n\n return this;\n }\n\n /**\n * @inheritdoc\n *\n * @experimental\n */\n public getDynamicSamplingContext(): Readonly> {\n if (this._frozenDynamicSamplingContext) {\n return this._frozenDynamicSamplingContext;\n }\n\n const hub: Hub = this._hub || getCurrentHub();\n const client = hub && hub.getClient();\n\n if (!client) return {};\n\n const { environment, release } = client.getOptions() || {};\n const { publicKey: public_key } = client.getDsn() || {};\n\n const maybeSampleRate = this.metadata.sampleRate;\n const sample_rate = maybeSampleRate !== undefined ? maybeSampleRate.toString() : undefined;\n\n const scope = hub.getScope();\n const { segment: user_segment } = (scope && scope.getUser()) || {};\n\n const source = this.metadata.source;\n\n // We don't want to have a transaction name in the DSC if the source is \"url\" because URLs might contain PII\n const transaction = source && source !== 'url' ? this.name : undefined;\n\n const dsc = dropUndefinedKeys({\n environment,\n release,\n transaction,\n user_segment,\n public_key,\n trace_id: this.traceId,\n sample_rate,\n });\n\n // Uncomment if we want to make DSC immutable\n // this._frozenDynamicSamplingContext = dsc;\n\n return dsc;\n }\n}\n","import { getCurrentHub, Hub } from '@sentry/core';\nimport { Options, Transaction } from '@sentry/types';\n\n/**\n * The `extractTraceparentData` function and `TRACEPARENT_REGEXP` constant used\n * to be declared in this file. It was later moved into `@sentry/utils` as part of a\n * move to remove `@sentry/tracing` dependencies from `@sentry/node` (`extractTraceparentData`\n * is the only tracing function used by `@sentry/node`).\n *\n * These exports are kept here for backwards compatability's sake.\n *\n * TODO(v7): Reorganize these exports\n *\n * See https://github.com/getsentry/sentry-javascript/issues/4642 for more details.\n */\nexport { TRACEPARENT_REGEXP, extractTraceparentData } from '@sentry/utils';\n\n/**\n * Determines if tracing is currently enabled.\n *\n * Tracing is enabled when at least one of `tracesSampleRate` and `tracesSampler` is defined in the SDK config.\n */\nexport function hasTracingEnabled(\n maybeOptions?: Pick | undefined,\n): boolean {\n const client = getCurrentHub().getClient();\n const options = maybeOptions || (client && client.getOptions());\n return !!options && ('tracesSampleRate' in options || 'tracesSampler' in options);\n}\n\n/** Grabs active transaction off scope, if any */\nexport function getActiveTransaction(maybeHub?: Hub): T | undefined {\n const hub = maybeHub || getCurrentHub();\n const scope = hub.getScope();\n return scope && (scope.getTransaction() as T | undefined);\n}\n\n/**\n * Converts from milliseconds to seconds\n * @param time time in ms\n */\nexport function msToSec(time: number): number {\n return time / 1000;\n}\n\n/**\n * Converts from seconds to milliseconds\n * @param time time in seconds\n */\nexport function secToMs(time: number): number {\n return time * 1000;\n}\n\n// so it can be used in manual instrumentation without necessitating a hard dependency on @sentry/utils\nexport { stripUrlQueryAndFragment } from '@sentry/utils';\n","import { isString } from './is';\nimport { getGlobalObject } from './worldwide';\n\n// eslint-disable-next-line deprecation/deprecation\nconst WINDOW = getGlobalObject();\n\n/**\n * Given a child DOM element, returns a query-selector statement describing that\n * and its ancestors\n * e.g. [HTMLElement] => body > div > input#foo.btn[name=baz]\n * @returns generated DOM path\n */\nexport function htmlTreeAsString(elem: unknown, keyAttrs?: string[]): string {\n type SimpleNode = {\n parentNode: SimpleNode;\n } | null;\n\n // try/catch both:\n // - accessing event.target (see getsentry/raven-js#838, #768)\n // - `htmlTreeAsString` because it's complex, and just accessing the DOM incorrectly\n // - can throw an exception in some circumstances.\n try {\n let currentElem = elem as SimpleNode;\n const MAX_TRAVERSE_HEIGHT = 5;\n const MAX_OUTPUT_LEN = 80;\n const out = [];\n let height = 0;\n let len = 0;\n const separator = ' > ';\n const sepLength = separator.length;\n let nextStr;\n\n // eslint-disable-next-line no-plusplus\n while (currentElem && height++ < MAX_TRAVERSE_HEIGHT) {\n nextStr = _htmlElementAsString(currentElem, keyAttrs);\n // bail out if\n // - nextStr is the 'html' element\n // - the length of the string that would be created exceeds MAX_OUTPUT_LEN\n // (ignore this limit if we are on the first iteration)\n if (nextStr === 'html' || (height > 1 && len + out.length * sepLength + nextStr.length >= MAX_OUTPUT_LEN)) {\n break;\n }\n\n out.push(nextStr);\n\n len += nextStr.length;\n currentElem = currentElem.parentNode;\n }\n\n return out.reverse().join(separator);\n } catch (_oO) {\n return '';\n }\n}\n\n/**\n * Returns a simple, query-selector representation of a DOM element\n * e.g. [HTMLElement] => input#foo.btn[name=baz]\n * @returns generated DOM path\n */\nfunction _htmlElementAsString(el: unknown, keyAttrs?: string[]): string {\n const elem = el as {\n tagName?: string;\n id?: string;\n className?: string;\n getAttribute(key: string): string;\n };\n\n const out = [];\n let className;\n let classes;\n let key;\n let attr;\n let i;\n\n if (!elem || !elem.tagName) {\n return '';\n }\n\n out.push(elem.tagName.toLowerCase());\n\n // Pairs of attribute keys defined in `serializeAttribute` and their values on element.\n const keyAttrPairs =\n keyAttrs && keyAttrs.length\n ? keyAttrs.filter(keyAttr => elem.getAttribute(keyAttr)).map(keyAttr => [keyAttr, elem.getAttribute(keyAttr)])\n : null;\n\n if (keyAttrPairs && keyAttrPairs.length) {\n keyAttrPairs.forEach(keyAttrPair => {\n out.push(`[${keyAttrPair[0]}=\"${keyAttrPair[1]}\"]`);\n });\n } else {\n if (elem.id) {\n out.push(`#${elem.id}`);\n }\n\n // eslint-disable-next-line prefer-const\n className = elem.className;\n if (className && isString(className)) {\n classes = className.split(/\\s+/);\n for (i = 0; i < classes.length; i++) {\n out.push(`.${classes[i]}`);\n }\n }\n }\n const allowedAttrs = ['type', 'name', 'title', 'alt'];\n for (i = 0; i < allowedAttrs.length; i++) {\n key = allowedAttrs[i];\n attr = elem.getAttribute(key);\n if (attr) {\n out.push(`[${key}=\"${attr}\"]`);\n }\n }\n return out.join('');\n}\n\n/**\n * A safe form of location.href\n */\nexport function getLocationHref(): string {\n try {\n return WINDOW.document.location.href;\n } catch (oO) {\n return '';\n }\n}\n\n/**\n * Gets a DOM element by using document.querySelector.\n *\n * This wrapper will first check for the existance of the function before\n * actually calling it so that we don't have to take care of this check,\n * every time we want to access the DOM.\n *\n * Reason: DOM/querySelector is not available in all environments.\n *\n * We have to cast to any because utils can be consumed by a variety of environments,\n * and we don't want to break TS users. If you know what element will be selected by\n * `document.querySelector`, specify it as part of the generic call. For example,\n * `const element = getDomElement('selector');`\n *\n * @param selector the selector string passed on to document.querySelector\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function getDomElement(selector: string): E | null {\n if (WINDOW.document && WINDOW.document.querySelector) {\n return WINDOW.document.querySelector(selector) as unknown as E;\n }\n return null;\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 */\nexport function _nullishCoalesce(lhs: unknown, rhsFn: () => unknown): unknown {\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","/* eslint-disable max-lines */\n/* eslint-disable @typescript-eslint/no-explicit-any */\n/* eslint-disable @typescript-eslint/ban-types */\nimport { WrappedFunction } from '@sentry/types';\n\nimport { isInstanceOf, isString } from './is';\nimport { CONSOLE_LEVELS, logger } from './logger';\nimport { fill } from './object';\nimport { getFunctionName } from './stacktrace';\nimport { supportsHistory, supportsNativeFetch } from './supports';\nimport { getGlobalObject } from './worldwide';\n\n// eslint-disable-next-line deprecation/deprecation\nconst WINDOW = getGlobalObject();\n\nexport type InstrumentHandlerType =\n | 'console'\n | 'dom'\n | 'fetch'\n | 'history'\n | 'sentry'\n | 'xhr'\n | 'error'\n | 'unhandledrejection';\nexport type InstrumentHandlerCallback = (data: any) => void;\n\n/**\n * Instrument native APIs to call handlers that can be used to create breadcrumbs, APM spans etc.\n * - Console API\n * - Fetch API\n * - XHR API\n * - History API\n * - DOM API (click/typing)\n * - Error API\n * - UnhandledRejection API\n */\n\nconst handlers: { [key in InstrumentHandlerType]?: InstrumentHandlerCallback[] } = {};\nconst instrumented: { [key in InstrumentHandlerType]?: boolean } = {};\n\n/** Instruments given API */\nfunction instrument(type: InstrumentHandlerType): void {\n if (instrumented[type]) {\n return;\n }\n\n instrumented[type] = true;\n\n switch (type) {\n case 'console':\n instrumentConsole();\n break;\n case 'dom':\n instrumentDOM();\n break;\n case 'xhr':\n instrumentXHR();\n break;\n case 'fetch':\n instrumentFetch();\n break;\n case 'history':\n instrumentHistory();\n break;\n case 'error':\n instrumentError();\n break;\n case 'unhandledrejection':\n instrumentUnhandledRejection();\n break;\n default:\n __DEBUG_BUILD__ && logger.warn('unknown instrumentation type:', type);\n return;\n }\n}\n\n/**\n * Add handler that will be called when given type of instrumentation triggers.\n * Use at your own risk, this might break without changelog notice, only used internally.\n * @hidden\n */\nexport function addInstrumentationHandler(type: InstrumentHandlerType, callback: InstrumentHandlerCallback): void {\n handlers[type] = handlers[type] || [];\n (handlers[type] as InstrumentHandlerCallback[]).push(callback);\n instrument(type);\n}\n\n/** JSDoc */\nfunction triggerHandlers(type: InstrumentHandlerType, data: any): void {\n if (!type || !handlers[type]) {\n return;\n }\n\n for (const handler of handlers[type] || []) {\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\n/** JSDoc */\nfunction instrumentConsole(): void {\n if (!('console' in WINDOW)) {\n return;\n }\n\n CONSOLE_LEVELS.forEach(function (level: string): void {\n if (!(level in WINDOW.console)) {\n return;\n }\n\n fill(WINDOW.console, level, function (originalConsoleMethod: () => any): Function {\n return function (...args: any[]): void {\n triggerHandlers('console', { args, level });\n\n // this fails for some browsers. :(\n if (originalConsoleMethod) {\n originalConsoleMethod.apply(WINDOW.console, args);\n }\n };\n });\n });\n}\n\n/** JSDoc */\nfunction instrumentFetch(): void {\n if (!supportsNativeFetch()) {\n return;\n }\n\n fill(WINDOW, 'fetch', function (originalFetch: () => void): () => void {\n return function (...args: any[]): void {\n const handlerData = {\n args,\n fetchData: {\n method: getFetchMethod(args),\n url: getFetchUrl(args),\n },\n startTimestamp: Date.now(),\n };\n\n triggerHandlers('fetch', {\n ...handlerData,\n });\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n return originalFetch.apply(WINDOW, args).then(\n (response: Response) => {\n triggerHandlers('fetch', {\n ...handlerData,\n endTimestamp: Date.now(),\n response,\n });\n return response;\n },\n (error: Error) => {\n triggerHandlers('fetch', {\n ...handlerData,\n endTimestamp: Date.now(),\n error,\n });\n // NOTE: If you are a Sentry user, and you are seeing this stack frame,\n // it means the sentry.javascript SDK caught an error invoking your application code.\n // This is expected behavior and NOT indicative of a bug with sentry.javascript.\n throw error;\n },\n );\n };\n });\n}\n\ntype XHRSendInput = null | Blob | BufferSource | FormData | URLSearchParams | string;\n\n/** JSDoc */\ninterface SentryWrappedXMLHttpRequest extends XMLHttpRequest {\n [key: string]: any;\n __sentry_xhr__?: {\n method?: string;\n url?: string;\n status_code?: number;\n body?: XHRSendInput;\n };\n}\n\n/* eslint-disable @typescript-eslint/no-unsafe-member-access */\n/** Extract `method` from fetch call arguments */\nfunction getFetchMethod(fetchArgs: any[] = []): string {\n if ('Request' in WINDOW && isInstanceOf(fetchArgs[0], Request) && fetchArgs[0].method) {\n return String(fetchArgs[0].method).toUpperCase();\n }\n if (fetchArgs[1] && fetchArgs[1].method) {\n return String(fetchArgs[1].method).toUpperCase();\n }\n return 'GET';\n}\n\n/** Extract `url` from fetch call arguments */\nfunction getFetchUrl(fetchArgs: any[] = []): string {\n if (typeof fetchArgs[0] === 'string') {\n return fetchArgs[0];\n }\n if ('Request' in WINDOW && isInstanceOf(fetchArgs[0], Request)) {\n return fetchArgs[0].url;\n }\n return String(fetchArgs[0]);\n}\n/* eslint-enable @typescript-eslint/no-unsafe-member-access */\n\n/** JSDoc */\nfunction instrumentXHR(): void {\n if (!('XMLHttpRequest' in WINDOW)) {\n return;\n }\n\n const xhrproto = XMLHttpRequest.prototype;\n\n fill(xhrproto, 'open', function (originalOpen: () => void): () => void {\n return function (this: SentryWrappedXMLHttpRequest, ...args: any[]): void {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const xhr = this;\n const url = args[1];\n const xhrInfo: SentryWrappedXMLHttpRequest['__sentry_xhr__'] = (xhr.__sentry_xhr__ = {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n method: isString(args[0]) ? args[0].toUpperCase() : args[0],\n url: args[1],\n });\n\n // if Sentry key appears in URL, don't capture it as a request\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n if (isString(url) && xhrInfo.method === 'POST' && url.match(/sentry_key/)) {\n xhr.__sentry_own_request__ = true;\n }\n\n const onreadystatechangeHandler = function (): void {\n if (xhr.readyState === 4) {\n try {\n // touching statusCode in some platforms throws\n // an exception\n xhrInfo.status_code = xhr.status;\n } catch (e) {\n /* do nothing */\n }\n\n triggerHandlers('xhr', {\n args,\n endTimestamp: Date.now(),\n startTimestamp: Date.now(),\n xhr,\n });\n }\n };\n\n if ('onreadystatechange' in xhr && typeof xhr.onreadystatechange === 'function') {\n fill(xhr, 'onreadystatechange', function (original: WrappedFunction): Function {\n return function (...readyStateArgs: any[]): void {\n onreadystatechangeHandler();\n return original.apply(xhr, readyStateArgs);\n };\n });\n } else {\n xhr.addEventListener('readystatechange', onreadystatechangeHandler);\n }\n\n return originalOpen.apply(xhr, args);\n };\n });\n\n fill(xhrproto, 'send', function (originalSend: () => void): () => void {\n return function (this: SentryWrappedXMLHttpRequest, ...args: any[]): void {\n if (this.__sentry_xhr__ && args[0] !== undefined) {\n this.__sentry_xhr__.body = args[0];\n }\n\n triggerHandlers('xhr', {\n args,\n startTimestamp: Date.now(),\n xhr: this,\n });\n\n return originalSend.apply(this, args);\n };\n });\n}\n\nlet lastHref: string;\n\n/** JSDoc */\nfunction instrumentHistory(): void {\n if (!supportsHistory()) {\n return;\n }\n\n const oldOnPopState = WINDOW.onpopstate;\n WINDOW.onpopstate = function (this: WindowEventHandlers, ...args: any[]): any {\n const to = WINDOW.location.href;\n // keep track of the current URL state, as we always receive only the updated state\n const from = lastHref;\n lastHref = to;\n triggerHandlers('history', {\n from,\n to,\n });\n if (oldOnPopState) {\n // Apparently this can throw in Firefox when incorrectly implemented plugin is installed.\n // https://github.com/getsentry/sentry-javascript/issues/3344\n // https://github.com/bugsnag/bugsnag-js/issues/469\n try {\n return oldOnPopState.apply(this, args);\n } catch (_oO) {\n // no-empty\n }\n }\n };\n\n /** @hidden */\n function historyReplacementFunction(originalHistoryFunction: () => void): () => void {\n return function (this: History, ...args: any[]): void {\n const url = args.length > 2 ? args[2] : undefined;\n if (url) {\n // coerce to string (this is what pushState does)\n const from = lastHref;\n const to = String(url);\n // keep track of the current URL state, as we always receive only the updated state\n lastHref = to;\n triggerHandlers('history', {\n from,\n to,\n });\n }\n return originalHistoryFunction.apply(this, args);\n };\n }\n\n fill(WINDOW.history, 'pushState', historyReplacementFunction);\n fill(WINDOW.history, 'replaceState', historyReplacementFunction);\n}\n\nconst debounceDuration = 1000;\nlet debounceTimerID: number | undefined;\nlet lastCapturedEvent: Event | undefined;\n\n/**\n * Decide whether the current event should finish the debounce of previously captured one.\n * @param previous previously captured event\n * @param current event to be captured\n */\nfunction shouldShortcircuitPreviousDebounce(previous: Event | undefined, current: Event): boolean {\n // If there was no previous event, it should always be swapped for the new one.\n if (!previous) {\n return true;\n }\n\n // If both events have different type, then user definitely performed two separate actions. e.g. click + keypress.\n if (previous.type !== current.type) {\n return true;\n }\n\n try {\n // If both events have the same type, it's still possible that actions were performed on different targets.\n // e.g. 2 clicks on different buttons.\n if (previous.target !== current.target) {\n return true;\n }\n } catch (e) {\n // just accessing `target` property can throw an exception in some rare circumstances\n // see: https://github.com/getsentry/sentry-javascript/issues/838\n }\n\n // If both events have the same type _and_ same `target` (an element which triggered an event, _not necessarily_\n // to which an event listener was attached), we treat them as the same action, as we want to capture\n // only one breadcrumb. e.g. multiple clicks on the same button, or typing inside a user input box.\n return false;\n}\n\n/**\n * Decide whether an event should be captured.\n * @param event event to be captured\n */\nfunction shouldSkipDOMEvent(event: Event): boolean {\n // We are only interested in filtering `keypress` events for now.\n if (event.type !== 'keypress') {\n return false;\n }\n\n try {\n const target = event.target as HTMLElement;\n\n if (!target || !target.tagName) {\n return true;\n }\n\n // Only consider keypress events on actual input elements. This will disregard keypresses targeting body\n // e.g.tabbing through elements, hotkeys, etc.\n if (target.tagName === 'INPUT' || target.tagName === 'TEXTAREA' || target.isContentEditable) {\n return false;\n }\n } catch (e) {\n // just accessing `target` property can throw an exception in some rare circumstances\n // see: https://github.com/getsentry/sentry-javascript/issues/838\n }\n\n return true;\n}\n\n/**\n * Wraps addEventListener to capture UI breadcrumbs\n * @param handler function that will be triggered\n * @param globalListener indicates whether event was captured by the global event listener\n * @returns wrapped breadcrumb events handler\n * @hidden\n */\nfunction makeDOMEventHandler(handler: Function, globalListener: boolean = false): (event: Event) => void {\n return (event: Event): void => {\n // It's possible this handler might trigger multiple times for the same\n // event (e.g. event propagation through node ancestors).\n // Ignore if we've already captured that event.\n if (!event || lastCapturedEvent === event) {\n return;\n }\n\n // We always want to skip _some_ events.\n if (shouldSkipDOMEvent(event)) {\n return;\n }\n\n const name = event.type === 'keypress' ? 'input' : event.type;\n\n // If there is no debounce timer, it means that we can safely capture the new event and store it for future comparisons.\n if (debounceTimerID === undefined) {\n handler({\n event: event,\n name,\n global: globalListener,\n });\n lastCapturedEvent = event;\n }\n // If there is a debounce awaiting, see if the new event is different enough to treat it as a unique one.\n // If that's the case, emit the previous event and store locally the newly-captured DOM event.\n else if (shouldShortcircuitPreviousDebounce(lastCapturedEvent, event)) {\n handler({\n event: event,\n name,\n global: globalListener,\n });\n lastCapturedEvent = event;\n }\n\n // Start a new debounce timer that will prevent us from capturing multiple events that should be grouped together.\n clearTimeout(debounceTimerID);\n debounceTimerID = WINDOW.setTimeout(() => {\n debounceTimerID = undefined;\n }, debounceDuration);\n };\n}\n\ntype AddEventListener = (\n type: string,\n listener: EventListenerOrEventListenerObject,\n options?: boolean | AddEventListenerOptions,\n) => void;\ntype RemoveEventListener = (\n type: string,\n listener: EventListenerOrEventListenerObject,\n options?: boolean | EventListenerOptions,\n) => void;\n\ntype InstrumentedElement = Element & {\n __sentry_instrumentation_handlers__?: {\n [key in 'click' | 'keypress']?: {\n handler?: Function;\n /** The number of custom listeners attached to this element */\n refCount: number;\n };\n };\n};\n\n/** JSDoc */\nfunction instrumentDOM(): void {\n if (!('document' in WINDOW)) {\n return;\n }\n\n // Make it so that any click or keypress that is unhandled / bubbled up all the way to the document triggers our dom\n // handlers. (Normally we have only one, which captures a breadcrumb for each click or keypress.) Do this before\n // we instrument `addEventListener` so that we don't end up attaching this handler twice.\n const triggerDOMHandler = triggerHandlers.bind(null, 'dom');\n const globalDOMEventHandler = makeDOMEventHandler(triggerDOMHandler, true);\n WINDOW.document.addEventListener('click', globalDOMEventHandler, false);\n WINDOW.document.addEventListener('keypress', globalDOMEventHandler, false);\n\n // After hooking into click and keypress events bubbled up to `document`, we also hook into user-handled\n // clicks & keypresses, by adding an event listener of our own to any element to which they add a listener. That\n // way, whenever one of their handlers is triggered, ours will be, too. (This is needed because their handler\n // could potentially prevent the event from bubbling up to our global listeners. This way, our handler are still\n // guaranteed to fire at least once.)\n ['EventTarget', 'Node'].forEach((target: string) => {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n const proto = (WINDOW as any)[target] && (WINDOW as any)[target].prototype;\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access, no-prototype-builtins\n if (!proto || !proto.hasOwnProperty || !proto.hasOwnProperty('addEventListener')) {\n return;\n }\n\n fill(proto, 'addEventListener', function (originalAddEventListener: AddEventListener): AddEventListener {\n return function (\n this: Element,\n type: string,\n listener: EventListenerOrEventListenerObject,\n options?: boolean | AddEventListenerOptions,\n ): AddEventListener {\n if (type === 'click' || type == 'keypress') {\n try {\n const el = this as InstrumentedElement;\n const handlers = (el.__sentry_instrumentation_handlers__ = el.__sentry_instrumentation_handlers__ || {});\n const handlerForType = (handlers[type] = handlers[type] || { refCount: 0 });\n\n if (!handlerForType.handler) {\n const handler = makeDOMEventHandler(triggerDOMHandler);\n handlerForType.handler = handler;\n originalAddEventListener.call(this, type, handler, options);\n }\n\n handlerForType.refCount += 1;\n } catch (e) {\n // Accessing dom properties is always fragile.\n // Also allows us to skip `addEventListenrs` calls with no proper `this` context.\n }\n }\n\n return originalAddEventListener.call(this, type, listener, options);\n };\n });\n\n fill(\n proto,\n 'removeEventListener',\n function (originalRemoveEventListener: RemoveEventListener): RemoveEventListener {\n return function (\n this: Element,\n type: string,\n listener: EventListenerOrEventListenerObject,\n options?: boolean | EventListenerOptions,\n ): () => void {\n if (type === 'click' || type == 'keypress') {\n try {\n const el = this as InstrumentedElement;\n const handlers = el.__sentry_instrumentation_handlers__ || {};\n const handlerForType = handlers[type];\n\n if (handlerForType) {\n handlerForType.refCount -= 1;\n // If there are no longer any custom handlers of the current type on this element, we can remove ours, too.\n if (handlerForType.refCount <= 0) {\n originalRemoveEventListener.call(this, type, handlerForType.handler, options);\n handlerForType.handler = undefined;\n delete handlers[type]; // eslint-disable-line @typescript-eslint/no-dynamic-delete\n }\n\n // If there are no longer any custom handlers of any type on this element, cleanup everything.\n if (Object.keys(handlers).length === 0) {\n delete el.__sentry_instrumentation_handlers__;\n }\n }\n } catch (e) {\n // Accessing dom properties is always fragile.\n // Also allows us to skip `addEventListenrs` calls with no proper `this` context.\n }\n }\n\n return originalRemoveEventListener.call(this, type, listener, options);\n };\n },\n );\n });\n}\n\nlet _oldOnErrorHandler: OnErrorEventHandler = null;\n/** JSDoc */\nfunction instrumentError(): void {\n _oldOnErrorHandler = WINDOW.onerror;\n\n WINDOW.onerror = function (msg: any, url: any, line: any, column: any, error: any): boolean {\n triggerHandlers('error', {\n column,\n error,\n line,\n msg,\n url,\n });\n\n if (_oldOnErrorHandler) {\n // eslint-disable-next-line prefer-rest-params\n return _oldOnErrorHandler.apply(this, arguments);\n }\n\n return false;\n };\n}\n\nlet _oldOnUnhandledRejectionHandler: ((e: any) => void) | null = null;\n/** JSDoc */\nfunction instrumentUnhandledRejection(): void {\n _oldOnUnhandledRejectionHandler = WINDOW.onunhandledrejection;\n\n WINDOW.onunhandledrejection = function (e: any): boolean {\n triggerHandlers('unhandledrejection', e);\n\n if (_oldOnUnhandledRejectionHandler) {\n // eslint-disable-next-line prefer-rest-params\n return _oldOnUnhandledRejectionHandler.apply(this, arguments);\n }\n\n return true;\n };\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\n/* eslint-disable @typescript-eslint/explicit-module-boundary-types */\n\nimport { PolymorphicEvent, Primitive } from '@sentry/types';\n\n// eslint-disable-next-line @typescript-eslint/unbound-method\nconst objectToString = Object.prototype.toString;\n\n/**\n * Checks whether given value's type is one of a few Error or Error-like\n * {@link isError}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isError(wat: unknown): wat is Error {\n switch (objectToString.call(wat)) {\n case '[object Error]':\n case '[object Exception]':\n case '[object DOMException]':\n return true;\n default:\n return isInstanceOf(wat, Error);\n }\n}\n/**\n * Checks whether given value is an instance of the given built-in class.\n *\n * @param wat The value to be checked\n * @param className\n * @returns A boolean representing the result.\n */\nfunction isBuiltin(wat: unknown, className: string): boolean {\n return objectToString.call(wat) === `[object ${className}]`;\n}\n\n/**\n * Checks whether given value's type is ErrorEvent\n * {@link isErrorEvent}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isErrorEvent(wat: unknown): boolean {\n return isBuiltin(wat, 'ErrorEvent');\n}\n\n/**\n * Checks whether given value's type is DOMError\n * {@link isDOMError}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isDOMError(wat: unknown): boolean {\n return isBuiltin(wat, 'DOMError');\n}\n\n/**\n * Checks whether given value's type is DOMException\n * {@link isDOMException}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isDOMException(wat: unknown): boolean {\n return isBuiltin(wat, 'DOMException');\n}\n\n/**\n * Checks whether given value's type is a string\n * {@link isString}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isString(wat: unknown): wat is string {\n return isBuiltin(wat, 'String');\n}\n\n/**\n * Checks whether given value is a primitive (undefined, null, number, boolean, string, bigint, symbol)\n * {@link isPrimitive}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isPrimitive(wat: unknown): wat is Primitive {\n return wat === null || (typeof wat !== 'object' && typeof wat !== 'function');\n}\n\n/**\n * Checks whether given value's type is an object literal\n * {@link isPlainObject}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isPlainObject(wat: unknown): wat is Record {\n return isBuiltin(wat, 'Object');\n}\n\n/**\n * Checks whether given value's type is an Event instance\n * {@link isEvent}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isEvent(wat: unknown): wat is PolymorphicEvent {\n return typeof Event !== 'undefined' && isInstanceOf(wat, Event);\n}\n\n/**\n * Checks whether given value's type is an Element instance\n * {@link isElement}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isElement(wat: unknown): boolean {\n return typeof Element !== 'undefined' && isInstanceOf(wat, Element);\n}\n\n/**\n * Checks whether given value's type is an regexp\n * {@link isRegExp}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isRegExp(wat: unknown): wat is RegExp {\n return isBuiltin(wat, 'RegExp');\n}\n\n/**\n * Checks whether given value has a then function.\n * @param wat A value to be checked.\n */\nexport function isThenable(wat: any): wat is PromiseLike {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n return Boolean(wat && wat.then && typeof wat.then === 'function');\n}\n\n/**\n * Checks whether given value's type is a SyntheticEvent\n * {@link isSyntheticEvent}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isSyntheticEvent(wat: unknown): boolean {\n return isPlainObject(wat) && 'nativeEvent' in wat && 'preventDefault' in wat && 'stopPropagation' in wat;\n}\n\n/**\n * Checks whether given value is NaN\n * {@link isNaN}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isNaN(wat: unknown): boolean {\n return typeof wat === 'number' && wat !== wat;\n}\n\n/**\n * Checks whether given value's type is an instance of provided constructor.\n * {@link isInstanceOf}.\n *\n * @param wat A value to be checked.\n * @param base A constructor to be used in a check.\n * @returns A boolean representing the result.\n */\nexport function isInstanceOf(wat: any, base: any): boolean {\n try {\n return wat instanceof base;\n } catch (_e) {\n return false;\n }\n}\n","import { WrappedFunction } from '@sentry/types';\n\nimport { getGlobalSingleton, GLOBAL_OBJ } from './worldwide';\n\n/** Prefix for logging strings */\nconst PREFIX = 'Sentry Logger ';\n\nexport const CONSOLE_LEVELS = ['debug', 'info', 'warn', 'error', 'log', 'assert', 'trace'] as const;\nexport type ConsoleLevel = typeof CONSOLE_LEVELS[number];\n\ntype LoggerMethod = (...args: unknown[]) => void;\ntype LoggerConsoleMethods = Record;\n\n/** JSDoc */\ninterface Logger extends LoggerConsoleMethods {\n disable(): void;\n enable(): void;\n}\n\n/**\n * Temporarily disable sentry console instrumentations.\n *\n * @param callback The function to run against the original `console` messages\n * @returns The results of the callback\n */\nexport function consoleSandbox(callback: () => T): T {\n if (!('console' in GLOBAL_OBJ)) {\n return callback();\n }\n\n const originalConsole = GLOBAL_OBJ.console as Console & Record;\n const wrappedLevels: Partial = {};\n\n // Restore all wrapped console methods\n CONSOLE_LEVELS.forEach(level => {\n // TODO(v7): Remove this check as it's only needed for Node 6\n const originalWrappedFunc =\n originalConsole[level] && (originalConsole[level] as WrappedFunction).__sentry_original__;\n if (level in originalConsole && originalWrappedFunc) {\n wrappedLevels[level] = originalConsole[level] as LoggerConsoleMethods[typeof level];\n originalConsole[level] = originalWrappedFunc as Console[typeof level];\n }\n });\n\n try {\n return callback();\n } finally {\n // Revert restoration to wrapped state\n Object.keys(wrappedLevels).forEach(level => {\n originalConsole[level] = wrappedLevels[level as typeof CONSOLE_LEVELS[number]];\n });\n }\n}\n\nfunction makeLogger(): Logger {\n let enabled = false;\n const logger: Partial = {\n enable: () => {\n enabled = true;\n },\n disable: () => {\n enabled = false;\n },\n };\n\n if (__DEBUG_BUILD__) {\n CONSOLE_LEVELS.forEach(name => {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n logger[name] = (...args: any[]) => {\n if (enabled) {\n consoleSandbox(() => {\n GLOBAL_OBJ.console[name](`${PREFIX}[${name}]:`, ...args);\n });\n }\n };\n });\n } else {\n CONSOLE_LEVELS.forEach(name => {\n logger[name] = () => undefined;\n });\n }\n\n return logger as Logger;\n}\n\n// Ensure we only have a single logger instance, even if multiple versions of @sentry/utils are being used\nlet logger: Logger;\nif (__DEBUG_BUILD__) {\n logger = getGlobalSingleton('logger', makeLogger);\n} else {\n logger = makeLogger();\n}\n\nexport { logger };\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { Event, Exception, Mechanism, StackFrame } from '@sentry/types';\n\nimport { addNonEnumerableProperty } from './object';\nimport { snipLine } from './string';\nimport { GLOBAL_OBJ } from './worldwide';\n\ninterface CryptoInternal {\n getRandomValues(array: Uint8Array): Uint8Array;\n randomUUID?(): string;\n}\n\n/** An interface for common properties on global */\ninterface CryptoGlobal {\n msCrypto?: CryptoInternal;\n crypto?: CryptoInternal;\n}\n\n/**\n * UUID4 generator\n *\n * @returns string Generated UUID4.\n */\nexport function uuid4(): string {\n const gbl = GLOBAL_OBJ as typeof GLOBAL_OBJ & CryptoGlobal;\n const crypto = gbl.crypto || gbl.msCrypto;\n\n if (crypto && crypto.randomUUID) {\n return crypto.randomUUID().replace(/-/g, '');\n }\n\n const getRandomByte =\n crypto && crypto.getRandomValues ? () => crypto.getRandomValues(new Uint8Array(1))[0] : () => Math.random() * 16;\n\n // http://stackoverflow.com/questions/105034/how-to-create-a-guid-uuid-in-javascript/2117523#2117523\n // Concatenating the following numbers as strings results in '10000000100040008000100000000000'\n return (([1e7] as unknown as string) + 1e3 + 4e3 + 8e3 + 1e11).replace(/[018]/g, c =>\n // eslint-disable-next-line no-bitwise\n ((c as unknown as number) ^ ((getRandomByte() & 15) >> ((c as unknown as number) / 4))).toString(16),\n );\n}\n\nfunction getFirstException(event: Event): Exception | undefined {\n return event.exception && event.exception.values ? event.exception.values[0] : undefined;\n}\n\n/**\n * Extracts either message or type+value from an event that can be used for user-facing logs\n * @returns event's description\n */\nexport function getEventDescription(event: Event): string {\n const { message, event_id: eventId } = event;\n if (message) {\n return message;\n }\n\n const firstException = getFirstException(event);\n if (firstException) {\n if (firstException.type && firstException.value) {\n return `${firstException.type}: ${firstException.value}`;\n }\n return firstException.type || firstException.value || eventId || '';\n }\n return eventId || '';\n}\n\n/**\n * Adds exception values, type and value to an synthetic Exception.\n * @param event The event to modify.\n * @param value Value of the exception.\n * @param type Type of the exception.\n * @hidden\n */\nexport function addExceptionTypeValue(event: Event, value?: string, type?: string): void {\n const exception = (event.exception = event.exception || {});\n const values = (exception.values = exception.values || []);\n const firstException = (values[0] = values[0] || {});\n if (!firstException.value) {\n firstException.value = value || '';\n }\n if (!firstException.type) {\n firstException.type = type || 'Error';\n }\n}\n\n/**\n * Adds exception mechanism data to a given event. Uses defaults if the second parameter is not passed.\n *\n * @param event The event to modify.\n * @param newMechanism Mechanism data to add to the event.\n * @hidden\n */\nexport function addExceptionMechanism(event: Event, newMechanism?: Partial): void {\n const firstException = getFirstException(event);\n if (!firstException) {\n return;\n }\n\n const defaultMechanism = { type: 'generic', handled: true };\n const currentMechanism = firstException.mechanism;\n firstException.mechanism = { ...defaultMechanism, ...currentMechanism, ...newMechanism };\n\n if (newMechanism && 'data' in newMechanism) {\n const mergedData = { ...(currentMechanism && currentMechanism.data), ...newMechanism.data };\n firstException.mechanism.data = mergedData;\n }\n}\n\n// https://semver.org/#is-there-a-suggested-regular-expression-regex-to-check-a-semver-string\nconst SEMVER_REGEXP =\n /^(0|[1-9]\\d*)\\.(0|[1-9]\\d*)\\.(0|[1-9]\\d*)(?:-((?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\\.(?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\\+([0-9a-zA-Z-]+(?:\\.[0-9a-zA-Z-]+)*))?$/;\n\n/**\n * Represents Semantic Versioning object\n */\ninterface SemVer {\n major?: number;\n minor?: number;\n patch?: number;\n prerelease?: string;\n buildmetadata?: string;\n}\n\n/**\n * Parses input into a SemVer interface\n * @param input string representation of a semver version\n */\nexport function parseSemver(input: string): SemVer {\n const match = input.match(SEMVER_REGEXP) || [];\n const major = parseInt(match[1], 10);\n const minor = parseInt(match[2], 10);\n const patch = parseInt(match[3], 10);\n return {\n buildmetadata: match[5],\n major: isNaN(major) ? undefined : major,\n minor: isNaN(minor) ? undefined : minor,\n patch: isNaN(patch) ? undefined : patch,\n prerelease: match[4],\n };\n}\n\n/**\n * This function adds context (pre/post/line) lines to the provided frame\n *\n * @param lines string[] containing all lines\n * @param frame StackFrame that will be mutated\n * @param linesOfContext number of context lines we want to add pre/post\n */\nexport function addContextToFrame(lines: string[], frame: StackFrame, linesOfContext: number = 5): void {\n const lineno = frame.lineno || 0;\n const maxLines = lines.length;\n const sourceLine = Math.max(Math.min(maxLines, lineno - 1), 0);\n\n frame.pre_context = lines\n .slice(Math.max(0, sourceLine - linesOfContext), sourceLine)\n .map((line: string) => snipLine(line, 0));\n\n frame.context_line = snipLine(lines[Math.min(maxLines - 1, sourceLine)], frame.colno || 0);\n\n frame.post_context = lines\n .slice(Math.min(sourceLine + 1, maxLines), sourceLine + 1 + linesOfContext)\n .map((line: string) => snipLine(line, 0));\n}\n\n/**\n * Checks whether or not we've already captured the given exception (note: not an identical exception - the very object\n * in question), and marks it captured if not.\n *\n * This is useful because it's possible for an error to get captured by more than one mechanism. After we intercept and\n * record an error, we rethrow it (assuming we've intercepted it before it's reached the top-level global handlers), so\n * that we don't interfere with whatever effects the error might have had were the SDK not there. At that point, because\n * the error has been rethrown, it's possible for it to bubble up to some other code we've instrumented. If it's not\n * caught after that, it will bubble all the way up to the global handlers (which of course we also instrument). This\n * function helps us ensure that even if we encounter the same error more than once, we only record it the first time we\n * see it.\n *\n * Note: It will ignore primitives (always return `false` and not mark them as seen), as properties can't be set on\n * them. {@link: Object.objectify} can be used on exceptions to convert any that are primitives into their equivalent\n * object wrapper forms so that this check will always work. However, because we need to flag the exact object which\n * will get rethrown, and because that rethrowing happens outside of the event processing pipeline, the objectification\n * must be done before the exception captured.\n *\n * @param A thrown exception to check or flag as having been seen\n * @returns `true` if the exception has already been captured, `false` if not (with the side effect of marking it seen)\n */\nexport function checkOrSetAlreadyCaught(exception: unknown): boolean {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n if (exception && (exception as any).__sentry_captured__) {\n return true;\n }\n\n try {\n // set it this way rather than by assignment so that it's not ennumerable and therefore isn't recorded by the\n // `ExtraErrorData` integration\n addNonEnumerableProperty(exception as { [key: string]: unknown }, '__sentry_captured__', true);\n } catch (err) {\n // `exception` is a primitive, so we can't mark it seen\n }\n\n return false;\n}\n\n/**\n * Checks whether the given input is already an array, and if it isn't, wraps it in one.\n *\n * @param maybeArray Input to turn into an array, if necessary\n * @returns The input, if already an array, or an array with the input as the only element, if not\n */\nexport function arrayify(maybeArray: T | T[]): T[] {\n return Array.isArray(maybeArray) ? maybeArray : [maybeArray];\n}\n","/**\n * NOTE: In order to avoid circular dependencies, if you add a function to this module and it needs to print something,\n * you must either a) use `console.log` rather than the logger, or b) put your function elsewhere.\n */\n\nimport { isBrowserBundle } from './env';\n\n/**\n * Checks whether we're in the Node.js or Browser environment\n *\n * @returns Answer to given question\n */\nexport function isNodeEnv(): boolean {\n // explicitly check for browser bundles as those can be optimized statically\n // by terser/rollup.\n return (\n !isBrowserBundle() &&\n Object.prototype.toString.call(typeof process !== 'undefined' ? process : 0) === '[object process]'\n );\n}\n\n/**\n * Requires a module which is protected against bundler minification.\n *\n * @param request The module path to resolve\n */\n// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types, @typescript-eslint/no-explicit-any\nexport function dynamicRequire(mod: any, request: string): any {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n return mod.require(request);\n}\n\n/**\n * Helper for dynamically loading module that should work with linked dependencies.\n * The problem is that we _should_ be using `require(require.resolve(moduleName, { paths: [cwd()] }))`\n * However it's _not possible_ to do that with Webpack, as it has to know all the dependencies during\n * build time. `require.resolve` is also not available in any other way, so we cannot create,\n * a fake helper like we do with `dynamicRequire`.\n *\n * We always prefer to use local package, thus the value is not returned early from each `try/catch` block.\n * That is to mimic the behavior of `require.resolve` exactly.\n *\n * @param moduleName module name to require\n * @returns possibly required module\n */\nexport function loadModule(moduleName: string): T | undefined {\n let mod: T | undefined;\n\n try {\n mod = dynamicRequire(module, moduleName);\n } catch (e) {\n // no-empty\n }\n\n try {\n const { cwd } = dynamicRequire(module, 'process');\n mod = dynamicRequire(module, `${cwd()}/node_modules/${moduleName}`) as T;\n } catch (e) {\n // no-empty\n }\n\n return mod;\n}\n","/*\n * This module exists for optimizations in the build process through rollup and terser. We define some global\n * constants, which can be overridden during build. By guarding certain pieces of code with functions that return these\n * constants, we can control whether or not they appear in the final bundle. (Any code guarded by a false condition will\n * never run, and will hence be dropped during treeshaking.) The two primary uses for this are stripping out calls to\n * `logger` and preventing node-related code from appearing in browser bundles.\n *\n * Attention:\n * This file should not be used to define constants/flags that are intended to be used for tree-shaking conducted by\n * users. These fags should live in their respective packages, as we identified user tooling (specifically webpack)\n * having issues tree-shaking these constants across package boundaries.\n * An example for this is the __SENTRY_DEBUG__ constant. It is declared in each package individually because we want\n * users to be able to shake away expressions that it guards.\n */\n\ndeclare const __SENTRY_BROWSER_BUNDLE__: boolean | undefined;\n\n/**\n * Figures out if we're building a browser bundle.\n *\n * @returns true if this is a browser bundle build.\n */\nexport function isBrowserBundle(): boolean {\n return typeof __SENTRY_BROWSER_BUNDLE__ !== 'undefined' && !!__SENTRY_BROWSER_BUNDLE__;\n}\n","/* eslint-disable max-lines */\n/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { WrappedFunction } from '@sentry/types';\n\nimport { htmlTreeAsString } from './browser';\nimport { isElement, isError, isEvent, isInstanceOf, isPlainObject, isPrimitive } from './is';\nimport { truncate } from './string';\n\n/**\n * Replace a method in an object with a wrapped version of itself.\n *\n * @param source An object that contains a method to be wrapped.\n * @param name The name of the method to be wrapped.\n * @param replacementFactory A higher-order function that takes the original version of the given method and returns a\n * wrapped version. Note: The function returned by `replacementFactory` needs to be a non-arrow function, in order to\n * preserve the correct value of `this`, and the original method must be called using `origMethod.call(this, )` or `origMethod.apply(this, [])` (rather than being called directly), again to preserve `this`.\n * @returns void\n */\nexport function fill(source: { [key: string]: any }, name: string, replacementFactory: (...args: any[]) => any): void {\n if (!(name in source)) {\n return;\n }\n\n const original = source[name] as () => any;\n const wrapped = replacementFactory(original) as WrappedFunction;\n\n // Make sure it's a function first, as we need to attach an empty prototype for `defineProperties` to work\n // otherwise it'll throw \"TypeError: Object.defineProperties called on non-object\"\n if (typeof wrapped === 'function') {\n try {\n markFunctionWrapped(wrapped, original);\n } catch (_Oo) {\n // This can throw if multiple fill happens on a global object like XMLHttpRequest\n // Fixes https://github.com/getsentry/sentry-javascript/issues/2043\n }\n }\n\n source[name] = wrapped;\n}\n\n/**\n * Defines a non-enumerable property on the given object.\n *\n * @param obj The object on which to set the property\n * @param name The name of the property to be set\n * @param value The value to which to set the property\n */\nexport function addNonEnumerableProperty(obj: { [key: string]: unknown }, name: string, value: unknown): void {\n Object.defineProperty(obj, name, {\n // enumerable: false, // the default, so we can save on bundle size by not explicitly setting it\n value: value,\n writable: true,\n configurable: true,\n });\n}\n\n/**\n * Remembers the original function on the wrapped function and\n * patches up the prototype.\n *\n * @param wrapped the wrapper function\n * @param original the original function that gets wrapped\n */\nexport function markFunctionWrapped(wrapped: WrappedFunction, original: WrappedFunction): void {\n const proto = original.prototype || {};\n wrapped.prototype = original.prototype = proto;\n addNonEnumerableProperty(wrapped, '__sentry_original__', original);\n}\n\n/**\n * This extracts the original function if available. See\n * `markFunctionWrapped` for more information.\n *\n * @param func the function to unwrap\n * @returns the unwrapped version of the function if available.\n */\nexport function getOriginalFunction(func: WrappedFunction): WrappedFunction | undefined {\n return func.__sentry_original__;\n}\n\n/**\n * Encodes given object into url-friendly format\n *\n * @param object An object that contains serializable values\n * @returns string Encoded\n */\nexport function urlEncode(object: { [key: string]: any }): string {\n return Object.keys(object)\n .map(key => `${encodeURIComponent(key)}=${encodeURIComponent(object[key])}`)\n .join('&');\n}\n\n/**\n * Transforms any `Error` or `Event` into a plain object with all of their enumerable properties, and some of their\n * non-enumerable properties attached.\n *\n * @param value Initial source that we have to transform in order for it to be usable by the serializer\n * @returns An Event or Error turned into an object - or the value argurment itself, when value is neither an Event nor\n * an Error.\n */\nexport function convertToPlainObject(\n value: V,\n):\n | {\n [ownProps: string]: unknown;\n type: string;\n target: string;\n currentTarget: string;\n detail?: unknown;\n }\n | {\n [ownProps: string]: unknown;\n message: string;\n name: string;\n stack?: string;\n }\n | V {\n if (isError(value)) {\n return {\n message: value.message,\n name: value.name,\n stack: value.stack,\n ...getOwnProperties(value),\n };\n } else if (isEvent(value)) {\n const newObj: {\n [ownProps: string]: unknown;\n type: string;\n target: string;\n currentTarget: string;\n detail?: unknown;\n } = {\n type: value.type,\n target: serializeEventTarget(value.target),\n currentTarget: serializeEventTarget(value.currentTarget),\n ...getOwnProperties(value),\n };\n\n if (typeof CustomEvent !== 'undefined' && isInstanceOf(value, CustomEvent)) {\n newObj.detail = value.detail;\n }\n\n return newObj;\n } else {\n return value;\n }\n}\n\n/** Creates a string representation of the target of an `Event` object */\nfunction serializeEventTarget(target: unknown): string {\n try {\n return isElement(target) ? htmlTreeAsString(target) : Object.prototype.toString.call(target);\n } catch (_oO) {\n return '';\n }\n}\n\n/** Filters out all but an object's own properties */\nfunction getOwnProperties(obj: unknown): { [key: string]: unknown } {\n if (typeof obj === 'object' && obj !== null) {\n const extractedProps: { [key: string]: unknown } = {};\n for (const property in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, property)) {\n extractedProps[property] = (obj as Record)[property];\n }\n }\n return extractedProps;\n } else {\n return {};\n }\n}\n\n/**\n * Given any captured exception, extract its keys and create a sorted\n * and truncated list that will be used inside the event message.\n * eg. `Non-error exception captured with keys: foo, bar, baz`\n */\nexport function extractExceptionKeysForMessage(exception: Record, maxLength: number = 40): string {\n const keys = Object.keys(convertToPlainObject(exception));\n keys.sort();\n\n if (!keys.length) {\n return '[object has no keys]';\n }\n\n if (keys[0].length >= maxLength) {\n return truncate(keys[0], maxLength);\n }\n\n for (let includedKeys = keys.length; includedKeys > 0; includedKeys--) {\n const serialized = keys.slice(0, includedKeys).join(', ');\n if (serialized.length > maxLength) {\n continue;\n }\n if (includedKeys === keys.length) {\n return serialized;\n }\n return truncate(serialized, maxLength);\n }\n\n return '';\n}\n\n/**\n * Given any object, return a new object having removed all fields whose value was `undefined`.\n * Works recursively on objects and arrays.\n *\n * Attention: This function keeps circular references in the returned object.\n */\nexport function dropUndefinedKeys(inputValue: T): T {\n // This map keeps track of what already visited nodes map to.\n // Our Set - based memoBuilder doesn't work here because we want to the output object to have the same circular\n // references as the input object.\n const memoizationMap = new Map();\n\n // This function just proxies `_dropUndefinedKeys` to keep the `memoBuilder` out of this function's API\n return _dropUndefinedKeys(inputValue, memoizationMap);\n}\n\nfunction _dropUndefinedKeys(inputValue: T, memoizationMap: Map): T {\n if (isPlainObject(inputValue)) {\n // If this node has already been visited due to a circular reference, return the object it was mapped to in the new object\n const memoVal = memoizationMap.get(inputValue);\n if (memoVal !== undefined) {\n return memoVal as T;\n }\n\n const returnValue: { [key: string]: any } = {};\n // Store the mapping of this value in case we visit it again, in case of circular data\n memoizationMap.set(inputValue, returnValue);\n\n for (const key of Object.keys(inputValue)) {\n if (typeof inputValue[key] !== 'undefined') {\n returnValue[key] = _dropUndefinedKeys(inputValue[key], memoizationMap);\n }\n }\n\n return returnValue as T;\n }\n\n if (Array.isArray(inputValue)) {\n // If this node has already been visited due to a circular reference, return the array it was mapped to in the new object\n const memoVal = memoizationMap.get(inputValue);\n if (memoVal !== undefined) {\n return memoVal as T;\n }\n\n const returnValue: unknown[] = [];\n // Store the mapping of this value in case we visit it again, in case of circular data\n memoizationMap.set(inputValue, returnValue);\n\n inputValue.forEach((item: unknown) => {\n returnValue.push(_dropUndefinedKeys(item, memoizationMap));\n });\n\n return returnValue as unknown as T;\n }\n\n return inputValue;\n}\n\n/**\n * Ensure that something is an object.\n *\n * Turns `undefined` and `null` into `String`s and all other primitives into instances of their respective wrapper\n * classes (String, Boolean, Number, etc.). Acts as the identity function on non-primitives.\n *\n * @param wat The subject of the objectification\n * @returns A version of `wat` which can safely be used with `Object` class methods\n */\nexport function objectify(wat: unknown): typeof Object {\n let objectified;\n switch (true) {\n case wat === undefined || wat === null:\n objectified = new String(wat);\n break;\n\n // Though symbols and bigints do have wrapper classes (`Symbol` and `BigInt`, respectively), for whatever reason\n // those classes don't have constructors which can be used with the `new` keyword. We therefore need to cast each as\n // an object in order to wrap it.\n case typeof wat === 'symbol' || typeof wat === 'bigint':\n objectified = Object(wat);\n break;\n\n // this will catch the remaining primitives: `String`, `Number`, and `Boolean`\n case isPrimitive(wat):\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n objectified = new (wat as any).constructor(wat);\n break;\n\n // by process of elimination, at this point we know that `wat` must already be an object\n default:\n objectified = wat;\n break;\n }\n return objectified;\n}\n","import { StackFrame, StackLineParser, StackLineParserFn, StackParser } from '@sentry/types';\n\nconst STACKTRACE_LIMIT = 50;\n\n/**\n * Creates a stack parser with the supplied line parsers\n *\n * StackFrames are returned in the correct order for Sentry Exception\n * frames and with Sentry SDK internal frames removed from the top and bottom\n *\n */\nexport function createStackParser(...parsers: StackLineParser[]): StackParser {\n const sortedParsers = parsers.sort((a, b) => a[0] - b[0]).map(p => p[1]);\n\n return (stack: string, skipFirst: number = 0): StackFrame[] => {\n const frames: StackFrame[] = [];\n\n for (const line of stack.split('\\n').slice(skipFirst)) {\n // https://github.com/getsentry/sentry-javascript/issues/5459\n // Remove webpack (error: *) wrappers\n const cleanedLine = line.replace(/\\(error: (.*)\\)/, '$1');\n\n for (const parser of sortedParsers) {\n const frame = parser(cleanedLine);\n\n if (frame) {\n frames.push(frame);\n break;\n }\n }\n }\n\n return stripSentryFramesAndReverse(frames);\n };\n}\n\n/**\n * Gets a stack parser implementation from Options.stackParser\n * @see Options\n *\n * If options contains an array of line parsers, it is converted into a parser\n */\nexport function stackParserFromStackParserOptions(stackParser: StackParser | StackLineParser[]): StackParser {\n if (Array.isArray(stackParser)) {\n return createStackParser(...stackParser);\n }\n return stackParser;\n}\n\n/**\n * @hidden\n */\nexport function stripSentryFramesAndReverse(stack: StackFrame[]): StackFrame[] {\n if (!stack.length) {\n return [];\n }\n\n let localStack = stack;\n\n const firstFrameFunction = localStack[0].function || '';\n const lastFrameFunction = localStack[localStack.length - 1].function || '';\n\n // If stack starts with one of our API calls, remove it (starts, meaning it's the top of the stack - aka last call)\n if (firstFrameFunction.indexOf('captureMessage') !== -1 || firstFrameFunction.indexOf('captureException') !== -1) {\n localStack = localStack.slice(1);\n }\n\n // If stack ends with one of our internal API calls, remove it (ends, meaning it's the bottom of the stack - aka top-most call)\n if (lastFrameFunction.indexOf('sentryWrapped') !== -1) {\n localStack = localStack.slice(0, -1);\n }\n\n // The frame where the crash happened, should be the last entry in the array\n return localStack\n .slice(0, STACKTRACE_LIMIT)\n .map(frame => ({\n ...frame,\n filename: frame.filename || localStack[0].filename,\n function: frame.function || '?',\n }))\n .reverse();\n}\n\nconst defaultFunctionName = '';\n\n/**\n * Safely extract function name from itself\n */\nexport function getFunctionName(fn: unknown): string {\n try {\n if (!fn || typeof fn !== 'function') {\n return defaultFunctionName;\n }\n return fn.name || defaultFunctionName;\n } catch (e) {\n // Just accessing custom props in some Selenium environments\n // can cause a \"Permission denied\" exception (see raven-js#495).\n return defaultFunctionName;\n }\n}\n\ntype GetModuleFn = (filename: string | undefined) => string | undefined;\n\n// eslint-disable-next-line complexity\nfunction node(getModule?: GetModuleFn): StackLineParserFn {\n const FILENAME_MATCH = /^\\s*[-]{4,}$/;\n const FULL_MATCH = /at (?:async )?(?:(.+?)\\s+\\()?(?:(.+):(\\d+):(\\d+)?|([^)]+))\\)?/;\n\n // eslint-disable-next-line complexity\n return (line: string) => {\n if (line.match(FILENAME_MATCH)) {\n return {\n filename: line,\n };\n }\n\n const lineMatch = line.match(FULL_MATCH);\n if (!lineMatch) {\n return undefined;\n }\n\n let object: string | undefined;\n let method: string | undefined;\n let functionName: string | undefined;\n let typeName: string | undefined;\n let methodName: string | undefined;\n\n if (lineMatch[1]) {\n functionName = lineMatch[1];\n\n let methodStart = functionName.lastIndexOf('.');\n if (functionName[methodStart - 1] === '.') {\n // eslint-disable-next-line no-plusplus\n methodStart--;\n }\n\n if (methodStart > 0) {\n object = functionName.substr(0, methodStart);\n method = functionName.substr(methodStart + 1);\n const objectEnd = object.indexOf('.Module');\n if (objectEnd > 0) {\n functionName = functionName.substr(objectEnd + 1);\n object = object.substr(0, objectEnd);\n }\n }\n typeName = undefined;\n }\n\n if (method) {\n typeName = object;\n methodName = method;\n }\n\n if (method === '') {\n methodName = undefined;\n functionName = undefined;\n }\n\n if (functionName === undefined) {\n methodName = methodName || '';\n functionName = typeName ? `${typeName}.${methodName}` : methodName;\n }\n\n const filename = lineMatch[2]?.startsWith('file://') ? lineMatch[2].substr(7) : lineMatch[2];\n const isNative = lineMatch[5] === 'native';\n const isInternal =\n isNative || (filename && !filename.startsWith('/') && !filename.startsWith('.') && filename.indexOf(':\\\\') !== 1);\n\n // in_app is all that's not an internal Node function or a module within node_modules\n // note that isNative appears to return true even for node core libraries\n // see https://github.com/getsentry/raven-node/issues/176\n const in_app = !isInternal && filename !== undefined && !filename.includes('node_modules/');\n\n return {\n filename,\n module: getModule?.(filename),\n function: functionName,\n lineno: parseInt(lineMatch[3], 10) || undefined,\n colno: parseInt(lineMatch[4], 10) || undefined,\n in_app,\n };\n };\n}\n\n/**\n * Node.js stack line parser\n *\n * This is in @sentry/utils so it can be used from the Electron SDK in the browser for when `nodeIntegration == true`.\n * This allows it to be used without referencing or importing any node specific code which causes bundlers to complain\n */\nexport function nodeStackLineParser(getModule?: GetModuleFn): StackLineParser {\n return [90, node(getModule)];\n}\n","import { isRegExp, isString } from './is';\n\n/**\n * Truncates given string to the maximum characters count\n *\n * @param str An object that contains serializable values\n * @param max Maximum number of characters in truncated string (0 = unlimited)\n * @returns string Encoded\n */\nexport function truncate(str: string, max: number = 0): string {\n if (typeof str !== 'string' || max === 0) {\n return str;\n }\n return str.length <= max ? str : `${str.substr(0, max)}...`;\n}\n\n/**\n * This is basically just `trim_line` from\n * https://github.com/getsentry/sentry/blob/master/src/sentry/lang/javascript/processor.py#L67\n *\n * @param str An object that contains serializable values\n * @param max Maximum number of characters in truncated string\n * @returns string Encoded\n */\nexport function snipLine(line: string, colno: number): string {\n let newLine = line;\n const lineLength = newLine.length;\n if (lineLength <= 150) {\n return newLine;\n }\n if (colno > lineLength) {\n // eslint-disable-next-line no-param-reassign\n colno = lineLength;\n }\n\n let start = Math.max(colno - 60, 0);\n if (start < 5) {\n start = 0;\n }\n\n let end = Math.min(start + 140, lineLength);\n if (end > lineLength - 5) {\n end = lineLength;\n }\n if (end === lineLength) {\n start = Math.max(end - 140, 0);\n }\n\n newLine = newLine.slice(start, end);\n if (start > 0) {\n newLine = `'{snip} ${newLine}`;\n }\n if (end < lineLength) {\n newLine += ' {snip}';\n }\n\n return newLine;\n}\n\n/**\n * Join values in array\n * @param input array of values to be joined together\n * @param delimiter string to be placed in-between values\n * @returns Joined values\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function safeJoin(input: any[], delimiter?: string): string {\n if (!Array.isArray(input)) {\n return '';\n }\n\n const output = [];\n // eslint-disable-next-line @typescript-eslint/prefer-for-of\n for (let i = 0; i < input.length; i++) {\n const value = input[i];\n try {\n output.push(String(value));\n } catch (e) {\n output.push('[value cannot be serialized]');\n }\n }\n\n return output.join(delimiter);\n}\n\n/**\n * Checks if the given value matches a regex or string\n *\n * @param value The string to test\n * @param pattern Either a regex or a string against which `value` will be matched\n * @param requireExactStringMatch If true, `value` must match `pattern` exactly. If false, `value` will match\n * `pattern` if it contains `pattern`. Only applies to string-type patterns.\n */\nexport function isMatchingPattern(\n value: string,\n pattern: RegExp | string,\n requireExactStringMatch: boolean = false,\n): boolean {\n if (!isString(value)) {\n return false;\n }\n\n if (isRegExp(pattern)) {\n return pattern.test(value);\n }\n if (isString(pattern)) {\n return requireExactStringMatch ? value === pattern : value.includes(pattern);\n }\n\n return false;\n}\n\n/**\n * Test the given string against an array of strings and regexes. By default, string matching is done on a\n * substring-inclusion basis rather than a strict equality basis\n *\n * @param testString The string to test\n * @param patterns The patterns against which to test the string\n * @param requireExactStringMatch If true, `testString` must match one of the given string patterns exactly in order to\n * count. If false, `testString` will match a string pattern if it contains that pattern.\n * @returns\n */\nexport function stringMatchesSomePattern(\n testString: string,\n patterns: Array = [],\n requireExactStringMatch: boolean = false,\n): boolean {\n return patterns.some(pattern => isMatchingPattern(testString, pattern, requireExactStringMatch));\n}\n\n/**\n * Given a string, escape characters which have meaning in the regex grammar, such that the result is safe to feed to\n * `new RegExp()`.\n *\n * Based on https://github.com/sindresorhus/escape-string-regexp. Vendored to a) reduce the size by skipping the runtime\n * type-checking, and b) ensure it gets down-compiled for old versions of Node (the published package only supports Node\n * 12+).\n *\n * @param regexString The string to escape\n * @returns An version of the string with all special regex characters escaped\n */\nexport function escapeStringForRegex(regexString: string): string {\n // escape the hyphen separately so we can also replace it with a unicode literal hyphen, to avoid the problems\n // discussed in https://github.com/sindresorhus/escape-string-regexp/issues/20.\n return regexString.replace(/[|\\\\{}()[\\]^$+*?.]/g, '\\\\$&').replace(/-/g, '\\\\x2d');\n}\n","import { logger } from './logger';\nimport { getGlobalObject } from './worldwide';\n\n// eslint-disable-next-line deprecation/deprecation\nconst WINDOW = getGlobalObject();\n\n/**\n * Tells whether current environment supports ErrorEvent objects\n * {@link supportsErrorEvent}.\n *\n * @returns Answer to the given question.\n */\nexport function supportsErrorEvent(): boolean {\n try {\n new ErrorEvent('');\n return true;\n } catch (e) {\n return false;\n }\n}\n\n/**\n * Tells whether current environment supports DOMError objects\n * {@link supportsDOMError}.\n *\n * @returns Answer to the given question.\n */\nexport function supportsDOMError(): boolean {\n try {\n // Chrome: VM89:1 Uncaught TypeError: Failed to construct 'DOMError':\n // 1 argument required, but only 0 present.\n // @ts-ignore It really needs 1 argument, not 0.\n new DOMError('');\n return true;\n } catch (e) {\n return false;\n }\n}\n\n/**\n * Tells whether current environment supports DOMException objects\n * {@link supportsDOMException}.\n *\n * @returns Answer to the given question.\n */\nexport function supportsDOMException(): boolean {\n try {\n new DOMException('');\n return true;\n } catch (e) {\n return false;\n }\n}\n\n/**\n * Tells whether current environment supports Fetch API\n * {@link supportsFetch}.\n *\n * @returns Answer to the given question.\n */\nexport function supportsFetch(): boolean {\n if (!('fetch' in WINDOW)) {\n return false;\n }\n\n try {\n new Headers();\n new Request('http://www.example.com');\n new Response();\n return true;\n } catch (e) {\n return false;\n }\n}\n/**\n * isNativeFetch checks if the given function is a native implementation of fetch()\n */\n// eslint-disable-next-line @typescript-eslint/ban-types\nexport function isNativeFetch(func: Function): boolean {\n return func && /^function fetch\\(\\)\\s+\\{\\s+\\[native code\\]\\s+\\}$/.test(func.toString());\n}\n\n/**\n * Tells whether current environment supports Fetch API natively\n * {@link supportsNativeFetch}.\n *\n * @returns true if `window.fetch` is natively implemented, false otherwise\n */\nexport function supportsNativeFetch(): boolean {\n if (!supportsFetch()) {\n return false;\n }\n\n // Fast path to avoid DOM I/O\n // eslint-disable-next-line @typescript-eslint/unbound-method\n if (isNativeFetch(WINDOW.fetch)) {\n return true;\n }\n\n // window.fetch is implemented, but is polyfilled or already wrapped (e.g: by a chrome extension)\n // so create a \"pure\" iframe to see if that has native fetch\n let result = false;\n const doc = WINDOW.document;\n // eslint-disable-next-line deprecation/deprecation\n if (doc && typeof (doc.createElement as unknown) === 'function') {\n try {\n const sandbox = doc.createElement('iframe');\n sandbox.hidden = true;\n doc.head.appendChild(sandbox);\n if (sandbox.contentWindow && sandbox.contentWindow.fetch) {\n // eslint-disable-next-line @typescript-eslint/unbound-method\n result = isNativeFetch(sandbox.contentWindow.fetch);\n }\n doc.head.removeChild(sandbox);\n } catch (err) {\n __DEBUG_BUILD__ &&\n logger.warn('Could not create sandbox iframe for pure fetch check, bailing to window.fetch: ', err);\n }\n }\n\n return result;\n}\n\n/**\n * Tells whether current environment supports ReportingObserver API\n * {@link supportsReportingObserver}.\n *\n * @returns Answer to the given question.\n */\nexport function supportsReportingObserver(): boolean {\n return 'ReportingObserver' in WINDOW;\n}\n\n/**\n * Tells whether current environment supports Referrer Policy API\n * {@link supportsReferrerPolicy}.\n *\n * @returns Answer to the given question.\n */\nexport function supportsReferrerPolicy(): boolean {\n // Despite all stars in the sky saying that Edge supports old draft syntax, aka 'never', 'always', 'origin' and 'default'\n // (see https://caniuse.com/#feat=referrer-policy),\n // it doesn't. And it throws an exception instead of ignoring this parameter...\n // REF: https://github.com/getsentry/raven-js/issues/1233\n\n if (!supportsFetch()) {\n return false;\n }\n\n try {\n new Request('_', {\n referrerPolicy: 'origin' as ReferrerPolicy,\n });\n return true;\n } catch (e) {\n return false;\n }\n}\n\n/**\n * Tells whether current environment supports History API\n * {@link supportsHistory}.\n *\n * @returns Answer to the given question.\n */\nexport function supportsHistory(): boolean {\n // NOTE: in Chrome App environment, touching history.pushState, *even inside\n // a try/catch block*, will cause Chrome to output an error to console.error\n // borrowed from: https://github.com/angular/angular.js/pull/13945/files\n /* eslint-disable @typescript-eslint/no-unsafe-member-access */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const chrome = (WINDOW as any).chrome;\n const isChromePackagedApp = chrome && chrome.app && chrome.app.runtime;\n /* eslint-enable @typescript-eslint/no-unsafe-member-access */\n const hasHistoryApi = 'history' in WINDOW && !!WINDOW.history.pushState && !!WINDOW.history.replaceState;\n\n return !isChromePackagedApp && hasHistoryApi;\n}\n","/* eslint-disable @typescript-eslint/explicit-function-return-type */\n/* eslint-disable @typescript-eslint/typedef */\n/* eslint-disable @typescript-eslint/explicit-module-boundary-types */\n/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { isThenable } from './is';\n\n/** SyncPromise internal states */\nconst enum States {\n /** Pending */\n PENDING = 0,\n /** Resolved / OK */\n RESOLVED = 1,\n /** Rejected / Error */\n REJECTED = 2,\n}\n\n// Overloads so we can call resolvedSyncPromise without arguments and generic argument\nexport function resolvedSyncPromise(): PromiseLike;\nexport function resolvedSyncPromise(value: T | PromiseLike): PromiseLike;\n\n/**\n * Creates a resolved sync promise.\n *\n * @param value the value to resolve the promise with\n * @returns the resolved sync promise\n */\nexport function resolvedSyncPromise(value?: T | PromiseLike): PromiseLike {\n return new SyncPromise(resolve => {\n resolve(value);\n });\n}\n\n/**\n * Creates a rejected sync promise.\n *\n * @param value the value to reject the promise with\n * @returns the rejected sync promise\n */\nexport function rejectedSyncPromise(reason?: any): PromiseLike {\n return new SyncPromise((_, reject) => {\n reject(reason);\n });\n}\n\n/**\n * Thenable class that behaves like a Promise and follows it's interface\n * but is not async internally\n */\nclass SyncPromise implements PromiseLike {\n private _state: States = States.PENDING;\n private _handlers: Array<[boolean, (value: T) => void, (reason: any) => any]> = [];\n private _value: any;\n\n public constructor(\n executor: (resolve: (value?: T | PromiseLike | null) => void, reject: (reason?: any) => void) => void,\n ) {\n try {\n executor(this._resolve, this._reject);\n } catch (e) {\n this._reject(e);\n }\n }\n\n /** JSDoc */\n public then(\n onfulfilled?: ((value: T) => TResult1 | PromiseLike) | null,\n onrejected?: ((reason: any) => TResult2 | PromiseLike) | null,\n ): PromiseLike {\n return new SyncPromise((resolve, reject) => {\n this._handlers.push([\n false,\n result => {\n if (!onfulfilled) {\n // TODO: ¯\\_(ツ)_/¯\n // TODO: FIXME\n resolve(result as any);\n } else {\n try {\n resolve(onfulfilled(result));\n } catch (e) {\n reject(e);\n }\n }\n },\n reason => {\n if (!onrejected) {\n reject(reason);\n } else {\n try {\n resolve(onrejected(reason));\n } catch (e) {\n reject(e);\n }\n }\n },\n ]);\n this._executeHandlers();\n });\n }\n\n /** JSDoc */\n public catch(\n onrejected?: ((reason: any) => TResult | PromiseLike) | null,\n ): PromiseLike {\n return this.then(val => val, onrejected);\n }\n\n /** JSDoc */\n public finally(onfinally?: (() => void) | null): PromiseLike {\n return new SyncPromise((resolve, reject) => {\n let val: TResult | any;\n let isRejected: boolean;\n\n return this.then(\n value => {\n isRejected = false;\n val = value;\n if (onfinally) {\n onfinally();\n }\n },\n reason => {\n isRejected = true;\n val = reason;\n if (onfinally) {\n onfinally();\n }\n },\n ).then(() => {\n if (isRejected) {\n reject(val);\n return;\n }\n\n resolve(val as unknown as any);\n });\n });\n }\n\n /** JSDoc */\n private readonly _resolve = (value?: T | PromiseLike | null) => {\n this._setResult(States.RESOLVED, value);\n };\n\n /** JSDoc */\n private readonly _reject = (reason?: any) => {\n this._setResult(States.REJECTED, reason);\n };\n\n /** JSDoc */\n private readonly _setResult = (state: States, value?: T | PromiseLike | any) => {\n if (this._state !== States.PENDING) {\n return;\n }\n\n if (isThenable(value)) {\n void (value as PromiseLike).then(this._resolve, this._reject);\n return;\n }\n\n this._state = state;\n this._value = value;\n\n this._executeHandlers();\n };\n\n /** JSDoc */\n private readonly _executeHandlers = () => {\n if (this._state === States.PENDING) {\n return;\n }\n\n const cachedHandlers = this._handlers.slice();\n this._handlers = [];\n\n cachedHandlers.forEach(handler => {\n if (handler[0]) {\n return;\n }\n\n if (this._state === States.RESOLVED) {\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n handler[1](this._value as unknown as any);\n }\n\n if (this._state === States.REJECTED) {\n handler[2](this._value);\n }\n\n handler[0] = true;\n });\n };\n}\n\nexport { SyncPromise };\n","import { dynamicRequire, isNodeEnv } from './node';\nimport { getGlobalObject } from './worldwide';\n\n// eslint-disable-next-line deprecation/deprecation\nconst WINDOW = getGlobalObject();\n\n/**\n * An object that can return the current timestamp in seconds since the UNIX epoch.\n */\ninterface TimestampSource {\n nowSeconds(): number;\n}\n\n/**\n * A TimestampSource implementation for environments that do not support the Performance Web API natively.\n *\n * Note that this TimestampSource does not use a monotonic clock. A call to `nowSeconds` may return a timestamp earlier\n * than a previously returned value. We do not try to emulate a monotonic behavior in order to facilitate debugging. It\n * is more obvious to explain \"why does my span have negative duration\" than \"why my spans have zero duration\".\n */\nconst dateTimestampSource: TimestampSource = {\n nowSeconds: () => Date.now() / 1000,\n};\n\n/**\n * A partial definition of the [Performance Web API]{@link https://developer.mozilla.org/en-US/docs/Web/API/Performance}\n * for accessing a high-resolution monotonic clock.\n */\ninterface Performance {\n /**\n * The millisecond timestamp at which measurement began, measured in Unix time.\n */\n timeOrigin: number;\n /**\n * Returns the current millisecond timestamp, where 0 represents the start of measurement.\n */\n now(): number;\n}\n\n/**\n * Returns a wrapper around the native Performance API browser implementation, or undefined for browsers that do not\n * support the API.\n *\n * Wrapping the native API works around differences in behavior from different browsers.\n */\nfunction getBrowserPerformance(): Performance | undefined {\n const { performance } = WINDOW;\n if (!performance || !performance.now) {\n return undefined;\n }\n\n // Replace performance.timeOrigin with our own timeOrigin based on Date.now().\n //\n // This is a partial workaround for browsers reporting performance.timeOrigin such that performance.timeOrigin +\n // performance.now() gives a date arbitrarily in the past.\n //\n // Additionally, computing timeOrigin in this way fills the gap for browsers where performance.timeOrigin is\n // undefined.\n //\n // The assumption that performance.timeOrigin + performance.now() ~= Date.now() is flawed, but we depend on it to\n // interact with data coming out of performance entries.\n //\n // Note that despite recommendations against it in the spec, browsers implement the Performance API with a clock that\n // might stop when the computer is asleep (and perhaps under other circumstances). Such behavior causes\n // performance.timeOrigin + performance.now() to have an arbitrary skew over Date.now(). In laptop computers, we have\n // observed skews that can be as long as days, weeks or months.\n //\n // See https://github.com/getsentry/sentry-javascript/issues/2590.\n //\n // BUG: despite our best intentions, this workaround has its limitations. It mostly addresses timings of pageload\n // transactions, but ignores the skew built up over time that can aversely affect timestamps of navigation\n // transactions of long-lived web pages.\n const timeOrigin = Date.now() - performance.now();\n\n return {\n now: () => performance.now(),\n timeOrigin,\n };\n}\n\n/**\n * Returns the native Performance API implementation from Node.js. Returns undefined in old Node.js versions that don't\n * implement the API.\n */\nfunction getNodePerformance(): Performance | undefined {\n try {\n const perfHooks = dynamicRequire(module, 'perf_hooks') as { performance: Performance };\n return perfHooks.performance;\n } catch (_) {\n return undefined;\n }\n}\n\n/**\n * The Performance API implementation for the current platform, if available.\n */\nconst platformPerformance: Performance | undefined = isNodeEnv() ? getNodePerformance() : getBrowserPerformance();\n\nconst timestampSource: TimestampSource =\n platformPerformance === undefined\n ? dateTimestampSource\n : {\n nowSeconds: () => (platformPerformance.timeOrigin + platformPerformance.now()) / 1000,\n };\n\n/**\n * Returns a timestamp in seconds since the UNIX epoch using the Date API.\n */\nexport const dateTimestampInSeconds: () => number = dateTimestampSource.nowSeconds.bind(dateTimestampSource);\n\n/**\n * Returns a timestamp in seconds since the UNIX epoch using either the Performance or Date APIs, depending on the\n * availability of the Performance API.\n *\n * See `usingPerformanceAPI` to test whether the Performance API is used.\n *\n * BUG: Note that because of how browsers implement the Performance API, the clock might stop when the computer is\n * asleep. This creates a skew between `dateTimestampInSeconds` and `timestampInSeconds`. The\n * skew can grow to arbitrary amounts like days, weeks or months.\n * See https://github.com/getsentry/sentry-javascript/issues/2590.\n */\nexport const timestampInSeconds: () => number = timestampSource.nowSeconds.bind(timestampSource);\n\n// Re-exported with an old name for backwards-compatibility.\nexport const timestampWithMs = timestampInSeconds;\n\n/**\n * A boolean that is true when timestampInSeconds uses the Performance API to produce monotonic timestamps.\n */\nexport const usingPerformanceAPI = platformPerformance !== undefined;\n\n/**\n * Internal helper to store what is the source of browserPerformanceTimeOrigin below. For debugging only.\n */\nexport let _browserPerformanceTimeOriginMode: string;\n\n/**\n * The number of milliseconds since the UNIX epoch. This value is only usable in a browser, and only when the\n * performance API is available.\n */\nexport const browserPerformanceTimeOrigin = ((): number | undefined => {\n // Unfortunately browsers may report an inaccurate time origin data, through either performance.timeOrigin or\n // performance.timing.navigationStart, which results in poor results in performance data. We only treat time origin\n // data as reliable if they are within a reasonable threshold of the current time.\n\n const { performance } = WINDOW;\n if (!performance || !performance.now) {\n _browserPerformanceTimeOriginMode = 'none';\n return undefined;\n }\n\n const threshold = 3600 * 1000;\n const performanceNow = performance.now();\n const dateNow = Date.now();\n\n // if timeOrigin isn't available set delta to threshold so it isn't used\n const timeOriginDelta = performance.timeOrigin\n ? Math.abs(performance.timeOrigin + performanceNow - dateNow)\n : threshold;\n const timeOriginIsReliable = timeOriginDelta < threshold;\n\n // While performance.timing.navigationStart is deprecated in favor of performance.timeOrigin, performance.timeOrigin\n // is not as widely supported. Namely, performance.timeOrigin is undefined in Safari as of writing.\n // Also as of writing, performance.timing is not available in Web Workers in mainstream browsers, so it is not always\n // a valid fallback. In the absence of an initial time provided by the browser, fallback to the current time from the\n // Date API.\n // eslint-disable-next-line deprecation/deprecation\n const navigationStart = performance.timing && performance.timing.navigationStart;\n const hasNavigationStart = typeof navigationStart === 'number';\n // if navigationStart isn't available set delta to threshold so it isn't used\n const navigationStartDelta = hasNavigationStart ? Math.abs(navigationStart + performanceNow - dateNow) : threshold;\n const navigationStartIsReliable = navigationStartDelta < threshold;\n\n if (timeOriginIsReliable || navigationStartIsReliable) {\n // Use the more reliable time origin\n if (timeOriginDelta <= navigationStartDelta) {\n _browserPerformanceTimeOriginMode = 'timeOrigin';\n return performance.timeOrigin;\n } else {\n _browserPerformanceTimeOriginMode = 'navigationStart';\n return navigationStart;\n }\n }\n\n // Either both timeOrigin and navigationStart are skewed or neither is available, fallback to Date.\n _browserPerformanceTimeOriginMode = 'dateNow';\n return dateNow;\n})();\n","/**\n * NOTE: In order to avoid circular dependencies, if you add a function to this module and it needs to print something,\n * you must either a) use `console.log` rather than the logger, or b) put your function elsewhere.\n *\n * Note: This file was originally called `global.ts`, but was changed to unblock users which might be doing\n * string replaces with bundlers like Vite for `global` (would break imports that rely on importing from utils/src/global).\n *\n * Why worldwide?\n *\n * Why not?\n */\n\n/* eslint-disable @typescript-eslint/no-explicit-any */\n\nimport { Integration } from '@sentry/types';\n\n/** Internal global with common properties and Sentry extensions */\nexport interface InternalGlobal {\n navigator?: { userAgent?: string };\n console: Console;\n Sentry?: {\n Integrations?: Integration[];\n };\n SENTRY_ENVIRONMENT?: string;\n SENTRY_DSN?: string;\n SENTRY_RELEASE?: {\n id?: string;\n };\n __SENTRY__: {\n globalEventProcessors: any;\n hub: any;\n logger: any;\n extensions?: {\n /** Extension methods for the hub, which are bound to the current Hub instance */\n // eslint-disable-next-line @typescript-eslint/ban-types\n [key: string]: Function;\n };\n };\n}\n\n// The code below for 'isGlobalObj' and 'GLOBAL_OBJ' was copied from core-js before modification\n// https://github.com/zloirock/core-js/blob/1b944df55282cdc99c90db5f49eb0b6eda2cc0a3/packages/core-js/internals/global.js\n// core-js has the following licence:\n//\n// Copyright (c) 2014-2022 Denis Pushkarev\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\n// all 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\n// THE SOFTWARE.\n\n/** Returns 'obj' if it's the global object, otherwise returns undefined */\nfunction isGlobalObj(obj: { Math?: Math }): any | undefined {\n return obj && obj.Math == Math ? obj : undefined;\n}\n\n/** Get's the global object for the current JavaScript runtime */\nexport const GLOBAL_OBJ: InternalGlobal =\n (typeof globalThis == 'object' && isGlobalObj(globalThis)) ||\n // eslint-disable-next-line no-restricted-globals\n (typeof window == 'object' && isGlobalObj(window)) ||\n (typeof self == 'object' && isGlobalObj(self)) ||\n (typeof global == 'object' && isGlobalObj(global)) ||\n (function (this: any) {\n return this;\n })() ||\n {};\n\n/**\n * @deprecated Use GLOBAL_OBJ instead or WINDOW from @sentry/browser. This will be removed in v8\n */\nexport function getGlobalObject(): T & InternalGlobal {\n return GLOBAL_OBJ as T & InternalGlobal;\n}\n\n/**\n * Returns a global singleton contained in the global `__SENTRY__` object.\n *\n * If the singleton doesn't already exist in `__SENTRY__`, it will be created using the given factory\n * function and added to the `__SENTRY__` object.\n *\n * @param name name of the global singleton on __SENTRY__\n * @param creator creator Factory function to create the singleton if it doesn't already exist on `__SENTRY__`\n * @param obj (Optional) The global object on which to look for `__SENTRY__`, if not `GLOBAL_OBJ`'s return value\n * @returns the singleton\n */\nexport function getGlobalSingleton(name: keyof InternalGlobal['__SENTRY__'], creator: () => T, obj?: unknown): T {\n const gbl = (obj || GLOBAL_OBJ) as InternalGlobal;\n const __SENTRY__ = (gbl.__SENTRY__ = gbl.__SENTRY__ || {});\n const singleton = __SENTRY__[name] || (__SENTRY__[name] = creator());\n return singleton;\n}\n","'use strict';\nvar token = '%[a-f0-9]{2}';\nvar singleMatcher = new RegExp('(' + token + ')|([^%]+?)', 'gi');\nvar multiMatcher = new RegExp('(' + token + ')+', 'gi');\n\nfunction decodeComponents(components, split) {\n\ttry {\n\t\t// Try to decode the entire string first\n\t\treturn [decodeURIComponent(components.join(''))];\n\t} catch (err) {\n\t\t// Do nothing\n\t}\n\n\tif (components.length === 1) {\n\t\treturn components;\n\t}\n\n\tsplit = split || 1;\n\n\t// Split the array in 2 parts\n\tvar left = components.slice(0, split);\n\tvar right = components.slice(split);\n\n\treturn Array.prototype.concat.call([], decodeComponents(left), decodeComponents(right));\n}\n\nfunction decode(input) {\n\ttry {\n\t\treturn decodeURIComponent(input);\n\t} catch (err) {\n\t\tvar tokens = input.match(singleMatcher) || [];\n\n\t\tfor (var i = 1; i < tokens.length; i++) {\n\t\t\tinput = decodeComponents(tokens, i).join('');\n\n\t\t\ttokens = input.match(singleMatcher) || [];\n\t\t}\n\n\t\treturn input;\n\t}\n}\n\nfunction customDecodeURIComponent(input) {\n\t// Keep track of all the replacements and prefill the map with the `BOM`\n\tvar replaceMap = {\n\t\t'%FE%FF': '\\uFFFD\\uFFFD',\n\t\t'%FF%FE': '\\uFFFD\\uFFFD'\n\t};\n\n\tvar match = multiMatcher.exec(input);\n\twhile (match) {\n\t\ttry {\n\t\t\t// Decode as big chunks as possible\n\t\t\treplaceMap[match[0]] = decodeURIComponent(match[0]);\n\t\t} catch (err) {\n\t\t\tvar result = decode(match[0]);\n\n\t\t\tif (result !== match[0]) {\n\t\t\t\treplaceMap[match[0]] = result;\n\t\t\t}\n\t\t}\n\n\t\tmatch = multiMatcher.exec(input);\n\t}\n\n\t// Add `%C2` at the end of the map to make sure it does not replace the combinator before everything else\n\treplaceMap['%C2'] = '\\uFFFD';\n\n\tvar entries = Object.keys(replaceMap);\n\n\tfor (var i = 0; i < entries.length; i++) {\n\t\t// Replace all decoded components\n\t\tvar key = entries[i];\n\t\tinput = input.replace(new RegExp(key, 'g'), replaceMap[key]);\n\t}\n\n\treturn input;\n}\n\nmodule.exports = function (encodedURI) {\n\tif (typeof encodedURI !== 'string') {\n\t\tthrow new TypeError('Expected `encodedURI` to be of type `string`, got `' + typeof encodedURI + '`');\n\t}\n\n\ttry {\n\t\tencodedURI = encodedURI.replace(/\\+/g, ' ');\n\n\t\t// Try the built in decoder first\n\t\treturn decodeURIComponent(encodedURI);\n\t} catch (err) {\n\t\t// Fallback to a more advanced decoder\n\t\treturn customDecodeURIComponent(encodedURI);\n\t}\n};\n","// @flow\n'use strict';\n\nvar key = '__global_unique_id__';\n\nmodule.exports = function() {\n return global[key] = (global[key] || 0) + 1;\n};\n","function isAbsolute(pathname) {\n return pathname.charAt(0) === '/';\n}\n\n// About 1.5x faster than the two-arg version of Array#splice()\nfunction spliceOne(list, index) {\n for (var i = index, k = i + 1, n = list.length; k < n; i += 1, k += 1) {\n list[i] = list[k];\n }\n\n list.pop();\n}\n\n// This implementation is based heavily on node's url.parse\nfunction resolvePathname(to, from) {\n if (from === undefined) from = '';\n\n var toParts = (to && to.split('/')) || [];\n var fromParts = (from && from.split('/')) || [];\n\n var isToAbs = to && isAbsolute(to);\n var isFromAbs = from && isAbsolute(from);\n var mustEndAbs = isToAbs || isFromAbs;\n\n if (to && isAbsolute(to)) {\n // to is absolute\n fromParts = toParts;\n } else if (toParts.length) {\n // to is relative, drop the filename\n fromParts.pop();\n fromParts = fromParts.concat(toParts);\n }\n\n if (!fromParts.length) return '/';\n\n var hasTrailingSlash;\n if (fromParts.length) {\n var last = fromParts[fromParts.length - 1];\n hasTrailingSlash = last === '.' || last === '..' || last === '';\n } else {\n hasTrailingSlash = false;\n }\n\n var up = 0;\n for (var i = fromParts.length; i >= 0; i--) {\n var part = fromParts[i];\n\n if (part === '.') {\n spliceOne(fromParts, i);\n } else if (part === '..') {\n spliceOne(fromParts, i);\n up++;\n } else if (up) {\n spliceOne(fromParts, i);\n up--;\n }\n }\n\n if (!mustEndAbs) for (; up--; up) fromParts.unshift('..');\n\n if (\n mustEndAbs &&\n fromParts[0] !== '' &&\n (!fromParts[0] || !isAbsolute(fromParts[0]))\n )\n fromParts.unshift('');\n\n var result = fromParts.join('/');\n\n if (hasTrailingSlash && result.substr(-1) !== '/') result += '/';\n\n return result;\n}\n\nexport default resolvePathname;\n","function valueOf(obj) {\n return obj.valueOf ? obj.valueOf() : Object.prototype.valueOf.call(obj);\n}\n\nfunction valueEqual(a, b) {\n // Test for strict equality first.\n if (a === b) return true;\n\n // Otherwise, if either of them == null they are not equal.\n if (a == null || b == null) return false;\n\n if (Array.isArray(a)) {\n return (\n Array.isArray(b) &&\n a.length === b.length &&\n a.every(function(item, index) {\n return valueEqual(item, b[index]);\n })\n );\n }\n\n if (typeof a === 'object' || typeof b === 'object') {\n var aValue = valueOf(a);\n var bValue = valueOf(b);\n\n if (aValue !== a || bValue !== b) return valueEqual(aValue, bValue);\n\n return Object.keys(Object.assign({}, a, b)).every(function(key) {\n return valueEqual(a[key], b[key]);\n });\n }\n\n return false;\n}\n\nexport default valueEqual;\n","import _extends from '@babel/runtime/helpers/esm/extends';\nimport resolvePathname from 'resolve-pathname';\nimport valueEqual from 'value-equal';\nimport warning from 'tiny-warning';\nimport invariant from 'tiny-invariant';\n\nfunction addLeadingSlash(path) {\n return path.charAt(0) === '/' ? path : '/' + path;\n}\nfunction stripLeadingSlash(path) {\n return path.charAt(0) === '/' ? path.substr(1) : path;\n}\nfunction hasBasename(path, prefix) {\n return path.toLowerCase().indexOf(prefix.toLowerCase()) === 0 && '/?#'.indexOf(path.charAt(prefix.length)) !== -1;\n}\nfunction stripBasename(path, prefix) {\n return hasBasename(path, prefix) ? path.substr(prefix.length) : path;\n}\nfunction stripTrailingSlash(path) {\n return path.charAt(path.length - 1) === '/' ? path.slice(0, -1) : path;\n}\nfunction parsePath(path) {\n var pathname = path || '/';\n var search = '';\n var hash = '';\n var hashIndex = pathname.indexOf('#');\n\n if (hashIndex !== -1) {\n hash = pathname.substr(hashIndex);\n pathname = pathname.substr(0, hashIndex);\n }\n\n var searchIndex = pathname.indexOf('?');\n\n if (searchIndex !== -1) {\n search = pathname.substr(searchIndex);\n pathname = pathname.substr(0, searchIndex);\n }\n\n return {\n pathname: pathname,\n search: search === '?' ? '' : search,\n hash: hash === '#' ? '' : hash\n };\n}\nfunction createPath(location) {\n var pathname = location.pathname,\n search = location.search,\n hash = location.hash;\n var path = pathname || '/';\n if (search && search !== '?') path += search.charAt(0) === '?' ? search : \"?\" + search;\n if (hash && hash !== '#') path += hash.charAt(0) === '#' ? hash : \"#\" + hash;\n return path;\n}\n\nfunction createLocation(path, state, key, currentLocation) {\n var location;\n\n if (typeof path === 'string') {\n // Two-arg form: push(path, state)\n location = parsePath(path);\n location.state = state;\n } else {\n // One-arg form: push(location)\n location = _extends({}, path);\n if (location.pathname === undefined) location.pathname = '';\n\n if (location.search) {\n if (location.search.charAt(0) !== '?') location.search = '?' + location.search;\n } else {\n location.search = '';\n }\n\n if (location.hash) {\n if (location.hash.charAt(0) !== '#') location.hash = '#' + location.hash;\n } else {\n location.hash = '';\n }\n\n if (state !== undefined && location.state === undefined) location.state = state;\n }\n\n try {\n location.pathname = decodeURI(location.pathname);\n } catch (e) {\n if (e instanceof URIError) {\n throw new URIError('Pathname \"' + location.pathname + '\" could not be decoded. ' + 'This is likely caused by an invalid percent-encoding.');\n } else {\n throw e;\n }\n }\n\n if (key) location.key = key;\n\n if (currentLocation) {\n // Resolve incomplete/relative pathname relative to current location.\n if (!location.pathname) {\n location.pathname = currentLocation.pathname;\n } else if (location.pathname.charAt(0) !== '/') {\n location.pathname = resolvePathname(location.pathname, currentLocation.pathname);\n }\n } else {\n // When there is no prior location and pathname is empty, set it to /\n if (!location.pathname) {\n location.pathname = '/';\n }\n }\n\n return location;\n}\nfunction locationsAreEqual(a, b) {\n return a.pathname === b.pathname && a.search === b.search && a.hash === b.hash && a.key === b.key && valueEqual(a.state, b.state);\n}\n\nfunction createTransitionManager() {\n var prompt = null;\n\n function setPrompt(nextPrompt) {\n process.env.NODE_ENV !== \"production\" ? warning(prompt == null, 'A history supports only one prompt at a time') : void 0;\n prompt = nextPrompt;\n return function () {\n if (prompt === nextPrompt) prompt = null;\n };\n }\n\n function confirmTransitionTo(location, action, getUserConfirmation, callback) {\n // TODO: If another transition starts while we're still confirming\n // the previous one, we may end up in a weird state. Figure out the\n // best way to handle this.\n if (prompt != null) {\n var result = typeof prompt === 'function' ? prompt(location, action) : prompt;\n\n if (typeof result === 'string') {\n if (typeof getUserConfirmation === 'function') {\n getUserConfirmation(result, callback);\n } else {\n process.env.NODE_ENV !== \"production\" ? warning(false, 'A history needs a getUserConfirmation function in order to use a prompt message') : void 0;\n callback(true);\n }\n } else {\n // Return false from a transition hook to cancel the transition.\n callback(result !== false);\n }\n } else {\n callback(true);\n }\n }\n\n var listeners = [];\n\n function appendListener(fn) {\n var isActive = true;\n\n function listener() {\n if (isActive) fn.apply(void 0, arguments);\n }\n\n listeners.push(listener);\n return function () {\n isActive = false;\n listeners = listeners.filter(function (item) {\n return item !== listener;\n });\n };\n }\n\n function notifyListeners() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n listeners.forEach(function (listener) {\n return listener.apply(void 0, args);\n });\n }\n\n return {\n setPrompt: setPrompt,\n confirmTransitionTo: confirmTransitionTo,\n appendListener: appendListener,\n notifyListeners: notifyListeners\n };\n}\n\nvar canUseDOM = !!(typeof window !== 'undefined' && window.document && window.document.createElement);\nfunction getConfirmation(message, callback) {\n callback(window.confirm(message)); // eslint-disable-line no-alert\n}\n/**\n * Returns true if the HTML5 history API is supported. Taken from Modernizr.\n *\n * https://github.com/Modernizr/Modernizr/blob/master/LICENSE\n * https://github.com/Modernizr/Modernizr/blob/master/feature-detects/history.js\n * changed to avoid false negatives for Windows Phones: https://github.com/reactjs/react-router/issues/586\n */\n\nfunction supportsHistory() {\n var ua = window.navigator.userAgent;\n if ((ua.indexOf('Android 2.') !== -1 || ua.indexOf('Android 4.0') !== -1) && ua.indexOf('Mobile Safari') !== -1 && ua.indexOf('Chrome') === -1 && ua.indexOf('Windows Phone') === -1) return false;\n return window.history && 'pushState' in window.history;\n}\n/**\n * Returns true if browser fires popstate on hash change.\n * IE10 and IE11 do not.\n */\n\nfunction supportsPopStateOnHashChange() {\n return window.navigator.userAgent.indexOf('Trident') === -1;\n}\n/**\n * Returns false if using go(n) with hash history causes a full page reload.\n */\n\nfunction supportsGoWithoutReloadUsingHash() {\n return window.navigator.userAgent.indexOf('Firefox') === -1;\n}\n/**\n * Returns true if a given popstate event is an extraneous WebKit event.\n * Accounts for the fact that Chrome on iOS fires real popstate events\n * containing undefined state when pressing the back button.\n */\n\nfunction isExtraneousPopstateEvent(event) {\n return event.state === undefined && navigator.userAgent.indexOf('CriOS') === -1;\n}\n\nvar PopStateEvent = 'popstate';\nvar HashChangeEvent = 'hashchange';\n\nfunction getHistoryState() {\n try {\n return window.history.state || {};\n } catch (e) {\n // IE 11 sometimes throws when accessing window.history.state\n // See https://github.com/ReactTraining/history/pull/289\n return {};\n }\n}\n/**\n * Creates a history object that uses the HTML5 history API including\n * pushState, replaceState, and the popstate event.\n */\n\n\nfunction createBrowserHistory(props) {\n if (props === void 0) {\n props = {};\n }\n\n !canUseDOM ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Browser history needs a DOM') : invariant(false) : void 0;\n var globalHistory = window.history;\n var canUseHistory = supportsHistory();\n var needsHashChangeListener = !supportsPopStateOnHashChange();\n var _props = props,\n _props$forceRefresh = _props.forceRefresh,\n forceRefresh = _props$forceRefresh === void 0 ? false : _props$forceRefresh,\n _props$getUserConfirm = _props.getUserConfirmation,\n getUserConfirmation = _props$getUserConfirm === void 0 ? getConfirmation : _props$getUserConfirm,\n _props$keyLength = _props.keyLength,\n keyLength = _props$keyLength === void 0 ? 6 : _props$keyLength;\n var basename = props.basename ? stripTrailingSlash(addLeadingSlash(props.basename)) : '';\n\n function getDOMLocation(historyState) {\n var _ref = historyState || {},\n key = _ref.key,\n state = _ref.state;\n\n var _window$location = window.location,\n pathname = _window$location.pathname,\n search = _window$location.search,\n hash = _window$location.hash;\n var path = pathname + search + hash;\n process.env.NODE_ENV !== \"production\" ? warning(!basename || hasBasename(path, basename), 'You are attempting to use a basename on a page whose URL path does not begin ' + 'with the basename. Expected path \"' + path + '\" to begin with \"' + basename + '\".') : void 0;\n if (basename) path = stripBasename(path, basename);\n return createLocation(path, state, key);\n }\n\n function createKey() {\n return Math.random().toString(36).substr(2, keyLength);\n }\n\n var transitionManager = createTransitionManager();\n\n function setState(nextState) {\n _extends(history, nextState);\n\n history.length = globalHistory.length;\n transitionManager.notifyListeners(history.location, history.action);\n }\n\n function handlePopState(event) {\n // Ignore extraneous popstate events in WebKit.\n if (isExtraneousPopstateEvent(event)) return;\n handlePop(getDOMLocation(event.state));\n }\n\n function handleHashChange() {\n handlePop(getDOMLocation(getHistoryState()));\n }\n\n var forceNextPop = false;\n\n function handlePop(location) {\n if (forceNextPop) {\n forceNextPop = false;\n setState();\n } else {\n var action = 'POP';\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (ok) {\n setState({\n action: action,\n location: location\n });\n } else {\n revertPop(location);\n }\n });\n }\n }\n\n function revertPop(fromLocation) {\n var toLocation = history.location; // TODO: We could probably make this more reliable by\n // keeping a list of keys we've seen in sessionStorage.\n // Instead, we just default to 0 for keys we don't know.\n\n var toIndex = allKeys.indexOf(toLocation.key);\n if (toIndex === -1) toIndex = 0;\n var fromIndex = allKeys.indexOf(fromLocation.key);\n if (fromIndex === -1) fromIndex = 0;\n var delta = toIndex - fromIndex;\n\n if (delta) {\n forceNextPop = true;\n go(delta);\n }\n }\n\n var initialLocation = getDOMLocation(getHistoryState());\n var allKeys = [initialLocation.key]; // Public interface\n\n function createHref(location) {\n return basename + createPath(location);\n }\n\n function push(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(!(typeof path === 'object' && path.state !== undefined && state !== undefined), 'You should avoid providing a 2nd state argument to push when the 1st ' + 'argument is a location-like object that already has state; it is ignored') : void 0;\n var action = 'PUSH';\n var location = createLocation(path, state, createKey(), history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n var href = createHref(location);\n var key = location.key,\n state = location.state;\n\n if (canUseHistory) {\n globalHistory.pushState({\n key: key,\n state: state\n }, null, href);\n\n if (forceRefresh) {\n window.location.href = href;\n } else {\n var prevIndex = allKeys.indexOf(history.location.key);\n var nextKeys = allKeys.slice(0, prevIndex + 1);\n nextKeys.push(location.key);\n allKeys = nextKeys;\n setState({\n action: action,\n location: location\n });\n }\n } else {\n process.env.NODE_ENV !== \"production\" ? warning(state === undefined, 'Browser history cannot push state in browsers that do not support HTML5 history') : void 0;\n window.location.href = href;\n }\n });\n }\n\n function replace(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(!(typeof path === 'object' && path.state !== undefined && state !== undefined), 'You should avoid providing a 2nd state argument to replace when the 1st ' + 'argument is a location-like object that already has state; it is ignored') : void 0;\n var action = 'REPLACE';\n var location = createLocation(path, state, createKey(), history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n var href = createHref(location);\n var key = location.key,\n state = location.state;\n\n if (canUseHistory) {\n globalHistory.replaceState({\n key: key,\n state: state\n }, null, href);\n\n if (forceRefresh) {\n window.location.replace(href);\n } else {\n var prevIndex = allKeys.indexOf(history.location.key);\n if (prevIndex !== -1) allKeys[prevIndex] = location.key;\n setState({\n action: action,\n location: location\n });\n }\n } else {\n process.env.NODE_ENV !== \"production\" ? warning(state === undefined, 'Browser history cannot replace state in browsers that do not support HTML5 history') : void 0;\n window.location.replace(href);\n }\n });\n }\n\n function go(n) {\n globalHistory.go(n);\n }\n\n function goBack() {\n go(-1);\n }\n\n function goForward() {\n go(1);\n }\n\n var listenerCount = 0;\n\n function checkDOMListeners(delta) {\n listenerCount += delta;\n\n if (listenerCount === 1 && delta === 1) {\n window.addEventListener(PopStateEvent, handlePopState);\n if (needsHashChangeListener) window.addEventListener(HashChangeEvent, handleHashChange);\n } else if (listenerCount === 0) {\n window.removeEventListener(PopStateEvent, handlePopState);\n if (needsHashChangeListener) window.removeEventListener(HashChangeEvent, handleHashChange);\n }\n }\n\n var isBlocked = false;\n\n function block(prompt) {\n if (prompt === void 0) {\n prompt = false;\n }\n\n var unblock = transitionManager.setPrompt(prompt);\n\n if (!isBlocked) {\n checkDOMListeners(1);\n isBlocked = true;\n }\n\n return function () {\n if (isBlocked) {\n isBlocked = false;\n checkDOMListeners(-1);\n }\n\n return unblock();\n };\n }\n\n function listen(listener) {\n var unlisten = transitionManager.appendListener(listener);\n checkDOMListeners(1);\n return function () {\n checkDOMListeners(-1);\n unlisten();\n };\n }\n\n var history = {\n length: globalHistory.length,\n action: 'POP',\n location: initialLocation,\n createHref: createHref,\n push: push,\n replace: replace,\n go: go,\n goBack: goBack,\n goForward: goForward,\n block: block,\n listen: listen\n };\n return history;\n}\n\nvar HashChangeEvent$1 = 'hashchange';\nvar HashPathCoders = {\n hashbang: {\n encodePath: function encodePath(path) {\n return path.charAt(0) === '!' ? path : '!/' + stripLeadingSlash(path);\n },\n decodePath: function decodePath(path) {\n return path.charAt(0) === '!' ? path.substr(1) : path;\n }\n },\n noslash: {\n encodePath: stripLeadingSlash,\n decodePath: addLeadingSlash\n },\n slash: {\n encodePath: addLeadingSlash,\n decodePath: addLeadingSlash\n }\n};\n\nfunction stripHash(url) {\n var hashIndex = url.indexOf('#');\n return hashIndex === -1 ? url : url.slice(0, hashIndex);\n}\n\nfunction getHashPath() {\n // We can't use window.location.hash here because it's not\n // consistent across browsers - Firefox will pre-decode it!\n var href = window.location.href;\n var hashIndex = href.indexOf('#');\n return hashIndex === -1 ? '' : href.substring(hashIndex + 1);\n}\n\nfunction pushHashPath(path) {\n window.location.hash = path;\n}\n\nfunction replaceHashPath(path) {\n window.location.replace(stripHash(window.location.href) + '#' + path);\n}\n\nfunction createHashHistory(props) {\n if (props === void 0) {\n props = {};\n }\n\n !canUseDOM ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Hash history needs a DOM') : invariant(false) : void 0;\n var globalHistory = window.history;\n var canGoWithoutReload = supportsGoWithoutReloadUsingHash();\n var _props = props,\n _props$getUserConfirm = _props.getUserConfirmation,\n getUserConfirmation = _props$getUserConfirm === void 0 ? getConfirmation : _props$getUserConfirm,\n _props$hashType = _props.hashType,\n hashType = _props$hashType === void 0 ? 'slash' : _props$hashType;\n var basename = props.basename ? stripTrailingSlash(addLeadingSlash(props.basename)) : '';\n var _HashPathCoders$hashT = HashPathCoders[hashType],\n encodePath = _HashPathCoders$hashT.encodePath,\n decodePath = _HashPathCoders$hashT.decodePath;\n\n function getDOMLocation() {\n var path = decodePath(getHashPath());\n process.env.NODE_ENV !== \"production\" ? warning(!basename || hasBasename(path, basename), 'You are attempting to use a basename on a page whose URL path does not begin ' + 'with the basename. Expected path \"' + path + '\" to begin with \"' + basename + '\".') : void 0;\n if (basename) path = stripBasename(path, basename);\n return createLocation(path);\n }\n\n var transitionManager = createTransitionManager();\n\n function setState(nextState) {\n _extends(history, nextState);\n\n history.length = globalHistory.length;\n transitionManager.notifyListeners(history.location, history.action);\n }\n\n var forceNextPop = false;\n var ignorePath = null;\n\n function locationsAreEqual$$1(a, b) {\n return a.pathname === b.pathname && a.search === b.search && a.hash === b.hash;\n }\n\n function handleHashChange() {\n var path = getHashPath();\n var encodedPath = encodePath(path);\n\n if (path !== encodedPath) {\n // Ensure we always have a properly-encoded hash.\n replaceHashPath(encodedPath);\n } else {\n var location = getDOMLocation();\n var prevLocation = history.location;\n if (!forceNextPop && locationsAreEqual$$1(prevLocation, location)) return; // A hashchange doesn't always == location change.\n\n if (ignorePath === createPath(location)) return; // Ignore this change; we already setState in push/replace.\n\n ignorePath = null;\n handlePop(location);\n }\n }\n\n function handlePop(location) {\n if (forceNextPop) {\n forceNextPop = false;\n setState();\n } else {\n var action = 'POP';\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (ok) {\n setState({\n action: action,\n location: location\n });\n } else {\n revertPop(location);\n }\n });\n }\n }\n\n function revertPop(fromLocation) {\n var toLocation = history.location; // TODO: We could probably make this more reliable by\n // keeping a list of paths we've seen in sessionStorage.\n // Instead, we just default to 0 for paths we don't know.\n\n var toIndex = allPaths.lastIndexOf(createPath(toLocation));\n if (toIndex === -1) toIndex = 0;\n var fromIndex = allPaths.lastIndexOf(createPath(fromLocation));\n if (fromIndex === -1) fromIndex = 0;\n var delta = toIndex - fromIndex;\n\n if (delta) {\n forceNextPop = true;\n go(delta);\n }\n } // Ensure the hash is encoded properly before doing anything else.\n\n\n var path = getHashPath();\n var encodedPath = encodePath(path);\n if (path !== encodedPath) replaceHashPath(encodedPath);\n var initialLocation = getDOMLocation();\n var allPaths = [createPath(initialLocation)]; // Public interface\n\n function createHref(location) {\n var baseTag = document.querySelector('base');\n var href = '';\n\n if (baseTag && baseTag.getAttribute('href')) {\n href = stripHash(window.location.href);\n }\n\n return href + '#' + encodePath(basename + createPath(location));\n }\n\n function push(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(state === undefined, 'Hash history cannot push state; it is ignored') : void 0;\n var action = 'PUSH';\n var location = createLocation(path, undefined, undefined, history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n var path = createPath(location);\n var encodedPath = encodePath(basename + path);\n var hashChanged = getHashPath() !== encodedPath;\n\n if (hashChanged) {\n // We cannot tell if a hashchange was caused by a PUSH, so we'd\n // rather setState here and ignore the hashchange. The caveat here\n // is that other hash histories in the page will consider it a POP.\n ignorePath = path;\n pushHashPath(encodedPath);\n var prevIndex = allPaths.lastIndexOf(createPath(history.location));\n var nextPaths = allPaths.slice(0, prevIndex + 1);\n nextPaths.push(path);\n allPaths = nextPaths;\n setState({\n action: action,\n location: location\n });\n } else {\n process.env.NODE_ENV !== \"production\" ? warning(false, 'Hash history cannot PUSH the same path; a new entry will not be added to the history stack') : void 0;\n setState();\n }\n });\n }\n\n function replace(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(state === undefined, 'Hash history cannot replace state; it is ignored') : void 0;\n var action = 'REPLACE';\n var location = createLocation(path, undefined, undefined, history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n var path = createPath(location);\n var encodedPath = encodePath(basename + path);\n var hashChanged = getHashPath() !== encodedPath;\n\n if (hashChanged) {\n // We cannot tell if a hashchange was caused by a REPLACE, so we'd\n // rather setState here and ignore the hashchange. The caveat here\n // is that other hash histories in the page will consider it a POP.\n ignorePath = path;\n replaceHashPath(encodedPath);\n }\n\n var prevIndex = allPaths.indexOf(createPath(history.location));\n if (prevIndex !== -1) allPaths[prevIndex] = path;\n setState({\n action: action,\n location: location\n });\n });\n }\n\n function go(n) {\n process.env.NODE_ENV !== \"production\" ? warning(canGoWithoutReload, 'Hash history go(n) causes a full page reload in this browser') : void 0;\n globalHistory.go(n);\n }\n\n function goBack() {\n go(-1);\n }\n\n function goForward() {\n go(1);\n }\n\n var listenerCount = 0;\n\n function checkDOMListeners(delta) {\n listenerCount += delta;\n\n if (listenerCount === 1 && delta === 1) {\n window.addEventListener(HashChangeEvent$1, handleHashChange);\n } else if (listenerCount === 0) {\n window.removeEventListener(HashChangeEvent$1, handleHashChange);\n }\n }\n\n var isBlocked = false;\n\n function block(prompt) {\n if (prompt === void 0) {\n prompt = false;\n }\n\n var unblock = transitionManager.setPrompt(prompt);\n\n if (!isBlocked) {\n checkDOMListeners(1);\n isBlocked = true;\n }\n\n return function () {\n if (isBlocked) {\n isBlocked = false;\n checkDOMListeners(-1);\n }\n\n return unblock();\n };\n }\n\n function listen(listener) {\n var unlisten = transitionManager.appendListener(listener);\n checkDOMListeners(1);\n return function () {\n checkDOMListeners(-1);\n unlisten();\n };\n }\n\n var history = {\n length: globalHistory.length,\n action: 'POP',\n location: initialLocation,\n createHref: createHref,\n push: push,\n replace: replace,\n go: go,\n goBack: goBack,\n goForward: goForward,\n block: block,\n listen: listen\n };\n return history;\n}\n\nfunction clamp(n, lowerBound, upperBound) {\n return Math.min(Math.max(n, lowerBound), upperBound);\n}\n/**\n * Creates a history object that stores locations in memory.\n */\n\n\nfunction createMemoryHistory(props) {\n if (props === void 0) {\n props = {};\n }\n\n var _props = props,\n getUserConfirmation = _props.getUserConfirmation,\n _props$initialEntries = _props.initialEntries,\n initialEntries = _props$initialEntries === void 0 ? ['/'] : _props$initialEntries,\n _props$initialIndex = _props.initialIndex,\n initialIndex = _props$initialIndex === void 0 ? 0 : _props$initialIndex,\n _props$keyLength = _props.keyLength,\n keyLength = _props$keyLength === void 0 ? 6 : _props$keyLength;\n var transitionManager = createTransitionManager();\n\n function setState(nextState) {\n _extends(history, nextState);\n\n history.length = history.entries.length;\n transitionManager.notifyListeners(history.location, history.action);\n }\n\n function createKey() {\n return Math.random().toString(36).substr(2, keyLength);\n }\n\n var index = clamp(initialIndex, 0, initialEntries.length - 1);\n var entries = initialEntries.map(function (entry) {\n return typeof entry === 'string' ? createLocation(entry, undefined, createKey()) : createLocation(entry, undefined, entry.key || createKey());\n }); // Public interface\n\n var createHref = createPath;\n\n function push(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(!(typeof path === 'object' && path.state !== undefined && state !== undefined), 'You should avoid providing a 2nd state argument to push when the 1st ' + 'argument is a location-like object that already has state; it is ignored') : void 0;\n var action = 'PUSH';\n var location = createLocation(path, state, createKey(), history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n var prevIndex = history.index;\n var nextIndex = prevIndex + 1;\n var nextEntries = history.entries.slice(0);\n\n if (nextEntries.length > nextIndex) {\n nextEntries.splice(nextIndex, nextEntries.length - nextIndex, location);\n } else {\n nextEntries.push(location);\n }\n\n setState({\n action: action,\n location: location,\n index: nextIndex,\n entries: nextEntries\n });\n });\n }\n\n function replace(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(!(typeof path === 'object' && path.state !== undefined && state !== undefined), 'You should avoid providing a 2nd state argument to replace when the 1st ' + 'argument is a location-like object that already has state; it is ignored') : void 0;\n var action = 'REPLACE';\n var location = createLocation(path, state, createKey(), history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n history.entries[history.index] = location;\n setState({\n action: action,\n location: location\n });\n });\n }\n\n function go(n) {\n var nextIndex = clamp(history.index + n, 0, history.entries.length - 1);\n var action = 'POP';\n var location = history.entries[nextIndex];\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (ok) {\n setState({\n action: action,\n location: location,\n index: nextIndex\n });\n } else {\n // Mimic the behavior of DOM histories by\n // causing a render after a cancelled POP.\n setState();\n }\n });\n }\n\n function goBack() {\n go(-1);\n }\n\n function goForward() {\n go(1);\n }\n\n function canGo(n) {\n var nextIndex = history.index + n;\n return nextIndex >= 0 && nextIndex < history.entries.length;\n }\n\n function block(prompt) {\n if (prompt === void 0) {\n prompt = false;\n }\n\n return transitionManager.setPrompt(prompt);\n }\n\n function listen(listener) {\n return transitionManager.appendListener(listener);\n }\n\n var history = {\n length: entries.length,\n action: 'POP',\n location: entries[index],\n index: index,\n entries: entries,\n createHref: createHref,\n push: push,\n replace: replace,\n go: go,\n goBack: goBack,\n goForward: goForward,\n canGo: canGo,\n block: block,\n listen: listen\n };\n return history;\n}\n\nexport { createBrowserHistory, createHashHistory, createMemoryHistory, createLocation, locationsAreEqual, parsePath, createPath };\n","'use strict';\n\n/**\n * Copyright 2015, Yahoo! Inc.\n * Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms.\n */\nvar ReactIs = require('react-is');\nvar REACT_STATICS = {\n childContextTypes: true,\n contextType: true,\n contextTypes: true,\n defaultProps: true,\n displayName: true,\n getDefaultProps: true,\n getDerivedStateFromError: true,\n getDerivedStateFromProps: true,\n mixins: true,\n propTypes: true,\n type: true\n};\n\nvar KNOWN_STATICS = {\n name: true,\n length: true,\n prototype: true,\n caller: true,\n callee: true,\n arguments: true,\n arity: true\n};\n\nvar FORWARD_REF_STATICS = {\n '$$typeof': true,\n render: true,\n defaultProps: true,\n displayName: true,\n propTypes: true\n};\n\nvar MEMO_STATICS = {\n '$$typeof': true,\n compare: true,\n defaultProps: true,\n displayName: true,\n propTypes: true,\n type: true\n};\n\nvar TYPE_STATICS = {};\nTYPE_STATICS[ReactIs.ForwardRef] = FORWARD_REF_STATICS;\n\nfunction getStatics(component) {\n if (ReactIs.isMemo(component)) {\n return MEMO_STATICS;\n }\n return TYPE_STATICS[component['$$typeof']] || REACT_STATICS;\n}\n\nvar defineProperty = Object.defineProperty;\nvar getOwnPropertyNames = Object.getOwnPropertyNames;\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\nvar getPrototypeOf = Object.getPrototypeOf;\nvar objectPrototype = Object.prototype;\n\nfunction hoistNonReactStatics(targetComponent, sourceComponent, blacklist) {\n if (typeof sourceComponent !== 'string') {\n // don't hoist over string (html) components\n\n if (objectPrototype) {\n var inheritedComponent = getPrototypeOf(sourceComponent);\n if (inheritedComponent && inheritedComponent !== objectPrototype) {\n hoistNonReactStatics(targetComponent, inheritedComponent, blacklist);\n }\n }\n\n var keys = getOwnPropertyNames(sourceComponent);\n\n if (getOwnPropertySymbols) {\n keys = keys.concat(getOwnPropertySymbols(sourceComponent));\n }\n\n var targetStatics = getStatics(targetComponent);\n var sourceStatics = getStatics(sourceComponent);\n\n for (var i = 0; i < keys.length; ++i) {\n var key = keys[i];\n if (!KNOWN_STATICS[key] && !(blacklist && blacklist[key]) && !(sourceStatics && sourceStatics[key]) && !(targetStatics && targetStatics[key])) {\n var descriptor = getOwnPropertyDescriptor(sourceComponent, key);\n try {\n // Avoid failures from read-only properties\n defineProperty(targetComponent, key, descriptor);\n } catch (e) {}\n }\n }\n\n return targetComponent;\n }\n\n return targetComponent;\n}\n\nmodule.exports = hoistNonReactStatics;\n","module.exports = Array.isArray || function (arr) {\n return Object.prototype.toString.call(arr) == '[object Array]';\n};\n","/*\nobject-assign\n(c) Sindre Sorhus\n@license MIT\n*/\n\n'use strict';\n/* eslint-disable no-unused-vars */\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nvar propIsEnumerable = Object.prototype.propertyIsEnumerable;\n\nfunction toObject(val) {\n\tif (val === null || val === undefined) {\n\t\tthrow new TypeError('Object.assign cannot be called with null or undefined');\n\t}\n\n\treturn Object(val);\n}\n\nfunction shouldUseNative() {\n\ttry {\n\t\tif (!Object.assign) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Detect buggy property enumeration order in older V8 versions.\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=4118\n\t\tvar test1 = new String('abc'); // eslint-disable-line no-new-wrappers\n\t\ttest1[5] = 'de';\n\t\tif (Object.getOwnPropertyNames(test1)[0] === '5') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test2 = {};\n\t\tfor (var i = 0; i < 10; i++) {\n\t\t\ttest2['_' + String.fromCharCode(i)] = i;\n\t\t}\n\t\tvar order2 = Object.getOwnPropertyNames(test2).map(function (n) {\n\t\t\treturn test2[n];\n\t\t});\n\t\tif (order2.join('') !== '0123456789') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test3 = {};\n\t\t'abcdefghijklmnopqrst'.split('').forEach(function (letter) {\n\t\t\ttest3[letter] = letter;\n\t\t});\n\t\tif (Object.keys(Object.assign({}, test3)).join('') !==\n\t\t\t\t'abcdefghijklmnopqrst') {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t} catch (err) {\n\t\t// We don't expect any of the above to throw, but better to be safe.\n\t\treturn false;\n\t}\n}\n\nmodule.exports = shouldUseNative() ? Object.assign : function (target, source) {\n\tvar from;\n\tvar to = toObject(target);\n\tvar symbols;\n\n\tfor (var s = 1; s < arguments.length; s++) {\n\t\tfrom = Object(arguments[s]);\n\n\t\tfor (var key in from) {\n\t\t\tif (hasOwnProperty.call(from, key)) {\n\t\t\t\tto[key] = from[key];\n\t\t\t}\n\t\t}\n\n\t\tif (getOwnPropertySymbols) {\n\t\t\tsymbols = getOwnPropertySymbols(from);\n\t\t\tfor (var i = 0; i < symbols.length; i++) {\n\t\t\t\tif (propIsEnumerable.call(from, symbols[i])) {\n\t\t\t\t\tto[symbols[i]] = from[symbols[i]];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn to;\n};\n","var isarray = require('isarray')\n\n/**\n * Expose `pathToRegexp`.\n */\nmodule.exports = pathToRegexp\nmodule.exports.parse = parse\nmodule.exports.compile = compile\nmodule.exports.tokensToFunction = tokensToFunction\nmodule.exports.tokensToRegExp = tokensToRegExp\n\n/**\n * The main path matching regexp utility.\n *\n * @type {RegExp}\n */\nvar PATH_REGEXP = new RegExp([\n // Match escaped characters that would otherwise appear in future matches.\n // This allows the user to escape special characters that won't transform.\n '(\\\\\\\\.)',\n // Match Express-style parameters and un-named parameters with a prefix\n // and optional suffixes. Matches appear as:\n //\n // \"/:test(\\\\d+)?\" => [\"/\", \"test\", \"\\d+\", undefined, \"?\", undefined]\n // \"/route(\\\\d+)\" => [undefined, undefined, undefined, \"\\d+\", undefined, undefined]\n // \"/*\" => [\"/\", undefined, undefined, undefined, undefined, \"*\"]\n '([\\\\/.])?(?:(?:\\\\:(\\\\w+)(?:\\\\(((?:\\\\\\\\.|[^\\\\\\\\()])+)\\\\))?|\\\\(((?:\\\\\\\\.|[^\\\\\\\\()])+)\\\\))([+*?])?|(\\\\*))'\n].join('|'), 'g')\n\n/**\n * Parse a string for the raw tokens.\n *\n * @param {string} str\n * @param {Object=} options\n * @return {!Array}\n */\nfunction parse (str, options) {\n var tokens = []\n var key = 0\n var index = 0\n var path = ''\n var defaultDelimiter = options && options.delimiter || '/'\n var res\n\n while ((res = PATH_REGEXP.exec(str)) != null) {\n var m = res[0]\n var escaped = res[1]\n var offset = res.index\n path += str.slice(index, offset)\n index = offset + m.length\n\n // Ignore already escaped sequences.\n if (escaped) {\n path += escaped[1]\n continue\n }\n\n var next = str[index]\n var prefix = res[2]\n var name = res[3]\n var capture = res[4]\n var group = res[5]\n var modifier = res[6]\n var asterisk = res[7]\n\n // Push the current path onto the tokens.\n if (path) {\n tokens.push(path)\n path = ''\n }\n\n var partial = prefix != null && next != null && next !== prefix\n var repeat = modifier === '+' || modifier === '*'\n var optional = modifier === '?' || modifier === '*'\n var delimiter = res[2] || defaultDelimiter\n var pattern = capture || group\n\n tokens.push({\n name: name || key++,\n prefix: prefix || '',\n delimiter: delimiter,\n optional: optional,\n repeat: repeat,\n partial: partial,\n asterisk: !!asterisk,\n pattern: pattern ? escapeGroup(pattern) : (asterisk ? '.*' : '[^' + escapeString(delimiter) + ']+?')\n })\n }\n\n // Match any characters still remaining.\n if (index < str.length) {\n path += str.substr(index)\n }\n\n // If the path exists, push it onto the end.\n if (path) {\n tokens.push(path)\n }\n\n return tokens\n}\n\n/**\n * Compile a string to a template function for the path.\n *\n * @param {string} str\n * @param {Object=} options\n * @return {!function(Object=, Object=)}\n */\nfunction compile (str, options) {\n return tokensToFunction(parse(str, options), options)\n}\n\n/**\n * Prettier encoding of URI path segments.\n *\n * @param {string}\n * @return {string}\n */\nfunction encodeURIComponentPretty (str) {\n return encodeURI(str).replace(/[\\/?#]/g, function (c) {\n return '%' + c.charCodeAt(0).toString(16).toUpperCase()\n })\n}\n\n/**\n * Encode the asterisk parameter. Similar to `pretty`, but allows slashes.\n *\n * @param {string}\n * @return {string}\n */\nfunction encodeAsterisk (str) {\n return encodeURI(str).replace(/[?#]/g, function (c) {\n return '%' + c.charCodeAt(0).toString(16).toUpperCase()\n })\n}\n\n/**\n * Expose a method for transforming tokens into the path function.\n */\nfunction tokensToFunction (tokens, options) {\n // Compile all the tokens into regexps.\n var matches = new Array(tokens.length)\n\n // Compile all the patterns before compilation.\n for (var i = 0; i < tokens.length; i++) {\n if (typeof tokens[i] === 'object') {\n matches[i] = new RegExp('^(?:' + tokens[i].pattern + ')$', flags(options))\n }\n }\n\n return function (obj, opts) {\n var path = ''\n var data = obj || {}\n var options = opts || {}\n var encode = options.pretty ? encodeURIComponentPretty : encodeURIComponent\n\n for (var i = 0; i < tokens.length; i++) {\n var token = tokens[i]\n\n if (typeof token === 'string') {\n path += token\n\n continue\n }\n\n var value = data[token.name]\n var segment\n\n if (value == null) {\n if (token.optional) {\n // Prepend partial segment prefixes.\n if (token.partial) {\n path += token.prefix\n }\n\n continue\n } else {\n throw new TypeError('Expected \"' + token.name + '\" to be defined')\n }\n }\n\n if (isarray(value)) {\n if (!token.repeat) {\n throw new TypeError('Expected \"' + token.name + '\" to not repeat, but received `' + JSON.stringify(value) + '`')\n }\n\n if (value.length === 0) {\n if (token.optional) {\n continue\n } else {\n throw new TypeError('Expected \"' + token.name + '\" to not be empty')\n }\n }\n\n for (var j = 0; j < value.length; j++) {\n segment = encode(value[j])\n\n if (!matches[i].test(segment)) {\n throw new TypeError('Expected all \"' + token.name + '\" to match \"' + token.pattern + '\", but received `' + JSON.stringify(segment) + '`')\n }\n\n path += (j === 0 ? token.prefix : token.delimiter) + segment\n }\n\n continue\n }\n\n segment = token.asterisk ? encodeAsterisk(value) : encode(value)\n\n if (!matches[i].test(segment)) {\n throw new TypeError('Expected \"' + token.name + '\" to match \"' + token.pattern + '\", but received \"' + segment + '\"')\n }\n\n path += token.prefix + segment\n }\n\n return path\n }\n}\n\n/**\n * Escape a regular expression string.\n *\n * @param {string} str\n * @return {string}\n */\nfunction escapeString (str) {\n return str.replace(/([.+*?=^!:${}()[\\]|\\/\\\\])/g, '\\\\$1')\n}\n\n/**\n * Escape the capturing group by escaping special characters and meaning.\n *\n * @param {string} group\n * @return {string}\n */\nfunction escapeGroup (group) {\n return group.replace(/([=!:$\\/()])/g, '\\\\$1')\n}\n\n/**\n * Attach the keys as a property of the regexp.\n *\n * @param {!RegExp} re\n * @param {Array} keys\n * @return {!RegExp}\n */\nfunction attachKeys (re, keys) {\n re.keys = keys\n return re\n}\n\n/**\n * Get the flags for a regexp from the options.\n *\n * @param {Object} options\n * @return {string}\n */\nfunction flags (options) {\n return options && options.sensitive ? '' : 'i'\n}\n\n/**\n * Pull out keys from a regexp.\n *\n * @param {!RegExp} path\n * @param {!Array} keys\n * @return {!RegExp}\n */\nfunction regexpToRegexp (path, keys) {\n // Use a negative lookahead to match only capturing groups.\n var groups = path.source.match(/\\((?!\\?)/g)\n\n if (groups) {\n for (var i = 0; i < groups.length; i++) {\n keys.push({\n name: i,\n prefix: null,\n delimiter: null,\n optional: false,\n repeat: false,\n partial: false,\n asterisk: false,\n pattern: null\n })\n }\n }\n\n return attachKeys(path, keys)\n}\n\n/**\n * Transform an array into a regexp.\n *\n * @param {!Array} path\n * @param {Array} keys\n * @param {!Object} options\n * @return {!RegExp}\n */\nfunction arrayToRegexp (path, keys, options) {\n var parts = []\n\n for (var i = 0; i < path.length; i++) {\n parts.push(pathToRegexp(path[i], keys, options).source)\n }\n\n var regexp = new RegExp('(?:' + parts.join('|') + ')', flags(options))\n\n return attachKeys(regexp, keys)\n}\n\n/**\n * Create a path regexp from string input.\n *\n * @param {string} path\n * @param {!Array} keys\n * @param {!Object} options\n * @return {!RegExp}\n */\nfunction stringToRegexp (path, keys, options) {\n return tokensToRegExp(parse(path, options), keys, options)\n}\n\n/**\n * Expose a function for taking tokens and returning a RegExp.\n *\n * @param {!Array} tokens\n * @param {(Array|Object)=} keys\n * @param {Object=} options\n * @return {!RegExp}\n */\nfunction tokensToRegExp (tokens, keys, options) {\n if (!isarray(keys)) {\n options = /** @type {!Object} */ (keys || options)\n keys = []\n }\n\n options = options || {}\n\n var strict = options.strict\n var end = options.end !== false\n var route = ''\n\n // Iterate over the tokens and create our regexp string.\n for (var i = 0; i < tokens.length; i++) {\n var token = tokens[i]\n\n if (typeof token === 'string') {\n route += escapeString(token)\n } else {\n var prefix = escapeString(token.prefix)\n var capture = '(?:' + token.pattern + ')'\n\n keys.push(token)\n\n if (token.repeat) {\n capture += '(?:' + prefix + capture + ')*'\n }\n\n if (token.optional) {\n if (!token.partial) {\n capture = '(?:' + prefix + '(' + capture + '))?'\n } else {\n capture = prefix + '(' + capture + ')?'\n }\n } else {\n capture = prefix + '(' + capture + ')'\n }\n\n route += capture\n }\n }\n\n var delimiter = escapeString(options.delimiter || '/')\n var endsWithDelimiter = route.slice(-delimiter.length) === delimiter\n\n // In non-strict mode we allow a slash at the end of match. If the path to\n // match already ends with a slash, we remove it for consistency. The slash\n // is valid at the end of a path match, not in the middle. This is important\n // in non-ending mode, where \"/test/\" shouldn't match \"/test//route\".\n if (!strict) {\n route = (endsWithDelimiter ? route.slice(0, -delimiter.length) : route) + '(?:' + delimiter + '(?=$))?'\n }\n\n if (end) {\n route += '$'\n } else {\n // In non-ending mode, we need the capturing groups to match as much as\n // possible by using a positive lookahead to the end or next path segment.\n route += strict && endsWithDelimiter ? '' : '(?=' + delimiter + '|$)'\n }\n\n return attachKeys(new RegExp('^' + route, flags(options)), keys)\n}\n\n/**\n * Normalize the given path string, returning a regular expression.\n *\n * An empty array can be passed in for the keys, which will hold the\n * placeholder key descriptions. For example, using `/user/:id`, `keys` will\n * contain `[{ name: 'id', delimiter: '/', optional: false, repeat: false }]`.\n *\n * @param {(string|RegExp|Array)} path\n * @param {(Array|Object)=} keys\n * @param {Object=} options\n * @return {!RegExp}\n */\nfunction pathToRegexp (path, keys, options) {\n if (!isarray(keys)) {\n options = /** @type {!Object} */ (keys || options)\n keys = []\n }\n\n options = options || {}\n\n if (path instanceof RegExp) {\n return regexpToRegexp(path, /** @type {!Array} */ (keys))\n }\n\n if (isarray(path)) {\n return arrayToRegexp(/** @type {!Array} */ (path), /** @type {!Array} */ (keys), options)\n }\n\n return stringToRegexp(/** @type {string} */ (path), /** @type {!Array} */ (keys), options)\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\n'use strict';\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n\nfunction emptyFunction() {}\nfunction emptyFunctionWithReset() {}\nemptyFunctionWithReset.resetWarningCache = emptyFunction;\n\nmodule.exports = function() {\n function shim(props, propName, componentName, location, propFullName, secret) {\n if (secret === ReactPropTypesSecret) {\n // It is still safe when called from React.\n return;\n }\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 };\n shim.isRequired = shim;\n function getShim() {\n return shim;\n };\n // Important!\n // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\n var ReactPropTypes = {\n array: shim,\n bigint: shim,\n bool: shim,\n func: shim,\n number: shim,\n object: shim,\n string: shim,\n symbol: shim,\n\n any: shim,\n arrayOf: getShim,\n element: shim,\n elementType: shim,\n instanceOf: getShim,\n node: shim,\n objectOf: getShim,\n oneOf: getShim,\n oneOfType: getShim,\n shape: getShim,\n exact: getShim,\n\n checkPropTypes: emptyFunctionWithReset,\n resetWarningCache: emptyFunction\n };\n\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\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 (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 * 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","'use strict';\nvar strictUriEncode = require('strict-uri-encode');\nvar objectAssign = require('object-assign');\nvar decodeComponent = require('decode-uri-component');\n\nfunction encoderForArrayFormat(opts) {\n\tswitch (opts.arrayFormat) {\n\t\tcase 'index':\n\t\t\treturn function (key, value, index) {\n\t\t\t\treturn value === null ? [\n\t\t\t\t\tencode(key, opts),\n\t\t\t\t\t'[',\n\t\t\t\t\tindex,\n\t\t\t\t\t']'\n\t\t\t\t].join('') : [\n\t\t\t\t\tencode(key, opts),\n\t\t\t\t\t'[',\n\t\t\t\t\tencode(index, opts),\n\t\t\t\t\t']=',\n\t\t\t\t\tencode(value, opts)\n\t\t\t\t].join('');\n\t\t\t};\n\n\t\tcase 'bracket':\n\t\t\treturn function (key, value) {\n\t\t\t\treturn value === null ? encode(key, opts) : [\n\t\t\t\t\tencode(key, opts),\n\t\t\t\t\t'[]=',\n\t\t\t\t\tencode(value, opts)\n\t\t\t\t].join('');\n\t\t\t};\n\n\t\tdefault:\n\t\t\treturn function (key, value) {\n\t\t\t\treturn value === null ? encode(key, opts) : [\n\t\t\t\t\tencode(key, opts),\n\t\t\t\t\t'=',\n\t\t\t\t\tencode(value, opts)\n\t\t\t\t].join('');\n\t\t\t};\n\t}\n}\n\nfunction parserForArrayFormat(opts) {\n\tvar result;\n\n\tswitch (opts.arrayFormat) {\n\t\tcase 'index':\n\t\t\treturn function (key, value, accumulator) {\n\t\t\t\tresult = /\\[(\\d*)\\]$/.exec(key);\n\n\t\t\t\tkey = key.replace(/\\[\\d*\\]$/, '');\n\n\t\t\t\tif (!result) {\n\t\t\t\t\taccumulator[key] = value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = {};\n\t\t\t\t}\n\n\t\t\t\taccumulator[key][result[1]] = value;\n\t\t\t};\n\n\t\tcase 'bracket':\n\t\t\treturn function (key, value, accumulator) {\n\t\t\t\tresult = /(\\[\\])$/.exec(key);\n\t\t\t\tkey = key.replace(/\\[\\]$/, '');\n\n\t\t\t\tif (!result) {\n\t\t\t\t\taccumulator[key] = value;\n\t\t\t\t\treturn;\n\t\t\t\t} else if (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = [value];\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\taccumulator[key] = [].concat(accumulator[key], value);\n\t\t\t};\n\n\t\tdefault:\n\t\t\treturn function (key, value, accumulator) {\n\t\t\t\tif (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\taccumulator[key] = [].concat(accumulator[key], value);\n\t\t\t};\n\t}\n}\n\nfunction encode(value, opts) {\n\tif (opts.encode) {\n\t\treturn opts.strict ? strictUriEncode(value) : encodeURIComponent(value);\n\t}\n\n\treturn value;\n}\n\nfunction keysSorter(input) {\n\tif (Array.isArray(input)) {\n\t\treturn input.sort();\n\t} else if (typeof input === 'object') {\n\t\treturn keysSorter(Object.keys(input)).sort(function (a, b) {\n\t\t\treturn Number(a) - Number(b);\n\t\t}).map(function (key) {\n\t\t\treturn input[key];\n\t\t});\n\t}\n\n\treturn input;\n}\n\nfunction extract(str) {\n\tvar queryStart = str.indexOf('?');\n\tif (queryStart === -1) {\n\t\treturn '';\n\t}\n\treturn str.slice(queryStart + 1);\n}\n\nfunction parse(str, opts) {\n\topts = objectAssign({arrayFormat: 'none'}, opts);\n\n\tvar formatter = parserForArrayFormat(opts);\n\n\t// Create an object with no prototype\n\t// https://github.com/sindresorhus/query-string/issues/47\n\tvar ret = Object.create(null);\n\n\tif (typeof str !== 'string') {\n\t\treturn ret;\n\t}\n\n\tstr = str.trim().replace(/^[?#&]/, '');\n\n\tif (!str) {\n\t\treturn ret;\n\t}\n\n\tstr.split('&').forEach(function (param) {\n\t\tvar parts = param.replace(/\\+/g, ' ').split('=');\n\t\t// Firefox (pre 40) decodes `%3D` to `=`\n\t\t// https://github.com/sindresorhus/query-string/pull/37\n\t\tvar key = parts.shift();\n\t\tvar val = parts.length > 0 ? parts.join('=') : undefined;\n\n\t\t// missing `=` should be `null`:\n\t\t// http://w3.org/TR/2012/WD-url-20120524/#collect-url-parameters\n\t\tval = val === undefined ? null : decodeComponent(val);\n\n\t\tformatter(decodeComponent(key), val, ret);\n\t});\n\n\treturn Object.keys(ret).sort().reduce(function (result, key) {\n\t\tvar val = ret[key];\n\t\tif (Boolean(val) && typeof val === 'object' && !Array.isArray(val)) {\n\t\t\t// Sort object keys, not values\n\t\t\tresult[key] = keysSorter(val);\n\t\t} else {\n\t\t\tresult[key] = val;\n\t\t}\n\n\t\treturn result;\n\t}, Object.create(null));\n}\n\nexports.extract = extract;\nexports.parse = parse;\n\nexports.stringify = function (obj, opts) {\n\tvar defaults = {\n\t\tencode: true,\n\t\tstrict: true,\n\t\tarrayFormat: 'none'\n\t};\n\n\topts = objectAssign(defaults, opts);\n\n\tif (opts.sort === false) {\n\t\topts.sort = function () {};\n\t}\n\n\tvar formatter = encoderForArrayFormat(opts);\n\n\treturn obj ? Object.keys(obj).sort(opts.sort).map(function (key) {\n\t\tvar val = obj[key];\n\n\t\tif (val === undefined) {\n\t\t\treturn '';\n\t\t}\n\n\t\tif (val === null) {\n\t\t\treturn encode(key, opts);\n\t\t}\n\n\t\tif (Array.isArray(val)) {\n\t\t\tvar result = [];\n\n\t\t\tval.slice().forEach(function (val2) {\n\t\t\t\tif (val2 === undefined) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tresult.push(formatter(key, val2, result.length));\n\t\t\t});\n\n\t\t\treturn result.join('&');\n\t\t}\n\n\t\treturn encode(key, opts) + '=' + encode(val, opts);\n\t}).filter(function (x) {\n\t\treturn x.length > 0;\n\t}).join('&') : '';\n};\n\nexports.parseUrl = function (str, opts) {\n\treturn {\n\t\turl: str.split('?')[0] || '',\n\t\tquery: parse(extract(str), opts)\n\t};\n};\n","/** @license React v16.8.6\n * react-dom.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n/*\n Modernizr 3.0.0pre (Custom Build) | MIT\n*/\n'use strict';var aa=require(\"react\"),n=require(\"object-assign\"),r=require(\"scheduler\");function ba(a,b,c,d,e,f,g,h){if(!a){a=void 0;if(void 0===b)a=Error(\"Minified exception occurred; use the non-minified dev environment for the full error message and additional helpful warnings.\");else{var l=[c,d,e,f,g,h],k=0;a=Error(b.replace(/%s/g,function(){return l[k++]}));a.name=\"Invariant Violation\"}a.framesToPop=1;throw a;}}\nfunction x(a){for(var b=arguments.length-1,c=\"https://reactjs.org/docs/error-decoder.html?invariant=\"+a,d=0;dthis.eventPool.length&&this.eventPool.push(a)}\nfunction hb(a){a.eventPool=[];a.getPooled=ib;a.release=jb}var kb=y.extend({data:null}),lb=y.extend({data:null}),mb=[9,13,27,32],nb=Ra&&\"CompositionEvent\"in window,ob=null;Ra&&\"documentMode\"in document&&(ob=document.documentMode);\nvar pb=Ra&&\"TextEvent\"in window&&!ob,qb=Ra&&(!nb||ob&&8=ob),rb=String.fromCharCode(32),sb={beforeInput:{phasedRegistrationNames:{bubbled:\"onBeforeInput\",captured:\"onBeforeInputCapture\"},dependencies:[\"compositionend\",\"keypress\",\"textInput\",\"paste\"]},compositionEnd:{phasedRegistrationNames:{bubbled:\"onCompositionEnd\",captured:\"onCompositionEndCapture\"},dependencies:\"blur compositionend keydown keypress keyup mousedown\".split(\" \")},compositionStart:{phasedRegistrationNames:{bubbled:\"onCompositionStart\",\ncaptured:\"onCompositionStartCapture\"},dependencies:\"blur compositionstart keydown keypress keyup mousedown\".split(\" \")},compositionUpdate:{phasedRegistrationNames:{bubbled:\"onCompositionUpdate\",captured:\"onCompositionUpdateCapture\"},dependencies:\"blur compositionupdate keydown keypress keyup mousedown\".split(\" \")}},tb=!1;\nfunction ub(a,b){switch(a){case \"keyup\":return-1!==mb.indexOf(b.keyCode);case \"keydown\":return 229!==b.keyCode;case \"keypress\":case \"mousedown\":case \"blur\":return!0;default:return!1}}function vb(a){a=a.detail;return\"object\"===typeof a&&\"data\"in a?a.data:null}var wb=!1;function xb(a,b){switch(a){case \"compositionend\":return vb(b);case \"keypress\":if(32!==b.which)return null;tb=!0;return rb;case \"textInput\":return a=b.data,a===rb&&tb?null:a;default:return null}}\nfunction yb(a,b){if(wb)return\"compositionend\"===a||!nb&&ub(a,b)?(a=eb(),db=cb=bb=null,wb=!1,a):null;switch(a){case \"paste\":return null;case \"keypress\":if(!(b.ctrlKey||b.altKey||b.metaKey)||b.ctrlKey&&b.altKey){if(b.char&&1b}return!1}function C(a,b,c,d,e){this.acceptsBooleans=2===b||3===b||4===b;this.attributeName=d;this.attributeNamespace=e;this.mustUseProperty=c;this.propertyName=a;this.type=b}var D={};\n\"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style\".split(\" \").forEach(function(a){D[a]=new C(a,0,!1,a,null)});[[\"acceptCharset\",\"accept-charset\"],[\"className\",\"class\"],[\"htmlFor\",\"for\"],[\"httpEquiv\",\"http-equiv\"]].forEach(function(a){var b=a[0];D[b]=new C(b,1,!1,a[1],null)});[\"contentEditable\",\"draggable\",\"spellCheck\",\"value\"].forEach(function(a){D[a]=new C(a,2,!1,a.toLowerCase(),null)});\n[\"autoReverse\",\"externalResourcesRequired\",\"focusable\",\"preserveAlpha\"].forEach(function(a){D[a]=new C(a,2,!1,a,null)});\"allowFullScreen async autoFocus autoPlay controls default defer disabled formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope\".split(\" \").forEach(function(a){D[a]=new C(a,3,!1,a.toLowerCase(),null)});[\"checked\",\"multiple\",\"muted\",\"selected\"].forEach(function(a){D[a]=new C(a,3,!0,a,null)});\n[\"capture\",\"download\"].forEach(function(a){D[a]=new C(a,4,!1,a,null)});[\"cols\",\"rows\",\"size\",\"span\"].forEach(function(a){D[a]=new C(a,6,!1,a,null)});[\"rowSpan\",\"start\"].forEach(function(a){D[a]=new C(a,5,!1,a.toLowerCase(),null)});var rc=/[\\-:]([a-z])/g;function sc(a){return a[1].toUpperCase()}\n\"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height\".split(\" \").forEach(function(a){var b=a.replace(rc,\nsc);D[b]=new C(b,1,!1,a,null)});\"xlink:actuate xlink:arcrole xlink:href xlink:role xlink:show xlink:title xlink:type\".split(\" \").forEach(function(a){var b=a.replace(rc,sc);D[b]=new C(b,1,!1,a,\"http://www.w3.org/1999/xlink\")});[\"xml:base\",\"xml:lang\",\"xml:space\"].forEach(function(a){var b=a.replace(rc,sc);D[b]=new C(b,1,!1,a,\"http://www.w3.org/XML/1998/namespace\")});[\"tabIndex\",\"crossOrigin\"].forEach(function(a){D[a]=new C(a,1,!1,a.toLowerCase(),null)});\nfunction tc(a,b,c,d){var e=D.hasOwnProperty(b)?D[b]:null;var f=null!==e?0===e.type:d?!1:!(2zd.length&&zd.push(a)}}}var Fd={},Gd=0,Hd=\"_reactListenersID\"+(\"\"+Math.random()).slice(2);\nfunction Id(a){Object.prototype.hasOwnProperty.call(a,Hd)||(a[Hd]=Gd++,Fd[a[Hd]]={});return Fd[a[Hd]]}function Jd(a){a=a||(\"undefined\"!==typeof document?document:void 0);if(\"undefined\"===typeof a)return null;try{return a.activeElement||a.body}catch(b){return a.body}}function Kd(a){for(;a&&a.firstChild;)a=a.firstChild;return a}\nfunction Ld(a,b){var c=Kd(a);a=0;for(var d;c;){if(3===c.nodeType){d=a+c.textContent.length;if(a<=b&&d>=b)return{node:c,offset:b-a};a=d}a:{for(;c;){if(c.nextSibling){c=c.nextSibling;break a}c=c.parentNode}c=void 0}c=Kd(c)}}function Md(a,b){return a&&b?a===b?!0:a&&3===a.nodeType?!1:b&&3===b.nodeType?Md(a,b.parentNode):\"contains\"in a?a.contains(b):a.compareDocumentPosition?!!(a.compareDocumentPosition(b)&16):!1:!1}\nfunction Nd(){for(var a=window,b=Jd();b instanceof a.HTMLIFrameElement;){try{var c=\"string\"===typeof b.contentWindow.location.href}catch(d){c=!1}if(c)a=b.contentWindow;else break;b=Jd(a.document)}return b}function Od(a){var b=a&&a.nodeName&&a.nodeName.toLowerCase();return b&&(\"input\"===b&&(\"text\"===a.type||\"search\"===a.type||\"tel\"===a.type||\"url\"===a.type||\"password\"===a.type)||\"textarea\"===b||\"true\"===a.contentEditable)}\nfunction Pd(){var a=Nd();if(Od(a)){if(\"selectionStart\"in a)var b={start:a.selectionStart,end:a.selectionEnd};else a:{b=(b=a.ownerDocument)&&b.defaultView||window;var c=b.getSelection&&b.getSelection();if(c&&0!==c.rangeCount){b=c.anchorNode;var d=c.anchorOffset,e=c.focusNode;c=c.focusOffset;try{b.nodeType,e.nodeType}catch(A){b=null;break a}var f=0,g=-1,h=-1,l=0,k=0,m=a,p=null;b:for(;;){for(var t;;){m!==b||0!==d&&3!==m.nodeType||(g=f+d);m!==e||0!==c&&3!==m.nodeType||(h=f+c);3===m.nodeType&&(f+=m.nodeValue.length);\nif(null===(t=m.firstChild))break;p=m;m=t}for(;;){if(m===a)break b;p===b&&++l===d&&(g=f);p===e&&++k===c&&(h=f);if(null!==(t=m.nextSibling))break;m=p;p=m.parentNode}m=t}b=-1===g||-1===h?null:{start:g,end:h}}else b=null}b=b||{start:0,end:0}}else b=null;return{focusedElem:a,selectionRange:b}}\nfunction Qd(a){var b=Nd(),c=a.focusedElem,d=a.selectionRange;if(b!==c&&c&&c.ownerDocument&&Md(c.ownerDocument.documentElement,c)){if(null!==d&&Od(c))if(b=d.start,a=d.end,void 0===a&&(a=b),\"selectionStart\"in c)c.selectionStart=b,c.selectionEnd=Math.min(a,c.value.length);else if(a=(b=c.ownerDocument||document)&&b.defaultView||window,a.getSelection){a=a.getSelection();var e=c.textContent.length,f=Math.min(d.start,e);d=void 0===d.end?f:Math.min(d.end,e);!a.extend&&f>d&&(e=d,d=f,f=e);e=Ld(c,f);var g=Ld(c,\nd);e&&g&&(1!==a.rangeCount||a.anchorNode!==e.node||a.anchorOffset!==e.offset||a.focusNode!==g.node||a.focusOffset!==g.offset)&&(b=b.createRange(),b.setStart(e.node,e.offset),a.removeAllRanges(),f>d?(a.addRange(b),a.extend(g.node,g.offset)):(b.setEnd(g.node,g.offset),a.addRange(b)))}b=[];for(a=c;a=a.parentNode;)1===a.nodeType&&b.push({element:a,left:a.scrollLeft,top:a.scrollTop});\"function\"===typeof c.focus&&c.focus();for(c=0;c=document.documentMode,Sd={select:{phasedRegistrationNames:{bubbled:\"onSelect\",captured:\"onSelectCapture\"},dependencies:\"blur contextmenu dragend focus keydown keyup mousedown mouseup selectionchange\".split(\" \")}},Td=null,Ud=null,Vd=null,Wd=!1;\nfunction Xd(a,b){var c=b.window===b?b.document:9===b.nodeType?b:b.ownerDocument;if(Wd||null==Td||Td!==Jd(c))return null;c=Td;\"selectionStart\"in c&&Od(c)?c={start:c.selectionStart,end:c.selectionEnd}:(c=(c.ownerDocument&&c.ownerDocument.defaultView||window).getSelection(),c={anchorNode:c.anchorNode,anchorOffset:c.anchorOffset,focusNode:c.focusNode,focusOffset:c.focusOffset});return Vd&&dd(Vd,c)?null:(Vd=c,a=y.getPooled(Sd.select,Ud,a,b),a.type=\"select\",a.target=Td,Qa(a),a)}\nvar Yd={eventTypes:Sd,extractEvents:function(a,b,c,d){var e=d.window===d?d.document:9===d.nodeType?d:d.ownerDocument,f;if(!(f=!e)){a:{e=Id(e);f=sa.onSelect;for(var g=0;g=b.length?void 0:x(\"93\"),b=b[0]),c=b),null==c&&(c=\"\"));a._wrapperState={initialValue:uc(c)}}\nfunction de(a,b){var c=uc(b.value),d=uc(b.defaultValue);null!=c&&(c=\"\"+c,c!==a.value&&(a.value=c),null==b.defaultValue&&a.defaultValue!==c&&(a.defaultValue=c));null!=d&&(a.defaultValue=\"\"+d)}function ee(a){var b=a.textContent;b===a._wrapperState.initialValue&&(a.value=b)}var fe={html:\"http://www.w3.org/1999/xhtml\",mathml:\"http://www.w3.org/1998/Math/MathML\",svg:\"http://www.w3.org/2000/svg\"};\nfunction ge(a){switch(a){case \"svg\":return\"http://www.w3.org/2000/svg\";case \"math\":return\"http://www.w3.org/1998/Math/MathML\";default:return\"http://www.w3.org/1999/xhtml\"}}function he(a,b){return null==a||\"http://www.w3.org/1999/xhtml\"===a?ge(b):\"http://www.w3.org/2000/svg\"===a&&\"foreignObject\"===b?\"http://www.w3.org/1999/xhtml\":a}\nvar ie=void 0,je=function(a){return\"undefined\"!==typeof MSApp&&MSApp.execUnsafeLocalFunction?function(b,c,d,e){MSApp.execUnsafeLocalFunction(function(){return a(b,c,d,e)})}:a}(function(a,b){if(a.namespaceURI!==fe.svg||\"innerHTML\"in a)a.innerHTML=b;else{ie=ie||document.createElement(\"div\");ie.innerHTML=\"\"+b+\"\";for(b=ie.firstChild;a.firstChild;)a.removeChild(a.firstChild);for(;b.firstChild;)a.appendChild(b.firstChild)}});\nfunction ke(a,b){if(b){var c=a.firstChild;if(c&&c===a.lastChild&&3===c.nodeType){c.nodeValue=b;return}}a.textContent=b}\nvar le={animationIterationCount:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0,\nfloodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},me=[\"Webkit\",\"ms\",\"Moz\",\"O\"];Object.keys(le).forEach(function(a){me.forEach(function(b){b=b+a.charAt(0).toUpperCase()+a.substring(1);le[b]=le[a]})});function ne(a,b,c){return null==b||\"boolean\"===typeof b||\"\"===b?\"\":c||\"number\"!==typeof b||0===b||le.hasOwnProperty(a)&&le[a]?(\"\"+b).trim():b+\"px\"}\nfunction oe(a,b){a=a.style;for(var c in b)if(b.hasOwnProperty(c)){var d=0===c.indexOf(\"--\"),e=ne(c,b[c],d);\"float\"===c&&(c=\"cssFloat\");d?a.setProperty(c,e):a[c]=e}}var pe=n({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});\nfunction qe(a,b){b&&(pe[a]&&(null!=b.children||null!=b.dangerouslySetInnerHTML?x(\"137\",a,\"\"):void 0),null!=b.dangerouslySetInnerHTML&&(null!=b.children?x(\"60\"):void 0,\"object\"===typeof b.dangerouslySetInnerHTML&&\"__html\"in b.dangerouslySetInnerHTML?void 0:x(\"61\")),null!=b.style&&\"object\"!==typeof b.style?x(\"62\",\"\"):void 0)}\nfunction re(a,b){if(-1===a.indexOf(\"-\"))return\"string\"===typeof b.is;switch(a){case \"annotation-xml\":case \"color-profile\":case \"font-face\":case \"font-face-src\":case \"font-face-uri\":case \"font-face-format\":case \"font-face-name\":case \"missing-glyph\":return!1;default:return!0}}\nfunction se(a,b){a=9===a.nodeType||11===a.nodeType?a:a.ownerDocument;var c=Id(a);b=sa[b];for(var d=0;dGe||(a.current=Fe[Ge],Fe[Ge]=null,Ge--)}function G(a,b){Ge++;Fe[Ge]=a.current;a.current=b}var He={},H={current:He},I={current:!1},Ie=He;\nfunction Je(a,b){var c=a.type.contextTypes;if(!c)return He;var d=a.stateNode;if(d&&d.__reactInternalMemoizedUnmaskedChildContext===b)return d.__reactInternalMemoizedMaskedChildContext;var e={},f;for(f in c)e[f]=b[f];d&&(a=a.stateNode,a.__reactInternalMemoizedUnmaskedChildContext=b,a.__reactInternalMemoizedMaskedChildContext=e);return e}function J(a){a=a.childContextTypes;return null!==a&&void 0!==a}function Ke(a){F(I,a);F(H,a)}function Le(a){F(I,a);F(H,a)}\nfunction Me(a,b,c){H.current!==He?x(\"168\"):void 0;G(H,b,a);G(I,c,a)}function Ne(a,b,c){var d=a.stateNode;a=b.childContextTypes;if(\"function\"!==typeof d.getChildContext)return c;d=d.getChildContext();for(var e in d)e in a?void 0:x(\"108\",ic(b)||\"Unknown\",e);return n({},c,d)}function Oe(a){var b=a.stateNode;b=b&&b.__reactInternalMemoizedMergedChildContext||He;Ie=H.current;G(H,b,a);G(I,I.current,a);return!0}\nfunction Pe(a,b,c){var d=a.stateNode;d?void 0:x(\"169\");c?(b=Ne(a,b,Ie),d.__reactInternalMemoizedMergedChildContext=b,F(I,a),F(H,a),G(H,b,a)):F(I,a);G(I,c,a)}var Qe=null,Re=null;function Se(a){return function(b){try{return a(b)}catch(c){}}}\nfunction Te(a){if(\"undefined\"===typeof __REACT_DEVTOOLS_GLOBAL_HOOK__)return!1;var b=__REACT_DEVTOOLS_GLOBAL_HOOK__;if(b.isDisabled||!b.supportsFiber)return!0;try{var c=b.inject(a);Qe=Se(function(a){return b.onCommitFiberRoot(c,a)});Re=Se(function(a){return b.onCommitFiberUnmount(c,a)})}catch(d){}return!0}\nfunction Ue(a,b,c,d){this.tag=a;this.key=c;this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null;this.index=0;this.ref=null;this.pendingProps=b;this.contextDependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null;this.mode=d;this.effectTag=0;this.lastEffect=this.firstEffect=this.nextEffect=null;this.childExpirationTime=this.expirationTime=0;this.alternate=null}function K(a,b,c,d){return new Ue(a,b,c,d)}\nfunction Ve(a){a=a.prototype;return!(!a||!a.isReactComponent)}function We(a){if(\"function\"===typeof a)return Ve(a)?1:0;if(void 0!==a&&null!==a){a=a.$$typeof;if(a===cc)return 11;if(a===ec)return 14}return 2}\nfunction Xe(a,b){var c=a.alternate;null===c?(c=K(a.tag,b,a.key,a.mode),c.elementType=a.elementType,c.type=a.type,c.stateNode=a.stateNode,c.alternate=a,a.alternate=c):(c.pendingProps=b,c.effectTag=0,c.nextEffect=null,c.firstEffect=null,c.lastEffect=null);c.childExpirationTime=a.childExpirationTime;c.expirationTime=a.expirationTime;c.child=a.child;c.memoizedProps=a.memoizedProps;c.memoizedState=a.memoizedState;c.updateQueue=a.updateQueue;c.contextDependencies=a.contextDependencies;c.sibling=a.sibling;\nc.index=a.index;c.ref=a.ref;return c}\nfunction Ye(a,b,c,d,e,f){var g=2;d=a;if(\"function\"===typeof a)Ve(a)&&(g=1);else if(\"string\"===typeof a)g=5;else a:switch(a){case Xb:return Ze(c.children,e,f,b);case bc:return $e(c,e|3,f,b);case Yb:return $e(c,e|2,f,b);case Zb:return a=K(12,c,b,e|4),a.elementType=Zb,a.type=Zb,a.expirationTime=f,a;case dc:return a=K(13,c,b,e),a.elementType=dc,a.type=dc,a.expirationTime=f,a;default:if(\"object\"===typeof a&&null!==a)switch(a.$$typeof){case $b:g=10;break a;case ac:g=9;break a;case cc:g=11;break a;case ec:g=\n14;break a;case fc:g=16;d=null;break a}x(\"130\",null==a?a:typeof a,\"\")}b=K(g,c,b,e);b.elementType=a;b.type=d;b.expirationTime=f;return b}function Ze(a,b,c,d){a=K(7,a,d,b);a.expirationTime=c;return a}function $e(a,b,c,d){a=K(8,a,d,b);b=0===(b&1)?Yb:bc;a.elementType=b;a.type=b;a.expirationTime=c;return a}function af(a,b,c){a=K(6,a,null,b);a.expirationTime=c;return a}\nfunction bf(a,b,c){b=K(4,null!==a.children?a.children:[],a.key,b);b.expirationTime=c;b.stateNode={containerInfo:a.containerInfo,pendingChildren:null,implementation:a.implementation};return b}function cf(a,b){a.didError=!1;var c=a.earliestPendingTime;0===c?a.earliestPendingTime=a.latestPendingTime=b:cb&&(a.latestPendingTime=b);df(b,a)}\nfunction ef(a,b){a.didError=!1;if(0===b)a.earliestPendingTime=0,a.latestPendingTime=0,a.earliestSuspendedTime=0,a.latestSuspendedTime=0,a.latestPingedTime=0;else{bb?a.earliestPendingTime=a.latestPendingTime=0:a.earliestPendingTime>b&&(a.earliestPendingTime=a.latestPendingTime));c=a.earliestSuspendedTime;0===c?cf(a,b):bc&&cf(a,b)}df(0,a)}function ff(a,b){a.didError=!1;a.latestPingedTime>=b&&(a.latestPingedTime=0);var c=a.earliestPendingTime,d=a.latestPendingTime;c===b?a.earliestPendingTime=d===b?a.latestPendingTime=0:d:d===b&&(a.latestPendingTime=c);c=a.earliestSuspendedTime;d=a.latestSuspendedTime;0===c?a.earliestSuspendedTime=a.latestSuspendedTime=b:cb&&(a.latestSuspendedTime=b);df(b,a)}\nfunction gf(a,b){var c=a.earliestPendingTime;a=a.earliestSuspendedTime;c>b&&(b=c);a>b&&(b=a);return b}function df(a,b){var c=b.earliestSuspendedTime,d=b.latestSuspendedTime,e=b.earliestPendingTime,f=b.latestPingedTime;e=0!==e?e:f;0===e&&(0===a||da&&(a=c);b.nextExpirationTimeToWorkOn=e;b.expirationTime=a}function L(a,b){if(a&&a.defaultProps){b=n({},b);a=a.defaultProps;for(var c in a)void 0===b[c]&&(b[c]=a[c])}return b}\nfunction hf(a){var b=a._result;switch(a._status){case 1:return b;case 2:throw b;case 0:throw b;default:a._status=0;b=a._ctor;b=b();b.then(function(b){0===a._status&&(b=b.default,a._status=1,a._result=b)},function(b){0===a._status&&(a._status=2,a._result=b)});switch(a._status){case 1:return a._result;case 2:throw a._result;}a._result=b;throw b;}}var jf=(new aa.Component).refs;\nfunction kf(a,b,c,d){b=a.memoizedState;c=c(d,b);c=null===c||void 0===c?b:n({},b,c);a.memoizedState=c;d=a.updateQueue;null!==d&&0===a.expirationTime&&(d.baseState=c)}\nvar tf={isMounted:function(a){return(a=a._reactInternalFiber)?2===ed(a):!1},enqueueSetState:function(a,b,c){a=a._reactInternalFiber;var d=lf();d=mf(d,a);var e=nf(d);e.payload=b;void 0!==c&&null!==c&&(e.callback=c);of();pf(a,e);qf(a,d)},enqueueReplaceState:function(a,b,c){a=a._reactInternalFiber;var d=lf();d=mf(d,a);var e=nf(d);e.tag=rf;e.payload=b;void 0!==c&&null!==c&&(e.callback=c);of();pf(a,e);qf(a,d)},enqueueForceUpdate:function(a,b){a=a._reactInternalFiber;var c=lf();c=mf(c,a);var d=nf(c);d.tag=\nsf;void 0!==b&&null!==b&&(d.callback=b);of();pf(a,d);qf(a,c)}};function uf(a,b,c,d,e,f,g){a=a.stateNode;return\"function\"===typeof a.shouldComponentUpdate?a.shouldComponentUpdate(d,f,g):b.prototype&&b.prototype.isPureReactComponent?!dd(c,d)||!dd(e,f):!0}\nfunction vf(a,b,c){var d=!1,e=He;var f=b.contextType;\"object\"===typeof f&&null!==f?f=M(f):(e=J(b)?Ie:H.current,d=b.contextTypes,f=(d=null!==d&&void 0!==d)?Je(a,e):He);b=new b(c,f);a.memoizedState=null!==b.state&&void 0!==b.state?b.state:null;b.updater=tf;a.stateNode=b;b._reactInternalFiber=a;d&&(a=a.stateNode,a.__reactInternalMemoizedUnmaskedChildContext=e,a.__reactInternalMemoizedMaskedChildContext=f);return b}\nfunction wf(a,b,c,d){a=b.state;\"function\"===typeof b.componentWillReceiveProps&&b.componentWillReceiveProps(c,d);\"function\"===typeof b.UNSAFE_componentWillReceiveProps&&b.UNSAFE_componentWillReceiveProps(c,d);b.state!==a&&tf.enqueueReplaceState(b,b.state,null)}\nfunction xf(a,b,c,d){var e=a.stateNode;e.props=c;e.state=a.memoizedState;e.refs=jf;var f=b.contextType;\"object\"===typeof f&&null!==f?e.context=M(f):(f=J(b)?Ie:H.current,e.context=Je(a,f));f=a.updateQueue;null!==f&&(yf(a,f,c,e,d),e.state=a.memoizedState);f=b.getDerivedStateFromProps;\"function\"===typeof f&&(kf(a,b,f,c),e.state=a.memoizedState);\"function\"===typeof b.getDerivedStateFromProps||\"function\"===typeof e.getSnapshotBeforeUpdate||\"function\"!==typeof e.UNSAFE_componentWillMount&&\"function\"!==\ntypeof e.componentWillMount||(b=e.state,\"function\"===typeof e.componentWillMount&&e.componentWillMount(),\"function\"===typeof e.UNSAFE_componentWillMount&&e.UNSAFE_componentWillMount(),b!==e.state&&tf.enqueueReplaceState(e,e.state,null),f=a.updateQueue,null!==f&&(yf(a,f,c,e,d),e.state=a.memoizedState));\"function\"===typeof e.componentDidMount&&(a.effectTag|=4)}var zf=Array.isArray;\nfunction Af(a,b,c){a=c.ref;if(null!==a&&\"function\"!==typeof a&&\"object\"!==typeof a){if(c._owner){c=c._owner;var d=void 0;c&&(1!==c.tag?x(\"309\"):void 0,d=c.stateNode);d?void 0:x(\"147\",a);var e=\"\"+a;if(null!==b&&null!==b.ref&&\"function\"===typeof b.ref&&b.ref._stringRef===e)return b.ref;b=function(a){var b=d.refs;b===jf&&(b=d.refs={});null===a?delete b[e]:b[e]=a};b._stringRef=e;return b}\"string\"!==typeof a?x(\"284\"):void 0;c._owner?void 0:x(\"290\",a)}return a}\nfunction Bf(a,b){\"textarea\"!==a.type&&x(\"31\",\"[object Object]\"===Object.prototype.toString.call(b)?\"object with keys {\"+Object.keys(b).join(\", \")+\"}\":b,\"\")}\nfunction Cf(a){function b(b,c){if(a){var d=b.lastEffect;null!==d?(d.nextEffect=c,b.lastEffect=c):b.firstEffect=b.lastEffect=c;c.nextEffect=null;c.effectTag=8}}function c(c,d){if(!a)return null;for(;null!==d;)b(c,d),d=d.sibling;return null}function d(a,b){for(a=new Map;null!==b;)null!==b.key?a.set(b.key,b):a.set(b.index,b),b=b.sibling;return a}function e(a,b,c){a=Xe(a,b,c);a.index=0;a.sibling=null;return a}function f(b,c,d){b.index=d;if(!a)return c;d=b.alternate;if(null!==d)return d=d.index,du?(B=q,q=null):B=q.sibling;var w=t(e,q,h[u],k);if(null===w){null===q&&(q=B);break}a&&\nq&&null===w.alternate&&b(e,q);g=f(w,g,u);null===m?l=w:m.sibling=w;m=w;q=B}if(u===h.length)return c(e,q),l;if(null===q){for(;uu?(B=q,q=null):B=q.sibling;var v=t(e,q,w.value,k);if(null===v){q||(q=B);break}a&&q&&null===v.alternate&&b(e,q);g=f(v,g,u);null===m?l=v:m.sibling=v;m=v;q=B}if(w.done)return c(e,q),l;if(null===q){for(;!w.done;u++,w=h.next())w=p(e,w.value,k),null!==w&&(g=f(w,g,u),null===m?l=w:m.sibling=w,m=w);return l}for(q=d(e,q);!w.done;u++,w=h.next())w=A(q,e,u,w.value,k),null!==w&&(a&&null!==w.alternate&&q.delete(null===w.key?u:\nw.key),g=f(w,g,u),null===m?l=w:m.sibling=w,m=w);a&&q.forEach(function(a){return b(e,a)});return l}return function(a,d,f,h){var k=\"object\"===typeof f&&null!==f&&f.type===Xb&&null===f.key;k&&(f=f.props.children);var l=\"object\"===typeof f&&null!==f;if(l)switch(f.$$typeof){case Vb:a:{l=f.key;for(k=d;null!==k;){if(k.key===l)if(7===k.tag?f.type===Xb:k.elementType===f.type){c(a,k.sibling);d=e(k,f.type===Xb?f.props.children:f.props,h);d.ref=Af(a,k,f);d.return=a;a=d;break a}else{c(a,k);break}else b(a,k);k=\nk.sibling}f.type===Xb?(d=Ze(f.props.children,a.mode,h,f.key),d.return=a,a=d):(h=Ye(f.type,f.key,f.props,null,a.mode,h),h.ref=Af(a,d,f),h.return=a,a=h)}return g(a);case Wb:a:{for(k=f.key;null!==d;){if(d.key===k)if(4===d.tag&&d.stateNode.containerInfo===f.containerInfo&&d.stateNode.implementation===f.implementation){c(a,d.sibling);d=e(d,f.children||[],h);d.return=a;a=d;break a}else{c(a,d);break}else b(a,d);d=d.sibling}d=bf(f,a.mode,h);d.return=a;a=d}return g(a)}if(\"string\"===typeof f||\"number\"===typeof f)return f=\n\"\"+f,null!==d&&6===d.tag?(c(a,d.sibling),d=e(d,f,h),d.return=a,a=d):(c(a,d),d=af(f,a.mode,h),d.return=a,a=d),g(a);if(zf(f))return v(a,d,f,h);if(hc(f))return R(a,d,f,h);l&&Bf(a,f);if(\"undefined\"===typeof f&&!k)switch(a.tag){case 1:case 0:h=a.type,x(\"152\",h.displayName||h.name||\"Component\")}return c(a,d)}}var Df=Cf(!0),Ef=Cf(!1),Ff={},N={current:Ff},Gf={current:Ff},Hf={current:Ff};function If(a){a===Ff?x(\"174\"):void 0;return a}\nfunction Jf(a,b){G(Hf,b,a);G(Gf,a,a);G(N,Ff,a);var c=b.nodeType;switch(c){case 9:case 11:b=(b=b.documentElement)?b.namespaceURI:he(null,\"\");break;default:c=8===c?b.parentNode:b,b=c.namespaceURI||null,c=c.tagName,b=he(b,c)}F(N,a);G(N,b,a)}function Kf(a){F(N,a);F(Gf,a);F(Hf,a)}function Lf(a){If(Hf.current);var b=If(N.current);var c=he(b,a.type);b!==c&&(G(Gf,a,a),G(N,c,a))}function Mf(a){Gf.current===a&&(F(N,a),F(Gf,a))}\nvar Nf=0,Of=2,Pf=4,Qf=8,Rf=16,Sf=32,Tf=64,Uf=128,Vf=Tb.ReactCurrentDispatcher,Wf=0,Xf=null,O=null,P=null,Yf=null,Q=null,Zf=null,$f=0,ag=null,bg=0,cg=!1,dg=null,eg=0;function fg(){x(\"321\")}function gg(a,b){if(null===b)return!1;for(var c=0;c$f&&($f=m)):f=l.eagerReducer===a?l.eagerState:a(f,l.action);g=l;l=l.next}while(null!==l&&l!==d);k||(h=g,e=f);bd(f,b.memoizedState)||(qg=!0);b.memoizedState=f;b.baseUpdate=h;b.baseState=e;c.lastRenderedState=f}return[b.memoizedState,c.dispatch]}\nfunction rg(a,b,c,d){a={tag:a,create:b,destroy:c,deps:d,next:null};null===ag?(ag={lastEffect:null},ag.lastEffect=a.next=a):(b=ag.lastEffect,null===b?ag.lastEffect=a.next=a:(c=b.next,b.next=a,a.next=c,ag.lastEffect=a));return a}function sg(a,b,c,d){var e=mg();bg|=a;e.memoizedState=rg(b,c,void 0,void 0===d?null:d)}\nfunction tg(a,b,c,d){var e=ng();d=void 0===d?null:d;var f=void 0;if(null!==O){var g=O.memoizedState;f=g.destroy;if(null!==d&&gg(d,g.deps)){rg(Nf,c,f,d);return}}bg|=a;e.memoizedState=rg(b,c,f,d)}function ug(a,b){if(\"function\"===typeof b)return a=a(),b(a),function(){b(null)};if(null!==b&&void 0!==b)return a=a(),b.current=a,function(){b.current=null}}function vg(){}\nfunction wg(a,b,c){25>eg?void 0:x(\"301\");var d=a.alternate;if(a===Xf||null!==d&&d===Xf)if(cg=!0,a={expirationTime:Wf,action:c,eagerReducer:null,eagerState:null,next:null},null===dg&&(dg=new Map),c=dg.get(b),void 0===c)dg.set(b,a);else{for(b=c;null!==b.next;)b=b.next;b.next=a}else{of();var e=lf();e=mf(e,a);var f={expirationTime:e,action:c,eagerReducer:null,eagerState:null,next:null},g=b.last;if(null===g)f.next=f;else{var h=g.next;null!==h&&(f.next=h);g.next=f}b.last=f;if(0===a.expirationTime&&(null===\nd||0===d.expirationTime)&&(d=b.lastRenderedReducer,null!==d))try{var l=b.lastRenderedState,k=d(l,c);f.eagerReducer=d;f.eagerState=k;if(bd(k,l))return}catch(m){}finally{}qf(a,e)}}\nvar kg={readContext:M,useCallback:fg,useContext:fg,useEffect:fg,useImperativeHandle:fg,useLayoutEffect:fg,useMemo:fg,useReducer:fg,useRef:fg,useState:fg,useDebugValue:fg},ig={readContext:M,useCallback:function(a,b){mg().memoizedState=[a,void 0===b?null:b];return a},useContext:M,useEffect:function(a,b){return sg(516,Uf|Tf,a,b)},useImperativeHandle:function(a,b,c){c=null!==c&&void 0!==c?c.concat([a]):null;return sg(4,Pf|Sf,ug.bind(null,b,a),c)},useLayoutEffect:function(a,b){return sg(4,Pf|Sf,a,b)},\nuseMemo:function(a,b){var c=mg();b=void 0===b?null:b;a=a();c.memoizedState=[a,b];return a},useReducer:function(a,b,c){var d=mg();b=void 0!==c?c(b):b;d.memoizedState=d.baseState=b;a=d.queue={last:null,dispatch:null,lastRenderedReducer:a,lastRenderedState:b};a=a.dispatch=wg.bind(null,Xf,a);return[d.memoizedState,a]},useRef:function(a){var b=mg();a={current:a};return b.memoizedState=a},useState:function(a){var b=mg();\"function\"===typeof a&&(a=a());b.memoizedState=b.baseState=a;a=b.queue={last:null,dispatch:null,\nlastRenderedReducer:og,lastRenderedState:a};a=a.dispatch=wg.bind(null,Xf,a);return[b.memoizedState,a]},useDebugValue:vg},jg={readContext:M,useCallback:function(a,b){var c=ng();b=void 0===b?null:b;var d=c.memoizedState;if(null!==d&&null!==b&&gg(b,d[1]))return d[0];c.memoizedState=[a,b];return a},useContext:M,useEffect:function(a,b){return tg(516,Uf|Tf,a,b)},useImperativeHandle:function(a,b,c){c=null!==c&&void 0!==c?c.concat([a]):null;return tg(4,Pf|Sf,ug.bind(null,b,a),c)},useLayoutEffect:function(a,\nb){return tg(4,Pf|Sf,a,b)},useMemo:function(a,b){var c=ng();b=void 0===b?null:b;var d=c.memoizedState;if(null!==d&&null!==b&&gg(b,d[1]))return d[0];a=a();c.memoizedState=[a,b];return a},useReducer:pg,useRef:function(){return ng().memoizedState},useState:function(a){return pg(og,a)},useDebugValue:vg},xg=null,yg=null,zg=!1;\nfunction Ag(a,b){var c=K(5,null,null,0);c.elementType=\"DELETED\";c.type=\"DELETED\";c.stateNode=b;c.return=a;c.effectTag=8;null!==a.lastEffect?(a.lastEffect.nextEffect=c,a.lastEffect=c):a.firstEffect=a.lastEffect=c}function Bg(a,b){switch(a.tag){case 5:var c=a.type;b=1!==b.nodeType||c.toLowerCase()!==b.nodeName.toLowerCase()?null:b;return null!==b?(a.stateNode=b,!0):!1;case 6:return b=\"\"===a.pendingProps||3!==b.nodeType?null:b,null!==b?(a.stateNode=b,!0):!1;case 13:return!1;default:return!1}}\nfunction Cg(a){if(zg){var b=yg;if(b){var c=b;if(!Bg(a,b)){b=De(c);if(!b||!Bg(a,b)){a.effectTag|=2;zg=!1;xg=a;return}Ag(xg,c)}xg=a;yg=Ee(b)}else a.effectTag|=2,zg=!1,xg=a}}function Dg(a){for(a=a.return;null!==a&&5!==a.tag&&3!==a.tag&&18!==a.tag;)a=a.return;xg=a}function Eg(a){if(a!==xg)return!1;if(!zg)return Dg(a),zg=!0,!1;var b=a.type;if(5!==a.tag||\"head\"!==b&&\"body\"!==b&&!xe(b,a.memoizedProps))for(b=yg;b;)Ag(a,b),b=De(b);Dg(a);yg=xg?De(a.stateNode):null;return!0}function Fg(){yg=xg=null;zg=!1}\nvar Gg=Tb.ReactCurrentOwner,qg=!1;function S(a,b,c,d){b.child=null===a?Ef(b,null,c,d):Df(b,a.child,c,d)}function Hg(a,b,c,d,e){c=c.render;var f=b.ref;Ig(b,e);d=hg(a,b,c,d,f,e);if(null!==a&&!qg)return b.updateQueue=a.updateQueue,b.effectTag&=-517,a.expirationTime<=e&&(a.expirationTime=0),Jg(a,b,e);b.effectTag|=1;S(a,b,d,e);return b.child}\nfunction Kg(a,b,c,d,e,f){if(null===a){var g=c.type;if(\"function\"===typeof g&&!Ve(g)&&void 0===g.defaultProps&&null===c.compare&&void 0===c.defaultProps)return b.tag=15,b.type=g,Lg(a,b,g,d,e,f);a=Ye(c.type,null,d,null,b.mode,f);a.ref=b.ref;a.return=b;return b.child=a}g=a.child;if(e=c)return Sg(a,b,c);b=Jg(a,b,c);return null!==b?b.sibling:null}}return Jg(a,b,c)}}else qg=!1;b.expirationTime=0;switch(b.tag){case 2:d=\nb.elementType;null!==a&&(a.alternate=null,b.alternate=null,b.effectTag|=2);a=b.pendingProps;var e=Je(b,H.current);Ig(b,c);e=hg(null,b,d,a,e,c);b.effectTag|=1;if(\"object\"===typeof e&&null!==e&&\"function\"===typeof e.render&&void 0===e.$$typeof){b.tag=1;lg();if(J(d)){var f=!0;Oe(b)}else f=!1;b.memoizedState=null!==e.state&&void 0!==e.state?e.state:null;var g=d.getDerivedStateFromProps;\"function\"===typeof g&&kf(b,d,g,a);e.updater=tf;b.stateNode=e;e._reactInternalFiber=b;xf(b,d,a,c);b=Qg(null,b,d,!0,f,\nc)}else b.tag=0,S(null,b,e,c),b=b.child;return b;case 16:e=b.elementType;null!==a&&(a.alternate=null,b.alternate=null,b.effectTag|=2);f=b.pendingProps;a=hf(e);b.type=a;e=b.tag=We(a);f=L(a,f);g=void 0;switch(e){case 0:g=Mg(null,b,a,f,c);break;case 1:g=Og(null,b,a,f,c);break;case 11:g=Hg(null,b,a,f,c);break;case 14:g=Kg(null,b,a,L(a.type,f),d,c);break;default:x(\"306\",a,\"\")}return g;case 0:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:L(d,e),Mg(a,b,d,e,c);case 1:return d=b.type,e=b.pendingProps,\ne=b.elementType===d?e:L(d,e),Og(a,b,d,e,c);case 3:Rg(b);d=b.updateQueue;null===d?x(\"282\"):void 0;e=b.memoizedState;e=null!==e?e.element:null;yf(b,d,b.pendingProps,null,c);d=b.memoizedState.element;if(d===e)Fg(),b=Jg(a,b,c);else{e=b.stateNode;if(e=(null===a||null===a.child)&&e.hydrate)yg=Ee(b.stateNode.containerInfo),xg=b,e=zg=!0;e?(b.effectTag|=2,b.child=Ef(b,null,d,c)):(S(a,b,d,c),Fg());b=b.child}return b;case 5:return Lf(b),null===a&&Cg(b),d=b.type,e=b.pendingProps,f=null!==a?a.memoizedProps:null,\ng=e.children,xe(d,e)?g=null:null!==f&&xe(d,f)&&(b.effectTag|=16),Ng(a,b),1!==c&&b.mode&1&&e.hidden?(b.expirationTime=b.childExpirationTime=1,b=null):(S(a,b,g,c),b=b.child),b;case 6:return null===a&&Cg(b),null;case 13:return Sg(a,b,c);case 4:return Jf(b,b.stateNode.containerInfo),d=b.pendingProps,null===a?b.child=Df(b,null,d,c):S(a,b,d,c),b.child;case 11:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:L(d,e),Hg(a,b,d,e,c);case 7:return S(a,b,b.pendingProps,c),b.child;case 8:return S(a,b,b.pendingProps.children,\nc),b.child;case 12:return S(a,b,b.pendingProps.children,c),b.child;case 10:a:{d=b.type._context;e=b.pendingProps;g=b.memoizedProps;f=e.value;Ug(b,f);if(null!==g){var h=g.value;f=bd(h,f)?0:(\"function\"===typeof d._calculateChangedBits?d._calculateChangedBits(h,f):1073741823)|0;if(0===f){if(g.children===e.children&&!I.current){b=Jg(a,b,c);break a}}else for(h=b.child,null!==h&&(h.return=b);null!==h;){var l=h.contextDependencies;if(null!==l){g=h.child;for(var k=l.first;null!==k;){if(k.context===d&&0!==\n(k.observedBits&f)){1===h.tag&&(k=nf(c),k.tag=sf,pf(h,k));h.expirationTime=b&&(qg=!0);a.contextDependencies=null}\nfunction M(a,b){if(Yg!==a&&!1!==b&&0!==b){if(\"number\"!==typeof b||1073741823===b)Yg=a,b=1073741823;b={context:a,observedBits:b,next:null};null===Xg?(null===Wg?x(\"308\"):void 0,Xg=b,Wg.contextDependencies={first:b,expirationTime:0}):Xg=Xg.next=b}return a._currentValue}var $g=0,rf=1,sf=2,ah=3,Pg=!1;function bh(a){return{baseState:a,firstUpdate:null,lastUpdate:null,firstCapturedUpdate:null,lastCapturedUpdate:null,firstEffect:null,lastEffect:null,firstCapturedEffect:null,lastCapturedEffect:null}}\nfunction ch(a){return{baseState:a.baseState,firstUpdate:a.firstUpdate,lastUpdate:a.lastUpdate,firstCapturedUpdate:null,lastCapturedUpdate:null,firstEffect:null,lastEffect:null,firstCapturedEffect:null,lastCapturedEffect:null}}function nf(a){return{expirationTime:a,tag:$g,payload:null,callback:null,next:null,nextEffect:null}}function dh(a,b){null===a.lastUpdate?a.firstUpdate=a.lastUpdate=b:(a.lastUpdate.next=b,a.lastUpdate=b)}\nfunction pf(a,b){var c=a.alternate;if(null===c){var d=a.updateQueue;var e=null;null===d&&(d=a.updateQueue=bh(a.memoizedState))}else d=a.updateQueue,e=c.updateQueue,null===d?null===e?(d=a.updateQueue=bh(a.memoizedState),e=c.updateQueue=bh(c.memoizedState)):d=a.updateQueue=ch(e):null===e&&(e=c.updateQueue=ch(d));null===e||d===e?dh(d,b):null===d.lastUpdate||null===e.lastUpdate?(dh(d,b),dh(e,b)):(dh(d,b),e.lastUpdate=b)}\nfunction eh(a,b){var c=a.updateQueue;c=null===c?a.updateQueue=bh(a.memoizedState):fh(a,c);null===c.lastCapturedUpdate?c.firstCapturedUpdate=c.lastCapturedUpdate=b:(c.lastCapturedUpdate.next=b,c.lastCapturedUpdate=b)}function fh(a,b){var c=a.alternate;null!==c&&b===c.updateQueue&&(b=a.updateQueue=ch(b));return b}\nfunction gh(a,b,c,d,e,f){switch(c.tag){case rf:return a=c.payload,\"function\"===typeof a?a.call(f,d,e):a;case ah:a.effectTag=a.effectTag&-2049|64;case $g:a=c.payload;e=\"function\"===typeof a?a.call(f,d,e):a;if(null===e||void 0===e)break;return n({},d,e);case sf:Pg=!0}return d}\nfunction yf(a,b,c,d,e){Pg=!1;b=fh(a,b);for(var f=b.baseState,g=null,h=0,l=b.firstUpdate,k=f;null!==l;){var m=l.expirationTime;md?e:d);Ih.current=null;d=void 0;1c?b:c;0===b&&(Fh=null);$h(a,b)}\nfunction ai(a){for(;;){var b=a.alternate,c=a.return,d=a.sibling;if(0===(a.effectTag&1024)){T=a;a:{var e=b;b=a;var f=U;var g=b.pendingProps;switch(b.tag){case 2:break;case 16:break;case 15:case 0:break;case 1:J(b.type)&&Ke(b);break;case 3:Kf(b);Le(b);g=b.stateNode;g.pendingContext&&(g.context=g.pendingContext,g.pendingContext=null);if(null===e||null===e.child)Eg(b),b.effectTag&=-3;mh(b);break;case 5:Mf(b);var h=If(Hf.current);f=b.type;if(null!==e&&null!=b.stateNode)nh(e,b,f,g,h),e.ref!==b.ref&&(b.effectTag|=\n128);else if(g){var l=If(N.current);if(Eg(b)){g=b;e=g.stateNode;var k=g.type,m=g.memoizedProps,p=h;e[Fa]=g;e[Ga]=m;f=void 0;h=k;switch(h){case \"iframe\":case \"object\":E(\"load\",e);break;case \"video\":case \"audio\":for(k=0;k\\x3c/script>\",k=e.removeChild(e.firstChild)):\"string\"===typeof e.is?k=k.createElement(p,{is:e.is}):(k=k.createElement(p),\"select\"===p&&(p=k,e.multiple?p.multiple=!0:e.size&&(p.size=e.size))):k=k.createElementNS(l,p);e=k;e[Fa]=m;e[Ga]=g;lh(e,b,!1,!1);p=e;k=f;m=g;var t=h,A=re(k,m);switch(k){case \"iframe\":case \"object\":E(\"load\",\np);h=m;break;case \"video\":case \"audio\":for(h=0;hg&&(g=e),h>g&&(g=h),f=f.sibling;b.childExpirationTime=g}if(null!==T)return T;null!==c&&0===(c.effectTag&1024)&&(null===c.firstEffect&&\n(c.firstEffect=a.firstEffect),null!==a.lastEffect&&(null!==c.lastEffect&&(c.lastEffect.nextEffect=a.firstEffect),c.lastEffect=a.lastEffect),1=v)t=0;else if(-1===t||v component higher in the tree to provide a loading indicator or placeholder to display.\"+jc(k))}Nh=!0;m=jh(m,k);h=l;do{switch(h.tag){case 3:h.effectTag|=2048;h.expirationTime=g;g=Ch(h,m,g);eh(h,g);break a;case 1:if(t=m,A=h.type,k=h.stateNode,0===(h.effectTag&64)&&(\"function\"===typeof A.getDerivedStateFromError||null!==k&&\"function\"===typeof k.componentDidCatch&&(null===Fh||!Fh.has(k)))){h.effectTag|=2048;\nh.expirationTime=g;g=Eh(h,t,g);eh(h,g);break a}}h=h.return}while(null!==h)}T=ai(f);continue}}}break}while(1);Kh=!1;Hh.current=c;Yg=Xg=Wg=null;lg();if(e)Lh=null,a.finishedWork=null;else if(null!==T)a.finishedWork=null;else{c=a.current.alternate;null===c?x(\"281\"):void 0;Lh=null;if(Nh){e=a.latestPendingTime;f=a.latestSuspendedTime;g=a.latestPingedTime;if(0!==e&&eb?0:b)):(a.pendingCommitExpirationTime=d,a.finishedWork=c)}}\nfunction sh(a,b){for(var c=a.return;null!==c;){switch(c.tag){case 1:var d=c.stateNode;if(\"function\"===typeof c.type.getDerivedStateFromError||\"function\"===typeof d.componentDidCatch&&(null===Fh||!Fh.has(d))){a=jh(b,a);a=Eh(c,a,1073741823);pf(c,a);qf(c,1073741823);return}break;case 3:a=jh(b,a);a=Ch(c,a,1073741823);pf(c,a);qf(c,1073741823);return}c=c.return}3===a.tag&&(c=jh(b,a),c=Ch(a,c,1073741823),pf(a,c),qf(a,1073741823))}\nfunction mf(a,b){var c=r.unstable_getCurrentPriorityLevel(),d=void 0;if(0===(b.mode&1))d=1073741823;else if(Kh&&!Oh)d=U;else{switch(c){case r.unstable_ImmediatePriority:d=1073741823;break;case r.unstable_UserBlockingPriority:d=1073741822-10*(((1073741822-a+15)/10|0)+1);break;case r.unstable_NormalPriority:d=1073741822-25*(((1073741822-a+500)/25|0)+1);break;case r.unstable_LowPriority:case r.unstable_IdlePriority:d=1;break;default:x(\"313\")}null!==Lh&&d===U&&--d}c===r.unstable_UserBlockingPriority&&\n(0===gi||d=d){a.didError=!1;b=a.latestPingedTime;if(0===b||b>c)a.latestPingedTime=c;df(c,a);c=a.expirationTime;0!==c&&Xh(a,c)}}function Ah(a,b){var c=a.stateNode;null!==c&&c.delete(b);b=lf();b=mf(b,a);a=hi(a,b);null!==a&&(cf(a,b),b=a.expirationTime,0!==b&&Xh(a,b))}\nfunction hi(a,b){a.expirationTimeU&&Sh(),cf(a,b),Kh&&!Oh&&Lh===a||Xh(a,a.expirationTime),ii>ji&&(ii=0,x(\"185\")))}function ki(a,b,c,d,e){return r.unstable_runWithPriority(r.unstable_ImmediatePriority,function(){return a(b,c,d,e)})}var li=null,Y=null,mi=0,ni=void 0,W=!1,oi=null,Z=0,gi=0,pi=!1,qi=null,X=!1,ri=!1,si=null,ti=r.unstable_now(),ui=1073741822-(ti/10|0),vi=ui,ji=50,ii=0,wi=null;function xi(){ui=1073741822-((r.unstable_now()-ti)/10|0)}\nfunction yi(a,b){if(0!==mi){if(ba.expirationTime&&(a.expirationTime=b);W||(X?ri&&(oi=a,Z=1073741823,Di(a,1073741823,!1)):1073741823===b?Yh(1073741823,!1):yi(a,b))}\nfunction Ci(){var a=0,b=null;if(null!==Y)for(var c=Y,d=li;null!==d;){var e=d.expirationTime;if(0===e){null===c||null===Y?x(\"244\"):void 0;if(d===d.nextScheduledRoot){li=Y=d.nextScheduledRoot=null;break}else if(d===li)li=e=d.nextScheduledRoot,Y.nextScheduledRoot=e,d.nextScheduledRoot=null;else if(d===Y){Y=c;Y.nextScheduledRoot=li;d.nextScheduledRoot=null;break}else c.nextScheduledRoot=d.nextScheduledRoot,d.nextScheduledRoot=null;d=c.nextScheduledRoot}else{e>a&&(a=e,b=d);if(d===Y)break;if(1073741823===\na)break;c=d;d=d.nextScheduledRoot}}oi=b;Z=a}var Ei=!1;function di(){return Ei?!0:r.unstable_shouldYield()?Ei=!0:!1}function zi(){try{if(!di()&&null!==li){xi();var a=li;do{var b=a.expirationTime;0!==b&&ui<=b&&(a.nextExpirationTimeToWorkOn=ui);a=a.nextScheduledRoot}while(a!==li)}Yh(0,!0)}finally{Ei=!1}}\nfunction Yh(a,b){Ci();if(b)for(xi(),vi=ui;null!==oi&&0!==Z&&a<=Z&&!(Ei&&ui>Z);)Di(oi,Z,ui>Z),Ci(),xi(),vi=ui;else for(;null!==oi&&0!==Z&&a<=Z;)Di(oi,Z,!1),Ci();b&&(mi=0,ni=null);0!==Z&&yi(oi,Z);ii=0;wi=null;if(null!==si)for(a=si,si=null,b=0;b=c&&(null===si?si=[d]:si.push(d),d._defer)){a.finishedWork=b;a.expirationTime=0;return}a.finishedWork=null;a===wi?ii++:(wi=a,ii=0);r.unstable_runWithPriority(r.unstable_ImmediatePriority,function(){Zh(a,b)})}function Dh(a){null===oi?x(\"246\"):void 0;oi.expirationTime=0;pi||(pi=!0,qi=a)}function Gi(a,b){var c=X;X=!0;try{return a(b)}finally{(X=c)||W||Yh(1073741823,!1)}}\nfunction Hi(a,b){if(X&&!ri){ri=!0;try{return a(b)}finally{ri=!1}}return a(b)}function Ii(a,b,c){X||W||0===gi||(Yh(gi,!1),gi=0);var d=X;X=!0;try{return r.unstable_runWithPriority(r.unstable_UserBlockingPriority,function(){return a(b,c)})}finally{(X=d)||W||Yh(1073741823,!1)}}\nfunction Ji(a,b,c,d,e){var f=b.current;a:if(c){c=c._reactInternalFiber;b:{2===ed(c)&&1===c.tag?void 0:x(\"170\");var g=c;do{switch(g.tag){case 3:g=g.stateNode.context;break b;case 1:if(J(g.type)){g=g.stateNode.__reactInternalMemoizedMergedChildContext;break b}}g=g.return}while(null!==g);x(\"171\");g=void 0}if(1===c.tag){var h=c.type;if(J(h)){c=Ne(c,h,g);break a}}c=g}else c=He;null===b.context?b.context=c:b.pendingContext=c;b=e;e=nf(d);e.payload={element:a};b=void 0===b?null:b;null!==b&&(e.callback=b);\nof();pf(f,e);qf(f,d);return d}function Ki(a,b,c,d){var e=b.current,f=lf();e=mf(f,e);return Ji(a,b,c,e,d)}function Li(a){a=a.current;if(!a.child)return null;switch(a.child.tag){case 5:return a.child.stateNode;default:return a.child.stateNode}}function Mi(a,b,c){var d=3=Jh&&(b=Jh-1);this._expirationTime=Jh=b;this._root=a;this._callbacks=this._next=null;this._hasChildren=this._didComplete=!1;this._children=null;this._defer=!0}Ni.prototype.render=function(a){this._defer?void 0:x(\"250\");this._hasChildren=!0;this._children=a;var b=this._root._internalRoot,c=this._expirationTime,d=new Oi;Ji(a,b,null,c,d._onCommit);return d};\nNi.prototype.then=function(a){if(this._didComplete)a();else{var b=this._callbacks;null===b&&(b=this._callbacks=[]);b.push(a)}};\nNi.prototype.commit=function(){var a=this._root._internalRoot,b=a.firstBatch;this._defer&&null!==b?void 0:x(\"251\");if(this._hasChildren){var c=this._expirationTime;if(b!==this){this._hasChildren&&(c=this._expirationTime=b._expirationTime,this.render(this._children));for(var d=null,e=b;e!==this;)d=e,e=e._next;null===d?x(\"251\"):void 0;d._next=e._next;this._next=b;a.firstBatch=this}this._defer=!1;Bi(a,c);b=this._next;this._next=null;b=a.firstBatch=b;null!==b&&b._hasChildren&&b.render(b._children)}else this._next=\nnull,this._defer=!1};Ni.prototype._onComplete=function(){if(!this._didComplete){this._didComplete=!0;var a=this._callbacks;if(null!==a)for(var b=0;b=b;)c=d,d=d._next;a._next=d;null!==c&&(c._next=a)}return a};function Qi(a){return!(!a||1!==a.nodeType&&9!==a.nodeType&&11!==a.nodeType&&(8!==a.nodeType||\" react-mount-point-unstable \"!==a.nodeValue))}Gb=Gi;Hb=Ii;Ib=function(){W||0===gi||(Yh(gi,!1),gi=0)};\nfunction Ri(a,b){b||(b=a?9===a.nodeType?a.documentElement:a.firstChild:null,b=!(!b||1!==b.nodeType||!b.hasAttribute(\"data-reactroot\")));if(!b)for(var c;c=a.lastChild;)a.removeChild(c);return new Pi(a,!1,b)}\nfunction Si(a,b,c,d,e){var f=c._reactRootContainer;if(f){if(\"function\"===typeof e){var g=e;e=function(){var a=Li(f._internalRoot);g.call(a)}}null!=a?f.legacy_renderSubtreeIntoContainer(a,b,e):f.render(b,e)}else{f=c._reactRootContainer=Ri(c,d);if(\"function\"===typeof e){var h=e;e=function(){var a=Li(f._internalRoot);h.call(a)}}Hi(function(){null!=a?f.legacy_renderSubtreeIntoContainer(a,b,e):f.render(b,e)})}return Li(f._internalRoot)}\nfunction Ti(a,b){var c=2 {\n const context = createContext();\n context.displayName = name;\n\n return context;\n};\n\nconst context = /*#__PURE__*/ createNamedContext(\"Router\");\nexport default context;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport warning from \"tiny-warning\";\n\nimport RouterContext from \"./RouterContext\";\n\n/**\n * The public API for putting history on context.\n */\nclass Router extends React.Component {\n static computeRootMatch(pathname) {\n return { path: \"/\", url: \"/\", params: {}, isExact: pathname === \"/\" };\n }\n\n constructor(props) {\n super(props);\n\n this.state = {\n location: props.history.location\n };\n\n // This is a bit of a hack. We have to start listening for location\n // changes here in the constructor in case there are any s\n // on the initial render. If there are, they will replace/push when\n // they mount and since cDM fires in children before parents, we may\n // get a new location before the is mounted.\n this._isMounted = false;\n this._pendingLocation = null;\n\n if (!props.staticContext) {\n this.unlisten = props.history.listen(location => {\n if (this._isMounted) {\n this.setState({ location });\n } else {\n this._pendingLocation = location;\n }\n });\n }\n }\n\n componentDidMount() {\n this._isMounted = true;\n\n if (this._pendingLocation) {\n this.setState({ location: this._pendingLocation });\n }\n }\n\n componentWillUnmount() {\n if (this.unlisten) this.unlisten();\n }\n\n render() {\n return (\n \n );\n }\n}\n\nif (__DEV__) {\n Router.propTypes = {\n children: PropTypes.node,\n history: PropTypes.object.isRequired,\n staticContext: PropTypes.object\n };\n\n Router.prototype.componentDidUpdate = function(prevProps) {\n warning(\n prevProps.history === this.props.history,\n \"You cannot change \"\n );\n };\n}\n\nexport default Router;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport { createMemoryHistory as createHistory } from \"history\";\nimport warning from \"tiny-warning\";\n\nimport Router from \"./Router\";\n\n/**\n * The public API for a that stores location in memory.\n */\nclass MemoryRouter extends React.Component {\n history = createHistory(this.props);\n\n render() {\n return ;\n }\n}\n\nif (__DEV__) {\n MemoryRouter.propTypes = {\n initialEntries: PropTypes.array,\n initialIndex: PropTypes.number,\n getUserConfirmation: PropTypes.func,\n keyLength: PropTypes.number,\n children: PropTypes.node\n };\n\n MemoryRouter.prototype.componentDidMount = function() {\n warning(\n !this.props.history,\n \" ignores the history prop. To use a custom history, \" +\n \"use `import { Router }` instead of `import { MemoryRouter as Router }`.\"\n );\n };\n}\n\nexport default MemoryRouter;\n","import React from \"react\";\n\nclass Lifecycle extends React.Component {\n componentDidMount() {\n if (this.props.onMount) this.props.onMount.call(this, this);\n }\n\n componentDidUpdate(prevProps) {\n if (this.props.onUpdate) this.props.onUpdate.call(this, this, prevProps);\n }\n\n componentWillUnmount() {\n if (this.props.onUnmount) this.props.onUnmount.call(this, this);\n }\n\n render() {\n return null;\n }\n}\n\nexport default Lifecycle;\n","import pathToRegexp from \"path-to-regexp\";\n\nconst cache = {};\nconst cacheLimit = 10000;\nlet cacheCount = 0;\n\nfunction compilePath(path) {\n if (cache[path]) return cache[path];\n\n const generator = pathToRegexp.compile(path);\n\n if (cacheCount < cacheLimit) {\n cache[path] = generator;\n cacheCount++;\n }\n\n return generator;\n}\n\n/**\n * Public API for generating a URL pathname from a path and parameters.\n */\nfunction generatePath(path = \"/\", params = {}) {\n return path === \"/\" ? path : compilePath(path)(params, { pretty: true });\n}\n\nexport default generatePath;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport { createLocation, locationsAreEqual } from \"history\";\nimport invariant from \"tiny-invariant\";\n\nimport Lifecycle from \"./Lifecycle\";\nimport RouterContext from \"./RouterContext\";\nimport generatePath from \"./generatePath\";\n\n/**\n * The public API for navigating programmatically with a component.\n */\nfunction Redirect({ computedMatch, to, push = false }) {\n return (\n \n {context => {\n invariant(context, \"You should not use outside a \");\n\n const { history, staticContext } = context;\n\n const method = push ? history.push : history.replace;\n const location = createLocation(\n computedMatch\n ? typeof to === \"string\"\n ? generatePath(to, computedMatch.params)\n : {\n ...to,\n pathname: generatePath(to.pathname, computedMatch.params)\n }\n : to\n );\n\n // When rendering in a static context,\n // set the new location immediately.\n if (staticContext) {\n method(location);\n return null;\n }\n\n return (\n {\n method(location);\n }}\n onUpdate={(self, prevProps) => {\n const prevLocation = createLocation(prevProps.to);\n if (\n !locationsAreEqual(prevLocation, {\n ...location,\n key: prevLocation.key\n })\n ) {\n method(location);\n }\n }}\n to={to}\n />\n );\n }}\n \n );\n}\n\nif (__DEV__) {\n Redirect.propTypes = {\n push: PropTypes.bool,\n from: PropTypes.string,\n to: PropTypes.oneOfType([PropTypes.string, PropTypes.object]).isRequired\n };\n}\n\nexport default Redirect;\n","import pathToRegexp from \"path-to-regexp\";\n\nconst cache = {};\nconst cacheLimit = 10000;\nlet cacheCount = 0;\n\nfunction compilePath(path, options) {\n const cacheKey = `${options.end}${options.strict}${options.sensitive}`;\n const pathCache = cache[cacheKey] || (cache[cacheKey] = {});\n\n if (pathCache[path]) return pathCache[path];\n\n const keys = [];\n const regexp = pathToRegexp(path, keys, options);\n const result = { regexp, keys };\n\n if (cacheCount < cacheLimit) {\n pathCache[path] = result;\n cacheCount++;\n }\n\n return result;\n}\n\n/**\n * Public API for matching a URL pathname to a path.\n */\nfunction matchPath(pathname, options = {}) {\n if (typeof options === \"string\" || Array.isArray(options)) {\n options = { path: options };\n }\n\n const { path, exact = false, strict = false, sensitive = false } = options;\n\n const paths = [].concat(path);\n\n return paths.reduce((matched, path) => {\n if (!path && path !== \"\") return null;\n if (matched) return matched;\n\n const { regexp, keys } = compilePath(path, {\n end: exact,\n strict,\n sensitive\n });\n const match = regexp.exec(pathname);\n\n if (!match) return null;\n\n const [url, ...values] = match;\n const isExact = pathname === url;\n\n if (exact && !isExact) return null;\n\n return {\n path, // the path used to match\n url: path === \"/\" && url === \"\" ? \"/\" : url, // the matched portion of the URL\n isExact, // whether or not we matched exactly\n params: keys.reduce((memo, key, index) => {\n memo[key.name] = values[index];\n return memo;\n }, {})\n };\n }, null);\n}\n\nexport default matchPath;\n","import React from \"react\";\nimport { isValidElementType } from \"react-is\";\nimport PropTypes from \"prop-types\";\nimport invariant from \"tiny-invariant\";\nimport warning from \"tiny-warning\";\n\nimport RouterContext from \"./RouterContext\";\nimport matchPath from \"./matchPath\";\n\nfunction isEmptyChildren(children) {\n return React.Children.count(children) === 0;\n}\n\nfunction evalChildrenDev(children, props, path) {\n const value = children(props);\n\n warning(\n value !== undefined,\n \"You returned `undefined` from the `children` function of \" +\n `, but you ` +\n \"should have returned a React element or `null`\"\n );\n\n return value || null;\n}\n\n/**\n * The public API for matching a single path and rendering.\n */\nclass Route extends React.Component {\n render() {\n return (\n \n {context => {\n invariant(context, \"You should not use outside a \");\n\n const location = this.props.location || context.location;\n const match = this.props.computedMatch\n ? this.props.computedMatch // already computed the match for us\n : this.props.path\n ? matchPath(location.pathname, this.props)\n : context.match;\n\n const props = { ...context, location, match };\n\n let { children, component, render } = this.props;\n\n // Preact uses an empty array as children by\n // default, so use null if that's the case.\n if (Array.isArray(children) && children.length === 0) {\n children = null;\n }\n\n return (\n \n {props.match\n ? children\n ? typeof children === \"function\"\n ? __DEV__\n ? evalChildrenDev(children, props, this.props.path)\n : children(props)\n : children\n : component\n ? React.createElement(component, props)\n : render\n ? render(props)\n : null\n : typeof children === \"function\"\n ? __DEV__\n ? evalChildrenDev(children, props, this.props.path)\n : children(props)\n : null}\n \n );\n }}\n \n );\n }\n}\n\nif (__DEV__) {\n Route.propTypes = {\n children: PropTypes.oneOfType([PropTypes.func, PropTypes.node]),\n component: (props, propName) => {\n if (props[propName] && !isValidElementType(props[propName])) {\n return new Error(\n `Invalid prop 'component' supplied to 'Route': the prop is not a valid React component`\n );\n }\n },\n exact: PropTypes.bool,\n location: PropTypes.object,\n path: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.arrayOf(PropTypes.string)\n ]),\n render: PropTypes.func,\n sensitive: PropTypes.bool,\n strict: PropTypes.bool\n };\n\n Route.prototype.componentDidMount = function() {\n warning(\n !(\n this.props.children &&\n !isEmptyChildren(this.props.children) &&\n this.props.component\n ),\n \"You should not use and in the same route; will be ignored\"\n );\n\n warning(\n !(\n this.props.children &&\n !isEmptyChildren(this.props.children) &&\n this.props.render\n ),\n \"You should not use and in the same route; will be ignored\"\n );\n\n warning(\n !(this.props.component && this.props.render),\n \"You should not use and in the same route; will be ignored\"\n );\n };\n\n Route.prototype.componentDidUpdate = function(prevProps) {\n warning(\n !(this.props.location && !prevProps.location),\n ' elements should not change from uncontrolled to controlled (or vice versa). You initially used no \"location\" prop and then provided one on a subsequent render.'\n );\n\n warning(\n !(!this.props.location && prevProps.location),\n ' elements should not change from controlled to uncontrolled (or vice versa). You provided a \"location\" prop initially but omitted it on a subsequent render.'\n );\n };\n}\n\nexport default Route;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport { createLocation, createPath } from \"history\";\nimport invariant from \"tiny-invariant\";\nimport warning from \"tiny-warning\";\n\nimport Router from \"./Router\";\n\nfunction addLeadingSlash(path) {\n return path.charAt(0) === \"/\" ? path : \"/\" + path;\n}\n\nfunction addBasename(basename, location) {\n if (!basename) return location;\n\n return {\n ...location,\n pathname: addLeadingSlash(basename) + location.pathname\n };\n}\n\nfunction stripBasename(basename, location) {\n if (!basename) return location;\n\n const base = addLeadingSlash(basename);\n\n if (location.pathname.indexOf(base) !== 0) return location;\n\n return {\n ...location,\n pathname: location.pathname.substr(base.length)\n };\n}\n\nfunction createURL(location) {\n return typeof location === \"string\" ? location : createPath(location);\n}\n\nfunction staticHandler(methodName) {\n return () => {\n invariant(false, \"You cannot %s with \", methodName);\n };\n}\n\nfunction noop() {}\n\n/**\n * The public top-level API for a \"static\" , so-called because it\n * can't actually change the current location. Instead, it just records\n * location changes in a context object. Useful mainly in testing and\n * server-rendering scenarios.\n */\nclass StaticRouter extends React.Component {\n navigateTo(location, action) {\n const { basename = \"\", context = {} } = this.props;\n context.action = action;\n context.location = addBasename(basename, createLocation(location));\n context.url = createURL(context.location);\n }\n\n handlePush = location => this.navigateTo(location, \"PUSH\");\n handleReplace = location => this.navigateTo(location, \"REPLACE\");\n handleListen = () => noop;\n handleBlock = () => noop;\n\n render() {\n const { basename = \"\", context = {}, location = \"/\", ...rest } = this.props;\n\n const history = {\n createHref: path => addLeadingSlash(basename + createURL(path)),\n action: \"POP\",\n location: stripBasename(basename, createLocation(location)),\n push: this.handlePush,\n replace: this.handleReplace,\n go: staticHandler(\"go\"),\n goBack: staticHandler(\"goBack\"),\n goForward: staticHandler(\"goForward\"),\n listen: this.handleListen,\n block: this.handleBlock\n };\n\n return ;\n }\n}\n\nif (__DEV__) {\n StaticRouter.propTypes = {\n basename: PropTypes.string,\n context: PropTypes.object,\n location: PropTypes.oneOfType([PropTypes.string, PropTypes.object])\n };\n\n StaticRouter.prototype.componentDidMount = function() {\n warning(\n !this.props.history,\n \" ignores the history prop. To use a custom history, \" +\n \"use `import { Router }` instead of `import { StaticRouter as Router }`.\"\n );\n };\n}\n\nexport default StaticRouter;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport invariant from \"tiny-invariant\";\nimport warning from \"tiny-warning\";\n\nimport RouterContext from \"./RouterContext\";\nimport matchPath from \"./matchPath\";\n\n/**\n * The public API for rendering the first that matches.\n */\nclass Switch extends React.Component {\n render() {\n return (\n \n {context => {\n invariant(context, \"You should not use outside a \");\n\n const location = this.props.location || context.location;\n\n let element, match;\n\n // We use React.Children.forEach instead of React.Children.toArray().find()\n // here because toArray adds keys to all child elements and we do not want\n // to trigger an unmount/remount for two s that render the same\n // component at different URLs.\n React.Children.forEach(this.props.children, child => {\n if (match == null && React.isValidElement(child)) {\n element = child;\n\n const path = child.props.path || child.props.from;\n\n match = path\n ? matchPath(location.pathname, { ...child.props, path })\n : context.match;\n }\n });\n\n return match\n ? React.cloneElement(element, { location, computedMatch: match })\n : null;\n }}\n \n );\n }\n}\n\nif (__DEV__) {\n Switch.propTypes = {\n children: PropTypes.node,\n location: PropTypes.object\n };\n\n Switch.prototype.componentDidUpdate = function(prevProps) {\n warning(\n !(this.props.location && !prevProps.location),\n ' elements should not change from uncontrolled to controlled (or vice versa). You initially used no \"location\" prop and then provided one on a subsequent render.'\n );\n\n warning(\n !(!this.props.location && prevProps.location),\n ' elements should not change from controlled to uncontrolled (or vice versa). You provided a \"location\" prop initially but omitted it on a subsequent render.'\n );\n };\n}\n\nexport default Switch;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport RouterContext from \"./RouterContext\";\nimport hoistStatics from \"hoist-non-react-statics\";\nimport invariant from \"tiny-invariant\";\n\n/**\n * A public higher-order component to access the imperative API\n */\nfunction withRouter(Component) {\n const displayName = `withRouter(${Component.displayName || Component.name})`;\n const C = props => {\n const { wrappedComponentRef, ...remainingProps } = props;\n\n return (\n \n {context => {\n invariant(\n context,\n `You should not use <${displayName} /> outside a `\n );\n return (\n \n );\n }}\n \n );\n };\n\n C.displayName = displayName;\n C.WrappedComponent = Component;\n\n if (__DEV__) {\n C.propTypes = {\n wrappedComponentRef: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.func,\n PropTypes.object\n ])\n };\n }\n\n return hoistStatics(C, Component);\n}\n\nexport default withRouter;\n","import React from \"react\";\nimport invariant from \"tiny-invariant\";\n\nimport Context from \"./RouterContext.js\";\nimport matchPath from \"./matchPath.js\";\n\nconst useContext = React.useContext;\n\nexport function useHistory() {\n if (__DEV__) {\n invariant(\n typeof useContext === \"function\",\n \"You must use React >= 16.8 in order to use useHistory()\"\n );\n }\n\n return useContext(Context).history;\n}\n\nexport function useLocation() {\n if (__DEV__) {\n invariant(\n typeof useContext === \"function\",\n \"You must use React >= 16.8 in order to use useLocation()\"\n );\n }\n\n return useContext(Context).location;\n}\n\nexport function useParams() {\n if (__DEV__) {\n invariant(\n typeof useContext === \"function\",\n \"You must use React >= 16.8 in order to use useParams()\"\n );\n }\n\n const match = useContext(Context).match;\n return match ? match.params : {};\n}\n\nexport function useRouteMatch(path) {\n if (__DEV__) {\n invariant(\n typeof useContext === \"function\",\n \"You must use React >= 16.8 in order to use useRouteMatch()\"\n );\n }\n\n return path\n ? matchPath(useLocation().pathname, path)\n : useContext(Context).match;\n}\n","/** @license React v16.14.0\n * react-jsx-runtime.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var f=require(\"react\"),g=60103;exports.Fragment=60107;if(\"function\"===typeof Symbol&&Symbol.for){var h=Symbol.for;g=h(\"react.element\");exports.Fragment=h(\"react.fragment\")}var m=f.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,n=Object.prototype.hasOwnProperty,p={key:!0,ref:!0,__self:!0,__source:!0};\nfunction q(c,a,k){var b,d={},e=null,l=null;void 0!==k&&(e=\"\"+k);void 0!==a.key&&(e=\"\"+a.key);void 0!==a.ref&&(l=a.ref);for(b in a)n.call(a,b)&&!p.hasOwnProperty(b)&&(d[b]=a[b]);if(c&&c.defaultProps)for(b in a=c.defaultProps,a)void 0===d[b]&&(d[b]=a[b]);return{$$typeof:g,type:c,key:e,ref:l,props:d,_owner:m.current}}exports.jsx=q;exports.jsxs=q;\n","/** @license React v16.14.0\n * react.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';var l=require(\"object-assign\"),n=\"function\"===typeof Symbol&&Symbol.for,p=n?Symbol.for(\"react.element\"):60103,q=n?Symbol.for(\"react.portal\"):60106,r=n?Symbol.for(\"react.fragment\"):60107,t=n?Symbol.for(\"react.strict_mode\"):60108,u=n?Symbol.for(\"react.profiler\"):60114,v=n?Symbol.for(\"react.provider\"):60109,w=n?Symbol.for(\"react.context\"):60110,x=n?Symbol.for(\"react.forward_ref\"):60112,y=n?Symbol.for(\"react.suspense\"):60113,z=n?Symbol.for(\"react.memo\"):60115,A=n?Symbol.for(\"react.lazy\"):\n60116,B=\"function\"===typeof Symbol&&Symbol.iterator;function C(a){for(var b=\"https://reactjs.org/docs/error-decoder.html?invariant=\"+a,c=1;cQ.length&&Q.push(a)}\nfunction T(a,b,c,e){var d=typeof a;if(\"undefined\"===d||\"boolean\"===d)a=null;var g=!1;if(null===a)g=!0;else switch(d){case \"string\":case \"number\":g=!0;break;case \"object\":switch(a.$$typeof){case p:case q:g=!0}}if(g)return c(e,a,\"\"===b?\".\"+U(a,0):b),1;g=0;b=\"\"===b?\".\":b+\":\";if(Array.isArray(a))for(var k=0;k=b){c=a;break}a=a.next}while(a!==d);null===c?c=d:c===d&&(d=h,p());b=c.previous;b.next=c.previous=h;h.next=c;h.previous=\nb}}function v(){if(-1===k&&null!==d&&1===d.priorityLevel){m=!0;try{do u();while(null!==d&&1===d.priorityLevel)}finally{m=!1,null!==d?p():n=!1}}}function t(a){m=!0;var b=e;e=a;try{if(a)for(;null!==d;){var c=exports.unstable_now();if(d.expirationTime<=c){do u();while(null!==d&&d.expirationTime<=c)}else break}else if(null!==d){do u();while(null!==d&&!w())}}finally{m=!1,e=b,null!==d?p():n=!1,v()}}\nvar x=Date,y=\"function\"===typeof setTimeout?setTimeout:void 0,z=\"function\"===typeof clearTimeout?clearTimeout:void 0,A=\"function\"===typeof requestAnimationFrame?requestAnimationFrame:void 0,B=\"function\"===typeof cancelAnimationFrame?cancelAnimationFrame:void 0,C,D;function E(a){C=A(function(b){z(D);a(b)});D=y(function(){B(C);a(exports.unstable_now())},100)}\nif(\"object\"===typeof performance&&\"function\"===typeof performance.now){var F=performance;exports.unstable_now=function(){return F.now()}}else exports.unstable_now=function(){return x.now()};var r,q,w,G=null;\"undefined\"!==typeof window?G=window:\"undefined\"!==typeof global&&(G=global);\nif(G&&G._schedMock){var H=G._schedMock;r=H[0];q=H[1];w=H[2];exports.unstable_now=H[3]}else if(\"undefined\"===typeof window||\"function\"!==typeof MessageChannel){var I=null,J=function(a){if(null!==I)try{I(a)}finally{I=null}};r=function(a){null!==I?setTimeout(r,0,a):(I=a,setTimeout(J,0,!1))};q=function(){I=null};w=function(){return!1}}else{\"undefined\"!==typeof console&&(\"function\"!==typeof A&&console.error(\"This browser doesn't support requestAnimationFrame. Make sure that you load a polyfill in older browsers. https://fb.me/react-polyfills\"),\n\"function\"!==typeof B&&console.error(\"This browser doesn't support cancelAnimationFrame. Make sure that you load a polyfill in older browsers. https://fb.me/react-polyfills\"));var K=null,L=!1,M=-1,N=!1,O=!1,P=0,R=33,S=33;w=function(){return P<=exports.unstable_now()};var T=new MessageChannel,U=T.port2;T.port1.onmessage=function(){L=!1;var a=K,b=M;K=null;M=-1;var c=exports.unstable_now(),f=!1;if(0>=P-c)if(-1!==b&&b<=c)f=!0;else{N||(N=!0,E(V));K=a;M=b;return}if(null!==a){O=!0;try{a(f)}finally{O=!1}}};\nvar V=function(a){if(null!==K){E(V);var b=a-P+S;bb&&(b=8),S=bb?U.postMessage(void 0):N||(N=!0,E(V))};q=function(){K=null;L=!1;M=-1}}exports.unstable_ImmediatePriority=1;exports.unstable_UserBlockingPriority=2;exports.unstable_NormalPriority=3;exports.unstable_IdlePriority=5;exports.unstable_LowPriority=4;\nexports.unstable_runWithPriority=function(a,b){switch(a){case 1:case 2:case 3:case 4:case 5:break;default:a=3}var c=g,f=k;g=a;k=exports.unstable_now();try{return b()}finally{g=c,k=f,v()}};exports.unstable_next=function(a){switch(g){case 1:case 2:case 3:var b=3;break;default:b=g}var c=g,f=k;g=b;k=exports.unstable_now();try{return a()}finally{g=c,k=f,v()}};\nexports.unstable_scheduleCallback=function(a,b){var c=-1!==k?k:exports.unstable_now();if(\"object\"===typeof b&&null!==b&&\"number\"===typeof b.timeout)b=c+b.timeout;else switch(g){case 1:b=c+-1;break;case 2:b=c+250;break;case 5:b=c+1073741823;break;case 4:b=c+1E4;break;default:b=c+5E3}a={callback:a,priorityLevel:g,expirationTime:b,next:null,previous:null};if(null===d)d=a.next=a.previous=a,p();else{c=null;var f=d;do{if(f.expirationTime>b){c=f;break}f=f.next}while(f!==d);null===c?c=d:c===d&&(d=a,p());\nb=c.previous;b.next=c.previous=a;a.next=c;a.previous=b}return a};exports.unstable_cancelCallback=function(a){var b=a.next;if(null!==b){if(b===a)d=null;else{a===d&&(d=b);var c=a.previous;c.next=b;b.previous=c}a.next=a.previous=null}};exports.unstable_wrapCallback=function(a){var b=g;return function(){var c=g,f=k;g=b;k=exports.unstable_now();try{return a.apply(this,arguments)}finally{g=c,k=f,v()}}};exports.unstable_getCurrentPriorityLevel=function(){return g};\nexports.unstable_shouldYield=function(){return!e&&(null!==d&&d.expirationTime arr.length) len = arr.length;\n for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n return arr2;\n}","export default function _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}","export default function _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n return self;\n}","function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {\n try {\n var info = gen[key](arg);\n var value = info.value;\n } catch (error) {\n reject(error);\n return;\n }\n if (info.done) {\n resolve(value);\n } else {\n Promise.resolve(value).then(_next, _throw);\n }\n}\nexport default function _asyncToGenerator(fn) {\n return function () {\n var self = this,\n args = arguments;\n return new Promise(function (resolve, reject) {\n var gen = fn.apply(self, args);\n function _next(value) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value);\n }\n function _throw(err) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err);\n }\n _next(undefined);\n });\n };\n}","export default function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}","import toPropertyKey from \"./toPropertyKey.js\";\nfunction _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, toPropertyKey(descriptor.key), descriptor);\n }\n}\nexport default function _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n Object.defineProperty(Constructor, \"prototype\", {\n writable: false\n });\n return Constructor;\n}","import unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nexport default function _createForOfIteratorHelper(o, allowArrayLike) {\n var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"];\n if (!it) {\n if (Array.isArray(o) || (it = unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") {\n if (it) o = it;\n var i = 0;\n var F = function F() {};\n return {\n s: F,\n n: function n() {\n if (i >= o.length) return {\n done: true\n };\n return {\n done: false,\n value: o[i++]\n };\n },\n e: function e(_e) {\n throw _e;\n },\n f: F\n };\n }\n throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n }\n var normalCompletion = true,\n didErr = false,\n err;\n return {\n s: function s() {\n it = it.call(o);\n },\n n: function n() {\n var step = it.next();\n normalCompletion = step.done;\n return step;\n },\n e: function e(_e2) {\n didErr = true;\n err = _e2;\n },\n f: function f() {\n try {\n if (!normalCompletion && it[\"return\"] != null) it[\"return\"]();\n } finally {\n if (didErr) throw err;\n }\n }\n };\n}","import getPrototypeOf from \"./getPrototypeOf.js\";\nimport isNativeReflectConstruct from \"./isNativeReflectConstruct.js\";\nimport possibleConstructorReturn from \"./possibleConstructorReturn.js\";\nexport default function _createSuper(Derived) {\n var hasNativeReflectConstruct = isNativeReflectConstruct();\n return function _createSuperInternal() {\n var Super = getPrototypeOf(Derived),\n result;\n if (hasNativeReflectConstruct) {\n var NewTarget = getPrototypeOf(this).constructor;\n result = Reflect.construct(Super, arguments, NewTarget);\n } else {\n result = Super.apply(this, arguments);\n }\n return possibleConstructorReturn(this, result);\n };\n}","import toPropertyKey from \"./toPropertyKey.js\";\nexport default function _defineProperty(obj, key, value) {\n key = toPropertyKey(key);\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}","export default function _extends() {\n _extends = Object.assign ? Object.assign.bind() : function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n };\n return _extends.apply(this, arguments);\n}","import getPrototypeOf from \"./getPrototypeOf.js\";\nexport default function _superPropBase(object, property) {\n while (!Object.prototype.hasOwnProperty.call(object, property)) {\n object = getPrototypeOf(object);\n if (object === null) break;\n }\n return object;\n}","import superPropBase from \"./superPropBase.js\";\nexport default function _get() {\n if (typeof Reflect !== \"undefined\" && Reflect.get) {\n _get = Reflect.get.bind();\n } else {\n _get = function _get(target, property, receiver) {\n var base = superPropBase(target, property);\n if (!base) return;\n var desc = Object.getOwnPropertyDescriptor(base, property);\n if (desc.get) {\n return desc.get.call(arguments.length < 3 ? target : receiver);\n }\n return desc.value;\n };\n }\n return _get.apply(this, arguments);\n}","export default function _getPrototypeOf(o) {\n _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}","import setPrototypeOf from \"./setPrototypeOf.js\";\nexport default function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n Object.defineProperty(subClass, \"prototype\", {\n writable: false\n });\n if (superClass) setPrototypeOf(subClass, superClass);\n}","import setPrototypeOf from \"./setPrototypeOf.js\";\nexport default function _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n setPrototypeOf(subClass, superClass);\n}","export default function _isNativeReflectConstruct() {\n if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n if (Reflect.construct.sham) return false;\n if (typeof Proxy === \"function\") return true;\n try {\n Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {}));\n return true;\n } catch (e) {\n return false;\n }\n}","export default function _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter);\n}","export default function _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}","import defineProperty from \"./defineProperty.js\";\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n enumerableOnly && (symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n })), keys.push.apply(keys, symbols);\n }\n return keys;\n}\nexport default function _objectSpread2(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = null != arguments[i] ? arguments[i] : {};\n i % 2 ? ownKeys(Object(source), !0).forEach(function (key) {\n defineProperty(target, key, source[key]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n return target;\n}","import objectWithoutPropertiesLoose from \"./objectWithoutPropertiesLoose.js\";\nexport default function _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n var target = objectWithoutPropertiesLoose(source, excluded);\n var key, i;\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n for (i = 0; i < sourceSymbolKeys.length; i++) {\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n return target;\n}","export default function _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n return target;\n}","import _typeof from \"./typeof.js\";\nimport assertThisInitialized from \"./assertThisInitialized.js\";\nexport default function _possibleConstructorReturn(self, call) {\n if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) {\n return call;\n } else if (call !== void 0) {\n throw new TypeError(\"Derived constructors may only return object or undefined\");\n }\n return assertThisInitialized(self);\n}","import _typeof from \"./typeof.js\";\nexport default function _regeneratorRuntime() {\n \"use strict\"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */\n _regeneratorRuntime = function _regeneratorRuntime() {\n return exports;\n };\n var exports = {},\n Op = Object.prototype,\n hasOwn = Op.hasOwnProperty,\n defineProperty = Object.defineProperty || function (obj, key, desc) {\n obj[key] = desc.value;\n },\n $Symbol = \"function\" == typeof Symbol ? Symbol : {},\n iteratorSymbol = $Symbol.iterator || \"@@iterator\",\n asyncIteratorSymbol = $Symbol.asyncIterator || \"@@asyncIterator\",\n toStringTagSymbol = $Symbol.toStringTag || \"@@toStringTag\";\n function define(obj, key, value) {\n return Object.defineProperty(obj, key, {\n value: value,\n enumerable: !0,\n configurable: !0,\n writable: !0\n }), obj[key];\n }\n try {\n define({}, \"\");\n } catch (err) {\n define = function define(obj, key, value) {\n return obj[key] = value;\n };\n }\n function wrap(innerFn, outerFn, self, tryLocsList) {\n var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator,\n generator = Object.create(protoGenerator.prototype),\n context = new Context(tryLocsList || []);\n return defineProperty(generator, \"_invoke\", {\n value: makeInvokeMethod(innerFn, self, context)\n }), generator;\n }\n function tryCatch(fn, obj, arg) {\n try {\n return {\n type: \"normal\",\n arg: fn.call(obj, arg)\n };\n } catch (err) {\n return {\n type: \"throw\",\n arg: err\n };\n }\n }\n exports.wrap = wrap;\n var ContinueSentinel = {};\n function Generator() {}\n function GeneratorFunction() {}\n function GeneratorFunctionPrototype() {}\n var IteratorPrototype = {};\n define(IteratorPrototype, iteratorSymbol, function () {\n return this;\n });\n var getProto = Object.getPrototypeOf,\n NativeIteratorPrototype = getProto && getProto(getProto(values([])));\n NativeIteratorPrototype && NativeIteratorPrototype !== Op && hasOwn.call(NativeIteratorPrototype, iteratorSymbol) && (IteratorPrototype = NativeIteratorPrototype);\n var Gp = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(IteratorPrototype);\n function defineIteratorMethods(prototype) {\n [\"next\", \"throw\", \"return\"].forEach(function (method) {\n define(prototype, method, function (arg) {\n return this._invoke(method, arg);\n });\n });\n }\n function AsyncIterator(generator, PromiseImpl) {\n function invoke(method, arg, resolve, reject) {\n var record = tryCatch(generator[method], generator, arg);\n if (\"throw\" !== record.type) {\n var result = record.arg,\n value = result.value;\n return value && \"object\" == _typeof(value) && hasOwn.call(value, \"__await\") ? PromiseImpl.resolve(value.__await).then(function (value) {\n invoke(\"next\", value, resolve, reject);\n }, function (err) {\n invoke(\"throw\", err, resolve, reject);\n }) : PromiseImpl.resolve(value).then(function (unwrapped) {\n result.value = unwrapped, resolve(result);\n }, function (error) {\n return invoke(\"throw\", error, resolve, reject);\n });\n }\n reject(record.arg);\n }\n var previousPromise;\n defineProperty(this, \"_invoke\", {\n value: function value(method, arg) {\n function callInvokeWithMethodAndArg() {\n return new PromiseImpl(function (resolve, reject) {\n invoke(method, arg, resolve, reject);\n });\n }\n return previousPromise = previousPromise ? previousPromise.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg();\n }\n });\n }\n function makeInvokeMethod(innerFn, self, context) {\n var state = \"suspendedStart\";\n return function (method, arg) {\n if (\"executing\" === state) throw new Error(\"Generator is already running\");\n if (\"completed\" === state) {\n if (\"throw\" === method) throw arg;\n return doneResult();\n }\n for (context.method = method, context.arg = arg;;) {\n var delegate = context.delegate;\n if (delegate) {\n var delegateResult = maybeInvokeDelegate(delegate, context);\n if (delegateResult) {\n if (delegateResult === ContinueSentinel) continue;\n return delegateResult;\n }\n }\n if (\"next\" === context.method) context.sent = context._sent = context.arg;else if (\"throw\" === context.method) {\n if (\"suspendedStart\" === state) throw state = \"completed\", context.arg;\n context.dispatchException(context.arg);\n } else \"return\" === context.method && context.abrupt(\"return\", context.arg);\n state = \"executing\";\n var record = tryCatch(innerFn, self, context);\n if (\"normal\" === record.type) {\n if (state = context.done ? \"completed\" : \"suspendedYield\", record.arg === ContinueSentinel) continue;\n return {\n value: record.arg,\n done: context.done\n };\n }\n \"throw\" === record.type && (state = \"completed\", context.method = \"throw\", context.arg = record.arg);\n }\n };\n }\n function maybeInvokeDelegate(delegate, context) {\n var methodName = context.method,\n method = delegate.iterator[methodName];\n if (undefined === method) return context.delegate = null, \"throw\" === methodName && delegate.iterator[\"return\"] && (context.method = \"return\", context.arg = undefined, maybeInvokeDelegate(delegate, context), \"throw\" === context.method) || \"return\" !== methodName && (context.method = \"throw\", context.arg = new TypeError(\"The iterator does not provide a '\" + methodName + \"' method\")), ContinueSentinel;\n var record = tryCatch(method, delegate.iterator, context.arg);\n if (\"throw\" === record.type) return context.method = \"throw\", context.arg = record.arg, context.delegate = null, ContinueSentinel;\n var info = record.arg;\n return info ? info.done ? (context[delegate.resultName] = info.value, context.next = delegate.nextLoc, \"return\" !== context.method && (context.method = \"next\", context.arg = undefined), context.delegate = null, ContinueSentinel) : info : (context.method = \"throw\", context.arg = new TypeError(\"iterator result is not an object\"), context.delegate = null, ContinueSentinel);\n }\n function pushTryEntry(locs) {\n var entry = {\n tryLoc: locs[0]\n };\n 1 in locs && (entry.catchLoc = locs[1]), 2 in locs && (entry.finallyLoc = locs[2], entry.afterLoc = locs[3]), this.tryEntries.push(entry);\n }\n function resetTryEntry(entry) {\n var record = entry.completion || {};\n record.type = \"normal\", delete record.arg, entry.completion = record;\n }\n function Context(tryLocsList) {\n this.tryEntries = [{\n tryLoc: \"root\"\n }], tryLocsList.forEach(pushTryEntry, this), this.reset(!0);\n }\n function values(iterable) {\n if (iterable) {\n var iteratorMethod = iterable[iteratorSymbol];\n if (iteratorMethod) return iteratorMethod.call(iterable);\n if (\"function\" == typeof iterable.next) return iterable;\n if (!isNaN(iterable.length)) {\n var i = -1,\n next = function next() {\n for (; ++i < iterable.length;) if (hasOwn.call(iterable, i)) return next.value = iterable[i], next.done = !1, next;\n return next.value = undefined, next.done = !0, next;\n };\n return next.next = next;\n }\n }\n return {\n next: doneResult\n };\n }\n function doneResult() {\n return {\n value: undefined,\n done: !0\n };\n }\n return GeneratorFunction.prototype = GeneratorFunctionPrototype, defineProperty(Gp, \"constructor\", {\n value: GeneratorFunctionPrototype,\n configurable: !0\n }), defineProperty(GeneratorFunctionPrototype, \"constructor\", {\n value: GeneratorFunction,\n configurable: !0\n }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, toStringTagSymbol, \"GeneratorFunction\"), exports.isGeneratorFunction = function (genFun) {\n var ctor = \"function\" == typeof genFun && genFun.constructor;\n return !!ctor && (ctor === GeneratorFunction || \"GeneratorFunction\" === (ctor.displayName || ctor.name));\n }, exports.mark = function (genFun) {\n return Object.setPrototypeOf ? Object.setPrototypeOf(genFun, GeneratorFunctionPrototype) : (genFun.__proto__ = GeneratorFunctionPrototype, define(genFun, toStringTagSymbol, \"GeneratorFunction\")), genFun.prototype = Object.create(Gp), genFun;\n }, exports.awrap = function (arg) {\n return {\n __await: arg\n };\n }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, asyncIteratorSymbol, function () {\n return this;\n }), exports.AsyncIterator = AsyncIterator, exports.async = function (innerFn, outerFn, self, tryLocsList, PromiseImpl) {\n void 0 === PromiseImpl && (PromiseImpl = Promise);\n var iter = new AsyncIterator(wrap(innerFn, outerFn, self, tryLocsList), PromiseImpl);\n return exports.isGeneratorFunction(outerFn) ? iter : iter.next().then(function (result) {\n return result.done ? result.value : iter.next();\n });\n }, defineIteratorMethods(Gp), define(Gp, toStringTagSymbol, \"Generator\"), define(Gp, iteratorSymbol, function () {\n return this;\n }), define(Gp, \"toString\", function () {\n return \"[object Generator]\";\n }), exports.keys = function (val) {\n var object = Object(val),\n keys = [];\n for (var key in object) keys.push(key);\n return keys.reverse(), function next() {\n for (; keys.length;) {\n var key = keys.pop();\n if (key in object) return next.value = key, next.done = !1, next;\n }\n return next.done = !0, next;\n };\n }, exports.values = values, Context.prototype = {\n constructor: Context,\n reset: function reset(skipTempReset) {\n if (this.prev = 0, this.next = 0, this.sent = this._sent = undefined, this.done = !1, this.delegate = null, this.method = \"next\", this.arg = undefined, this.tryEntries.forEach(resetTryEntry), !skipTempReset) for (var name in this) \"t\" === name.charAt(0) && hasOwn.call(this, name) && !isNaN(+name.slice(1)) && (this[name] = undefined);\n },\n stop: function stop() {\n this.done = !0;\n var rootRecord = this.tryEntries[0].completion;\n if (\"throw\" === rootRecord.type) throw rootRecord.arg;\n return this.rval;\n },\n dispatchException: function dispatchException(exception) {\n if (this.done) throw exception;\n var context = this;\n function handle(loc, caught) {\n return record.type = \"throw\", record.arg = exception, context.next = loc, caught && (context.method = \"next\", context.arg = undefined), !!caught;\n }\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i],\n record = entry.completion;\n if (\"root\" === entry.tryLoc) return handle(\"end\");\n if (entry.tryLoc <= this.prev) {\n var hasCatch = hasOwn.call(entry, \"catchLoc\"),\n hasFinally = hasOwn.call(entry, \"finallyLoc\");\n if (hasCatch && hasFinally) {\n if (this.prev < entry.catchLoc) return handle(entry.catchLoc, !0);\n if (this.prev < entry.finallyLoc) return handle(entry.finallyLoc);\n } else if (hasCatch) {\n if (this.prev < entry.catchLoc) return handle(entry.catchLoc, !0);\n } else {\n if (!hasFinally) throw new Error(\"try statement without catch or finally\");\n if (this.prev < entry.finallyLoc) return handle(entry.finallyLoc);\n }\n }\n }\n },\n abrupt: function abrupt(type, arg) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc <= this.prev && hasOwn.call(entry, \"finallyLoc\") && this.prev < entry.finallyLoc) {\n var finallyEntry = entry;\n break;\n }\n }\n finallyEntry && (\"break\" === type || \"continue\" === type) && finallyEntry.tryLoc <= arg && arg <= finallyEntry.finallyLoc && (finallyEntry = null);\n var record = finallyEntry ? finallyEntry.completion : {};\n return record.type = type, record.arg = arg, finallyEntry ? (this.method = \"next\", this.next = finallyEntry.finallyLoc, ContinueSentinel) : this.complete(record);\n },\n complete: function complete(record, afterLoc) {\n if (\"throw\" === record.type) throw record.arg;\n return \"break\" === record.type || \"continue\" === record.type ? this.next = record.arg : \"return\" === record.type ? (this.rval = this.arg = record.arg, this.method = \"return\", this.next = \"end\") : \"normal\" === record.type && afterLoc && (this.next = afterLoc), ContinueSentinel;\n },\n finish: function finish(finallyLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.finallyLoc === finallyLoc) return this.complete(entry.completion, entry.afterLoc), resetTryEntry(entry), ContinueSentinel;\n }\n },\n \"catch\": function _catch(tryLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc === tryLoc) {\n var record = entry.completion;\n if (\"throw\" === record.type) {\n var thrown = record.arg;\n resetTryEntry(entry);\n }\n return thrown;\n }\n }\n throw new Error(\"illegal catch attempt\");\n },\n delegateYield: function delegateYield(iterable, resultName, nextLoc) {\n return this.delegate = {\n iterator: values(iterable),\n resultName: resultName,\n nextLoc: nextLoc\n }, \"next\" === this.method && (this.arg = undefined), ContinueSentinel;\n }\n }, exports;\n}","export default function _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n return _setPrototypeOf(o, p);\n}","import arrayWithHoles from \"./arrayWithHoles.js\";\nimport iterableToArrayLimit from \"./iterableToArrayLimit.js\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nimport nonIterableRest from \"./nonIterableRest.js\";\nexport default function _slicedToArray(arr, i) {\n return arrayWithHoles(arr) || iterableToArrayLimit(arr, i) || unsupportedIterableToArray(arr, i) || nonIterableRest();\n}","export default function _iterableToArrayLimit(arr, i) {\n var _i = null == arr ? null : \"undefined\" != typeof Symbol && arr[Symbol.iterator] || arr[\"@@iterator\"];\n if (null != _i) {\n var _s,\n _e,\n _x,\n _r,\n _arr = [],\n _n = !0,\n _d = !1;\n try {\n if (_x = (_i = _i.call(arr)).next, 0 === i) {\n if (Object(_i) !== _i) return;\n _n = !1;\n } else for (; !(_n = (_s = _x.call(_i)).done) && (_arr.push(_s.value), _arr.length !== i); _n = !0);\n } catch (err) {\n _d = !0, _e = err;\n } finally {\n try {\n if (!_n && null != _i[\"return\"] && (_r = _i[\"return\"](), Object(_r) !== _r)) return;\n } finally {\n if (_d) throw _e;\n }\n }\n return _arr;\n }\n}","import arrayWithoutHoles from \"./arrayWithoutHoles.js\";\nimport iterableToArray from \"./iterableToArray.js\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nimport nonIterableSpread from \"./nonIterableSpread.js\";\nexport default function _toConsumableArray(arr) {\n return arrayWithoutHoles(arr) || iterableToArray(arr) || unsupportedIterableToArray(arr) || nonIterableSpread();\n}","import arrayLikeToArray from \"./arrayLikeToArray.js\";\nexport default function _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return arrayLikeToArray(arr);\n}","export default function _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}","import _typeof from \"./typeof.js\";\nimport toPrimitive from \"./toPrimitive.js\";\nexport default function _toPropertyKey(arg) {\n var key = toPrimitive(arg, \"string\");\n return _typeof(key) === \"symbol\" ? key : String(key);\n}","import _typeof from \"./typeof.js\";\nexport default function _toPrimitive(input, hint) {\n if (_typeof(input) !== \"object\" || input === null) return input;\n var prim = input[Symbol.toPrimitive];\n if (prim !== undefined) {\n var res = prim.call(input, hint || \"default\");\n if (_typeof(res) !== \"object\") return res;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (hint === \"string\" ? String : Number)(input);\n}","export default function _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) {\n return typeof obj;\n } : function (obj) {\n return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n }, _typeof(obj);\n}","import arrayLikeToArray from \"./arrayLikeToArray.js\";\nexport default function _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return arrayLikeToArray(o, minLen);\n}","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = function(module) {\n\tvar getter = module && module.__esModule ?\n\t\tfunction() { return module['default']; } :\n\t\tfunction() { return module; };\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = function(exports, definition) {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.f = {};\n// This file contains only the entry chunk.\n// The chunk loading function for additional chunks\n__webpack_require__.e = function(chunkId) {\n\treturn Promise.all(Object.keys(__webpack_require__.f).reduce(function(promises, key) {\n\t\t__webpack_require__.f[key](chunkId, promises);\n\t\treturn promises;\n\t}, []));\n};","// This function allow to reference async chunks\n__webpack_require__.u = function(chunkId) {\n\t// return url for filenames based on template\n\treturn \"static/js/\" + ({\"76\":\"my-account-plan\",\"372\":\"visitors\",\"783\":\"sites\",\"1014\":\"visitor-attribute-view\",\"1305\":\"webhook-editor\",\"1566\":\"account-editor\",\"1652\":\"segment-editor\",\"1990\":\"form-view\",\"2007\":\"segment-view\",\"2143\":\"app\",\"2316\":\"integrations-view\",\"2394\":\"webhooks\",\"2542\":\"smart-content-view\",\"2667\":\"smart-contents\",\"2681\":\"users\",\"2939\":\"user-view\",\"3103\":\"smart-content-version-view\",\"3557\":\"form-notifications\",\"3664\":\"account-plans\",\"3693\":\"account-plans-view\",\"3790\":\"forms\",\"4289\":\"visitor-attribute\",\"4358\":\"visitor-view\",\"4589\":\"email-editor\",\"4714\":\"user-editor\",\"4813\":\"segments\",\"5640\":\"account-view\",\"5720\":\"form-editor\",\"6022\":\"email-view\",\"6203\":\"smart-content-editor\",\"6585\":\"visitor-attribute-editor\",\"6836\":\"site-editor\",\"7046\":\"custom-field-editor\",\"7156\":\"form-submission-file-download\",\"7233\":\"site-view\",\"7809\":\"emails\",\"8273\":\"form-submission-view\",\"8300\":\"visit-view\",\"8494\":\"user-account\",\"8562\":\"accounts\",\"8658\":\"site-selector\",\"8918\":\"app-embed\",\"9079\":\"geolocation-visitor-attribute-view\",\"9435\":\"custom-field-view\",\"9596\":\"custom-fields\",\"9966\":\"dashboard\"}[chunkId] || chunkId) + \".\" + {\"76\":\"ee2c3fdb\",\"224\":\"8340c8a5\",\"372\":\"639aaae4\",\"487\":\"bb0783ea\",\"783\":\"65eb0981\",\"1014\":\"e8581e7d\",\"1117\":\"e3976e65\",\"1197\":\"fc4ef3e4\",\"1305\":\"17d7536b\",\"1393\":\"decf1f55\",\"1566\":\"e6338496\",\"1616\":\"d9035cbb\",\"1652\":\"4e679f5c\",\"1772\":\"2ac0015e\",\"1990\":\"3bb930b5\",\"2007\":\"7425c893\",\"2143\":\"ca5d4e90\",\"2290\":\"ddf383c1\",\"2316\":\"273ab0e3\",\"2394\":\"265b3088\",\"2542\":\"83cd6614\",\"2667\":\"6b96af46\",\"2681\":\"a0efbba2\",\"2805\":\"0c8538a9\",\"2939\":\"0c6db506\",\"3103\":\"f05987bf\",\"3336\":\"3785d520\",\"3557\":\"27f1a6df\",\"3664\":\"ee832c66\",\"3693\":\"524cd333\",\"3790\":\"e634c5d4\",\"3906\":\"0e75fb71\",\"4166\":\"65698e44\",\"4289\":\"111dd88b\",\"4358\":\"2be30bc7\",\"4461\":\"bfb8c00c\",\"4589\":\"7dd9d6d2\",\"4714\":\"c1a9d5f5\",\"4813\":\"92d76746\",\"4839\":\"2fa9aedb\",\"4873\":\"7334d8ff\",\"5015\":\"cc1434c4\",\"5566\":\"541b9774\",\"5604\":\"6939e5fb\",\"5640\":\"1dd625dd\",\"5688\":\"011c6605\",\"5720\":\"d7815e0a\",\"5757\":\"f7c1acf9\",\"6022\":\"71cb4b31\",\"6145\":\"eb2c4272\",\"6191\":\"5ce48462\",\"6203\":\"ee85cfae\",\"6357\":\"45c3a639\",\"6585\":\"7ac327cf\",\"6836\":\"9cd645df\",\"6924\":\"f2411525\",\"6947\":\"8496e94a\",\"7046\":\"c6462561\",\"7156\":\"ae773162\",\"7233\":\"08e6a935\",\"7329\":\"5b2143aa\",\"7336\":\"87e346f4\",\"7501\":\"b9056ef7\",\"7510\":\"97ef077a\",\"7570\":\"362b68b0\",\"7592\":\"90a5f37d\",\"7809\":\"f0671745\",\"7811\":\"87b3e843\",\"8273\":\"667c1989\",\"8300\":\"43b8aa29\",\"8322\":\"8d4c07d1\",\"8494\":\"a25c0350\",\"8562\":\"e2760f5c\",\"8658\":\"f001692b\",\"8671\":\"84ed431c\",\"8723\":\"a2e833fa\",\"8734\":\"79d8881c\",\"8762\":\"c089cdae\",\"8918\":\"4b6128a5\",\"9079\":\"5fa3e586\",\"9435\":\"7d44f1a5\",\"9596\":\"ee5ec11a\",\"9966\":\"4a5a941b\"}[chunkId] + \".chunk.js\";\n};","// This function allow to reference async chunks\n__webpack_require__.miniCssF = function(chunkId) {\n\t// return url for filenames based on template\n\treturn \"static/css/\" + {\"2143\":\"app\",\"8918\":\"app-embed\"}[chunkId] + \".\" + {\"2143\":\"a73a04e3\",\"8918\":\"072ee8bf\"}[chunkId] + \".chunk.css\";\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.hmd = function(module) {\n\tmodule = Object.create(module);\n\tif (!module.children) module.children = [];\n\tObject.defineProperty(module, 'exports', {\n\t\tenumerable: true,\n\t\tset: function() {\n\t\t\tthrow new Error('ES Modules may not assign module.exports or exports.*, Use ESM export syntax, instead: ' + module.id);\n\t\t}\n\t});\n\treturn module;\n};","__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }","var inProgress = {};\nvar dataWebpackPrefix = \"clive-client:\";\n// loadScript function to load a script via script tag\n__webpack_require__.l = function(url, done, key, chunkId) {\n\tif(inProgress[url]) { inProgress[url].push(done); return; }\n\tvar script, needAttach;\n\tif(key !== undefined) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tfor(var i = 0; i < scripts.length; i++) {\n\t\t\tvar s = scripts[i];\n\t\t\tif(s.getAttribute(\"src\") == url || s.getAttribute(\"data-webpack\") == dataWebpackPrefix + key) { script = s; break; }\n\t\t}\n\t}\n\tif(!script) {\n\t\tneedAttach = true;\n\t\tscript = document.createElement('script');\n\n\t\tscript.charset = 'utf-8';\n\t\tscript.timeout = 120;\n\t\tif (__webpack_require__.nc) {\n\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n\t\t}\n\t\tscript.setAttribute(\"data-webpack\", dataWebpackPrefix + key);\n\t\tscript.src = url;\n\t}\n\tinProgress[url] = [done];\n\tvar onScriptComplete = function(prev, event) {\n\t\t// avoid mem leaks in IE.\n\t\tscript.onerror = script.onload = null;\n\t\tclearTimeout(timeout);\n\t\tvar doneFns = inProgress[url];\n\t\tdelete inProgress[url];\n\t\tscript.parentNode && script.parentNode.removeChild(script);\n\t\tdoneFns && doneFns.forEach(function(fn) { return fn(event); });\n\t\tif(prev) return prev(event);\n\t};\n\tvar timeout = setTimeout(onScriptComplete.bind(null, undefined, { type: 'timeout', target: script }), 120000);\n\tscript.onerror = onScriptComplete.bind(null, script.onerror);\n\tscript.onload = onScriptComplete.bind(null, script.onload);\n\tneedAttach && document.head.appendChild(script);\n};","// define __esModule on exports\n__webpack_require__.r = function(exports) {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = function(module) {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","__webpack_require__.p = \"/\";","if (typeof document === \"undefined\") return;\nvar createStylesheet = function(chunkId, fullhref, oldTag, resolve, reject) {\n\tvar linkTag = document.createElement(\"link\");\n\n\tlinkTag.rel = \"stylesheet\";\n\tlinkTag.type = \"text/css\";\n\tvar onLinkComplete = function(event) {\n\t\t// avoid mem leaks.\n\t\tlinkTag.onerror = linkTag.onload = null;\n\t\tif (event.type === 'load') {\n\t\t\tresolve();\n\t\t} else {\n\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\tvar realHref = event && event.target && event.target.href || fullhref;\n\t\t\tvar err = new Error(\"Loading CSS chunk \" + chunkId + \" failed.\\n(\" + realHref + \")\");\n\t\t\terr.code = \"CSS_CHUNK_LOAD_FAILED\";\n\t\t\terr.type = errorType;\n\t\t\terr.request = realHref;\n\t\t\tlinkTag.parentNode.removeChild(linkTag)\n\t\t\treject(err);\n\t\t}\n\t}\n\tlinkTag.onerror = linkTag.onload = onLinkComplete;\n\tlinkTag.href = fullhref;\n\n\tif (oldTag) {\n\t\toldTag.parentNode.insertBefore(linkTag, oldTag.nextSibling);\n\t} else {\n\t\tdocument.head.appendChild(linkTag);\n\t}\n\treturn linkTag;\n};\nvar findStylesheet = function(href, fullhref) {\n\tvar existingLinkTags = document.getElementsByTagName(\"link\");\n\tfor(var i = 0; i < existingLinkTags.length; i++) {\n\t\tvar tag = existingLinkTags[i];\n\t\tvar dataHref = tag.getAttribute(\"data-href\") || tag.getAttribute(\"href\");\n\t\tif(tag.rel === \"stylesheet\" && (dataHref === href || dataHref === fullhref)) return tag;\n\t}\n\tvar existingStyleTags = document.getElementsByTagName(\"style\");\n\tfor(var i = 0; i < existingStyleTags.length; i++) {\n\t\tvar tag = existingStyleTags[i];\n\t\tvar dataHref = tag.getAttribute(\"data-href\");\n\t\tif(dataHref === href || dataHref === fullhref) return tag;\n\t}\n};\nvar loadStylesheet = function(chunkId) {\n\treturn new Promise(function(resolve, reject) {\n\t\tvar href = __webpack_require__.miniCssF(chunkId);\n\t\tvar fullhref = __webpack_require__.p + href;\n\t\tif(findStylesheet(href, fullhref)) return resolve();\n\t\tcreateStylesheet(chunkId, fullhref, null, resolve, reject);\n\t});\n}\n// object to store loaded CSS chunks\nvar installedCssChunks = {\n\t179: 0\n};\n\n__webpack_require__.f.miniCss = function(chunkId, promises) {\n\tvar cssChunks = {\"2143\":1,\"8918\":1};\n\tif(installedCssChunks[chunkId]) promises.push(installedCssChunks[chunkId]);\n\telse if(installedCssChunks[chunkId] !== 0 && cssChunks[chunkId]) {\n\t\tpromises.push(installedCssChunks[chunkId] = loadStylesheet(chunkId).then(function() {\n\t\t\tinstalledCssChunks[chunkId] = 0;\n\t\t}, function(e) {\n\t\t\tdelete installedCssChunks[chunkId];\n\t\t\tthrow e;\n\t\t}));\n\t}\n};\n\n// no hmr","// no baseURI\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t179: 0\n};\n\n__webpack_require__.f.j = function(chunkId, promises) {\n\t\t// JSONP chunk loading for javascript\n\t\tvar installedChunkData = __webpack_require__.o(installedChunks, chunkId) ? installedChunks[chunkId] : undefined;\n\t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n\t\t\t// a Promise means \"currently loading\".\n\t\t\tif(installedChunkData) {\n\t\t\t\tpromises.push(installedChunkData[2]);\n\t\t\t} else {\n\t\t\t\tif(true) { // all chunks have JS\n\t\t\t\t\t// setup Promise in chunk cache\n\t\t\t\t\tvar promise = new Promise(function(resolve, reject) { installedChunkData = installedChunks[chunkId] = [resolve, reject]; });\n\t\t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n\t\t\t\t\t// start chunk loading\n\t\t\t\t\tvar url = __webpack_require__.p + __webpack_require__.u(chunkId);\n\t\t\t\t\t// create error before stack unwound to get useful stacktrace later\n\t\t\t\t\tvar error = new Error();\n\t\t\t\t\tvar loadingEnded = function(event) {\n\t\t\t\t\t\tif(__webpack_require__.o(installedChunks, chunkId)) {\n\t\t\t\t\t\t\tinstalledChunkData = installedChunks[chunkId];\n\t\t\t\t\t\t\tif(installedChunkData !== 0) installedChunks[chunkId] = undefined;\n\t\t\t\t\t\t\tif(installedChunkData) {\n\t\t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n\t\t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n\t\t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n\t\t\t\t\t\t\t\terror.type = errorType;\n\t\t\t\t\t\t\t\terror.request = realSrc;\n\t\t\t\t\t\t\t\tinstalledChunkData[1](error);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\t__webpack_require__.l(url, loadingEnded, \"chunk-\" + chunkId, chunkId);\n\t\t\t\t} else installedChunks[chunkId] = 0;\n\t\t\t}\n\t\t}\n};\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n// no on chunks loaded\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = function(parentChunkLoadingFunction, data) {\n\tvar chunkIds = data[0];\n\tvar moreModules = data[1];\n\tvar runtime = data[2];\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some(function(id) { return installedChunks[id] !== 0; })) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunkclive_client\"] = self[\"webpackChunkclive_client\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","import React, {Suspense} from 'react';\nimport ReactDOM from 'react-dom';\nimport {Router} from 'react-router-dom';\nimport {createBrowserHistory, History} from 'history';\nimport {chunk} from \"utils/LazyUtil\";\nimport SentryUtil from \"utils/SentryUtil\";\n\nconst EmbeddedApp = chunk(() => import(/* webpackChunkName: \"app-embed\" */ \"./EmbeddedApp\"));\nconst App = chunk(() => import(/* webpackChunkName: \"app\" */\"./App\"));\n\n// import registerServiceWorker from './registerServiceWorker';\nconst history: History = createBrowserHistory();\n\nSentryUtil.init(history);\n\nif (window.location.href.indexOf('http://') === 0)\n window.location.href = window.location.href.replace('http://', 'https://');\nelse if (window.location.pathname.indexOf('/embed') === 0)\n ReactDOM.render((}>), document.getElementById('root'));\nelse\n ReactDOM.render((}>), document.getElementById('root'));\n// registerServiceWorker();\n"],"names":["ENV","process","Environment","toString","isProduction","ApiAssetUtil","assetType","this","TYPE_TO_LABEL","TYPE_TO_API_ENDPOINT","TYPE_TO_CLIENT_ENDPOINT","CLIENT_ENDPOINT_TO_TYPE","asset","id","account","custom_field","email","form","form_submission","segment","smart_content","site","user","visit","visitor","visitor_attribute","webhook","accounts","custom_fields","emails","forms","submissions","segments","smart_contents","sites","users","visits","visitors","visitor_attributes","AppVersionUtil","clientVersion","message","console","warn","Sentry","FetchUtil","appVersion","log","window","location","reload","error","USER_TOKEN_CREATION_ENDPOINT","authToken","isAuthTokenReady","waitingCallbacks","updateLocalAuthToken","token","forEach","waitingCallback","length","handleAuthStorage","LocalStorageUtil","StorageKey","parent","postMessage","action","onAuthTokenReady","callback","push","storedAuthTokenExists","deleteStoredAuthToken","getAuthTokenAuthorizationHeader","getNewAuthToken","username","password","request","method","body","JSON","stringify","includeAuthToken","then","json","jwt","verifyAuthTokenIsValid","callbacks","failure","success","catch","checkGoogleLogin","locationSearch","query","queryString","addEventListener","event","data","url","options","setJsonContentTypeIfEmpty","prepOptions","fetch","handleErrorResponse","handleJsonResponse","handleTextResponse","response","ok","Promise","reject","fileName","getFileNameFromResponse","fileType","getFileTypeFromResponse","blob","File","type","isUnauthorized","status","redirectToLogin","exceptionToThrow","Error","statusText","jsonError","href","indexOf","handleInvalidAccountError","throwSystemError","invalidAccountError","origin","pathname","text","credentials","headers","Object","assign","contentDispositionHeader","get","filenameMatch","exec","e","hasKeyIgnoreCase","chunk","lazyComponent","lazy","component","resolve","key","value","localStorage","setItem","getItem","removeItem","deepClone","objectToClone","parse","objectsEqual","object1","object2","object","keyToFind","toLowerCase","keys","find","InboundFilters","internalOptions","clientOptions","allowUrls","denyUrls","ignoreErrors","DEFAULT_IGNORE_ERRORS","ignoreInternal","logger","getEventDescription","eventProcess","addGlobalEventProcessor","_getEventFilterUrl","frames","FunctionToString","originalFunctionToString","Function","args","defaultIntegrations","integration","integrations","integrationsByName","debugInstance","finalIntegrations","clientClass","scope","hub","getBaseApiEndpoint","dsn","_getIngestEndpoint","_encodedAuth","sentry_key","sentry_version","sdkInfo","sentry_client","tunnelOrOptions","_construct","Parent","Class","isNativeReflectConstruct","Reflect","construct","bind","a","apply","instance","setPrototypeOf","prototype","arguments","_wrapNativeSuper","_cache","Map","undefined","fn","call","TypeError","has","set","Wrapper","getPrototypeOf","constructor","create","enumerable","writable","configurable","SentryError","path","pass","port","projectId","protocol","publicKey","host","dsnFromComponents","components","lastPath","requiredComponents","validateDsn","inner","ERROR","depth","maxSize","maxProperties","memo","memoize","unmemoize","normalized","numAdded","stringifyValue","jsonSize","items","envelope","envelopeItems","encodeUTF8","input","envHeaders","parts","itemHeaders","payload","append","stringifiedPayload","buffers","merged","offset","attachment","textEncoder","dropUndefinedKeys","filename","content_type","attachment_type","buffer","session","sessions","transaction","client_report","user_report","name","version","metadata","tunnel","enhanceEventWithSdkInfo","event_id","sent_at","sdk","dynamicSamplingContext","trace","BaseClient","recordDroppedEvent","eventId","level","hint","promisedEvent","updateSession","init","integrationIndex","installedIntegrations","env","createAttachmentEnvelopeItem","errored","exceptions","crashed","errors","clearInterval","ticked","normalizeDepth","normalizeMaxBreadth","timestamp","finalScope","result","breadcrumbs","b","contexts","extra","span","release","dist","maxValueLength","exception","sampleRate","beforeSendResult","beforeSendProcessorName","processedEvent","transactionInfo","source","changes","propagations","__sentry__","originalException","reason","category","quantity","ex","values","stackParser","extractMessage","attachStacktrace","syntheticException","isUnhandledRejection","addExceptionTypeValue","extractExceptionKeysForMessage","__serialized__","addExceptionMechanism","synthetic","stacktrace","ignoreOnError","setTimeout","before","ignoreNextOnError","withScope","captureException","sentryWrapped","markFunctionWrapped","addNonEnumerableProperty","relative","Breadcrumbs","dom","history","sentry","xhr","addInstrumentationHandler","keyAttrs","target","htmlTreeAsString","getCurrentHub","global","_consoleBreadcrumb","handlerData","breadcrumb","_xhrBreadcrumb","status_code","_fetchBreadcrumb","_historyBreadcrumb","parsedFrom","to","from","BrowserClient","packages","WINDOW","breadcrumbIntegration","discarded_events","sendBeacon","createFrame","func","function","in_app","frame","extractSafariExtensionDetails","isSafariExtension","TryCatch","XMLHttpRequest","eventTarget","requestAnimationFrame","setInterval","fill","_wrapTimeFunction","original","mechanism","handled","_wrapRAF","wrap","handler","_wrapXHR","originalSend","xmlHttpRequestProps","wrapOptions","_wrapEventTarget","eventName","proto","originalRemoveEventListener","GlobalHandlers","onerror","onunhandledrejection","globalHandlerLog","installFunc","_installGlobalOnErrorHandler","line","column","msg","_eventFromIncompleteOnError","_enhanceEventWithInitialFrame","eventFromUnknownInput","addMechanismAndCapture","_installGlobalOnUnhandledRejectionHandler","_eventFromRejectionWithPrimitive","ev0sf","colno","lineno","getHubAndOptions","LinkedErrors","parser","limit","stack","Dedupe","currentEvent","eventProcessor","_isSameStacktrace","frameA","_isSameFingerprint","_getExceptionFromEvent","_getFramesFromEvent","HttpContext","referrer","userAgent","Referer","$","add","remove","drain","clearTimeout","limits","statusCode","now","rateLimitHeader","retryAfter","categories","updatedRateLimits","makeRequest","forEachEnvelopeItem","filteredEnvelopeItems","rateLimits","recordEnvelopeLoss","send","flush","sandbox","document","fetchImpl","cachedFetchImpl","nativeFetch","referrerPolicy","keepalive","clearCachedFetchImplementation","startSessionOnHub","ignoreDuration","startSessionTracking","transport","initAndBind","browserInit","routes","matchPath","createReactRouterInstrumentation","allRoutes","activeTransaction","op","tags","matchRoutes","branch","computeRootMatch","route","match","params","isExact","objectKey","objectValue","dscKey","dscValue","acc","baggageHeaderToObject","baggageHeader","split","map","reduce","metric","reportAllChanges","delta","prevValue","performance","entryType","startTime","navigationEntry","getNavigationEntryFromPerformanceTiming","navigationType","rating","entries","opts","po","buffered","cb","removeEventListener","firstHiddenTime","onHidden","ctx","startTimestamp","getBrowserPerformanceAPI","_trackCLS","sessionValue","sessionEntries","entry","report","handleEntries","onCLS","_measurements","unit","_clsEntry","_trackLCP","reportedMetricIDs","once","capture","onLCP","_lcpEntry","_trackFID","onFID","performanceEntries","_addPerformanceNavigationTiming","_startChild","description","endTimestamp","_addRequest","_addNavigationSpans","responseStartTimestamp","requestStartTimestamp","duration","timeOrigin","_addMeasureSpans","resourceName","_addResourceSpans","_performanceCursor","_trackNavigator","measurementName","_tagMetricInfo","eventEnd","traceFetch","traceXHR","tracingOrigins","tracePropagationTargets","defaultRequestInstrumentationOptions","_options","shouldCreateSpanForRequest","stringMatchesSomePattern","shouldCreateSpan","shouldAttachHeaders","spans","newHeaders","newBaggageHeaders","baggage","fetchCallback","xhrCallback","idleTimeout","finalTimeout","heartbeatInterval","markBackgroundTransactions","routingInstrumentation","customStartTransaction","startTransactionOnPageLoad","startTransactionOnLocationChange","startingUrl","_experiments","enableLongTask","BrowserTracing","DEFAULT_BROWSER_TRACING_OPTIONS","startTrackingWebVitals","i","lastAccessLHS","observe","instrumentRouting","statusType","instrumentOutgoingRequests","beforeNavigate","parentSampled","traceId","parentSpanId","baggageObject","currBaggageObject","baggageHeaderToDynamicSamplingContext","context","traceParentData","trimEnd","sampled","finalContext","idleTransaction","addPerformanceEntries","Boolean","__SENTRY_TRACING__","addExtensionMethods","SentryUtil","Integrations","environment","tracesSampleRate","setTag","sentryInitialized","account_id","captureContext","Hub","top","client","beforeBreadcrumb","maxBreadcrumbs","consoleSandbox","mergedBreadcrumb","makeMain","closeSession","GLOBAL_OBJ","extensions","setHubOnCarrier","registry","hasHubOnCarrier","carrier","__SENTRY__","Scope","extras","processors","index","processor","newScope","getGlobalEventProcessors","sid","started","toJSON","did","attrs","ip_address","user_agent","reactIs","require","REACT_STATICS","childContextTypes","contextType","contextTypes","defaultProps","displayName","getDefaultProps","getDerivedStateFromError","getDerivedStateFromProps","mixins","propTypes","KNOWN_STATICS","caller","callee","arity","MEMO_STATICS","compare","TYPE_STATICS","getStatics","isMemo","ForwardRef","render","Memo","defineProperty","getOwnPropertyNames","getOwnPropertySymbols","getOwnPropertyDescriptor","objectPrototype","module","exports","hoistNonReactStatics","targetComponent","sourceComponent","blacklist","inheritedComponent","concat","targetStatics","sourceStatics","descriptor","errorCallback","traceHeaders","sample","samplingContext","rate","Number","_startTransaction","transactionContext","customSamplingContext","transactionInstrumenter","configInstrumenter","onScope","_addTracingExtensions","mongodb","mongoose","mysql","pg","filter","_autoloadDatabaseIntegrations","IdleTransactionSpanRecorder","_pushActivity","_popActivity","transactionSpanId","maxlen","SpanRecorder","IdleTransaction","_idleHub","_idleTimeout","_finalTimeout","_heartbeatInterval","_onScope","clearActiveTransaction","Transaction","Span","spanContext","childSpan","logMessage","sampledString","spanId","parent_span_id","span_id","trace_id","start_timestamp","spanMetadata","sdkProcessingMetadata","transaction_info","public_key","user_segment","sample_rate","SpanClass","maybeOptions","nextStr","out","len","currentElem","_htmlElementAsString","el","keyAttrPairs","className","classes","attr","instrument","instrumented","CONSOLE_LEVELS","triggerHandlers","originalConsoleMethod","instrumentConsole","listener","refCount","handlerForType","originalAddEventListener","instrumentDOM","xhrInfo","onreadystatechangeHandler","readyStateArgs","instrumentXHR","fetchData","instrumentFetch","lastHref","instrumentHistory","_oldOnErrorHandler","_oldOnUnhandledRejectionHandler","handlers","getFetchMethod","getFetchUrl","shouldShortcircuitPreviousDebounce","previous","shouldSkipDOMEvent","makeDOMEventHandler","lastCapturedEvent","debounceTimerID","isBuiltin","wat","originalConsole","wrappedLevels","makeLogger","enable","enabled","disable","crypto","getFirstException","firstException","mod","cwd","wrapped","join","getOwnProperties","currentTarget","newObj","serializeEventTarget","obj","extractedProps","_dropUndefinedKeys","memoizationMap","returnValue","inputValue","parsers","sortedParsers","localStack","slice","reverse","output","pattern","requireExactStringMatch","testString","patterns","doc","States","SyncPromise","executor","onfulfilled","onrejected","isRejected","val","onfinally","cachedHandlers","nowSeconds","platformPerformance","dateTimestampSource","Math","threshold","_browserPerformanceTimeOriginMode","isGlobalObj","singleMatcher","RegExp","multiMatcher","decodeComponents","decodeURIComponent","err","left","right","Array","decode","tokens","encodedURI","replace","replaceMap","customDecodeURIComponent","isAbsolute","charAt","spliceOne","list","k","n","pop","hasTrailingSlash","toParts","fromParts","isToAbs","isFromAbs","mustEndAbs","last","up","part","unshift","substr","valueOf","valueEqual","isArray","every","item","aValue","bValue","addLeadingSlash","stripLeadingSlash","stripBasename","prefix","hasBasename","stripTrailingSlash","createPath","search","hash","createLocation","state","currentLocation","hashIndex","searchIndex","parsePath","_extends","decodeURI","URIError","resolvePathname","locationsAreEqual","createTransitionManager","prompt","listeners","setPrompt","nextPrompt","confirmTransitionTo","getUserConfirmation","appendListener","isActive","notifyListeners","_len","_key","canUseDOM","createElement","getConfirmation","confirm","PopStateEvent","HashChangeEvent","getHistoryState","createBrowserHistory","props","invariant","globalHistory","canUseHistory","ua","navigator","supportsHistory","needsHashChangeListener","_props","_props$forceRefresh","forceRefresh","_props$getUserConfirm","_props$keyLength","keyLength","basename","getDOMLocation","historyState","_ref","_window$location","createKey","random","transitionManager","setState","nextState","handlePopState","isExtraneousPopstateEvent","handlePop","handleHashChange","forceNextPop","fromLocation","toLocation","toIndex","allKeys","fromIndex","go","revertPop","initialLocation","createHref","listenerCount","checkDOMListeners","isBlocked","pushState","prevIndex","nextKeys","replaceState","goBack","goForward","block","unblock","listen","unlisten","HashChangeEvent$1","HashPathCoders","hashbang","encodePath","decodePath","noslash","slash","stripHash","getHashPath","substring","replaceHashPath","createHashHistory","_props$hashType","hashType","_HashPathCoders$hashT","ignorePath","encodedPath","prevLocation","allPaths","lastIndexOf","baseTag","querySelector","getAttribute","pushHashPath","nextPaths","clamp","lowerBound","upperBound","min","max","createMemoryHistory","_props$initialEntries","initialEntries","_props$initialIndex","initialIndex","nextIndex","nextEntries","splice","canGo","ReactIs","arr","hasOwnProperty","propIsEnumerable","propertyIsEnumerable","toObject","test1","String","test2","fromCharCode","test3","letter","shouldUseNative","symbols","s","isarray","pathToRegexp","compile","str","tokensToFunction","tokensToRegExp","PATH_REGEXP","res","defaultDelimiter","delimiter","m","escaped","next","group","modifier","asterisk","partial","repeat","optional","escapeGroup","escapeString","encodeURIComponentPretty","encodeURI","c","charCodeAt","toUpperCase","matches","flags","encode","pretty","encodeURIComponent","j","test","attachKeys","re","sensitive","strict","end","endsWithDelimiter","groups","regexpToRegexp","arrayToRegexp","stringToRegexp","ReactPropTypesSecret","emptyFunction","emptyFunctionWithReset","resetWarningCache","shim","propName","componentName","propFullName","secret","getShim","isRequired","ReactPropTypes","array","bigint","bool","number","string","symbol","any","arrayOf","element","elementType","instanceOf","node","objectOf","oneOf","oneOfType","shape","exact","checkPropTypes","PropTypes","strictUriEncode","objectAssign","decodeComponent","keysSorter","sort","extract","queryStart","formatter","arrayFormat","accumulator","parserForArrayFormat","ret","trim","param","shift","encoderForArrayFormat","val2","x","parseUrl","aa","r","ba","d","f","g","h","l","framesToPop","ca","onError","da","ea","fa","ha","ia","ja","la","ma","na","oa","extractEvents","eventTypes","pa","phasedRegistrationNames","qa","registrationName","ra","sa","dependencies","ta","va","wa","ka","xa","ya","za","Aa","_dispatchListeners","_dispatchInstances","isPropagationStopped","isPersistent","Ba","injectEventPluginOrder","injectEventPluginsByName","Ca","stateNode","disabled","Da","Ea","Fa","Ga","Ha","parentNode","tag","Ia","Ja","Ka","La","return","Ma","dispatchConfig","Na","_targetInst","Oa","Pa","Qa","Ra","Sa","Ta","animationend","animationiteration","animationstart","transitionend","Ua","Va","Wa","style","animation","transition","Xa","Ya","Za","$a","ab","bb","db","eb","textContent","fb","gb","y","nativeEvent","Interface","isDefaultPrevented","defaultPrevented","ib","eventPool","jb","destructor","hb","getPooled","preventDefault","stopPropagation","cancelBubble","persist","eventPhase","bubbles","cancelable","timeStamp","Date","isTrusted","extend","kb","lb","mb","nb","ob","documentMode","pb","qb","rb","sb","beforeInput","bubbled","captured","compositionEnd","compositionStart","compositionUpdate","tb","ub","keyCode","vb","detail","wb","zb","locale","which","xb","ctrlKey","altKey","metaKey","char","yb","Ab","Bb","Cb","Db","Eb","Fb","Gb","Hb","Ib","Jb","Kb","Lb","color","date","datetime","month","range","tel","time","week","Mb","nodeName","Nb","srcElement","correspondingUseElement","nodeType","Ob","setAttribute","Pb","Rb","_valueTracker","getValue","setValue","stopTracking","Qb","Sb","checked","Tb","__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED","ReactCurrentDispatcher","current","Ub","z","Symbol","for","Vb","Wb","Xb","Yb","Zb","$b","ac","bc","cc","dc","ec","fc","gc","iterator","hc","ic","$$typeof","_status","_result","jc","_debugOwner","_debugSource","lineNumber","kc","lc","mc","nc","C","acceptsBooleans","attributeName","attributeNamespace","mustUseProperty","propertyName","D","rc","sc","tc","pc","isNaN","qc","oc","removeAttribute","setAttributeNS","uc","vc","defaultChecked","defaultValue","_wrapperState","initialChecked","wc","initialValue","controlled","xc","yc","zc","Ac","ownerDocument","activeElement","Bc","change","Cc","Dc","Ec","Fc","Gc","Hc","Ic","Jc","detachEvent","Kc","Lc","attachEvent","Mc","Nc","Oc","Pc","_isInputEventSupported","Qc","view","Rc","Alt","Control","Meta","Shift","Sc","getModifierState","Tc","Uc","Vc","Wc","Xc","Yc","screenX","screenY","clientX","clientY","pageX","pageY","shiftKey","button","buttons","relatedTarget","fromElement","toElement","movementX","movementY","Zc","pointerId","width","height","pressure","tangentialPressure","tiltX","tiltY","twist","pointerType","isPrimary","$c","mouseEnter","mouseLeave","pointerEnter","pointerLeave","ad","defaultView","parentWindow","alternate","bd","cd","dd","ed","effectTag","fd","hd","child","sibling","gd","animationName","elapsedTime","pseudoElement","jd","clipboardData","kd","ld","charCode","md","Esc","Spacebar","Left","Up","Right","Down","Del","Win","Menu","Apps","Scroll","MozPrintableKey","nd","od","pd","dataTransfer","qd","touches","targetTouches","changedTouches","rd","sd","deltaX","wheelDeltaX","deltaY","wheelDeltaY","wheelDelta","deltaZ","deltaMode","td","ud","vd","wd","isInteractive","xd","isInteractiveTopLevelEventType","yd","zd","Ad","targetInst","ancestors","containerInfo","topLevelType","Bd","E","Cd","Dd","Ed","Fd","Gd","Hd","Id","Jd","Kd","firstChild","Ld","nextSibling","Md","contains","compareDocumentPosition","Nd","HTMLIFrameElement","contentWindow","Od","contentEditable","Qd","focusedElem","selectionRange","documentElement","start","selectionStart","selectionEnd","getSelection","rangeCount","anchorNode","anchorOffset","focusNode","focusOffset","createRange","setStart","removeAllRanges","addRange","setEnd","scrollLeft","scrollTop","focus","Rd","Sd","select","Td","Ud","Vd","Wd","Xd","Yd","onSelect","$d","children","Children","Zd","ae","selected","defaultSelected","be","dangerouslySetInnerHTML","ce","de","ee","SimpleEventPlugin","EnterLeaveEventPlugin","ChangeEventPlugin","SelectEventPlugin","BeforeInputEventPlugin","fe","ge","he","ie","je","namespaceURI","innerHTML","removeChild","appendChild","MSApp","execUnsafeLocalFunction","ke","lastChild","nodeValue","le","animationIterationCount","borderImageOutset","borderImageSlice","borderImageWidth","boxFlex","boxFlexGroup","boxOrdinalGroup","columnCount","columns","flex","flexGrow","flexPositive","flexShrink","flexNegative","flexOrder","gridArea","gridRow","gridRowEnd","gridRowSpan","gridRowStart","gridColumn","gridColumnEnd","gridColumnSpan","gridColumnStart","fontWeight","lineClamp","lineHeight","opacity","order","orphans","tabSize","widows","zIndex","zoom","fillOpacity","floodOpacity","stopOpacity","strokeDasharray","strokeDashoffset","strokeMiterlimit","strokeOpacity","strokeWidth","me","ne","oe","setProperty","pe","menuitem","area","base","br","col","embed","hr","img","keygen","link","meta","track","wbr","qe","is","se","blur","te","ue","ve","we","autoFocus","xe","__html","ye","ze","Ae","unstable_scheduleCallback","Be","unstable_cancelCallback","De","Ee","Set","Fe","Ge","F","G","He","H","I","Ie","Je","__reactInternalMemoizedUnmaskedChildContext","__reactInternalMemoizedMaskedChildContext","J","Ke","Le","Me","Ne","getChildContext","Oe","__reactInternalMemoizedMergedChildContext","Pe","Qe","Re","Se","Ue","ref","pendingProps","contextDependencies","memoizedState","updateQueue","memoizedProps","mode","lastEffect","firstEffect","nextEffect","childExpirationTime","expirationTime","K","Ve","isReactComponent","Xe","Ye","Ze","$e","af","bf","pendingChildren","implementation","cf","didError","earliestPendingTime","latestPendingTime","df","ff","latestPingedTime","earliestSuspendedTime","latestSuspendedTime","gf","nextExpirationTimeToWorkOn","L","jf","Component","refs","kf","baseState","tf","isMounted","_reactInternalFiber","enqueueSetState","lf","nf","mf","of","pf","qf","enqueueReplaceState","rf","enqueueForceUpdate","sf","uf","shouldComponentUpdate","isPureReactComponent","vf","M","updater","wf","componentWillReceiveProps","UNSAFE_componentWillReceiveProps","xf","yf","getSnapshotBeforeUpdate","UNSAFE_componentWillMount","componentWillMount","componentDidMount","zf","Af","_owner","_stringRef","Bf","Cf","p","t","A","v","q","u","B","w","delete","R","done","Df","Ef","Ff","N","Gf","Hf","If","Jf","tagName","Kf","Lf","Mf","Vf","Wf","Xf","O","P","Yf","Q","Zf","$f","ag","bg","cg","dg","eg","fg","gg","hg","ig","jg","kg","lg","mg","queue","baseUpdate","ng","og","lastRenderedReducer","dispatch","qg","lastRenderedState","eagerReducer","eagerState","rg","destroy","deps","sg","tg","ug","vg","wg","readContext","useCallback","useContext","useEffect","useImperativeHandle","useLayoutEffect","useMemo","useReducer","useRef","useState","useDebugValue","Uf","Pf","xg","yg","zg","Ag","Bg","Cg","Dg","Eg","Fg","Gg","ReactCurrentOwner","S","Hg","Ig","Jg","Kg","Lg","Mg","Ng","Og","Pg","UNSAFE_componentWillUpdate","componentWillUpdate","componentDidUpdate","Qg","Rg","pendingContext","Sg","timedOutAt","fallback","Tg","Ug","_ctor","default","hf","We","hydrate","hidden","_context","_calculateChangedBits","first","observedBits","unstable_observedBits","Vg","Wg","Xg","Yg","_currentValue","Zg","bh","firstUpdate","lastUpdate","firstCapturedUpdate","lastCapturedUpdate","firstCapturedEffect","lastCapturedEffect","ch","dh","eh","fh","gh","hh","ih","jh","kh","lh","nh","oh","onClick","onclick","ph","WeakSet","qh","rh","sh","th","vh","componentWillUnmount","wh","xh","yh","insertBefore","_reactRootContainer","zh","wasMultiple","multiple","Ce","display","uh","Ah","Bh","WeakMap","Ch","Dh","Eh","componentDidCatch","Fh","componentStack","Gh","Hh","Ih","Jh","Kh","T","Lh","U","Mh","Nh","V","Oh","Ph","Qh","Rh","Sh","Th","Uh","__reactInternalSnapshotBeforeUpdate","Vh","Wh","W","Xh","X","Yh","Zh","pendingCommitExpirationTime","ef","Pd","unstable_runWithPriority","unstable_NormalPriority","finishedWork","$h","ai","size","createElementNS","createTextNode","bi","ci","di","maxDuration","pingCache","ei","fi","unstable_getCurrentPriorityLevel","unstable_ImmediatePriority","unstable_UserBlockingPriority","unstable_LowPriority","unstable_IdlePriority","gi","hi","ii","ji","ki","li","Y","mi","ni","oi","Z","pi","qi","ri","si","ti","unstable_now","ui","vi","wi","xi","yi","zi","timeout","timeoutHandle","Ai","Bi","Ci","nextScheduledRoot","Di","Ei","unstable_shouldYield","_onComplete","Fi","firstBatch","_expirationTime","_defer","Gi","Hi","Ii","Ji","Ki","Li","Mi","Ni","_root","_callbacks","_next","_hasChildren","_didComplete","_children","Oi","_didCommit","_onCommit","Pi","_internalRoot","Qi","Si","legacy_renderSubtreeIntoContainer","hasAttribute","Ri","Ti","querySelectorAll","commit","unmount","createBatch","Vi","createPortal","findDOMNode","unstable_renderSubtreeIntoContainer","unmountComponentAtNode","unstable_createPortal","unstable_batchedUpdates","unstable_interactiveUpdates","flushSync","unstable_createRoot","unstable_flushControlled","Events","findFiberByHostInstance","__REACT_DEVTOOLS_GLOBAL_HOOK__","isDisabled","supportsFiber","inject","onCommitFiberRoot","onCommitFiberUnmount","Te","overrideProps","currentDispatcherRef","findHostInstanceByFiber","bundleType","rendererPackageName","Wi","Xi","checkDCE","AsyncMode","ConcurrentMode","ContextConsumer","ContextProvider","Element","Fragment","Lazy","Portal","Profiler","StrictMode","Suspense","isAsyncMode","isConcurrentMode","isContextConsumer","isContextProvider","isElement","isForwardRef","isFragment","isLazy","isPortal","isProfiler","isStrictMode","isSuspense","isValidElementType","typeOf","MAX_SIGNED_31_BIT_INT","createEventEmitter","on","off","newValue","changedBits","React","calculateChangedBits","_Provider$childContex","_Consumer$contextType","contextProp","gud","Provider","_Component","_this","emitter","_inheritsLoose","_proto","nextProps","oldValue","Consumer","_Component2","_this2","onUpdate","_proto2","createNamedContext","createContext","Router","_isMounted","_pendingLocation","staticContext","RouterContext","Lifecycle","onMount","prevProps","onUnmount","cache","cacheCount","generatePath","generator","compilePath","Redirect","computedMatch","self","matched","cacheKey","pathCache","regexp","Route","createURL","staticHandler","methodName","noop","Switch","withRouter","wrappedComponentRef","remainingProps","WrappedComponent","hoistStatics","__self","__source","jsx","jsxs","forceUpdate","keyPrefix","count","escape","ReactCurrentBatchConfig","suspense","IsSomeRendererActing","toArray","only","PureComponent","cloneElement","_currentValue2","_threadCount","createFactory","createRef","forwardRef","isValidElement","priorityLevel","cancelAnimationFrame","_schedMock","MessageChannel","port2","port1","onmessage","unstable_next","unstable_wrapCallback","unstable_continueExecution","unstable_pauseExecution","unstable_getFirstCallbackNode","condition","_arrayLikeToArray","arr2","_arrayWithHoles","_assertThisInitialized","ReferenceError","asyncGeneratorStep","gen","_throw","arg","info","_asyncToGenerator","_classCallCheck","Constructor","_defineProperties","_createClass","protoProps","staticProps","_createForOfIteratorHelper","o","allowArrayLike","it","_e","normalCompletion","didErr","step","_e2","_createSuper","Derived","hasNativeReflectConstruct","Super","NewTarget","_defineProperty","_superPropBase","property","_get","receiver","desc","_getPrototypeOf","__proto__","_inherits","subClass","superClass","_isNativeReflectConstruct","sham","Proxy","_iterableToArray","iter","_nonIterableRest","ownKeys","enumerableOnly","sym","_objectSpread2","getOwnPropertyDescriptors","defineProperties","_objectWithoutProperties","excluded","sourceSymbolKeys","_objectWithoutPropertiesLoose","sourceKeys","_possibleConstructorReturn","_regeneratorRuntime","Op","hasOwn","$Symbol","iteratorSymbol","asyncIteratorSymbol","asyncIterator","toStringTagSymbol","toStringTag","define","innerFn","outerFn","tryLocsList","protoGenerator","Generator","Context","makeInvokeMethod","tryCatch","ContinueSentinel","GeneratorFunction","GeneratorFunctionPrototype","IteratorPrototype","getProto","NativeIteratorPrototype","Gp","defineIteratorMethods","_invoke","AsyncIterator","PromiseImpl","invoke","record","__await","unwrapped","previousPromise","callInvokeWithMethodAndArg","doneResult","delegate","delegateResult","maybeInvokeDelegate","sent","_sent","dispatchException","abrupt","resultName","nextLoc","pushTryEntry","locs","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","resetTryEntry","completion","reset","iterable","iteratorMethod","isGeneratorFunction","genFun","ctor","mark","awrap","async","skipTempReset","prev","stop","rootRecord","rval","handle","loc","caught","hasCatch","hasFinally","finallyEntry","complete","finish","thrown","delegateYield","_setPrototypeOf","_slicedToArray","arrayWithHoles","_i","_s","_x","_r","_arr","_n","_d","unsupportedIterableToArray","nonIterableRest","_toConsumableArray","arrayLikeToArray","iterableToArray","_toPropertyKey","prim","toPrimitive","_typeof","_unsupportedIterableToArray","minLen","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","loaded","__webpack_modules__","getter","__esModule","definition","chunkId","all","promises","miniCssF","globalThis","hmd","prop","inProgress","dataWebpackPrefix","script","needAttach","scripts","getElementsByTagName","charset","src","onScriptComplete","onload","doneFns","head","nmd","paths","loadStylesheet","fullhref","existingLinkTags","dataHref","rel","existingStyleTags","findStylesheet","oldTag","linkTag","errorType","realHref","code","createStylesheet","installedCssChunks","miniCss","installedChunks","installedChunkData","promise","realSrc","webpackJsonpCallback","parentChunkLoadingFunction","chunkIds","moreModules","runtime","some","chunkLoadingGlobal","EmbeddedApp","App","ReactDOM","getElementById"],"sourceRoot":""}