{"version":3,"file":"zvzo-exports-cafe24-a1a228.umd.cjs","sources":["../../../node_modules/.pnpm/preact@10.27.1/node_modules/preact/dist/preact.module.js","../../../node_modules/.pnpm/retry@0.13.1/node_modules/retry/lib/retry_operation.js","../../../node_modules/.pnpm/retry@0.13.1/node_modules/retry/lib/retry.js","../../../node_modules/.pnpm/retry@0.13.1/node_modules/retry/index.js","../../../node_modules/.pnpm/is-network-error@1.1.0/node_modules/is-network-error/index.js","../../../node_modules/.pnpm/p-retry@6.2.1/node_modules/p-retry/index.js","../../../node_modules/.pnpm/@toss+use-overlay@1.4.2_react@18.3.1/node_modules/@toss/use-overlay/esm/_virtual/_rollupPluginBabelHelpers.mjs","../../../node_modules/.pnpm/preact@10.27.1/node_modules/preact/hooks/dist/hooks.module.js","../../../node_modules/.pnpm/preact@10.27.1/node_modules/preact/compat/dist/compat.module.js","../../../node_modules/.pnpm/preact@10.27.1/node_modules/preact/jsx-runtime/dist/jsxRuntime.module.js","../../../node_modules/.pnpm/@toss+use-overlay@1.4.2_react@18.3.1/node_modules/@toss/use-overlay/esm/OverlayProvider.mjs","../../../node_modules/.pnpm/@toss+use-overlay@1.4.2_react@18.3.1/node_modules/@toss/use-overlay/esm/OverlayController.mjs","../../../node_modules/.pnpm/@toss+use-overlay@1.4.2_react@18.3.1/node_modules/@toss/use-overlay/esm/useOverlay.mjs","../../../node_modules/.pnpm/suspend-react@0.1.3_react@18.3.1/node_modules/suspend-react/index.js","../../../node_modules/.pnpm/isbot@5.1.30/node_modules/isbot/index.mjs","../../../node_modules/.pnpm/eventemitter3@4.0.7/node_modules/eventemitter3/index.js","../../../node_modules/.pnpm/p-finally@1.0.0/node_modules/p-finally/index.js","../../../node_modules/.pnpm/p-timeout@3.2.0/node_modules/p-timeout/index.js","../../../node_modules/.pnpm/p-queue@6.6.2/node_modules/p-queue/dist/lower-bound.js","../../../node_modules/.pnpm/p-queue@6.6.2/node_modules/p-queue/dist/priority-queue.js","../../../node_modules/.pnpm/p-queue@6.6.2/node_modules/p-queue/dist/index.js","../../../packages/shared/src/logger/mediator.ts","../../../packages/shared/src/logger/logger.ts","../../../node_modules/.pnpm/tslib@2.8.1/node_modules/tslib/tslib.es6.mjs","../../../node_modules/.pnpm/@amplitude+analytics-core@2.20.2/node_modules/@amplitude/analytics-core/lib/esm/types/event/event.js","../../../node_modules/.pnpm/@amplitude+analytics-core@2.20.2/node_modules/@amplitude/analytics-core/lib/esm/types/constants.js","../../../node_modules/.pnpm/@amplitude+analytics-core@2.20.2/node_modules/@amplitude/analytics-core/lib/esm/utils/valid-properties.js","../../../node_modules/.pnpm/@amplitude+analytics-core@2.20.2/node_modules/@amplitude/analytics-core/lib/esm/identify.js","../../../node_modules/.pnpm/@amplitude+analytics-core@2.20.2/node_modules/@amplitude/analytics-core/lib/esm/types/messages.js","../../../node_modules/.pnpm/@amplitude+analytics-core@2.20.2/node_modules/@amplitude/analytics-core/lib/esm/types/status.js","../../../node_modules/.pnpm/@amplitude+analytics-core@2.20.2/node_modules/@amplitude/analytics-core/lib/esm/utils/result-builder.js","../../../node_modules/.pnpm/@amplitude+analytics-core@2.20.2/node_modules/@amplitude/analytics-core/lib/esm/global-scope.js","../../../node_modules/.pnpm/@amplitude+analytics-core@2.20.2/node_modules/@amplitude/analytics-core/lib/esm/utils/uuid.js","../../../node_modules/.pnpm/@amplitude+analytics-core@2.20.2/node_modules/@amplitude/analytics-core/lib/esm/timeline.js","../../../node_modules/.pnpm/@amplitude+analytics-core@2.20.2/node_modules/@amplitude/analytics-core/lib/esm/utils/event-builder.js","../../../node_modules/.pnpm/@amplitude+analytics-core@2.20.2/node_modules/@amplitude/analytics-core/lib/esm/utils/return-wrapper.js","../../../node_modules/.pnpm/@amplitude+analytics-core@2.20.2/node_modules/@amplitude/analytics-core/lib/esm/core-client.js","../../../node_modules/.pnpm/@amplitude+analytics-core@2.20.2/node_modules/@amplitude/analytics-core/lib/esm/remote-config/remote-config-localstorage.js","../../../node_modules/.pnpm/@amplitude+analytics-core@2.20.2/node_modules/@amplitude/analytics-core/lib/esm/remote-config/remote-config.js","../../../node_modules/.pnpm/@amplitude+analytics-core@2.20.2/node_modules/@amplitude/analytics-core/lib/esm/types/loglevel.js","../../../node_modules/.pnpm/@amplitude+analytics-core@2.20.2/node_modules/@amplitude/analytics-core/lib/esm/logger.js","../../../node_modules/.pnpm/@amplitude+analytics-core@2.20.2/node_modules/@amplitude/analytics-core/lib/esm/revenue.js","../../../node_modules/.pnpm/@amplitude+analytics-core@2.20.2/node_modules/@amplitude/analytics-core/lib/esm/utils/chunk.js","../../../node_modules/.pnpm/@amplitude+analytics-core@2.20.2/node_modules/@amplitude/analytics-core/lib/esm/config.js","../../../node_modules/.pnpm/@amplitude+analytics-core@2.20.2/node_modules/@amplitude/analytics-core/lib/esm/plugins/destination.js","../../../node_modules/.pnpm/@amplitude+analytics-connector@1.6.4/node_modules/@amplitude/analytics-connector/dist/analytics-connector.esm.js","../../../node_modules/.pnpm/@amplitude+analytics-core@2.20.2/node_modules/@amplitude/analytics-core/lib/esm/analytics-connector.js","../../../node_modules/.pnpm/@amplitude+analytics-core@2.20.2/node_modules/@amplitude/analytics-core/lib/esm/plugins/identity.js","../../../node_modules/.pnpm/@amplitude+analytics-core@2.20.2/node_modules/@amplitude/analytics-core/lib/esm/session.js","../../../node_modules/.pnpm/@amplitude+analytics-core@2.20.2/node_modules/@amplitude/analytics-core/lib/esm/cookie-name.js","../../../node_modules/.pnpm/@amplitude+analytics-core@2.20.2/node_modules/@amplitude/analytics-core/lib/esm/language.js","../../../node_modules/.pnpm/@amplitude+analytics-core@2.20.2/node_modules/@amplitude/analytics-core/lib/esm/query-params.js","../../../node_modules/.pnpm/@amplitude+analytics-core@2.20.2/node_modules/@amplitude/analytics-core/lib/esm/utils/debug.js","../../../node_modules/.pnpm/@amplitude+analytics-core@2.20.2/node_modules/@amplitude/analytics-core/lib/esm/utils/url-utils.js","../../../node_modules/.pnpm/@amplitude+analytics-core@2.20.2/node_modules/@amplitude/analytics-core/lib/esm/storage/memory.js","../../../node_modules/.pnpm/@amplitude+analytics-core@2.20.2/node_modules/@amplitude/analytics-core/lib/esm/storage/cookie.js","../../../node_modules/.pnpm/@amplitude+analytics-core@2.20.2/node_modules/@amplitude/analytics-core/lib/esm/storage/helpers.js","../../../node_modules/.pnpm/@amplitude+analytics-core@2.20.2/node_modules/@amplitude/analytics-core/lib/esm/storage/browser-storage.js","../../../node_modules/.pnpm/@amplitude+analytics-core@2.20.2/node_modules/@amplitude/analytics-core/lib/esm/transports/base.js","../../../node_modules/.pnpm/@amplitude+analytics-core@2.20.2/node_modules/@amplitude/analytics-core/lib/esm/transports/fetch.js","../../../node_modules/.pnpm/@amplitude+analytics-core@2.20.2/node_modules/@amplitude/analytics-core/lib/esm/types/server-zone.js","../../../node_modules/.pnpm/@amplitude+analytics-core@2.20.2/node_modules/@amplitude/analytics-core/lib/esm/types/offline.js","../../../node_modules/.pnpm/@amplitude+analytics-core@2.20.2/node_modules/@amplitude/analytics-core/lib/esm/types/element-interactions.js","../../../node_modules/.pnpm/@amplitude+analytics-core@2.20.2/node_modules/@amplitude/analytics-core/lib/esm/types/frustration-interactions.js","../../../node_modules/.pnpm/@amplitude+analytics-core@2.20.2/node_modules/@amplitude/analytics-core/lib/esm/network-request-event.js","../../../node_modules/.pnpm/@amplitude+analytics-core@2.20.2/node_modules/@amplitude/analytics-core/lib/esm/network-observer.js","../../../node_modules/.pnpm/@amplitude+analytics-core@2.20.2/node_modules/@amplitude/analytics-core/lib/esm/campaign/campaign-parser.js","../../../node_modules/.pnpm/@amplitude+analytics-browser@2.22.2/node_modules/@amplitude/analytics-browser/lib/esm/default-tracking.js","../../../node_modules/.pnpm/@amplitude+analytics-browser@2.22.2/node_modules/@amplitude/analytics-browser/lib/esm/utils/snippet-helper.js","../../../node_modules/.pnpm/@amplitude+analytics-browser@2.22.2/node_modules/@amplitude/analytics-browser/lib/esm/version.js","../../../node_modules/.pnpm/@amplitude+analytics-browser@2.22.2/node_modules/@amplitude/analytics-browser/lib/esm/lib-prefix.js","../../../node_modules/.pnpm/@amplitude+analytics-browser@2.22.2/node_modules/@amplitude/analytics-browser/lib/esm/plugins/context.js","../../../node_modules/.pnpm/@amplitude+analytics-browser@2.22.2/node_modules/@amplitude/analytics-browser/lib/esm/storage/local-storage.js","../../../node_modules/.pnpm/@amplitude+analytics-browser@2.22.2/node_modules/@amplitude/analytics-browser/lib/esm/storage/session-storage.js","../../../node_modules/.pnpm/@amplitude+analytics-browser@2.22.2/node_modules/@amplitude/analytics-browser/lib/esm/transports/xhr.js","../../../node_modules/.pnpm/@amplitude+analytics-browser@2.22.2/node_modules/@amplitude/analytics-browser/lib/esm/transports/send-beacon.js","../../../node_modules/.pnpm/@amplitude+analytics-browser@2.22.2/node_modules/@amplitude/analytics-browser/lib/esm/cookie-migration/index.js","../../../node_modules/.pnpm/@amplitude+analytics-browser@2.22.2/node_modules/@amplitude/analytics-browser/lib/esm/constants.js","../../../node_modules/.pnpm/@amplitude+analytics-browser@2.22.2/node_modules/@amplitude/analytics-browser/lib/esm/config.js","../../../node_modules/.pnpm/@amplitude+analytics-client-common@2.3.34/node_modules/@amplitude/analytics-client-common/lib/esm/global-scope.js","../../../node_modules/.pnpm/@amplitude+analytics-client-common@2.3.34/node_modules/@amplitude/analytics-client-common/lib/esm/query-params.js","../../../node_modules/.pnpm/@amplitude+analytics-client-common@2.3.34/node_modules/@amplitude/analytics-client-common/lib/esm/attribution/constants.js","../../../node_modules/.pnpm/@amplitude+analytics-client-common@2.3.34/node_modules/@amplitude/analytics-client-common/lib/esm/attribution/campaign-parser.js","../../../node_modules/.pnpm/@amplitude+analytics-types@2.9.2/node_modules/@amplitude/analytics-types/lib/esm/event.js","../../../node_modules/.pnpm/@amplitude+plugin-page-view-tracking-browser@2.3.40/node_modules/@amplitude/plugin-page-view-tracking-browser/lib/esm/utils.js","../../../node_modules/.pnpm/@amplitude+plugin-page-view-tracking-browser@2.3.40/node_modules/@amplitude/plugin-page-view-tracking-browser/lib/esm/page-view-tracking.js","../../../node_modules/.pnpm/@amplitude+analytics-browser@2.22.2/node_modules/@amplitude/analytics-browser/lib/esm/plugins/form-interaction-tracking.js","../../../node_modules/.pnpm/@amplitude+analytics-browser@2.22.2/node_modules/@amplitude/analytics-browser/lib/esm/plugins/file-download-tracking.js","../../../node_modules/.pnpm/@amplitude+analytics-browser@2.22.2/node_modules/@amplitude/analytics-browser/lib/esm/det-notification.js","../../../node_modules/.pnpm/@amplitude+analytics-browser@2.22.2/node_modules/@amplitude/analytics-browser/lib/esm/plugins/network-connectivity-checker.js","../../../node_modules/.pnpm/@amplitude+analytics-browser@2.22.2/node_modules/@amplitude/analytics-browser/lib/esm/config/joined-config.js","../../../node_modules/.pnpm/@amplitude+analytics-types@1.4.0/node_modules/@amplitude/analytics-types/lib/esm/server-zone.js","../../../node_modules/.pnpm/@amplitude+analytics-types@1.4.0/node_modules/@amplitude/analytics-types/lib/esm/status.js","../../../node_modules/.pnpm/@amplitude+analytics-core@1.2.8/node_modules/@amplitude/analytics-core/lib/esm/transports/base.js","../../../node_modules/.pnpm/@amplitude+analytics-remote-config@0.6.3/node_modules/@amplitude/analytics-remote-config/lib/esm/remote-config.js","../../../node_modules/.pnpm/@amplitude+analytics-remote-config@0.6.3/node_modules/@amplitude/analytics-remote-config/lib/esm/index.js","../../../node_modules/.pnpm/@amplitude+plugin-autocapture-browser@1.9.0/node_modules/@amplitude/plugin-autocapture-browser/lib/esm/constants.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/util/isFunction.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/util/createErrorClass.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/util/UnsubscriptionError.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/util/arrRemove.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/Subscription.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/config.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/scheduler/timeoutProvider.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/util/reportUnhandledError.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/util/noop.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/util/errorContext.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/Subscriber.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/symbol/observable.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/util/identity.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/util/pipe.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/Observable.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/util/lift.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/operators/OperatorSubscriber.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/util/ObjectUnsubscribedError.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/Subject.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/scheduler/dateTimestampProvider.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/scheduler/Action.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/scheduler/intervalProvider.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/scheduler/AsyncAction.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/Scheduler.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/scheduler/AsyncScheduler.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/scheduler/async.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/observable/empty.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/util/isScheduler.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/util/args.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/util/isArrayLike.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/util/isPromise.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/util/isInteropObservable.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/util/isAsyncIterable.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/util/throwUnobservableError.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/symbol/iterator.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/util/isIterable.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/util/isReadableStreamLike.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/observable/innerFrom.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/util/executeSchedule.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/operators/observeOn.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/operators/subscribeOn.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/scheduled/scheduleObservable.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/scheduled/schedulePromise.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/scheduled/scheduleArray.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/scheduled/scheduleIterable.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/scheduled/scheduleAsyncIterable.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/scheduled/scheduleReadableStreamLike.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/scheduled/scheduled.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/observable/from.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/util/isDate.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/operators/timeout.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/operators/map.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/util/mapOneOrManyArgs.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/operators/mergeInternals.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/operators/mergeMap.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/operators/mergeAll.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/observable/fromEvent.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/observable/timer.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/observable/merge.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/util/argsOrArgArray.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/operators/filter.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/observable/race.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/operators/buffer.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/operators/debounceTime.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/operators/take.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/operators/mapTo.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/operators/delayWhen.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/operators/delay.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/operators/pairwise.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/operators/share.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/operators/switchMap.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/operators/throttle.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/operators/throttleTime.js","../../../node_modules/.pnpm/@amplitude+plugin-autocapture-browser@1.9.0/node_modules/@amplitude/plugin-autocapture-browser/lib/esm/hierarchy.js","../../../node_modules/.pnpm/@amplitude+plugin-autocapture-browser@1.9.0/node_modules/@amplitude/plugin-autocapture-browser/lib/esm/helpers.js","../../../node_modules/.pnpm/@amplitude+plugin-autocapture-browser@1.9.0/node_modules/@amplitude/plugin-autocapture-browser/lib/esm/pageActions/actions.js","../../../node_modules/.pnpm/@amplitude+plugin-autocapture-browser@1.9.0/node_modules/@amplitude/plugin-autocapture-browser/lib/esm/version.js","../../../node_modules/.pnpm/@amplitude+plugin-autocapture-browser@1.9.0/node_modules/@amplitude/plugin-autocapture-browser/lib/esm/libs/messenger.js","../../../node_modules/.pnpm/@amplitude+plugin-autocapture-browser@1.9.0/node_modules/@amplitude/plugin-autocapture-browser/lib/esm/autocapture/track-click.js","../../../node_modules/.pnpm/@amplitude+plugin-autocapture-browser@1.9.0/node_modules/@amplitude/plugin-autocapture-browser/lib/esm/autocapture/track-change.js","../../../node_modules/.pnpm/@amplitude+plugin-autocapture-browser@1.9.0/node_modules/@amplitude/plugin-autocapture-browser/lib/esm/autocapture/track-action-click.js","../../../node_modules/.pnpm/@amplitude+plugin-autocapture-browser@1.9.0/node_modules/@amplitude/plugin-autocapture-browser/lib/esm/observables.js","../../../node_modules/.pnpm/@amplitude+plugin-autocapture-browser@1.9.0/node_modules/@amplitude/plugin-autocapture-browser/lib/esm/pageActions/matchEventToFilter.js","../../../node_modules/.pnpm/@amplitude+plugin-autocapture-browser@1.9.0/node_modules/@amplitude/plugin-autocapture-browser/lib/esm/pageActions/triggers.js","../../../node_modules/.pnpm/@amplitude+plugin-autocapture-browser@1.9.0/node_modules/@amplitude/plugin-autocapture-browser/lib/esm/autocapture-plugin.js","../../../node_modules/.pnpm/@amplitude+plugin-autocapture-browser@1.9.0/node_modules/@amplitude/plugin-autocapture-browser/lib/esm/autocapture/track-dead-click.js","../../../node_modules/.pnpm/@amplitude+plugin-autocapture-browser@1.9.0/node_modules/@amplitude/plugin-autocapture-browser/lib/esm/autocapture/track-rage-click.js","../../../node_modules/.pnpm/@amplitude+plugin-autocapture-browser@1.9.0/node_modules/@amplitude/plugin-autocapture-browser/lib/esm/frustration-plugin.js","../../../node_modules/.pnpm/@amplitude+plugin-network-capture-browser@1.4.5/node_modules/@amplitude/plugin-network-capture-browser/lib/esm/constants.js","../../../node_modules/.pnpm/@amplitude+plugin-network-capture-browser@1.4.5/node_modules/@amplitude/plugin-network-capture-browser/lib/esm/track-network-event.js","../../../node_modules/.pnpm/@amplitude+plugin-network-capture-browser@1.4.5/node_modules/@amplitude/plugin-network-capture-browser/lib/esm/network-capture-plugin.js","../../../node_modules/.pnpm/@amplitude+plugin-web-vitals-browser@0.1.0-frustrationanalytics.0/node_modules/@amplitude/plugin-web-vitals-browser/lib/esm/constants.js","../../../node_modules/.pnpm/web-vitals@5.1.0/node_modules/web-vitals/dist/web-vitals.js","../../../node_modules/.pnpm/@amplitude+plugin-web-vitals-browser@0.1.0-frustrationanalytics.0/node_modules/@amplitude/plugin-web-vitals-browser/lib/esm/web-vitals-plugin.js","../../../node_modules/.pnpm/@amplitude+analytics-browser@2.22.2/node_modules/@amplitude/analytics-browser/lib/esm/attribution/helpers.js","../../../node_modules/.pnpm/@amplitude+analytics-browser@2.22.2/node_modules/@amplitude/analytics-browser/lib/esm/attribution/web-attribution.js","../../../node_modules/.pnpm/@amplitude+analytics-browser@2.22.2/node_modules/@amplitude/analytics-browser/lib/esm/browser-client.js","../../../node_modules/.pnpm/@amplitude+analytics-browser@2.22.2/node_modules/@amplitude/analytics-browser/lib/esm/browser-client-factory.js","../../../node_modules/.pnpm/@amplitude+analytics-browser@2.22.2/node_modules/@amplitude/analytics-browser/lib/esm/index.js","../../../packages/shared/src/logger/linkers/amplitude.ts","../../../packages/shared/src/logger/linkers/dev-console.ts","../../../packages/shared/src/logger/linkers/none.ts","../../../node_modules/.pnpm/mixpanel-browser@2.68.0/node_modules/mixpanel-browser/dist/mixpanel.module.js","../../../packages/shared/src/logger/linkers/mixpanel.ts","../../../packages/shared/src/logger/linkers/composite.ts","../src/shared/native.ts","../src/shared/logger.ts","../src/service/debug.ts","../../../node_modules/.pnpm/map-obj@5.0.0/node_modules/map-obj/index.js","../../../node_modules/.pnpm/camelcase@8.0.0/node_modules/camelcase/index.js","../../../node_modules/.pnpm/quick-lru@6.1.2/node_modules/quick-lru/index.js","../../../node_modules/.pnpm/camelcase-keys@9.1.3/node_modules/camelcase-keys/index.js","../../../packages/shared/src/errors/zvzo-error.ts","../../../packages/shared/src/errors/server-error.ts","../../../node_modules/.pnpm/redaxios@0.5.1/node_modules/redaxios/dist/redaxios.module.js","../../../packages/shared/src/enum.ts","../../../packages/shared/src/http/redaxios-client.ts","../src/service/token.ts","../src/service/lang.ts","../src/service/http.ts","../src/service/user.ts","../src/components/Initializers.tsx","../src/components/ErrorBoundary.tsx","../src/shared/hooks/useDictionary.tsx","../src/components/DiscountInfoModal.tsx","../src/zvzo.svg","../src/icon_close.svg","../../../node_modules/.pnpm/framer-motion@11.18.2_react-dom@18.3.1_react@18.3.1/node_modules/framer-motion/dist/es/context/LayoutGroupContext.mjs","../../../node_modules/.pnpm/framer-motion@11.18.2_react-dom@18.3.1_react@18.3.1/node_modules/framer-motion/dist/es/utils/use-constant.mjs","../../../node_modules/.pnpm/framer-motion@11.18.2_react-dom@18.3.1_react@18.3.1/node_modules/framer-motion/dist/es/context/PresenceContext.mjs","../../../node_modules/.pnpm/framer-motion@11.18.2_react-dom@18.3.1_react@18.3.1/node_modules/framer-motion/dist/es/context/MotionConfigContext.mjs","../../../node_modules/.pnpm/framer-motion@11.18.2_react-dom@18.3.1_react@18.3.1/node_modules/framer-motion/dist/es/components/AnimatePresence/PopChild.mjs","../../../node_modules/.pnpm/framer-motion@11.18.2_react-dom@18.3.1_react@18.3.1/node_modules/framer-motion/dist/es/components/AnimatePresence/PresenceChild.mjs","../../../node_modules/.pnpm/framer-motion@11.18.2_react-dom@18.3.1_react@18.3.1/node_modules/framer-motion/dist/es/components/AnimatePresence/use-presence.mjs","../../../node_modules/.pnpm/framer-motion@11.18.2_react-dom@18.3.1_react@18.3.1/node_modules/framer-motion/dist/es/components/AnimatePresence/utils.mjs","../../../node_modules/.pnpm/framer-motion@11.18.2_react-dom@18.3.1_react@18.3.1/node_modules/framer-motion/dist/es/utils/is-browser.mjs","../../../node_modules/.pnpm/framer-motion@11.18.2_react-dom@18.3.1_react@18.3.1/node_modules/framer-motion/dist/es/utils/use-isomorphic-effect.mjs","../../../node_modules/.pnpm/framer-motion@11.18.2_react-dom@18.3.1_react@18.3.1/node_modules/framer-motion/dist/es/components/AnimatePresence/index.mjs","../../../node_modules/.pnpm/motion-utils@11.18.1/node_modules/motion-utils/dist/es/noop.mjs","../../../node_modules/.pnpm/motion-utils@11.18.1/node_modules/motion-utils/dist/es/errors.mjs","../../../node_modules/.pnpm/motion-utils@11.18.1/node_modules/motion-utils/dist/es/memo.mjs","../../../node_modules/.pnpm/motion-utils@11.18.1/node_modules/motion-utils/dist/es/progress.mjs","../../../node_modules/.pnpm/motion-utils@11.18.1/node_modules/motion-utils/dist/es/time-conversion.mjs","../../../node_modules/.pnpm/framer-motion@11.18.2_react-dom@18.3.1_react@18.3.1/node_modules/framer-motion/dist/es/utils/GlobalConfig.mjs","../../../node_modules/.pnpm/framer-motion@11.18.2_react-dom@18.3.1_react@18.3.1/node_modules/framer-motion/dist/es/frameloop/render-step.mjs","../../../node_modules/.pnpm/framer-motion@11.18.2_react-dom@18.3.1_react@18.3.1/node_modules/framer-motion/dist/es/frameloop/batcher.mjs","../../../node_modules/.pnpm/framer-motion@11.18.2_react-dom@18.3.1_react@18.3.1/node_modules/framer-motion/dist/es/frameloop/frame.mjs","../../../node_modules/.pnpm/framer-motion@11.18.2_react-dom@18.3.1_react@18.3.1/node_modules/framer-motion/dist/es/context/LazyContext.mjs","../../../node_modules/.pnpm/framer-motion@11.18.2_react-dom@18.3.1_react@18.3.1/node_modules/framer-motion/dist/es/motion/features/definitions.mjs","../../../node_modules/.pnpm/framer-motion@11.18.2_react-dom@18.3.1_react@18.3.1/node_modules/framer-motion/dist/es/motion/features/load-features.mjs","../../../node_modules/.pnpm/framer-motion@11.18.2_react-dom@18.3.1_react@18.3.1/node_modules/framer-motion/dist/es/motion/utils/valid-prop.mjs","../../../node_modules/.pnpm/framer-motion@11.18.2_react-dom@18.3.1_react@18.3.1/node_modules/framer-motion/dist/es/render/dom/utils/filter-props.mjs","../../../node_modules/.pnpm/framer-motion@11.18.2_react-dom@18.3.1_react@18.3.1/node_modules/framer-motion/dist/es/render/components/create-proxy.mjs","../../../node_modules/.pnpm/framer-motion@11.18.2_react-dom@18.3.1_react@18.3.1/node_modules/framer-motion/dist/es/context/MotionContext/index.mjs","../../../node_modules/.pnpm/framer-motion@11.18.2_react-dom@18.3.1_react@18.3.1/node_modules/framer-motion/dist/es/render/utils/is-variant-label.mjs","../../../node_modules/.pnpm/framer-motion@11.18.2_react-dom@18.3.1_react@18.3.1/node_modules/framer-motion/dist/es/animation/utils/is-animation-controls.mjs","../../../node_modules/.pnpm/framer-motion@11.18.2_react-dom@18.3.1_react@18.3.1/node_modules/framer-motion/dist/es/render/utils/variant-props.mjs","../../../node_modules/.pnpm/framer-motion@11.18.2_react-dom@18.3.1_react@18.3.1/node_modules/framer-motion/dist/es/render/utils/is-controlling-variants.mjs","../../../node_modules/.pnpm/framer-motion@11.18.2_react-dom@18.3.1_react@18.3.1/node_modules/framer-motion/dist/es/context/MotionContext/utils.mjs","../../../node_modules/.pnpm/framer-motion@11.18.2_react-dom@18.3.1_react@18.3.1/node_modules/framer-motion/dist/es/context/MotionContext/create.mjs","../../../node_modules/.pnpm/framer-motion@11.18.2_react-dom@18.3.1_react@18.3.1/node_modules/framer-motion/dist/es/motion/utils/symbol.mjs","../../../node_modules/.pnpm/framer-motion@11.18.2_react-dom@18.3.1_react@18.3.1/node_modules/framer-motion/dist/es/utils/is-ref-object.mjs","../../../node_modules/.pnpm/framer-motion@11.18.2_react-dom@18.3.1_react@18.3.1/node_modules/framer-motion/dist/es/motion/utils/use-motion-ref.mjs","../../../node_modules/.pnpm/framer-motion@11.18.2_react-dom@18.3.1_react@18.3.1/node_modules/framer-motion/dist/es/render/dom/utils/camel-to-dash.mjs","../../../node_modules/.pnpm/framer-motion@11.18.2_react-dom@18.3.1_react@18.3.1/node_modules/framer-motion/dist/es/animation/optimized-appear/data-id.mjs","../../../node_modules/.pnpm/framer-motion@11.18.2_react-dom@18.3.1_react@18.3.1/node_modules/framer-motion/dist/es/frameloop/microtask.mjs","../../../node_modules/.pnpm/framer-motion@11.18.2_react-dom@18.3.1_react@18.3.1/node_modules/framer-motion/dist/es/context/SwitchLayoutGroupContext.mjs","../../../node_modules/.pnpm/framer-motion@11.18.2_react-dom@18.3.1_react@18.3.1/node_modules/framer-motion/dist/es/motion/utils/use-visual-element.mjs","../../../node_modules/.pnpm/framer-motion@11.18.2_react-dom@18.3.1_react@18.3.1/node_modules/framer-motion/dist/es/motion/index.mjs","../../../node_modules/.pnpm/framer-motion@11.18.2_react-dom@18.3.1_react@18.3.1/node_modules/framer-motion/dist/es/render/svg/lowercase-elements.mjs","../../../node_modules/.pnpm/framer-motion@11.18.2_react-dom@18.3.1_react@18.3.1/node_modules/framer-motion/dist/es/render/dom/utils/is-svg-component.mjs","../../../node_modules/.pnpm/framer-motion@11.18.2_react-dom@18.3.1_react@18.3.1/node_modules/framer-motion/dist/es/render/utils/resolve-variants.mjs","../../../node_modules/.pnpm/framer-motion@11.18.2_react-dom@18.3.1_react@18.3.1/node_modules/framer-motion/dist/es/animation/utils/is-keyframes-target.mjs","../../../node_modules/.pnpm/framer-motion@11.18.2_react-dom@18.3.1_react@18.3.1/node_modules/framer-motion/dist/es/utils/resolve-value.mjs","../../../node_modules/.pnpm/framer-motion@11.18.2_react-dom@18.3.1_react@18.3.1/node_modules/framer-motion/dist/es/value/utils/is-motion-value.mjs","../../../node_modules/.pnpm/framer-motion@11.18.2_react-dom@18.3.1_react@18.3.1/node_modules/framer-motion/dist/es/value/utils/resolve-motion-value.mjs","../../../node_modules/.pnpm/framer-motion@11.18.2_react-dom@18.3.1_react@18.3.1/node_modules/framer-motion/dist/es/motion/utils/use-visual-state.mjs","../../../node_modules/.pnpm/framer-motion@11.18.2_react-dom@18.3.1_react@18.3.1/node_modules/framer-motion/dist/es/render/html/utils/keys-transform.mjs","../../../node_modules/.pnpm/framer-motion@11.18.2_react-dom@18.3.1_react@18.3.1/node_modules/framer-motion/dist/es/render/dom/utils/is-css-variable.mjs","../../../node_modules/.pnpm/framer-motion@11.18.2_react-dom@18.3.1_react@18.3.1/node_modules/framer-motion/dist/es/render/dom/value-types/get-as-type.mjs","../../../node_modules/.pnpm/framer-motion@11.18.2_react-dom@18.3.1_react@18.3.1/node_modules/framer-motion/dist/es/utils/clamp.mjs","../../../node_modules/.pnpm/framer-motion@11.18.2_react-dom@18.3.1_react@18.3.1/node_modules/framer-motion/dist/es/value/types/numbers/index.mjs","../../../node_modules/.pnpm/framer-motion@11.18.2_react-dom@18.3.1_react@18.3.1/node_modules/framer-motion/dist/es/value/types/numbers/units.mjs","../../../node_modules/.pnpm/framer-motion@11.18.2_react-dom@18.3.1_react@18.3.1/node_modules/framer-motion/dist/es/render/dom/value-types/number-browser.mjs","../../../node_modules/.pnpm/framer-motion@11.18.2_react-dom@18.3.1_react@18.3.1/node_modules/framer-motion/dist/es/render/dom/value-types/transform.mjs","../../../node_modules/.pnpm/framer-motion@11.18.2_react-dom@18.3.1_react@18.3.1/node_modules/framer-motion/dist/es/render/dom/value-types/type-int.mjs","../../../node_modules/.pnpm/framer-motion@11.18.2_react-dom@18.3.1_react@18.3.1/node_modules/framer-motion/dist/es/render/dom/value-types/number.mjs","../../../node_modules/.pnpm/framer-motion@11.18.2_react-dom@18.3.1_react@18.3.1/node_modules/framer-motion/dist/es/render/html/utils/build-transform.mjs","../../../node_modules/.pnpm/framer-motion@11.18.2_react-dom@18.3.1_react@18.3.1/node_modules/framer-motion/dist/es/render/html/utils/build-styles.mjs","../../../node_modules/.pnpm/framer-motion@11.18.2_react-dom@18.3.1_react@18.3.1/node_modules/framer-motion/dist/es/render/svg/utils/path.mjs","../../../node_modules/.pnpm/framer-motion@11.18.2_react-dom@18.3.1_react@18.3.1/node_modules/framer-motion/dist/es/render/svg/utils/transform-origin.mjs","../../../node_modules/.pnpm/framer-motion@11.18.2_react-dom@18.3.1_react@18.3.1/node_modules/framer-motion/dist/es/render/svg/utils/build-attrs.mjs","../../../node_modules/.pnpm/framer-motion@11.18.2_react-dom@18.3.1_react@18.3.1/node_modules/framer-motion/dist/es/render/html/utils/create-render-state.mjs","../../../node_modules/.pnpm/framer-motion@11.18.2_react-dom@18.3.1_react@18.3.1/node_modules/framer-motion/dist/es/render/svg/utils/create-render-state.mjs","../../../node_modules/.pnpm/framer-motion@11.18.2_react-dom@18.3.1_react@18.3.1/node_modules/framer-motion/dist/es/render/svg/utils/is-svg-tag.mjs","../../../node_modules/.pnpm/framer-motion@11.18.2_react-dom@18.3.1_react@18.3.1/node_modules/framer-motion/dist/es/render/html/utils/render.mjs","../../../node_modules/.pnpm/framer-motion@11.18.2_react-dom@18.3.1_react@18.3.1/node_modules/framer-motion/dist/es/render/svg/utils/camel-case-attrs.mjs","../../../node_modules/.pnpm/framer-motion@11.18.2_react-dom@18.3.1_react@18.3.1/node_modules/framer-motion/dist/es/render/svg/utils/render.mjs","../../../node_modules/.pnpm/framer-motion@11.18.2_react-dom@18.3.1_react@18.3.1/node_modules/framer-motion/dist/es/projection/styles/scale-correction.mjs","../../../node_modules/.pnpm/framer-motion@11.18.2_react-dom@18.3.1_react@18.3.1/node_modules/framer-motion/dist/es/motion/utils/is-forced-motion-value.mjs","../../../node_modules/.pnpm/framer-motion@11.18.2_react-dom@18.3.1_react@18.3.1/node_modules/framer-motion/dist/es/render/html/utils/scrape-motion-values.mjs","../../../node_modules/.pnpm/framer-motion@11.18.2_react-dom@18.3.1_react@18.3.1/node_modules/framer-motion/dist/es/render/svg/utils/scrape-motion-values.mjs","../../../node_modules/.pnpm/framer-motion@11.18.2_react-dom@18.3.1_react@18.3.1/node_modules/framer-motion/dist/es/render/svg/config-motion.mjs","../../../node_modules/.pnpm/framer-motion@11.18.2_react-dom@18.3.1_react@18.3.1/node_modules/framer-motion/dist/es/render/html/config-motion.mjs","../../../node_modules/.pnpm/framer-motion@11.18.2_react-dom@18.3.1_react@18.3.1/node_modules/framer-motion/dist/es/render/html/use-props.mjs","../../../node_modules/.pnpm/framer-motion@11.18.2_react-dom@18.3.1_react@18.3.1/node_modules/framer-motion/dist/es/render/svg/use-props.mjs","../../../node_modules/.pnpm/framer-motion@11.18.2_react-dom@18.3.1_react@18.3.1/node_modules/framer-motion/dist/es/render/dom/use-render.mjs","../../../node_modules/.pnpm/framer-motion@11.18.2_react-dom@18.3.1_react@18.3.1/node_modules/framer-motion/dist/es/render/components/create-factory.mjs","../../../node_modules/.pnpm/framer-motion@11.18.2_react-dom@18.3.1_react@18.3.1/node_modules/framer-motion/dist/es/utils/shallow-compare.mjs","../../../node_modules/.pnpm/framer-motion@11.18.2_react-dom@18.3.1_react@18.3.1/node_modules/framer-motion/dist/es/render/utils/resolve-dynamic-variants.mjs","../../../node_modules/.pnpm/motion-dom@11.18.1/node_modules/motion-dom/dist/es/utils/supports/scroll-timeline.mjs","../../../node_modules/.pnpm/motion-dom@11.18.1/node_modules/motion-dom/dist/es/animation/controls/BaseGroup.mjs","../../../node_modules/.pnpm/motion-dom@11.18.1/node_modules/motion-dom/dist/es/animation/controls/Group.mjs","../../../node_modules/.pnpm/motion-dom@11.18.1/node_modules/motion-dom/dist/es/animation/utils/get-value-transition.mjs","../../../node_modules/.pnpm/motion-dom@11.18.1/node_modules/motion-dom/dist/es/animation/generators/utils/calc-duration.mjs","../../../node_modules/.pnpm/motion-dom@11.18.1/node_modules/motion-dom/dist/es/animation/generators/utils/is-generator.mjs","../../../node_modules/.pnpm/motion-dom@11.18.1/node_modules/motion-dom/dist/es/animation/waapi/utils/attach-timeline.mjs","../../../node_modules/.pnpm/motion-dom@11.18.1/node_modules/motion-dom/dist/es/utils/is-bezier-definition.mjs","../../../node_modules/.pnpm/motion-dom@11.18.1/node_modules/motion-dom/dist/es/utils/supports/flags.mjs","../../../node_modules/.pnpm/motion-dom@11.18.1/node_modules/motion-dom/dist/es/utils/supports/memo.mjs","../../../node_modules/.pnpm/motion-dom@11.18.1/node_modules/motion-dom/dist/es/utils/supports/linear-easing.mjs","../../../node_modules/.pnpm/motion-dom@11.18.1/node_modules/motion-dom/dist/es/animation/waapi/utils/linear.mjs","../../../node_modules/.pnpm/motion-dom@11.18.1/node_modules/motion-dom/dist/es/animation/waapi/utils/easing.mjs","../../../node_modules/.pnpm/motion-dom@11.18.1/node_modules/motion-dom/dist/es/gestures/drag/state/is-active.mjs","../../../node_modules/.pnpm/motion-dom@11.18.1/node_modules/motion-dom/dist/es/utils/resolve-elements.mjs","../../../node_modules/.pnpm/motion-dom@11.18.1/node_modules/motion-dom/dist/es/gestures/utils/setup.mjs","../../../node_modules/.pnpm/motion-dom@11.18.1/node_modules/motion-dom/dist/es/gestures/hover.mjs","../../../node_modules/.pnpm/motion-dom@11.18.1/node_modules/motion-dom/dist/es/gestures/utils/is-node-or-child.mjs","../../../node_modules/.pnpm/motion-dom@11.18.1/node_modules/motion-dom/dist/es/gestures/utils/is-primary-pointer.mjs","../../../node_modules/.pnpm/motion-dom@11.18.1/node_modules/motion-dom/dist/es/gestures/press/utils/is-keyboard-accessible.mjs","../../../node_modules/.pnpm/motion-dom@11.18.1/node_modules/motion-dom/dist/es/gestures/press/utils/state.mjs","../../../node_modules/.pnpm/motion-dom@11.18.1/node_modules/motion-dom/dist/es/gestures/press/utils/keyboard.mjs","../../../node_modules/.pnpm/motion-dom@11.18.1/node_modules/motion-dom/dist/es/gestures/press/index.mjs","../../../node_modules/.pnpm/motion-dom@11.18.1/node_modules/motion-dom/dist/es/gestures/drag/state/set-active.mjs","../../../node_modules/.pnpm/framer-motion@11.18.2_react-dom@18.3.1_react@18.3.1/node_modules/framer-motion/dist/es/render/html/utils/keys-position.mjs","../../../node_modules/.pnpm/framer-motion@11.18.2_react-dom@18.3.1_react@18.3.1/node_modules/framer-motion/dist/es/frameloop/sync-time.mjs","../../../node_modules/.pnpm/framer-motion@11.18.2_react-dom@18.3.1_react@18.3.1/node_modules/framer-motion/dist/es/utils/array.mjs","../../../node_modules/.pnpm/framer-motion@11.18.2_react-dom@18.3.1_react@18.3.1/node_modules/framer-motion/dist/es/utils/subscription-manager.mjs","../../../node_modules/.pnpm/framer-motion@11.18.2_react-dom@18.3.1_react@18.3.1/node_modules/framer-motion/dist/es/utils/velocity-per-second.mjs","../../../node_modules/.pnpm/framer-motion@11.18.2_react-dom@18.3.1_react@18.3.1/node_modules/framer-motion/dist/es/value/index.mjs","../../../node_modules/.pnpm/framer-motion@11.18.2_react-dom@18.3.1_react@18.3.1/node_modules/framer-motion/dist/es/render/utils/setters.mjs","../../../node_modules/.pnpm/framer-motion@11.18.2_react-dom@18.3.1_react@18.3.1/node_modules/framer-motion/dist/es/value/use-will-change/is.mjs","../../../node_modules/.pnpm/framer-motion@11.18.2_react-dom@18.3.1_react@18.3.1/node_modules/framer-motion/dist/es/value/use-will-change/add-will-change.mjs","../../../node_modules/.pnpm/framer-motion@11.18.2_react-dom@18.3.1_react@18.3.1/node_modules/framer-motion/dist/es/animation/optimized-appear/get-appear-id.mjs","../../../node_modules/.pnpm/framer-motion@11.18.2_react-dom@18.3.1_react@18.3.1/node_modules/framer-motion/dist/es/easing/cubic-bezier.mjs","../../../node_modules/.pnpm/framer-motion@11.18.2_react-dom@18.3.1_react@18.3.1/node_modules/framer-motion/dist/es/easing/modifiers/mirror.mjs","../../../node_modules/.pnpm/framer-motion@11.18.2_react-dom@18.3.1_react@18.3.1/node_modules/framer-motion/dist/es/easing/modifiers/reverse.mjs","../../../node_modules/.pnpm/framer-motion@11.18.2_react-dom@18.3.1_react@18.3.1/node_modules/framer-motion/dist/es/easing/back.mjs","../../../node_modules/.pnpm/framer-motion@11.18.2_react-dom@18.3.1_react@18.3.1/node_modules/framer-motion/dist/es/easing/anticipate.mjs","../../../node_modules/.pnpm/framer-motion@11.18.2_react-dom@18.3.1_react@18.3.1/node_modules/framer-motion/dist/es/easing/circ.mjs","../../../node_modules/.pnpm/framer-motion@11.18.2_react-dom@18.3.1_react@18.3.1/node_modules/framer-motion/dist/es/utils/is-zero-value-string.mjs","../../../node_modules/.pnpm/framer-motion@11.18.2_react-dom@18.3.1_react@18.3.1/node_modules/framer-motion/dist/es/animation/utils/is-none.mjs","../../../node_modules/.pnpm/framer-motion@11.18.2_react-dom@18.3.1_react@18.3.1/node_modules/framer-motion/dist/es/value/types/utils/sanitize.mjs","../../../node_modules/.pnpm/framer-motion@11.18.2_react-dom@18.3.1_react@18.3.1/node_modules/framer-motion/dist/es/value/types/utils/float-regex.mjs","../../../node_modules/.pnpm/framer-motion@11.18.2_react-dom@18.3.1_react@18.3.1/node_modules/framer-motion/dist/es/value/types/utils/is-nullish.mjs","../../../node_modules/.pnpm/framer-motion@11.18.2_react-dom@18.3.1_react@18.3.1/node_modules/framer-motion/dist/es/value/types/utils/single-color-regex.mjs","../../../node_modules/.pnpm/framer-motion@11.18.2_react-dom@18.3.1_react@18.3.1/node_modules/framer-motion/dist/es/value/types/color/utils.mjs","../../../node_modules/.pnpm/framer-motion@11.18.2_react-dom@18.3.1_react@18.3.1/node_modules/framer-motion/dist/es/value/types/color/rgba.mjs","../../../node_modules/.pnpm/framer-motion@11.18.2_react-dom@18.3.1_react@18.3.1/node_modules/framer-motion/dist/es/value/types/color/hex.mjs","../../../node_modules/.pnpm/framer-motion@11.18.2_react-dom@18.3.1_react@18.3.1/node_modules/framer-motion/dist/es/value/types/color/hsla.mjs","../../../node_modules/.pnpm/framer-motion@11.18.2_react-dom@18.3.1_react@18.3.1/node_modules/framer-motion/dist/es/value/types/color/index.mjs","../../../node_modules/.pnpm/framer-motion@11.18.2_react-dom@18.3.1_react@18.3.1/node_modules/framer-motion/dist/es/value/types/utils/color-regex.mjs","../../../node_modules/.pnpm/framer-motion@11.18.2_react-dom@18.3.1_react@18.3.1/node_modules/framer-motion/dist/es/value/types/complex/index.mjs","../../../node_modules/.pnpm/framer-motion@11.18.2_react-dom@18.3.1_react@18.3.1/node_modules/framer-motion/dist/es/value/types/complex/filter.mjs","../../../node_modules/.pnpm/framer-motion@11.18.2_react-dom@18.3.1_react@18.3.1/node_modules/framer-motion/dist/es/render/dom/value-types/defaults.mjs","../../../node_modules/.pnpm/framer-motion@11.18.2_react-dom@18.3.1_react@18.3.1/node_modules/framer-motion/dist/es/render/dom/value-types/animatable-none.mjs","../../../node_modules/.pnpm/framer-motion@11.18.2_react-dom@18.3.1_react@18.3.1/node_modules/framer-motion/dist/es/render/html/utils/make-none-animatable.mjs","../../../node_modules/.pnpm/framer-motion@11.18.2_react-dom@18.3.1_react@18.3.1/node_modules/framer-motion/dist/es/render/dom/utils/unit-conversion.mjs","../../../node_modules/.pnpm/framer-motion@11.18.2_react-dom@18.3.1_react@18.3.1/node_modules/framer-motion/dist/es/render/utils/KeyframesResolver.mjs","../../../node_modules/.pnpm/framer-motion@11.18.2_react-dom@18.3.1_react@18.3.1/node_modules/framer-motion/dist/es/utils/is-numerical-string.mjs","../../../node_modules/.pnpm/framer-motion@11.18.2_react-dom@18.3.1_react@18.3.1/node_modules/framer-motion/dist/es/render/dom/utils/css-variables-conversion.mjs","../../../node_modules/.pnpm/framer-motion@11.18.2_react-dom@18.3.1_react@18.3.1/node_modules/framer-motion/dist/es/render/dom/value-types/test.mjs","../../../node_modules/.pnpm/framer-motion@11.18.2_react-dom@18.3.1_react@18.3.1/node_modules/framer-motion/dist/es/render/dom/value-types/dimensions.mjs","../../../node_modules/.pnpm/framer-motion@11.18.2_react-dom@18.3.1_react@18.3.1/node_modules/framer-motion/dist/es/render/dom/value-types/type-auto.mjs","../../../node_modules/.pnpm/framer-motion@11.18.2_react-dom@18.3.1_react@18.3.1/node_modules/framer-motion/dist/es/render/dom/DOMKeyframesResolver.mjs","../../../node_modules/.pnpm/framer-motion@11.18.2_react-dom@18.3.1_react@18.3.1/node_modules/framer-motion/dist/es/animation/utils/is-animatable.mjs","../../../node_modules/.pnpm/framer-motion@11.18.2_react-dom@18.3.1_react@18.3.1/node_modules/framer-motion/dist/es/animation/animators/utils/can-animate.mjs","../../../node_modules/.pnpm/framer-motion@11.18.2_react-dom@18.3.1_react@18.3.1/node_modules/framer-motion/dist/es/animation/animators/waapi/utils/get-final-keyframe.mjs","../../../node_modules/.pnpm/framer-motion@11.18.2_react-dom@18.3.1_react@18.3.1/node_modules/framer-motion/dist/es/animation/animators/BaseAnimation.mjs","../../../node_modules/.pnpm/framer-motion@11.18.2_react-dom@18.3.1_react@18.3.1/node_modules/framer-motion/dist/es/utils/mix/number.mjs","../../../node_modules/.pnpm/framer-motion@11.18.2_react-dom@18.3.1_react@18.3.1/node_modules/framer-motion/dist/es/utils/hsla-to-rgba.mjs","../../../node_modules/.pnpm/framer-motion@11.18.2_react-dom@18.3.1_react@18.3.1/node_modules/framer-motion/dist/es/utils/mix/immediate.mjs","../../../node_modules/.pnpm/framer-motion@11.18.2_react-dom@18.3.1_react@18.3.1/node_modules/framer-motion/dist/es/utils/mix/color.mjs","../../../node_modules/.pnpm/framer-motion@11.18.2_react-dom@18.3.1_react@18.3.1/node_modules/framer-motion/dist/es/utils/pipe.mjs","../../../node_modules/.pnpm/framer-motion@11.18.2_react-dom@18.3.1_react@18.3.1/node_modules/framer-motion/dist/es/utils/mix/visibility.mjs","../../../node_modules/.pnpm/framer-motion@11.18.2_react-dom@18.3.1_react@18.3.1/node_modules/framer-motion/dist/es/utils/mix/complex.mjs","../../../node_modules/.pnpm/framer-motion@11.18.2_react-dom@18.3.1_react@18.3.1/node_modules/framer-motion/dist/es/utils/mix/index.mjs","../../../node_modules/.pnpm/framer-motion@11.18.2_react-dom@18.3.1_react@18.3.1/node_modules/framer-motion/dist/es/animation/generators/utils/velocity.mjs","../../../node_modules/.pnpm/framer-motion@11.18.2_react-dom@18.3.1_react@18.3.1/node_modules/framer-motion/dist/es/animation/generators/spring/defaults.mjs","../../../node_modules/.pnpm/framer-motion@11.18.2_react-dom@18.3.1_react@18.3.1/node_modules/framer-motion/dist/es/animation/generators/spring/find.mjs","../../../node_modules/.pnpm/framer-motion@11.18.2_react-dom@18.3.1_react@18.3.1/node_modules/framer-motion/dist/es/animation/generators/spring/index.mjs","../../../node_modules/.pnpm/framer-motion@11.18.2_react-dom@18.3.1_react@18.3.1/node_modules/framer-motion/dist/es/animation/generators/inertia.mjs","../../../node_modules/.pnpm/framer-motion@11.18.2_react-dom@18.3.1_react@18.3.1/node_modules/framer-motion/dist/es/easing/ease.mjs","../../../node_modules/.pnpm/framer-motion@11.18.2_react-dom@18.3.1_react@18.3.1/node_modules/framer-motion/dist/es/easing/utils/is-easing-array.mjs","../../../node_modules/.pnpm/framer-motion@11.18.2_react-dom@18.3.1_react@18.3.1/node_modules/framer-motion/dist/es/easing/utils/map.mjs","../../../node_modules/.pnpm/framer-motion@11.18.2_react-dom@18.3.1_react@18.3.1/node_modules/framer-motion/dist/es/utils/interpolate.mjs","../../../node_modules/.pnpm/framer-motion@11.18.2_react-dom@18.3.1_react@18.3.1/node_modules/framer-motion/dist/es/utils/offsets/fill.mjs","../../../node_modules/.pnpm/framer-motion@11.18.2_react-dom@18.3.1_react@18.3.1/node_modules/framer-motion/dist/es/utils/offsets/default.mjs","../../../node_modules/.pnpm/framer-motion@11.18.2_react-dom@18.3.1_react@18.3.1/node_modules/framer-motion/dist/es/utils/offsets/time.mjs","../../../node_modules/.pnpm/framer-motion@11.18.2_react-dom@18.3.1_react@18.3.1/node_modules/framer-motion/dist/es/animation/generators/keyframes.mjs","../../../node_modules/.pnpm/framer-motion@11.18.2_react-dom@18.3.1_react@18.3.1/node_modules/framer-motion/dist/es/animation/animators/drivers/driver-frameloop.mjs","../../../node_modules/.pnpm/framer-motion@11.18.2_react-dom@18.3.1_react@18.3.1/node_modules/framer-motion/dist/es/animation/animators/MainThreadAnimation.mjs","../../../node_modules/.pnpm/framer-motion@11.18.2_react-dom@18.3.1_react@18.3.1/node_modules/framer-motion/dist/es/animation/animators/utils/accelerated-values.mjs","../../../node_modules/.pnpm/framer-motion@11.18.2_react-dom@18.3.1_react@18.3.1/node_modules/framer-motion/dist/es/animation/animators/waapi/index.mjs","../../../node_modules/.pnpm/framer-motion@11.18.2_react-dom@18.3.1_react@18.3.1/node_modules/framer-motion/dist/es/animation/animators/waapi/utils/supports-waapi.mjs","../../../node_modules/.pnpm/framer-motion@11.18.2_react-dom@18.3.1_react@18.3.1/node_modules/framer-motion/dist/es/animation/animators/AcceleratedAnimation.mjs","../../../node_modules/.pnpm/framer-motion@11.18.2_react-dom@18.3.1_react@18.3.1/node_modules/framer-motion/dist/es/animation/utils/default-transitions.mjs","../../../node_modules/.pnpm/framer-motion@11.18.2_react-dom@18.3.1_react@18.3.1/node_modules/framer-motion/dist/es/animation/utils/is-transition-defined.mjs","../../../node_modules/.pnpm/framer-motion@11.18.2_react-dom@18.3.1_react@18.3.1/node_modules/framer-motion/dist/es/animation/interfaces/motion-value.mjs","../../../node_modules/.pnpm/framer-motion@11.18.2_react-dom@18.3.1_react@18.3.1/node_modules/framer-motion/dist/es/animation/interfaces/visual-element-target.mjs","../../../node_modules/.pnpm/framer-motion@11.18.2_react-dom@18.3.1_react@18.3.1/node_modules/framer-motion/dist/es/animation/interfaces/visual-element-variant.mjs","../../../node_modules/.pnpm/framer-motion@11.18.2_react-dom@18.3.1_react@18.3.1/node_modules/framer-motion/dist/es/animation/interfaces/visual-element.mjs","../../../node_modules/.pnpm/framer-motion@11.18.2_react-dom@18.3.1_react@18.3.1/node_modules/framer-motion/dist/es/render/utils/get-variant-context.mjs","../../../node_modules/.pnpm/framer-motion@11.18.2_react-dom@18.3.1_react@18.3.1/node_modules/framer-motion/dist/es/render/utils/animation-state.mjs","../../../node_modules/.pnpm/framer-motion@11.18.2_react-dom@18.3.1_react@18.3.1/node_modules/framer-motion/dist/es/motion/features/Feature.mjs","../../../node_modules/.pnpm/framer-motion@11.18.2_react-dom@18.3.1_react@18.3.1/node_modules/framer-motion/dist/es/motion/features/animation/index.mjs","../../../node_modules/.pnpm/framer-motion@11.18.2_react-dom@18.3.1_react@18.3.1/node_modules/framer-motion/dist/es/motion/features/animation/exit.mjs","../../../node_modules/.pnpm/framer-motion@11.18.2_react-dom@18.3.1_react@18.3.1/node_modules/framer-motion/dist/es/motion/features/animations.mjs","../../../node_modules/.pnpm/framer-motion@11.18.2_react-dom@18.3.1_react@18.3.1/node_modules/framer-motion/dist/es/events/add-dom-event.mjs","../../../node_modules/.pnpm/framer-motion@11.18.2_react-dom@18.3.1_react@18.3.1/node_modules/framer-motion/dist/es/events/event-info.mjs","../../../node_modules/.pnpm/framer-motion@11.18.2_react-dom@18.3.1_react@18.3.1/node_modules/framer-motion/dist/es/events/add-pointer-event.mjs","../../../node_modules/.pnpm/framer-motion@11.18.2_react-dom@18.3.1_react@18.3.1/node_modules/framer-motion/dist/es/utils/distance.mjs","../../../node_modules/.pnpm/framer-motion@11.18.2_react-dom@18.3.1_react@18.3.1/node_modules/framer-motion/dist/es/gestures/pan/PanSession.mjs","../../../node_modules/.pnpm/framer-motion@11.18.2_react-dom@18.3.1_react@18.3.1/node_modules/framer-motion/dist/es/projection/geometry/delta-calc.mjs","../../../node_modules/.pnpm/framer-motion@11.18.2_react-dom@18.3.1_react@18.3.1/node_modules/framer-motion/dist/es/gestures/drag/utils/constraints.mjs","../../../node_modules/.pnpm/framer-motion@11.18.2_react-dom@18.3.1_react@18.3.1/node_modules/framer-motion/dist/es/projection/geometry/models.mjs","../../../node_modules/.pnpm/framer-motion@11.18.2_react-dom@18.3.1_react@18.3.1/node_modules/framer-motion/dist/es/projection/utils/each-axis.mjs","../../../node_modules/.pnpm/framer-motion@11.18.2_react-dom@18.3.1_react@18.3.1/node_modules/framer-motion/dist/es/projection/geometry/conversion.mjs","../../../node_modules/.pnpm/framer-motion@11.18.2_react-dom@18.3.1_react@18.3.1/node_modules/framer-motion/dist/es/projection/utils/has-transform.mjs","../../../node_modules/.pnpm/framer-motion@11.18.2_react-dom@18.3.1_react@18.3.1/node_modules/framer-motion/dist/es/projection/geometry/delta-apply.mjs","../../../node_modules/.pnpm/framer-motion@11.18.2_react-dom@18.3.1_react@18.3.1/node_modules/framer-motion/dist/es/projection/utils/measure.mjs","../../../node_modules/.pnpm/framer-motion@11.18.2_react-dom@18.3.1_react@18.3.1/node_modules/framer-motion/dist/es/utils/get-context-window.mjs","../../../node_modules/.pnpm/framer-motion@11.18.2_react-dom@18.3.1_react@18.3.1/node_modules/framer-motion/dist/es/gestures/drag/VisualElementDragControls.mjs","../../../node_modules/.pnpm/framer-motion@11.18.2_react-dom@18.3.1_react@18.3.1/node_modules/framer-motion/dist/es/gestures/drag/index.mjs","../../../node_modules/.pnpm/framer-motion@11.18.2_react-dom@18.3.1_react@18.3.1/node_modules/framer-motion/dist/es/gestures/pan/index.mjs","../../../node_modules/.pnpm/framer-motion@11.18.2_react-dom@18.3.1_react@18.3.1/node_modules/framer-motion/dist/es/projection/node/state.mjs","../../../node_modules/.pnpm/framer-motion@11.18.2_react-dom@18.3.1_react@18.3.1/node_modules/framer-motion/dist/es/projection/styles/scale-border-radius.mjs","../../../node_modules/.pnpm/framer-motion@11.18.2_react-dom@18.3.1_react@18.3.1/node_modules/framer-motion/dist/es/projection/styles/scale-box-shadow.mjs","../../../node_modules/.pnpm/framer-motion@11.18.2_react-dom@18.3.1_react@18.3.1/node_modules/framer-motion/dist/es/motion/features/layout/MeasureLayout.mjs","../../../node_modules/.pnpm/framer-motion@11.18.2_react-dom@18.3.1_react@18.3.1/node_modules/framer-motion/dist/es/animation/animate/single-value.mjs","../../../node_modules/.pnpm/framer-motion@11.18.2_react-dom@18.3.1_react@18.3.1/node_modules/framer-motion/dist/es/render/dom/utils/is-svg-element.mjs","../../../node_modules/.pnpm/framer-motion@11.18.2_react-dom@18.3.1_react@18.3.1/node_modules/framer-motion/dist/es/render/utils/compare-by-depth.mjs","../../../node_modules/.pnpm/framer-motion@11.18.2_react-dom@18.3.1_react@18.3.1/node_modules/framer-motion/dist/es/render/utils/flat-tree.mjs","../../../node_modules/.pnpm/framer-motion@11.18.2_react-dom@18.3.1_react@18.3.1/node_modules/framer-motion/dist/es/utils/delay.mjs","../../../node_modules/.pnpm/framer-motion@11.18.2_react-dom@18.3.1_react@18.3.1/node_modules/framer-motion/dist/es/projection/animation/mix-values.mjs","../../../node_modules/.pnpm/framer-motion@11.18.2_react-dom@18.3.1_react@18.3.1/node_modules/framer-motion/dist/es/projection/geometry/copy.mjs","../../../node_modules/.pnpm/framer-motion@11.18.2_react-dom@18.3.1_react@18.3.1/node_modules/framer-motion/dist/es/projection/geometry/delta-remove.mjs","../../../node_modules/.pnpm/framer-motion@11.18.2_react-dom@18.3.1_react@18.3.1/node_modules/framer-motion/dist/es/projection/geometry/utils.mjs","../../../node_modules/.pnpm/framer-motion@11.18.2_react-dom@18.3.1_react@18.3.1/node_modules/framer-motion/dist/es/projection/shared/stack.mjs","../../../node_modules/.pnpm/framer-motion@11.18.2_react-dom@18.3.1_react@18.3.1/node_modules/framer-motion/dist/es/projection/styles/transform.mjs","../../../node_modules/.pnpm/framer-motion@11.18.2_react-dom@18.3.1_react@18.3.1/node_modules/framer-motion/dist/es/projection/node/create-projection-node.mjs","../../../node_modules/.pnpm/framer-motion@11.18.2_react-dom@18.3.1_react@18.3.1/node_modules/framer-motion/dist/es/projection/node/DocumentProjectionNode.mjs","../../../node_modules/.pnpm/framer-motion@11.18.2_react-dom@18.3.1_react@18.3.1/node_modules/framer-motion/dist/es/projection/node/HTMLProjectionNode.mjs","../../../node_modules/.pnpm/framer-motion@11.18.2_react-dom@18.3.1_react@18.3.1/node_modules/framer-motion/dist/es/motion/features/drag.mjs","../../../node_modules/.pnpm/framer-motion@11.18.2_react-dom@18.3.1_react@18.3.1/node_modules/framer-motion/dist/es/gestures/hover.mjs","../../../node_modules/.pnpm/framer-motion@11.18.2_react-dom@18.3.1_react@18.3.1/node_modules/framer-motion/dist/es/gestures/focus.mjs","../../../node_modules/.pnpm/framer-motion@11.18.2_react-dom@18.3.1_react@18.3.1/node_modules/framer-motion/dist/es/gestures/press.mjs","../../../node_modules/.pnpm/framer-motion@11.18.2_react-dom@18.3.1_react@18.3.1/node_modules/framer-motion/dist/es/motion/features/viewport/observers.mjs","../../../node_modules/.pnpm/framer-motion@11.18.2_react-dom@18.3.1_react@18.3.1/node_modules/framer-motion/dist/es/motion/features/viewport/index.mjs","../../../node_modules/.pnpm/framer-motion@11.18.2_react-dom@18.3.1_react@18.3.1/node_modules/framer-motion/dist/es/motion/features/gestures.mjs","../../../node_modules/.pnpm/framer-motion@11.18.2_react-dom@18.3.1_react@18.3.1/node_modules/framer-motion/dist/es/motion/features/layout.mjs","../../../node_modules/.pnpm/framer-motion@11.18.2_react-dom@18.3.1_react@18.3.1/node_modules/framer-motion/dist/es/utils/reduced-motion/state.mjs","../../../node_modules/.pnpm/framer-motion@11.18.2_react-dom@18.3.1_react@18.3.1/node_modules/framer-motion/dist/es/utils/reduced-motion/index.mjs","../../../node_modules/.pnpm/framer-motion@11.18.2_react-dom@18.3.1_react@18.3.1/node_modules/framer-motion/dist/es/render/dom/value-types/find.mjs","../../../node_modules/.pnpm/framer-motion@11.18.2_react-dom@18.3.1_react@18.3.1/node_modules/framer-motion/dist/es/render/store.mjs","../../../node_modules/.pnpm/framer-motion@11.18.2_react-dom@18.3.1_react@18.3.1/node_modules/framer-motion/dist/es/render/utils/motion-values.mjs","../../../node_modules/.pnpm/framer-motion@11.18.2_react-dom@18.3.1_react@18.3.1/node_modules/framer-motion/dist/es/render/VisualElement.mjs","../../../node_modules/.pnpm/framer-motion@11.18.2_react-dom@18.3.1_react@18.3.1/node_modules/framer-motion/dist/es/render/dom/DOMVisualElement.mjs","../../../node_modules/.pnpm/framer-motion@11.18.2_react-dom@18.3.1_react@18.3.1/node_modules/framer-motion/dist/es/render/html/HTMLVisualElement.mjs","../../../node_modules/.pnpm/framer-motion@11.18.2_react-dom@18.3.1_react@18.3.1/node_modules/framer-motion/dist/es/render/svg/SVGVisualElement.mjs","../../../node_modules/.pnpm/framer-motion@11.18.2_react-dom@18.3.1_react@18.3.1/node_modules/framer-motion/dist/es/render/dom/create-visual-element.mjs","../../../node_modules/.pnpm/framer-motion@11.18.2_react-dom@18.3.1_react@18.3.1/node_modules/framer-motion/dist/es/render/components/motion/create.mjs","../../../node_modules/.pnpm/framer-motion@11.18.2_react-dom@18.3.1_react@18.3.1/node_modules/framer-motion/dist/es/render/components/motion/proxy.mjs","../src/components/FloatingDiscounInfoNotifier.tsx","../src/shared/folnua.ts","../src/components/ProductDetailDiscountNotifier.tsx","../src/shared/suspense.tsx","../src/components/TextInput.tsx","../src/components/PhoneBottomSheet.tsx","../src/components/Cafe24ExternalPaymentBlocker.tsx","../../../node_modules/.pnpm/es-errors@1.3.0/node_modules/es-errors/type.js","../__vite-browser-external","../../../node_modules/.pnpm/object-inspect@1.13.4/node_modules/object-inspect/index.js","../../../node_modules/.pnpm/side-channel-list@1.0.0/node_modules/side-channel-list/index.js","../../../node_modules/.pnpm/es-object-atoms@1.1.1/node_modules/es-object-atoms/index.js","../../../node_modules/.pnpm/es-errors@1.3.0/node_modules/es-errors/index.js","../../../node_modules/.pnpm/es-errors@1.3.0/node_modules/es-errors/eval.js","../../../node_modules/.pnpm/es-errors@1.3.0/node_modules/es-errors/range.js","../../../node_modules/.pnpm/es-errors@1.3.0/node_modules/es-errors/ref.js","../../../node_modules/.pnpm/es-errors@1.3.0/node_modules/es-errors/syntax.js","../../../node_modules/.pnpm/es-errors@1.3.0/node_modules/es-errors/uri.js","../../../node_modules/.pnpm/math-intrinsics@1.1.0/node_modules/math-intrinsics/abs.js","../../../node_modules/.pnpm/math-intrinsics@1.1.0/node_modules/math-intrinsics/floor.js","../../../node_modules/.pnpm/math-intrinsics@1.1.0/node_modules/math-intrinsics/max.js","../../../node_modules/.pnpm/math-intrinsics@1.1.0/node_modules/math-intrinsics/min.js","../../../node_modules/.pnpm/math-intrinsics@1.1.0/node_modules/math-intrinsics/pow.js","../../../node_modules/.pnpm/math-intrinsics@1.1.0/node_modules/math-intrinsics/round.js","../../../node_modules/.pnpm/math-intrinsics@1.1.0/node_modules/math-intrinsics/isNaN.js","../../../node_modules/.pnpm/math-intrinsics@1.1.0/node_modules/math-intrinsics/sign.js","../../../node_modules/.pnpm/gopd@1.2.0/node_modules/gopd/gOPD.js","../../../node_modules/.pnpm/gopd@1.2.0/node_modules/gopd/index.js","../../../node_modules/.pnpm/es-define-property@1.0.1/node_modules/es-define-property/index.js","../../../node_modules/.pnpm/has-symbols@1.1.0/node_modules/has-symbols/shams.js","../../../node_modules/.pnpm/has-symbols@1.1.0/node_modules/has-symbols/index.js","../../../node_modules/.pnpm/get-proto@1.0.1/node_modules/get-proto/Reflect.getPrototypeOf.js","../../../node_modules/.pnpm/get-proto@1.0.1/node_modules/get-proto/Object.getPrototypeOf.js","../../../node_modules/.pnpm/function-bind@1.1.2/node_modules/function-bind/implementation.js","../../../node_modules/.pnpm/function-bind@1.1.2/node_modules/function-bind/index.js","../../../node_modules/.pnpm/call-bind-apply-helpers@1.0.2/node_modules/call-bind-apply-helpers/functionCall.js","../../../node_modules/.pnpm/call-bind-apply-helpers@1.0.2/node_modules/call-bind-apply-helpers/functionApply.js","../../../node_modules/.pnpm/call-bind-apply-helpers@1.0.2/node_modules/call-bind-apply-helpers/reflectApply.js","../../../node_modules/.pnpm/call-bind-apply-helpers@1.0.2/node_modules/call-bind-apply-helpers/actualApply.js","../../../node_modules/.pnpm/call-bind-apply-helpers@1.0.2/node_modules/call-bind-apply-helpers/index.js","../../../node_modules/.pnpm/dunder-proto@1.0.1/node_modules/dunder-proto/get.js","../../../node_modules/.pnpm/get-proto@1.0.1/node_modules/get-proto/index.js","../../../node_modules/.pnpm/hasown@2.0.2/node_modules/hasown/index.js","../../../node_modules/.pnpm/get-intrinsic@1.3.0/node_modules/get-intrinsic/index.js","../../../node_modules/.pnpm/call-bound@1.0.4/node_modules/call-bound/index.js","../../../node_modules/.pnpm/side-channel-map@1.0.1/node_modules/side-channel-map/index.js","../../../node_modules/.pnpm/side-channel-weakmap@1.0.2/node_modules/side-channel-weakmap/index.js","../../../node_modules/.pnpm/side-channel@1.1.0/node_modules/side-channel/index.js","../../../node_modules/.pnpm/qs@6.14.0/node_modules/qs/lib/formats.js","../../../node_modules/.pnpm/qs@6.14.0/node_modules/qs/lib/utils.js","../../../node_modules/.pnpm/qs@6.14.0/node_modules/qs/lib/stringify.js","../../../node_modules/.pnpm/qs@6.14.0/node_modules/qs/lib/parse.js","../../../node_modules/.pnpm/qs@6.14.0/node_modules/qs/lib/index.js","../../../node_modules/.pnpm/@stitches+react@1.2.8_react@18.3.1/node_modules/@stitches/react/dist/index.mjs","../src/components/ZVZOText.tsx","../src/shared/colors.ts","../src/logo.png","../src/ZVZOIndicator.tsx","../src/sso-processor.ts","../src/components/SSOProcessor.tsx","../../../node_modules/.pnpm/@sentry+core@10.10.0/node_modules/@sentry/core/build/esm/debug-build.js","../../../node_modules/.pnpm/@sentry+core@10.10.0/node_modules/@sentry/core/build/esm/utils/worldwide.js","../../../node_modules/.pnpm/@sentry+core@10.10.0/node_modules/@sentry/core/build/esm/utils/version.js","../../../node_modules/.pnpm/@sentry+core@10.10.0/node_modules/@sentry/core/build/esm/carrier.js","../../../node_modules/.pnpm/@sentry+core@10.10.0/node_modules/@sentry/core/build/esm/utils/debug-logger.js","../../../node_modules/.pnpm/@sentry+core@10.10.0/node_modules/@sentry/core/build/esm/utils/stacktrace.js","../../../node_modules/.pnpm/@sentry+core@10.10.0/node_modules/@sentry/core/build/esm/instrument/handlers.js","../../../node_modules/.pnpm/@sentry+core@10.10.0/node_modules/@sentry/core/build/esm/instrument/globalError.js","../../../node_modules/.pnpm/@sentry+core@10.10.0/node_modules/@sentry/core/build/esm/instrument/globalUnhandledRejection.js","../../../node_modules/.pnpm/@sentry+core@10.10.0/node_modules/@sentry/core/build/esm/utils/is.js","../../../node_modules/.pnpm/@sentry+core@10.10.0/node_modules/@sentry/core/build/esm/utils/browser.js","../../../node_modules/.pnpm/@sentry+core@10.10.0/node_modules/@sentry/core/build/esm/utils/string.js","../../../node_modules/.pnpm/@sentry+core@10.10.0/node_modules/@sentry/core/build/esm/utils/object.js","../../../node_modules/.pnpm/@sentry+core@10.10.0/node_modules/@sentry/core/build/esm/utils/misc.js","../../../node_modules/.pnpm/@sentry+core@10.10.0/node_modules/@sentry/core/build/esm/utils/time.js","../../../node_modules/.pnpm/@sentry+core@10.10.0/node_modules/@sentry/core/build/esm/session.js","../../../node_modules/.pnpm/@sentry+core@10.10.0/node_modules/@sentry/core/build/esm/utils/merge.js","../../../node_modules/.pnpm/@sentry+core@10.10.0/node_modules/@sentry/core/build/esm/utils/propagationContext.js","../../../node_modules/.pnpm/@sentry+core@10.10.0/node_modules/@sentry/core/build/esm/utils/spanOnScope.js","../../../node_modules/.pnpm/@sentry+core@10.10.0/node_modules/@sentry/core/build/esm/scope.js","../../../node_modules/.pnpm/@sentry+core@10.10.0/node_modules/@sentry/core/build/esm/defaultScopes.js","../../../node_modules/.pnpm/@sentry+core@10.10.0/node_modules/@sentry/core/build/esm/asyncContext/stackStrategy.js","../../../node_modules/.pnpm/@sentry+core@10.10.0/node_modules/@sentry/core/build/esm/asyncContext/index.js","../../../node_modules/.pnpm/@sentry+core@10.10.0/node_modules/@sentry/core/build/esm/currentScopes.js","../../../node_modules/.pnpm/@sentry+core@10.10.0/node_modules/@sentry/core/build/esm/semanticAttributes.js","../../../node_modules/.pnpm/@sentry+core@10.10.0/node_modules/@sentry/core/build/esm/tracing/spanstatus.js","../../../node_modules/.pnpm/@sentry+core@10.10.0/node_modules/@sentry/core/build/esm/tracing/utils.js","../../../node_modules/.pnpm/@sentry+core@10.10.0/node_modules/@sentry/core/build/esm/utils/baggage.js","../../../node_modules/.pnpm/@sentry+core@10.10.0/node_modules/@sentry/core/build/esm/utils/dsn.js","../../../node_modules/.pnpm/@sentry+core@10.10.0/node_modules/@sentry/core/build/esm/utils/parseSampleRate.js","../../../node_modules/.pnpm/@sentry+core@10.10.0/node_modules/@sentry/core/build/esm/utils/spanUtils.js","../../../node_modules/.pnpm/@sentry+core@10.10.0/node_modules/@sentry/core/build/esm/utils/hasSpansEnabled.js","../../../node_modules/.pnpm/@sentry+core@10.10.0/node_modules/@sentry/core/build/esm/constants.js","../../../node_modules/.pnpm/@sentry+core@10.10.0/node_modules/@sentry/core/build/esm/tracing/dynamicSamplingContext.js","../../../node_modules/.pnpm/@sentry+core@10.10.0/node_modules/@sentry/core/build/esm/utils/normalize.js","../../../node_modules/.pnpm/@sentry+core@10.10.0/node_modules/@sentry/core/build/esm/utils/envelope.js","../../../node_modules/.pnpm/@sentry+core@10.10.0/node_modules/@sentry/core/build/esm/utils/should-ignore-span.js","../../../node_modules/.pnpm/@sentry+core@10.10.0/node_modules/@sentry/core/build/esm/envelope.js","../../../node_modules/.pnpm/@sentry+core@10.10.0/node_modules/@sentry/core/build/esm/utils/syncpromise.js","../../../node_modules/.pnpm/@sentry+core@10.10.0/node_modules/@sentry/core/build/esm/eventProcessors.js","../../../node_modules/.pnpm/@sentry+core@10.10.0/node_modules/@sentry/core/build/esm/utils/applyScopeDataToEvent.js","../../../node_modules/.pnpm/@sentry+core@10.10.0/node_modules/@sentry/core/build/esm/utils/debug-ids.js","../../../node_modules/.pnpm/@sentry+core@10.10.0/node_modules/@sentry/core/build/esm/utils/prepareEvent.js","../../../node_modules/.pnpm/@sentry+core@10.10.0/node_modules/@sentry/core/build/esm/exports.js","../../../node_modules/.pnpm/@sentry+core@10.10.0/node_modules/@sentry/core/build/esm/api.js","../../../node_modules/.pnpm/@sentry+core@10.10.0/node_modules/@sentry/core/build/esm/integration.js","../../../node_modules/.pnpm/@sentry+core@10.10.0/node_modules/@sentry/core/build/esm/utils/clientreport.js","../../../node_modules/.pnpm/@sentry+core@10.10.0/node_modules/@sentry/core/build/esm/utils/eventUtils.js","../../../node_modules/.pnpm/@sentry+core@10.10.0/node_modules/@sentry/core/build/esm/utils/transactionEvent.js","../../../node_modules/.pnpm/@sentry+core@10.10.0/node_modules/@sentry/core/build/esm/client.js","../../../node_modules/.pnpm/@sentry+core@10.10.0/node_modules/@sentry/core/build/esm/logs/envelope.js","../../../node_modules/.pnpm/@sentry+core@10.10.0/node_modules/@sentry/core/build/esm/logs/exports.js","../../../node_modules/.pnpm/@sentry+core@10.10.0/node_modules/@sentry/core/build/esm/sdk.js","../../../node_modules/.pnpm/@sentry+core@10.10.0/node_modules/@sentry/core/build/esm/utils/promisebuffer.js","../../../node_modules/.pnpm/@sentry+core@10.10.0/node_modules/@sentry/core/build/esm/utils/ratelimit.js","../../../node_modules/.pnpm/@sentry+core@10.10.0/node_modules/@sentry/core/build/esm/transports/base.js","../../../node_modules/.pnpm/@sentry+core@10.10.0/node_modules/@sentry/core/build/esm/utils/url.js","../../../node_modules/.pnpm/@sentry+core@10.10.0/node_modules/@sentry/core/build/esm/utils/ipAddress.js","../../../node_modules/.pnpm/@sentry+core@10.10.0/node_modules/@sentry/core/build/esm/utils/sdkMetadata.js","../../../node_modules/.pnpm/@sentry+core@10.10.0/node_modules/@sentry/core/build/esm/breadcrumbs.js","../../../node_modules/.pnpm/@sentry+core@10.10.0/node_modules/@sentry/core/build/esm/integrations/functiontostring.js","../../../node_modules/.pnpm/@sentry+core@10.10.0/node_modules/@sentry/core/build/esm/integrations/eventFilters.js","../../../node_modules/.pnpm/@sentry+core@10.10.0/node_modules/@sentry/core/build/esm/utils/aggregate-errors.js","../../../node_modules/.pnpm/@sentry+core@10.10.0/node_modules/@sentry/core/build/esm/instrument/console.js","../../../node_modules/.pnpm/@sentry+core@10.10.0/node_modules/@sentry/core/build/esm/utils/severity.js","../../../node_modules/.pnpm/@sentry+core@10.10.0/node_modules/@sentry/core/build/esm/integrations/dedupe.js","../../../node_modules/.pnpm/@sentry+core@10.10.0/node_modules/@sentry/core/build/esm/utils/breadcrumb-log-level.js","../../../node_modules/.pnpm/@sentry+core@10.10.0/node_modules/@sentry/core/build/esm/utils/supports.js","../../../node_modules/.pnpm/@sentry+core@10.10.0/node_modules/@sentry/core/build/esm/instrument/fetch.js","../../../node_modules/.pnpm/@sentry+core@10.10.0/node_modules/@sentry/core/build/esm/utils/env.js","../../../node_modules/.pnpm/@sentry+browser@10.10.0/node_modules/@sentry/browser/build/npm/esm/helpers.js","../../../node_modules/.pnpm/@sentry+browser@10.10.0/node_modules/@sentry/browser/build/npm/esm/eventbuilder.js","../../../node_modules/.pnpm/@sentry+browser@10.10.0/node_modules/@sentry/browser/build/npm/esm/client.js","../../../node_modules/.pnpm/@sentry-internal+browser-utils@10.10.0/node_modules/@sentry-internal/browser-utils/build/esm/debug-build.js","../../../node_modules/.pnpm/@sentry-internal+browser-utils@10.10.0/node_modules/@sentry-internal/browser-utils/build/esm/types.js","../../../node_modules/.pnpm/@sentry-internal+browser-utils@10.10.0/node_modules/@sentry-internal/browser-utils/build/esm/instrument/dom.js","../../../node_modules/.pnpm/@sentry-internal+browser-utils@10.10.0/node_modules/@sentry-internal/browser-utils/build/esm/instrument/history.js","../../../node_modules/.pnpm/@sentry-internal+browser-utils@10.10.0/node_modules/@sentry-internal/browser-utils/build/esm/getNativeImplementation.js","../../../node_modules/.pnpm/@sentry-internal+browser-utils@10.10.0/node_modules/@sentry-internal/browser-utils/build/esm/instrument/xhr.js","../../../node_modules/.pnpm/@sentry+browser@10.10.0/node_modules/@sentry/browser/build/npm/esm/transports/fetch.js","../../../node_modules/.pnpm/@sentry+browser@10.10.0/node_modules/@sentry/browser/build/npm/esm/stack-parsers.js","../../../node_modules/.pnpm/@sentry+browser@10.10.0/node_modules/@sentry/browser/build/npm/esm/debug-build.js","../../../node_modules/.pnpm/@sentry+browser@10.10.0/node_modules/@sentry/browser/build/npm/esm/integrations/breadcrumbs.js","../../../node_modules/.pnpm/@sentry+browser@10.10.0/node_modules/@sentry/browser/build/npm/esm/integrations/browserapierrors.js","../../../node_modules/.pnpm/@sentry+browser@10.10.0/node_modules/@sentry/browser/build/npm/esm/integrations/browsersession.js","../../../node_modules/.pnpm/@sentry+browser@10.10.0/node_modules/@sentry/browser/build/npm/esm/integrations/globalhandlers.js","../../../node_modules/.pnpm/@sentry+browser@10.10.0/node_modules/@sentry/browser/build/npm/esm/integrations/httpcontext.js","../../../node_modules/.pnpm/@sentry+browser@10.10.0/node_modules/@sentry/browser/build/npm/esm/integrations/linkederrors.js","../../../node_modules/.pnpm/@sentry+browser@10.10.0/node_modules/@sentry/browser/build/npm/esm/utils/detectBrowserExtension.js","../../../node_modules/.pnpm/@sentry+browser@10.10.0/node_modules/@sentry/browser/build/npm/esm/sdk.js","../../../node_modules/.pnpm/mimic-fn@4.0.0/node_modules/mimic-fn/index.js","../../../node_modules/.pnpm/p-memoize@7.1.1/node_modules/p-memoize/dist/index.js","../src/service/cafe24.ts","../src/components/UserEventFollowerCommentBottomSheet.tsx","../src/components/AmplitudeEventLogger.tsx","../src/components/OrderCompleteTracker.tsx","../src/components/FloatingOrderDiscounInfoNotifier.tsx","../src/components/FloatingTotalPaymentPriceNotifiter.tsx","../src/assets/coupon_image.png","../src/components/MaximumCouponNotifier.tsx","../src/components/OrderFormDiscountNotifier.tsx","../src/Cafe24App.tsx","../sentry.config.ts","../src/DevPreviewApp.tsx","../src/assets/icon_arrow_right_graphic.png","../src/assets/icon_close_button.png","../src/components/SSOSignInBottomSheet.tsx","../src/components/SSOSignBottomSheetContainer.tsx","../src/cafe24.tsx"],"sourcesContent":["var n,l,u,t,i,r,o,e,f,c,s,a,h,p={},v=[],y=/acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|itera/i,w=Array.isArray;function d(n,l){for(var u in l)n[u]=l[u];return n}function g(n){n&&n.parentNode&&n.parentNode.removeChild(n)}function _(l,u,t){var i,r,o,e={};for(o in u)\"key\"==o?i=u[o]:\"ref\"==o?r=u[o]:e[o]=u[o];if(arguments.length>2&&(e.children=arguments.length>3?n.call(arguments,2):t),\"function\"==typeof l&&null!=l.defaultProps)for(o in l.defaultProps)void 0===e[o]&&(e[o]=l.defaultProps[o]);return m(l,e,i,r,null)}function m(n,t,i,r,o){var e={type:n,props:t,key:i,ref:r,__k:null,__:null,__b:0,__e:null,__c:null,constructor:void 0,__v:null==o?++u:o,__i:-1,__u:0};return null==o&&null!=l.vnode&&l.vnode(e),e}function b(){return{current:null}}function k(n){return n.children}function x(n,l){this.props=n,this.context=l}function S(n,l){if(null==l)return n.__?S(n.__,n.__i+1):null;for(var u;l<n.__k.length;l++)if(null!=(u=n.__k[l])&&null!=u.__e)return u.__e;return\"function\"==typeof n.type?S(n):null}function C(n){var l,u;if(null!=(n=n.__)&&null!=n.__c){for(n.__e=n.__c.base=null,l=0;l<n.__k.length;l++)if(null!=(u=n.__k[l])&&null!=u.__e){n.__e=n.__c.base=u.__e;break}return C(n)}}function M(n){(!n.__d&&(n.__d=!0)&&i.push(n)&&!$.__r++||r!=l.debounceRendering)&&((r=l.debounceRendering)||o)($)}function $(){for(var n,u,t,r,o,f,c,s=1;i.length;)i.length>s&&i.sort(e),n=i.shift(),s=i.length,n.__d&&(t=void 0,o=(r=(u=n).__v).__e,f=[],c=[],u.__P&&((t=d({},r)).__v=r.__v+1,l.vnode&&l.vnode(t),O(u.__P,t,r,u.__n,u.__P.namespaceURI,32&r.__u?[o]:null,f,null==o?S(r):o,!!(32&r.__u),c),t.__v=r.__v,t.__.__k[t.__i]=t,N(f,t,c),t.__e!=o&&C(t)));$.__r=0}function I(n,l,u,t,i,r,o,e,f,c,s){var a,h,y,w,d,g,_,m=t&&t.__k||v,b=l.length;for(f=P(u,l,m,f,b),a=0;a<b;a++)null!=(y=u.__k[a])&&(h=-1==y.__i?p:m[y.__i]||p,y.__i=a,g=O(n,y,h,i,r,o,e,f,c,s),w=y.__e,y.ref&&h.ref!=y.ref&&(h.ref&&B(h.ref,null,y),s.push(y.ref,y.__c||w,y)),null==d&&null!=w&&(d=w),(_=!!(4&y.__u))||h.__k===y.__k?f=A(y,f,n,_):\"function\"==typeof y.type&&void 0!==g?f=g:w&&(f=w.nextSibling),y.__u&=-7);return u.__e=d,f}function P(n,l,u,t,i){var r,o,e,f,c,s=u.length,a=s,h=0;for(n.__k=new Array(i),r=0;r<i;r++)null!=(o=l[r])&&\"boolean\"!=typeof o&&\"function\"!=typeof o?(f=r+h,(o=n.__k[r]=\"string\"==typeof o||\"number\"==typeof o||\"bigint\"==typeof o||o.constructor==String?m(null,o,null,null,null):w(o)?m(k,{children:o},null,null,null):null==o.constructor&&o.__b>0?m(o.type,o.props,o.key,o.ref?o.ref:null,o.__v):o).__=n,o.__b=n.__b+1,e=null,-1!=(c=o.__i=L(o,u,f,a))&&(a--,(e=u[c])&&(e.__u|=2)),null==e||null==e.__v?(-1==c&&(i>s?h--:i<s&&h++),\"function\"!=typeof o.type&&(o.__u|=4)):c!=f&&(c==f-1?h--:c==f+1?h++:(c>f?h--:h++,o.__u|=4))):n.__k[r]=null;if(a)for(r=0;r<s;r++)null!=(e=u[r])&&0==(2&e.__u)&&(e.__e==t&&(t=S(e)),D(e,e));return t}function A(n,l,u,t){var i,r;if(\"function\"==typeof n.type){for(i=n.__k,r=0;i&&r<i.length;r++)i[r]&&(i[r].__=n,l=A(i[r],l,u,t));return l}n.__e!=l&&(t&&(l&&n.type&&!l.parentNode&&(l=S(n)),u.insertBefore(n.__e,l||null)),l=n.__e);do{l=l&&l.nextSibling}while(null!=l&&8==l.nodeType);return l}function H(n,l){return l=l||[],null==n||\"boolean\"==typeof n||(w(n)?n.some(function(n){H(n,l)}):l.push(n)),l}function L(n,l,u,t){var i,r,o,e=n.key,f=n.type,c=l[u],s=null!=c&&0==(2&c.__u);if(null===c&&null==n.key||s&&e==c.key&&f==c.type)return u;if(t>(s?1:0))for(i=u-1,r=u+1;i>=0||r<l.length;)if(null!=(c=l[o=i>=0?i--:r++])&&0==(2&c.__u)&&e==c.key&&f==c.type)return o;return-1}function T(n,l,u){\"-\"==l[0]?n.setProperty(l,null==u?\"\":u):n[l]=null==u?\"\":\"number\"!=typeof u||y.test(l)?u:u+\"px\"}function j(n,l,u,t,i){var r,o;n:if(\"style\"==l)if(\"string\"==typeof u)n.style.cssText=u;else{if(\"string\"==typeof t&&(n.style.cssText=t=\"\"),t)for(l in t)u&&l in u||T(n.style,l,\"\");if(u)for(l in u)t&&u[l]==t[l]||T(n.style,l,u[l])}else if(\"o\"==l[0]&&\"n\"==l[1])r=l!=(l=l.replace(f,\"$1\")),o=l.toLowerCase(),l=o in n||\"onFocusOut\"==l||\"onFocusIn\"==l?o.slice(2):l.slice(2),n.l||(n.l={}),n.l[l+r]=u,u?t?u.u=t.u:(u.u=c,n.addEventListener(l,r?a:s,r)):n.removeEventListener(l,r?a:s,r);else{if(\"http://www.w3.org/2000/svg\"==i)l=l.replace(/xlink(H|:h)/,\"h\").replace(/sName$/,\"s\");else if(\"width\"!=l&&\"height\"!=l&&\"href\"!=l&&\"list\"!=l&&\"form\"!=l&&\"tabIndex\"!=l&&\"download\"!=l&&\"rowSpan\"!=l&&\"colSpan\"!=l&&\"role\"!=l&&\"popover\"!=l&&l in n)try{n[l]=null==u?\"\":u;break n}catch(n){}\"function\"==typeof u||(null==u||!1===u&&\"-\"!=l[4]?n.removeAttribute(l):n.setAttribute(l,\"popover\"==l&&1==u?\"\":u))}}function F(n){return function(u){if(this.l){var t=this.l[u.type+n];if(null==u.t)u.t=c++;else if(u.t<t.u)return;return t(l.event?l.event(u):u)}}}function O(n,u,t,i,r,o,e,f,c,s){var a,h,p,v,y,_,m,b,S,C,M,$,P,A,H,L,T,j=u.type;if(null!=u.constructor)return null;128&t.__u&&(c=!!(32&t.__u),o=[f=u.__e=t.__e]),(a=l.__b)&&a(u);n:if(\"function\"==typeof j)try{if(b=u.props,S=\"prototype\"in j&&j.prototype.render,C=(a=j.contextType)&&i[a.__c],M=a?C?C.props.value:a.__:i,t.__c?m=(h=u.__c=t.__c).__=h.__E:(S?u.__c=h=new j(b,M):(u.__c=h=new x(b,M),h.constructor=j,h.render=E),C&&C.sub(h),h.props=b,h.state||(h.state={}),h.context=M,h.__n=i,p=h.__d=!0,h.__h=[],h._sb=[]),S&&null==h.__s&&(h.__s=h.state),S&&null!=j.getDerivedStateFromProps&&(h.__s==h.state&&(h.__s=d({},h.__s)),d(h.__s,j.getDerivedStateFromProps(b,h.__s))),v=h.props,y=h.state,h.__v=u,p)S&&null==j.getDerivedStateFromProps&&null!=h.componentWillMount&&h.componentWillMount(),S&&null!=h.componentDidMount&&h.__h.push(h.componentDidMount);else{if(S&&null==j.getDerivedStateFromProps&&b!==v&&null!=h.componentWillReceiveProps&&h.componentWillReceiveProps(b,M),!h.__e&&null!=h.shouldComponentUpdate&&!1===h.shouldComponentUpdate(b,h.__s,M)||u.__v==t.__v){for(u.__v!=t.__v&&(h.props=b,h.state=h.__s,h.__d=!1),u.__e=t.__e,u.__k=t.__k,u.__k.some(function(n){n&&(n.__=u)}),$=0;$<h._sb.length;$++)h.__h.push(h._sb[$]);h._sb=[],h.__h.length&&e.push(h);break n}null!=h.componentWillUpdate&&h.componentWillUpdate(b,h.__s,M),S&&null!=h.componentDidUpdate&&h.__h.push(function(){h.componentDidUpdate(v,y,_)})}if(h.context=M,h.props=b,h.__P=n,h.__e=!1,P=l.__r,A=0,S){for(h.state=h.__s,h.__d=!1,P&&P(u),a=h.render(h.props,h.state,h.context),H=0;H<h._sb.length;H++)h.__h.push(h._sb[H]);h._sb=[]}else do{h.__d=!1,P&&P(u),a=h.render(h.props,h.state,h.context),h.state=h.__s}while(h.__d&&++A<25);h.state=h.__s,null!=h.getChildContext&&(i=d(d({},i),h.getChildContext())),S&&!p&&null!=h.getSnapshotBeforeUpdate&&(_=h.getSnapshotBeforeUpdate(v,y)),L=a,null!=a&&a.type===k&&null==a.key&&(L=V(a.props.children)),f=I(n,w(L)?L:[L],u,t,i,r,o,e,f,c,s),h.base=u.__e,u.__u&=-161,h.__h.length&&e.push(h),m&&(h.__E=h.__=null)}catch(n){if(u.__v=null,c||null!=o)if(n.then){for(u.__u|=c?160:128;f&&8==f.nodeType&&f.nextSibling;)f=f.nextSibling;o[o.indexOf(f)]=null,u.__e=f}else{for(T=o.length;T--;)g(o[T]);z(u)}else u.__e=t.__e,u.__k=t.__k,n.then||z(u);l.__e(n,u,t)}else null==o&&u.__v==t.__v?(u.__k=t.__k,u.__e=t.__e):f=u.__e=q(t.__e,u,t,i,r,o,e,c,s);return(a=l.diffed)&&a(u),128&u.__u?void 0:f}function z(n){n&&n.__c&&(n.__c.__e=!0),n&&n.__k&&n.__k.forEach(z)}function N(n,u,t){for(var i=0;i<t.length;i++)B(t[i],t[++i],t[++i]);l.__c&&l.__c(u,n),n.some(function(u){try{n=u.__h,u.__h=[],n.some(function(n){n.call(u)})}catch(n){l.__e(n,u.__v)}})}function V(n){return\"object\"!=typeof n||null==n||n.__b&&n.__b>0?n:w(n)?n.map(V):d({},n)}function q(u,t,i,r,o,e,f,c,s){var a,h,v,y,d,_,m,b=i.props,k=t.props,x=t.type;if(\"svg\"==x?o=\"http://www.w3.org/2000/svg\":\"math\"==x?o=\"http://www.w3.org/1998/Math/MathML\":o||(o=\"http://www.w3.org/1999/xhtml\"),null!=e)for(a=0;a<e.length;a++)if((d=e[a])&&\"setAttribute\"in d==!!x&&(x?d.localName==x:3==d.nodeType)){u=d,e[a]=null;break}if(null==u){if(null==x)return document.createTextNode(k);u=document.createElementNS(o,x,k.is&&k),c&&(l.__m&&l.__m(t,e),c=!1),e=null}if(null==x)b===k||c&&u.data==k||(u.data=k);else{if(e=e&&n.call(u.childNodes),b=i.props||p,!c&&null!=e)for(b={},a=0;a<u.attributes.length;a++)b[(d=u.attributes[a]).name]=d.value;for(a in b)if(d=b[a],\"children\"==a);else if(\"dangerouslySetInnerHTML\"==a)v=d;else if(!(a in k)){if(\"value\"==a&&\"defaultValue\"in k||\"checked\"==a&&\"defaultChecked\"in k)continue;j(u,a,null,d,o)}for(a in k)d=k[a],\"children\"==a?y=d:\"dangerouslySetInnerHTML\"==a?h=d:\"value\"==a?_=d:\"checked\"==a?m=d:c&&\"function\"!=typeof d||b[a]===d||j(u,a,d,b[a],o);if(h)c||v&&(h.__html==v.__html||h.__html==u.innerHTML)||(u.innerHTML=h.__html),t.__k=[];else if(v&&(u.innerHTML=\"\"),I(\"template\"==t.type?u.content:u,w(y)?y:[y],t,i,r,\"foreignObject\"==x?\"http://www.w3.org/1999/xhtml\":o,e,f,e?e[0]:i.__k&&S(i,0),c,s),null!=e)for(a=e.length;a--;)g(e[a]);c||(a=\"value\",\"progress\"==x&&null==_?u.removeAttribute(\"value\"):null!=_&&(_!==u[a]||\"progress\"==x&&!_||\"option\"==x&&_!=b[a])&&j(u,a,_,b[a],o),a=\"checked\",null!=m&&m!=u[a]&&j(u,a,m,b[a],o))}return u}function B(n,u,t){try{if(\"function\"==typeof n){var i=\"function\"==typeof n.__u;i&&n.__u(),i&&null==u||(n.__u=n(u))}else n.current=u}catch(n){l.__e(n,t)}}function D(n,u,t){var i,r;if(l.unmount&&l.unmount(n),(i=n.ref)&&(i.current&&i.current!=n.__e||B(i,null,u)),null!=(i=n.__c)){if(i.componentWillUnmount)try{i.componentWillUnmount()}catch(n){l.__e(n,u)}i.base=i.__P=null}if(i=n.__k)for(r=0;r<i.length;r++)i[r]&&D(i[r],u,t||\"function\"!=typeof n.type);t||g(n.__e),n.__c=n.__=n.__e=void 0}function E(n,l,u){return this.constructor(n,u)}function G(u,t,i){var r,o,e,f;t==document&&(t=document.documentElement),l.__&&l.__(u,t),o=(r=\"function\"==typeof i)?null:i&&i.__k||t.__k,e=[],f=[],O(t,u=(!r&&i||t).__k=_(k,null,[u]),o||p,p,t.namespaceURI,!r&&i?[i]:o?null:t.firstChild?n.call(t.childNodes):null,e,!r&&i?i:o?o.__e:t.firstChild,r,f),N(e,u,f)}function J(n,l){G(n,l,J)}function K(l,u,t){var i,r,o,e,f=d({},l.props);for(o in l.type&&l.type.defaultProps&&(e=l.type.defaultProps),u)\"key\"==o?i=u[o]:\"ref\"==o?r=u[o]:f[o]=void 0===u[o]&&null!=e?e[o]:u[o];return arguments.length>2&&(f.children=arguments.length>3?n.call(arguments,2):t),m(l.type,f,i||l.key,r||l.ref,null)}function Q(n){function l(n){var u,t;return this.getChildContext||(u=new Set,(t={})[l.__c]=this,this.getChildContext=function(){return t},this.componentWillUnmount=function(){u=null},this.shouldComponentUpdate=function(n){this.props.value!=n.value&&u.forEach(function(n){n.__e=!0,M(n)})},this.sub=function(n){u.add(n);var l=n.componentWillUnmount;n.componentWillUnmount=function(){u&&u.delete(n),l&&l.call(n)}}),n.children}return l.__c=\"__cC\"+h++,l.__=n,l.Provider=l.__l=(l.Consumer=function(n,l){return n.children(l)}).contextType=l,l}n=v.slice,l={__e:function(n,l,u,t){for(var i,r,o;l=l.__;)if((i=l.__c)&&!i.__)try{if((r=i.constructor)&&null!=r.getDerivedStateFromError&&(i.setState(r.getDerivedStateFromError(n)),o=i.__d),null!=i.componentDidCatch&&(i.componentDidCatch(n,t||{}),o=i.__d),o)return i.__E=i}catch(l){n=l}throw n}},u=0,t=function(n){return null!=n&&null==n.constructor},x.prototype.setState=function(n,l){var u;u=null!=this.__s&&this.__s!=this.state?this.__s:this.__s=d({},this.state),\"function\"==typeof n&&(n=n(d({},u),this.props)),n&&d(u,n),null!=n&&this.__v&&(l&&this._sb.push(l),M(this))},x.prototype.forceUpdate=function(n){this.__v&&(this.__e=!0,n&&this.__h.push(n),M(this))},x.prototype.render=k,i=[],o=\"function\"==typeof Promise?Promise.prototype.then.bind(Promise.resolve()):setTimeout,e=function(n,l){return n.__v.__b-l.__v.__b},$.__r=0,f=/(PointerCapture)$|Capture$/i,c=0,s=F(!1),a=F(!0),h=0;export{x as Component,k as Fragment,K as cloneElement,Q as createContext,_ as createElement,b as createRef,_ as h,J as hydrate,t as isValidElement,l as options,G as render,H as toChildArray};\n//# sourceMappingURL=preact.module.js.map\n","function RetryOperation(timeouts, options) {\n  // Compatibility for the old (timeouts, retryForever) signature\n  if (typeof options === 'boolean') {\n    options = { forever: options };\n  }\n\n  this._originalTimeouts = JSON.parse(JSON.stringify(timeouts));\n  this._timeouts = timeouts;\n  this._options = options || {};\n  this._maxRetryTime = options && options.maxRetryTime || Infinity;\n  this._fn = null;\n  this._errors = [];\n  this._attempts = 1;\n  this._operationTimeout = null;\n  this._operationTimeoutCb = null;\n  this._timeout = null;\n  this._operationStart = null;\n  this._timer = null;\n\n  if (this._options.forever) {\n    this._cachedTimeouts = this._timeouts.slice(0);\n  }\n}\nmodule.exports = RetryOperation;\n\nRetryOperation.prototype.reset = function() {\n  this._attempts = 1;\n  this._timeouts = this._originalTimeouts.slice(0);\n}\n\nRetryOperation.prototype.stop = function() {\n  if (this._timeout) {\n    clearTimeout(this._timeout);\n  }\n  if (this._timer) {\n    clearTimeout(this._timer);\n  }\n\n  this._timeouts       = [];\n  this._cachedTimeouts = null;\n};\n\nRetryOperation.prototype.retry = function(err) {\n  if (this._timeout) {\n    clearTimeout(this._timeout);\n  }\n\n  if (!err) {\n    return false;\n  }\n  var currentTime = new Date().getTime();\n  if (err && currentTime - this._operationStart >= this._maxRetryTime) {\n    this._errors.push(err);\n    this._errors.unshift(new Error('RetryOperation timeout occurred'));\n    return false;\n  }\n\n  this._errors.push(err);\n\n  var timeout = this._timeouts.shift();\n  if (timeout === undefined) {\n    if (this._cachedTimeouts) {\n      // retry forever, only keep last error\n      this._errors.splice(0, this._errors.length - 1);\n      timeout = this._cachedTimeouts.slice(-1);\n    } else {\n      return false;\n    }\n  }\n\n  var self = this;\n  this._timer = setTimeout(function() {\n    self._attempts++;\n\n    if (self._operationTimeoutCb) {\n      self._timeout = setTimeout(function() {\n        self._operationTimeoutCb(self._attempts);\n      }, self._operationTimeout);\n\n      if (self._options.unref) {\n          self._timeout.unref();\n      }\n    }\n\n    self._fn(self._attempts);\n  }, timeout);\n\n  if (this._options.unref) {\n      this._timer.unref();\n  }\n\n  return true;\n};\n\nRetryOperation.prototype.attempt = function(fn, timeoutOps) {\n  this._fn = fn;\n\n  if (timeoutOps) {\n    if (timeoutOps.timeout) {\n      this._operationTimeout = timeoutOps.timeout;\n    }\n    if (timeoutOps.cb) {\n      this._operationTimeoutCb = timeoutOps.cb;\n    }\n  }\n\n  var self = this;\n  if (this._operationTimeoutCb) {\n    this._timeout = setTimeout(function() {\n      self._operationTimeoutCb();\n    }, self._operationTimeout);\n  }\n\n  this._operationStart = new Date().getTime();\n\n  this._fn(this._attempts);\n};\n\nRetryOperation.prototype.try = function(fn) {\n  console.log('Using RetryOperation.try() is deprecated');\n  this.attempt(fn);\n};\n\nRetryOperation.prototype.start = function(fn) {\n  console.log('Using RetryOperation.start() is deprecated');\n  this.attempt(fn);\n};\n\nRetryOperation.prototype.start = RetryOperation.prototype.try;\n\nRetryOperation.prototype.errors = function() {\n  return this._errors;\n};\n\nRetryOperation.prototype.attempts = function() {\n  return this._attempts;\n};\n\nRetryOperation.prototype.mainError = function() {\n  if (this._errors.length === 0) {\n    return null;\n  }\n\n  var counts = {};\n  var mainError = null;\n  var mainErrorCount = 0;\n\n  for (var i = 0; i < this._errors.length; i++) {\n    var error = this._errors[i];\n    var message = error.message;\n    var count = (counts[message] || 0) + 1;\n\n    counts[message] = count;\n\n    if (count >= mainErrorCount) {\n      mainError = error;\n      mainErrorCount = count;\n    }\n  }\n\n  return mainError;\n};\n","var RetryOperation = require('./retry_operation');\n\nexports.operation = function(options) {\n  var timeouts = exports.timeouts(options);\n  return new RetryOperation(timeouts, {\n      forever: options && (options.forever || options.retries === Infinity),\n      unref: options && options.unref,\n      maxRetryTime: options && options.maxRetryTime\n  });\n};\n\nexports.timeouts = function(options) {\n  if (options instanceof Array) {\n    return [].concat(options);\n  }\n\n  var opts = {\n    retries: 10,\n    factor: 2,\n    minTimeout: 1 * 1000,\n    maxTimeout: Infinity,\n    randomize: false\n  };\n  for (var key in options) {\n    opts[key] = options[key];\n  }\n\n  if (opts.minTimeout > opts.maxTimeout) {\n    throw new Error('minTimeout is greater than maxTimeout');\n  }\n\n  var timeouts = [];\n  for (var i = 0; i < opts.retries; i++) {\n    timeouts.push(this.createTimeout(i, opts));\n  }\n\n  if (options && options.forever && !timeouts.length) {\n    timeouts.push(this.createTimeout(i, opts));\n  }\n\n  // sort the array numerically ascending\n  timeouts.sort(function(a,b) {\n    return a - b;\n  });\n\n  return timeouts;\n};\n\nexports.createTimeout = function(attempt, opts) {\n  var random = (opts.randomize)\n    ? (Math.random() + 1)\n    : 1;\n\n  var timeout = Math.round(random * Math.max(opts.minTimeout, 1) * Math.pow(opts.factor, attempt));\n  timeout = Math.min(timeout, opts.maxTimeout);\n\n  return timeout;\n};\n\nexports.wrap = function(obj, options, methods) {\n  if (options instanceof Array) {\n    methods = options;\n    options = null;\n  }\n\n  if (!methods) {\n    methods = [];\n    for (var key in obj) {\n      if (typeof obj[key] === 'function') {\n        methods.push(key);\n      }\n    }\n  }\n\n  for (var i = 0; i < methods.length; i++) {\n    var method   = methods[i];\n    var original = obj[method];\n\n    obj[method] = function retryWrapper(original) {\n      var op       = exports.operation(options);\n      var args     = Array.prototype.slice.call(arguments, 1);\n      var callback = args.pop();\n\n      args.push(function(err) {\n        if (op.retry(err)) {\n          return;\n        }\n        if (err) {\n          arguments[0] = op.mainError();\n        }\n        callback.apply(this, arguments);\n      });\n\n      op.attempt(function() {\n        original.apply(obj, args);\n      });\n    }.bind(obj, original);\n    obj[method].options = options;\n  }\n};\n","module.exports = require('./lib/retry');","const objectToString = Object.prototype.toString;\n\nconst isError = value => objectToString.call(value) === '[object Error]';\n\nconst errorMessages = new Set([\n\t'network error', // Chrome\n\t'Failed to fetch', // Chrome\n\t'NetworkError when attempting to fetch resource.', // Firefox\n\t'The Internet connection appears to be offline.', // Safari 16\n\t'Load failed', // Safari 17+\n\t'Network request failed', // `cross-fetch`\n\t'fetch failed', // Undici (Node.js)\n\t'terminated', // Undici (Node.js)\n]);\n\nexport default function isNetworkError(error) {\n\tconst isValid = error\n\t\t&& isError(error)\n\t\t&& error.name === 'TypeError'\n\t\t&& typeof error.message === 'string';\n\n\tif (!isValid) {\n\t\treturn false;\n\t}\n\n\t// We do an extra check for Safari 17+ as it has a very generic error message.\n\t// Network errors in Safari have no stack.\n\tif (error.message === 'Load failed') {\n\t\treturn error.stack === undefined;\n\t}\n\n\treturn errorMessages.has(error.message);\n}\n","import retry from 'retry';\nimport isNetworkError from 'is-network-error';\n\nexport class AbortError extends Error {\n\tconstructor(message) {\n\t\tsuper();\n\n\t\tif (message instanceof Error) {\n\t\t\tthis.originalError = message;\n\t\t\t({message} = message);\n\t\t} else {\n\t\t\tthis.originalError = new Error(message);\n\t\t\tthis.originalError.stack = this.stack;\n\t\t}\n\n\t\tthis.name = 'AbortError';\n\t\tthis.message = message;\n\t}\n}\n\nconst decorateErrorWithCounts = (error, attemptNumber, options) => {\n\t// Minus 1 from attemptNumber because the first attempt does not count as a retry\n\tconst retriesLeft = options.retries - (attemptNumber - 1);\n\n\terror.attemptNumber = attemptNumber;\n\terror.retriesLeft = retriesLeft;\n\treturn error;\n};\n\nexport default async function pRetry(input, options) {\n\treturn new Promise((resolve, reject) => {\n\t\toptions = {...options};\n\t\toptions.onFailedAttempt ??= () => {};\n\t\toptions.shouldRetry ??= () => true;\n\t\toptions.retries ??= 10;\n\n\t\tconst operation = retry.operation(options);\n\n\t\tconst abortHandler = () => {\n\t\t\toperation.stop();\n\t\t\treject(options.signal?.reason);\n\t\t};\n\n\t\tif (options.signal && !options.signal.aborted) {\n\t\t\toptions.signal.addEventListener('abort', abortHandler, {once: true});\n\t\t}\n\n\t\tconst cleanUp = () => {\n\t\t\toptions.signal?.removeEventListener('abort', abortHandler);\n\t\t\toperation.stop();\n\t\t};\n\n\t\toperation.attempt(async attemptNumber => {\n\t\t\ttry {\n\t\t\t\tconst result = await input(attemptNumber);\n\t\t\t\tcleanUp();\n\t\t\t\tresolve(result);\n\t\t\t} catch (error) {\n\t\t\t\ttry {\n\t\t\t\t\tif (!(error instanceof Error)) {\n\t\t\t\t\t\tthrow new TypeError(`Non-error was thrown: \"${error}\". You should only throw errors.`);\n\t\t\t\t\t}\n\n\t\t\t\t\tif (error instanceof AbortError) {\n\t\t\t\t\t\tthrow error.originalError;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (error instanceof TypeError && !isNetworkError(error)) {\n\t\t\t\t\t\tthrow error;\n\t\t\t\t\t}\n\n\t\t\t\t\tdecorateErrorWithCounts(error, attemptNumber, options);\n\n\t\t\t\t\tif (!(await options.shouldRetry(error))) {\n\t\t\t\t\t\toperation.stop();\n\t\t\t\t\t\treject(error);\n\t\t\t\t\t}\n\n\t\t\t\t\tawait options.onFailedAttempt(error);\n\n\t\t\t\t\tif (!operation.retry(error)) {\n\t\t\t\t\t\tthrow operation.mainError();\n\t\t\t\t\t}\n\t\t\t\t} catch (finalError) {\n\t\t\t\t\tdecorateErrorWithCounts(finalError, attemptNumber, options);\n\t\t\t\t\tcleanUp();\n\t\t\t\t\treject(finalError);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t});\n}\n","function _slicedToArray(arr, i) {\n  return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest();\n}\n\nfunction _toConsumableArray(arr) {\n  return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread();\n}\n\nfunction _arrayWithoutHoles(arr) {\n  if (Array.isArray(arr)) return _arrayLikeToArray(arr);\n}\n\nfunction _arrayWithHoles(arr) {\n  if (Array.isArray(arr)) return arr;\n}\n\nfunction _iterableToArray(iter) {\n  if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter);\n}\n\nfunction _iterableToArrayLimit(arr, i) {\n  var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"];\n\n  if (_i == null) return;\n  var _arr = [];\n  var _n = true;\n  var _d = false;\n\n  var _s, _e;\n\n  try {\n    for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) {\n      _arr.push(_s.value);\n\n      if (i && _arr.length === i) break;\n    }\n  } catch (err) {\n    _d = true;\n    _e = err;\n  } finally {\n    try {\n      if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n    } finally {\n      if (_d) throw _e;\n    }\n  }\n\n  return _arr;\n}\n\nfunction _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}\n\nfunction _arrayLikeToArray(arr, len) {\n  if (len == null || len > arr.length) len = arr.length;\n\n  for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n\n  return arr2;\n}\n\nfunction _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}\n\nfunction _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}\n\nexport { _arrayLikeToArray as arrayLikeToArray, _arrayWithHoles as arrayWithHoles, _arrayWithoutHoles as arrayWithoutHoles, _iterableToArray as iterableToArray, _iterableToArrayLimit as iterableToArrayLimit, _nonIterableRest as nonIterableRest, _nonIterableSpread as nonIterableSpread, _slicedToArray as slicedToArray, _toConsumableArray as toConsumableArray, _unsupportedIterableToArray as unsupportedIterableToArray };\n","import{options as n}from\"preact\";var t,r,u,i,o=0,f=[],c=n,e=c.__b,a=c.__r,v=c.diffed,l=c.__c,m=c.unmount,s=c.__;function p(n,t){c.__h&&c.__h(r,n,o||t),o=0;var u=r.__H||(r.__H={__:[],__h:[]});return n>=u.__.length&&u.__.push({}),u.__[n]}function d(n){return o=1,h(D,n)}function h(n,u,i){var o=p(t++,2);if(o.t=n,!o.__c&&(o.__=[i?i(u):D(void 0,u),function(n){var t=o.__N?o.__N[0]:o.__[0],r=o.t(t,n);t!==r&&(o.__N=[r,o.__[1]],o.__c.setState({}))}],o.__c=r,!r.__f)){var f=function(n,t,r){if(!o.__c.__H)return!0;var u=o.__c.__H.__.filter(function(n){return!!n.__c});if(u.every(function(n){return!n.__N}))return!c||c.call(this,n,t,r);var i=o.__c.props!==n;return u.forEach(function(n){if(n.__N){var t=n.__[0];n.__=n.__N,n.__N=void 0,t!==n.__[0]&&(i=!0)}}),c&&c.call(this,n,t,r)||i};r.__f=!0;var c=r.shouldComponentUpdate,e=r.componentWillUpdate;r.componentWillUpdate=function(n,t,r){if(this.__e){var u=c;c=void 0,f(n,t,r),c=u}e&&e.call(this,n,t,r)},r.shouldComponentUpdate=f}return o.__N||o.__}function y(n,u){var i=p(t++,3);!c.__s&&C(i.__H,u)&&(i.__=n,i.u=u,r.__H.__h.push(i))}function _(n,u){var i=p(t++,4);!c.__s&&C(i.__H,u)&&(i.__=n,i.u=u,r.__h.push(i))}function A(n){return o=5,T(function(){return{current:n}},[])}function F(n,t,r){o=6,_(function(){if(\"function\"==typeof n){var r=n(t());return function(){n(null),r&&\"function\"==typeof r&&r()}}if(n)return n.current=t(),function(){return n.current=null}},null==r?r:r.concat(n))}function T(n,r){var u=p(t++,7);return C(u.__H,r)&&(u.__=n(),u.__H=r,u.__h=n),u.__}function q(n,t){return o=8,T(function(){return n},t)}function x(n){var u=r.context[n.__c],i=p(t++,9);return i.c=n,u?(null==i.__&&(i.__=!0,u.sub(r)),u.props.value):n.__}function P(n,t){c.useDebugValue&&c.useDebugValue(t?t(n):n)}function b(n){var u=p(t++,10),i=d();return u.__=n,r.componentDidCatch||(r.componentDidCatch=function(n,t){u.__&&u.__(n,t),i[1](n)}),[i[0],function(){i[1](void 0)}]}function g(){var n=p(t++,11);if(!n.__){for(var u=r.__v;null!==u&&!u.__m&&null!==u.__;)u=u.__;var i=u.__m||(u.__m=[0,0]);n.__=\"P\"+i[0]+\"-\"+i[1]++}return n.__}function j(){for(var n;n=f.shift();)if(n.__P&&n.__H)try{n.__H.__h.forEach(z),n.__H.__h.forEach(B),n.__H.__h=[]}catch(t){n.__H.__h=[],c.__e(t,n.__v)}}c.__b=function(n){r=null,e&&e(n)},c.__=function(n,t){n&&t.__k&&t.__k.__m&&(n.__m=t.__k.__m),s&&s(n,t)},c.__r=function(n){a&&a(n),t=0;var i=(r=n.__c).__H;i&&(u===r?(i.__h=[],r.__h=[],i.__.forEach(function(n){n.__N&&(n.__=n.__N),n.u=n.__N=void 0})):(i.__h.forEach(z),i.__h.forEach(B),i.__h=[],t=0)),u=r},c.diffed=function(n){v&&v(n);var t=n.__c;t&&t.__H&&(t.__H.__h.length&&(1!==f.push(t)&&i===c.requestAnimationFrame||((i=c.requestAnimationFrame)||w)(j)),t.__H.__.forEach(function(n){n.u&&(n.__H=n.u),n.u=void 0})),u=r=null},c.__c=function(n,t){t.some(function(n){try{n.__h.forEach(z),n.__h=n.__h.filter(function(n){return!n.__||B(n)})}catch(r){t.some(function(n){n.__h&&(n.__h=[])}),t=[],c.__e(r,n.__v)}}),l&&l(n,t)},c.unmount=function(n){m&&m(n);var t,r=n.__c;r&&r.__H&&(r.__H.__.forEach(function(n){try{z(n)}catch(n){t=n}}),r.__H=void 0,t&&c.__e(t,r.__v))};var k=\"function\"==typeof requestAnimationFrame;function w(n){var t,r=function(){clearTimeout(u),k&&cancelAnimationFrame(t),setTimeout(n)},u=setTimeout(r,35);k&&(t=requestAnimationFrame(r))}function z(n){var t=r,u=n.__c;\"function\"==typeof u&&(n.__c=void 0,u()),r=t}function B(n){var t=r;n.__c=n.__(),r=t}function C(n,t){return!n||n.length!==t.length||t.some(function(t,r){return t!==n[r]})}function D(n,t){return\"function\"==typeof t?t(n):t}export{q as useCallback,x as useContext,P as useDebugValue,y as useEffect,b as useErrorBoundary,g as useId,F as useImperativeHandle,_ as useLayoutEffect,T as useMemo,h as useReducer,A as useRef,d as useState};\n//# sourceMappingURL=hooks.module.js.map\n","import{Component as n,createElement as t,options as e,toChildArray as r,Fragment as u,render as o,hydrate as i,createContext as l,createRef as c,cloneElement as f}from\"preact\";export{Component,Fragment,createContext,createElement,createRef}from\"preact\";import{useState as a,useLayoutEffect as s,useEffect as h,useCallback as v,useContext as d,useDebugValue as m,useId as p,useImperativeHandle as y,useMemo as _,useReducer as b,useRef as S}from\"preact/hooks\";export*from\"preact/hooks\";function g(n,t){for(var e in t)n[e]=t[e];return n}function E(n,t){for(var e in n)if(\"__source\"!==e&&!(e in t))return!0;for(var r in t)if(\"__source\"!==r&&n[r]!==t[r])return!0;return!1}function C(n,t){var e=t(),r=a({t:{__:e,u:t}}),u=r[0].t,o=r[1];return s(function(){u.__=e,u.u=t,x(u)&&o({t:u})},[n,e,t]),h(function(){return x(u)&&o({t:u}),n(function(){x(u)&&o({t:u})})},[n]),e}function x(n){var t,e,r=n.u,u=n.__;try{var o=r();return!((t=u)===(e=o)&&(0!==t||1/t==1/e)||t!=t&&e!=e)}catch(n){return!0}}function R(n){n()}function w(n){return n}function k(){return[!1,R]}var I=s;function N(n,t){this.props=n,this.context=t}function M(n,e){function r(n){var t=this.props.ref,r=t==n.ref;return!r&&t&&(t.call?t(null):t.current=null),e?!e(this.props,n)||!r:E(this.props,n)}function u(e){return this.shouldComponentUpdate=r,t(n,e)}return u.displayName=\"Memo(\"+(n.displayName||n.name)+\")\",u.prototype.isReactComponent=!0,u.__f=!0,u.type=n,u}(N.prototype=new n).isPureReactComponent=!0,N.prototype.shouldComponentUpdate=function(n,t){return E(this.props,n)||E(this.state,t)};var T=e.__b;e.__b=function(n){n.type&&n.type.__f&&n.ref&&(n.props.ref=n.ref,n.ref=null),T&&T(n)};var A=\"undefined\"!=typeof Symbol&&Symbol.for&&Symbol.for(\"react.forward_ref\")||3911;function D(n){function t(t){var e=g({},t);return delete e.ref,n(e,t.ref||null)}return t.$$typeof=A,t.render=n,t.prototype.isReactComponent=t.__f=!0,t.displayName=\"ForwardRef(\"+(n.displayName||n.name)+\")\",t}var L=function(n,t){return null==n?null:r(r(n).map(t))},O={map:L,forEach:L,count:function(n){return n?r(n).length:0},only:function(n){var t=r(n);if(1!==t.length)throw\"Children.only\";return t[0]},toArray:r},F=e.__e;e.__e=function(n,t,e,r){if(n.then)for(var u,o=t;o=o.__;)if((u=o.__c)&&u.__c)return null==t.__e&&(t.__e=e.__e,t.__k=e.__k),u.__c(n,t);F(n,t,e,r)};var U=e.unmount;function V(n,t,e){return n&&(n.__c&&n.__c.__H&&(n.__c.__H.__.forEach(function(n){\"function\"==typeof n.__c&&n.__c()}),n.__c.__H=null),null!=(n=g({},n)).__c&&(n.__c.__P===e&&(n.__c.__P=t),n.__c.__e=!0,n.__c=null),n.__k=n.__k&&n.__k.map(function(n){return V(n,t,e)})),n}function W(n,t,e){return n&&e&&(n.__v=null,n.__k=n.__k&&n.__k.map(function(n){return W(n,t,e)}),n.__c&&n.__c.__P===t&&(n.__e&&e.appendChild(n.__e),n.__c.__e=!0,n.__c.__P=e)),n}function P(){this.__u=0,this.o=null,this.__b=null}function j(n){var t=n.__.__c;return t&&t.__a&&t.__a(n)}function z(n){var e,r,u;function o(o){if(e||(e=n()).then(function(n){r=n.default||n},function(n){u=n}),u)throw u;if(!r)throw e;return t(r,o)}return o.displayName=\"Lazy\",o.__f=!0,o}function B(){this.i=null,this.l=null}e.unmount=function(n){var t=n.__c;t&&t.__R&&t.__R(),t&&32&n.__u&&(n.type=null),U&&U(n)},(P.prototype=new n).__c=function(n,t){var e=t.__c,r=this;null==r.o&&(r.o=[]),r.o.push(e);var u=j(r.__v),o=!1,i=function(){o||(o=!0,e.__R=null,u?u(l):l())};e.__R=i;var l=function(){if(!--r.__u){if(r.state.__a){var n=r.state.__a;r.__v.__k[0]=W(n,n.__c.__P,n.__c.__O)}var t;for(r.setState({__a:r.__b=null});t=r.o.pop();)t.forceUpdate()}};r.__u++||32&t.__u||r.setState({__a:r.__b=r.__v.__k[0]}),n.then(i,i)},P.prototype.componentWillUnmount=function(){this.o=[]},P.prototype.render=function(n,e){if(this.__b){if(this.__v.__k){var r=document.createElement(\"div\"),o=this.__v.__k[0].__c;this.__v.__k[0]=V(this.__b,r,o.__O=o.__P)}this.__b=null}var i=e.__a&&t(u,null,n.fallback);return i&&(i.__u&=-33),[t(u,null,e.__a?null:n.children),i]};var H=function(n,t,e){if(++e[1]===e[0]&&n.l.delete(t),n.props.revealOrder&&(\"t\"!==n.props.revealOrder[0]||!n.l.size))for(e=n.i;e;){for(;e.length>3;)e.pop()();if(e[1]<e[0])break;n.i=e=e[2]}};function Z(n){return this.getChildContext=function(){return n.context},n.children}function Y(n){var e=this,r=n.h;if(e.componentWillUnmount=function(){o(null,e.v),e.v=null,e.h=null},e.h&&e.h!==r&&e.componentWillUnmount(),!e.v){for(var u=e.__v;null!==u&&!u.__m&&null!==u.__;)u=u.__;e.h=r,e.v={nodeType:1,parentNode:r,childNodes:[],__k:{__m:u.__m},contains:function(){return!0},insertBefore:function(n,t){this.childNodes.push(n),e.h.insertBefore(n,t)},removeChild:function(n){this.childNodes.splice(this.childNodes.indexOf(n)>>>1,1),e.h.removeChild(n)}}}o(t(Z,{context:e.context},n.__v),e.v)}function $(n,e){var r=t(Y,{__v:n,h:e});return r.containerInfo=e,r}(B.prototype=new n).__a=function(n){var t=this,e=j(t.__v),r=t.l.get(n);return r[0]++,function(u){var o=function(){t.props.revealOrder?(r.push(u),H(t,n,r)):u()};e?e(o):o()}},B.prototype.render=function(n){this.i=null,this.l=new Map;var t=r(n.children);n.revealOrder&&\"b\"===n.revealOrder[0]&&t.reverse();for(var e=t.length;e--;)this.l.set(t[e],this.i=[1,0,this.i]);return n.children},B.prototype.componentDidUpdate=B.prototype.componentDidMount=function(){var n=this;this.l.forEach(function(t,e){H(n,e,t)})};var q=\"undefined\"!=typeof Symbol&&Symbol.for&&Symbol.for(\"react.element\")||60103,G=/^(?:accent|alignment|arabic|baseline|cap|clip(?!PathU)|color|dominant|fill|flood|font|glyph(?!R)|horiz|image(!S)|letter|lighting|marker(?!H|W|U)|overline|paint|pointer|shape|stop|strikethrough|stroke|text(?!L)|transform|underline|unicode|units|v|vector|vert|word|writing|x(?!C))[A-Z]/,J=/^on(Ani|Tra|Tou|BeforeInp|Compo)/,K=/[A-Z0-9]/g,Q=\"undefined\"!=typeof document,X=function(n){return(\"undefined\"!=typeof Symbol&&\"symbol\"==typeof Symbol()?/fil|che|rad/:/fil|che|ra/).test(n)};function nn(n,t,e){return null==t.__k&&(t.textContent=\"\"),o(n,t),\"function\"==typeof e&&e(),n?n.__c:null}function tn(n,t,e){return i(n,t),\"function\"==typeof e&&e(),n?n.__c:null}n.prototype.isReactComponent={},[\"componentWillMount\",\"componentWillReceiveProps\",\"componentWillUpdate\"].forEach(function(t){Object.defineProperty(n.prototype,t,{configurable:!0,get:function(){return this[\"UNSAFE_\"+t]},set:function(n){Object.defineProperty(this,t,{configurable:!0,writable:!0,value:n})}})});var en=e.event;function rn(){}function un(){return this.cancelBubble}function on(){return this.defaultPrevented}e.event=function(n){return en&&(n=en(n)),n.persist=rn,n.isPropagationStopped=un,n.isDefaultPrevented=on,n.nativeEvent=n};var ln,cn={enumerable:!1,configurable:!0,get:function(){return this.class}},fn=e.vnode;e.vnode=function(n){\"string\"==typeof n.type&&function(n){var t=n.props,e=n.type,u={},o=-1===e.indexOf(\"-\");for(var i in t){var l=t[i];if(!(\"value\"===i&&\"defaultValue\"in t&&null==l||Q&&\"children\"===i&&\"noscript\"===e||\"class\"===i||\"className\"===i)){var c=i.toLowerCase();\"defaultValue\"===i&&\"value\"in t&&null==t.value?i=\"value\":\"download\"===i&&!0===l?l=\"\":\"translate\"===c&&\"no\"===l?l=!1:\"o\"===c[0]&&\"n\"===c[1]?\"ondoubleclick\"===c?i=\"ondblclick\":\"onchange\"!==c||\"input\"!==e&&\"textarea\"!==e||X(t.type)?\"onfocus\"===c?i=\"onfocusin\":\"onblur\"===c?i=\"onfocusout\":J.test(i)&&(i=c):c=i=\"oninput\":o&&G.test(i)?i=i.replace(K,\"-$&\").toLowerCase():null===l&&(l=void 0),\"oninput\"===c&&u[i=c]&&(i=\"oninputCapture\"),u[i]=l}}\"select\"==e&&u.multiple&&Array.isArray(u.value)&&(u.value=r(t.children).forEach(function(n){n.props.selected=-1!=u.value.indexOf(n.props.value)})),\"select\"==e&&null!=u.defaultValue&&(u.value=r(t.children).forEach(function(n){n.props.selected=u.multiple?-1!=u.defaultValue.indexOf(n.props.value):u.defaultValue==n.props.value})),t.class&&!t.className?(u.class=t.class,Object.defineProperty(u,\"className\",cn)):(t.className&&!t.class||t.class&&t.className)&&(u.class=u.className=t.className),n.props=u}(n),n.$$typeof=q,fn&&fn(n)};var an=e.__r;e.__r=function(n){an&&an(n),ln=n.__c};var sn=e.diffed;e.diffed=function(n){sn&&sn(n);var t=n.props,e=n.__e;null!=e&&\"textarea\"===n.type&&\"value\"in t&&t.value!==e.value&&(e.value=null==t.value?\"\":t.value),ln=null};var hn={ReactCurrentDispatcher:{current:{readContext:function(n){return ln.__n[n.__c].props.value},useCallback:v,useContext:d,useDebugValue:m,useDeferredValue:w,useEffect:h,useId:p,useImperativeHandle:y,useInsertionEffect:I,useLayoutEffect:s,useMemo:_,useReducer:b,useRef:S,useState:a,useSyncExternalStore:C,useTransition:k}}},vn=\"18.3.1\";function dn(n){return t.bind(null,n)}function mn(n){return!!n&&n.$$typeof===q}function pn(n){return mn(n)&&n.type===u}function yn(n){return!!n&&!!n.displayName&&(\"string\"==typeof n.displayName||n.displayName instanceof String)&&n.displayName.startsWith(\"Memo(\")}function _n(n){return mn(n)?f.apply(null,arguments):n}function bn(n){return!!n.__k&&(o(null,n),!0)}function Sn(n){return n&&(n.base||1===n.nodeType&&n)||null}var gn=function(n,t){return n(t)},En=function(n,t){return n(t)},Cn=u,xn=mn,Rn={useState:a,useId:p,useReducer:b,useEffect:h,useLayoutEffect:s,useInsertionEffect:I,useTransition:k,useDeferredValue:w,useSyncExternalStore:C,startTransition:R,useRef:S,useImperativeHandle:y,useMemo:_,useCallback:v,useContext:d,useDebugValue:m,version:\"18.3.1\",Children:O,render:nn,hydrate:tn,unmountComponentAtNode:bn,createPortal:$,createElement:t,createContext:l,createFactory:dn,cloneElement:_n,createRef:c,Fragment:u,isValidElement:mn,isElement:xn,isFragment:pn,isMemo:yn,findDOMNode:Sn,Component:n,PureComponent:N,memo:M,forwardRef:D,flushSync:En,unstable_batchedUpdates:gn,StrictMode:Cn,Suspense:P,SuspenseList:B,lazy:z,__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED:hn};export{O as Children,N as PureComponent,Cn as StrictMode,P as Suspense,B as SuspenseList,hn as __SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED,_n as cloneElement,dn as createFactory,$ as createPortal,Rn as default,Sn as findDOMNode,En as flushSync,D as forwardRef,tn as hydrate,xn as isElement,pn as isFragment,yn as isMemo,mn as isValidElement,z as lazy,M as memo,nn as render,R as startTransition,bn as unmountComponentAtNode,gn as unstable_batchedUpdates,w as useDeferredValue,I as useInsertionEffect,C as useSyncExternalStore,k as useTransition,vn as version};\n//# sourceMappingURL=compat.module.js.map\n","import{options as r,Fragment as e}from\"preact\";export{Fragment}from\"preact\";var t=/[\"&<]/;function n(r){if(0===r.length||!1===t.test(r))return r;for(var e=0,n=0,o=\"\",f=\"\";n<r.length;n++){switch(r.charCodeAt(n)){case 34:f=\"&quot;\";break;case 38:f=\"&amp;\";break;case 60:f=\"&lt;\";break;default:continue}n!==e&&(o+=r.slice(e,n)),o+=f,e=n+1}return n!==e&&(o+=r.slice(e,n)),o}var o=/acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|itera/i,f=0,i=Array.isArray;function u(e,t,n,o,i,u){t||(t={});var a,c,p=t;if(\"ref\"in p)for(c in p={},t)\"ref\"==c?a=t[c]:p[c]=t[c];var l={type:e,props:p,key:n,ref:a,__k:null,__:null,__b:0,__e:null,__c:null,constructor:void 0,__v:--f,__i:-1,__u:0,__source:i,__self:u};if(\"function\"==typeof e&&(a=e.defaultProps))for(c in a)void 0===p[c]&&(p[c]=a[c]);return r.vnode&&r.vnode(l),l}function a(r){var t=u(e,{tpl:r,exprs:[].slice.call(arguments,1)});return t.key=t.__v,t}var c={},p=/[A-Z]/g;function l(e,t){if(r.attr){var f=r.attr(e,t);if(\"string\"==typeof f)return f}if(t=function(r){return null!==r&&\"object\"==typeof r&&\"function\"==typeof r.valueOf?r.valueOf():r}(t),\"ref\"===e||\"key\"===e)return\"\";if(\"style\"===e&&\"object\"==typeof t){var i=\"\";for(var u in t){var a=t[u];if(null!=a&&\"\"!==a){var l=\"-\"==u[0]?u:c[u]||(c[u]=u.replace(p,\"-$&\").toLowerCase()),s=\";\";\"number\"!=typeof a||l.startsWith(\"--\")||o.test(l)||(s=\"px;\"),i=i+l+\":\"+a+s}}return e+'=\"'+n(i)+'\"'}return null==t||!1===t||\"function\"==typeof t||\"object\"==typeof t?\"\":!0===t?e:e+'=\"'+n(\"\"+t)+'\"'}function s(r){if(null==r||\"boolean\"==typeof r||\"function\"==typeof r)return null;if(\"object\"==typeof r){if(void 0===r.constructor)return r;if(i(r)){for(var e=0;e<r.length;e++)r[e]=s(r[e]);return r}}return n(\"\"+r)}export{u as jsx,l as jsxAttr,u as jsxDEV,s as jsxEscape,a as jsxTemplate,u as jsxs};\n//# sourceMappingURL=jsxRuntime.module.js.map\n","import { slicedToArray as _slicedToArray, toConsumableArray as _toConsumableArray } from './_virtual/_rollupPluginBabelHelpers.mjs';\nimport React, { createContext, useState, useCallback, useMemo } from 'react';\nimport { jsxs, jsx } from 'react/jsx-runtime';\n\nvar OverlayContext = /*#__PURE__*/createContext(null);\n\nif (process.env.NODE_ENV !== 'production') {\n  OverlayContext.displayName = 'OverlayContext';\n}\n\nfunction OverlayProvider(_ref) {\n  var children = _ref.children;\n\n  var _useState = useState(new Map()),\n      _useState2 = _slicedToArray(_useState, 2),\n      overlayById = _useState2[0],\n      setOverlayById = _useState2[1];\n\n  var mount = useCallback(function (id, element) {\n    setOverlayById(function (overlayById) {\n      var cloned = new Map(overlayById);\n      cloned.set(id, element);\n      return cloned;\n    });\n  }, []);\n  var unmount = useCallback(function (id) {\n    setOverlayById(function (overlayById) {\n      var cloned = new Map(overlayById);\n      cloned[\"delete\"](id);\n      return cloned;\n    });\n  }, []);\n  var context = useMemo(function () {\n    return {\n      mount: mount,\n      unmount: unmount\n    };\n  }, [mount, unmount]);\n  return /*#__PURE__*/jsxs(OverlayContext.Provider, {\n    value: context,\n    children: [children, _toConsumableArray(overlayById.entries()).map(function (_ref2) {\n      var _ref3 = _slicedToArray(_ref2, 2),\n          id = _ref3[0],\n          element = _ref3[1];\n\n      return /*#__PURE__*/jsx(React.Fragment, {\n        children: element\n      }, id);\n    })]\n  });\n}\n\nexport { OverlayContext, OverlayProvider };\n","import { slicedToArray as _slicedToArray } from './_virtual/_rollupPluginBabelHelpers.mjs';\nimport { forwardRef, useState, useCallback, useImperativeHandle, useEffect } from 'react';\nimport { jsx } from 'react/jsx-runtime';\n\nvar OverlayController = /*#__PURE__*/forwardRef(function OverlayController(_ref, ref) {\n  var OverlayElement = _ref.overlayElement,\n      onExit = _ref.onExit;\n\n  var _useState = useState(false),\n      _useState2 = _slicedToArray(_useState, 2),\n      isOpenOverlay = _useState2[0],\n      setIsOpenOverlay = _useState2[1];\n\n  var handleOverlayClose = useCallback(function () {\n    return setIsOpenOverlay(false);\n  }, []);\n  useImperativeHandle(ref, function () {\n    return {\n      close: handleOverlayClose\n    };\n  }, [handleOverlayClose]);\n  useEffect(function () {\n    // NOTE: requestAnimationFrame이 없으면 가끔 Open 애니메이션이 실행되지 않는다.\n    requestAnimationFrame(function () {\n      setIsOpenOverlay(true);\n    });\n  }, []);\n  return /*#__PURE__*/jsx(OverlayElement, {\n    isOpen: isOpenOverlay,\n    close: handleOverlayClose,\n    exit: onExit\n  });\n});\n\nexport { OverlayController };\n","import { slicedToArray as _slicedToArray } from './_virtual/_rollupPluginBabelHelpers.mjs';\nimport { useContext, useState, useRef, useEffect, useMemo } from 'react';\nimport { OverlayContext } from './OverlayProvider.mjs';\nimport { OverlayController } from './OverlayController.mjs';\nimport { jsx } from 'react/jsx-runtime';\n\nvar elementId = 1;\nfunction useOverlay() {\n  var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n      _ref$exitOnUnmount = _ref.exitOnUnmount,\n      exitOnUnmount = _ref$exitOnUnmount === void 0 ? true : _ref$exitOnUnmount;\n\n  var context = useContext(OverlayContext);\n\n  if (context == null) {\n    throw new Error('useOverlay is only available within OverlayProvider.');\n  }\n\n  var mount = context.mount,\n      unmount = context.unmount;\n\n  var _useState = useState(function () {\n    return String(elementId++);\n  }),\n      _useState2 = _slicedToArray(_useState, 1),\n      id = _useState2[0];\n\n  var overlayRef = useRef(null);\n  useEffect(function () {\n    return function () {\n      if (exitOnUnmount) {\n        unmount(id);\n      }\n    };\n  }, [exitOnUnmount, id, unmount]);\n  return useMemo(function () {\n    return {\n      open: function open(overlayElement) {\n        mount(id, /*#__PURE__*/jsx(OverlayController // NOTE: state should be reset every time we open an overlay\n        , {\n          ref: overlayRef,\n          overlayElement: overlayElement,\n          onExit: function onExit() {\n            unmount(id);\n          }\n        }, Date.now()));\n      },\n      close: function close() {\n        var _overlayRef$current;\n\n        (_overlayRef$current = overlayRef.current) === null || _overlayRef$current === void 0 ? void 0 : _overlayRef$current.close();\n      },\n      exit: function exit() {\n        unmount(id);\n      }\n    };\n  }, [id, mount, unmount]);\n}\n\nexport { useOverlay };\n","const isPromise = promise => typeof promise === 'object' && typeof promise.then === 'function';\n\nconst globalCache = [];\n\nfunction shallowEqualArrays(arrA, arrB, equal = (a, b) => a === b) {\n  if (arrA === arrB) return true;\n  if (!arrA || !arrB) return false;\n  const len = arrA.length;\n  if (arrB.length !== len) return false;\n\n  for (let i = 0; i < len; i++) if (!equal(arrA[i], arrB[i])) return false;\n\n  return true;\n}\n\nfunction query(fn, keys = null, preload = false, config = {}) {\n  // If no keys were given, the function is the key\n  if (keys === null) keys = [fn];\n\n  for (const entry of globalCache) {\n    // Find a match\n    if (shallowEqualArrays(keys, entry.keys, entry.equal)) {\n      // If we're pre-loading and the element is present, just return\n      if (preload) return undefined; // If an error occurred, throw\n\n      if (Object.prototype.hasOwnProperty.call(entry, 'error')) throw entry.error; // If a response was successful, return\n\n      if (Object.prototype.hasOwnProperty.call(entry, 'response')) {\n        if (config.lifespan && config.lifespan > 0) {\n          if (entry.timeout) clearTimeout(entry.timeout);\n          entry.timeout = setTimeout(entry.remove, config.lifespan);\n        }\n\n        return entry.response;\n      } // If the promise is still unresolved, throw\n\n\n      if (!preload) throw entry.promise;\n    }\n  } // The request is new or has changed.\n\n\n  const entry = {\n    keys,\n    equal: config.equal,\n    remove: () => {\n      const index = globalCache.indexOf(entry);\n      if (index !== -1) globalCache.splice(index, 1);\n    },\n    promise: // Execute the promise\n    (isPromise(fn) ? fn : fn(...keys) // When it resolves, store its value\n    ).then(response => {\n      entry.response = response; // Remove the entry in time if a lifespan was given\n\n      if (config.lifespan && config.lifespan > 0) {\n        entry.timeout = setTimeout(entry.remove, config.lifespan);\n      }\n    }) // Store caught errors, they will be thrown in the render-phase to bubble into an error-bound\n    .catch(error => entry.error = error)\n  }; // Register the entry\n\n  globalCache.push(entry); // And throw the promise, this yields control back to React\n\n  if (!preload) throw entry.promise;\n  return undefined;\n}\n\nconst suspend = (fn, keys, config) => query(fn, keys, false, config);\n\nconst preload = (fn, keys, config) => void query(fn, keys, true, config);\n\nconst peek = keys => {\n  var _globalCache$find;\n\n  return (_globalCache$find = globalCache.find(entry => shallowEqualArrays(keys, entry.keys, entry.equal))) == null ? void 0 : _globalCache$find.response;\n};\n\nconst clear = keys => {\n  if (keys === undefined || keys.length === 0) globalCache.splice(0, globalCache.length);else {\n    const entry = globalCache.find(entry => shallowEqualArrays(keys, entry.keys, entry.equal));\n    if (entry) entry.remove();\n  }\n};\n\nexport { clear, peek, preload, suspend };\n","// src/patterns.json\nvar patterns_default = [\n  \" daum[ /]\",\n  \" deusu/\",\n  \"(?:^|[^g])news(?!sapphire)\",\n  \"(?<! (?:channel/|google/))google(?!(app|/google| pixel))\",\n  \"(?<! cu)bots?(?:\\\\b|_)\",\n  \"(?<!(?:lib))http\",\n  \"(?<![hg]m)score\",\n  \"(?<!cam)scan\",\n  \"@[a-z][\\\\w-]+\\\\.\",\n  \"\\\\(\\\\)\",\n  \"\\\\.com\\\\b\",\n  \"\\\\btime/\",\n  \"\\\\|\",\n  \"^<\",\n  \"^[\\\\w \\\\.\\\\-\\\\(?:\\\\):%]+(?:/v?\\\\d+(?:\\\\.\\\\d+)?(?:\\\\.\\\\d{1,10})*?)?(?:,|$)\",\n  \"^[^ ]{50,}$\",\n  \"^\\\\d+\\\\b\",\n  \"^\\\\w*search\\\\b\",\n  \"^\\\\w+/[\\\\w\\\\(\\\\)]*$\",\n  \"^active\",\n  \"^ad muncher\",\n  \"^amaya\",\n  \"^avsdevicesdk/\",\n  \"^azure\",\n  \"^biglotron\",\n  \"^bot\",\n  \"^bw/\",\n  \"^clamav[ /]\",\n  \"^client/\",\n  \"^cobweb/\",\n  \"^custom\",\n  \"^ddg[_-]android\",\n  \"^discourse\",\n  \"^dispatch/\\\\d\",\n  \"^downcast/\",\n  \"^duckduckgo\",\n  \"^email\",\n  \"^facebook\",\n  \"^getright/\",\n  \"^gozilla/\",\n  \"^hobbit\",\n  \"^hotzonu\",\n  \"^hwcdn/\",\n  \"^igetter/\",\n  \"^jeode/\",\n  \"^jetty/\",\n  \"^jigsaw\",\n  \"^microsoft bits\",\n  \"^movabletype\",\n  \"^mozilla/\\\\d\\\\.\\\\d\\\\s[\\\\w\\\\.-]+$\",\n  \"^mozilla/\\\\d\\\\.\\\\d\\\\s\\\\(compatible;?(?:\\\\s\\\\w+\\\\/\\\\d+\\\\.\\\\d+)?\\\\)$\",\n  \"^navermailapp\",\n  \"^netsurf\",\n  \"^offline\",\n  \"^openai/\",\n  \"^owler\",\n  \"^php\",\n  \"^postman\",\n  \"^python\",\n  \"^rank\",\n  \"^read\",\n  \"^reed\",\n  \"^rest\",\n  \"^rss\",\n  \"^snapchat\",\n  \"^space bison\",\n  \"^svn\",\n  \"^swcd \",\n  \"^taringa\",\n  \"^thumbor/\",\n  \"^track\",\n  \"^w3c\",\n  \"^webbandit/\",\n  \"^webcopier\",\n  \"^wget\",\n  \"^whatsapp\",\n  \"^wordpress\",\n  \"^xenu link sleuth\",\n  \"^yahoo\",\n  \"^yandex\",\n  \"^zdm/\\\\d\",\n  \"^zoom marketplace/\",\n  \"agent\",\n  \"analyzer\",\n  \"archive\",\n  \"ask jeeves/teoma\",\n  \"audit\",\n  \"bit\\\\.ly/\",\n  \"bluecoat drtr\",\n  \"browsex\",\n  \"burpcollaborator\",\n  \"capture\",\n  \"catch\",\n  \"check\\\\b\",\n  \"checker\",\n  \"chrome-lighthouse\",\n  \"chromeframe\",\n  \"classifier\",\n  \"cloudflare\",\n  \"convertify\",\n  \"crawl\",\n  \"cypress/\",\n  \"dareboost\",\n  \"datanyze\",\n  \"dejaclick\",\n  \"detect\",\n  \"dmbrowser\",\n  \"download\",\n  \"evc-batch/\",\n  \"exaleadcloudview\",\n  \"feed\",\n  \"fetcher\",\n  \"firephp\",\n  \"functionize\",\n  \"grab\",\n  \"headless\",\n  \"httrack\",\n  \"hubspot marketing grader\",\n  \"hydra\",\n  \"ibisbrowser\",\n  \"infrawatch\",\n  \"insight\",\n  \"inspect\",\n  \"iplabel\",\n  \"java(?!;)\",\n  \"library\",\n  \"linkcheck\",\n  \"mail\\\\.ru/\",\n  \"manager\",\n  \"measure\",\n  \"neustar wpm\",\n  \"node\",\n  \"nutch\",\n  \"offbyone\",\n  \"onetrust\",\n  \"optimize\",\n  \"pageburst\",\n  \"pagespeed\",\n  \"parser\",\n  \"perl\",\n  \"phantomjs\",\n  \"pingdom\",\n  \"powermarks\",\n  \"preview\",\n  \"proxy\",\n  \"ptst[ /]\\\\d\",\n  \"retriever\",\n  \"rexx;\",\n  \"rigor\",\n  \"rss\\\\b\",\n  \"scrape\",\n  \"server\",\n  \"sogou\",\n  \"sparkler/\",\n  \"speedcurve\",\n  \"spider\",\n  \"splash\",\n  \"statuscake\",\n  \"supercleaner\",\n  \"synapse\",\n  \"synthetic\",\n  \"tools\",\n  \"torrent\",\n  \"transcoder\",\n  \"url\",\n  \"validator\",\n  \"virtuoso\",\n  \"wappalyzer\",\n  \"webglance\",\n  \"webkit2png\",\n  \"whatcms/\",\n  \"xtate/\"\n];\n\n// src/pattern.ts\nvar fullPattern = \" daum[ /]| deusu/|(?:^|[^g])news(?!sapphire)|(?<! (?:channel/|google/))google(?!(app|/google| pixel))|(?<! cu)bots?(?:\\\\b|_)|(?<!(?:lib))http|(?<![hg]m)score|(?<!cam)scan|@[a-z][\\\\w-]+\\\\.|\\\\(\\\\)|\\\\.com\\\\b|\\\\btime/|\\\\||^<|^[\\\\w \\\\.\\\\-\\\\(?:\\\\):%]+(?:/v?\\\\d+(?:\\\\.\\\\d+)?(?:\\\\.\\\\d{1,10})*?)?(?:,|$)|^[^ ]{50,}$|^\\\\d+\\\\b|^\\\\w*search\\\\b|^\\\\w+/[\\\\w\\\\(\\\\)]*$|^active|^ad muncher|^amaya|^avsdevicesdk/|^azure|^biglotron|^bot|^bw/|^clamav[ /]|^client/|^cobweb/|^custom|^ddg[_-]android|^discourse|^dispatch/\\\\d|^downcast/|^duckduckgo|^email|^facebook|^getright/|^gozilla/|^hobbit|^hotzonu|^hwcdn/|^igetter/|^jeode/|^jetty/|^jigsaw|^microsoft bits|^movabletype|^mozilla/\\\\d\\\\.\\\\d\\\\s[\\\\w\\\\.-]+$|^mozilla/\\\\d\\\\.\\\\d\\\\s\\\\(compatible;?(?:\\\\s\\\\w+\\\\/\\\\d+\\\\.\\\\d+)?\\\\)$|^navermailapp|^netsurf|^offline|^openai/|^owler|^php|^postman|^python|^rank|^read|^reed|^rest|^rss|^snapchat|^space bison|^svn|^swcd |^taringa|^thumbor/|^track|^w3c|^webbandit/|^webcopier|^wget|^whatsapp|^wordpress|^xenu link sleuth|^yahoo|^yandex|^zdm/\\\\d|^zoom marketplace/|agent|analyzer|archive|ask jeeves/teoma|audit|bit\\\\.ly/|bluecoat drtr|browsex|burpcollaborator|capture|catch|check\\\\b|checker|chrome-lighthouse|chromeframe|classifier|cloudflare|convertify|crawl|cypress/|dareboost|datanyze|dejaclick|detect|dmbrowser|download|evc-batch/|exaleadcloudview|feed|fetcher|firephp|functionize|grab|headless|httrack|hubspot marketing grader|hydra|ibisbrowser|infrawatch|insight|inspect|iplabel|java(?!;)|library|linkcheck|mail\\\\.ru/|manager|measure|neustar wpm|node|nutch|offbyone|onetrust|optimize|pageburst|pagespeed|parser|perl|phantomjs|pingdom|powermarks|preview|proxy|ptst[ /]\\\\d|retriever|rexx;|rigor|rss\\\\b|scrape|server|sogou|sparkler/|speedcurve|spider|splash|statuscake|supercleaner|synapse|synthetic|tools|torrent|transcoder|url|validator|virtuoso|wappalyzer|webglance|webkit2png|whatcms/|xtate/\";\n\n// src/index.ts\nvar naivePattern = /bot|crawl|http|lighthouse|scan|search|spider/i;\nvar pattern;\nfunction getPattern() {\n  if (pattern instanceof RegExp) {\n    return pattern;\n  }\n  try {\n    pattern = new RegExp(fullPattern, \"i\");\n  } catch (error) {\n    pattern = naivePattern;\n  }\n  return pattern;\n}\nvar list = patterns_default;\nvar isbotNaive = (userAgent) => Boolean(userAgent) && naivePattern.test(userAgent);\nfunction isbot(userAgent) {\n  return Boolean(userAgent) && getPattern().test(userAgent);\n}\nvar createIsbot = (customPattern) => (userAgent) => Boolean(userAgent) && customPattern.test(userAgent);\nvar createIsbotFromList = (list2) => {\n  const pattern2 = new RegExp(list2.join(\"|\"), \"i\");\n  return (userAgent) => Boolean(userAgent) && pattern2.test(userAgent);\n};\nvar isbotMatch = (userAgent) => {\n  var _a, _b;\n  return (_b = (_a = userAgent == null ? void 0 : userAgent.match(getPattern())) == null ? void 0 : _a[0]) != null ? _b : null;\n};\nvar isbotMatches = (userAgent) => list.map((part) => {\n  var _a;\n  return (_a = userAgent == null ? void 0 : userAgent.match(new RegExp(part, \"i\"))) == null ? void 0 : _a[0];\n}).filter(Boolean);\nvar isbotPattern = (userAgent) => {\n  var _a;\n  return userAgent ? (_a = list.find((pattern2) => new RegExp(pattern2, \"i\").test(userAgent))) != null ? _a : null : null;\n};\nvar isbotPatterns = (userAgent) => userAgent ? list.filter((pattern2) => new RegExp(pattern2, \"i\").test(userAgent)) : [];\nexport {\n  createIsbot,\n  createIsbotFromList,\n  getPattern,\n  isbot,\n  isbotMatch,\n  isbotMatches,\n  isbotNaive,\n  isbotPattern,\n  isbotPatterns,\n  list\n};\n","'use strict';\n\nvar has = Object.prototype.hasOwnProperty\n  , prefix = '~';\n\n/**\n * Constructor to create a storage for our `EE` objects.\n * An `Events` instance is a plain object whose properties are event names.\n *\n * @constructor\n * @private\n */\nfunction Events() {}\n\n//\n// We try to not inherit from `Object.prototype`. In some engines creating an\n// instance in this way is faster than calling `Object.create(null)` directly.\n// If `Object.create(null)` is not supported we prefix the event names with a\n// character to make sure that the built-in object properties are not\n// overridden or used as an attack vector.\n//\nif (Object.create) {\n  Events.prototype = Object.create(null);\n\n  //\n  // This hack is needed because the `__proto__` property is still inherited in\n  // some old browsers like Android 4, iPhone 5.1, Opera 11 and Safari 5.\n  //\n  if (!new Events().__proto__) prefix = false;\n}\n\n/**\n * Representation of a single event listener.\n *\n * @param {Function} fn The listener function.\n * @param {*} context The context to invoke the listener with.\n * @param {Boolean} [once=false] Specify if the listener is a one-time listener.\n * @constructor\n * @private\n */\nfunction EE(fn, context, once) {\n  this.fn = fn;\n  this.context = context;\n  this.once = once || false;\n}\n\n/**\n * Add a listener for a given event.\n *\n * @param {EventEmitter} emitter Reference to the `EventEmitter` instance.\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn The listener function.\n * @param {*} context The context to invoke the listener with.\n * @param {Boolean} once Specify if the listener is a one-time listener.\n * @returns {EventEmitter}\n * @private\n */\nfunction addListener(emitter, event, fn, context, once) {\n  if (typeof fn !== 'function') {\n    throw new TypeError('The listener must be a function');\n  }\n\n  var listener = new EE(fn, context || emitter, once)\n    , evt = prefix ? prefix + event : event;\n\n  if (!emitter._events[evt]) emitter._events[evt] = listener, emitter._eventsCount++;\n  else if (!emitter._events[evt].fn) emitter._events[evt].push(listener);\n  else emitter._events[evt] = [emitter._events[evt], listener];\n\n  return emitter;\n}\n\n/**\n * Clear event by name.\n *\n * @param {EventEmitter} emitter Reference to the `EventEmitter` instance.\n * @param {(String|Symbol)} evt The Event name.\n * @private\n */\nfunction clearEvent(emitter, evt) {\n  if (--emitter._eventsCount === 0) emitter._events = new Events();\n  else delete emitter._events[evt];\n}\n\n/**\n * Minimal `EventEmitter` interface that is molded against the Node.js\n * `EventEmitter` interface.\n *\n * @constructor\n * @public\n */\nfunction EventEmitter() {\n  this._events = new Events();\n  this._eventsCount = 0;\n}\n\n/**\n * Return an array listing the events for which the emitter has registered\n * listeners.\n *\n * @returns {Array}\n * @public\n */\nEventEmitter.prototype.eventNames = function eventNames() {\n  var names = []\n    , events\n    , name;\n\n  if (this._eventsCount === 0) return names;\n\n  for (name in (events = this._events)) {\n    if (has.call(events, name)) names.push(prefix ? name.slice(1) : name);\n  }\n\n  if (Object.getOwnPropertySymbols) {\n    return names.concat(Object.getOwnPropertySymbols(events));\n  }\n\n  return names;\n};\n\n/**\n * Return the listeners registered for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @returns {Array} The registered listeners.\n * @public\n */\nEventEmitter.prototype.listeners = function listeners(event) {\n  var evt = prefix ? prefix + event : event\n    , handlers = this._events[evt];\n\n  if (!handlers) return [];\n  if (handlers.fn) return [handlers.fn];\n\n  for (var i = 0, l = handlers.length, ee = new Array(l); i < l; i++) {\n    ee[i] = handlers[i].fn;\n  }\n\n  return ee;\n};\n\n/**\n * Return the number of listeners listening to a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @returns {Number} The number of listeners.\n * @public\n */\nEventEmitter.prototype.listenerCount = function listenerCount(event) {\n  var evt = prefix ? prefix + event : event\n    , listeners = this._events[evt];\n\n  if (!listeners) return 0;\n  if (listeners.fn) return 1;\n  return listeners.length;\n};\n\n/**\n * Calls each of the listeners registered for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @returns {Boolean} `true` if the event had listeners, else `false`.\n * @public\n */\nEventEmitter.prototype.emit = function emit(event, a1, a2, a3, a4, a5) {\n  var evt = prefix ? prefix + event : event;\n\n  if (!this._events[evt]) return false;\n\n  var listeners = this._events[evt]\n    , len = arguments.length\n    , args\n    , i;\n\n  if (listeners.fn) {\n    if (listeners.once) this.removeListener(event, listeners.fn, undefined, true);\n\n    switch (len) {\n      case 1: return listeners.fn.call(listeners.context), true;\n      case 2: return listeners.fn.call(listeners.context, a1), true;\n      case 3: return listeners.fn.call(listeners.context, a1, a2), true;\n      case 4: return listeners.fn.call(listeners.context, a1, a2, a3), true;\n      case 5: return listeners.fn.call(listeners.context, a1, a2, a3, a4), true;\n      case 6: return listeners.fn.call(listeners.context, a1, a2, a3, a4, a5), true;\n    }\n\n    for (i = 1, args = new Array(len -1); i < len; i++) {\n      args[i - 1] = arguments[i];\n    }\n\n    listeners.fn.apply(listeners.context, args);\n  } else {\n    var length = listeners.length\n      , j;\n\n    for (i = 0; i < length; i++) {\n      if (listeners[i].once) this.removeListener(event, listeners[i].fn, undefined, true);\n\n      switch (len) {\n        case 1: listeners[i].fn.call(listeners[i].context); break;\n        case 2: listeners[i].fn.call(listeners[i].context, a1); break;\n        case 3: listeners[i].fn.call(listeners[i].context, a1, a2); break;\n        case 4: listeners[i].fn.call(listeners[i].context, a1, a2, a3); break;\n        default:\n          if (!args) for (j = 1, args = new Array(len -1); j < len; j++) {\n            args[j - 1] = arguments[j];\n          }\n\n          listeners[i].fn.apply(listeners[i].context, args);\n      }\n    }\n  }\n\n  return true;\n};\n\n/**\n * Add a listener for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn The listener function.\n * @param {*} [context=this] The context to invoke the listener with.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.on = function on(event, fn, context) {\n  return addListener(this, event, fn, context, false);\n};\n\n/**\n * Add a one-time listener for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn The listener function.\n * @param {*} [context=this] The context to invoke the listener with.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.once = function once(event, fn, context) {\n  return addListener(this, event, fn, context, true);\n};\n\n/**\n * Remove the listeners of a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn Only remove the listeners that match this function.\n * @param {*} context Only remove the listeners that have this context.\n * @param {Boolean} once Only remove one-time listeners.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.removeListener = function removeListener(event, fn, context, once) {\n  var evt = prefix ? prefix + event : event;\n\n  if (!this._events[evt]) return this;\n  if (!fn) {\n    clearEvent(this, evt);\n    return this;\n  }\n\n  var listeners = this._events[evt];\n\n  if (listeners.fn) {\n    if (\n      listeners.fn === fn &&\n      (!once || listeners.once) &&\n      (!context || listeners.context === context)\n    ) {\n      clearEvent(this, evt);\n    }\n  } else {\n    for (var i = 0, events = [], length = listeners.length; i < length; i++) {\n      if (\n        listeners[i].fn !== fn ||\n        (once && !listeners[i].once) ||\n        (context && listeners[i].context !== context)\n      ) {\n        events.push(listeners[i]);\n      }\n    }\n\n    //\n    // Reset the array, or remove it completely if we have no more listeners.\n    //\n    if (events.length) this._events[evt] = events.length === 1 ? events[0] : events;\n    else clearEvent(this, evt);\n  }\n\n  return this;\n};\n\n/**\n * Remove all listeners, or those of the specified event.\n *\n * @param {(String|Symbol)} [event] The event name.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.removeAllListeners = function removeAllListeners(event) {\n  var evt;\n\n  if (event) {\n    evt = prefix ? prefix + event : event;\n    if (this._events[evt]) clearEvent(this, evt);\n  } else {\n    this._events = new Events();\n    this._eventsCount = 0;\n  }\n\n  return this;\n};\n\n//\n// Alias methods names because people roll like that.\n//\nEventEmitter.prototype.off = EventEmitter.prototype.removeListener;\nEventEmitter.prototype.addListener = EventEmitter.prototype.on;\n\n//\n// Expose the prefix.\n//\nEventEmitter.prefixed = prefix;\n\n//\n// Allow `EventEmitter` to be imported as module namespace.\n//\nEventEmitter.EventEmitter = EventEmitter;\n\n//\n// Expose the module.\n//\nif ('undefined' !== typeof module) {\n  module.exports = EventEmitter;\n}\n","'use strict';\nmodule.exports = (promise, onFinally) => {\n\tonFinally = onFinally || (() => {});\n\n\treturn promise.then(\n\t\tval => new Promise(resolve => {\n\t\t\tresolve(onFinally());\n\t\t}).then(() => val),\n\t\terr => new Promise(resolve => {\n\t\t\tresolve(onFinally());\n\t\t}).then(() => {\n\t\t\tthrow err;\n\t\t})\n\t);\n};\n","'use strict';\n\nconst pFinally = require('p-finally');\n\nclass TimeoutError extends Error {\n\tconstructor(message) {\n\t\tsuper(message);\n\t\tthis.name = 'TimeoutError';\n\t}\n}\n\nconst pTimeout = (promise, milliseconds, fallback) => new Promise((resolve, reject) => {\n\tif (typeof milliseconds !== 'number' || milliseconds < 0) {\n\t\tthrow new TypeError('Expected `milliseconds` to be a positive number');\n\t}\n\n\tif (milliseconds === Infinity) {\n\t\tresolve(promise);\n\t\treturn;\n\t}\n\n\tconst timer = setTimeout(() => {\n\t\tif (typeof fallback === 'function') {\n\t\t\ttry {\n\t\t\t\tresolve(fallback());\n\t\t\t} catch (error) {\n\t\t\t\treject(error);\n\t\t\t}\n\n\t\t\treturn;\n\t\t}\n\n\t\tconst message = typeof fallback === 'string' ? fallback : `Promise timed out after ${milliseconds} milliseconds`;\n\t\tconst timeoutError = fallback instanceof Error ? fallback : new TimeoutError(message);\n\n\t\tif (typeof promise.cancel === 'function') {\n\t\t\tpromise.cancel();\n\t\t}\n\n\t\treject(timeoutError);\n\t}, milliseconds);\n\n\t// TODO: Use native `finally` keyword when targeting Node.js 10\n\tpFinally(\n\t\t// eslint-disable-next-line promise/prefer-await-to-then\n\t\tpromise.then(resolve, reject),\n\t\t() => {\n\t\t\tclearTimeout(timer);\n\t\t}\n\t);\n});\n\nmodule.exports = pTimeout;\n// TODO: Remove this for the next major release\nmodule.exports.default = pTimeout;\n\nmodule.exports.TimeoutError = TimeoutError;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n// Port of lower_bound from https://en.cppreference.com/w/cpp/algorithm/lower_bound\n// Used to compute insertion index to keep queue sorted after insertion\nfunction lowerBound(array, value, comparator) {\n    let first = 0;\n    let count = array.length;\n    while (count > 0) {\n        const step = (count / 2) | 0;\n        let it = first + step;\n        if (comparator(array[it], value) <= 0) {\n            first = ++it;\n            count -= step + 1;\n        }\n        else {\n            count = step;\n        }\n    }\n    return first;\n}\nexports.default = lowerBound;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst lower_bound_1 = require(\"./lower-bound\");\nclass PriorityQueue {\n    constructor() {\n        this._queue = [];\n    }\n    enqueue(run, options) {\n        options = Object.assign({ priority: 0 }, options);\n        const element = {\n            priority: options.priority,\n            run\n        };\n        if (this.size && this._queue[this.size - 1].priority >= options.priority) {\n            this._queue.push(element);\n            return;\n        }\n        const index = lower_bound_1.default(this._queue, element, (a, b) => b.priority - a.priority);\n        this._queue.splice(index, 0, element);\n    }\n    dequeue() {\n        const item = this._queue.shift();\n        return item === null || item === void 0 ? void 0 : item.run;\n    }\n    filter(options) {\n        return this._queue.filter((element) => element.priority === options.priority).map((element) => element.run);\n    }\n    get size() {\n        return this._queue.length;\n    }\n}\nexports.default = PriorityQueue;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst EventEmitter = require(\"eventemitter3\");\nconst p_timeout_1 = require(\"p-timeout\");\nconst priority_queue_1 = require(\"./priority-queue\");\n// eslint-disable-next-line @typescript-eslint/no-empty-function\nconst empty = () => { };\nconst timeoutError = new p_timeout_1.TimeoutError();\n/**\nPromise queue with concurrency control.\n*/\nclass PQueue extends EventEmitter {\n    constructor(options) {\n        var _a, _b, _c, _d;\n        super();\n        this._intervalCount = 0;\n        this._intervalEnd = 0;\n        this._pendingCount = 0;\n        this._resolveEmpty = empty;\n        this._resolveIdle = empty;\n        // eslint-disable-next-line @typescript-eslint/consistent-type-assertions\n        options = Object.assign({ carryoverConcurrencyCount: false, intervalCap: Infinity, interval: 0, concurrency: Infinity, autoStart: true, queueClass: priority_queue_1.default }, options);\n        if (!(typeof options.intervalCap === 'number' && options.intervalCap >= 1)) {\n            throw new TypeError(`Expected \\`intervalCap\\` to be a number from 1 and up, got \\`${(_b = (_a = options.intervalCap) === null || _a === void 0 ? void 0 : _a.toString()) !== null && _b !== void 0 ? _b : ''}\\` (${typeof options.intervalCap})`);\n        }\n        if (options.interval === undefined || !(Number.isFinite(options.interval) && options.interval >= 0)) {\n            throw new TypeError(`Expected \\`interval\\` to be a finite number >= 0, got \\`${(_d = (_c = options.interval) === null || _c === void 0 ? void 0 : _c.toString()) !== null && _d !== void 0 ? _d : ''}\\` (${typeof options.interval})`);\n        }\n        this._carryoverConcurrencyCount = options.carryoverConcurrencyCount;\n        this._isIntervalIgnored = options.intervalCap === Infinity || options.interval === 0;\n        this._intervalCap = options.intervalCap;\n        this._interval = options.interval;\n        this._queue = new options.queueClass();\n        this._queueClass = options.queueClass;\n        this.concurrency = options.concurrency;\n        this._timeout = options.timeout;\n        this._throwOnTimeout = options.throwOnTimeout === true;\n        this._isPaused = options.autoStart === false;\n    }\n    get _doesIntervalAllowAnother() {\n        return this._isIntervalIgnored || this._intervalCount < this._intervalCap;\n    }\n    get _doesConcurrentAllowAnother() {\n        return this._pendingCount < this._concurrency;\n    }\n    _next() {\n        this._pendingCount--;\n        this._tryToStartAnother();\n        this.emit('next');\n    }\n    _resolvePromises() {\n        this._resolveEmpty();\n        this._resolveEmpty = empty;\n        if (this._pendingCount === 0) {\n            this._resolveIdle();\n            this._resolveIdle = empty;\n            this.emit('idle');\n        }\n    }\n    _onResumeInterval() {\n        this._onInterval();\n        this._initializeIntervalIfNeeded();\n        this._timeoutId = undefined;\n    }\n    _isIntervalPaused() {\n        const now = Date.now();\n        if (this._intervalId === undefined) {\n            const delay = this._intervalEnd - now;\n            if (delay < 0) {\n                // Act as the interval was done\n                // We don't need to resume it here because it will be resumed on line 160\n                this._intervalCount = (this._carryoverConcurrencyCount) ? this._pendingCount : 0;\n            }\n            else {\n                // Act as the interval is pending\n                if (this._timeoutId === undefined) {\n                    this._timeoutId = setTimeout(() => {\n                        this._onResumeInterval();\n                    }, delay);\n                }\n                return true;\n            }\n        }\n        return false;\n    }\n    _tryToStartAnother() {\n        if (this._queue.size === 0) {\n            // We can clear the interval (\"pause\")\n            // Because we can redo it later (\"resume\")\n            if (this._intervalId) {\n                clearInterval(this._intervalId);\n            }\n            this._intervalId = undefined;\n            this._resolvePromises();\n            return false;\n        }\n        if (!this._isPaused) {\n            const canInitializeInterval = !this._isIntervalPaused();\n            if (this._doesIntervalAllowAnother && this._doesConcurrentAllowAnother) {\n                const job = this._queue.dequeue();\n                if (!job) {\n                    return false;\n                }\n                this.emit('active');\n                job();\n                if (canInitializeInterval) {\n                    this._initializeIntervalIfNeeded();\n                }\n                return true;\n            }\n        }\n        return false;\n    }\n    _initializeIntervalIfNeeded() {\n        if (this._isIntervalIgnored || this._intervalId !== undefined) {\n            return;\n        }\n        this._intervalId = setInterval(() => {\n            this._onInterval();\n        }, this._interval);\n        this._intervalEnd = Date.now() + this._interval;\n    }\n    _onInterval() {\n        if (this._intervalCount === 0 && this._pendingCount === 0 && this._intervalId) {\n            clearInterval(this._intervalId);\n            this._intervalId = undefined;\n        }\n        this._intervalCount = this._carryoverConcurrencyCount ? this._pendingCount : 0;\n        this._processQueue();\n    }\n    /**\n    Executes all queued functions until it reaches the limit.\n    */\n    _processQueue() {\n        // eslint-disable-next-line no-empty\n        while (this._tryToStartAnother()) { }\n    }\n    get concurrency() {\n        return this._concurrency;\n    }\n    set concurrency(newConcurrency) {\n        if (!(typeof newConcurrency === 'number' && newConcurrency >= 1)) {\n            throw new TypeError(`Expected \\`concurrency\\` to be a number from 1 and up, got \\`${newConcurrency}\\` (${typeof newConcurrency})`);\n        }\n        this._concurrency = newConcurrency;\n        this._processQueue();\n    }\n    /**\n    Adds a sync or async task to the queue. Always returns a promise.\n    */\n    async add(fn, options = {}) {\n        return new Promise((resolve, reject) => {\n            const run = async () => {\n                this._pendingCount++;\n                this._intervalCount++;\n                try {\n                    const operation = (this._timeout === undefined && options.timeout === undefined) ? fn() : p_timeout_1.default(Promise.resolve(fn()), (options.timeout === undefined ? this._timeout : options.timeout), () => {\n                        if (options.throwOnTimeout === undefined ? this._throwOnTimeout : options.throwOnTimeout) {\n                            reject(timeoutError);\n                        }\n                        return undefined;\n                    });\n                    resolve(await operation);\n                }\n                catch (error) {\n                    reject(error);\n                }\n                this._next();\n            };\n            this._queue.enqueue(run, options);\n            this._tryToStartAnother();\n            this.emit('add');\n        });\n    }\n    /**\n    Same as `.add()`, but accepts an array of sync or async functions.\n\n    @returns A promise that resolves when all functions are resolved.\n    */\n    async addAll(functions, options) {\n        return Promise.all(functions.map(async (function_) => this.add(function_, options)));\n    }\n    /**\n    Start (or resume) executing enqueued tasks within concurrency limit. No need to call this if queue is not paused (via `options.autoStart = false` or by `.pause()` method.)\n    */\n    start() {\n        if (!this._isPaused) {\n            return this;\n        }\n        this._isPaused = false;\n        this._processQueue();\n        return this;\n    }\n    /**\n    Put queue execution on hold.\n    */\n    pause() {\n        this._isPaused = true;\n    }\n    /**\n    Clear the queue.\n    */\n    clear() {\n        this._queue = new this._queueClass();\n    }\n    /**\n    Can be called multiple times. Useful if you for example add additional items at a later time.\n\n    @returns A promise that settles when the queue becomes empty.\n    */\n    async onEmpty() {\n        // Instantly resolve if the queue is empty\n        if (this._queue.size === 0) {\n            return;\n        }\n        return new Promise(resolve => {\n            const existingResolve = this._resolveEmpty;\n            this._resolveEmpty = () => {\n                existingResolve();\n                resolve();\n            };\n        });\n    }\n    /**\n    The difference with `.onEmpty` is that `.onIdle` guarantees that all work from the queue has finished. `.onEmpty` merely signals that the queue is empty, but it could mean that some promises haven't completed yet.\n\n    @returns A promise that settles when the queue becomes empty, and all promises have completed; `queue.size === 0 && queue.pending === 0`.\n    */\n    async onIdle() {\n        // Instantly resolve if none pending and if nothing else is queued\n        if (this._pendingCount === 0 && this._queue.size === 0) {\n            return;\n        }\n        return new Promise(resolve => {\n            const existingResolve = this._resolveIdle;\n            this._resolveIdle = () => {\n                existingResolve();\n                resolve();\n            };\n        });\n    }\n    /**\n    Size of the queue.\n    */\n    get size() {\n        return this._queue.size;\n    }\n    /**\n    Size of the queue, filtered by the given options.\n\n    For example, this can be used to find the number of items remaining in the queue with a specific priority level.\n    */\n    sizeBy(options) {\n        // eslint-disable-next-line unicorn/no-fn-reference-in-iterator\n        return this._queue.filter(options).length;\n    }\n    /**\n    Number of pending promises.\n    */\n    get pending() {\n        return this._pendingCount;\n    }\n    /**\n    Whether the queue is currently paused.\n    */\n    get isPaused() {\n        return this._isPaused;\n    }\n    get timeout() {\n        return this._timeout;\n    }\n    /**\n    Set the timeout for future operations.\n    */\n    set timeout(milliseconds) {\n        this._timeout = milliseconds;\n    }\n}\nexports.default = PQueue;\n","export const asyncObjectMediator = async (obj: any) => {\n  const keys = Object.keys(obj)\n  const newObj: any = {}\n\n  for (let i = 0; i < keys.length; i++) {\n    const key = keys[i]\n    const value = obj[key]\n\n    if (value === null) {\n      continue\n    }\n\n    if (typeof value === 'function') {\n      newObj[key] = await value()\n    } else if (typeof value === 'object') {\n      newObj[key] = await asyncObjectMediator(value)\n    } else {\n      newObj[key] = value\n    }\n  }\n\n  return newObj\n}\n","import PQueue from 'p-queue'\n\nimport { asyncObjectMediator } from './mediator'\n\nexport type LoggerParams =\n  | Record<string, any>\n  | (() => Promise<Record<string, any>>)\n\nexport interface LoggerLinker {\n  init: () => Promise<void>\n\n  log: (message: string, params: Record<string, any>) => Promise<void>\n\n  flush: () => Promise<void>\n}\n\nexport class Logger<\n  T extends Record<string, LoggerLinker>,\n  LoggerOptions extends {\n    type?: keyof T\n  } = {\n    type?: keyof T\n  }\n> {\n  private _queue!: PQueue\n\n  private _linkers!: T\n\n  private _defaultLinker: keyof T | 'default' = 'default'\n\n  private _initResolver!: () => void\n\n  private _initPromise: Promise<void> | null = null\n\n  constructor(\n    options: {\n      linkers?: T\n      defaultLinker?: keyof T | 'default'\n      tiemout?: number\n    } = {}\n  ) {\n    this._linkers = options.linkers || ({} as T)\n\n    this._defaultLinker = options.defaultLinker || 'default'\n\n    this._queue = new PQueue({\n      concurrency: 1,\n      timeout: options.tiemout || 5000,\n    })\n\n    this._initPromise = new Promise((resolve) => {\n      this._initResolver = resolve\n    })\n  }\n\n  public async init() {\n    await Promise.all(\n      Object.values(this._linkers).map((linker: any) =>\n        typeof linker?.init === 'function'\n          ? linker.init().catch(() => { })\n          : Promise.resolve()\n      )\n    )\n\n    this._initResolver()\n  }\n\n  public async log(\n    message: string,\n    params: LoggerParams,\n    options: LoggerOptions\n  ): Promise<void>\n\n  public async log(\n    factory: () => Promise<{\n      eventName: string\n      params: LoggerParams\n    }>,\n    options: LoggerOptions\n  ): Promise<void>\n\n  public async log(\n    messageOrFactory:\n      | string\n      | (() => Promise<{\n        eventName: string\n        params: LoggerParams\n      }>),\n    originParamsOrOptions: LoggerParams | LoggerOptions,\n    originOptions?: LoggerOptions\n  ) {\n    await this._initPromise\n\n    try {\n      await this._queue.add(async () => {\n        try {\n          let message: string\n          let originParams: LoggerParams\n          let options: LoggerOptions\n\n          if (typeof messageOrFactory === 'function') {\n            const { eventName, params } = await messageOrFactory()\n            message = eventName\n            originParams = params\n            options = originParamsOrOptions as LoggerOptions\n          } else {\n            message = messageOrFactory\n            originParams = originParamsOrOptions as LoggerParams\n            options = originOptions || ({} as LoggerOptions)\n          }\n\n          const ensuredParams =\n            typeof originParams === 'function'\n              ? await originParams()\n              : originParams\n\n          const resolvedParams = await asyncObjectMediator(ensuredParams)\n\n          await this._linkers?.[options?.type || this._defaultLinker]?.log(\n            message,\n            resolvedParams\n          )\n        } catch (e) {\n          if (process.env.NODE_ENV === 'development') {\n            console.error('로깅 오류', e)\n          }\n          // do nothing\n        }\n      })\n    } catch (e) {\n      if (process.env.NODE_ENV === 'development') {\n        console.error('로깅 오류', e)\n      }\n      // Swallow queue-level errors (e.g., timeout)\n    }\n  }\n\n  public async flush() {\n    await this._queue.onIdle()\n\n    await Promise.all(\n      Object.values(this._linkers).map((linker) => linker.flush())\n    )\n  }\n}\n","/******************************************************************************\nCopyright (c) Microsoft Corporation.\n\nPermission to use, copy, modify, and/or distribute this software for any\npurpose with or without fee is hereby granted.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\nPERFORMANCE OF THIS SOFTWARE.\n***************************************************************************** */\n/* global Reflect, Promise, SuppressedError, Symbol, Iterator */\n\nvar extendStatics = function(d, b) {\n  extendStatics = Object.setPrototypeOf ||\n      ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n      function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n  return extendStatics(d, b);\n};\n\nexport function __extends(d, b) {\n  if (typeof b !== \"function\" && b !== null)\n      throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n  extendStatics(d, b);\n  function __() { this.constructor = d; }\n  d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n}\n\nexport var __assign = function() {\n  __assign = Object.assign || function __assign(t) {\n      for (var s, i = 1, n = arguments.length; i < n; i++) {\n          s = arguments[i];\n          for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n      }\n      return t;\n  }\n  return __assign.apply(this, arguments);\n}\n\nexport function __rest(s, e) {\n  var t = {};\n  for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n      t[p] = s[p];\n  if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n      for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n          if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n              t[p[i]] = s[p[i]];\n      }\n  return t;\n}\n\nexport function __decorate(decorators, target, key, desc) {\n  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n  if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n  else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n  return c > 3 && r && Object.defineProperty(target, key, r), r;\n}\n\nexport function __param(paramIndex, decorator) {\n  return function (target, key) { decorator(target, key, paramIndex); }\n}\n\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\n  function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\n  var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\n  var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\n  var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\n  var _, done = false;\n  for (var i = decorators.length - 1; i >= 0; i--) {\n      var context = {};\n      for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\n      for (var p in contextIn.access) context.access[p] = contextIn.access[p];\n      context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\n      var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\n      if (kind === \"accessor\") {\n          if (result === void 0) continue;\n          if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\n          if (_ = accept(result.get)) descriptor.get = _;\n          if (_ = accept(result.set)) descriptor.set = _;\n          if (_ = accept(result.init)) initializers.unshift(_);\n      }\n      else if (_ = accept(result)) {\n          if (kind === \"field\") initializers.unshift(_);\n          else descriptor[key] = _;\n      }\n  }\n  if (target) Object.defineProperty(target, contextIn.name, descriptor);\n  done = true;\n};\n\nexport function __runInitializers(thisArg, initializers, value) {\n  var useValue = arguments.length > 2;\n  for (var i = 0; i < initializers.length; i++) {\n      value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\n  }\n  return useValue ? value : void 0;\n};\n\nexport function __propKey(x) {\n  return typeof x === \"symbol\" ? x : \"\".concat(x);\n};\n\nexport function __setFunctionName(f, name, prefix) {\n  if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\n  return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\n};\n\nexport function __metadata(metadataKey, metadataValue) {\n  if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\n}\n\nexport function __awaiter(thisArg, _arguments, P, generator) {\n  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n  return new (P || (P = Promise))(function (resolve, reject) {\n      function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n      function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n      function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n      step((generator = generator.apply(thisArg, _arguments || [])).next());\n  });\n}\n\nexport function __generator(thisArg, body) {\n  var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === \"function\" ? Iterator : Object).prototype);\n  return g.next = verb(0), g[\"throw\"] = verb(1), g[\"return\"] = verb(2), typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n  function verb(n) { return function (v) { return step([n, v]); }; }\n  function step(op) {\n      if (f) throw new TypeError(\"Generator is already executing.\");\n      while (g && (g = 0, op[0] && (_ = 0)), _) try {\n          if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n          if (y = 0, t) op = [op[0] & 2, t.value];\n          switch (op[0]) {\n              case 0: case 1: t = op; break;\n              case 4: _.label++; return { value: op[1], done: false };\n              case 5: _.label++; y = op[1]; op = [0]; continue;\n              case 7: op = _.ops.pop(); _.trys.pop(); continue;\n              default:\n                  if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n                  if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n                  if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n                  if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n                  if (t[2]) _.ops.pop();\n                  _.trys.pop(); continue;\n          }\n          op = body.call(thisArg, _);\n      } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n      if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n  }\n}\n\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\n  if (k2 === undefined) k2 = k;\n  var desc = Object.getOwnPropertyDescriptor(m, k);\n  if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n      desc = { enumerable: true, get: function() { return m[k]; } };\n  }\n  Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n  if (k2 === undefined) k2 = k;\n  o[k2] = m[k];\n});\n\nexport function __exportStar(m, o) {\n  for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\n}\n\nexport function __values(o) {\n  var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n  if (m) return m.call(o);\n  if (o && typeof o.length === \"number\") return {\n      next: function () {\n          if (o && i >= o.length) o = void 0;\n          return { value: o && o[i++], done: !o };\n      }\n  };\n  throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n}\n\nexport function __read(o, n) {\n  var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n  if (!m) return o;\n  var i = m.call(o), r, ar = [], e;\n  try {\n      while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n  }\n  catch (error) { e = { error: error }; }\n  finally {\n      try {\n          if (r && !r.done && (m = i[\"return\"])) m.call(i);\n      }\n      finally { if (e) throw e.error; }\n  }\n  return ar;\n}\n\n/** @deprecated */\nexport function __spread() {\n  for (var ar = [], i = 0; i < arguments.length; i++)\n      ar = ar.concat(__read(arguments[i]));\n  return ar;\n}\n\n/** @deprecated */\nexport function __spreadArrays() {\n  for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n  for (var r = Array(s), k = 0, i = 0; i < il; i++)\n      for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n          r[k] = a[j];\n  return r;\n}\n\nexport function __spreadArray(to, from, pack) {\n  if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n      if (ar || !(i in from)) {\n          if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n          ar[i] = from[i];\n      }\n  }\n  return to.concat(ar || Array.prototype.slice.call(from));\n}\n\nexport function __await(v) {\n  return this instanceof __await ? (this.v = v, this) : new __await(v);\n}\n\nexport function __asyncGenerator(thisArg, _arguments, generator) {\n  if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n  var g = generator.apply(thisArg, _arguments || []), i, q = [];\n  return i = Object.create((typeof AsyncIterator === \"function\" ? AsyncIterator : Object).prototype), verb(\"next\"), verb(\"throw\"), verb(\"return\", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i;\n  function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; }\n  function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } }\n  function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\n  function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\n  function fulfill(value) { resume(\"next\", value); }\n  function reject(value) { resume(\"throw\", value); }\n  function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\n}\n\nexport function __asyncDelegator(o) {\n  var i, p;\n  return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\n  function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\n}\n\nexport function __asyncValues(o) {\n  if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n  var m = o[Symbol.asyncIterator], i;\n  return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\n  function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\n  function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\n}\n\nexport function __makeTemplateObject(cooked, raw) {\n  if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\n  return cooked;\n};\n\nvar __setModuleDefault = Object.create ? (function(o, v) {\n  Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n  o[\"default\"] = v;\n};\n\nvar ownKeys = function(o) {\n  ownKeys = Object.getOwnPropertyNames || function (o) {\n    var ar = [];\n    for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;\n    return ar;\n  };\n  return ownKeys(o);\n};\n\nexport function __importStar(mod) {\n  if (mod && mod.__esModule) return mod;\n  var result = {};\n  if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== \"default\") __createBinding(result, mod, k[i]);\n  __setModuleDefault(result, mod);\n  return result;\n}\n\nexport function __importDefault(mod) {\n  return (mod && mod.__esModule) ? mod : { default: mod };\n}\n\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\n  if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n  if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n  return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n}\n\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\n  if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n  if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n  if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n  return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n}\n\nexport function __classPrivateFieldIn(state, receiver) {\n  if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\n  return typeof state === \"function\" ? receiver === state : state.has(receiver);\n}\n\nexport function __addDisposableResource(env, value, async) {\n  if (value !== null && value !== void 0) {\n    if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\n    var dispose, inner;\n    if (async) {\n      if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\n      dispose = value[Symbol.asyncDispose];\n    }\n    if (dispose === void 0) {\n      if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\n      dispose = value[Symbol.dispose];\n      if (async) inner = dispose;\n    }\n    if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\n    if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };\n    env.stack.push({ value: value, dispose: dispose, async: async });\n  }\n  else if (async) {\n    env.stack.push({ async: true });\n  }\n  return value;\n}\n\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\n  var e = new Error(message);\n  return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\n};\n\nexport function __disposeResources(env) {\n  function fail(e) {\n    env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\n    env.hasError = true;\n  }\n  var r, s = 0;\n  function next() {\n    while (r = env.stack.pop()) {\n      try {\n        if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next);\n        if (r.dispose) {\n          var result = r.dispose.call(r.value);\n          if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\n        }\n        else s |= 1;\n      }\n      catch (e) {\n        fail(e);\n      }\n    }\n    if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve();\n    if (env.hasError) throw env.error;\n  }\n  return next();\n}\n\nexport function __rewriteRelativeImportExtension(path, preserveJsx) {\n  if (typeof path === \"string\" && /^\\.\\.?\\//.test(path)) {\n      return path.replace(/\\.(tsx)$|((?:\\.d)?)((?:\\.[^./]+?)?)\\.([cm]?)ts$/i, function (m, tsx, d, ext, cm) {\n          return tsx ? preserveJsx ? \".jsx\" : \".js\" : d && (!ext || !cm) ? m : (d + ext + \".\" + cm.toLowerCase() + \"js\");\n      });\n  }\n  return path;\n}\n\nexport default {\n  __extends,\n  __assign,\n  __rest,\n  __decorate,\n  __param,\n  __esDecorate,\n  __runInitializers,\n  __propKey,\n  __setFunctionName,\n  __metadata,\n  __awaiter,\n  __generator,\n  __createBinding,\n  __exportStar,\n  __values,\n  __read,\n  __spread,\n  __spreadArrays,\n  __spreadArray,\n  __await,\n  __asyncGenerator,\n  __asyncDelegator,\n  __asyncValues,\n  __makeTemplateObject,\n  __importStar,\n  __importDefault,\n  __classPrivateFieldGet,\n  __classPrivateFieldSet,\n  __classPrivateFieldIn,\n  __addDisposableResource,\n  __disposeResources,\n  __rewriteRelativeImportExtension,\n};\n","export var IdentifyOperation;\n(function (IdentifyOperation) {\n    // Base Operations to set values\n    IdentifyOperation[\"SET\"] = \"$set\";\n    IdentifyOperation[\"SET_ONCE\"] = \"$setOnce\";\n    // Operations around modifying existing values\n    IdentifyOperation[\"ADD\"] = \"$add\";\n    IdentifyOperation[\"APPEND\"] = \"$append\";\n    IdentifyOperation[\"PREPEND\"] = \"$prepend\";\n    IdentifyOperation[\"REMOVE\"] = \"$remove\";\n    // Operations around appending values *if* they aren't present\n    IdentifyOperation[\"PREINSERT\"] = \"$preInsert\";\n    IdentifyOperation[\"POSTINSERT\"] = \"$postInsert\";\n    // Operations around removing properties/values\n    IdentifyOperation[\"UNSET\"] = \"$unset\";\n    IdentifyOperation[\"CLEAR_ALL\"] = \"$clearAll\";\n})(IdentifyOperation || (IdentifyOperation = {}));\n/**\n * Strings that have special meaning when used as an event's type\n * and have different specifications.\n */\nexport var SpecialEventType;\n(function (SpecialEventType) {\n    SpecialEventType[\"IDENTIFY\"] = \"$identify\";\n    SpecialEventType[\"GROUP_IDENTIFY\"] = \"$groupidentify\";\n    SpecialEventType[\"REVENUE\"] = \"revenue_amount\";\n})(SpecialEventType || (SpecialEventType = {}));\n//# sourceMappingURL=event.js.map","export var UNSET_VALUE = '-';\nexport var AMPLITUDE_PREFIX = 'AMP';\nexport var STORAGE_PREFIX = \"\".concat(AMPLITUDE_PREFIX, \"_unsent\");\nexport var DEFAULT_INSTANCE_NAME = '$default_instance';\nexport var AMPLITUDE_SERVER_URL = 'https://api2.amplitude.com/2/httpapi';\nexport var EU_AMPLITUDE_SERVER_URL = 'https://api.eu.amplitude.com/2/httpapi';\nexport var AMPLITUDE_BATCH_SERVER_URL = 'https://api2.amplitude.com/batch';\nexport var EU_AMPLITUDE_BATCH_SERVER_URL = 'https://api.eu.amplitude.com/batch';\n// Campaign constants\nexport var UTM_CAMPAIGN = 'utm_campaign';\nexport var UTM_CONTENT = 'utm_content';\nexport var UTM_ID = 'utm_id';\nexport var UTM_MEDIUM = 'utm_medium';\nexport var UTM_SOURCE = 'utm_source';\nexport var UTM_TERM = 'utm_term';\nexport var DCLID = 'dclid';\nexport var FBCLID = 'fbclid';\nexport var GBRAID = 'gbraid';\nexport var GCLID = 'gclid';\nexport var KO_CLICK_ID = 'ko_click_id';\nexport var LI_FAT_ID = 'li_fat_id';\nexport var MSCLKID = 'msclkid';\nexport var RDT_CID = 'rtd_cid';\nexport var TTCLID = 'ttclid';\nexport var TWCLID = 'twclid';\nexport var WBRAID = 'wbraid';\nexport var EMPTY_VALUE = 'EMPTY';\nexport var BASE_CAMPAIGN = {\n    utm_campaign: undefined,\n    utm_content: undefined,\n    utm_id: undefined,\n    utm_medium: undefined,\n    utm_source: undefined,\n    utm_term: undefined,\n    referrer: undefined,\n    referring_domain: undefined,\n    dclid: undefined,\n    gbraid: undefined,\n    gclid: undefined,\n    fbclid: undefined,\n    ko_click_id: undefined,\n    li_fat_id: undefined,\n    msclkid: undefined,\n    rtd_cid: undefined,\n    ttclid: undefined,\n    twclid: undefined,\n    wbraid: undefined,\n};\nexport var MKTG = 'MKTG';\n//# sourceMappingURL=constants.js.map","import { __values } from \"tslib\";\nvar MAX_PROPERTY_KEYS = 1000;\nexport var isValidObject = function (properties) {\n    if (Object.keys(properties).length > MAX_PROPERTY_KEYS) {\n        return false;\n    }\n    for (var key in properties) {\n        // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n        var value = properties[key];\n        if (!isValidProperties(key, value))\n            return false;\n    }\n    return true;\n};\nexport var isValidProperties = function (property, value) {\n    var e_1, _a;\n    if (typeof property !== 'string')\n        return false;\n    if (Array.isArray(value)) {\n        var isValid = true;\n        try {\n            for (var value_1 = __values(value), value_1_1 = value_1.next(); !value_1_1.done; value_1_1 = value_1.next()) {\n                var valueElement = value_1_1.value;\n                if (Array.isArray(valueElement)) {\n                    return false;\n                }\n                else if (typeof valueElement === 'object') {\n                    isValid = isValid && isValidObject(valueElement);\n                }\n                else if (!['number', 'string'].includes(typeof valueElement)) {\n                    return false;\n                }\n                if (!isValid) {\n                    return false;\n                }\n            }\n        }\n        catch (e_1_1) { e_1 = { error: e_1_1 }; }\n        finally {\n            try {\n                if (value_1_1 && !value_1_1.done && (_a = value_1.return)) _a.call(value_1);\n            }\n            finally { if (e_1) throw e_1.error; }\n        }\n    }\n    else if (value === null || value === undefined) {\n        return false;\n    }\n    else if (typeof value === 'object') {\n        // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n        return isValidObject(value);\n    }\n    else if (!['number', 'string', 'boolean'].includes(typeof value)) {\n        return false;\n    }\n    return true;\n};\n//# sourceMappingURL=valid-properties.js.map","import { __assign } from \"tslib\";\nimport { UNSET_VALUE } from './types/constants';\nimport { isValidProperties } from './utils/valid-properties';\nvar Identify = /** @class */ (function () {\n    function Identify() {\n        this._propertySet = new Set();\n        this._properties = {};\n    }\n    Identify.prototype.getUserProperties = function () {\n        return __assign({}, this._properties);\n    };\n    Identify.prototype.set = function (property, value) {\n        this._safeSet(IdentifyOperation.SET, property, value);\n        return this;\n    };\n    Identify.prototype.setOnce = function (property, value) {\n        this._safeSet(IdentifyOperation.SET_ONCE, property, value);\n        return this;\n    };\n    Identify.prototype.append = function (property, value) {\n        this._safeSet(IdentifyOperation.APPEND, property, value);\n        return this;\n    };\n    Identify.prototype.prepend = function (property, value) {\n        this._safeSet(IdentifyOperation.PREPEND, property, value);\n        return this;\n    };\n    Identify.prototype.postInsert = function (property, value) {\n        this._safeSet(IdentifyOperation.POSTINSERT, property, value);\n        return this;\n    };\n    Identify.prototype.preInsert = function (property, value) {\n        this._safeSet(IdentifyOperation.PREINSERT, property, value);\n        return this;\n    };\n    Identify.prototype.remove = function (property, value) {\n        this._safeSet(IdentifyOperation.REMOVE, property, value);\n        return this;\n    };\n    Identify.prototype.add = function (property, value) {\n        this._safeSet(IdentifyOperation.ADD, property, value);\n        return this;\n    };\n    Identify.prototype.unset = function (property) {\n        this._safeSet(IdentifyOperation.UNSET, property, UNSET_VALUE);\n        return this;\n    };\n    Identify.prototype.clearAll = function () {\n        // When clear all happens, all properties are unset. Reset the entire object.\n        this._properties = {};\n        this._properties[IdentifyOperation.CLEAR_ALL] = UNSET_VALUE;\n        return this;\n    };\n    // Returns whether or not this set actually worked.\n    Identify.prototype._safeSet = function (operation, property, value) {\n        if (this._validate(operation, property, value)) {\n            // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n            var userPropertyMap = this._properties[operation];\n            if (userPropertyMap === undefined) {\n                userPropertyMap = {};\n                // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n                this._properties[operation] = userPropertyMap;\n            }\n            // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n            userPropertyMap[property] = value;\n            this._propertySet.add(property);\n            return true;\n        }\n        return false;\n    };\n    Identify.prototype._validate = function (operation, property, value) {\n        if (this._properties[IdentifyOperation.CLEAR_ALL] !== undefined) {\n            // clear all already set. Skipping operation;\n            return false;\n        }\n        if (this._propertySet.has(property)) {\n            // Property already used. Skipping operation\n            return false;\n        }\n        if (operation === IdentifyOperation.ADD) {\n            return typeof value === 'number';\n        }\n        if (operation !== IdentifyOperation.UNSET && operation !== IdentifyOperation.REMOVE) {\n            return isValidProperties(property, value);\n        }\n        return true;\n    };\n    return Identify;\n}());\nexport { Identify };\nexport var IdentifyOperation;\n(function (IdentifyOperation) {\n    // Base Operations to set values\n    IdentifyOperation[\"SET\"] = \"$set\";\n    IdentifyOperation[\"SET_ONCE\"] = \"$setOnce\";\n    // Operations around modifying existing values\n    IdentifyOperation[\"ADD\"] = \"$add\";\n    IdentifyOperation[\"APPEND\"] = \"$append\";\n    IdentifyOperation[\"PREPEND\"] = \"$prepend\";\n    IdentifyOperation[\"REMOVE\"] = \"$remove\";\n    // Operations around appending values *if* they aren't present\n    IdentifyOperation[\"PREINSERT\"] = \"$preInsert\";\n    IdentifyOperation[\"POSTINSERT\"] = \"$postInsert\";\n    // Operations around removing properties/values\n    IdentifyOperation[\"UNSET\"] = \"$unset\";\n    IdentifyOperation[\"CLEAR_ALL\"] = \"$clearAll\";\n})(IdentifyOperation || (IdentifyOperation = {}));\n/**\n * Note that the order of operations should align with https://github.com/amplitude/nova/blob/7701b5986b565d4b2fb53b99a9f2175df055dea8/src/main/java/com/amplitude/ingestion/core/UserPropertyUtils.java#L210\n */\nexport var OrderedIdentifyOperations = [\n    IdentifyOperation.CLEAR_ALL,\n    IdentifyOperation.UNSET,\n    IdentifyOperation.SET,\n    IdentifyOperation.SET_ONCE,\n    IdentifyOperation.ADD,\n    IdentifyOperation.APPEND,\n    IdentifyOperation.PREPEND,\n    IdentifyOperation.PREINSERT,\n    IdentifyOperation.POSTINSERT,\n    IdentifyOperation.REMOVE,\n];\n//# sourceMappingURL=identify.js.map","export var SUCCESS_MESSAGE = 'Event tracked successfully';\nexport var UNEXPECTED_ERROR_MESSAGE = 'Unexpected error occurred';\nexport var MAX_RETRIES_EXCEEDED_MESSAGE = 'Event rejected due to exceeded retry count';\nexport var OPT_OUT_MESSAGE = 'Event skipped due to optOut config';\nexport var MISSING_API_KEY_MESSAGE = 'Event rejected due to missing API key';\nexport var INVALID_API_KEY = 'Invalid API key';\nexport var CLIENT_NOT_INITIALIZED = 'Client not initialized';\n//# sourceMappingURL=messages.js.map","/** The status of an event. */\nexport var Status;\n(function (Status) {\n    /** The status could not be determined. */\n    Status[\"Unknown\"] = \"unknown\";\n    /** The event was skipped due to configuration or callbacks. */\n    Status[\"Skipped\"] = \"skipped\";\n    /** The event was sent successfully. */\n    Status[\"Success\"] = \"success\";\n    /** A user or device in the payload is currently rate limited and should try again later. */\n    Status[\"RateLimit\"] = \"rate_limit\";\n    /** The sent payload was too large to be processed. */\n    Status[\"PayloadTooLarge\"] = \"payload_too_large\";\n    /** The event could not be processed. */\n    Status[\"Invalid\"] = \"invalid\";\n    /** A server-side error ocurred during submission. */\n    Status[\"Failed\"] = \"failed\";\n    /** a server or client side error occuring when a request takes too long and is cancelled */\n    Status[\"Timeout\"] = \"Timeout\";\n    /** NodeJS runtime environment error.. E.g. disconnected from network */\n    Status[\"SystemError\"] = \"SystemError\";\n})(Status || (Status = {}));\n//# sourceMappingURL=status.js.map","import { Status } from '../types/status';\nexport var buildResult = function (event, code, message) {\n    if (code === void 0) { code = 0; }\n    if (message === void 0) { message = Status.Unknown; }\n    return { event: event, code: code, message: message };\n};\n//# sourceMappingURL=result-builder.js.map","/* eslint-disable no-restricted-globals */\n/* Only file allowed to access to globalThis, window, self */\nexport var getGlobalScope = function () {\n    // This should only be used for integrations with Amplitude that are not running in a browser environment\n    //   We need to specify the name of the global variable as a string to prevent it from being minified\n    var ampIntegrationContextName = 'ampIntegrationContext';\n    if (typeof globalThis !== 'undefined' && typeof globalThis[ampIntegrationContextName] !== 'undefined') {\n        return globalThis[ampIntegrationContextName];\n    }\n    if (typeof globalThis !== 'undefined') {\n        return globalThis;\n    }\n    if (typeof window !== 'undefined') {\n        return window;\n    }\n    if (typeof self !== 'undefined') {\n        return self;\n    }\n    if (typeof global !== 'undefined') {\n        return global;\n    }\n    return undefined;\n};\n//# sourceMappingURL=global-scope.js.map","/**\n * Source: [jed's gist's comment]{@link https://gist.github.com/jed/982883?permalink_comment_id=3223002#gistcomment-3223002}.\n * Returns a random v4 UUID of the form xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx,\n * where each x is replaced with a random hexadecimal digit from 0 to f, and\n * y is replaced with a random hexadecimal digit from 8 to b.\n * Used to generate UUIDs for deviceIds.\n * @private\n */\nimport { __read, __spreadArray } from \"tslib\";\nimport { getGlobalScope } from '../global-scope';\nvar legacyUUID = function (a) {\n    return a // if the placeholder was passed, return\n        ? // a random number from 0 to 15\n            (a ^ // unless b is 8,\n                ((Math.random() * // in which case\n                    16) >> // a random number from\n                    (a / 4))) // 8 to 11\n                .toString(16) // in hexadecimal\n        : // or otherwise a concatenated string:\n            (String(1e7) + // 10000000 +\n                String(-1e3) + // -1000 +\n                String(-4e3) + // -4000 +\n                String(-8e3) + // -80000000 +\n                String(-1e11)) // -100000000000,\n                .replace(\n            // replacing\n            /[018]/g, // zeroes, ones, and eights with\n            UUID);\n};\nvar hex = __spreadArray([], __read(Array(256).keys()), false).map(function (index) { return index.toString(16).padStart(2, '0'); });\nexport var UUID = function (a) {\n    var _a;\n    var globalScope = getGlobalScope();\n    /* istanbul ignore next */\n    if (!((_a = globalScope === null || globalScope === void 0 ? void 0 : globalScope.crypto) === null || _a === void 0 ? void 0 : _a.getRandomValues)) {\n        // Fallback to legacy UUID generation if crypto is not available\n        return legacyUUID(a);\n    }\n    var r = globalScope.crypto.getRandomValues(new Uint8Array(16));\n    r[6] = (r[6] & 0x0f) | 0x40;\n    r[8] = (r[8] & 0x3f) | 0x80;\n    return __spreadArray([], __read(r.entries()), false).map(function (_a) {\n        var _b = __read(_a, 2), index = _b[0], int = _b[1];\n        return ([4, 6, 8, 10].includes(index) ? \"-\".concat(hex[int]) : hex[int]);\n    }).join('');\n};\n//# sourceMappingURL=uuid.js.map","import { __assign, __awaiter, __generator, __read, __values } from \"tslib\";\nimport { buildResult } from './utils/result-builder';\nimport { UUID } from './utils/uuid';\nvar Timeline = /** @class */ (function () {\n    function Timeline(client) {\n        this.client = client;\n        this.queue = [];\n        // Flag to guarantee one schedule apply is running\n        this.applying = false;\n        // Flag indicates whether timeline is ready to process event\n        // Events collected before timeline is ready will stay in the queue to be processed later\n        this.plugins = [];\n    }\n    Timeline.prototype.register = function (plugin, config) {\n        var _a, _b;\n        return __awaiter(this, void 0, void 0, function () {\n            return __generator(this, function (_c) {\n                switch (_c.label) {\n                    case 0:\n                        if (this.plugins.some(function (existingPlugin) { return existingPlugin.name === plugin.name; })) {\n                            // eslint-disable-next-line @typescript-eslint/restrict-template-expressions\n                            this.loggerProvider.warn(\"Plugin with name \".concat(plugin.name, \" already exists, skipping registration\"));\n                            return [2 /*return*/];\n                        }\n                        if (plugin.name === undefined) {\n                            plugin.name = UUID();\n                            this.loggerProvider.warn(\"Plugin name is undefined. \\n      Generating a random UUID for plugin name: \".concat(plugin.name, \". \\n      Set a name for the plugin to prevent it from being added multiple times.\"));\n                        }\n                        plugin.type = (_a = plugin.type) !== null && _a !== void 0 ? _a : 'enrichment';\n                        return [4 /*yield*/, ((_b = plugin.setup) === null || _b === void 0 ? void 0 : _b.call(plugin, config, this.client))];\n                    case 1:\n                        _c.sent();\n                        this.plugins.push(plugin);\n                        return [2 /*return*/];\n                }\n            });\n        });\n    };\n    Timeline.prototype.deregister = function (pluginName, config) {\n        var _a;\n        return __awaiter(this, void 0, void 0, function () {\n            var index, plugin;\n            return __generator(this, function (_b) {\n                switch (_b.label) {\n                    case 0:\n                        index = this.plugins.findIndex(function (plugin) { return plugin.name === pluginName; });\n                        if (index === -1) {\n                            config.loggerProvider.warn(\"Plugin with name \".concat(pluginName, \" does not exist, skipping deregistration\"));\n                            return [2 /*return*/];\n                        }\n                        plugin = this.plugins[index];\n                        this.plugins.splice(index, 1);\n                        return [4 /*yield*/, ((_a = plugin.teardown) === null || _a === void 0 ? void 0 : _a.call(plugin))];\n                    case 1:\n                        _b.sent();\n                        return [2 /*return*/];\n                }\n            });\n        });\n    };\n    Timeline.prototype.reset = function (client) {\n        this.applying = false;\n        var plugins = this.plugins;\n        plugins.map(function (plugin) { var _a; return (_a = plugin.teardown) === null || _a === void 0 ? void 0 : _a.call(plugin); });\n        this.plugins = [];\n        this.client = client;\n    };\n    Timeline.prototype.push = function (event) {\n        var _this = this;\n        return new Promise(function (resolve) {\n            _this.queue.push([event, resolve]);\n            _this.scheduleApply(0);\n        });\n    };\n    Timeline.prototype.scheduleApply = function (timeout) {\n        var _this = this;\n        if (this.applying)\n            return;\n        this.applying = true;\n        setTimeout(function () {\n            void _this.apply(_this.queue.shift()).then(function () {\n                _this.applying = false;\n                if (_this.queue.length > 0) {\n                    _this.scheduleApply(0);\n                }\n            });\n        }, timeout);\n    };\n    Timeline.prototype.apply = function (item) {\n        return __awaiter(this, void 0, void 0, function () {\n            var _a, event, _b, resolve, before, before_1, before_1_1, plugin, e, e_1_1, enrichment, enrichment_1, enrichment_1_1, plugin, e, e_2_1, destination, executeDestinations;\n            var e_1, _c, e_2, _d;\n            return __generator(this, function (_e) {\n                switch (_e.label) {\n                    case 0:\n                        if (!item) {\n                            return [2 /*return*/];\n                        }\n                        _a = __read(item, 1), event = _a[0];\n                        _b = __read(item, 2), resolve = _b[1];\n                        // Log initial event\n                        this.loggerProvider.log('Timeline.apply: Initial event', event);\n                        before = this.plugins.filter(function (plugin) { return plugin.type === 'before'; });\n                        _e.label = 1;\n                    case 1:\n                        _e.trys.push([1, 6, 7, 8]);\n                        before_1 = __values(before), before_1_1 = before_1.next();\n                        _e.label = 2;\n                    case 2:\n                        if (!!before_1_1.done) return [3 /*break*/, 5];\n                        plugin = before_1_1.value;\n                        /* istanbul ignore if */\n                        if (!plugin.execute) {\n                            // do nothing\n                            return [3 /*break*/, 4];\n                        }\n                        return [4 /*yield*/, plugin.execute(__assign({}, event))];\n                    case 3:\n                        e = _e.sent();\n                        if (e === null) {\n                            this.loggerProvider.log(\"Timeline.apply: Event filtered out by before plugin '\".concat(String(plugin.name), \"', event: \").concat(JSON.stringify(event)));\n                            resolve({ event: event, code: 0, message: '' });\n                            return [2 /*return*/];\n                        }\n                        else {\n                            event = e;\n                            this.loggerProvider.log(\"Timeline.apply: Event after before plugin '\".concat(String(plugin.name), \"', event: \").concat(JSON.stringify(event)));\n                        }\n                        _e.label = 4;\n                    case 4:\n                        before_1_1 = before_1.next();\n                        return [3 /*break*/, 2];\n                    case 5: return [3 /*break*/, 8];\n                    case 6:\n                        e_1_1 = _e.sent();\n                        e_1 = { error: e_1_1 };\n                        return [3 /*break*/, 8];\n                    case 7:\n                        try {\n                            if (before_1_1 && !before_1_1.done && (_c = before_1.return)) _c.call(before_1);\n                        }\n                        finally { if (e_1) throw e_1.error; }\n                        return [7 /*endfinally*/];\n                    case 8:\n                        enrichment = this.plugins.filter(function (plugin) { return plugin.type === 'enrichment' || plugin.type === undefined; });\n                        _e.label = 9;\n                    case 9:\n                        _e.trys.push([9, 14, 15, 16]);\n                        enrichment_1 = __values(enrichment), enrichment_1_1 = enrichment_1.next();\n                        _e.label = 10;\n                    case 10:\n                        if (!!enrichment_1_1.done) return [3 /*break*/, 13];\n                        plugin = enrichment_1_1.value;\n                        /* istanbul ignore if */\n                        if (!plugin.execute) {\n                            // do nothing\n                            return [3 /*break*/, 12];\n                        }\n                        return [4 /*yield*/, plugin.execute(__assign({}, event))];\n                    case 11:\n                        e = _e.sent();\n                        if (e === null) {\n                            this.loggerProvider.log(\"Timeline.apply: Event filtered out by enrichment plugin '\".concat(String(plugin.name), \"', event: \").concat(JSON.stringify(event)));\n                            resolve({ event: event, code: 0, message: '' });\n                            return [2 /*return*/];\n                        }\n                        else {\n                            event = e;\n                            this.loggerProvider.log(\"Timeline.apply: Event after enrichment plugin '\".concat(String(plugin.name), \"', event: \").concat(JSON.stringify(event)));\n                        }\n                        _e.label = 12;\n                    case 12:\n                        enrichment_1_1 = enrichment_1.next();\n                        return [3 /*break*/, 10];\n                    case 13: return [3 /*break*/, 16];\n                    case 14:\n                        e_2_1 = _e.sent();\n                        e_2 = { error: e_2_1 };\n                        return [3 /*break*/, 16];\n                    case 15:\n                        try {\n                            if (enrichment_1_1 && !enrichment_1_1.done && (_d = enrichment_1.return)) _d.call(enrichment_1);\n                        }\n                        finally { if (e_2) throw e_2.error; }\n                        return [7 /*endfinally*/];\n                    case 16:\n                        destination = this.plugins.filter(function (plugin) { return plugin.type === 'destination'; });\n                        // Log final event before sending to destinations\n                        this.loggerProvider.log(\"Timeline.apply: Final event before destinations, event: \".concat(JSON.stringify(event)));\n                        executeDestinations = destination.map(function (plugin) {\n                            var eventClone = __assign({}, event);\n                            return plugin.execute(eventClone).catch(function (e) { return buildResult(eventClone, 0, String(e)); });\n                        });\n                        void Promise.all(executeDestinations).then(function (_a) {\n                            var _b = __read(_a, 1), result = _b[0];\n                            var resolveResult = result || buildResult(event, 100, 'Event not tracked, no destination plugins on the instance');\n                            resolve(resolveResult);\n                        });\n                        return [2 /*return*/];\n                }\n            });\n        });\n    };\n    Timeline.prototype.flush = function () {\n        return __awaiter(this, void 0, void 0, function () {\n            var queue, destination, executeDestinations;\n            var _this = this;\n            return __generator(this, function (_a) {\n                switch (_a.label) {\n                    case 0:\n                        queue = this.queue;\n                        this.queue = [];\n                        return [4 /*yield*/, Promise.all(queue.map(function (item) { return _this.apply(item); }))];\n                    case 1:\n                        _a.sent();\n                        destination = this.plugins.filter(function (plugin) { return plugin.type === 'destination'; });\n                        executeDestinations = destination.map(function (plugin) {\n                            return plugin.flush && plugin.flush();\n                        });\n                        return [4 /*yield*/, Promise.all(executeDestinations)];\n                    case 2:\n                        _a.sent();\n                        return [2 /*return*/];\n                }\n            });\n        });\n    };\n    Timeline.prototype.onIdentityChanged = function (identity) {\n        this.plugins.forEach(function (plugin) {\n            var _a;\n            // Intentionally to not await plugin.onIdentityChanged() for non-blocking.\n            // Ignore optional channing next line for test coverage.\n            // If the plugin doesn't implement it, it won't be called.\n            /* istanbul ignore next */\n            void ((_a = plugin.onIdentityChanged) === null || _a === void 0 ? void 0 : _a.call(plugin, identity));\n        });\n    };\n    Timeline.prototype.onSessionIdChanged = function (sessionId) {\n        this.plugins.forEach(function (plugin) {\n            var _a;\n            // Intentionally to not await plugin.onSessionIdChanged() for non-blocking.\n            // Ignore optional channing next line for test coverage.\n            // If the plugin doesn't implement it, it won't be called.\n            /* istanbul ignore next */\n            void ((_a = plugin.onSessionIdChanged) === null || _a === void 0 ? void 0 : _a.call(plugin, sessionId));\n        });\n    };\n    Timeline.prototype.onOptOutChanged = function (optOut) {\n        this.plugins.forEach(function (plugin) {\n            var _a;\n            // Intentionally to not await plugin.onOptOutChanged() for non-blocking.\n            // Ignore optional channing next line for test coverage.\n            // If the plugin doesn't implement it, it won't be called.\n            /* istanbul ignore next */\n            void ((_a = plugin.onOptOutChanged) === null || _a === void 0 ? void 0 : _a.call(plugin, optOut));\n        });\n    };\n    return Timeline;\n}());\nexport { Timeline };\n//# sourceMappingURL=timeline.js.map","import { __assign } from \"tslib\";\nimport { Identify } from '../identify';\nimport { SpecialEventType } from '../types/event/event';\nexport var createTrackEvent = function (eventInput, eventProperties, eventOptions) {\n    var baseEvent = typeof eventInput === 'string' ? { event_type: eventInput } : eventInput;\n    return __assign(__assign(__assign({}, baseEvent), eventOptions), (eventProperties && { event_properties: eventProperties }));\n};\nexport var createIdentifyEvent = function (identify, eventOptions) {\n    var identifyEvent = __assign(__assign({}, eventOptions), { event_type: SpecialEventType.IDENTIFY, user_properties: identify.getUserProperties() });\n    return identifyEvent;\n};\nexport var createGroupIdentifyEvent = function (groupType, groupName, identify, eventOptions) {\n    var _a;\n    var groupIdentify = __assign(__assign({}, eventOptions), { event_type: SpecialEventType.GROUP_IDENTIFY, group_properties: identify.getUserProperties(), groups: (_a = {},\n            _a[groupType] = groupName,\n            _a) });\n    return groupIdentify;\n};\nexport var createGroupEvent = function (groupType, groupName, eventOptions) {\n    var _a;\n    var identify = new Identify();\n    identify.set(groupType, groupName);\n    var groupEvent = __assign(__assign({}, eventOptions), { event_type: SpecialEventType.IDENTIFY, user_properties: identify.getUserProperties(), groups: (_a = {},\n            _a[groupType] = groupName,\n            _a) });\n    return groupEvent;\n};\nexport var createRevenueEvent = function (revenue, eventOptions) {\n    return __assign(__assign({}, eventOptions), { event_type: SpecialEventType.REVENUE, event_properties: revenue.getEventProperties() });\n};\n//# sourceMappingURL=event-builder.js.map","export var returnWrapper = function (awaitable) { return ({\n    promise: awaitable || Promise.resolve(),\n}); };\n//# sourceMappingURL=return-wrapper.js.map","import { __awaiter, __generator, __values } from \"tslib\";\nimport { IdentifyOperation, SpecialEventType, } from './types/event/event';\nimport { OrderedIdentifyOperations } from './identify';\nimport { CLIENT_NOT_INITIALIZED, OPT_OUT_MESSAGE } from './types/messages';\nimport { Timeline } from './timeline';\nimport { createGroupEvent, createGroupIdentifyEvent, createIdentifyEvent, createRevenueEvent, createTrackEvent, } from './utils/event-builder';\nimport { buildResult } from './utils/result-builder';\nimport { returnWrapper } from './utils/return-wrapper';\nvar AmplitudeCore = /** @class */ (function () {\n    function AmplitudeCore(name) {\n        if (name === void 0) { name = '$default'; }\n        this.initializing = false;\n        this.isReady = false;\n        this.q = [];\n        this.dispatchQ = [];\n        this.logEvent = this.track.bind(this);\n        this.timeline = new Timeline(this);\n        this.name = name;\n    }\n    AmplitudeCore.prototype._init = function (config) {\n        return __awaiter(this, void 0, void 0, function () {\n            return __generator(this, function (_a) {\n                switch (_a.label) {\n                    case 0:\n                        this.config = config;\n                        this.timeline.reset(this);\n                        this.timeline.loggerProvider = this.config.loggerProvider;\n                        return [4 /*yield*/, this.runQueuedFunctions('q')];\n                    case 1:\n                        _a.sent();\n                        this.isReady = true;\n                        return [2 /*return*/];\n                }\n            });\n        });\n    };\n    AmplitudeCore.prototype.runQueuedFunctions = function (queueName) {\n        return __awaiter(this, void 0, void 0, function () {\n            var queuedFunctions, queuedFunctions_1, queuedFunctions_1_1, queuedFunction, val, e_1_1;\n            var e_1, _a;\n            return __generator(this, function (_b) {\n                switch (_b.label) {\n                    case 0:\n                        queuedFunctions = this[queueName];\n                        this[queueName] = [];\n                        _b.label = 1;\n                    case 1:\n                        _b.trys.push([1, 8, 9, 10]);\n                        queuedFunctions_1 = __values(queuedFunctions), queuedFunctions_1_1 = queuedFunctions_1.next();\n                        _b.label = 2;\n                    case 2:\n                        if (!!queuedFunctions_1_1.done) return [3 /*break*/, 7];\n                        queuedFunction = queuedFunctions_1_1.value;\n                        val = queuedFunction();\n                        if (!(val && 'promise' in val)) return [3 /*break*/, 4];\n                        return [4 /*yield*/, val.promise];\n                    case 3:\n                        _b.sent();\n                        return [3 /*break*/, 6];\n                    case 4: return [4 /*yield*/, val];\n                    case 5:\n                        _b.sent();\n                        _b.label = 6;\n                    case 6:\n                        queuedFunctions_1_1 = queuedFunctions_1.next();\n                        return [3 /*break*/, 2];\n                    case 7: return [3 /*break*/, 10];\n                    case 8:\n                        e_1_1 = _b.sent();\n                        e_1 = { error: e_1_1 };\n                        return [3 /*break*/, 10];\n                    case 9:\n                        try {\n                            if (queuedFunctions_1_1 && !queuedFunctions_1_1.done && (_a = queuedFunctions_1.return)) _a.call(queuedFunctions_1);\n                        }\n                        finally { if (e_1) throw e_1.error; }\n                        return [7 /*endfinally*/];\n                    case 10:\n                        if (!this[queueName].length) return [3 /*break*/, 12];\n                        return [4 /*yield*/, this.runQueuedFunctions(queueName)];\n                    case 11:\n                        _b.sent();\n                        _b.label = 12;\n                    case 12: return [2 /*return*/];\n                }\n            });\n        });\n    };\n    AmplitudeCore.prototype.track = function (eventInput, eventProperties, eventOptions) {\n        var event = createTrackEvent(eventInput, eventProperties, eventOptions);\n        return returnWrapper(this.dispatch(event));\n    };\n    AmplitudeCore.prototype.identify = function (identify, eventOptions) {\n        var event = createIdentifyEvent(identify, eventOptions);\n        return returnWrapper(this.dispatch(event));\n    };\n    AmplitudeCore.prototype.groupIdentify = function (groupType, groupName, identify, eventOptions) {\n        var event = createGroupIdentifyEvent(groupType, groupName, identify, eventOptions);\n        return returnWrapper(this.dispatch(event));\n    };\n    AmplitudeCore.prototype.setGroup = function (groupType, groupName, eventOptions) {\n        var event = createGroupEvent(groupType, groupName, eventOptions);\n        return returnWrapper(this.dispatch(event));\n    };\n    AmplitudeCore.prototype.revenue = function (revenue, eventOptions) {\n        var event = createRevenueEvent(revenue, eventOptions);\n        return returnWrapper(this.dispatch(event));\n    };\n    AmplitudeCore.prototype.add = function (plugin) {\n        if (!this.isReady) {\n            this.q.push(this._addPlugin.bind(this, plugin));\n            return returnWrapper();\n        }\n        return this._addPlugin(plugin);\n    };\n    AmplitudeCore.prototype._addPlugin = function (plugin) {\n        return returnWrapper(this.timeline.register(plugin, this.config));\n    };\n    AmplitudeCore.prototype.remove = function (pluginName) {\n        if (!this.isReady) {\n            this.q.push(this._removePlugin.bind(this, pluginName));\n            return returnWrapper();\n        }\n        return this._removePlugin(pluginName);\n    };\n    AmplitudeCore.prototype._removePlugin = function (pluginName) {\n        return returnWrapper(this.timeline.deregister(pluginName, this.config));\n    };\n    AmplitudeCore.prototype.dispatchWithCallback = function (event, callback) {\n        if (!this.isReady) {\n            return callback(buildResult(event, 0, CLIENT_NOT_INITIALIZED));\n        }\n        void this.process(event).then(callback);\n    };\n    AmplitudeCore.prototype.dispatch = function (event) {\n        return __awaiter(this, void 0, void 0, function () {\n            var _this = this;\n            return __generator(this, function (_a) {\n                if (!this.isReady) {\n                    return [2 /*return*/, new Promise(function (resolve) {\n                            _this.dispatchQ.push(_this.dispatchWithCallback.bind(_this, event, resolve));\n                        })];\n                }\n                return [2 /*return*/, this.process(event)];\n            });\n        });\n    };\n    /**\n     *\n     * This method applies identify operations to user properties and\n     * returns a single object representing the final user property state.\n     *\n     * This is a best-effort api that only supports $set, $clearAll, and $unset.\n     * Other operations are not supported and are ignored.\n     *\n     *\n     * @param userProperties The `event.userProperties` object from an Identify event.\n     * @returns A key-value object user properties without operations.\n     *\n     * @example\n     * Input:\n     * {\n     *   $set: { plan: 'premium' },\n     *   custom_flag: true\n     * }\n     *\n     * Output:\n     * {\n     *   plan: 'premium',\n     *   custom_flag: true\n     * }\n     */\n    AmplitudeCore.prototype.getOperationAppliedUserProperties = function (userProperties) {\n        var updatedProperties = {};\n        if (userProperties === undefined) {\n            return updatedProperties;\n        }\n        // Keep non-operation keys for later merge\n        var nonOpProperties = {};\n        Object.keys(userProperties).forEach(function (key) {\n            if (!Object.values(IdentifyOperation).includes(key)) {\n                // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n                // @ts-ignore\n                // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n                nonOpProperties[key] = userProperties[key];\n            }\n        });\n        OrderedIdentifyOperations.forEach(function (operation) {\n            // Skip when key is an operation.\n            if (!Object.keys(userProperties).includes(operation))\n                return;\n            // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n            var opProperties = userProperties[operation];\n            switch (operation) {\n                case IdentifyOperation.CLEAR_ALL:\n                    // Due to operation order, the following line will never execute.\n                    /* istanbul ignore next */\n                    Object.keys(updatedProperties).forEach(function (prop) {\n                        delete updatedProperties[prop];\n                    });\n                    break;\n                case IdentifyOperation.UNSET:\n                    Object.keys(opProperties).forEach(function (prop) {\n                        delete updatedProperties[prop];\n                    });\n                    break;\n                case IdentifyOperation.SET:\n                    Object.assign(updatedProperties, opProperties);\n                    break;\n            }\n        });\n        // Merge non-operation properties.\n        // Custom properties should not be affected by operations.\n        // https://github.com/amplitude/nova/blob/343f678ded83c032e83b189796b3c2be161b48f5/src/main/java/com/amplitude/userproperty/model/ModifyUserPropertiesIdent.java#L79-L83\n        Object.assign(updatedProperties, nonOpProperties);\n        return updatedProperties;\n    };\n    AmplitudeCore.prototype.process = function (event) {\n        return __awaiter(this, void 0, void 0, function () {\n            var userProperties, result, e_2, message, result;\n            return __generator(this, function (_a) {\n                switch (_a.label) {\n                    case 0:\n                        _a.trys.push([0, 2, , 3]);\n                        // skip event processing if opt out\n                        if (this.config.optOut) {\n                            return [2 /*return*/, buildResult(event, 0, OPT_OUT_MESSAGE)];\n                        }\n                        if (event.event_type === SpecialEventType.IDENTIFY) {\n                            userProperties = this.getOperationAppliedUserProperties(event.user_properties);\n                            this.timeline.onIdentityChanged({ userProperties: userProperties });\n                        }\n                        return [4 /*yield*/, this.timeline.push(event)];\n                    case 1:\n                        result = _a.sent();\n                        result.code === 200\n                            ? this.config.loggerProvider.log(result.message)\n                            : result.code === 100\n                                ? this.config.loggerProvider.warn(result.message)\n                                : this.config.loggerProvider.error(result.message);\n                        return [2 /*return*/, result];\n                    case 2:\n                        e_2 = _a.sent();\n                        message = String(e_2);\n                        this.config.loggerProvider.error(message);\n                        result = buildResult(event, 0, message);\n                        return [2 /*return*/, result];\n                    case 3: return [2 /*return*/];\n                }\n            });\n        });\n    };\n    AmplitudeCore.prototype.setOptOut = function (optOut) {\n        if (!this.isReady) {\n            this.q.push(this._setOptOut.bind(this, Boolean(optOut)));\n            return;\n        }\n        this._setOptOut(optOut);\n    };\n    AmplitudeCore.prototype._setOptOut = function (optOut) {\n        if (this.config.optOut !== optOut) {\n            this.timeline.onOptOutChanged(optOut);\n            this.config.optOut = Boolean(optOut);\n        }\n    };\n    AmplitudeCore.prototype.flush = function () {\n        return returnWrapper(this.timeline.flush());\n    };\n    AmplitudeCore.prototype.plugin = function (name) {\n        var plugin = this.timeline.plugins.find(function (plugin) { return plugin.name === name; });\n        if (plugin === undefined) {\n            this.config.loggerProvider.debug(\"Cannot find plugin with name \".concat(name));\n            return undefined;\n        }\n        return plugin;\n    };\n    AmplitudeCore.prototype.plugins = function (pluginClass) {\n        return this.timeline.plugins.filter(function (plugin) { return plugin instanceof pluginClass; });\n    };\n    return AmplitudeCore;\n}());\nexport { AmplitudeCore };\n//# sourceMappingURL=core-client.js.map","var RemoteConfigLocalStorage = /** @class */ (function () {\n    function RemoteConfigLocalStorage(apiKey, logger) {\n        this.key = \"AMP_remote_config_\".concat(apiKey.substring(0, 10));\n        this.logger = logger;\n    }\n    RemoteConfigLocalStorage.prototype.fetchConfig = function () {\n        var result = null;\n        var failedRemoteConfigInfo = {\n            remoteConfig: null,\n            lastFetch: new Date(),\n        };\n        try {\n            result = localStorage.getItem(this.key);\n        }\n        catch (error) {\n            this.logger.debug('Remote config localstorage failed to access: ', error);\n            return Promise.resolve(failedRemoteConfigInfo);\n        }\n        if (result === null) {\n            this.logger.debug('Remote config localstorage gets null because the key does not exist');\n            return Promise.resolve(failedRemoteConfigInfo);\n        }\n        try {\n            var remoteConfigInfo = JSON.parse(result);\n            this.logger.debug(\"Remote config localstorage parsed successfully: \".concat(JSON.stringify(remoteConfigInfo)));\n            return Promise.resolve({\n                remoteConfig: remoteConfigInfo.remoteConfig,\n                lastFetch: new Date(remoteConfigInfo.lastFetch),\n            });\n        }\n        catch (error) {\n            this.logger.debug('Remote config localstorage failed to parse: ', error);\n            localStorage.removeItem(this.key);\n            return Promise.resolve(failedRemoteConfigInfo);\n        }\n    };\n    RemoteConfigLocalStorage.prototype.setConfig = function (config) {\n        try {\n            localStorage.setItem(this.key, JSON.stringify(config));\n            this.logger.debug('Remote config localstorage set successfully.');\n            return Promise.resolve(true);\n        }\n        catch (error) {\n            this.logger.debug('Remote config localstorage failed to set: ', error);\n        }\n        return Promise.resolve(false);\n    };\n    return RemoteConfigLocalStorage;\n}());\nexport { RemoteConfigLocalStorage };\n//# sourceMappingURL=remote-config-localstorage.js.map","import { __awaiter, __generator } from \"tslib\";\nimport { RemoteConfigLocalStorage } from './remote-config-localstorage';\nimport { UUID } from '../utils/uuid';\nexport var US_SERVER_URL = 'https://sr-client-cfg.amplitude.com/config';\nexport var EU_SERVER_URL = 'https://sr-client-cfg.eu.amplitude.com/config';\nexport var DEFAULT_MAX_RETRIES = 3;\n/**\n * The default timeout for fetch in milliseconds.\n * Linear backoff policy: timeout / retry times is the interval between fetch retry.\n */\nvar DEFAULT_TIMEOUT = 1000;\nvar RemoteConfigClient = /** @class */ (function () {\n    function RemoteConfigClient(apiKey, logger, serverZone) {\n        if (serverZone === void 0) { serverZone = 'US'; }\n        // Registered callbackInfos by subscribe().\n        this.callbackInfos = [];\n        this.apiKey = apiKey;\n        this.serverUrl = serverZone === 'US' ? US_SERVER_URL : EU_SERVER_URL;\n        this.logger = logger;\n        this.storage = new RemoteConfigLocalStorage(apiKey, logger);\n    }\n    RemoteConfigClient.prototype.subscribe = function (key, deliveryMode, callback) {\n        var id = UUID();\n        var callbackInfo = {\n            id: id,\n            key: key,\n            deliveryMode: deliveryMode,\n            callback: callback,\n        };\n        this.callbackInfos.push(callbackInfo);\n        if (deliveryMode === 'all') {\n            void this.subscribeAll(callbackInfo);\n        }\n        else {\n            void this.subscribeWaitForRemote(callbackInfo, deliveryMode.timeout);\n        }\n        return id;\n    };\n    RemoteConfigClient.prototype.unsubscribe = function (id) {\n        var index = this.callbackInfos.findIndex(function (callbackInfo) { return callbackInfo.id === id; });\n        if (index === -1) {\n            this.logger.debug(\"Remote config client unsubscribe failed because callback with id \".concat(id, \" doesn't exist.\"));\n            return false;\n        }\n        this.callbackInfos.splice(index, 1);\n        this.logger.debug(\"Remote config client unsubscribe succeeded removing callback with id \".concat(id, \".\"));\n        return true;\n    };\n    RemoteConfigClient.prototype.updateConfigs = function () {\n        return __awaiter(this, void 0, void 0, function () {\n            var result;\n            var _this = this;\n            return __generator(this, function (_a) {\n                switch (_a.label) {\n                    case 0: return [4 /*yield*/, this.fetch()];\n                    case 1:\n                        result = _a.sent();\n                        void this.storage.setConfig(result);\n                        this.callbackInfos.forEach(function (callbackInfo) {\n                            _this.sendCallback(callbackInfo, result, 'remote');\n                        });\n                        return [2 /*return*/];\n                }\n            });\n        });\n    };\n    /**\n     * Send remote first. If it's already complete, we can skip the cached response.\n     * - if remote is fetched first, no cache fetch.\n     * - if cache is fetched first, still fetching remote.\n     */\n    RemoteConfigClient.prototype.subscribeAll = function (callbackInfo) {\n        return __awaiter(this, void 0, void 0, function () {\n            var remotePromise, cachePromise, result;\n            var _this = this;\n            return __generator(this, function (_a) {\n                switch (_a.label) {\n                    case 0:\n                        remotePromise = this.fetch().then(function (result) {\n                            _this.logger.debug(\"Remote config client subscription all mode fetched from remote: \".concat(JSON.stringify(result)));\n                            _this.sendCallback(callbackInfo, result, 'remote');\n                            void _this.storage.setConfig(result);\n                        });\n                        cachePromise = this.storage.fetchConfig().then(function (result) {\n                            return result;\n                        });\n                        return [4 /*yield*/, Promise.race([remotePromise, cachePromise])];\n                    case 1:\n                        result = _a.sent();\n                        // If cache is fetched first, wait for remote.\n                        if (result !== undefined) {\n                            this.logger.debug(\"Remote config client subscription all mode fetched from cache: \".concat(JSON.stringify(result)));\n                            this.sendCallback(callbackInfo, result, 'cache');\n                        }\n                        return [4 /*yield*/, remotePromise];\n                    case 2:\n                        _a.sent();\n                        return [2 /*return*/];\n                }\n            });\n        });\n    };\n    /**\n     * Waits for a remote response until the given timeout, then return a cached copy, if available.\n     */\n    RemoteConfigClient.prototype.subscribeWaitForRemote = function (callbackInfo, timeout) {\n        return __awaiter(this, void 0, void 0, function () {\n            var timeoutPromise, result, error_1, result;\n            return __generator(this, function (_a) {\n                switch (_a.label) {\n                    case 0:\n                        timeoutPromise = new Promise(function (_, reject) {\n                            setTimeout(function () {\n                                reject('Timeout exceeded');\n                            }, timeout);\n                        });\n                        _a.label = 1;\n                    case 1:\n                        _a.trys.push([1, 3, , 5]);\n                        return [4 /*yield*/, Promise.race([this.fetch(), timeoutPromise])];\n                    case 2:\n                        result = (_a.sent());\n                        this.logger.debug('Remote config client subscription wait for remote mode returns from remote.');\n                        this.sendCallback(callbackInfo, result, 'remote');\n                        void this.storage.setConfig(result);\n                        return [3 /*break*/, 5];\n                    case 3:\n                        error_1 = _a.sent();\n                        this.logger.debug('Remote config client subscription wait for remote mode exceeded timeout. Try to fetch from cache.');\n                        return [4 /*yield*/, this.storage.fetchConfig()];\n                    case 4:\n                        result = _a.sent();\n                        if (result.remoteConfig !== null) {\n                            this.logger.debug('Remote config client subscription wait for remote mode returns a cached copy.');\n                            this.sendCallback(callbackInfo, result, 'cache');\n                        }\n                        else {\n                            this.logger.debug('Remote config client subscription wait for remote mode failed to fetch cache.');\n                            this.sendCallback(callbackInfo, result, 'remote');\n                        }\n                        return [3 /*break*/, 5];\n                    case 5: return [2 /*return*/];\n                }\n            });\n        });\n    };\n    /**\n     * Call the callback with filtered remote config based on key.\n     * @param remoteConfigInfo - the whole remote config object without filtering by key.\n     */\n    RemoteConfigClient.prototype.sendCallback = function (callbackInfo, remoteConfigInfo, source) {\n        callbackInfo.lastCallback = new Date();\n        var filteredConfig;\n        if (callbackInfo.key) {\n            // Filter remote config by key.\n            // For example, if remote config is {a: {b: {c: 1}}},\n            // if key = 'a', filter result is {b: {c: 1}};\n            // if key = 'a.b', filter result is {c: 1}\n            filteredConfig = callbackInfo.key.split('.').reduce(function (config, key) {\n                if (config === null) {\n                    return config;\n                }\n                return key in config ? config[key] : null;\n            }, remoteConfigInfo.remoteConfig);\n        }\n        else {\n            filteredConfig = remoteConfigInfo.remoteConfig;\n        }\n        callbackInfo.callback(filteredConfig, source, remoteConfigInfo.lastFetch);\n    };\n    /**\n     * Fetch remote config from remote.\n     * @param retries - the number of retries. default is 3.\n     * @param timeout - the timeout in milliseconds. Default is 1000.\n     * This timeout serves two purposes:\n     * 1. It determines how long to wait for each remote config fetch request before aborting it.\n     *    If the fetch does not complete within the specified timeout, the request is cancelled using AbortController,\n     *    and the attempt is considered failed (and may be retried if retries remain).\n     * 2. It is also used to calculate the interval between retries. The total timeout is divided by the number of retries,\n     *    so each retry waits for (timeout / retries) milliseconds before the next attempt (linear backoff).\n     * @returns the remote config info. null if failed to fetch or the response is not valid JSON.\n     */\n    RemoteConfigClient.prototype.fetch = function (retries, timeout) {\n        if (retries === void 0) { retries = DEFAULT_MAX_RETRIES; }\n        if (timeout === void 0) { timeout = DEFAULT_TIMEOUT; }\n        return __awaiter(this, void 0, void 0, function () {\n            var interval, failedRemoteConfigInfo, _loop_1, this_1, attempt, state_1;\n            var _this = this;\n            return __generator(this, function (_a) {\n                switch (_a.label) {\n                    case 0:\n                        interval = timeout / retries;\n                        failedRemoteConfigInfo = {\n                            remoteConfig: null,\n                            lastFetch: new Date(),\n                        };\n                        _loop_1 = function (attempt) {\n                            var abortController, timeoutId, res, body, remoteConfig, error_2;\n                            return __generator(this, function (_b) {\n                                switch (_b.label) {\n                                    case 0:\n                                        abortController = new AbortController();\n                                        timeoutId = setTimeout(function () { return abortController.abort(); }, timeout);\n                                        _b.label = 1;\n                                    case 1:\n                                        _b.trys.push([1, 7, 8, 9]);\n                                        return [4 /*yield*/, fetch(this_1.getUrlParams(), {\n                                                method: 'GET',\n                                                headers: {\n                                                    Accept: '*/*',\n                                                },\n                                                signal: abortController.signal,\n                                            })];\n                                    case 2:\n                                        res = _b.sent();\n                                        if (!!res.ok) return [3 /*break*/, 4];\n                                        return [4 /*yield*/, res.text()];\n                                    case 3:\n                                        body = _b.sent();\n                                        this_1.logger.debug(\"Remote config client fetch with retry time \".concat(retries, \" failed with \").concat(res.status, \": \").concat(body));\n                                        return [3 /*break*/, 6];\n                                    case 4: return [4 /*yield*/, res.json()];\n                                    case 5:\n                                        remoteConfig = (_b.sent());\n                                        return [2 /*return*/, { value: {\n                                                    remoteConfig: remoteConfig,\n                                                    lastFetch: new Date(),\n                                                } }];\n                                    case 6: return [3 /*break*/, 9];\n                                    case 7:\n                                        error_2 = _b.sent();\n                                        // Handle rejects when the request fails, for example, a network error or timeout\n                                        if (error_2 instanceof Error && error_2.name === 'AbortError') {\n                                            this_1.logger.debug(\"Remote config client fetch with retry time \".concat(retries, \" timed out after \").concat(timeout, \"ms\"));\n                                        }\n                                        else {\n                                            this_1.logger.debug(\"Remote config client fetch with retry time \".concat(retries, \" is rejected because: \"), error_2);\n                                        }\n                                        return [3 /*break*/, 9];\n                                    case 8:\n                                        // Clear the timeout since request completed or failed\n                                        clearTimeout(timeoutId);\n                                        return [7 /*endfinally*/];\n                                    case 9:\n                                        if (!(attempt < retries - 1)) return [3 /*break*/, 11];\n                                        return [4 /*yield*/, new Promise(function (resolve) { return setTimeout(resolve, _this.getJitterDelay(interval)); })];\n                                    case 10:\n                                        _b.sent();\n                                        _b.label = 11;\n                                    case 11: return [2 /*return*/];\n                                }\n                            });\n                        };\n                        this_1 = this;\n                        attempt = 0;\n                        _a.label = 1;\n                    case 1:\n                        if (!(attempt < retries)) return [3 /*break*/, 4];\n                        return [5 /*yield**/, _loop_1(attempt)];\n                    case 2:\n                        state_1 = _a.sent();\n                        if (typeof state_1 === \"object\")\n                            return [2 /*return*/, state_1.value];\n                        _a.label = 3;\n                    case 3:\n                        attempt++;\n                        return [3 /*break*/, 1];\n                    case 4: return [2 /*return*/, failedRemoteConfigInfo];\n                }\n            });\n        });\n    };\n    /**\n     * Return jitter in the bound of [0,baseDelay) and then floor round.\n     */\n    RemoteConfigClient.prototype.getJitterDelay = function (baseDelay) {\n        return Math.floor(Math.random() * baseDelay);\n    };\n    RemoteConfigClient.prototype.getUrlParams = function () {\n        // URL encode the API key to handle special characters\n        var encodedApiKey = encodeURIComponent(this.apiKey);\n        var urlParams = new URLSearchParams();\n        urlParams.append('config_group', RemoteConfigClient.CONFIG_GROUP);\n        return \"\".concat(this.serverUrl, \"/\").concat(encodedApiKey, \"?\").concat(urlParams.toString());\n    };\n    RemoteConfigClient.CONFIG_GROUP = 'browser';\n    return RemoteConfigClient;\n}());\nexport { RemoteConfigClient };\n//# sourceMappingURL=remote-config.js.map","export var LogLevel;\n(function (LogLevel) {\n    LogLevel[LogLevel[\"None\"] = 0] = \"None\";\n    LogLevel[LogLevel[\"Error\"] = 1] = \"Error\";\n    LogLevel[LogLevel[\"Warn\"] = 2] = \"Warn\";\n    LogLevel[LogLevel[\"Verbose\"] = 3] = \"Verbose\";\n    LogLevel[LogLevel[\"Debug\"] = 4] = \"Debug\";\n})(LogLevel || (LogLevel = {}));\n//# sourceMappingURL=loglevel.js.map","import { LogLevel } from './types/loglevel';\nvar PREFIX = 'Amplitude Logger ';\nvar Logger = /** @class */ (function () {\n    function Logger() {\n        this.logLevel = LogLevel.None;\n    }\n    Logger.prototype.disable = function () {\n        this.logLevel = LogLevel.None;\n    };\n    Logger.prototype.enable = function (logLevel) {\n        if (logLevel === void 0) { logLevel = LogLevel.Warn; }\n        this.logLevel = logLevel;\n    };\n    Logger.prototype.log = function () {\n        var args = [];\n        for (var _i = 0; _i < arguments.length; _i++) {\n            args[_i] = arguments[_i];\n        }\n        if (this.logLevel < LogLevel.Verbose) {\n            return;\n        }\n        console.log(\"\".concat(PREFIX, \"[Log]: \").concat(args.join(' ')));\n    };\n    Logger.prototype.warn = function () {\n        var args = [];\n        for (var _i = 0; _i < arguments.length; _i++) {\n            args[_i] = arguments[_i];\n        }\n        if (this.logLevel < LogLevel.Warn) {\n            return;\n        }\n        console.warn(\"\".concat(PREFIX, \"[Warn]: \").concat(args.join(' ')));\n    };\n    Logger.prototype.error = function () {\n        var args = [];\n        for (var _i = 0; _i < arguments.length; _i++) {\n            args[_i] = arguments[_i];\n        }\n        if (this.logLevel < LogLevel.Error) {\n            return;\n        }\n        console.error(\"\".concat(PREFIX, \"[Error]: \").concat(args.join(' ')));\n    };\n    Logger.prototype.debug = function () {\n        var args = [];\n        for (var _i = 0; _i < arguments.length; _i++) {\n            args[_i] = arguments[_i];\n        }\n        if (this.logLevel < LogLevel.Debug) {\n            return;\n        }\n        // console.debug output is hidden by default in chrome\n        console.log(\"\".concat(PREFIX, \"[Debug]: \").concat(args.join(' ')));\n    };\n    return Logger;\n}());\nexport { Logger };\n//# sourceMappingURL=logger.js.map","import { __assign } from \"tslib\";\nimport { isValidObject } from './utils/valid-properties';\nvar Revenue = /** @class */ (function () {\n    function Revenue() {\n        this.productId = '';\n        this.quantity = 1;\n        this.price = 0.0;\n    }\n    Revenue.prototype.setProductId = function (productId) {\n        this.productId = productId;\n        return this;\n    };\n    Revenue.prototype.setQuantity = function (quantity) {\n        if (quantity > 0) {\n            this.quantity = quantity;\n        }\n        return this;\n    };\n    Revenue.prototype.setPrice = function (price) {\n        this.price = price;\n        return this;\n    };\n    Revenue.prototype.setRevenueType = function (revenueType) {\n        this.revenueType = revenueType;\n        return this;\n    };\n    Revenue.prototype.setCurrency = function (currency) {\n        this.currency = currency;\n        return this;\n    };\n    Revenue.prototype.setRevenue = function (revenue) {\n        this.revenue = revenue;\n        return this;\n    };\n    Revenue.prototype.setReceipt = function (receipt) {\n        this.receipt = receipt;\n        return this;\n    };\n    Revenue.prototype.setReceiptSig = function (receiptSig) {\n        this.receiptSig = receiptSig;\n        return this;\n    };\n    Revenue.prototype.setEventProperties = function (properties) {\n        if (isValidObject(properties)) {\n            this.properties = properties;\n        }\n        return this;\n    };\n    Revenue.prototype.getEventProperties = function () {\n        var eventProperties = this.properties ? __assign({}, this.properties) : {};\n        eventProperties[RevenueProperty.REVENUE_PRODUCT_ID] = this.productId;\n        eventProperties[RevenueProperty.REVENUE_QUANTITY] = this.quantity;\n        eventProperties[RevenueProperty.REVENUE_PRICE] = this.price;\n        eventProperties[RevenueProperty.REVENUE_TYPE] = this.revenueType;\n        eventProperties[RevenueProperty.REVENUE_CURRENCY] = this.currency;\n        eventProperties[RevenueProperty.REVENUE] = this.revenue;\n        eventProperties[RevenueProperty.RECEIPT] = this.receipt;\n        eventProperties[RevenueProperty.RECEIPT_SIG] = this.receiptSig;\n        return eventProperties;\n    };\n    return Revenue;\n}());\nexport { Revenue };\nexport var RevenueProperty;\n(function (RevenueProperty) {\n    RevenueProperty[\"REVENUE_PRODUCT_ID\"] = \"$productId\";\n    RevenueProperty[\"REVENUE_QUANTITY\"] = \"$quantity\";\n    RevenueProperty[\"REVENUE_PRICE\"] = \"$price\";\n    RevenueProperty[\"REVENUE_TYPE\"] = \"$revenueType\";\n    RevenueProperty[\"REVENUE_CURRENCY\"] = \"$currency\";\n    RevenueProperty[\"REVENUE\"] = \"$revenue\";\n    RevenueProperty[\"RECEIPT\"] = \"$receipt\";\n    RevenueProperty[\"RECEIPT_SIG\"] = \"$receiptSig\";\n})(RevenueProperty || (RevenueProperty = {}));\n//# sourceMappingURL=revenue.js.map","// Creates an array of elements split into groups the length of size.\n// If array can't be split evenly, the final chunk will be the remaining elements.\n// Works similary as https://lodash.com/docs/4.17.15#chunk\nexport var chunk = function (arr, size) {\n    var chunkSize = Math.max(size, 1);\n    return arr.reduce(function (chunks, element, index) {\n        var chunkIndex = Math.floor(index / chunkSize);\n        if (!chunks[chunkIndex]) {\n            chunks[chunkIndex] = [];\n        }\n        chunks[chunkIndex].push(element);\n        return chunks;\n    }, []);\n};\n//# sourceMappingURL=chunk.js.map","import { AMPLITUDE_SERVER_URL, AMPLITUDE_BATCH_SERVER_URL, EU_AMPLITUDE_SERVER_URL, EU_AMPLITUDE_BATCH_SERVER_URL, DEFAULT_INSTANCE_NAME, } from './types/constants';\nimport { Logger } from './logger';\nimport { LogLevel } from './types/loglevel';\nexport var getDefaultConfig = function () { return ({\n    flushMaxRetries: 12,\n    flushQueueSize: 200,\n    flushIntervalMillis: 10000,\n    instanceName: DEFAULT_INSTANCE_NAME,\n    logLevel: LogLevel.Warn,\n    loggerProvider: new Logger(),\n    offline: false,\n    optOut: false,\n    serverUrl: AMPLITUDE_SERVER_URL,\n    serverZone: 'US',\n    useBatch: false,\n}); };\nvar Config = /** @class */ (function () {\n    function Config(options) {\n        var _a, _b, _c, _d;\n        this._optOut = false;\n        var defaultConfig = getDefaultConfig();\n        this.apiKey = options.apiKey;\n        this.flushIntervalMillis = (_a = options.flushIntervalMillis) !== null && _a !== void 0 ? _a : defaultConfig.flushIntervalMillis;\n        this.flushMaxRetries = options.flushMaxRetries || defaultConfig.flushMaxRetries;\n        this.flushQueueSize = options.flushQueueSize || defaultConfig.flushQueueSize;\n        this.instanceName = options.instanceName || defaultConfig.instanceName;\n        this.loggerProvider = options.loggerProvider || defaultConfig.loggerProvider;\n        this.logLevel = (_b = options.logLevel) !== null && _b !== void 0 ? _b : defaultConfig.logLevel;\n        this.minIdLength = options.minIdLength;\n        this.plan = options.plan;\n        this.ingestionMetadata = options.ingestionMetadata;\n        this.offline = options.offline !== undefined ? options.offline : defaultConfig.offline;\n        this.optOut = (_c = options.optOut) !== null && _c !== void 0 ? _c : defaultConfig.optOut;\n        this.serverUrl = options.serverUrl;\n        this.serverZone = options.serverZone || defaultConfig.serverZone;\n        this.storageProvider = options.storageProvider;\n        this.transportProvider = options.transportProvider;\n        this.useBatch = (_d = options.useBatch) !== null && _d !== void 0 ? _d : defaultConfig.useBatch;\n        this.loggerProvider.enable(this.logLevel);\n        var serverConfig = createServerConfig(options.serverUrl, options.serverZone, options.useBatch);\n        this.serverZone = serverConfig.serverZone;\n        this.serverUrl = serverConfig.serverUrl;\n    }\n    Object.defineProperty(Config.prototype, \"optOut\", {\n        get: function () {\n            return this._optOut;\n        },\n        set: function (optOut) {\n            this._optOut = optOut;\n        },\n        enumerable: false,\n        configurable: true\n    });\n    return Config;\n}());\nexport { Config };\nexport var getServerUrl = function (serverZone, useBatch) {\n    if (serverZone === 'EU') {\n        return useBatch ? EU_AMPLITUDE_BATCH_SERVER_URL : EU_AMPLITUDE_SERVER_URL;\n    }\n    return useBatch ? AMPLITUDE_BATCH_SERVER_URL : AMPLITUDE_SERVER_URL;\n};\nexport var createServerConfig = function (serverUrl, serverZone, useBatch) {\n    if (serverUrl === void 0) { serverUrl = ''; }\n    if (serverZone === void 0) { serverZone = getDefaultConfig().serverZone; }\n    if (useBatch === void 0) { useBatch = getDefaultConfig().useBatch; }\n    if (serverUrl) {\n        return { serverUrl: serverUrl, serverZone: undefined };\n    }\n    var _serverZone = ['US', 'EU'].includes(serverZone) ? serverZone : getDefaultConfig().serverZone;\n    return {\n        serverZone: _serverZone,\n        serverUrl: getServerUrl(_serverZone, useBatch),\n    };\n};\nvar RequestMetadata = /** @class */ (function () {\n    function RequestMetadata() {\n        this.sdk = {\n            metrics: {\n                histogram: {},\n            },\n        };\n    }\n    RequestMetadata.prototype.recordHistogram = function (key, value) {\n        this.sdk.metrics.histogram[key] = value;\n    };\n    return RequestMetadata;\n}());\nexport { RequestMetadata };\nvar HistogramOptions = /** @class */ (function () {\n    function HistogramOptions() {\n    }\n    return HistogramOptions;\n}());\n//# sourceMappingURL=config.js.map","import { __awaiter, __generator, __read, __rest, __spreadArray } from \"tslib\";\nimport { Status } from '../types/status';\nimport { INVALID_API_KEY, MAX_RETRIES_EXCEEDED_MESSAGE, MISSING_API_KEY_MESSAGE, SUCCESS_MESSAGE, UNEXPECTED_ERROR_MESSAGE, } from '../types/messages';\nimport { STORAGE_PREFIX } from '../types/constants';\nimport { chunk } from '../utils/chunk';\nimport { buildResult } from '../utils/result-builder';\nimport { createServerConfig, RequestMetadata } from '../config';\nimport { UUID } from '../utils/uuid';\nfunction getErrorMessage(error) {\n    if (error instanceof Error)\n        return error.message;\n    return String(error);\n}\nexport function getResponseBodyString(res) {\n    var responseBodyString = '';\n    try {\n        if ('body' in res) {\n            responseBodyString = JSON.stringify(res.body, null, 2);\n        }\n    }\n    catch (_a) {\n        // to avoid crash, but don't care about the error, add comment to avoid empty block lint error\n    }\n    return responseBodyString;\n}\nvar Destination = /** @class */ (function () {\n    function Destination() {\n        this.name = 'amplitude';\n        this.type = 'destination';\n        this.retryTimeout = 1000;\n        this.throttleTimeout = 30000;\n        this.storageKey = '';\n        // Indicator of whether events that are scheduled (but not flushed yet).\n        // When flush:\n        //   1. assign `scheduleId` to `flushId`\n        //   2. set `scheduleId` to null\n        this.scheduleId = null;\n        // Timeout in milliseconds of current schedule\n        this.scheduledTimeout = 0;\n        // Indicator of whether current flush resolves.\n        // When flush resolves, set `flushId` to null\n        this.flushId = null;\n        this.queue = [];\n    }\n    Destination.prototype.setup = function (config) {\n        var _a;\n        return __awaiter(this, void 0, void 0, function () {\n            var unsent;\n            var _this = this;\n            return __generator(this, function (_b) {\n                switch (_b.label) {\n                    case 0:\n                        this.config = config;\n                        this.storageKey = \"\".concat(STORAGE_PREFIX, \"_\").concat(this.config.apiKey.substring(0, 10));\n                        return [4 /*yield*/, ((_a = this.config.storageProvider) === null || _a === void 0 ? void 0 : _a.get(this.storageKey))];\n                    case 1:\n                        unsent = _b.sent();\n                        if (unsent && unsent.length > 0) {\n                            void Promise.all(unsent.map(function (event) { return _this.execute(event); })).catch();\n                        }\n                        return [2 /*return*/, Promise.resolve(undefined)];\n                }\n            });\n        });\n    };\n    Destination.prototype.execute = function (event) {\n        var _this = this;\n        // Assign insert_id for dropping invalid event later\n        if (!event.insert_id) {\n            event.insert_id = UUID();\n        }\n        return new Promise(function (resolve) {\n            var context = {\n                event: event,\n                attempts: 0,\n                callback: function (result) { return resolve(result); },\n                timeout: 0,\n            };\n            _this.queue.push(context);\n            _this.schedule(_this.config.flushIntervalMillis);\n            _this.saveEvents();\n        });\n    };\n    Destination.prototype.removeEventsExceedFlushMaxRetries = function (list) {\n        var _this = this;\n        return list.filter(function (context) {\n            context.attempts += 1;\n            if (context.attempts < _this.config.flushMaxRetries) {\n                return true;\n            }\n            void _this.fulfillRequest([context], 500, MAX_RETRIES_EXCEEDED_MESSAGE);\n            return false;\n        });\n    };\n    Destination.prototype.scheduleEvents = function (list) {\n        var _this = this;\n        list.forEach(function (context) {\n            _this.schedule(context.timeout === 0 ? _this.config.flushIntervalMillis : context.timeout);\n        });\n    };\n    // Schedule a flush in timeout when\n    // 1. No schedule\n    // 2. Timeout greater than existing timeout.\n    // This makes sure that when throttled, no flush when throttle timeout expires.\n    Destination.prototype.schedule = function (timeout) {\n        var _this = this;\n        if (this.config.offline) {\n            return;\n        }\n        if (this.scheduleId === null || (this.scheduleId && timeout > this.scheduledTimeout)) {\n            if (this.scheduleId) {\n                clearTimeout(this.scheduleId);\n            }\n            this.scheduledTimeout = timeout;\n            this.scheduleId = setTimeout(function () {\n                _this.queue = _this.queue.map(function (context) {\n                    context.timeout = 0;\n                    return context;\n                });\n                void _this.flush(true);\n            }, timeout);\n            return;\n        }\n    };\n    // Mark current schedule is flushed.\n    Destination.prototype.resetSchedule = function () {\n        this.scheduleId = null;\n        this.scheduledTimeout = 0;\n    };\n    // Flush all events regardless of their timeout\n    Destination.prototype.flush = function (useRetry) {\n        if (useRetry === void 0) { useRetry = false; }\n        return __awaiter(this, void 0, void 0, function () {\n            var list, later, batches;\n            var _this = this;\n            return __generator(this, function (_a) {\n                switch (_a.label) {\n                    case 0:\n                        // Skip flush if offline\n                        if (this.config.offline) {\n                            this.resetSchedule();\n                            this.config.loggerProvider.debug('Skipping flush while offline.');\n                            return [2 /*return*/];\n                        }\n                        if (this.flushId) {\n                            this.resetSchedule();\n                            this.config.loggerProvider.debug('Skipping flush because previous flush has not resolved.');\n                            return [2 /*return*/];\n                        }\n                        this.flushId = this.scheduleId;\n                        this.resetSchedule();\n                        list = [];\n                        later = [];\n                        this.queue.forEach(function (context) { return (context.timeout === 0 ? list.push(context) : later.push(context)); });\n                        batches = chunk(list, this.config.flushQueueSize);\n                        // Promise.all() doesn't guarantee resolve order.\n                        // Sequentially resolve to make sure backend receives events in order\n                        return [4 /*yield*/, batches.reduce(function (promise, batch) { return __awaiter(_this, void 0, void 0, function () {\n                                return __generator(this, function (_a) {\n                                    switch (_a.label) {\n                                        case 0: return [4 /*yield*/, promise];\n                                        case 1:\n                                            _a.sent();\n                                            return [4 /*yield*/, this.send(batch, useRetry)];\n                                        case 2: return [2 /*return*/, _a.sent()];\n                                    }\n                                });\n                            }); }, Promise.resolve())];\n                    case 1:\n                        // Promise.all() doesn't guarantee resolve order.\n                        // Sequentially resolve to make sure backend receives events in order\n                        _a.sent();\n                        // Mark current flush is done\n                        this.flushId = null;\n                        this.scheduleEvents(this.queue);\n                        return [2 /*return*/];\n                }\n            });\n        });\n    };\n    Destination.prototype.send = function (list, useRetry) {\n        if (useRetry === void 0) { useRetry = true; }\n        return __awaiter(this, void 0, void 0, function () {\n            var payload, serverUrl, res, e_1, errorMessage;\n            return __generator(this, function (_a) {\n                switch (_a.label) {\n                    case 0:\n                        if (!this.config.apiKey) {\n                            return [2 /*return*/, this.fulfillRequest(list, 400, MISSING_API_KEY_MESSAGE)];\n                        }\n                        payload = {\n                            api_key: this.config.apiKey,\n                            events: list.map(function (context) {\n                                // eslint-disable-next-line @typescript-eslint/no-unused-vars\n                                var _a = context.event, extra = _a.extra, eventWithoutExtra = __rest(_a, [\"extra\"]);\n                                return eventWithoutExtra;\n                            }),\n                            options: {\n                                min_id_length: this.config.minIdLength,\n                            },\n                            client_upload_time: new Date().toISOString(),\n                            request_metadata: this.config.requestMetadata,\n                        };\n                        this.config.requestMetadata = new RequestMetadata();\n                        _a.label = 1;\n                    case 1:\n                        _a.trys.push([1, 3, , 4]);\n                        serverUrl = createServerConfig(this.config.serverUrl, this.config.serverZone, this.config.useBatch).serverUrl;\n                        return [4 /*yield*/, this.config.transportProvider.send(serverUrl, payload)];\n                    case 2:\n                        res = _a.sent();\n                        if (res === null) {\n                            this.fulfillRequest(list, 0, UNEXPECTED_ERROR_MESSAGE);\n                            return [2 /*return*/];\n                        }\n                        if (!useRetry) {\n                            if ('body' in res) {\n                                this.fulfillRequest(list, res.statusCode, \"\".concat(res.status, \": \").concat(getResponseBodyString(res)));\n                            }\n                            else {\n                                this.fulfillRequest(list, res.statusCode, res.status);\n                            }\n                            return [2 /*return*/];\n                        }\n                        this.handleResponse(res, list);\n                        return [3 /*break*/, 4];\n                    case 3:\n                        e_1 = _a.sent();\n                        errorMessage = getErrorMessage(e_1);\n                        this.config.loggerProvider.error(errorMessage);\n                        this.handleResponse({ status: Status.Failed, statusCode: 0 }, list);\n                        return [3 /*break*/, 4];\n                    case 4: return [2 /*return*/];\n                }\n            });\n        });\n    };\n    Destination.prototype.handleResponse = function (res, list) {\n        var status = res.status;\n        switch (status) {\n            case Status.Success: {\n                this.handleSuccessResponse(res, list);\n                break;\n            }\n            case Status.Invalid: {\n                this.handleInvalidResponse(res, list);\n                break;\n            }\n            case Status.PayloadTooLarge: {\n                this.handlePayloadTooLargeResponse(res, list);\n                break;\n            }\n            case Status.RateLimit: {\n                this.handleRateLimitResponse(res, list);\n                break;\n            }\n            default: {\n                // log intermediate event status before retry\n                this.config.loggerProvider.warn(\"{code: 0, error: \\\"Status '\".concat(status, \"' provided for \").concat(list.length, \" events\\\"}\"));\n                this.handleOtherResponse(list);\n                break;\n            }\n        }\n    };\n    Destination.prototype.handleSuccessResponse = function (res, list) {\n        this.fulfillRequest(list, res.statusCode, SUCCESS_MESSAGE);\n    };\n    Destination.prototype.handleInvalidResponse = function (res, list) {\n        var _this = this;\n        if (res.body.missingField || res.body.error.startsWith(INVALID_API_KEY)) {\n            this.fulfillRequest(list, res.statusCode, res.body.error);\n            return;\n        }\n        var dropIndex = __spreadArray(__spreadArray(__spreadArray(__spreadArray([], __read(Object.values(res.body.eventsWithInvalidFields)), false), __read(Object.values(res.body.eventsWithMissingFields)), false), __read(Object.values(res.body.eventsWithInvalidIdLengths)), false), __read(res.body.silencedEvents), false).flat();\n        var dropIndexSet = new Set(dropIndex);\n        var retry = list.filter(function (context, index) {\n            if (dropIndexSet.has(index)) {\n                _this.fulfillRequest([context], res.statusCode, res.body.error);\n                return;\n            }\n            return true;\n        });\n        if (retry.length > 0) {\n            // log intermediate event status before retry\n            this.config.loggerProvider.warn(getResponseBodyString(res));\n        }\n        var tryable = this.removeEventsExceedFlushMaxRetries(retry);\n        this.scheduleEvents(tryable);\n    };\n    Destination.prototype.handlePayloadTooLargeResponse = function (res, list) {\n        if (list.length === 1) {\n            this.fulfillRequest(list, res.statusCode, res.body.error);\n            return;\n        }\n        // log intermediate event status before retry\n        this.config.loggerProvider.warn(getResponseBodyString(res));\n        this.config.flushQueueSize /= 2;\n        var tryable = this.removeEventsExceedFlushMaxRetries(list);\n        this.scheduleEvents(tryable);\n    };\n    Destination.prototype.handleRateLimitResponse = function (res, list) {\n        var _this = this;\n        var dropUserIds = Object.keys(res.body.exceededDailyQuotaUsers);\n        var dropDeviceIds = Object.keys(res.body.exceededDailyQuotaDevices);\n        var throttledIndex = res.body.throttledEvents;\n        var dropUserIdsSet = new Set(dropUserIds);\n        var dropDeviceIdsSet = new Set(dropDeviceIds);\n        var throttledIndexSet = new Set(throttledIndex);\n        var retry = list.filter(function (context, index) {\n            if ((context.event.user_id && dropUserIdsSet.has(context.event.user_id)) ||\n                (context.event.device_id && dropDeviceIdsSet.has(context.event.device_id))) {\n                _this.fulfillRequest([context], res.statusCode, res.body.error);\n                return;\n            }\n            if (throttledIndexSet.has(index)) {\n                context.timeout = _this.throttleTimeout;\n            }\n            return true;\n        });\n        if (retry.length > 0) {\n            // log intermediate event status before retry\n            this.config.loggerProvider.warn(getResponseBodyString(res));\n        }\n        var tryable = this.removeEventsExceedFlushMaxRetries(retry);\n        this.scheduleEvents(tryable);\n    };\n    Destination.prototype.handleOtherResponse = function (list) {\n        var _this = this;\n        var later = list.map(function (context) {\n            context.timeout = context.attempts * _this.retryTimeout;\n            return context;\n        });\n        var tryable = this.removeEventsExceedFlushMaxRetries(later);\n        this.scheduleEvents(tryable);\n    };\n    Destination.prototype.fulfillRequest = function (list, code, message) {\n        this.removeEvents(list);\n        list.forEach(function (context) { return context.callback(buildResult(context.event, code, message)); });\n    };\n    /**\n     * This is called on\n     * 1) new events are added to queue; or\n     * 2) response comes back for a request\n     *\n     * Update the event storage based on the queue\n     */\n    Destination.prototype.saveEvents = function () {\n        if (!this.config.storageProvider) {\n            return;\n        }\n        var updatedEvents = this.queue.map(function (context) { return context.event; });\n        void this.config.storageProvider.set(this.storageKey, updatedEvents);\n    };\n    /**\n     * This is called on response comes back for a request\n     */\n    Destination.prototype.removeEvents = function (eventsToRemove) {\n        this.queue = this.queue.filter(function (queuedContext) { return !eventsToRemove.some(function (context) { return context.event.insert_id === queuedContext.event.insert_id; }); });\n        this.saveEvents();\n    };\n    return Destination;\n}());\nexport { Destination };\n//# sourceMappingURL=destination.js.map","var ApplicationContextProviderImpl = /** @class */ (function () {\n    function ApplicationContextProviderImpl() {\n    }\n    ApplicationContextProviderImpl.prototype.getApplicationContext = function () {\n        return {\n            versionName: this.versionName,\n            language: getLanguage(),\n            platform: 'Web',\n            os: undefined,\n            deviceModel: undefined,\n        };\n    };\n    return ApplicationContextProviderImpl;\n}());\nvar getLanguage = function () {\n    return ((typeof navigator !== 'undefined' &&\n        ((navigator.languages && navigator.languages[0]) ||\n            navigator.language)) ||\n        '');\n};\n\nvar EventBridgeImpl = /** @class */ (function () {\n    function EventBridgeImpl() {\n        this.queue = [];\n    }\n    EventBridgeImpl.prototype.logEvent = function (event) {\n        if (!this.receiver) {\n            if (this.queue.length < 512) {\n                this.queue.push(event);\n            }\n        }\n        else {\n            this.receiver(event);\n        }\n    };\n    EventBridgeImpl.prototype.setEventReceiver = function (receiver) {\n        this.receiver = receiver;\n        if (this.queue.length > 0) {\n            this.queue.forEach(function (event) {\n                receiver(event);\n            });\n            this.queue = [];\n        }\n    };\n    return EventBridgeImpl;\n}());\n\n/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\nvar __assign = function () {\n  __assign = Object.assign || function __assign(t) {\n    for (var s, i = 1, n = arguments.length; i < n; i++) {\n      s = arguments[i];\n      for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n    }\n    return t;\n  };\n  return __assign.apply(this, arguments);\n};\nfunction __values(o) {\n  var s = typeof Symbol === \"function\" && Symbol.iterator,\n    m = s && o[s],\n    i = 0;\n  if (m) return m.call(o);\n  if (o && typeof o.length === \"number\") return {\n    next: function () {\n      if (o && i >= o.length) o = void 0;\n      return {\n        value: o && o[i++],\n        done: !o\n      };\n    }\n  };\n  throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n}\nfunction __read(o, n) {\n  var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n  if (!m) return o;\n  var i = m.call(o),\n    r,\n    ar = [],\n    e;\n  try {\n    while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n  } catch (error) {\n    e = {\n      error: error\n    };\n  } finally {\n    try {\n      if (r && !r.done && (m = i[\"return\"])) m.call(i);\n    } finally {\n      if (e) throw e.error;\n    }\n  }\n  return ar;\n}\ntypeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\n  var e = new Error(message);\n  return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\n};\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nvar isEqual = function (obj1, obj2) {\n    var e_1, _a;\n    var primitive = ['string', 'number', 'boolean', 'undefined'];\n    var typeA = typeof obj1;\n    var typeB = typeof obj2;\n    if (typeA !== typeB) {\n        return false;\n    }\n    try {\n        for (var primitive_1 = __values(primitive), primitive_1_1 = primitive_1.next(); !primitive_1_1.done; primitive_1_1 = primitive_1.next()) {\n            var p = primitive_1_1.value;\n            if (p === typeA) {\n                return obj1 === obj2;\n            }\n        }\n    }\n    catch (e_1_1) { e_1 = { error: e_1_1 }; }\n    finally {\n        try {\n            if (primitive_1_1 && !primitive_1_1.done && (_a = primitive_1.return)) _a.call(primitive_1);\n        }\n        finally { if (e_1) throw e_1.error; }\n    }\n    // check null\n    if (obj1 == null && obj2 == null) {\n        return true;\n    }\n    else if (obj1 == null || obj2 == null) {\n        return false;\n    }\n    // if got here - objects\n    if (obj1.length !== obj2.length) {\n        return false;\n    }\n    //check if arrays\n    var isArrayA = Array.isArray(obj1);\n    var isArrayB = Array.isArray(obj2);\n    if (isArrayA !== isArrayB) {\n        return false;\n    }\n    if (isArrayA && isArrayB) {\n        //arrays\n        for (var i = 0; i < obj1.length; i++) {\n            if (!isEqual(obj1[i], obj2[i])) {\n                return false;\n            }\n        }\n    }\n    else {\n        //objects\n        var sorted1 = Object.keys(obj1).sort();\n        var sorted2 = Object.keys(obj2).sort();\n        if (!isEqual(sorted1, sorted2)) {\n            return false;\n        }\n        //compare object values\n        var result_1 = true;\n        Object.keys(obj1).forEach(function (key) {\n            if (!isEqual(obj1[key], obj2[key])) {\n                result_1 = false;\n            }\n        });\n        return result_1;\n    }\n    return true;\n};\n\nvar ID_OP_SET = '$set';\nvar ID_OP_UNSET = '$unset';\nvar ID_OP_CLEAR_ALL = '$clearAll';\n// Polyfill for Object.entries\nif (!Object.entries) {\n    Object.entries = function (obj) {\n        var ownProps = Object.keys(obj);\n        var i = ownProps.length;\n        var resArray = new Array(i);\n        while (i--) {\n            resArray[i] = [ownProps[i], obj[ownProps[i]]];\n        }\n        return resArray;\n    };\n}\nvar IdentityStoreImpl = /** @class */ (function () {\n    function IdentityStoreImpl() {\n        this.identity = { userProperties: {} };\n        this.listeners = new Set();\n    }\n    IdentityStoreImpl.prototype.editIdentity = function () {\n        // eslint-disable-next-line @typescript-eslint/no-this-alias\n        var self = this;\n        var actingUserProperties = __assign({}, this.identity.userProperties);\n        var actingIdentity = __assign(__assign({}, this.identity), { userProperties: actingUserProperties });\n        return {\n            setUserId: function (userId) {\n                actingIdentity.userId = userId;\n                return this;\n            },\n            setDeviceId: function (deviceId) {\n                actingIdentity.deviceId = deviceId;\n                return this;\n            },\n            setUserProperties: function (userProperties) {\n                actingIdentity.userProperties = userProperties;\n                return this;\n            },\n            setOptOut: function (optOut) {\n                actingIdentity.optOut = optOut;\n                return this;\n            },\n            updateUserProperties: function (actions) {\n                var e_1, _a, e_2, _b, e_3, _c;\n                var actingProperties = actingIdentity.userProperties || {};\n                try {\n                    for (var _d = __values(Object.entries(actions)), _e = _d.next(); !_e.done; _e = _d.next()) {\n                        var _f = __read(_e.value, 2), action = _f[0], properties = _f[1];\n                        switch (action) {\n                            case ID_OP_SET:\n                                try {\n                                    for (var _g = (e_2 = void 0, __values(Object.entries(properties))), _h = _g.next(); !_h.done; _h = _g.next()) {\n                                        var _j = __read(_h.value, 2), key = _j[0], value = _j[1];\n                                        actingProperties[key] = value;\n                                    }\n                                }\n                                catch (e_2_1) { e_2 = { error: e_2_1 }; }\n                                finally {\n                                    try {\n                                        if (_h && !_h.done && (_b = _g.return)) _b.call(_g);\n                                    }\n                                    finally { if (e_2) throw e_2.error; }\n                                }\n                                break;\n                            case ID_OP_UNSET:\n                                try {\n                                    for (var _k = (e_3 = void 0, __values(Object.keys(properties))), _l = _k.next(); !_l.done; _l = _k.next()) {\n                                        var key = _l.value;\n                                        delete actingProperties[key];\n                                    }\n                                }\n                                catch (e_3_1) { e_3 = { error: e_3_1 }; }\n                                finally {\n                                    try {\n                                        if (_l && !_l.done && (_c = _k.return)) _c.call(_k);\n                                    }\n                                    finally { if (e_3) throw e_3.error; }\n                                }\n                                break;\n                            case ID_OP_CLEAR_ALL:\n                                actingProperties = {};\n                                break;\n                        }\n                    }\n                }\n                catch (e_1_1) { e_1 = { error: e_1_1 }; }\n                finally {\n                    try {\n                        if (_e && !_e.done && (_a = _d.return)) _a.call(_d);\n                    }\n                    finally { if (e_1) throw e_1.error; }\n                }\n                actingIdentity.userProperties = actingProperties;\n                return this;\n            },\n            commit: function () {\n                self.setIdentity(actingIdentity);\n                return this;\n            },\n        };\n    };\n    IdentityStoreImpl.prototype.getIdentity = function () {\n        return __assign({}, this.identity);\n    };\n    IdentityStoreImpl.prototype.setIdentity = function (identity) {\n        var originalIdentity = __assign({}, this.identity);\n        this.identity = __assign({}, identity);\n        if (!isEqual(originalIdentity, this.identity)) {\n            this.listeners.forEach(function (listener) {\n                listener(identity);\n            });\n        }\n    };\n    IdentityStoreImpl.prototype.addIdentityListener = function (listener) {\n        this.listeners.add(listener);\n    };\n    IdentityStoreImpl.prototype.removeIdentityListener = function (listener) {\n        this.listeners.delete(listener);\n    };\n    return IdentityStoreImpl;\n}());\n\nvar safeGlobal = typeof globalThis !== 'undefined'\n    ? globalThis\n    : typeof global !== 'undefined'\n        ? global\n        : self;\n\nvar AnalyticsConnector = /** @class */ (function () {\n    function AnalyticsConnector() {\n        this.identityStore = new IdentityStoreImpl();\n        this.eventBridge = new EventBridgeImpl();\n        this.applicationContextProvider = new ApplicationContextProviderImpl();\n    }\n    AnalyticsConnector.getInstance = function (instanceName) {\n        if (!safeGlobal['analyticsConnectorInstances']) {\n            safeGlobal['analyticsConnectorInstances'] = {};\n        }\n        if (!safeGlobal['analyticsConnectorInstances'][instanceName]) {\n            safeGlobal['analyticsConnectorInstances'][instanceName] =\n                new AnalyticsConnector();\n        }\n        return safeGlobal['analyticsConnectorInstances'][instanceName];\n    };\n    return AnalyticsConnector;\n}());\n\nexport { AnalyticsConnector };\n","import { AnalyticsConnector } from '@amplitude/analytics-connector';\nimport { DEFAULT_INSTANCE_NAME } from './types/constants';\nexport var getAnalyticsConnector = function (instanceName) {\n    if (instanceName === void 0) { instanceName = DEFAULT_INSTANCE_NAME; }\n    return AnalyticsConnector.getInstance(instanceName);\n};\nexport var setConnectorUserId = function (userId, instanceName) {\n    // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n    // @ts-ignore\n    getAnalyticsConnector(instanceName).identityStore.editIdentity().setUserId(userId).commit();\n};\nexport var setConnectorDeviceId = function (deviceId, instanceName) {\n    getAnalyticsConnector(instanceName).identityStore.editIdentity().setDeviceId(deviceId).commit();\n};\n//# sourceMappingURL=analytics-connector.js.map","import { __awaiter, __generator } from \"tslib\";\nimport { getAnalyticsConnector } from '../analytics-connector';\nvar IdentityEventSender = /** @class */ (function () {\n    function IdentityEventSender() {\n        this.name = 'identity';\n        this.type = 'before';\n        this.identityStore = getAnalyticsConnector().identityStore;\n    }\n    IdentityEventSender.prototype.execute = function (context) {\n        return __awaiter(this, void 0, void 0, function () {\n            var userProperties;\n            return __generator(this, function (_a) {\n                userProperties = context.user_properties;\n                if (userProperties) {\n                    this.identityStore.editIdentity().updateUserProperties(userProperties).commit();\n                }\n                return [2 /*return*/, context];\n            });\n        });\n    };\n    IdentityEventSender.prototype.setup = function (config) {\n        return __awaiter(this, void 0, void 0, function () {\n            return __generator(this, function (_a) {\n                if (config.instanceName) {\n                    this.identityStore = getAnalyticsConnector(config.instanceName).identityStore;\n                }\n                return [2 /*return*/];\n            });\n        });\n    };\n    return IdentityEventSender;\n}());\nexport { IdentityEventSender };\n//# sourceMappingURL=identity.js.map","export var isNewSession = function (sessionTimeout, lastEventTime) {\n    if (lastEventTime === void 0) { lastEventTime = Date.now(); }\n    var currentTime = Date.now();\n    var timeSinceLastEvent = currentTime - lastEventTime;\n    return timeSinceLastEvent > sessionTimeout;\n};\n//# sourceMappingURL=session.js.map","import { AMPLITUDE_PREFIX } from './types/constants';\nexport var getCookieName = function (apiKey, postKey, limit) {\n    if (postKey === void 0) { postKey = ''; }\n    if (limit === void 0) { limit = 10; }\n    return [AMPLITUDE_PREFIX, postKey, apiKey.substring(0, limit)].filter(Boolean).join('_');\n};\nexport var getOldCookieName = function (apiKey) {\n    return \"\".concat(AMPLITUDE_PREFIX.toLowerCase(), \"_\").concat(apiKey.substring(0, 6));\n};\n//# sourceMappingURL=cookie-name.js.map","export var getLanguage = function () {\n    var _a, _b, _c, _d;\n    if (typeof navigator === 'undefined')\n        return '';\n    // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n    var userLanguage = navigator.userLanguage;\n    return (_d = (_c = (_b = (_a = navigator.languages) === null || _a === void 0 ? void 0 : _a[0]) !== null && _b !== void 0 ? _b : navigator.language) !== null && _c !== void 0 ? _c : userLanguage) !== null && _d !== void 0 ? _d : '';\n};\n//# sourceMappingURL=language.js.map","import { getGlobalScope } from './global-scope';\nexport var getQueryParams = function () {\n    var _a;\n    var globalScope = getGlobalScope();\n    /* istanbul ignore if */\n    if (!((_a = globalScope === null || globalScope === void 0 ? void 0 : globalScope.location) === null || _a === void 0 ? void 0 : _a.search)) {\n        return {};\n    }\n    var pairs = globalScope.location.search.substring(1).split('&').filter(Boolean);\n    var params = pairs.reduce(function (acc, curr) {\n        var query = curr.split('=', 2);\n        var key = tryDecodeURIComponent(query[0]);\n        var value = tryDecodeURIComponent(query[1]);\n        if (!value) {\n            return acc;\n        }\n        acc[key] = value;\n        return acc;\n    }, {});\n    return params;\n};\nexport var tryDecodeURIComponent = function (value) {\n    if (value === void 0) { value = ''; }\n    try {\n        return decodeURIComponent(value);\n    }\n    catch (_a) {\n        return '';\n    }\n};\n//# sourceMappingURL=query-params.js.map","import { __assign, __values } from \"tslib\";\nimport { LogLevel } from '../types/loglevel';\nexport var getStacktrace = function (ignoreDepth) {\n    if (ignoreDepth === void 0) { ignoreDepth = 0; }\n    var trace = new Error().stack || '';\n    return trace\n        .split('\\n')\n        .slice(2 + ignoreDepth)\n        .map(function (text) { return text.trim(); });\n};\n// This hook makes sure we always get the latest logger and logLevel.\nexport var getClientLogConfig = function (client) { return function () {\n    var _a = __assign({}, client.config), logger = _a.loggerProvider, logLevel = _a.logLevel;\n    return {\n        logger: logger,\n        logLevel: logLevel,\n    };\n}; };\n// This is a convenient function to get the attribute from object with string path, similar to lodash '#get'.\nexport var getValueByStringPath = function (obj, path) {\n    var e_1, _a;\n    path = path.replace(/\\[(\\w+)\\]/g, '.$1'); // convert indexes to properties\n    path = path.replace(/^\\./, ''); // strip a leading dot\n    try {\n        for (var _b = __values(path.split('.')), _c = _b.next(); !_c.done; _c = _b.next()) {\n            var attr = _c.value;\n            if (attr in obj) {\n                obj = obj[attr];\n            }\n            else {\n                return;\n            }\n        }\n    }\n    catch (e_1_1) { e_1 = { error: e_1_1 }; }\n    finally {\n        try {\n            if (_c && !_c.done && (_a = _b.return)) _a.call(_b);\n        }\n        finally { if (e_1) throw e_1.error; }\n    }\n    return obj;\n};\nexport var getClientStates = function (client, paths) { return function () {\n    var e_2, _a;\n    var res = {};\n    try {\n        for (var paths_1 = __values(paths), paths_1_1 = paths_1.next(); !paths_1_1.done; paths_1_1 = paths_1.next()) {\n            var path = paths_1_1.value;\n            res[path] = getValueByStringPath(client, path);\n        }\n    }\n    catch (e_2_1) { e_2 = { error: e_2_1 }; }\n    finally {\n        try {\n            if (paths_1_1 && !paths_1_1.done && (_a = paths_1.return)) _a.call(paths_1);\n        }\n        finally { if (e_2) throw e_2.error; }\n    }\n    return res;\n}; };\nexport var debugWrapper = function (fn, fnName, getLogConfig, getStates, fnContext) {\n    if (fnContext === void 0) { fnContext = null; }\n    return function () {\n        var args = [];\n        for (var _i = 0; _i < arguments.length; _i++) {\n            args[_i] = arguments[_i];\n        }\n        var _a = getLogConfig(), logger = _a.logger, logLevel = _a.logLevel;\n        // return early if possible to reduce overhead\n        if ((logLevel && logLevel < LogLevel.Debug) || !logLevel || !logger) {\n            return fn.apply(fnContext, args);\n        }\n        var debugContext = {\n            type: 'invoke public method',\n            name: fnName,\n            args: args,\n            stacktrace: getStacktrace(1),\n            time: {\n                start: new Date().toISOString(),\n            },\n            states: {},\n        };\n        if (getStates && debugContext.states) {\n            debugContext.states.before = getStates();\n        }\n        var result = fn.apply(fnContext, args);\n        if (result && result.promise) {\n            // if result is a promise, add the callback\n            result.promise.then(function () {\n                if (getStates && debugContext.states) {\n                    debugContext.states.after = getStates();\n                }\n                if (debugContext.time) {\n                    debugContext.time.end = new Date().toISOString();\n                }\n                logger.debug(JSON.stringify(debugContext, null, 2));\n            });\n        }\n        else {\n            if (getStates && debugContext.states) {\n                debugContext.states.after = getStates();\n            }\n            if (debugContext.time) {\n                debugContext.time.end = new Date().toISOString();\n            }\n            logger.debug(JSON.stringify(debugContext, null, 2));\n        }\n        return result;\n    };\n};\n//# sourceMappingURL=debug.js.map","/**\n * Checks if a given URL matches any pattern in an allowlist of URLs or regex patterns.\n * @param url - The URL to check\n * @param allowlist - Array of allowed URLs (strings) or regex patterns\n * @returns true if the URL matches any pattern in the allowlist, false otherwise\n */\nexport var isUrlMatchAllowlist = function (url, allowlist) {\n    if (!allowlist || !allowlist.length) {\n        return true;\n    }\n    return allowlist.some(function (allowedUrl) {\n        if (typeof allowedUrl === 'string') {\n            return url === allowedUrl;\n        }\n        return url.match(allowedUrl);\n    });\n};\n//# sourceMappingURL=url-utils.js.map","import { __awaiter, __generator } from \"tslib\";\nvar MemoryStorage = /** @class */ (function () {\n    function MemoryStorage() {\n        this.memoryStorage = new Map();\n    }\n    MemoryStorage.prototype.isEnabled = function () {\n        return __awaiter(this, void 0, void 0, function () {\n            return __generator(this, function (_a) {\n                return [2 /*return*/, true];\n            });\n        });\n    };\n    MemoryStorage.prototype.get = function (key) {\n        return __awaiter(this, void 0, void 0, function () {\n            return __generator(this, function (_a) {\n                return [2 /*return*/, this.memoryStorage.get(key)];\n            });\n        });\n    };\n    MemoryStorage.prototype.getRaw = function (key) {\n        return __awaiter(this, void 0, void 0, function () {\n            var value;\n            return __generator(this, function (_a) {\n                switch (_a.label) {\n                    case 0: return [4 /*yield*/, this.get(key)];\n                    case 1:\n                        value = _a.sent();\n                        return [2 /*return*/, value ? JSON.stringify(value) : undefined];\n                }\n            });\n        });\n    };\n    MemoryStorage.prototype.set = function (key, value) {\n        return __awaiter(this, void 0, void 0, function () {\n            return __generator(this, function (_a) {\n                this.memoryStorage.set(key, value);\n                return [2 /*return*/];\n            });\n        });\n    };\n    MemoryStorage.prototype.remove = function (key) {\n        return __awaiter(this, void 0, void 0, function () {\n            return __generator(this, function (_a) {\n                this.memoryStorage.delete(key);\n                return [2 /*return*/];\n            });\n        });\n    };\n    MemoryStorage.prototype.reset = function () {\n        return __awaiter(this, void 0, void 0, function () {\n            return __generator(this, function (_a) {\n                this.memoryStorage.clear();\n                return [2 /*return*/];\n            });\n        });\n    };\n    return MemoryStorage;\n}());\nexport { MemoryStorage };\n//# sourceMappingURL=memory.js.map","import { __assign, __awaiter, __generator } from \"tslib\";\nimport { getGlobalScope } from '../global-scope';\nvar CookieStorage = /** @class */ (function () {\n    function CookieStorage(options) {\n        this.options = __assign({}, options);\n    }\n    CookieStorage.prototype.isEnabled = function () {\n        return __awaiter(this, void 0, void 0, function () {\n            var testStorage, testKey, value, _a;\n            return __generator(this, function (_b) {\n                switch (_b.label) {\n                    case 0:\n                        /* istanbul ignore if */\n                        if (!getGlobalScope()) {\n                            return [2 /*return*/, false];\n                        }\n                        CookieStorage.testValue = String(Date.now());\n                        testStorage = new CookieStorage(this.options);\n                        testKey = 'AMP_TEST';\n                        _b.label = 1;\n                    case 1:\n                        _b.trys.push([1, 4, 5, 7]);\n                        return [4 /*yield*/, testStorage.set(testKey, CookieStorage.testValue)];\n                    case 2:\n                        _b.sent();\n                        return [4 /*yield*/, testStorage.get(testKey)];\n                    case 3:\n                        value = _b.sent();\n                        return [2 /*return*/, value === CookieStorage.testValue];\n                    case 4:\n                        _a = _b.sent();\n                        /* istanbul ignore next */\n                        return [2 /*return*/, false];\n                    case 5: return [4 /*yield*/, testStorage.remove(testKey)];\n                    case 6:\n                        _b.sent();\n                        return [7 /*endfinally*/];\n                    case 7: return [2 /*return*/];\n                }\n            });\n        });\n    };\n    CookieStorage.prototype.get = function (key) {\n        var _a;\n        return __awaiter(this, void 0, void 0, function () {\n            var value, decodedValue;\n            return __generator(this, function (_b) {\n                switch (_b.label) {\n                    case 0: return [4 /*yield*/, this.getRaw(key)];\n                    case 1:\n                        value = _b.sent();\n                        if (!value) {\n                            return [2 /*return*/, undefined];\n                        }\n                        try {\n                            decodedValue = (_a = decodeCookiesAsDefault(value)) !== null && _a !== void 0 ? _a : decodeCookiesWithDoubleUrlEncoding(value);\n                            if (decodedValue === undefined) {\n                                console.error(\"Amplitude Logger [Error]: Failed to decode cookie value for key: \".concat(key, \", value: \").concat(value));\n                                return [2 /*return*/, undefined];\n                            }\n                            // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n                            return [2 /*return*/, JSON.parse(decodedValue)];\n                        }\n                        catch (_c) {\n                            console.error(\"Amplitude Logger [Error]: Failed to parse cookie value for key: \".concat(key, \", value: \").concat(value));\n                            return [2 /*return*/, undefined];\n                        }\n                        return [2 /*return*/];\n                }\n            });\n        });\n    };\n    CookieStorage.prototype.getRaw = function (key) {\n        var _a, _b;\n        return __awaiter(this, void 0, void 0, function () {\n            var globalScope, cookie, match;\n            return __generator(this, function (_c) {\n                globalScope = getGlobalScope();\n                cookie = (_b = (_a = globalScope === null || globalScope === void 0 ? void 0 : globalScope.document) === null || _a === void 0 ? void 0 : _a.cookie.split('; ')) !== null && _b !== void 0 ? _b : [];\n                match = cookie.find(function (c) { return c.indexOf(key + '=') === 0; });\n                if (!match) {\n                    return [2 /*return*/, undefined];\n                }\n                return [2 /*return*/, match.substring(key.length + 1)];\n            });\n        });\n    };\n    CookieStorage.prototype.set = function (key, value) {\n        var _a;\n        return __awaiter(this, void 0, void 0, function () {\n            var expirationDays, expires, expireDate, date, str, globalScope, errorMessage;\n            return __generator(this, function (_b) {\n                try {\n                    expirationDays = (_a = this.options.expirationDays) !== null && _a !== void 0 ? _a : 0;\n                    expires = value !== null ? expirationDays : -1;\n                    expireDate = undefined;\n                    if (expires) {\n                        date = new Date();\n                        date.setTime(date.getTime() + expires * 24 * 60 * 60 * 1000);\n                        expireDate = date;\n                    }\n                    str = \"\".concat(key, \"=\").concat(btoa(encodeURIComponent(JSON.stringify(value))));\n                    if (expireDate) {\n                        str += \"; expires=\".concat(expireDate.toUTCString());\n                    }\n                    str += '; path=/';\n                    if (this.options.domain) {\n                        str += \"; domain=\".concat(this.options.domain);\n                    }\n                    if (this.options.secure) {\n                        str += '; Secure';\n                    }\n                    if (this.options.sameSite) {\n                        str += \"; SameSite=\".concat(this.options.sameSite);\n                    }\n                    globalScope = getGlobalScope();\n                    if (globalScope) {\n                        globalScope.document.cookie = str;\n                    }\n                }\n                catch (error) {\n                    errorMessage = error instanceof Error ? error.message : String(error);\n                    console.error(\"Amplitude Logger [Error]: Failed to set cookie for key: \".concat(key, \". Error: \").concat(errorMessage));\n                }\n                return [2 /*return*/];\n            });\n        });\n    };\n    CookieStorage.prototype.remove = function (key) {\n        return __awaiter(this, void 0, void 0, function () {\n            return __generator(this, function (_a) {\n                switch (_a.label) {\n                    case 0: return [4 /*yield*/, this.set(key, null)];\n                    case 1:\n                        _a.sent();\n                        return [2 /*return*/];\n                }\n            });\n        });\n    };\n    CookieStorage.prototype.reset = function () {\n        return __awaiter(this, void 0, void 0, function () {\n            return __generator(this, function (_a) {\n                return [2 /*return*/];\n            });\n        });\n    };\n    return CookieStorage;\n}());\nexport { CookieStorage };\nvar decodeCookiesAsDefault = function (value) {\n    try {\n        return decodeURIComponent(atob(value));\n    }\n    catch (_a) {\n        return undefined;\n    }\n};\nvar decodeCookiesWithDoubleUrlEncoding = function (value) {\n    // Modern Ruby (v7+) automatically encodes cookies with URL encoding by\n    // https://api.rubyonrails.org/classes/ActionDispatch/Cookies.html\n    try {\n        return decodeURIComponent(atob(decodeURIComponent(value)));\n    }\n    catch (_a) {\n        return undefined;\n    }\n};\n//# sourceMappingURL=cookie.js.map","import { AMPLITUDE_PREFIX } from '../types/constants';\nexport var getStorageKey = function (apiKey, postKey, limit) {\n    if (postKey === void 0) { postKey = ''; }\n    if (limit === void 0) { limit = 10; }\n    return [AMPLITUDE_PREFIX, postKey, apiKey.substring(0, limit)].filter(Boolean).join('_');\n};\n//# sourceMappingURL=helpers.js.map","import { __awaiter, __generator } from \"tslib\";\nvar BrowserStorage = /** @class */ (function () {\n    function BrowserStorage(storage) {\n        this.storage = storage;\n    }\n    BrowserStorage.prototype.isEnabled = function () {\n        return __awaiter(this, void 0, void 0, function () {\n            var random, testStorage, testKey, value, _a;\n            return __generator(this, function (_b) {\n                switch (_b.label) {\n                    case 0:\n                        /* istanbul ignore if */\n                        if (!this.storage) {\n                            return [2 /*return*/, false];\n                        }\n                        random = String(Date.now());\n                        testStorage = new BrowserStorage(this.storage);\n                        testKey = 'AMP_TEST';\n                        _b.label = 1;\n                    case 1:\n                        _b.trys.push([1, 4, 5, 7]);\n                        return [4 /*yield*/, testStorage.set(testKey, random)];\n                    case 2:\n                        _b.sent();\n                        return [4 /*yield*/, testStorage.get(testKey)];\n                    case 3:\n                        value = _b.sent();\n                        return [2 /*return*/, value === random];\n                    case 4:\n                        _a = _b.sent();\n                        /* istanbul ignore next */\n                        return [2 /*return*/, false];\n                    case 5: return [4 /*yield*/, testStorage.remove(testKey)];\n                    case 6:\n                        _b.sent();\n                        return [7 /*endfinally*/];\n                    case 7: return [2 /*return*/];\n                }\n            });\n        });\n    };\n    BrowserStorage.prototype.get = function (key) {\n        return __awaiter(this, void 0, void 0, function () {\n            var value, _a;\n            return __generator(this, function (_b) {\n                switch (_b.label) {\n                    case 0:\n                        _b.trys.push([0, 2, , 3]);\n                        return [4 /*yield*/, this.getRaw(key)];\n                    case 1:\n                        value = _b.sent();\n                        if (!value) {\n                            return [2 /*return*/, undefined];\n                        }\n                        // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n                        return [2 /*return*/, JSON.parse(value)];\n                    case 2:\n                        _a = _b.sent();\n                        console.error(\"[Amplitude] Error: Could not get value from storage\");\n                        return [2 /*return*/, undefined];\n                    case 3: return [2 /*return*/];\n                }\n            });\n        });\n    };\n    BrowserStorage.prototype.getRaw = function (key) {\n        var _a;\n        return __awaiter(this, void 0, void 0, function () {\n            return __generator(this, function (_b) {\n                return [2 /*return*/, ((_a = this.storage) === null || _a === void 0 ? void 0 : _a.getItem(key)) || undefined];\n            });\n        });\n    };\n    BrowserStorage.prototype.set = function (key, value) {\n        var _a;\n        return __awaiter(this, void 0, void 0, function () {\n            return __generator(this, function (_b) {\n                try {\n                    (_a = this.storage) === null || _a === void 0 ? void 0 : _a.setItem(key, JSON.stringify(value));\n                }\n                catch (_c) {\n                    //\n                }\n                return [2 /*return*/];\n            });\n        });\n    };\n    BrowserStorage.prototype.remove = function (key) {\n        var _a;\n        return __awaiter(this, void 0, void 0, function () {\n            return __generator(this, function (_b) {\n                try {\n                    (_a = this.storage) === null || _a === void 0 ? void 0 : _a.removeItem(key);\n                }\n                catch (_c) {\n                    //\n                }\n                return [2 /*return*/];\n            });\n        });\n    };\n    BrowserStorage.prototype.reset = function () {\n        var _a;\n        return __awaiter(this, void 0, void 0, function () {\n            return __generator(this, function (_b) {\n                try {\n                    (_a = this.storage) === null || _a === void 0 ? void 0 : _a.clear();\n                }\n                catch (_c) {\n                    //\n                }\n                return [2 /*return*/];\n            });\n        });\n    };\n    return BrowserStorage;\n}());\nexport { BrowserStorage };\n//# sourceMappingURL=browser-storage.js.map","import { Status } from '../types/status';\nvar BaseTransport = /** @class */ (function () {\n    function BaseTransport() {\n    }\n    BaseTransport.prototype.send = function (_serverUrl, _payload) {\n        return Promise.resolve(null);\n    };\n    BaseTransport.prototype.buildResponse = function (responseJSON) {\n        var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x;\n        if (typeof responseJSON !== 'object') {\n            return null;\n        }\n        var statusCode = responseJSON.code || 0;\n        var status = this.buildStatus(statusCode);\n        switch (status) {\n            case Status.Success:\n                return {\n                    status: status,\n                    statusCode: statusCode,\n                    body: {\n                        eventsIngested: (_a = responseJSON.events_ingested) !== null && _a !== void 0 ? _a : 0,\n                        payloadSizeBytes: (_b = responseJSON.payload_size_bytes) !== null && _b !== void 0 ? _b : 0,\n                        serverUploadTime: (_c = responseJSON.server_upload_time) !== null && _c !== void 0 ? _c : 0,\n                    },\n                };\n            case Status.Invalid:\n                return {\n                    status: status,\n                    statusCode: statusCode,\n                    body: {\n                        error: (_d = responseJSON.error) !== null && _d !== void 0 ? _d : '',\n                        missingField: (_e = responseJSON.missing_field) !== null && _e !== void 0 ? _e : '',\n                        eventsWithInvalidFields: (_f = responseJSON.events_with_invalid_fields) !== null && _f !== void 0 ? _f : {},\n                        eventsWithMissingFields: (_g = responseJSON.events_with_missing_fields) !== null && _g !== void 0 ? _g : {},\n                        eventsWithInvalidIdLengths: (_h = responseJSON.events_with_invalid_id_lengths) !== null && _h !== void 0 ? _h : {},\n                        epsThreshold: (_j = responseJSON.eps_threshold) !== null && _j !== void 0 ? _j : 0,\n                        exceededDailyQuotaDevices: (_k = responseJSON.exceeded_daily_quota_devices) !== null && _k !== void 0 ? _k : {},\n                        silencedDevices: (_l = responseJSON.silenced_devices) !== null && _l !== void 0 ? _l : [],\n                        silencedEvents: (_m = responseJSON.silenced_events) !== null && _m !== void 0 ? _m : [],\n                        throttledDevices: (_o = responseJSON.throttled_devices) !== null && _o !== void 0 ? _o : {},\n                        throttledEvents: (_p = responseJSON.throttled_events) !== null && _p !== void 0 ? _p : [],\n                    },\n                };\n            case Status.PayloadTooLarge:\n                return {\n                    status: status,\n                    statusCode: statusCode,\n                    body: {\n                        error: (_q = responseJSON.error) !== null && _q !== void 0 ? _q : '',\n                    },\n                };\n            case Status.RateLimit:\n                return {\n                    status: status,\n                    statusCode: statusCode,\n                    body: {\n                        error: (_r = responseJSON.error) !== null && _r !== void 0 ? _r : '',\n                        epsThreshold: (_s = responseJSON.eps_threshold) !== null && _s !== void 0 ? _s : 0,\n                        throttledDevices: (_t = responseJSON.throttled_devices) !== null && _t !== void 0 ? _t : {},\n                        throttledUsers: (_u = responseJSON.throttled_users) !== null && _u !== void 0 ? _u : {},\n                        exceededDailyQuotaDevices: (_v = responseJSON.exceeded_daily_quota_devices) !== null && _v !== void 0 ? _v : {},\n                        exceededDailyQuotaUsers: (_w = responseJSON.exceeded_daily_quota_users) !== null && _w !== void 0 ? _w : {},\n                        throttledEvents: (_x = responseJSON.throttled_events) !== null && _x !== void 0 ? _x : [],\n                    },\n                };\n            case Status.Timeout:\n            default:\n                return {\n                    status: status,\n                    statusCode: statusCode,\n                };\n        }\n    };\n    BaseTransport.prototype.buildStatus = function (code) {\n        if (code >= 200 && code < 300) {\n            return Status.Success;\n        }\n        if (code === 429) {\n            return Status.RateLimit;\n        }\n        if (code === 413) {\n            return Status.PayloadTooLarge;\n        }\n        if (code === 408) {\n            return Status.Timeout;\n        }\n        if (code >= 400 && code < 500) {\n            return Status.Invalid;\n        }\n        if (code >= 500) {\n            return Status.Failed;\n        }\n        return Status.Unknown;\n    };\n    return BaseTransport;\n}());\nexport { BaseTransport };\n//# sourceMappingURL=base.js.map","import { __awaiter, __extends, __generator } from \"tslib\";\nimport { BaseTransport } from './base';\nvar FetchTransport = /** @class */ (function (_super) {\n    __extends(FetchTransport, _super);\n    function FetchTransport() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    FetchTransport.prototype.send = function (serverUrl, payload) {\n        return __awaiter(this, void 0, void 0, function () {\n            var options, response, responseText;\n            return __generator(this, function (_a) {\n                switch (_a.label) {\n                    case 0:\n                        /* istanbul ignore if */\n                        if (typeof fetch === 'undefined') {\n                            throw new Error('FetchTransport is not supported');\n                        }\n                        options = {\n                            headers: {\n                                'Content-Type': 'application/json',\n                                Accept: '*/*',\n                            },\n                            body: JSON.stringify(payload),\n                            method: 'POST',\n                        };\n                        return [4 /*yield*/, fetch(serverUrl, options)];\n                    case 1:\n                        response = _a.sent();\n                        return [4 /*yield*/, response.text()];\n                    case 2:\n                        responseText = _a.sent();\n                        try {\n                            // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n                            return [2 /*return*/, this.buildResponse(JSON.parse(responseText))];\n                        }\n                        catch (_b) {\n                            return [2 /*return*/, this.buildResponse({ code: response.status })];\n                        }\n                        return [2 /*return*/];\n                }\n            });\n        });\n    };\n    return FetchTransport;\n}(BaseTransport));\nexport { FetchTransport };\n//# sourceMappingURL=fetch.js.map","/**\n * @deprecated use ServerZoneType instead\n */\nexport var ServerZone;\n(function (ServerZone) {\n    ServerZone[\"US\"] = \"US\";\n    ServerZone[\"EU\"] = \"EU\";\n    /**\n     * Add for session-replay-browser migration from analytics-type v1.x.\n     */\n    ServerZone[\"STAGING\"] = \"STAGING\";\n})(ServerZone || (ServerZone = {}));\n//# sourceMappingURL=server-zone.js.map","export var OfflineDisabled = null;\n//# sourceMappingURL=offline.js.map","/**\n * Default CSS selectors to define which elements on the page to track.\n * Extend this list to include additional elements to track. For example:\n * ```\n * autocapturePlugin({\n *    cssSelectorAllowlist: [...DEFAULT_CSS_SELECTOR_ALLOWLIST, \".my-class\"],\n * })\n * ```\n */\nexport var DEFAULT_CSS_SELECTOR_ALLOWLIST = [\n    'a',\n    'button',\n    'input',\n    'select',\n    'textarea',\n    'label',\n    'video',\n    'audio',\n    '[contenteditable=\"true\" i]',\n    '[data-amp-default-track]',\n    '.amp-default-track',\n];\n/**\n * Default prefix to allow the plugin to capture data attributes as an event property.\n */\nexport var DEFAULT_DATA_ATTRIBUTE_PREFIX = 'data-amp-track-';\n/**\n * Default list of elements on the page should be tracked when the page changes.\n */\nexport var DEFAULT_ACTION_CLICK_ALLOWLIST = ['div', 'span', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6'];\n//# sourceMappingURL=element-interactions.js.map","import { __read, __spreadArray } from \"tslib\";\nvar CLICKABLE_ELEMENT_SELECTORS = [\n    'a',\n    'button',\n    '[role=\"button\"]',\n    '[role=\"link\"]',\n    '[role=\"menuitem\"]',\n    '[role=\"menuitemcheckbox\"]',\n    '[role=\"menuitemradio\"]',\n    '[role=\"option\"]',\n    '[role=\"tab\"]',\n    '[role=\"treeitem\"]',\n    '[contenteditable=\"true\" i]',\n];\n/**\n * Default CSS selectors for dead clicks tracking\n */\nexport var DEFAULT_DEAD_CLICK_ALLOWLIST = __spreadArray([\n    'input[type=\"button\"]',\n    'input[type=\"submit\"]',\n    'input[type=\"reset\"]',\n    'input[type=\"image\"]',\n    'input[type=\"file\"]'\n], __read(CLICKABLE_ELEMENT_SELECTORS), false);\n/**\n * Default CSS selectors for rage clicks tracking\n */\nexport var DEFAULT_RAGE_CLICK_ALLOWLIST = ['*'];\n/**\n * Default time window for dead clicks (3 seconds)\n */\nexport var DEFAULT_DEAD_CLICK_WINDOW_MS = 3000;\n/**\n * Default time window for rage clicks (1 second)\n */\nexport var DEFAULT_RAGE_CLICK_WINDOW_MS = 1000;\n/**\n * Default threshold for rage clicks (4 clicks)\n */\nexport var DEFAULT_RAGE_CLICK_THRESHOLD = 4;\n//# sourceMappingURL=frustration-interactions.js.map","import { __awaiter, __generator, __read, __values } from \"tslib\";\nimport { getGlobalScope } from './global-scope';\nvar TEXT_READ_TIMEOUT = 500;\nexport var MAXIMUM_ENTRIES = 100;\n/**\n * This class encapsulates the RequestInit (https://developer.mozilla.org/en-US/docs/Web/API/RequestInit)\n * object so that the consumer can only get access to the headers, method and body size.\n *\n * This is to prevent consumers from directly accessing the Request object\n * and mutating it or running costly operations on it.\n *\n * IMPORTANT:\n *    * Do not make changes to this class without careful consideration\n *      of performance implications, memory usage and potential to mutate the customer's\n *      request.\n *   * NEVER .clone() the RequestInit object. This will 2x's the memory overhead of the request\n *   * NEVER: call .arrayBuffer(), text(), json() or any other method on the body that\n *     consumes the body's stream. This will cause the response to be consumed\n *     meaning the body will be empty when the customer tries to access it.\n *     (ie: if the body is an instanceof https://developer.mozilla.org/en-US/docs/Web/API/ReadableStream\n *      never call any of the methods on it)\n */\nvar RequestWrapperFetch = /** @class */ (function () {\n    function RequestWrapperFetch(request) {\n        this.request = request;\n    }\n    Object.defineProperty(RequestWrapperFetch.prototype, \"headers\", {\n        get: function () {\n            if (this._headers)\n                return this._headers;\n            var headersUnsafe = this.request.headers;\n            if (Array.isArray(headersUnsafe)) {\n                var headers = headersUnsafe;\n                this._headers = headers.reduce(function (acc, _a) {\n                    var _b = __read(_a, 2), key = _b[0], value = _b[1];\n                    acc[key] = value;\n                    return acc;\n                }, {});\n            }\n            else if (headersUnsafe instanceof Headers) {\n                var headersSafe = headersUnsafe;\n                var headersObj_1 = {};\n                headersSafe.forEach(function (value, key) {\n                    headersObj_1[key] = value;\n                });\n                this._headers = headersObj_1;\n            }\n            else if (typeof headersUnsafe === 'object') {\n                this._headers = headersUnsafe;\n            }\n            return this._headers;\n        },\n        enumerable: false,\n        configurable: true\n    });\n    Object.defineProperty(RequestWrapperFetch.prototype, \"bodySize\", {\n        get: function () {\n            if (typeof this._bodySize === 'number')\n                return this._bodySize;\n            var global = getGlobalScope();\n            /* istanbul ignore if */\n            if (!(global === null || global === void 0 ? void 0 : global.TextEncoder)) {\n                return;\n            }\n            var body = this.request.body;\n            this._bodySize = getBodySize(body, MAXIMUM_ENTRIES);\n            return this._bodySize;\n        },\n        enumerable: false,\n        configurable: true\n    });\n    Object.defineProperty(RequestWrapperFetch.prototype, \"method\", {\n        get: function () {\n            return this.request.method;\n        },\n        enumerable: false,\n        configurable: true\n    });\n    Object.defineProperty(RequestWrapperFetch.prototype, \"body\", {\n        get: function () {\n            if (typeof this.request.body === 'string') {\n                return this.request.body;\n            }\n            return null;\n        },\n        enumerable: false,\n        configurable: true\n    });\n    return RequestWrapperFetch;\n}());\nexport { RequestWrapperFetch };\nvar RequestWrapperXhr = /** @class */ (function () {\n    function RequestWrapperXhr(bodyRaw, requestHeaders) {\n        this.bodyRaw = bodyRaw;\n        this.requestHeaders = requestHeaders;\n    }\n    Object.defineProperty(RequestWrapperXhr.prototype, \"headers\", {\n        get: function () {\n            return this.requestHeaders;\n        },\n        enumerable: false,\n        configurable: true\n    });\n    Object.defineProperty(RequestWrapperXhr.prototype, \"bodySize\", {\n        get: function () {\n            return getBodySize(this.bodyRaw, MAXIMUM_ENTRIES);\n        },\n        enumerable: false,\n        configurable: true\n    });\n    Object.defineProperty(RequestWrapperXhr.prototype, \"body\", {\n        get: function () {\n            if (typeof this.bodyRaw === 'string') {\n                return this.bodyRaw;\n            }\n            return null;\n        },\n        enumerable: false,\n        configurable: true\n    });\n    return RequestWrapperXhr;\n}());\nexport { RequestWrapperXhr };\nfunction getBodySize(bodyUnsafe, maxEntries) {\n    var e_1, _a;\n    var bodySize;\n    var global = getGlobalScope();\n    /* istanbul ignore next */\n    var TextEncoder = global === null || global === void 0 ? void 0 : global.TextEncoder;\n    /* istanbul ignore next */\n    if (!TextEncoder) {\n        return;\n    }\n    var bodySafe;\n    if (typeof bodyUnsafe === 'string') {\n        bodySafe = bodyUnsafe;\n        bodySize = new TextEncoder().encode(bodySafe).length;\n    }\n    else if (bodyUnsafe instanceof Blob) {\n        bodySafe = bodyUnsafe;\n        bodySize = bodySafe.size;\n    }\n    else if (bodyUnsafe instanceof URLSearchParams) {\n        bodySafe = bodyUnsafe;\n        bodySize = new TextEncoder().encode(bodySafe.toString()).length;\n    }\n    else if (ArrayBuffer.isView(bodyUnsafe)) {\n        bodySafe = bodyUnsafe;\n        bodySize = bodySafe.byteLength;\n    }\n    else if (bodyUnsafe instanceof ArrayBuffer) {\n        bodySafe = bodyUnsafe;\n        bodySize = bodySafe.byteLength;\n    }\n    else if (bodyUnsafe instanceof FormData) {\n        // Estimating only for text parts; not accurate for files\n        var formData = bodyUnsafe;\n        var total = 0;\n        var count = 0;\n        try {\n            for (var _b = __values(formData.entries()), _c = _b.next(); !_c.done; _c = _b.next()) {\n                var _d = __read(_c.value, 2), key = _d[0], value = _d[1];\n                total += key.length;\n                if (typeof value === 'string') {\n                    total += new TextEncoder().encode(value).length;\n                }\n                else if (value instanceof Blob) {\n                    total += value.size;\n                }\n                else {\n                    // encountered an unknown type\n                    // we can't estimate the size of this entry\n                    return;\n                }\n                // terminate if we reach the maximum number of entries\n                // to avoid performance issues in case of very large FormData\n                if (++count >= maxEntries) {\n                    return;\n                }\n            }\n        }\n        catch (e_1_1) { e_1 = { error: e_1_1 }; }\n        finally {\n            try {\n                if (_c && !_c.done && (_a = _b.return)) _a.call(_b);\n            }\n            finally { if (e_1) throw e_1.error; }\n        }\n        bodySize = total;\n    }\n    else if (bodyUnsafe instanceof ReadableStream) {\n        // If bodyUnsafe is an instanceof ReadableStream, we can't determine the size,\n        // without consuming it, so we return undefined.\n        // Never ever consume ReadableStream! DO NOT DO IT!!!\n        // eslint-disable-next-line @typescript-eslint/no-unused-vars\n        bodySafe = bodyUnsafe;\n        return;\n    }\n    return bodySize;\n}\n/**\n * This class encapsulates the Fetch API Response object\n * (https://developer.mozilla.org/en-US/docs/Web/API/Response) so that the consumer can\n * only get access to the headers and body size.\n *\n * This is to prevent consumers from directly accessing the Response object\n * and mutating it or running costly operations on it.\n *\n * IMPORTANT:\n *   * Do not make changes to this class without careful consideration\n *     of performance implications, memory usage and potential to mutate the customer's\n *     response.\n *   * Do not .clone() the Response object unless you need to access the body.\n *     Cloning will 2x the memory overhead of the response.\n *   * NEVER consume the body's stream. This will cause the response to be consumed\n *     meaning the body will be empty when the customer tries to access it.\n *     (ie: if the body is an instanceof https://developer.mozilla.org/en-US/docs/Web/API/ReadableStream\n *      never call any of the methods on it)\n */\nvar ResponseWrapperFetch = /** @class */ (function () {\n    function ResponseWrapperFetch(response) {\n        this.response = response;\n    }\n    Object.defineProperty(ResponseWrapperFetch.prototype, \"headers\", {\n        get: function () {\n            var _a;\n            if (this._headers)\n                return this._headers;\n            if (this.response.headers instanceof Headers) {\n                var headersSafe = this.response.headers;\n                var headersOut_1 = {};\n                /* istanbul ignore next */\n                (_a = headersSafe === null || headersSafe === void 0 ? void 0 : headersSafe.forEach) === null || _a === void 0 ? void 0 : _a.call(headersSafe, function (value, key) {\n                    headersOut_1[key] = value;\n                });\n                this._headers = headersOut_1;\n                return headersOut_1;\n            }\n            return;\n        },\n        enumerable: false,\n        configurable: true\n    });\n    Object.defineProperty(ResponseWrapperFetch.prototype, \"bodySize\", {\n        get: function () {\n            var _a, _b;\n            if (this._bodySize !== undefined)\n                return this._bodySize;\n            /* istanbul ignore next */\n            var contentLength = (_b = (_a = this.response.headers) === null || _a === void 0 ? void 0 : _a.get) === null || _b === void 0 ? void 0 : _b.call(_a, 'content-length');\n            var bodySize = contentLength ? parseInt(contentLength, 10) : undefined;\n            this._bodySize = bodySize;\n            return bodySize;\n        },\n        enumerable: false,\n        configurable: true\n    });\n    Object.defineProperty(ResponseWrapperFetch.prototype, \"status\", {\n        get: function () {\n            return this.response.status;\n        },\n        enumerable: false,\n        configurable: true\n    });\n    ResponseWrapperFetch.prototype.text = function () {\n        return __awaiter(this, void 0, void 0, function () {\n            var clonedResponse, textPromise, timer, text, error_1;\n            return __generator(this, function (_a) {\n                switch (_a.label) {\n                    case 0:\n                        clonedResponse = this.response.clone();\n                        _a.label = 1;\n                    case 1:\n                        _a.trys.push([1, 3, , 4]);\n                        textPromise = clonedResponse.text();\n                        timer = new Promise(function (resolve) {\n                            return setTimeout(\n                            /* istanbul ignore next */\n                            function () { return resolve(null); }, TEXT_READ_TIMEOUT);\n                        });\n                        return [4 /*yield*/, Promise.race([textPromise, timer])];\n                    case 2:\n                        text = _a.sent();\n                        return [2 /*return*/, text];\n                    case 3:\n                        error_1 = _a.sent();\n                        return [2 /*return*/, null];\n                    case 4: return [2 /*return*/];\n                }\n            });\n        });\n    };\n    return ResponseWrapperFetch;\n}());\nexport { ResponseWrapperFetch };\nvar ResponseWrapperXhr = /** @class */ (function () {\n    function ResponseWrapperXhr(statusCode, headersString, size, responseText) {\n        this.statusCode = statusCode;\n        this.headersString = headersString;\n        this.size = size;\n        this.responseText = responseText;\n    }\n    Object.defineProperty(ResponseWrapperXhr.prototype, \"bodySize\", {\n        get: function () {\n            return this.size;\n        },\n        enumerable: false,\n        configurable: true\n    });\n    Object.defineProperty(ResponseWrapperXhr.prototype, \"status\", {\n        get: function () {\n            return this.statusCode;\n        },\n        enumerable: false,\n        configurable: true\n    });\n    ResponseWrapperXhr.prototype.text = function () {\n        return __awaiter(this, void 0, void 0, function () {\n            return __generator(this, function (_a) {\n                return [2 /*return*/, this.responseText];\n            });\n        });\n    };\n    Object.defineProperty(ResponseWrapperXhr.prototype, \"headers\", {\n        get: function () {\n            var e_2, _a;\n            if (!this.headersString) {\n                return;\n            }\n            var headers = {};\n            var headerLines = this.headersString.split('\\r\\n');\n            try {\n                for (var headerLines_1 = __values(headerLines), headerLines_1_1 = headerLines_1.next(); !headerLines_1_1.done; headerLines_1_1 = headerLines_1.next()) {\n                    var line = headerLines_1_1.value;\n                    var _b = __read(line.split(': '), 2), key = _b[0], value = _b[1];\n                    if (key && value) {\n                        headers[key] = value;\n                    }\n                }\n            }\n            catch (e_2_1) { e_2 = { error: e_2_1 }; }\n            finally {\n                try {\n                    if (headerLines_1_1 && !headerLines_1_1.done && (_a = headerLines_1.return)) _a.call(headerLines_1);\n                }\n                finally { if (e_2) throw e_2.error; }\n            }\n            return headers;\n        },\n        enumerable: false,\n        configurable: true\n    });\n    return ResponseWrapperXhr;\n}());\nexport { ResponseWrapperXhr };\n/**\n * Prune headers from a headers record object.\n * @param headers - The headers to prune.\n * @param options - The options to prune the headers.\n * @param options.exclude - List of headers to delete from headers\n * @param options.include - List of headers to keep in headers, if not provided, all headers are kept by default\n * @returns The pruned headers.\n */\nexport var pruneHeaders = function (headers, options) {\n    var e_3, _a;\n    if (options === void 0) { options = {}; }\n    var _b = options.exclude, exclude = _b === void 0 ? [] : _b, _c = options.include, include = _c === void 0 ? [] : _c;\n    var _loop_1 = function (key) {\n        var lowerKey = key.toLowerCase();\n        if (exclude.find(function (e) { return e.toLowerCase() === lowerKey; })) {\n            delete headers[key];\n        }\n        else if (include.length > 0 && !include.find(function (i) { return i.toLowerCase() === lowerKey; })) {\n            delete headers[key];\n        }\n    };\n    try {\n        for (var _d = __values(Object.keys(headers)), _e = _d.next(); !_e.done; _e = _d.next()) {\n            var key = _e.value;\n            _loop_1(key);\n        }\n    }\n    catch (e_3_1) { e_3 = { error: e_3_1 }; }\n    finally {\n        try {\n            if (_e && !_e.done && (_a = _d.return)) _a.call(_d);\n        }\n        finally { if (e_3) throw e_3.error; }\n    }\n};\nvar NetworkRequestEvent = /** @class */ (function () {\n    function NetworkRequestEvent(type, method, timestamp, startTime, url, requestWrapper, status, duration, responseWrapper, error, endTime) {\n        if (status === void 0) { status = 0; }\n        this.type = type;\n        this.method = method;\n        this.timestamp = timestamp;\n        this.startTime = startTime;\n        this.url = url;\n        this.requestWrapper = requestWrapper;\n        this.status = status;\n        this.duration = duration;\n        this.responseWrapper = responseWrapper;\n        this.error = error;\n        this.endTime = endTime;\n    }\n    NetworkRequestEvent.prototype.toSerializable = function () {\n        var _a, _b, _c, _d;\n        var serialized = {\n            type: this.type,\n            method: this.method,\n            url: this.url,\n            timestamp: this.timestamp,\n            status: this.status,\n            duration: this.duration,\n            error: this.error,\n            startTime: this.startTime,\n            endTime: this.endTime,\n            requestHeaders: (_a = this.requestWrapper) === null || _a === void 0 ? void 0 : _a.headers,\n            requestBodySize: (_b = this.requestWrapper) === null || _b === void 0 ? void 0 : _b.bodySize,\n            responseHeaders: (_c = this.responseWrapper) === null || _c === void 0 ? void 0 : _c.headers,\n            responseBodySize: (_d = this.responseWrapper) === null || _d === void 0 ? void 0 : _d.bodySize,\n        };\n        return Object.fromEntries(Object.entries(serialized).filter(function (_a) {\n            var _b = __read(_a, 2), _ = _b[0], v = _b[1];\n            return v !== undefined;\n        }));\n    };\n    return NetworkRequestEvent;\n}());\nexport { NetworkRequestEvent };\n//# sourceMappingURL=network-request-event.js.map","import { __assign, __awaiter, __generator, __read } from \"tslib\";\nimport { getGlobalScope } from './';\nimport { UUID } from './utils/uuid';\nimport { NetworkRequestEvent, RequestWrapperFetch, ResponseWrapperFetch, RequestWrapperXhr, ResponseWrapperXhr, } from './network-request-event';\n/**\n * Typeguard function checks if an input is a Request object.\n */\nfunction isRequest(requestInfo) {\n    return typeof requestInfo === 'object' && requestInfo !== null && 'url' in requestInfo && 'method' in requestInfo;\n}\nvar NetworkEventCallback = /** @class */ (function () {\n    function NetworkEventCallback(callback, id) {\n        if (id === void 0) { id = UUID(); }\n        this.callback = callback;\n        this.id = id;\n    }\n    return NetworkEventCallback;\n}());\nexport { NetworkEventCallback };\nvar NetworkObserver = /** @class */ (function () {\n    function NetworkObserver(logger) {\n        this.eventCallbacks = new Map();\n        this.isObserving = false;\n        this.logger = logger;\n        var globalScope = getGlobalScope();\n        if (!NetworkObserver.isSupported()) {\n            /* istanbul ignore next */\n            return;\n        }\n        this.globalScope = globalScope;\n    }\n    NetworkObserver.isSupported = function () {\n        var globalScope = getGlobalScope();\n        return !!globalScope && !!globalScope.fetch;\n    };\n    NetworkObserver.prototype.subscribe = function (eventCallback, logger) {\n        var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k;\n        if (!this.logger) {\n            this.logger = logger;\n        }\n        this.eventCallbacks.set(eventCallback.id, eventCallback);\n        if (!this.isObserving) {\n            /* istanbul ignore next */\n            // eslint-disable-next-line @typescript-eslint/unbound-method\n            var originalXhrOpen = (_c = (_b = (_a = this.globalScope) === null || _a === void 0 ? void 0 : _a.XMLHttpRequest) === null || _b === void 0 ? void 0 : _b.prototype) === null || _c === void 0 ? void 0 : _c.open;\n            /* istanbul ignore next */\n            // eslint-disable-next-line @typescript-eslint/unbound-method\n            var originalXhrSend = (_f = (_e = (_d = this.globalScope) === null || _d === void 0 ? void 0 : _d.XMLHttpRequest) === null || _e === void 0 ? void 0 : _e.prototype) === null || _f === void 0 ? void 0 : _f.send;\n            /* istanbul ignore next */\n            // eslint-disable-next-line @typescript-eslint/unbound-method\n            var originalXhrSetRequestHeader = (_j = (_h = (_g = this.globalScope) === null || _g === void 0 ? void 0 : _g.XMLHttpRequest) === null || _h === void 0 ? void 0 : _h.prototype) === null || _j === void 0 ? void 0 : _j.setRequestHeader;\n            if (originalXhrOpen && originalXhrSend && originalXhrSetRequestHeader) {\n                this.observeXhr(originalXhrOpen, originalXhrSend, originalXhrSetRequestHeader);\n            }\n            /* istanbul ignore next */\n            var originalFetch = (_k = this.globalScope) === null || _k === void 0 ? void 0 : _k.fetch;\n            /* istanbul ignore next */\n            if (originalFetch) {\n                this.observeFetch(originalFetch);\n            }\n            /* istanbul ignore next */\n            this.isObserving = true;\n        }\n    };\n    NetworkObserver.prototype.unsubscribe = function (eventCallback) {\n        this.eventCallbacks.delete(eventCallback.id);\n    };\n    NetworkObserver.prototype.triggerEventCallbacks = function (event) {\n        var _this = this;\n        this.eventCallbacks.forEach(function (callback) {\n            var _a;\n            try {\n                callback.callback(event);\n            }\n            catch (err) {\n                // if the callback throws an error, we should catch it\n                // to avoid breaking the fetch promise chain\n                /* istanbul ignore next */\n                (_a = _this.logger) === null || _a === void 0 ? void 0 : _a.debug('an unexpected error occurred while triggering event callbacks', err);\n            }\n        });\n    };\n    NetworkObserver.prototype.handleNetworkRequestEvent = function (requestType, requestInfo, requestWrapper, responseWrapper, typedError, startTime, durationStart) {\n        var _a;\n        /* istanbul ignore next */\n        if (startTime === undefined || durationStart === undefined) {\n            // if we reach this point, it means that the performance API is not supported\n            // so we can't construct a NetworkRequestEvent\n            return;\n        }\n        // parse the URL and Method\n        var url;\n        var method = 'GET';\n        if (isRequest(requestInfo)) {\n            url = requestInfo['url'];\n            method = requestInfo['method'];\n        }\n        else {\n            url = (_a = requestInfo === null || requestInfo === void 0 ? void 0 : requestInfo.toString) === null || _a === void 0 ? void 0 : _a.call(requestInfo);\n        }\n        method = (requestWrapper === null || requestWrapper === void 0 ? void 0 : requestWrapper.method) || method;\n        var status, error;\n        if (responseWrapper) {\n            status = responseWrapper.status;\n        }\n        if (typedError) {\n            error = {\n                name: typedError.name || 'UnknownError',\n                message: typedError.message || 'An unknown error occurred',\n            };\n            status = 0;\n        }\n        var duration = Math.floor(performance.now() - durationStart);\n        var endTime = Math.floor(startTime + duration);\n        var requestEvent = new NetworkRequestEvent(requestType, method, startTime, // timestamp and startTime are aliases\n        startTime, url, requestWrapper, status, duration, responseWrapper, error, endTime);\n        this.triggerEventCallbacks(requestEvent);\n    };\n    NetworkObserver.prototype.getTimestamps = function () {\n        var _a, _b;\n        /* istanbul ignore next */\n        return {\n            startTime: (_a = Date.now) === null || _a === void 0 ? void 0 : _a.call(Date),\n            durationStart: (_b = performance === null || performance === void 0 ? void 0 : performance.now) === null || _b === void 0 ? void 0 : _b.call(performance),\n        };\n    };\n    NetworkObserver.prototype.observeFetch = function (originalFetch) {\n        var _this = this;\n        /* istanbul ignore next */\n        if (!this.globalScope || !originalFetch) {\n            return;\n        }\n        /**\n         * IMPORTANT: This overrides window.fetch in browsers.\n         * You probably never need to make changes to this function.\n         * If you do, please be careful to preserve the original functionality of fetch\n         * and make sure another developer who is an expert reviews this change throughly\n         */\n        this.globalScope.fetch = function (requestInfo, requestInit) { return __awaiter(_this, void 0, void 0, function () {\n            var timestamps, originalResponse, originalError, err_1;\n            var _a, _b;\n            return __generator(this, function (_c) {\n                switch (_c.label) {\n                    case 0:\n                        try {\n                            timestamps = this.getTimestamps();\n                        }\n                        catch (error) {\n                            /* istanbul ignore next */\n                            (_a = this.logger) === null || _a === void 0 ? void 0 : _a.debug('an unexpected error occurred while retrieving timestamps', error);\n                        }\n                        _c.label = 1;\n                    case 1:\n                        _c.trys.push([1, 3, , 4]);\n                        return [4 /*yield*/, originalFetch(requestInfo, requestInit)];\n                    case 2:\n                        originalResponse = _c.sent();\n                        return [3 /*break*/, 4];\n                    case 3:\n                        err_1 = _c.sent();\n                        // Capture error information\n                        originalError = err_1;\n                        return [3 /*break*/, 4];\n                    case 4:\n                        // 3. call the handler after the fetch call is done\n                        try {\n                            this.handleNetworkRequestEvent('fetch', requestInfo, requestInit ? new RequestWrapperFetch(requestInit) : undefined, originalResponse ? new ResponseWrapperFetch(originalResponse) : undefined, originalError, \n                            /* istanbul ignore next */\n                            timestamps === null || timestamps === void 0 ? void 0 : timestamps.startTime, \n                            /* istanbul ignore next */\n                            timestamps === null || timestamps === void 0 ? void 0 : timestamps.durationStart);\n                        }\n                        catch (err) {\n                            // this catch shouldn't be reachable, but keep it here for safety\n                            // because we're overriding the fetch function and better to be safe than sorry\n                            /* istanbul ignore next */\n                            (_b = this.logger) === null || _b === void 0 ? void 0 : _b.debug('an unexpected error occurred while handling fetch', err);\n                        }\n                        // 4. return the original response or throw the original error\n                        if (originalResponse) {\n                            // if the response is not undefined, return it\n                            return [2 /*return*/, originalResponse];\n                        }\n                        else {\n                            throw originalError;\n                        }\n                        return [2 /*return*/];\n                }\n            });\n        }); };\n    };\n    NetworkObserver.prototype.observeXhr = function (originalXhrOpen, originalXhrSend, originalXhrSetRequestHeader) {\n        /* istanbul ignore next */\n        if (!this.globalScope || !originalXhrOpen || !originalXhrSend) {\n            return;\n        }\n        var xhrProto = this.globalScope.XMLHttpRequest.prototype;\n        var networkObserverContext = this;\n        /**\n         * IMPORTANT: This overrides window.XMLHttpRequest.prototype.open\n         * You probably never need to make changes to this function.\n         * If you do, please be careful to preserve the original functionality of xhr.open\n         * and make sure another developer who is an expert reviews this change throughly\n         */\n        xhrProto.open = function () {\n            var _a, _b;\n            var args = [];\n            for (var _i = 0; _i < arguments.length; _i++) {\n                args[_i] = arguments[_i];\n            }\n            var xhrSafe = this;\n            var _c = __read(args, 2), method = _c[0], url = _c[1];\n            try {\n                /* istanbul ignore next */\n                xhrSafe.$$AmplitudeAnalyticsEvent = __assign({ method: method, url: (_a = url === null || url === void 0 ? void 0 : url.toString) === null || _a === void 0 ? void 0 : _a.call(url), headers: {} }, networkObserverContext.getTimestamps());\n            }\n            catch (err) {\n                /* istanbul ignore next */\n                (_b = networkObserverContext.logger) === null || _b === void 0 ? void 0 : _b.debug('an unexpected error occurred while calling xhr open', err);\n            }\n            // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n            return originalXhrOpen.apply(xhrSafe, args);\n        };\n        /**\n         * IMPORTANT: This overrides window.XMLHttpRequest.prototype.send\n         * You probably never need to make changes to this function.\n         * If you do, please be careful to preserve the original functionality of xhr.send\n         * and make sure another developer who is an expert reviews this change throughly\n         */\n        // allow \"any\" type for args to reflect how it's used in the browser\n        /* eslint-disable-next-line @typescript-eslint/no-unsafe-argument */\n        xhrProto.send = function () {\n            var args = [];\n            for (var _i = 0; _i < arguments.length; _i++) {\n                args[_i] = arguments[_i];\n            }\n            // eslint-disable-next-line @typescript-eslint/no-this-alias\n            var xhrSafe = this;\n            var body = args[0];\n            var requestEvent = xhrSafe.$$AmplitudeAnalyticsEvent;\n            xhrSafe.addEventListener('loadend', function () {\n                var _a;\n                try {\n                    var responseHeaders = xhrSafe.getAllResponseHeaders();\n                    var responseBodySize = xhrSafe.getResponseHeader('content-length');\n                    var responseWrapper = new ResponseWrapperXhr(xhrSafe.status, responseHeaders, \n                    /* istanbul ignore next */\n                    responseBodySize ? parseInt(responseBodySize, 10) : undefined, xhrSafe.responseText);\n                    var requestHeaders = xhrSafe.$$AmplitudeAnalyticsEvent.headers;\n                    var requestWrapper = new RequestWrapperXhr(body, requestHeaders);\n                    requestEvent.status = xhrSafe.status;\n                    networkObserverContext.handleNetworkRequestEvent('xhr', { url: requestEvent.url, method: requestEvent.method }, requestWrapper, responseWrapper, undefined, requestEvent.startTime, requestEvent.durationStart);\n                }\n                catch (err) {\n                    /* istanbul ignore next */\n                    (_a = networkObserverContext.logger) === null || _a === void 0 ? void 0 : _a.debug('an unexpected error occurred while handling xhr send', err);\n                }\n            });\n            /* eslint-disable-next-line @typescript-eslint/no-unsafe-argument */\n            return originalXhrSend.apply(xhrSafe, args);\n        };\n        /**\n         * IMPORTANT: This overrides window.XMLHttpRequest.prototype.setRequestHeader\n         * You probably never need to make changes to this function.\n         * If you do, please be careful to preserve the original functionality of xhr.setRequestHeader\n         * and make sure another developer who is an expert reviews this change throughly\n         */\n        // allow \"any\" type for args to reflect how it's used in the browser\n        /* eslint-disable-next-line @typescript-eslint/no-unsafe-argument */\n        xhrProto.setRequestHeader = function (headerName, headerValue) {\n            var _a;\n            var xhrSafe = this;\n            try {\n                /* eslint-disable-next-line @typescript-eslint/no-unsafe-assignment */\n                xhrSafe.$$AmplitudeAnalyticsEvent.headers[headerName] = headerValue;\n            }\n            catch (err) {\n                /* istanbul ignore next */\n                (_a = networkObserverContext.logger) === null || _a === void 0 ? void 0 : _a.debug('an unexpected error occurred while calling xhr setRequestHeader', err);\n            }\n            /* eslint-disable-next-line @typescript-eslint/no-unsafe-argument */\n            originalXhrSetRequestHeader.apply(xhrSafe, [headerName, headerValue]);\n        };\n    };\n    return NetworkObserver;\n}());\nexport { NetworkObserver };\n// singleton instance of NetworkObserver\nexport var networkObserver = new NetworkObserver();\n//# sourceMappingURL=network-observer.js.map","import { __assign, __awaiter, __generator } from \"tslib\";\nimport { getQueryParams } from '../query-params';\nimport { UTM_CAMPAIGN, UTM_CONTENT, UTM_MEDIUM, UTM_SOURCE, UTM_TERM, GCLID, FBCLID, BASE_CAMPAIGN, DCLID, MSCLKID, RDT_CID, TWCLID, TTCLID, KO_CLICK_ID, LI_FAT_ID, GBRAID, WBRAID, UTM_ID, } from '../types/constants';\nvar CampaignParser = /** @class */ (function () {\n    function CampaignParser() {\n    }\n    CampaignParser.prototype.parse = function () {\n        return __awaiter(this, void 0, void 0, function () {\n            return __generator(this, function (_a) {\n                return [2 /*return*/, __assign(__assign(__assign(__assign({}, BASE_CAMPAIGN), this.getUtmParam()), this.getReferrer()), this.getClickIds())];\n            });\n        });\n    };\n    CampaignParser.prototype.getUtmParam = function () {\n        var params = getQueryParams();\n        var utmCampaign = params[UTM_CAMPAIGN];\n        var utmContent = params[UTM_CONTENT];\n        var utmId = params[UTM_ID];\n        var utmMedium = params[UTM_MEDIUM];\n        var utmSource = params[UTM_SOURCE];\n        var utmTerm = params[UTM_TERM];\n        return {\n            utm_campaign: utmCampaign,\n            utm_content: utmContent,\n            utm_id: utmId,\n            utm_medium: utmMedium,\n            utm_source: utmSource,\n            utm_term: utmTerm,\n        };\n    };\n    CampaignParser.prototype.getReferrer = function () {\n        var _a, _b;\n        var data = {\n            referrer: undefined,\n            referring_domain: undefined,\n        };\n        try {\n            data.referrer = document.referrer || undefined;\n            data.referring_domain = (_b = (_a = data.referrer) === null || _a === void 0 ? void 0 : _a.split('/')[2]) !== null && _b !== void 0 ? _b : undefined;\n        }\n        catch (_c) {\n            // nothing to track\n        }\n        return data;\n    };\n    CampaignParser.prototype.getClickIds = function () {\n        var _a;\n        var params = getQueryParams();\n        return _a = {},\n            _a[DCLID] = params[DCLID],\n            _a[FBCLID] = params[FBCLID],\n            _a[GBRAID] = params[GBRAID],\n            _a[GCLID] = params[GCLID],\n            _a[KO_CLICK_ID] = params[KO_CLICK_ID],\n            _a[LI_FAT_ID] = params[LI_FAT_ID],\n            _a[MSCLKID] = params[MSCLKID],\n            _a[RDT_CID] = params[RDT_CID],\n            _a[TTCLID] = params[TTCLID],\n            _a[TWCLID] = params[TWCLID],\n            _a[WBRAID] = params[WBRAID],\n            _a;\n    };\n    return CampaignParser;\n}());\nexport { CampaignParser };\n//# sourceMappingURL=campaign-parser.js.map","import { __assign } from \"tslib\";\n/**\n * Returns false if autocapture === false or if autocapture[event],\n * otherwise returns true (even if \"config.autocapture === undefined\")\n */\nvar isTrackingEnabled = function (autocapture, event) {\n    if (typeof autocapture === 'boolean') {\n        return autocapture;\n    }\n    if ((autocapture === null || autocapture === void 0 ? void 0 : autocapture[event]) === false) {\n        return false;\n    }\n    return true;\n};\nexport var isAttributionTrackingEnabled = function (autocapture) {\n    return isTrackingEnabled(autocapture, 'attribution');\n};\nexport var isFileDownloadTrackingEnabled = function (autocapture) {\n    return isTrackingEnabled(autocapture, 'fileDownloads');\n};\nexport var isFormInteractionTrackingEnabled = function (autocapture) {\n    return isTrackingEnabled(autocapture, 'formInteractions');\n};\nexport var isPageViewTrackingEnabled = function (autocapture) {\n    return isTrackingEnabled(autocapture, 'pageViews');\n};\nexport var isSessionTrackingEnabled = function (autocapture) {\n    return isTrackingEnabled(autocapture, 'sessions');\n};\n/**\n * Returns true if\n * 1. if autocapture.networkTracking === true\n * 2. if autocapture.networkTracking === object\n * otherwise returns false\n */\nexport var isNetworkTrackingEnabled = function (autocapture) {\n    if (typeof autocapture === 'object' &&\n        (autocapture.networkTracking === true || typeof autocapture.networkTracking === 'object')) {\n        return true;\n    }\n    return false;\n};\n/**\n * Returns true if\n * 1. autocapture === true\n * 2. if autocapture.elementInteractions === true\n * 3. if autocapture.elementInteractions === object\n * otherwise returns false\n */\nexport var isElementInteractionsEnabled = function (autocapture) {\n    if (typeof autocapture === 'boolean') {\n        return autocapture;\n    }\n    if (typeof autocapture === 'object' &&\n        (autocapture.elementInteractions === true || typeof autocapture.elementInteractions === 'object')) {\n        return true;\n    }\n    return false;\n};\n/**\n * Returns true if\n * 1. autocapture === true\n * 2. if autocapture.webVitals === true\n * otherwise returns false\n */\nexport var isWebVitalsEnabled = function (autocapture) {\n    // TODO restore this if statement when webVitals is GA\n    // if (typeof autocapture === 'boolean') {\n    //   return autocapture;\n    // }\n    if (typeof autocapture === 'object' && autocapture.webVitals === true) {\n        return true;\n    }\n    return false;\n};\nexport var isFrustrationInteractionsEnabled = function (autocapture) {\n    // TODO restore this if statement when frustrationInteractions is GA\n    // if (typeof autocapture === 'boolean') {\n    //   return autocapture;\n    // }\n    if (typeof autocapture === 'object' &&\n        (autocapture.frustrationInteractions === true || typeof autocapture.frustrationInteractions === 'object')) {\n        return true;\n    }\n    return false;\n};\nexport var getElementInteractionsConfig = function (config) {\n    if (isElementInteractionsEnabled(config.autocapture) &&\n        typeof config.autocapture === 'object' &&\n        typeof config.autocapture.elementInteractions === 'object') {\n        return config.autocapture.elementInteractions;\n    }\n    return undefined;\n};\nexport var getFrustrationInteractionsConfig = function (config) {\n    if (isFrustrationInteractionsEnabled(config.autocapture) &&\n        typeof config.autocapture === 'object' &&\n        typeof config.autocapture.frustrationInteractions === 'object') {\n        return config.autocapture.frustrationInteractions;\n    }\n    return undefined;\n};\nexport var getNetworkTrackingConfig = function (config) {\n    if (isNetworkTrackingEnabled(config.autocapture)) {\n        if (typeof config.autocapture === 'object' && typeof config.autocapture.networkTracking === 'object') {\n            return config.autocapture.networkTracking;\n        }\n        else if (config.networkTrackingOptions) {\n            return config.networkTrackingOptions;\n        }\n    }\n    return;\n};\nexport var getPageViewTrackingConfig = function (config) {\n    var trackOn = function () { return false; };\n    var trackHistoryChanges = undefined;\n    var eventType;\n    var pageCounter = config.pageCounter;\n    var isDefaultPageViewTrackingEnabled = isPageViewTrackingEnabled(config.defaultTracking);\n    if (isDefaultPageViewTrackingEnabled) {\n        trackOn = undefined;\n        eventType = undefined;\n        if (config.defaultTracking &&\n            typeof config.defaultTracking === 'object' &&\n            config.defaultTracking.pageViews &&\n            typeof config.defaultTracking.pageViews === 'object') {\n            if ('trackOn' in config.defaultTracking.pageViews) {\n                trackOn = config.defaultTracking.pageViews.trackOn;\n            }\n            if ('trackHistoryChanges' in config.defaultTracking.pageViews) {\n                trackHistoryChanges = config.defaultTracking.pageViews.trackHistoryChanges;\n            }\n            if ('eventType' in config.defaultTracking.pageViews && config.defaultTracking.pageViews.eventType) {\n                eventType = config.defaultTracking.pageViews.eventType;\n            }\n        }\n    }\n    return {\n        trackOn: trackOn,\n        trackHistoryChanges: trackHistoryChanges,\n        eventType: eventType,\n        pageCounter: pageCounter,\n    };\n};\nexport var getAttributionTrackingConfig = function (config) {\n    if (isAttributionTrackingEnabled(config.defaultTracking) &&\n        config.defaultTracking &&\n        typeof config.defaultTracking === 'object' &&\n        config.defaultTracking.attribution &&\n        typeof config.defaultTracking.attribution === 'object') {\n        return __assign({}, config.defaultTracking.attribution);\n    }\n    return {};\n};\n//# sourceMappingURL=default-tracking.js.map","/**\n * Applies the proxied functions on the proxied amplitude snippet to an instance of the real object.\n * @ignore\n */\nexport var runQueuedFunctions = function (instance, queue) {\n    convertProxyObjectToRealObject(instance, queue);\n};\n/**\n * Applies the proxied functions on the proxied object to an instance of the real object.\n * Used to convert proxied Identify and Revenue objects.\n */\nexport var convertProxyObjectToRealObject = function (instance, queue) {\n    for (var i = 0; i < queue.length; i++) {\n        var _a = queue[i], name_1 = _a.name, args = _a.args, resolve = _a.resolve;\n        var fn = instance && instance[name_1];\n        if (typeof fn === 'function') {\n            var result = fn.apply(instance, args);\n            if (typeof resolve === 'function') {\n                resolve(result === null || result === void 0 ? void 0 : result.promise);\n            }\n        }\n    }\n    return instance;\n};\n/**\n * Check if the param is snippet proxy\n */\nexport var isInstanceProxy = function (instance) {\n    var instanceProxy = instance;\n    return instanceProxy && instanceProxy._q !== undefined;\n};\n//# sourceMappingURL=snippet-helper.js.map","export var VERSION = '2.22.2';\n//# sourceMappingURL=version.js.map","export var LIBPREFIX = 'amplitude-ts';\n//# sourceMappingURL=lib-prefix.js.map","import { __assign, __awaiter, __generator } from \"tslib\";\nimport { UUID, getLanguage } from '@amplitude/analytics-core';\nimport { VERSION } from '../version';\nimport { LIBPREFIX } from '../lib-prefix';\nvar BROWSER_PLATFORM = 'Web';\nvar IP_ADDRESS = '$remote';\nvar Context = /** @class */ (function () {\n    function Context() {\n        this.name = '@amplitude/plugin-context-browser';\n        this.type = 'before';\n        this.library = \"\".concat(LIBPREFIX, \"/\").concat(VERSION);\n        /* istanbul ignore else */\n        if (typeof navigator !== 'undefined') {\n            this.userAgent = navigator.userAgent;\n        }\n    }\n    Context.prototype.setup = function (config) {\n        this.config = config;\n        return Promise.resolve(undefined);\n    };\n    Context.prototype.execute = function (context) {\n        var _a, _b;\n        return __awaiter(this, void 0, void 0, function () {\n            var time, lastEventId, nextEventId, event;\n            return __generator(this, function (_c) {\n                time = new Date().getTime();\n                lastEventId = (_a = this.config.lastEventId) !== null && _a !== void 0 ? _a : -1;\n                nextEventId = (_b = context.event_id) !== null && _b !== void 0 ? _b : lastEventId + 1;\n                this.config.lastEventId = nextEventId;\n                if (!context.time) {\n                    this.config.lastEventTime = time;\n                }\n                event = __assign(__assign(__assign(__assign(__assign(__assign(__assign(__assign({ user_id: this.config.userId, device_id: this.config.deviceId, session_id: this.config.sessionId, time: time }, (this.config.appVersion && { app_version: this.config.appVersion })), (this.config.trackingOptions.platform && { platform: BROWSER_PLATFORM })), (this.config.trackingOptions.language && { language: getLanguage() })), (this.config.trackingOptions.ipAddress && { ip: IP_ADDRESS })), { insert_id: UUID(), partner_id: this.config.partnerId, plan: this.config.plan }), (this.config.ingestionMetadata && {\n                    ingestion_metadata: {\n                        source_name: this.config.ingestionMetadata.sourceName,\n                        source_version: this.config.ingestionMetadata.sourceVersion,\n                    },\n                })), context), { event_id: nextEventId, library: this.library, user_agent: this.userAgent });\n                return [2 /*return*/, event];\n            });\n        });\n    };\n    return Context;\n}());\nexport { Context };\n//# sourceMappingURL=context.js.map","import { __awaiter, __extends, __generator } from \"tslib\";\nimport { getGlobalScope, BrowserStorage } from '@amplitude/analytics-core';\nvar MAX_ARRAY_LENGTH = 1000;\nvar LocalStorage = /** @class */ (function (_super) {\n    __extends(LocalStorage, _super);\n    function LocalStorage(config) {\n        var _this = this;\n        var _a, _b;\n        var localStorage;\n        try {\n            localStorage = (_a = getGlobalScope()) === null || _a === void 0 ? void 0 : _a.localStorage;\n        }\n        catch (e) {\n            (_b = config === null || config === void 0 ? void 0 : config.loggerProvider) === null || _b === void 0 ? void 0 : _b.debug(\"Failed to access localStorage. error=\".concat(JSON.stringify(e)));\n            localStorage = undefined;\n        }\n        _this = _super.call(this, localStorage) || this;\n        _this.loggerProvider = config === null || config === void 0 ? void 0 : config.loggerProvider;\n        return _this;\n    }\n    LocalStorage.prototype.set = function (key, value) {\n        var _a;\n        return __awaiter(this, void 0, void 0, function () {\n            var droppedEventsCount;\n            return __generator(this, function (_b) {\n                switch (_b.label) {\n                    case 0:\n                        if (!(Array.isArray(value) && value.length > MAX_ARRAY_LENGTH)) return [3 /*break*/, 2];\n                        droppedEventsCount = value.length - MAX_ARRAY_LENGTH;\n                        return [4 /*yield*/, _super.prototype.set.call(this, key, value.slice(0, MAX_ARRAY_LENGTH))];\n                    case 1:\n                        _b.sent();\n                        (_a = this.loggerProvider) === null || _a === void 0 ? void 0 : _a.error(\"Failed to save \".concat(droppedEventsCount, \" events because the queue length exceeded \").concat(MAX_ARRAY_LENGTH, \".\"));\n                        return [3 /*break*/, 4];\n                    case 2: return [4 /*yield*/, _super.prototype.set.call(this, key, value)];\n                    case 3:\n                        _b.sent();\n                        _b.label = 4;\n                    case 4: return [2 /*return*/];\n                }\n            });\n        });\n    };\n    return LocalStorage;\n}(BrowserStorage));\nexport { LocalStorage };\n//# sourceMappingURL=local-storage.js.map","import { __extends } from \"tslib\";\nimport { getGlobalScope, BrowserStorage } from '@amplitude/analytics-core';\nvar SessionStorage = /** @class */ (function (_super) {\n    __extends(SessionStorage, _super);\n    function SessionStorage() {\n        var _a;\n        return _super.call(this, (_a = getGlobalScope()) === null || _a === void 0 ? void 0 : _a.sessionStorage) || this;\n    }\n    return SessionStorage;\n}(BrowserStorage));\nexport { SessionStorage };\n//# sourceMappingURL=session-storage.js.map","import { __awaiter, __extends, __generator } from \"tslib\";\nimport { BaseTransport } from '@amplitude/analytics-core';\nvar XHRTransport = /** @class */ (function (_super) {\n    __extends(XHRTransport, _super);\n    function XHRTransport() {\n        var _this = _super !== null && _super.apply(this, arguments) || this;\n        _this.state = {\n            done: 4,\n        };\n        return _this;\n    }\n    XHRTransport.prototype.send = function (serverUrl, payload) {\n        return __awaiter(this, void 0, void 0, function () {\n            var _this = this;\n            return __generator(this, function (_a) {\n                return [2 /*return*/, new Promise(function (resolve, reject) {\n                        /* istanbul ignore if */\n                        if (typeof XMLHttpRequest === 'undefined') {\n                            reject(new Error('XHRTransport is not supported.'));\n                        }\n                        var xhr = new XMLHttpRequest();\n                        xhr.open('POST', serverUrl, true);\n                        xhr.onreadystatechange = function () {\n                            if (xhr.readyState === _this.state.done) {\n                                var responseText = xhr.responseText;\n                                try {\n                                    // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n                                    resolve(_this.buildResponse(JSON.parse(responseText)));\n                                }\n                                catch (_a) {\n                                    resolve(_this.buildResponse({ code: xhr.status }));\n                                }\n                            }\n                        };\n                        xhr.setRequestHeader('Content-Type', 'application/json');\n                        xhr.setRequestHeader('Accept', '*/*');\n                        xhr.send(JSON.stringify(payload));\n                    })];\n            });\n        });\n    };\n    return XHRTransport;\n}(BaseTransport));\nexport { XHRTransport };\n//# sourceMappingURL=xhr.js.map","import { __awaiter, __extends, __generator } from \"tslib\";\nimport { BaseTransport, getGlobalScope } from '@amplitude/analytics-core';\nvar SendBeaconTransport = /** @class */ (function (_super) {\n    __extends(SendBeaconTransport, _super);\n    function SendBeaconTransport() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    SendBeaconTransport.prototype.send = function (serverUrl, payload) {\n        return __awaiter(this, void 0, void 0, function () {\n            var _this = this;\n            return __generator(this, function (_a) {\n                return [2 /*return*/, new Promise(function (resolve, reject) {\n                        var globalScope = getGlobalScope();\n                        /* istanbul ignore if */\n                        if (!(globalScope === null || globalScope === void 0 ? void 0 : globalScope.navigator.sendBeacon)) {\n                            throw new Error('SendBeaconTransport is not supported');\n                        }\n                        try {\n                            var data = JSON.stringify(payload);\n                            var success = globalScope.navigator.sendBeacon(serverUrl, JSON.stringify(payload));\n                            if (success) {\n                                return resolve(_this.buildResponse({\n                                    code: 200,\n                                    events_ingested: payload.events.length,\n                                    payload_size_bytes: data.length,\n                                    server_upload_time: Date.now(),\n                                }));\n                            }\n                            return resolve(_this.buildResponse({ code: 500 }));\n                        }\n                        catch (e) {\n                            reject(e);\n                        }\n                    })];\n            });\n        });\n    };\n    return SendBeaconTransport;\n}(BaseTransport));\nexport { SendBeaconTransport };\n//# sourceMappingURL=send-beacon.js.map","import { __awaiter, __generator, __read } from \"tslib\";\nimport { getOldCookieName } from '@amplitude/analytics-core';\nexport var parseLegacyCookies = function (apiKey, cookieStorage, deleteLegacyCookies) {\n    if (deleteLegacyCookies === void 0) { deleteLegacyCookies = true; }\n    return __awaiter(void 0, void 0, void 0, function () {\n        var cookieName, cookies, _a, deviceId, userId, optOut, sessionId, lastEventTime, lastEventId;\n        return __generator(this, function (_b) {\n            switch (_b.label) {\n                case 0:\n                    cookieName = getOldCookieName(apiKey);\n                    return [4 /*yield*/, cookieStorage.getRaw(cookieName)];\n                case 1:\n                    cookies = _b.sent();\n                    if (!cookies) {\n                        return [2 /*return*/, {\n                                optOut: false,\n                            }];\n                    }\n                    if (!deleteLegacyCookies) return [3 /*break*/, 3];\n                    return [4 /*yield*/, cookieStorage.remove(cookieName)];\n                case 2:\n                    _b.sent();\n                    _b.label = 3;\n                case 3:\n                    _a = __read(cookies.split('.'), 6), deviceId = _a[0], userId = _a[1], optOut = _a[2], sessionId = _a[3], lastEventTime = _a[4], lastEventId = _a[5];\n                    return [2 /*return*/, {\n                            deviceId: deviceId,\n                            userId: decode(userId),\n                            sessionId: parseTime(sessionId),\n                            lastEventId: parseTime(lastEventId),\n                            lastEventTime: parseTime(lastEventTime),\n                            optOut: Boolean(optOut),\n                        }];\n            }\n        });\n    });\n};\nexport var parseTime = function (num) {\n    var integer = parseInt(num, 32);\n    if (isNaN(integer)) {\n        return undefined;\n    }\n    return integer;\n};\nexport var decode = function (value) {\n    if (!atob || !escape || !value) {\n        return undefined;\n    }\n    try {\n        return decodeURIComponent(escape(atob(value)));\n    }\n    catch (_a) {\n        return undefined;\n    }\n};\n//# sourceMappingURL=index.js.map","export var DEFAULT_EVENT_PREFIX = '[Amplitude]';\nexport var DEFAULT_PAGE_VIEW_EVENT = \"\".concat(DEFAULT_EVENT_PREFIX, \" Page Viewed\");\nexport var DEFAULT_FORM_START_EVENT = \"\".concat(DEFAULT_EVENT_PREFIX, \" Form Started\");\nexport var DEFAULT_FORM_SUBMIT_EVENT = \"\".concat(DEFAULT_EVENT_PREFIX, \" Form Submitted\");\nexport var DEFAULT_FILE_DOWNLOAD_EVENT = \"\".concat(DEFAULT_EVENT_PREFIX, \" File Downloaded\");\nexport var DEFAULT_SESSION_START_EVENT = 'session_start';\nexport var DEFAULT_SESSION_END_EVENT = 'session_end';\nexport var FILE_EXTENSION = \"\".concat(DEFAULT_EVENT_PREFIX, \" File Extension\");\nexport var FILE_NAME = \"\".concat(DEFAULT_EVENT_PREFIX, \" File Name\");\nexport var LINK_ID = \"\".concat(DEFAULT_EVENT_PREFIX, \" Link ID\");\nexport var LINK_TEXT = \"\".concat(DEFAULT_EVENT_PREFIX, \" Link Text\");\nexport var LINK_URL = \"\".concat(DEFAULT_EVENT_PREFIX, \" Link URL\");\nexport var FORM_ID = \"\".concat(DEFAULT_EVENT_PREFIX, \" Form ID\");\nexport var FORM_NAME = \"\".concat(DEFAULT_EVENT_PREFIX, \" Form Name\");\nexport var FORM_DESTINATION = \"\".concat(DEFAULT_EVENT_PREFIX, \" Form Destination\");\nexport var DEFAULT_IDENTITY_STORAGE = 'cookie';\nexport var DEFAULT_SERVER_ZONE = 'US';\n//# sourceMappingURL=constants.js.map","import { __assign, __awaiter, __extends, __generator } from \"tslib\";\nimport { Config, Logger, LogLevel, MemoryStorage, UUID, CookieStorage, getCookieName, FetchTransport, getQueryParams, } from '@amplitude/analytics-core';\nimport { LocalStorage } from './storage/local-storage';\nimport { SessionStorage } from './storage/session-storage';\nimport { XHRTransport } from './transports/xhr';\nimport { SendBeaconTransport } from './transports/send-beacon';\nimport { parseLegacyCookies } from './cookie-migration';\nimport { DEFAULT_IDENTITY_STORAGE, DEFAULT_SERVER_ZONE } from './constants';\nimport { VERSION } from './version';\n// Exported for testing purposes only. Do not expose to public interface.\nvar BrowserConfig = /** @class */ (function (_super) {\n    __extends(BrowserConfig, _super);\n    function BrowserConfig(apiKey, appVersion, cookieStorage, cookieOptions, defaultTracking, autocapture, deviceId, flushIntervalMillis, flushMaxRetries, flushQueueSize, identityStorage, ingestionMetadata, instanceName, lastEventId, lastEventTime, loggerProvider, logLevel, minIdLength, offline, optOut, partnerId, plan, serverUrl, serverZone, sessionId, sessionTimeout, storageProvider, trackingOptions, transport, useBatch, fetchRemoteConfig, userId, pageCounter, debugLogsEnabled, networkTrackingOptions) {\n        if (cookieStorage === void 0) { cookieStorage = new MemoryStorage(); }\n        if (cookieOptions === void 0) { cookieOptions = {\n            domain: '',\n            expiration: 365,\n            sameSite: 'Lax',\n            secure: false,\n            upgrade: true,\n        }; }\n        if (flushIntervalMillis === void 0) { flushIntervalMillis = 1000; }\n        if (flushMaxRetries === void 0) { flushMaxRetries = 5; }\n        if (flushQueueSize === void 0) { flushQueueSize = 30; }\n        if (identityStorage === void 0) { identityStorage = DEFAULT_IDENTITY_STORAGE; }\n        if (loggerProvider === void 0) { loggerProvider = new Logger(); }\n        if (logLevel === void 0) { logLevel = LogLevel.Warn; }\n        if (offline === void 0) { offline = false; }\n        if (optOut === void 0) { optOut = false; }\n        if (serverUrl === void 0) { serverUrl = ''; }\n        if (serverZone === void 0) { serverZone = DEFAULT_SERVER_ZONE; }\n        if (sessionTimeout === void 0) { sessionTimeout = 30 * 60 * 1000; }\n        if (storageProvider === void 0) { storageProvider = new LocalStorage({ loggerProvider: loggerProvider }); }\n        if (trackingOptions === void 0) { trackingOptions = {\n            ipAddress: true,\n            language: true,\n            platform: true,\n        }; }\n        if (transport === void 0) { transport = 'fetch'; }\n        if (useBatch === void 0) { useBatch = false; }\n        if (fetchRemoteConfig === void 0) { fetchRemoteConfig = true; }\n        var _this = _super.call(this, { apiKey: apiKey, storageProvider: storageProvider, transportProvider: createTransport(transport) }) || this;\n        _this.apiKey = apiKey;\n        _this.appVersion = appVersion;\n        _this.cookieOptions = cookieOptions;\n        _this.defaultTracking = defaultTracking;\n        _this.autocapture = autocapture;\n        _this.flushIntervalMillis = flushIntervalMillis;\n        _this.flushMaxRetries = flushMaxRetries;\n        _this.flushQueueSize = flushQueueSize;\n        _this.identityStorage = identityStorage;\n        _this.ingestionMetadata = ingestionMetadata;\n        _this.instanceName = instanceName;\n        _this.loggerProvider = loggerProvider;\n        _this.logLevel = logLevel;\n        _this.minIdLength = minIdLength;\n        _this.offline = offline;\n        _this.partnerId = partnerId;\n        _this.plan = plan;\n        _this.serverUrl = serverUrl;\n        _this.serverZone = serverZone;\n        _this.sessionTimeout = sessionTimeout;\n        _this.storageProvider = storageProvider;\n        _this.trackingOptions = trackingOptions;\n        _this.transport = transport;\n        _this.useBatch = useBatch;\n        _this.fetchRemoteConfig = fetchRemoteConfig;\n        _this.networkTrackingOptions = networkTrackingOptions;\n        _this.version = VERSION;\n        _this._optOut = false;\n        _this._cookieStorage = cookieStorage;\n        _this.deviceId = deviceId;\n        _this.lastEventId = lastEventId;\n        _this.lastEventTime = lastEventTime;\n        _this.optOut = optOut;\n        _this.sessionId = sessionId;\n        _this.pageCounter = pageCounter;\n        _this.userId = userId;\n        _this.debugLogsEnabled = debugLogsEnabled;\n        _this.loggerProvider.enable(debugLogsEnabled ? LogLevel.Debug : _this.logLevel);\n        _this.networkTrackingOptions = networkTrackingOptions;\n        return _this;\n    }\n    Object.defineProperty(BrowserConfig.prototype, \"cookieStorage\", {\n        get: function () {\n            return this._cookieStorage;\n        },\n        set: function (cookieStorage) {\n            if (this._cookieStorage !== cookieStorage) {\n                this._cookieStorage = cookieStorage;\n                this.updateStorage();\n            }\n        },\n        enumerable: false,\n        configurable: true\n    });\n    Object.defineProperty(BrowserConfig.prototype, \"deviceId\", {\n        get: function () {\n            return this._deviceId;\n        },\n        set: function (deviceId) {\n            if (this._deviceId !== deviceId) {\n                this._deviceId = deviceId;\n                this.updateStorage();\n            }\n        },\n        enumerable: false,\n        configurable: true\n    });\n    Object.defineProperty(BrowserConfig.prototype, \"userId\", {\n        get: function () {\n            return this._userId;\n        },\n        set: function (userId) {\n            if (this._userId !== userId) {\n                this._userId = userId;\n                this.updateStorage();\n            }\n        },\n        enumerable: false,\n        configurable: true\n    });\n    Object.defineProperty(BrowserConfig.prototype, \"sessionId\", {\n        get: function () {\n            return this._sessionId;\n        },\n        set: function (sessionId) {\n            if (this._sessionId !== sessionId) {\n                this._sessionId = sessionId;\n                this.updateStorage();\n            }\n        },\n        enumerable: false,\n        configurable: true\n    });\n    Object.defineProperty(BrowserConfig.prototype, \"optOut\", {\n        get: function () {\n            return this._optOut;\n        },\n        set: function (optOut) {\n            if (this._optOut !== optOut) {\n                this._optOut = optOut;\n                this.updateStorage();\n            }\n        },\n        enumerable: false,\n        configurable: true\n    });\n    Object.defineProperty(BrowserConfig.prototype, \"lastEventTime\", {\n        get: function () {\n            return this._lastEventTime;\n        },\n        set: function (lastEventTime) {\n            if (this._lastEventTime !== lastEventTime) {\n                this._lastEventTime = lastEventTime;\n                this.updateStorage();\n            }\n        },\n        enumerable: false,\n        configurable: true\n    });\n    Object.defineProperty(BrowserConfig.prototype, \"lastEventId\", {\n        get: function () {\n            return this._lastEventId;\n        },\n        set: function (lastEventId) {\n            if (this._lastEventId !== lastEventId) {\n                this._lastEventId = lastEventId;\n                this.updateStorage();\n            }\n        },\n        enumerable: false,\n        configurable: true\n    });\n    Object.defineProperty(BrowserConfig.prototype, \"pageCounter\", {\n        get: function () {\n            return this._pageCounter;\n        },\n        set: function (pageCounter) {\n            if (this._pageCounter !== pageCounter) {\n                this._pageCounter = pageCounter;\n                this.updateStorage();\n            }\n        },\n        enumerable: false,\n        configurable: true\n    });\n    Object.defineProperty(BrowserConfig.prototype, \"debugLogsEnabled\", {\n        set: function (debugLogsEnabled) {\n            if (this._debugLogsEnabled !== debugLogsEnabled) {\n                this._debugLogsEnabled = debugLogsEnabled;\n                this.updateStorage();\n            }\n        },\n        enumerable: false,\n        configurable: true\n    });\n    BrowserConfig.prototype.updateStorage = function () {\n        var cache = {\n            deviceId: this._deviceId,\n            userId: this._userId,\n            sessionId: this._sessionId,\n            optOut: this._optOut,\n            lastEventTime: this._lastEventTime,\n            lastEventId: this._lastEventId,\n            pageCounter: this._pageCounter,\n            debugLogsEnabled: this._debugLogsEnabled,\n        };\n        void this.cookieStorage.set(getCookieName(this.apiKey), cache);\n    };\n    return BrowserConfig;\n}(Config));\nexport { BrowserConfig };\nexport var useBrowserConfig = function (apiKey, options, amplitudeInstance) {\n    if (options === void 0) { options = {}; }\n    return __awaiter(void 0, void 0, void 0, function () {\n        var identityStorage, cookieOptions, _a, _b, cookieStorage, legacyCookies, previousCookies, queryParams, ampTimestamp, isWithinTimeLimit, deviceId, lastEventId, lastEventTime, optOut, sessionId, userId, trackingOptions, pageCounter, debugLogsEnabled, browserConfig;\n        var _c;\n        var _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x, _y, _z, _0, _1, _2;\n        return __generator(this, function (_3) {\n            switch (_3.label) {\n                case 0:\n                    identityStorage = options.identityStorage || DEFAULT_IDENTITY_STORAGE;\n                    _c = {};\n                    if (!(identityStorage !== DEFAULT_IDENTITY_STORAGE)) return [3 /*break*/, 1];\n                    _a = '';\n                    return [3 /*break*/, 5];\n                case 1:\n                    if (!((_e = (_d = options.cookieOptions) === null || _d === void 0 ? void 0 : _d.domain) !== null && _e !== void 0)) return [3 /*break*/, 2];\n                    _b = _e;\n                    return [3 /*break*/, 4];\n                case 2: return [4 /*yield*/, getTopLevelDomain()];\n                case 3:\n                    _b = (_3.sent());\n                    _3.label = 4;\n                case 4:\n                    _a = _b;\n                    _3.label = 5;\n                case 5:\n                    cookieOptions = __assign.apply(void 0, [(_c.domain = _a, _c.expiration = 365, _c.sameSite = 'Lax', _c.secure = false, _c.upgrade = true, _c), options.cookieOptions]);\n                    cookieStorage = createCookieStorage(options.identityStorage, cookieOptions);\n                    return [4 /*yield*/, parseLegacyCookies(apiKey, cookieStorage, (_g = (_f = options.cookieOptions) === null || _f === void 0 ? void 0 : _f.upgrade) !== null && _g !== void 0 ? _g : true)];\n                case 6:\n                    legacyCookies = _3.sent();\n                    return [4 /*yield*/, cookieStorage.get(getCookieName(apiKey))];\n                case 7:\n                    previousCookies = _3.sent();\n                    queryParams = getQueryParams();\n                    ampTimestamp = queryParams.ampTimestamp ? Number(queryParams.ampTimestamp) : undefined;\n                    isWithinTimeLimit = ampTimestamp ? Date.now() < ampTimestamp : true;\n                    deviceId = (_m = (_l = (_k = (_h = options.deviceId) !== null && _h !== void 0 ? _h : (isWithinTimeLimit ? (_j = queryParams.ampDeviceId) !== null && _j !== void 0 ? _j : queryParams.deviceId : undefined)) !== null && _k !== void 0 ? _k : previousCookies === null || previousCookies === void 0 ? void 0 : previousCookies.deviceId) !== null && _l !== void 0 ? _l : legacyCookies.deviceId) !== null && _m !== void 0 ? _m : UUID();\n                    lastEventId = (_o = previousCookies === null || previousCookies === void 0 ? void 0 : previousCookies.lastEventId) !== null && _o !== void 0 ? _o : legacyCookies.lastEventId;\n                    lastEventTime = (_p = previousCookies === null || previousCookies === void 0 ? void 0 : previousCookies.lastEventTime) !== null && _p !== void 0 ? _p : legacyCookies.lastEventTime;\n                    optOut = (_r = (_q = options.optOut) !== null && _q !== void 0 ? _q : previousCookies === null || previousCookies === void 0 ? void 0 : previousCookies.optOut) !== null && _r !== void 0 ? _r : legacyCookies.optOut;\n                    sessionId = (_s = previousCookies === null || previousCookies === void 0 ? void 0 : previousCookies.sessionId) !== null && _s !== void 0 ? _s : legacyCookies.sessionId;\n                    userId = (_u = (_t = options.userId) !== null && _t !== void 0 ? _t : previousCookies === null || previousCookies === void 0 ? void 0 : previousCookies.userId) !== null && _u !== void 0 ? _u : legacyCookies.userId;\n                    amplitudeInstance.previousSessionDeviceId = (_v = previousCookies === null || previousCookies === void 0 ? void 0 : previousCookies.deviceId) !== null && _v !== void 0 ? _v : legacyCookies.deviceId;\n                    amplitudeInstance.previousSessionUserId = (_w = previousCookies === null || previousCookies === void 0 ? void 0 : previousCookies.userId) !== null && _w !== void 0 ? _w : legacyCookies.userId;\n                    trackingOptions = {\n                        ipAddress: (_y = (_x = options.trackingOptions) === null || _x === void 0 ? void 0 : _x.ipAddress) !== null && _y !== void 0 ? _y : true,\n                        language: (_0 = (_z = options.trackingOptions) === null || _z === void 0 ? void 0 : _z.language) !== null && _0 !== void 0 ? _0 : true,\n                        platform: (_2 = (_1 = options.trackingOptions) === null || _1 === void 0 ? void 0 : _1.platform) !== null && _2 !== void 0 ? _2 : true,\n                    };\n                    pageCounter = previousCookies === null || previousCookies === void 0 ? void 0 : previousCookies.pageCounter;\n                    debugLogsEnabled = previousCookies === null || previousCookies === void 0 ? void 0 : previousCookies.debugLogsEnabled;\n                    // Override default tracking options if autocapture is set\n                    if (options.autocapture !== undefined) {\n                        options.defaultTracking = options.autocapture;\n                    }\n                    browserConfig = new BrowserConfig(apiKey, options.appVersion, cookieStorage, cookieOptions, options.defaultTracking, options.autocapture, deviceId, options.flushIntervalMillis, options.flushMaxRetries, options.flushQueueSize, identityStorage, options.ingestionMetadata, options.instanceName, lastEventId, lastEventTime, options.loggerProvider, options.logLevel, options.minIdLength, options.offline, optOut, options.partnerId, options.plan, options.serverUrl, options.serverZone, sessionId, options.sessionTimeout, options.storageProvider, trackingOptions, options.transport, options.useBatch, options.fetchRemoteConfig, userId, pageCounter, debugLogsEnabled, options.networkTrackingOptions);\n                    return [4 /*yield*/, browserConfig.storageProvider.isEnabled()];\n                case 8:\n                    if (!(_3.sent())) {\n                        browserConfig.loggerProvider.warn(\"Storage provider \".concat(browserConfig.storageProvider.constructor.name, \" is not enabled. Falling back to MemoryStorage.\"));\n                        browserConfig.storageProvider = new MemoryStorage();\n                    }\n                    return [2 /*return*/, browserConfig];\n            }\n        });\n    });\n};\nexport var createCookieStorage = function (identityStorage, cookieOptions) {\n    if (identityStorage === void 0) { identityStorage = DEFAULT_IDENTITY_STORAGE; }\n    if (cookieOptions === void 0) { cookieOptions = {}; }\n    switch (identityStorage) {\n        case 'localStorage':\n            return new LocalStorage();\n        case 'sessionStorage':\n            return new SessionStorage();\n        case 'none':\n            return new MemoryStorage();\n        case 'cookie':\n        default:\n            return new CookieStorage(__assign(__assign({}, cookieOptions), { expirationDays: cookieOptions.expiration }));\n    }\n};\nexport var createTransport = function (transport) {\n    if (transport === 'xhr') {\n        return new XHRTransport();\n    }\n    if (transport === 'beacon') {\n        return new SendBeaconTransport();\n    }\n    return new FetchTransport();\n};\nexport var getTopLevelDomain = function (url) { return __awaiter(void 0, void 0, void 0, function () {\n    var host, parts, levels, storageKey, i, i, domain, options, storage, value;\n    return __generator(this, function (_a) {\n        switch (_a.label) {\n            case 0: return [4 /*yield*/, new CookieStorage().isEnabled()];\n            case 1:\n                if (!(_a.sent()) ||\n                    (!url && (typeof location === 'undefined' || !location.hostname))) {\n                    return [2 /*return*/, ''];\n                }\n                host = url !== null && url !== void 0 ? url : location.hostname;\n                parts = host.split('.');\n                levels = [];\n                storageKey = 'AMP_TLDTEST';\n                for (i = parts.length - 2; i >= 0; --i) {\n                    levels.push(parts.slice(i).join('.'));\n                }\n                i = 0;\n                _a.label = 2;\n            case 2:\n                if (!(i < levels.length)) return [3 /*break*/, 7];\n                domain = levels[i];\n                options = { domain: '.' + domain };\n                storage = new CookieStorage(options);\n                return [4 /*yield*/, storage.set(storageKey, 1)];\n            case 3:\n                _a.sent();\n                return [4 /*yield*/, storage.get(storageKey)];\n            case 4:\n                value = _a.sent();\n                if (!value) return [3 /*break*/, 6];\n                return [4 /*yield*/, storage.remove(storageKey)];\n            case 5:\n                _a.sent();\n                return [2 /*return*/, '.' + domain];\n            case 6:\n                i++;\n                return [3 /*break*/, 2];\n            case 7: return [2 /*return*/, ''];\n        }\n    });\n}); };\n//# sourceMappingURL=config.js.map","/* eslint-disable no-restricted-globals */\n/* Only file allowed to access to globalThis, window, self */\nexport var getGlobalScope = function () {\n    // This should only be used for integrations with Amplitude that are not running in a browser environment\n    //   We need to specify the name of the global variable as a string to prevent it from being minified\n    var ampIntegrationContextName = 'ampIntegrationContext';\n    if (typeof globalThis !== 'undefined' && typeof globalThis[ampIntegrationContextName] !== 'undefined') {\n        return globalThis[ampIntegrationContextName];\n    }\n    if (typeof globalThis !== 'undefined') {\n        return globalThis;\n    }\n    if (typeof window !== 'undefined') {\n        return window;\n    }\n    if (typeof self !== 'undefined') {\n        return self;\n    }\n    if (typeof global !== 'undefined') {\n        return global;\n    }\n    return undefined;\n};\n//# sourceMappingURL=global-scope.js.map","import { getGlobalScope } from './global-scope';\nexport var getQueryParams = function () {\n    var _a;\n    var globalScope = getGlobalScope();\n    /* istanbul ignore if */\n    if (!((_a = globalScope === null || globalScope === void 0 ? void 0 : globalScope.location) === null || _a === void 0 ? void 0 : _a.search)) {\n        return {};\n    }\n    var pairs = globalScope.location.search.substring(1).split('&').filter(Boolean);\n    var params = pairs.reduce(function (acc, curr) {\n        var query = curr.split('=', 2);\n        var key = tryDecodeURIComponent(query[0]);\n        var value = tryDecodeURIComponent(query[1]);\n        if (!value) {\n            return acc;\n        }\n        acc[key] = value;\n        return acc;\n    }, {});\n    return params;\n};\nexport var tryDecodeURIComponent = function (value) {\n    if (value === void 0) { value = ''; }\n    try {\n        return decodeURIComponent(value);\n    }\n    catch (_a) {\n        return '';\n    }\n};\n//# sourceMappingURL=query-params.js.map","export var UTM_CAMPAIGN = 'utm_campaign';\nexport var UTM_CONTENT = 'utm_content';\nexport var UTM_ID = 'utm_id';\nexport var UTM_MEDIUM = 'utm_medium';\nexport var UTM_SOURCE = 'utm_source';\nexport var UTM_TERM = 'utm_term';\nexport var DCLID = 'dclid';\nexport var FBCLID = 'fbclid';\nexport var GBRAID = 'gbraid';\nexport var GCLID = 'gclid';\nexport var KO_CLICK_ID = 'ko_click_id';\nexport var LI_FAT_ID = 'li_fat_id';\nexport var MSCLKID = 'msclkid';\nexport var RDT_CID = 'rtd_cid';\nexport var TTCLID = 'ttclid';\nexport var TWCLID = 'twclid';\nexport var WBRAID = 'wbraid';\nexport var EMPTY_VALUE = 'EMPTY';\nexport var BASE_CAMPAIGN = {\n    utm_campaign: undefined,\n    utm_content: undefined,\n    utm_id: undefined,\n    utm_medium: undefined,\n    utm_source: undefined,\n    utm_term: undefined,\n    referrer: undefined,\n    referring_domain: undefined,\n    dclid: undefined,\n    gbraid: undefined,\n    gclid: undefined,\n    fbclid: undefined,\n    ko_click_id: undefined,\n    li_fat_id: undefined,\n    msclkid: undefined,\n    rtd_cid: undefined,\n    ttclid: undefined,\n    twclid: undefined,\n    wbraid: undefined,\n};\nexport var MKTG = 'MKTG';\n//# sourceMappingURL=constants.js.map","import { __assign, __awaiter, __generator } from \"tslib\";\nimport { getQueryParams } from '../query-params';\nimport { UTM_CAMPAIGN, UTM_CONTENT, UTM_MEDIUM, UTM_SOURCE, UTM_TERM, GCLID, FBCLID, BASE_CAMPAIGN, DCLID, MSCLKID, RDT_CID, TWCLID, TTCLID, KO_CLICK_ID, LI_FAT_ID, GBRAID, WBRAID, UTM_ID, } from './constants';\nvar CampaignParser = /** @class */ (function () {\n    function CampaignParser() {\n    }\n    CampaignParser.prototype.parse = function () {\n        return __awaiter(this, void 0, void 0, function () {\n            return __generator(this, function (_a) {\n                return [2 /*return*/, __assign(__assign(__assign(__assign({}, BASE_CAMPAIGN), this.getUtmParam()), this.getReferrer()), this.getClickIds())];\n            });\n        });\n    };\n    CampaignParser.prototype.getUtmParam = function () {\n        var params = getQueryParams();\n        var utmCampaign = params[UTM_CAMPAIGN];\n        var utmContent = params[UTM_CONTENT];\n        var utmId = params[UTM_ID];\n        var utmMedium = params[UTM_MEDIUM];\n        var utmSource = params[UTM_SOURCE];\n        var utmTerm = params[UTM_TERM];\n        return {\n            utm_campaign: utmCampaign,\n            utm_content: utmContent,\n            utm_id: utmId,\n            utm_medium: utmMedium,\n            utm_source: utmSource,\n            utm_term: utmTerm,\n        };\n    };\n    CampaignParser.prototype.getReferrer = function () {\n        var _a, _b;\n        var data = {\n            referrer: undefined,\n            referring_domain: undefined,\n        };\n        try {\n            data.referrer = document.referrer || undefined;\n            data.referring_domain = (_b = (_a = data.referrer) === null || _a === void 0 ? void 0 : _a.split('/')[2]) !== null && _b !== void 0 ? _b : undefined;\n        }\n        catch (_c) {\n            // nothing to track\n        }\n        return data;\n    };\n    CampaignParser.prototype.getClickIds = function () {\n        var _a;\n        var params = getQueryParams();\n        return _a = {},\n            _a[DCLID] = params[DCLID],\n            _a[FBCLID] = params[FBCLID],\n            _a[GBRAID] = params[GBRAID],\n            _a[GCLID] = params[GCLID],\n            _a[KO_CLICK_ID] = params[KO_CLICK_ID],\n            _a[LI_FAT_ID] = params[LI_FAT_ID],\n            _a[MSCLKID] = params[MSCLKID],\n            _a[RDT_CID] = params[RDT_CID],\n            _a[TTCLID] = params[TTCLID],\n            _a[TWCLID] = params[TWCLID],\n            _a[WBRAID] = params[WBRAID],\n            _a;\n    };\n    return CampaignParser;\n}());\nexport { CampaignParser };\n//# sourceMappingURL=campaign-parser.js.map","export var IdentifyOperation;\n(function (IdentifyOperation) {\n    // Base Operations to set values\n    IdentifyOperation[\"SET\"] = \"$set\";\n    IdentifyOperation[\"SET_ONCE\"] = \"$setOnce\";\n    // Operations around modifying existing values\n    IdentifyOperation[\"ADD\"] = \"$add\";\n    IdentifyOperation[\"APPEND\"] = \"$append\";\n    IdentifyOperation[\"PREPEND\"] = \"$prepend\";\n    IdentifyOperation[\"REMOVE\"] = \"$remove\";\n    // Operations around appending values *if* they aren't present\n    IdentifyOperation[\"PREINSERT\"] = \"$preInsert\";\n    IdentifyOperation[\"POSTINSERT\"] = \"$postInsert\";\n    // Operations around removing properties/values\n    IdentifyOperation[\"UNSET\"] = \"$unset\";\n    IdentifyOperation[\"CLEAR_ALL\"] = \"$clearAll\";\n})(IdentifyOperation || (IdentifyOperation = {}));\nexport var RevenueProperty;\n(function (RevenueProperty) {\n    RevenueProperty[\"REVENUE_PRODUCT_ID\"] = \"$productId\";\n    RevenueProperty[\"REVENUE_QUANTITY\"] = \"$quantity\";\n    RevenueProperty[\"REVENUE_PRICE\"] = \"$price\";\n    RevenueProperty[\"REVENUE_TYPE\"] = \"$revenueType\";\n    RevenueProperty[\"REVENUE_CURRENCY\"] = \"$currency\";\n    RevenueProperty[\"REVENUE\"] = \"$revenue\";\n})(RevenueProperty || (RevenueProperty = {}));\n/**\n * Strings that have special meaning when used as an event's type\n * and have different specifications.\n */\nexport var SpecialEventType;\n(function (SpecialEventType) {\n    SpecialEventType[\"IDENTIFY\"] = \"$identify\";\n    SpecialEventType[\"GROUP_IDENTIFY\"] = \"$groupidentify\";\n    SpecialEventType[\"REVENUE\"] = \"revenue_amount\";\n})(SpecialEventType || (SpecialEventType = {}));\n//# sourceMappingURL=event.js.map","export var omitUndefined = function (input) {\n    var obj = {};\n    for (var key in input) {\n        var val = input[key];\n        if (val) {\n            obj[key] = val;\n        }\n    }\n    return obj;\n};\n//# sourceMappingURL=utils.js.map","import { __assign, __awaiter, __generator, __read, __spreadArray } from \"tslib\";\nimport { CampaignParser, getGlobalScope } from '@amplitude/analytics-client-common';\nimport { IdentifyOperation, } from '@amplitude/analytics-types';\nimport { BASE_CAMPAIGN } from '@amplitude/analytics-client-common';\nimport { omitUndefined } from './utils';\nexport var defaultPageViewEvent = '[Amplitude] Page Viewed';\nexport var pageViewTrackingPlugin = function (options) {\n    if (options === void 0) { options = {}; }\n    var amplitude;\n    var globalScope = getGlobalScope();\n    var loggerProvider = undefined;\n    var isTracking = false;\n    var localConfig;\n    var trackOn = options.trackOn, trackHistoryChanges = options.trackHistoryChanges, _a = options.eventType, eventType = _a === void 0 ? defaultPageViewEvent : _a;\n    var getDecodeURI = function (locationStr) {\n        var decodedLocationStr = locationStr;\n        try {\n            decodedLocationStr = decodeURI(locationStr);\n        }\n        catch (e) {\n            /* istanbul ignore next */\n            loggerProvider === null || loggerProvider === void 0 ? void 0 : loggerProvider.error('Malformed URI sequence: ', e);\n        }\n        return decodedLocationStr;\n    };\n    var createPageViewEvent = function () { return __awaiter(void 0, void 0, void 0, function () {\n        var locationHREF, _a;\n        var _b;\n        return __generator(this, function (_c) {\n            switch (_c.label) {\n                case 0:\n                    locationHREF = getDecodeURI((typeof location !== 'undefined' && location.href) || '');\n                    _b = {\n                        event_type: eventType\n                    };\n                    _a = [{}];\n                    return [4 /*yield*/, getCampaignParams()];\n                case 1: return [2 /*return*/, (_b.event_properties = __assign.apply(void 0, [__assign.apply(void 0, _a.concat([(_c.sent())])), { '[Amplitude] Page Domain': \n                            /* istanbul ignore next */ (typeof location !== 'undefined' && location.hostname) || '', '[Amplitude] Page Location': locationHREF, '[Amplitude] Page Path': \n                            /* istanbul ignore next */ (typeof location !== 'undefined' && getDecodeURI(location.pathname)) || '', '[Amplitude] Page Title': /* istanbul ignore next */ (typeof document !== 'undefined' && document.title) || '', '[Amplitude] Page URL': locationHREF.split('?')[0] }]),\n                        _b)];\n            }\n        });\n    }); };\n    var shouldTrackOnPageLoad = function () { return typeof trackOn === 'undefined' || (typeof trackOn === 'function' && trackOn()); };\n    /* istanbul ignore next */\n    var previousURL = typeof location !== 'undefined' ? location.href : null;\n    var trackHistoryPageView = function () { return __awaiter(void 0, void 0, void 0, function () {\n        var newURL, shouldTrackPageView, _a, _b, _c;\n        return __generator(this, function (_d) {\n            switch (_d.label) {\n                case 0:\n                    newURL = location.href;\n                    shouldTrackPageView = shouldTrackHistoryPageView(trackHistoryChanges, newURL, previousURL || '') && shouldTrackOnPageLoad();\n                    // Note: Update `previousURL` in the same clock tick as `shouldTrackHistoryPageView()`\n                    // This was previously done after `amplitude?.track(await createPageViewEvent());` and\n                    // causes a concurrency issue where app triggers `pushState` twice with the same URL target\n                    // but `previousURL` is only updated after the second `pushState` producing two page viewed events\n                    previousURL = newURL;\n                    if (!shouldTrackPageView) return [3 /*break*/, 4];\n                    /* istanbul ignore next */\n                    loggerProvider === null || loggerProvider === void 0 ? void 0 : loggerProvider.log('Tracking page view event');\n                    if (!(amplitude === null || amplitude === void 0)) return [3 /*break*/, 1];\n                    _a = void 0;\n                    return [3 /*break*/, 3];\n                case 1:\n                    _c = (_b = amplitude).track;\n                    return [4 /*yield*/, createPageViewEvent()];\n                case 2:\n                    _a = _c.apply(_b, [_d.sent()]);\n                    _d.label = 3;\n                case 3:\n                    _a;\n                    _d.label = 4;\n                case 4: return [2 /*return*/];\n            }\n        });\n    }); };\n    /* istanbul ignore next */\n    var trackHistoryPageViewWrapper = function () {\n        void trackHistoryPageView();\n    };\n    var plugin = {\n        name: '@amplitude/plugin-page-view-tracking-browser',\n        type: 'enrichment',\n        setup: function (config, client) { return __awaiter(void 0, void 0, void 0, function () {\n            var _a, _b;\n            return __generator(this, function (_c) {\n                switch (_c.label) {\n                    case 0:\n                        amplitude = client;\n                        localConfig = config;\n                        loggerProvider = config.loggerProvider;\n                        loggerProvider.log('Installing @amplitude/plugin-page-view-tracking-browser');\n                        isTracking = true;\n                        if (globalScope) {\n                            globalScope.addEventListener('popstate', trackHistoryPageViewWrapper);\n                            /* istanbul ignore next */\n                            // There is no global browser listener for changes to history, so we have\n                            // to modify pushState directly.\n                            // https://stackoverflow.com/a/64927639\n                            // eslint-disable-next-line @typescript-eslint/unbound-method\n                            globalScope.history.pushState = new Proxy(globalScope.history.pushState, {\n                                apply: function (target, thisArg, _a) {\n                                    var _b = __read(_a, 3), state = _b[0], unused = _b[1], url = _b[2];\n                                    target.apply(thisArg, [state, unused, url]);\n                                    if (isTracking) {\n                                        void trackHistoryPageView();\n                                    }\n                                },\n                            });\n                        }\n                        if (!shouldTrackOnPageLoad()) return [3 /*break*/, 2];\n                        loggerProvider.log('Tracking page view event');\n                        _b = (_a = amplitude).track;\n                        return [4 /*yield*/, createPageViewEvent()];\n                    case 1:\n                        _b.apply(_a, [_c.sent()]);\n                        _c.label = 2;\n                    case 2: return [2 /*return*/];\n                }\n            });\n        }); },\n        execute: function (event) { return __awaiter(void 0, void 0, void 0, function () {\n            var pageViewEvent;\n            return __generator(this, function (_a) {\n                switch (_a.label) {\n                    case 0:\n                        if (!(trackOn === 'attribution' && isCampaignEvent(event))) return [3 /*break*/, 2];\n                        /* istanbul ignore next */ // loggerProvider should be defined by the time execute is invoked\n                        loggerProvider === null || loggerProvider === void 0 ? void 0 : loggerProvider.log('Enriching campaign event to page view event with campaign parameters');\n                        return [4 /*yield*/, createPageViewEvent()];\n                    case 1:\n                        pageViewEvent = _a.sent();\n                        event.event_type = pageViewEvent.event_type;\n                        event.event_properties = __assign(__assign({}, event.event_properties), pageViewEvent.event_properties);\n                        _a.label = 2;\n                    case 2:\n                        // Update the pageCounter for the page view event\n                        if (localConfig && event.event_type === eventType) {\n                            localConfig.pageCounter = !localConfig.pageCounter ? 1 : localConfig.pageCounter + 1;\n                            event.event_properties = __assign(__assign({}, event.event_properties), { '[Amplitude] Page Counter': localConfig.pageCounter });\n                        }\n                        return [2 /*return*/, event];\n                }\n            });\n        }); },\n        teardown: function () { return __awaiter(void 0, void 0, void 0, function () {\n            return __generator(this, function (_a) {\n                if (globalScope) {\n                    globalScope.removeEventListener('popstate', trackHistoryPageViewWrapper);\n                    isTracking = false;\n                }\n                return [2 /*return*/];\n            });\n        }); },\n    };\n    return plugin;\n};\nvar getCampaignParams = function () { return __awaiter(void 0, void 0, void 0, function () { var _a; return __generator(this, function (_b) {\n    switch (_b.label) {\n        case 0:\n            _a = omitUndefined;\n            return [4 /*yield*/, new CampaignParser().parse()];\n        case 1: return [2 /*return*/, _a.apply(void 0, [_b.sent()])];\n    }\n}); }); };\nvar isCampaignEvent = function (event) {\n    if (event.event_type === '$identify' && event.user_properties) {\n        var properties = event.user_properties;\n        var $set = properties[IdentifyOperation.SET] || {};\n        var $unset = properties[IdentifyOperation.UNSET] || {};\n        var userProperties_1 = __spreadArray(__spreadArray([], __read(Object.keys($set)), false), __read(Object.keys($unset)), false);\n        return Object.keys(BASE_CAMPAIGN).every(function (value) { return userProperties_1.includes(value); });\n    }\n    return false;\n};\nexport var shouldTrackHistoryPageView = function (trackingOption, newURLStr, oldURLStr) {\n    switch (trackingOption) {\n        case 'pathOnly': {\n            if (oldURLStr == '')\n                return true;\n            var newURL = new URL(newURLStr);\n            var oldURL = new URL(oldURLStr);\n            var newBaseStr = newURL.origin + newURL.pathname;\n            var oldBaseStr = oldURL.origin + oldURL.pathname;\n            return newBaseStr !== oldBaseStr;\n        }\n        default:\n            return newURLStr !== oldURLStr;\n    }\n};\n//# sourceMappingURL=page-view-tracking.js.map","import { __awaiter, __generator } from \"tslib\";\nimport { DEFAULT_FORM_START_EVENT, DEFAULT_FORM_SUBMIT_EVENT, FORM_ID, FORM_NAME, FORM_DESTINATION, } from '../constants';\nimport { getGlobalScope } from '@amplitude/analytics-core';\nexport var formInteractionTracking = function () {\n    var observer;\n    var eventListeners = [];\n    var addEventListener = function (element, type, handler) {\n        element.addEventListener(type, handler);\n        eventListeners.push({\n            element: element,\n            type: type,\n            handler: handler,\n        });\n    };\n    var removeClickListeners = function () {\n        eventListeners.forEach(function (_a) {\n            var element = _a.element, type = _a.type, handler = _a.handler;\n            /* istanbul ignore next */\n            element === null || element === void 0 ? void 0 : element.removeEventListener(type, handler);\n        });\n        eventListeners = [];\n    };\n    var name = '@amplitude/plugin-form-interaction-tracking-browser';\n    var type = 'enrichment';\n    var setup = function (config, amplitude) { return __awaiter(void 0, void 0, void 0, function () {\n        var initializeFormTracking, window_1;\n        return __generator(this, function (_a) {\n            initializeFormTracking = function () {\n                /* istanbul ignore if */\n                if (!amplitude) {\n                    // TODO: Add required minimum version of @amplitude/analytics-browser\n                    config.loggerProvider.warn('Form interaction tracking requires a later version of @amplitude/analytics-browser. Form interaction events are not tracked.');\n                    return;\n                }\n                /* istanbul ignore if */\n                if (typeof document === 'undefined') {\n                    return;\n                }\n                var addFormInteractionListener = function (form) {\n                    var hasFormChanged = false;\n                    addEventListener(form, 'change', function () {\n                        var _a;\n                        var formDestination = extractFormAction(form);\n                        if (!hasFormChanged) {\n                            amplitude.track(DEFAULT_FORM_START_EVENT, (_a = {},\n                                _a[FORM_ID] = stringOrUndefined(form.id),\n                                _a[FORM_NAME] = stringOrUndefined(form.name),\n                                _a[FORM_DESTINATION] = formDestination,\n                                _a));\n                        }\n                        hasFormChanged = true;\n                    });\n                    addEventListener(form, 'submit', function () {\n                        var _a, _b;\n                        var formDestination = extractFormAction(form);\n                        if (!hasFormChanged) {\n                            amplitude.track(DEFAULT_FORM_START_EVENT, (_a = {},\n                                _a[FORM_ID] = stringOrUndefined(form.id),\n                                _a[FORM_NAME] = stringOrUndefined(form.name),\n                                _a[FORM_DESTINATION] = formDestination,\n                                _a));\n                        }\n                        amplitude.track(DEFAULT_FORM_SUBMIT_EVENT, (_b = {},\n                            _b[FORM_ID] = stringOrUndefined(form.id),\n                            _b[FORM_NAME] = stringOrUndefined(form.name),\n                            _b[FORM_DESTINATION] = formDestination,\n                            _b));\n                        hasFormChanged = false;\n                    });\n                };\n                // Adds listener to existing anchor tags\n                var forms = Array.from(document.getElementsByTagName('form'));\n                forms.forEach(addFormInteractionListener);\n                // Adds listener to anchor tags added after initial load\n                /* istanbul ignore else */\n                if (typeof MutationObserver !== 'undefined') {\n                    observer = new MutationObserver(function (mutations) {\n                        mutations.forEach(function (mutation) {\n                            mutation.addedNodes.forEach(function (node) {\n                                if (node.nodeName === 'FORM') {\n                                    addFormInteractionListener(node);\n                                }\n                                if ('querySelectorAll' in node && typeof node.querySelectorAll === 'function') {\n                                    Array.from(node.querySelectorAll('form')).map(addFormInteractionListener);\n                                }\n                            });\n                        });\n                    });\n                    observer.observe(document.body, {\n                        subtree: true,\n                        childList: true,\n                    });\n                }\n            };\n            // If the document is already loaded, initialize immediately.\n            if (document.readyState === 'complete') {\n                initializeFormTracking();\n            }\n            else {\n                window_1 = getGlobalScope();\n                /* istanbul ignore else*/\n                if (window_1) {\n                    window_1.addEventListener('load', initializeFormTracking);\n                }\n                else {\n                    config.loggerProvider.debug('Form interaction tracking is not installed because global is undefined.');\n                }\n            }\n            return [2 /*return*/];\n        });\n    }); };\n    var execute = function (event) { return __awaiter(void 0, void 0, void 0, function () { return __generator(this, function (_a) {\n        return [2 /*return*/, event];\n    }); }); };\n    var teardown = function () { return __awaiter(void 0, void 0, void 0, function () {\n        return __generator(this, function (_a) {\n            observer === null || observer === void 0 ? void 0 : observer.disconnect();\n            removeClickListeners();\n            return [2 /*return*/];\n        });\n    }); };\n    return {\n        name: name,\n        type: type,\n        setup: setup,\n        execute: execute,\n        teardown: teardown,\n    };\n};\nexport var stringOrUndefined = function (name) {\n    /* istanbul ignore if */\n    if (typeof name !== 'string') {\n        // We found instances where the value of `name` is an Element and not a string.\n        // Elements may have circular references and would throw an error when passed to `JSON.stringify(...)`.\n        // If a non-string value is seen, assume there is no value.\n        return undefined;\n    }\n    return name;\n};\n// Extracts the form action attribute, and normalizes it to a valid URL to preserve the previous behavior of accessing the action property directly.\nexport var extractFormAction = function (form) {\n    var formDestination = form.getAttribute('action');\n    try {\n        // eslint-disable-next-line no-restricted-globals\n        formDestination = new URL(encodeURI(formDestination !== null && formDestination !== void 0 ? formDestination : ''), window.location.href).href;\n    }\n    catch (_a) {\n        //\n    }\n    return formDestination;\n};\n//# sourceMappingURL=form-interaction-tracking.js.map","import { __awaiter, __generator } from \"tslib\";\nimport { DEFAULT_FILE_DOWNLOAD_EVENT, FILE_EXTENSION, FILE_NAME, LINK_ID, LINK_TEXT, LINK_URL } from '../constants';\nimport { getGlobalScope } from '@amplitude/analytics-core';\nexport var fileDownloadTracking = function () {\n    var observer;\n    var eventListeners = [];\n    var addEventListener = function (element, type, handler) {\n        element.addEventListener(type, handler);\n        eventListeners.push({\n            element: element,\n            type: type,\n            handler: handler,\n        });\n    };\n    var removeClickListeners = function () {\n        eventListeners.forEach(function (_a) {\n            var element = _a.element, type = _a.type, handler = _a.handler;\n            /* istanbul ignore next */\n            element === null || element === void 0 ? void 0 : element.removeEventListener(type, handler);\n        });\n        eventListeners = [];\n    };\n    var name = '@amplitude/plugin-file-download-tracking-browser';\n    var type = 'enrichment';\n    var setup = function (config, amplitude) { return __awaiter(void 0, void 0, void 0, function () {\n        var initializeFileDownloadTracking, window_1;\n        return __generator(this, function (_a) {\n            initializeFileDownloadTracking = function () {\n                /* istanbul ignore if */\n                if (!amplitude) {\n                    // TODO: Add required minimum version of @amplitude/analytics-browser\n                    config.loggerProvider.warn('File download tracking requires a later version of @amplitude/analytics-browser. File download events are not tracked.');\n                    return;\n                }\n                /* istanbul ignore if */\n                if (typeof document === 'undefined') {\n                    return;\n                }\n                var addFileDownloadListener = function (a) {\n                    var url;\n                    try {\n                        // eslint-disable-next-line no-restricted-globals\n                        url = new URL(a.href, window.location.href);\n                    }\n                    catch (_a) {\n                        /* istanbul ignore next */\n                        return;\n                    }\n                    var result = ext.exec(url.href);\n                    var fileExtension = result === null || result === void 0 ? void 0 : result[1];\n                    if (fileExtension) {\n                        addEventListener(a, 'click', function () {\n                            var _a;\n                            if (fileExtension) {\n                                amplitude.track(DEFAULT_FILE_DOWNLOAD_EVENT, (_a = {},\n                                    _a[FILE_EXTENSION] = fileExtension,\n                                    _a[FILE_NAME] = url.pathname,\n                                    _a[LINK_ID] = a.id,\n                                    _a[LINK_TEXT] = a.text,\n                                    _a[LINK_URL] = a.href,\n                                    _a));\n                            }\n                        });\n                    }\n                };\n                var ext = /\\.(pdf|xlsx?|docx?|txt|rtf|csv|exe|key|pp(s|t|tx)|7z|pkg|rar|gz|zip|avi|mov|mp4|mpe?g|wmv|midi?|mp3|wav|wma)(\\?.+)?$/;\n                // Adds listener to existing anchor tags\n                var links = Array.from(document.getElementsByTagName('a'));\n                links.forEach(addFileDownloadListener);\n                // Adds listener to anchor tags added after initial load\n                /* istanbul ignore else */\n                if (typeof MutationObserver !== 'undefined') {\n                    observer = new MutationObserver(function (mutations) {\n                        mutations.forEach(function (mutation) {\n                            mutation.addedNodes.forEach(function (node) {\n                                if (node.nodeName === 'A') {\n                                    addFileDownloadListener(node);\n                                }\n                                if ('querySelectorAll' in node && typeof node.querySelectorAll === 'function') {\n                                    Array.from(node.querySelectorAll('a')).map(addFileDownloadListener);\n                                }\n                            });\n                        });\n                    });\n                    observer.observe(document.body, {\n                        subtree: true,\n                        childList: true,\n                    });\n                }\n            };\n            // If the document is already loaded, initialize immediately.\n            /* istanbul ignore else*/\n            if (document.readyState === 'complete') {\n                initializeFileDownloadTracking();\n            }\n            else {\n                window_1 = getGlobalScope();\n                /* istanbul ignore else*/\n                if (window_1) {\n                    window_1.addEventListener('load', initializeFileDownloadTracking);\n                }\n                else {\n                    config.loggerProvider.debug('File download tracking is not installed because global is undefined.');\n                }\n            }\n            return [2 /*return*/];\n        });\n    }); };\n    var execute = function (event) { return __awaiter(void 0, void 0, void 0, function () { return __generator(this, function (_a) {\n        return [2 /*return*/, event];\n    }); }); };\n    var teardown = function () { return __awaiter(void 0, void 0, void 0, function () {\n        return __generator(this, function (_a) {\n            observer === null || observer === void 0 ? void 0 : observer.disconnect();\n            removeClickListeners();\n            return [2 /*return*/];\n        });\n    }); };\n    return {\n        name: name,\n        type: type,\n        setup: setup,\n        execute: execute,\n        teardown: teardown,\n    };\n};\n//# sourceMappingURL=file-download-tracking.js.map","var notified = false;\nexport var detNotify = function (config) {\n    if (notified || config.defaultTracking !== undefined) {\n        return;\n    }\n    var message = \"`options.defaultTracking` is set to undefined. This implicitly configures your Amplitude instance to track Page Views, Sessions, File Downloads, and Form Interactions. You can suppress this warning by explicitly setting a value to `options.defaultTracking`. The value must either be a boolean, to enable and disable all default events, or an object, for advanced configuration. For example:\\n\\namplitude.init(<YOUR_API_KEY>, {\\n  defaultTracking: true,\\n});\\n\\nVisit https://www.docs.developers.amplitude.com/data/sdks/browser-2/#tracking-default-events for more details.\";\n    config.loggerProvider.warn(message);\n    notified = true;\n};\n/**\n * @private\n * This function is meant for testing purposes only\n */\nexport var resetNotify = function () {\n    notified = false;\n};\n//# sourceMappingURL=det-notification.js.map","import { __awaiter, __generator } from \"tslib\";\nimport { getGlobalScope } from '@amplitude/analytics-core';\nexport var networkConnectivityCheckerPlugin = function () {\n    var name = '@amplitude/plugin-network-checker-browser';\n    var type = 'before';\n    var globalScope = getGlobalScope();\n    var eventListeners = [];\n    var addNetworkListener = function (type, handler) {\n        /* istanbul ignore next */\n        if (globalScope === null || globalScope === void 0 ? void 0 : globalScope.addEventListener) {\n            globalScope === null || globalScope === void 0 ? void 0 : globalScope.addEventListener(type, handler);\n            eventListeners.push({\n                type: type,\n                handler: handler,\n            });\n        }\n    };\n    var removeNetworkListeners = function () {\n        eventListeners.forEach(function (_a) {\n            var type = _a.type, handler = _a.handler;\n            /* istanbul ignore next */\n            globalScope === null || globalScope === void 0 ? void 0 : globalScope.removeEventListener(type, handler);\n        });\n        eventListeners = [];\n    };\n    var setup = function (config, amplitude) { return __awaiter(void 0, void 0, void 0, function () {\n        return __generator(this, function (_a) {\n            if (typeof navigator === 'undefined') {\n                config.loggerProvider.debug('Network connectivity checker plugin is disabled because navigator is not available.');\n                config.offline = false;\n                return [2 /*return*/];\n            }\n            config.offline = !navigator.onLine;\n            addNetworkListener('online', function () {\n                config.loggerProvider.debug('Network connectivity changed to online.');\n                config.offline = false;\n                // Flush immediately will cause ERR_NETWORK_CHANGED\n                setTimeout(function () {\n                    amplitude.flush();\n                }, config.flushIntervalMillis);\n            });\n            addNetworkListener('offline', function () {\n                config.loggerProvider.debug('Network connectivity changed to offline.');\n                config.offline = true;\n            });\n            return [2 /*return*/];\n        });\n    }); };\n    var teardown = function () { return __awaiter(void 0, void 0, void 0, function () {\n        return __generator(this, function (_a) {\n            removeNetworkListeners();\n            return [2 /*return*/];\n        });\n    }); };\n    return {\n        name: name,\n        type: type,\n        setup: setup,\n        teardown: teardown,\n    };\n};\n//# sourceMappingURL=network-connectivity-checker.js.map","import { __assign, __values } from \"tslib\";\n/**\n * Performs a deep transformation of a remote config object so that\n * it matches the expected schema of the local config.\n *\n * Specifically, it normalizes nested `enabled` flags into concise union types.\n *\n * ### Transformation Rules:\n * - If an object has `enabled: true`, it is replaced by the same object without the `enabled` field.\n * - If it has only `enabled: true`, it is replaced with `true`.\n * - If it has `enabled: false`, it is replaced with `false` regardless of other fields.\n *\n * ### Examples:\n * Input:  { prop: { enabled: true, hello: 'world' }}\n * Output: { prop: { hello: 'world' } }\n *\n * Input:  { prop: { enabled: true }}\n * Output: { prop: true }\n *\n * Input:  { prop: { enabled: false, hello: 'world' }}\n * Output: { prop: false }\n *\n * Input:  { prop: { hello: 'world' }}\n * Output: { prop: { hello: 'world' } } // No change\n *\n * @param config Remote config object to be transformed\n * @returns Transformed config object compatible with local schema\n */\nexport function translateRemoteConfigToLocal(config) {\n    var e_1, _a;\n    // Disabling type checking rules because remote config comes from a remote source\n    // and this function needs to handle any unexpected values\n    /* eslint-disable @typescript-eslint/no-unsafe-member-access,\n       @typescript-eslint/no-unsafe-assignment,\n       @typescript-eslint/no-unsafe-argument\n   */\n    if (typeof config !== 'object' || config === null) {\n        return;\n    }\n    // translations are not applied on array properties\n    if (Array.isArray(config)) {\n        return;\n    }\n    var propertyNames = Object.keys(config);\n    try {\n        for (var propertyNames_1 = __values(propertyNames), propertyNames_1_1 = propertyNames_1.next(); !propertyNames_1_1.done; propertyNames_1_1 = propertyNames_1.next()) {\n            var propertyName = propertyNames_1_1.value;\n            try {\n                var value = config[propertyName];\n                // transform objects with { enabled } property to boolean | object\n                if (typeof (value === null || value === void 0 ? void 0 : value.enabled) === 'boolean') {\n                    if (value.enabled) {\n                        // if enabled is true, set the value to the rest of the object\n                        // or true if the object has no other properties\n                        delete value.enabled;\n                        if (Object.keys(value).length === 0) {\n                            config[propertyName] = true;\n                        }\n                    }\n                    else {\n                        // If enabled is false, set the value to false\n                        config[propertyName] = false;\n                    }\n                }\n                // recursively translate properties of the value\n                translateRemoteConfigToLocal(value);\n            }\n            catch (e) {\n                // a failure here means that an accessor threw an error\n                // so don't translate it\n                // TODO(diagnostics): add a diagnostic event for this\n            }\n        }\n    }\n    catch (e_1_1) { e_1 = { error: e_1_1 }; }\n    finally {\n        try {\n            if (propertyNames_1_1 && !propertyNames_1_1.done && (_a = propertyNames_1.return)) _a.call(propertyNames_1);\n        }\n        finally { if (e_1) throw e_1.error; }\n    }\n}\n/**\n * Updates the browser config in place by applying remote configuration settings.\n * Primarily merges autocapture settings from the remote config into the browser config.\n *\n * @param remoteConfig - The remote configuration to apply, or null if none available\n * @param browserConfig - The browser config object to update (modified in place)\n */\nexport function updateBrowserConfigWithRemoteConfig(remoteConfig, browserConfig) {\n    var e_2, _a;\n    var _b, _c;\n    if (!remoteConfig) {\n        return;\n    }\n    // translate remote config to local compatible format\n    translateRemoteConfigToLocal(remoteConfig);\n    try {\n        browserConfig.loggerProvider.debug('Update browser config with remote configuration:', JSON.stringify(remoteConfig));\n        // type cast error will be thrown if remoteConfig is not a valid RemoteConfigBrowserSDK\n        // and it will be caught by the try-catch block\n        var typedRemoteConfig = remoteConfig;\n        // merge remoteConfig.autocapture and browserConfig.autocapture\n        // if a field is in remoteConfig.autocapture, use that value\n        // if a field is not in remoteConfig.autocapture, use the value from browserConfig.autocapture\n        if (typedRemoteConfig && 'autocapture' in typedRemoteConfig) {\n            if (typeof typedRemoteConfig.autocapture === 'boolean') {\n                browserConfig.autocapture = typedRemoteConfig.autocapture;\n            }\n            if (typeof typedRemoteConfig.autocapture === 'object' && typedRemoteConfig.autocapture !== null) {\n                var transformedAutocaptureRemoteConfig = __assign({}, typedRemoteConfig.autocapture);\n                if (browserConfig.autocapture === undefined) {\n                    browserConfig.autocapture = typedRemoteConfig.autocapture;\n                }\n                // Handle Element Interactions config initialization\n                if (typeof typedRemoteConfig.autocapture.elementInteractions === 'object' &&\n                    typedRemoteConfig.autocapture.elementInteractions !== null &&\n                    ((_b = typedRemoteConfig.autocapture.elementInteractions.pageUrlAllowlistRegex) === null || _b === void 0 ? void 0 : _b.length)) {\n                    transformedAutocaptureRemoteConfig.elementInteractions = __assign({}, typedRemoteConfig.autocapture.elementInteractions);\n                    var transformedRcElementInteractions = transformedAutocaptureRemoteConfig.elementInteractions;\n                    var exactAllowList = (_c = transformedRcElementInteractions.pageUrlAllowlist) !== null && _c !== void 0 ? _c : [];\n                    // Convert string patterns to RegExp objects, warn on invalid patterns and skip them\n                    var regexList = [];\n                    try {\n                        for (var _d = __values(typedRemoteConfig.autocapture.elementInteractions.pageUrlAllowlistRegex), _e = _d.next(); !_e.done; _e = _d.next()) {\n                            var pattern = _e.value;\n                            try {\n                                regexList.push(new RegExp(pattern));\n                            }\n                            catch (regexError) {\n                                browserConfig.loggerProvider.warn(\"Invalid regex pattern: \".concat(pattern), regexError);\n                            }\n                        }\n                    }\n                    catch (e_2_1) { e_2 = { error: e_2_1 }; }\n                    finally {\n                        try {\n                            if (_e && !_e.done && (_a = _d.return)) _a.call(_d);\n                        }\n                        finally { if (e_2) throw e_2.error; }\n                    }\n                    var combinedPageUrlAllowlist = exactAllowList.concat(regexList);\n                    transformedRcElementInteractions.pageUrlAllowlist = combinedPageUrlAllowlist;\n                    delete transformedRcElementInteractions.pageUrlAllowlistRegex;\n                }\n                if (typeof browserConfig.autocapture === 'boolean') {\n                    browserConfig.autocapture = __assign({ attribution: browserConfig.autocapture, fileDownloads: browserConfig.autocapture, formInteractions: browserConfig.autocapture, pageViews: browserConfig.autocapture, sessions: browserConfig.autocapture, elementInteractions: browserConfig.autocapture, webVitals: browserConfig.autocapture, frustrationInteractions: browserConfig.autocapture }, transformedAutocaptureRemoteConfig);\n                }\n                if (typeof browserConfig.autocapture === 'object') {\n                    browserConfig.autocapture = __assign(__assign({}, browserConfig.autocapture), transformedAutocaptureRemoteConfig);\n                }\n            }\n            // Override default tracking options if autocapture is updated by remote config\n            browserConfig.defaultTracking = browserConfig.autocapture;\n        }\n        browserConfig.loggerProvider.debug('Browser config after remote config update:', JSON.stringify(browserConfig));\n    }\n    catch (e) {\n        browserConfig.loggerProvider.error('Failed to apply remote configuration because of error: ', e);\n    }\n}\n//# sourceMappingURL=joined-config.js.map","export var ServerZone;\n(function (ServerZone) {\n    ServerZone[\"US\"] = \"US\";\n    ServerZone[\"EU\"] = \"EU\";\n    ServerZone[\"STAGING\"] = \"STAGING\";\n})(ServerZone || (ServerZone = {}));\n//# sourceMappingURL=server-zone.js.map","/** The status of an event. */\nexport var Status;\n(function (Status) {\n    /** The status could not be determined. */\n    Status[\"Unknown\"] = \"unknown\";\n    /** The event was skipped due to configuration or callbacks. */\n    Status[\"Skipped\"] = \"skipped\";\n    /** The event was sent successfully. */\n    Status[\"Success\"] = \"success\";\n    /** A user or device in the payload is currently rate limited and should try again later. */\n    Status[\"RateLimit\"] = \"rate_limit\";\n    /** The sent payload was too large to be processed. */\n    Status[\"PayloadTooLarge\"] = \"payload_too_large\";\n    /** The event could not be processed. */\n    Status[\"Invalid\"] = \"invalid\";\n    /** A server-side error ocurred during submission. */\n    Status[\"Failed\"] = \"failed\";\n    /** a server or client side error occuring when a request takes too long and is cancelled */\n    Status[\"Timeout\"] = \"Timeout\";\n    /** NodeJS runtime environment error.. E.g. disconnected from network */\n    Status[\"SystemError\"] = \"SystemError\";\n})(Status || (Status = {}));\n//# sourceMappingURL=status.js.map","/* eslint-disable @typescript-eslint/no-unsafe-argument */\n/* eslint-disable @typescript-eslint/no-unsafe-assignment */\n/* eslint-disable @typescript-eslint/no-unsafe-call */\nimport { Status } from '@amplitude/analytics-types';\nvar BaseTransport = /** @class */ (function () {\n    function BaseTransport() {\n    }\n    BaseTransport.prototype.send = function (_serverUrl, _payload) {\n        return Promise.resolve(null);\n    };\n    BaseTransport.prototype.buildResponse = function (responseJSON) {\n        var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x;\n        if (typeof responseJSON !== 'object') {\n            return null;\n        }\n        var statusCode = responseJSON.code || 0;\n        var status = this.buildStatus(statusCode);\n        switch (status) {\n            case Status.Success:\n                return {\n                    status: status,\n                    statusCode: statusCode,\n                    body: {\n                        eventsIngested: (_a = responseJSON.events_ingested) !== null && _a !== void 0 ? _a : 0,\n                        payloadSizeBytes: (_b = responseJSON.payload_size_bytes) !== null && _b !== void 0 ? _b : 0,\n                        serverUploadTime: (_c = responseJSON.server_upload_time) !== null && _c !== void 0 ? _c : 0,\n                    },\n                };\n            case Status.Invalid:\n                return {\n                    status: status,\n                    statusCode: statusCode,\n                    body: {\n                        error: (_d = responseJSON.error) !== null && _d !== void 0 ? _d : '',\n                        missingField: (_e = responseJSON.missing_field) !== null && _e !== void 0 ? _e : '',\n                        eventsWithInvalidFields: (_f = responseJSON.events_with_invalid_fields) !== null && _f !== void 0 ? _f : {},\n                        eventsWithMissingFields: (_g = responseJSON.events_with_missing_fields) !== null && _g !== void 0 ? _g : {},\n                        eventsWithInvalidIdLengths: (_h = responseJSON.events_with_invalid_id_lengths) !== null && _h !== void 0 ? _h : {},\n                        epsThreshold: (_j = responseJSON.eps_threshold) !== null && _j !== void 0 ? _j : 0,\n                        exceededDailyQuotaDevices: (_k = responseJSON.exceeded_daily_quota_devices) !== null && _k !== void 0 ? _k : {},\n                        silencedDevices: (_l = responseJSON.silenced_devices) !== null && _l !== void 0 ? _l : [],\n                        silencedEvents: (_m = responseJSON.silenced_events) !== null && _m !== void 0 ? _m : [],\n                        throttledDevices: (_o = responseJSON.throttled_devices) !== null && _o !== void 0 ? _o : {},\n                        throttledEvents: (_p = responseJSON.throttled_events) !== null && _p !== void 0 ? _p : [],\n                    },\n                };\n            case Status.PayloadTooLarge:\n                return {\n                    status: status,\n                    statusCode: statusCode,\n                    body: {\n                        error: (_q = responseJSON.error) !== null && _q !== void 0 ? _q : '',\n                    },\n                };\n            case Status.RateLimit:\n                return {\n                    status: status,\n                    statusCode: statusCode,\n                    body: {\n                        error: (_r = responseJSON.error) !== null && _r !== void 0 ? _r : '',\n                        epsThreshold: (_s = responseJSON.eps_threshold) !== null && _s !== void 0 ? _s : 0,\n                        throttledDevices: (_t = responseJSON.throttled_devices) !== null && _t !== void 0 ? _t : {},\n                        throttledUsers: (_u = responseJSON.throttled_users) !== null && _u !== void 0 ? _u : {},\n                        exceededDailyQuotaDevices: (_v = responseJSON.exceeded_daily_quota_devices) !== null && _v !== void 0 ? _v : {},\n                        exceededDailyQuotaUsers: (_w = responseJSON.exceeded_daily_quota_users) !== null && _w !== void 0 ? _w : {},\n                        throttledEvents: (_x = responseJSON.throttled_events) !== null && _x !== void 0 ? _x : [],\n                    },\n                };\n            case Status.Timeout:\n            default:\n                return {\n                    status: status,\n                    statusCode: statusCode,\n                };\n        }\n    };\n    BaseTransport.prototype.buildStatus = function (code) {\n        if (code >= 200 && code < 300) {\n            return Status.Success;\n        }\n        if (code === 429) {\n            return Status.RateLimit;\n        }\n        if (code === 413) {\n            return Status.PayloadTooLarge;\n        }\n        if (code === 408) {\n            return Status.Timeout;\n        }\n        if (code >= 400 && code < 500) {\n            return Status.Invalid;\n        }\n        if (code >= 500) {\n            return Status.Failed;\n        }\n        return Status.Unknown;\n    };\n    return BaseTransport;\n}());\nexport { BaseTransport };\n//# sourceMappingURL=base.js.map","import { __assign, __awaiter, __generator, __values } from \"tslib\";\nimport { BaseTransport } from '@amplitude/analytics-core';\nimport { ServerZone, Status } from '@amplitude/analytics-types';\nvar UNEXPECTED_NETWORK_ERROR_MESSAGE = 'Network error occurred, remote config fetch failed';\nvar SUCCESS_REMOTE_CONFIG = 'Remote config successfully fetched';\nvar MAX_RETRIES_EXCEEDED_MESSAGE = 'Remote config fetch rejected due to exceeded retry count';\nvar TIMEOUT_MESSAGE = 'Remote config fetch rejected due to timeout after 5 seconds';\nvar UNEXPECTED_ERROR_MESSAGE = 'Unexpected error occurred';\nexport var REMOTE_CONFIG_SERVER_URL = 'https://sr-client-cfg.amplitude.com/config';\nexport var REMOTE_CONFIG_SERVER_URL_STAGING = 'https://sr-client-cfg.stag2.amplitude.com/config';\nexport var REMOTE_CONFIG_SERVER_URL_EU = 'https://sr-client-cfg.eu.amplitude.com/config';\nvar RemoteConfigFetch = /** @class */ (function () {\n    function RemoteConfigFetch(_a) {\n        var localConfig = _a.localConfig, configKeys = _a.configKeys;\n        var _this = this;\n        this.retryTimeout = 1000;\n        this.attempts = 0;\n        this.sessionTargetingMatch = false;\n        this.metrics = {};\n        this.getRemoteNamespaceConfig = function (configNamespace, sessionId) { return __awaiter(_this, void 0, void 0, function () {\n            var fetchStartTime, configAPIResponse, remoteConfig;\n            return __generator(this, function (_a) {\n                switch (_a.label) {\n                    case 0:\n                        fetchStartTime = Date.now();\n                        return [4 /*yield*/, this.fetchWithTimeout(sessionId)];\n                    case 1:\n                        configAPIResponse = _a.sent();\n                        if (configAPIResponse) {\n                            remoteConfig = configAPIResponse.configs && configAPIResponse.configs[configNamespace];\n                            if (remoteConfig) {\n                                this.metrics.fetchTimeAPISuccess = Date.now() - fetchStartTime;\n                                return [2 /*return*/, remoteConfig];\n                            }\n                        }\n                        this.metrics.fetchTimeAPIFail = Date.now() - fetchStartTime;\n                        return [2 /*return*/, undefined];\n                }\n            });\n        }); };\n        this.getRemoteConfig = function (configNamespace, key, sessionId) { return __awaiter(_this, void 0, void 0, function () {\n            var namespaceConfig;\n            return __generator(this, function (_a) {\n                switch (_a.label) {\n                    case 0: return [4 /*yield*/, this.getRemoteNamespaceConfig(configNamespace, sessionId)];\n                    case 1:\n                        namespaceConfig = _a.sent();\n                        return [2 /*return*/, namespaceConfig === null || namespaceConfig === void 0 ? void 0 : namespaceConfig[key]];\n                }\n            });\n        }); };\n        this.fetchWithTimeout = function (sessionId) { return __awaiter(_this, void 0, void 0, function () {\n            var controller, timeoutId, remoteConfig;\n            return __generator(this, function (_a) {\n                switch (_a.label) {\n                    case 0:\n                        controller = new AbortController();\n                        timeoutId = setTimeout(function () { return controller.abort(); }, 5000);\n                        return [4 /*yield*/, this.fetchRemoteConfig(controller.signal, sessionId)];\n                    case 1:\n                        remoteConfig = _a.sent();\n                        clearTimeout(timeoutId);\n                        return [2 /*return*/, remoteConfig];\n                }\n            });\n        }); };\n        this.fetchRemoteConfig = function (signal, sessionId) { return __awaiter(_this, void 0, void 0, function () {\n            var urlParams, _a, _b, configKey, options, serverUrl, res, parsedStatus, e_1, knownError;\n            var e_2, _c;\n            var _d;\n            return __generator(this, function (_e) {\n                switch (_e.label) {\n                    case 0:\n                        if (sessionId === this.lastFetchedSessionId && this.attempts >= this.localConfig.flushMaxRetries) {\n                            return [2 /*return*/, this.completeRequest({ err: MAX_RETRIES_EXCEEDED_MESSAGE })];\n                        }\n                        else if (signal.aborted) {\n                            return [2 /*return*/, this.completeRequest({ err: TIMEOUT_MESSAGE })];\n                        }\n                        else if (sessionId !== this.lastFetchedSessionId) {\n                            this.lastFetchedSessionId = sessionId;\n                            this.attempts = 0;\n                        }\n                        _e.label = 1;\n                    case 1:\n                        _e.trys.push([1, 3, , 4]);\n                        urlParams = new URLSearchParams({\n                            api_key: this.localConfig.apiKey,\n                        });\n                        try {\n                            for (_a = __values(this.configKeys), _b = _a.next(); !_b.done; _b = _a.next()) {\n                                configKey = _b.value;\n                                urlParams.append('config_keys', configKey);\n                            }\n                        }\n                        catch (e_2_1) { e_2 = { error: e_2_1 }; }\n                        finally {\n                            try {\n                                if (_b && !_b.done && (_c = _a.return)) _c.call(_a);\n                            }\n                            finally { if (e_2) throw e_2.error; }\n                        }\n                        if (sessionId) {\n                            urlParams.set('session_id', String(sessionId));\n                        }\n                        options = {\n                            headers: {\n                                Accept: '*/*',\n                            },\n                            method: 'GET',\n                        };\n                        serverUrl = \"\".concat(this.getServerUrl(), \"?\").concat(urlParams.toString());\n                        this.attempts += 1;\n                        return [4 /*yield*/, fetch(serverUrl, __assign(__assign({}, options), { signal: signal }))];\n                    case 2:\n                        res = _e.sent();\n                        if (res === null) {\n                            return [2 /*return*/, this.completeRequest({ err: UNEXPECTED_ERROR_MESSAGE })];\n                        }\n                        parsedStatus = new BaseTransport().buildStatus(res.status);\n                        switch (parsedStatus) {\n                            case Status.Success:\n                                this.attempts = 0;\n                                return [2 /*return*/, this.parseAndStoreConfig(res)];\n                            case Status.Failed:\n                                return [2 /*return*/, this.retryFetch(signal, sessionId)];\n                            default:\n                                return [2 /*return*/, this.completeRequest({ err: UNEXPECTED_NETWORK_ERROR_MESSAGE })];\n                        }\n                        return [3 /*break*/, 4];\n                    case 3:\n                        e_1 = _e.sent();\n                        knownError = e_1;\n                        if (signal.aborted) {\n                            return [2 /*return*/, this.completeRequest({ err: TIMEOUT_MESSAGE })];\n                        }\n                        return [2 /*return*/, this.completeRequest({ err: (_d = knownError.message) !== null && _d !== void 0 ? _d : UNEXPECTED_ERROR_MESSAGE })];\n                    case 4: return [2 /*return*/];\n                }\n            });\n        }); };\n        this.retryFetch = function (signal, sessionId) { return __awaiter(_this, void 0, void 0, function () {\n            var _this = this;\n            return __generator(this, function (_a) {\n                switch (_a.label) {\n                    case 0: return [4 /*yield*/, new Promise(function (resolve) { return setTimeout(resolve, _this.attempts * _this.retryTimeout); })];\n                    case 1:\n                        _a.sent();\n                        return [2 /*return*/, this.fetchRemoteConfig(signal, sessionId)];\n                }\n            });\n        }); };\n        this.parseAndStoreConfig = function (res) { return __awaiter(_this, void 0, void 0, function () {\n            var remoteConfig;\n            return __generator(this, function (_a) {\n                switch (_a.label) {\n                    case 0: return [4 /*yield*/, res.json()];\n                    case 1:\n                        remoteConfig = (_a.sent());\n                        this.completeRequest({ success: SUCCESS_REMOTE_CONFIG });\n                        return [2 /*return*/, remoteConfig];\n                }\n            });\n        }); };\n        this.localConfig = localConfig;\n        this.configKeys = configKeys;\n    }\n    RemoteConfigFetch.prototype.getServerUrl = function () {\n        if (this.localConfig.configServerUrl) {\n            return this.localConfig.configServerUrl;\n        }\n        if (this.localConfig.serverZone === ServerZone.STAGING) {\n            return REMOTE_CONFIG_SERVER_URL_STAGING;\n        }\n        if (this.localConfig.serverZone === ServerZone.EU) {\n            return REMOTE_CONFIG_SERVER_URL_EU;\n        }\n        return REMOTE_CONFIG_SERVER_URL;\n    };\n    RemoteConfigFetch.prototype.completeRequest = function (_a) {\n        var err = _a.err, success = _a.success;\n        if (err) {\n            throw new Error(err);\n        }\n        else if (success) {\n            this.localConfig.loggerProvider.log(success);\n        }\n    };\n    return RemoteConfigFetch;\n}());\nexport { RemoteConfigFetch };\nexport var createRemoteConfigFetch = function (_a) {\n    var localConfig = _a.localConfig, configKeys = _a.configKeys;\n    return __awaiter(void 0, void 0, void 0, function () {\n        return __generator(this, function (_b) {\n            return [2 /*return*/, new RemoteConfigFetch({ localConfig: localConfig, configKeys: configKeys })];\n        });\n    });\n};\n//# sourceMappingURL=remote-config.js.map","import * as remoteConfigFetch from './remote-config';\nexport var createRemoteConfigFetch = remoteConfigFetch.createRemoteConfigFetch;\n//# sourceMappingURL=index.js.map","export var PLUGIN_NAME = '@amplitude/plugin-autocapture-browser';\nexport var FRUSTRATION_PLUGIN_NAME = '@amplitude/plugin-frustration-browser';\nexport var AMPLITUDE_ELEMENT_CLICKED_EVENT = '[Amplitude] Element Clicked';\nexport var AMPLITUDE_ELEMENT_DEAD_CLICKED_EVENT = '[Amplitude] Dead Click';\nexport var AMPLITUDE_ELEMENT_RAGE_CLICKED_EVENT = '[Amplitude] Rage Click';\nexport var AMPLITUDE_ELEMENT_CHANGED_EVENT = '[Amplitude] Element Changed';\nexport var AMPLITUDE_EVENT_PROP_ELEMENT_ID = '[Amplitude] Element ID';\nexport var AMPLITUDE_EVENT_PROP_ELEMENT_CLASS = '[Amplitude] Element Class';\nexport var AMPLITUDE_EVENT_PROP_ELEMENT_TAG = '[Amplitude] Element Tag';\nexport var AMPLITUDE_EVENT_PROP_ELEMENT_TEXT = '[Amplitude] Element Text';\nexport var AMPLITUDE_EVENT_PROP_ELEMENT_HIERARCHY = '[Amplitude] Element Hierarchy';\nexport var AMPLITUDE_EVENT_PROP_ELEMENT_HREF = '[Amplitude] Element Href';\nexport var AMPLITUDE_EVENT_PROP_ELEMENT_POSITION_LEFT = '[Amplitude] Element Position Left';\nexport var AMPLITUDE_EVENT_PROP_ELEMENT_POSITION_TOP = '[Amplitude] Element Position Top';\nexport var AMPLITUDE_EVENT_PROP_ELEMENT_ARIA_LABEL = '[Amplitude] Element Aria Label';\nexport var AMPLITUDE_EVENT_PROP_ELEMENT_ATTRIBUTES = '[Amplitude] Element Attributes';\nexport var AMPLITUDE_EVENT_PROP_ELEMENT_PARENT_LABEL = '[Amplitude] Element Parent Label';\nexport var AMPLITUDE_EVENT_PROP_PAGE_URL = '[Amplitude] Page URL';\nexport var AMPLITUDE_EVENT_PROP_PAGE_TITLE = '[Amplitude] Page Title';\nexport var AMPLITUDE_EVENT_PROP_VIEWPORT_HEIGHT = '[Amplitude] Viewport Height';\nexport var AMPLITUDE_EVENT_PROP_VIEWPORT_WIDTH = '[Amplitude] Viewport Width';\n// Visual Tagging related constants\nexport var AMPLITUDE_ORIGIN = 'https://app.amplitude.com';\nexport var AMPLITUDE_ORIGIN_EU = 'https://app.eu.amplitude.com';\nexport var AMPLITUDE_ORIGIN_STAGING = 'https://apps.stag2.amplitude.com';\nexport var AMPLITUDE_ORIGINS_MAP = {\n    US: AMPLITUDE_ORIGIN,\n    EU: AMPLITUDE_ORIGIN_EU,\n    STAGING: AMPLITUDE_ORIGIN_STAGING,\n};\nexport var AMPLITUDE_VISUAL_TAGGING_SELECTOR_SCRIPT_URL = 'https://cdn.amplitude.com/libs/visual-tagging-selector-1.0.0-alpha.js.gz';\n// This is the class name used by the visual tagging selector to highlight the selected element.\n// Should not use this class in the selector.\nexport var AMPLITUDE_VISUAL_TAGGING_HIGHLIGHT_CLASS = 'amp-visual-tagging-selector-highlight';\n//# sourceMappingURL=constants.js.map","export function isFunction(value) {\n    return typeof value === 'function';\n}\n//# sourceMappingURL=isFunction.js.map","export function createErrorClass(createImpl) {\n    var _super = function (instance) {\n        Error.call(instance);\n        instance.stack = new Error().stack;\n    };\n    var ctorFunc = createImpl(_super);\n    ctorFunc.prototype = Object.create(Error.prototype);\n    ctorFunc.prototype.constructor = ctorFunc;\n    return ctorFunc;\n}\n//# sourceMappingURL=createErrorClass.js.map","import { createErrorClass } from './createErrorClass';\nexport var UnsubscriptionError = createErrorClass(function (_super) {\n    return function UnsubscriptionErrorImpl(errors) {\n        _super(this);\n        this.message = errors\n            ? errors.length + \" errors occurred during unsubscription:\\n\" + errors.map(function (err, i) { return i + 1 + \") \" + err.toString(); }).join('\\n  ')\n            : '';\n        this.name = 'UnsubscriptionError';\n        this.errors = errors;\n    };\n});\n//# sourceMappingURL=UnsubscriptionError.js.map","export function arrRemove(arr, item) {\n    if (arr) {\n        var index = arr.indexOf(item);\n        0 <= index && arr.splice(index, 1);\n    }\n}\n//# sourceMappingURL=arrRemove.js.map","import { __read, __spreadArray, __values } from \"tslib\";\nimport { isFunction } from './util/isFunction';\nimport { UnsubscriptionError } from './util/UnsubscriptionError';\nimport { arrRemove } from './util/arrRemove';\nvar Subscription = (function () {\n    function Subscription(initialTeardown) {\n        this.initialTeardown = initialTeardown;\n        this.closed = false;\n        this._parentage = null;\n        this._finalizers = null;\n    }\n    Subscription.prototype.unsubscribe = function () {\n        var e_1, _a, e_2, _b;\n        var errors;\n        if (!this.closed) {\n            this.closed = true;\n            var _parentage = this._parentage;\n            if (_parentage) {\n                this._parentage = null;\n                if (Array.isArray(_parentage)) {\n                    try {\n                        for (var _parentage_1 = __values(_parentage), _parentage_1_1 = _parentage_1.next(); !_parentage_1_1.done; _parentage_1_1 = _parentage_1.next()) {\n                            var parent_1 = _parentage_1_1.value;\n                            parent_1.remove(this);\n                        }\n                    }\n                    catch (e_1_1) { e_1 = { error: e_1_1 }; }\n                    finally {\n                        try {\n                            if (_parentage_1_1 && !_parentage_1_1.done && (_a = _parentage_1.return)) _a.call(_parentage_1);\n                        }\n                        finally { if (e_1) throw e_1.error; }\n                    }\n                }\n                else {\n                    _parentage.remove(this);\n                }\n            }\n            var initialFinalizer = this.initialTeardown;\n            if (isFunction(initialFinalizer)) {\n                try {\n                    initialFinalizer();\n                }\n                catch (e) {\n                    errors = e instanceof UnsubscriptionError ? e.errors : [e];\n                }\n            }\n            var _finalizers = this._finalizers;\n            if (_finalizers) {\n                this._finalizers = null;\n                try {\n                    for (var _finalizers_1 = __values(_finalizers), _finalizers_1_1 = _finalizers_1.next(); !_finalizers_1_1.done; _finalizers_1_1 = _finalizers_1.next()) {\n                        var finalizer = _finalizers_1_1.value;\n                        try {\n                            execFinalizer(finalizer);\n                        }\n                        catch (err) {\n                            errors = errors !== null && errors !== void 0 ? errors : [];\n                            if (err instanceof UnsubscriptionError) {\n                                errors = __spreadArray(__spreadArray([], __read(errors)), __read(err.errors));\n                            }\n                            else {\n                                errors.push(err);\n                            }\n                        }\n                    }\n                }\n                catch (e_2_1) { e_2 = { error: e_2_1 }; }\n                finally {\n                    try {\n                        if (_finalizers_1_1 && !_finalizers_1_1.done && (_b = _finalizers_1.return)) _b.call(_finalizers_1);\n                    }\n                    finally { if (e_2) throw e_2.error; }\n                }\n            }\n            if (errors) {\n                throw new UnsubscriptionError(errors);\n            }\n        }\n    };\n    Subscription.prototype.add = function (teardown) {\n        var _a;\n        if (teardown && teardown !== this) {\n            if (this.closed) {\n                execFinalizer(teardown);\n            }\n            else {\n                if (teardown instanceof Subscription) {\n                    if (teardown.closed || teardown._hasParent(this)) {\n                        return;\n                    }\n                    teardown._addParent(this);\n                }\n                (this._finalizers = (_a = this._finalizers) !== null && _a !== void 0 ? _a : []).push(teardown);\n            }\n        }\n    };\n    Subscription.prototype._hasParent = function (parent) {\n        var _parentage = this._parentage;\n        return _parentage === parent || (Array.isArray(_parentage) && _parentage.includes(parent));\n    };\n    Subscription.prototype._addParent = function (parent) {\n        var _parentage = this._parentage;\n        this._parentage = Array.isArray(_parentage) ? (_parentage.push(parent), _parentage) : _parentage ? [_parentage, parent] : parent;\n    };\n    Subscription.prototype._removeParent = function (parent) {\n        var _parentage = this._parentage;\n        if (_parentage === parent) {\n            this._parentage = null;\n        }\n        else if (Array.isArray(_parentage)) {\n            arrRemove(_parentage, parent);\n        }\n    };\n    Subscription.prototype.remove = function (teardown) {\n        var _finalizers = this._finalizers;\n        _finalizers && arrRemove(_finalizers, teardown);\n        if (teardown instanceof Subscription) {\n            teardown._removeParent(this);\n        }\n    };\n    Subscription.EMPTY = (function () {\n        var empty = new Subscription();\n        empty.closed = true;\n        return empty;\n    })();\n    return Subscription;\n}());\nexport { Subscription };\nexport var EMPTY_SUBSCRIPTION = Subscription.EMPTY;\nexport function isSubscription(value) {\n    return (value instanceof Subscription ||\n        (value && 'closed' in value && isFunction(value.remove) && isFunction(value.add) && isFunction(value.unsubscribe)));\n}\nfunction execFinalizer(finalizer) {\n    if (isFunction(finalizer)) {\n        finalizer();\n    }\n    else {\n        finalizer.unsubscribe();\n    }\n}\n//# sourceMappingURL=Subscription.js.map","export var config = {\n    onUnhandledError: null,\n    onStoppedNotification: null,\n    Promise: undefined,\n    useDeprecatedSynchronousErrorHandling: false,\n    useDeprecatedNextContext: false,\n};\n//# sourceMappingURL=config.js.map","import { __read, __spreadArray } from \"tslib\";\nexport var timeoutProvider = {\n    setTimeout: function (handler, timeout) {\n        var args = [];\n        for (var _i = 2; _i < arguments.length; _i++) {\n            args[_i - 2] = arguments[_i];\n        }\n        var delegate = timeoutProvider.delegate;\n        if (delegate === null || delegate === void 0 ? void 0 : delegate.setTimeout) {\n            return delegate.setTimeout.apply(delegate, __spreadArray([handler, timeout], __read(args)));\n        }\n        return setTimeout.apply(void 0, __spreadArray([handler, timeout], __read(args)));\n    },\n    clearTimeout: function (handle) {\n        var delegate = timeoutProvider.delegate;\n        return ((delegate === null || delegate === void 0 ? void 0 : delegate.clearTimeout) || clearTimeout)(handle);\n    },\n    delegate: undefined,\n};\n//# sourceMappingURL=timeoutProvider.js.map","import { config } from '../config';\nimport { timeoutProvider } from '../scheduler/timeoutProvider';\nexport function reportUnhandledError(err) {\n    timeoutProvider.setTimeout(function () {\n        var onUnhandledError = config.onUnhandledError;\n        if (onUnhandledError) {\n            onUnhandledError(err);\n        }\n        else {\n            throw err;\n        }\n    });\n}\n//# sourceMappingURL=reportUnhandledError.js.map","export function noop() { }\n//# sourceMappingURL=noop.js.map","import { config } from '../config';\nvar context = null;\nexport function errorContext(cb) {\n    if (config.useDeprecatedSynchronousErrorHandling) {\n        var isRoot = !context;\n        if (isRoot) {\n            context = { errorThrown: false, error: null };\n        }\n        cb();\n        if (isRoot) {\n            var _a = context, errorThrown = _a.errorThrown, error = _a.error;\n            context = null;\n            if (errorThrown) {\n                throw error;\n            }\n        }\n    }\n    else {\n        cb();\n    }\n}\nexport function captureError(err) {\n    if (config.useDeprecatedSynchronousErrorHandling && context) {\n        context.errorThrown = true;\n        context.error = err;\n    }\n}\n//# sourceMappingURL=errorContext.js.map","import { __extends } from \"tslib\";\nimport { isFunction } from './util/isFunction';\nimport { isSubscription, Subscription } from './Subscription';\nimport { config } from './config';\nimport { reportUnhandledError } from './util/reportUnhandledError';\nimport { noop } from './util/noop';\nimport { nextNotification, errorNotification, COMPLETE_NOTIFICATION } from './NotificationFactories';\nimport { timeoutProvider } from './scheduler/timeoutProvider';\nimport { captureError } from './util/errorContext';\nvar Subscriber = (function (_super) {\n    __extends(Subscriber, _super);\n    function Subscriber(destination) {\n        var _this = _super.call(this) || this;\n        _this.isStopped = false;\n        if (destination) {\n            _this.destination = destination;\n            if (isSubscription(destination)) {\n                destination.add(_this);\n            }\n        }\n        else {\n            _this.destination = EMPTY_OBSERVER;\n        }\n        return _this;\n    }\n    Subscriber.create = function (next, error, complete) {\n        return new SafeSubscriber(next, error, complete);\n    };\n    Subscriber.prototype.next = function (value) {\n        if (this.isStopped) {\n            handleStoppedNotification(nextNotification(value), this);\n        }\n        else {\n            this._next(value);\n        }\n    };\n    Subscriber.prototype.error = function (err) {\n        if (this.isStopped) {\n            handleStoppedNotification(errorNotification(err), this);\n        }\n        else {\n            this.isStopped = true;\n            this._error(err);\n        }\n    };\n    Subscriber.prototype.complete = function () {\n        if (this.isStopped) {\n            handleStoppedNotification(COMPLETE_NOTIFICATION, this);\n        }\n        else {\n            this.isStopped = true;\n            this._complete();\n        }\n    };\n    Subscriber.prototype.unsubscribe = function () {\n        if (!this.closed) {\n            this.isStopped = true;\n            _super.prototype.unsubscribe.call(this);\n            this.destination = null;\n        }\n    };\n    Subscriber.prototype._next = function (value) {\n        this.destination.next(value);\n    };\n    Subscriber.prototype._error = function (err) {\n        try {\n            this.destination.error(err);\n        }\n        finally {\n            this.unsubscribe();\n        }\n    };\n    Subscriber.prototype._complete = function () {\n        try {\n            this.destination.complete();\n        }\n        finally {\n            this.unsubscribe();\n        }\n    };\n    return Subscriber;\n}(Subscription));\nexport { Subscriber };\nvar _bind = Function.prototype.bind;\nfunction bind(fn, thisArg) {\n    return _bind.call(fn, thisArg);\n}\nvar ConsumerObserver = (function () {\n    function ConsumerObserver(partialObserver) {\n        this.partialObserver = partialObserver;\n    }\n    ConsumerObserver.prototype.next = function (value) {\n        var partialObserver = this.partialObserver;\n        if (partialObserver.next) {\n            try {\n                partialObserver.next(value);\n            }\n            catch (error) {\n                handleUnhandledError(error);\n            }\n        }\n    };\n    ConsumerObserver.prototype.error = function (err) {\n        var partialObserver = this.partialObserver;\n        if (partialObserver.error) {\n            try {\n                partialObserver.error(err);\n            }\n            catch (error) {\n                handleUnhandledError(error);\n            }\n        }\n        else {\n            handleUnhandledError(err);\n        }\n    };\n    ConsumerObserver.prototype.complete = function () {\n        var partialObserver = this.partialObserver;\n        if (partialObserver.complete) {\n            try {\n                partialObserver.complete();\n            }\n            catch (error) {\n                handleUnhandledError(error);\n            }\n        }\n    };\n    return ConsumerObserver;\n}());\nvar SafeSubscriber = (function (_super) {\n    __extends(SafeSubscriber, _super);\n    function SafeSubscriber(observerOrNext, error, complete) {\n        var _this = _super.call(this) || this;\n        var partialObserver;\n        if (isFunction(observerOrNext) || !observerOrNext) {\n            partialObserver = {\n                next: (observerOrNext !== null && observerOrNext !== void 0 ? observerOrNext : undefined),\n                error: error !== null && error !== void 0 ? error : undefined,\n                complete: complete !== null && complete !== void 0 ? complete : undefined,\n            };\n        }\n        else {\n            var context_1;\n            if (_this && config.useDeprecatedNextContext) {\n                context_1 = Object.create(observerOrNext);\n                context_1.unsubscribe = function () { return _this.unsubscribe(); };\n                partialObserver = {\n                    next: observerOrNext.next && bind(observerOrNext.next, context_1),\n                    error: observerOrNext.error && bind(observerOrNext.error, context_1),\n                    complete: observerOrNext.complete && bind(observerOrNext.complete, context_1),\n                };\n            }\n            else {\n                partialObserver = observerOrNext;\n            }\n        }\n        _this.destination = new ConsumerObserver(partialObserver);\n        return _this;\n    }\n    return SafeSubscriber;\n}(Subscriber));\nexport { SafeSubscriber };\nfunction handleUnhandledError(error) {\n    if (config.useDeprecatedSynchronousErrorHandling) {\n        captureError(error);\n    }\n    else {\n        reportUnhandledError(error);\n    }\n}\nfunction defaultErrorHandler(err) {\n    throw err;\n}\nfunction handleStoppedNotification(notification, subscriber) {\n    var onStoppedNotification = config.onStoppedNotification;\n    onStoppedNotification && timeoutProvider.setTimeout(function () { return onStoppedNotification(notification, subscriber); });\n}\nexport var EMPTY_OBSERVER = {\n    closed: true,\n    next: noop,\n    error: defaultErrorHandler,\n    complete: noop,\n};\n//# sourceMappingURL=Subscriber.js.map","export var observable = (function () { return (typeof Symbol === 'function' && Symbol.observable) || '@@observable'; })();\n//# sourceMappingURL=observable.js.map","export function identity(x) {\n    return x;\n}\n//# sourceMappingURL=identity.js.map","import { identity } from './identity';\nexport function pipe() {\n    var fns = [];\n    for (var _i = 0; _i < arguments.length; _i++) {\n        fns[_i] = arguments[_i];\n    }\n    return pipeFromArray(fns);\n}\nexport function pipeFromArray(fns) {\n    if (fns.length === 0) {\n        return identity;\n    }\n    if (fns.length === 1) {\n        return fns[0];\n    }\n    return function piped(input) {\n        return fns.reduce(function (prev, fn) { return fn(prev); }, input);\n    };\n}\n//# sourceMappingURL=pipe.js.map","import { SafeSubscriber, Subscriber } from './Subscriber';\nimport { isSubscription } from './Subscription';\nimport { observable as Symbol_observable } from './symbol/observable';\nimport { pipeFromArray } from './util/pipe';\nimport { config } from './config';\nimport { isFunction } from './util/isFunction';\nimport { errorContext } from './util/errorContext';\nvar Observable = (function () {\n    function Observable(subscribe) {\n        if (subscribe) {\n            this._subscribe = subscribe;\n        }\n    }\n    Observable.prototype.lift = function (operator) {\n        var observable = new Observable();\n        observable.source = this;\n        observable.operator = operator;\n        return observable;\n    };\n    Observable.prototype.subscribe = function (observerOrNext, error, complete) {\n        var _this = this;\n        var subscriber = isSubscriber(observerOrNext) ? observerOrNext : new SafeSubscriber(observerOrNext, error, complete);\n        errorContext(function () {\n            var _a = _this, operator = _a.operator, source = _a.source;\n            subscriber.add(operator\n                ?\n                    operator.call(subscriber, source)\n                : source\n                    ?\n                        _this._subscribe(subscriber)\n                    :\n                        _this._trySubscribe(subscriber));\n        });\n        return subscriber;\n    };\n    Observable.prototype._trySubscribe = function (sink) {\n        try {\n            return this._subscribe(sink);\n        }\n        catch (err) {\n            sink.error(err);\n        }\n    };\n    Observable.prototype.forEach = function (next, promiseCtor) {\n        var _this = this;\n        promiseCtor = getPromiseCtor(promiseCtor);\n        return new promiseCtor(function (resolve, reject) {\n            var subscriber = new SafeSubscriber({\n                next: function (value) {\n                    try {\n                        next(value);\n                    }\n                    catch (err) {\n                        reject(err);\n                        subscriber.unsubscribe();\n                    }\n                },\n                error: reject,\n                complete: resolve,\n            });\n            _this.subscribe(subscriber);\n        });\n    };\n    Observable.prototype._subscribe = function (subscriber) {\n        var _a;\n        return (_a = this.source) === null || _a === void 0 ? void 0 : _a.subscribe(subscriber);\n    };\n    Observable.prototype[Symbol_observable] = function () {\n        return this;\n    };\n    Observable.prototype.pipe = function () {\n        var operations = [];\n        for (var _i = 0; _i < arguments.length; _i++) {\n            operations[_i] = arguments[_i];\n        }\n        return pipeFromArray(operations)(this);\n    };\n    Observable.prototype.toPromise = function (promiseCtor) {\n        var _this = this;\n        promiseCtor = getPromiseCtor(promiseCtor);\n        return new promiseCtor(function (resolve, reject) {\n            var value;\n            _this.subscribe(function (x) { return (value = x); }, function (err) { return reject(err); }, function () { return resolve(value); });\n        });\n    };\n    Observable.create = function (subscribe) {\n        return new Observable(subscribe);\n    };\n    return Observable;\n}());\nexport { Observable };\nfunction getPromiseCtor(promiseCtor) {\n    var _a;\n    return (_a = promiseCtor !== null && promiseCtor !== void 0 ? promiseCtor : config.Promise) !== null && _a !== void 0 ? _a : Promise;\n}\nfunction isObserver(value) {\n    return value && isFunction(value.next) && isFunction(value.error) && isFunction(value.complete);\n}\nfunction isSubscriber(value) {\n    return (value && value instanceof Subscriber) || (isObserver(value) && isSubscription(value));\n}\n//# sourceMappingURL=Observable.js.map","import { isFunction } from './isFunction';\nexport function hasLift(source) {\n    return isFunction(source === null || source === void 0 ? void 0 : source.lift);\n}\nexport function operate(init) {\n    return function (source) {\n        if (hasLift(source)) {\n            return source.lift(function (liftedSource) {\n                try {\n                    return init(liftedSource, this);\n                }\n                catch (err) {\n                    this.error(err);\n                }\n            });\n        }\n        throw new TypeError('Unable to lift unknown Observable type');\n    };\n}\n//# sourceMappingURL=lift.js.map","import { __extends } from \"tslib\";\nimport { Subscriber } from '../Subscriber';\nexport function createOperatorSubscriber(destination, onNext, onComplete, onError, onFinalize) {\n    return new OperatorSubscriber(destination, onNext, onComplete, onError, onFinalize);\n}\nvar OperatorSubscriber = (function (_super) {\n    __extends(OperatorSubscriber, _super);\n    function OperatorSubscriber(destination, onNext, onComplete, onError, onFinalize, shouldUnsubscribe) {\n        var _this = _super.call(this, destination) || this;\n        _this.onFinalize = onFinalize;\n        _this.shouldUnsubscribe = shouldUnsubscribe;\n        _this._next = onNext\n            ? function (value) {\n                try {\n                    onNext(value);\n                }\n                catch (err) {\n                    destination.error(err);\n                }\n            }\n            : _super.prototype._next;\n        _this._error = onError\n            ? function (err) {\n                try {\n                    onError(err);\n                }\n                catch (err) {\n                    destination.error(err);\n                }\n                finally {\n                    this.unsubscribe();\n                }\n            }\n            : _super.prototype._error;\n        _this._complete = onComplete\n            ? function () {\n                try {\n                    onComplete();\n                }\n                catch (err) {\n                    destination.error(err);\n                }\n                finally {\n                    this.unsubscribe();\n                }\n            }\n            : _super.prototype._complete;\n        return _this;\n    }\n    OperatorSubscriber.prototype.unsubscribe = function () {\n        var _a;\n        if (!this.shouldUnsubscribe || this.shouldUnsubscribe()) {\n            var closed_1 = this.closed;\n            _super.prototype.unsubscribe.call(this);\n            !closed_1 && ((_a = this.onFinalize) === null || _a === void 0 ? void 0 : _a.call(this));\n        }\n    };\n    return OperatorSubscriber;\n}(Subscriber));\nexport { OperatorSubscriber };\n//# sourceMappingURL=OperatorSubscriber.js.map","import { createErrorClass } from './createErrorClass';\nexport var ObjectUnsubscribedError = createErrorClass(function (_super) {\n    return function ObjectUnsubscribedErrorImpl() {\n        _super(this);\n        this.name = 'ObjectUnsubscribedError';\n        this.message = 'object unsubscribed';\n    };\n});\n//# sourceMappingURL=ObjectUnsubscribedError.js.map","import { __extends, __values } from \"tslib\";\nimport { Observable } from './Observable';\nimport { Subscription, EMPTY_SUBSCRIPTION } from './Subscription';\nimport { ObjectUnsubscribedError } from './util/ObjectUnsubscribedError';\nimport { arrRemove } from './util/arrRemove';\nimport { errorContext } from './util/errorContext';\nvar Subject = (function (_super) {\n    __extends(Subject, _super);\n    function Subject() {\n        var _this = _super.call(this) || this;\n        _this.closed = false;\n        _this.currentObservers = null;\n        _this.observers = [];\n        _this.isStopped = false;\n        _this.hasError = false;\n        _this.thrownError = null;\n        return _this;\n    }\n    Subject.prototype.lift = function (operator) {\n        var subject = new AnonymousSubject(this, this);\n        subject.operator = operator;\n        return subject;\n    };\n    Subject.prototype._throwIfClosed = function () {\n        if (this.closed) {\n            throw new ObjectUnsubscribedError();\n        }\n    };\n    Subject.prototype.next = function (value) {\n        var _this = this;\n        errorContext(function () {\n            var e_1, _a;\n            _this._throwIfClosed();\n            if (!_this.isStopped) {\n                if (!_this.currentObservers) {\n                    _this.currentObservers = Array.from(_this.observers);\n                }\n                try {\n                    for (var _b = __values(_this.currentObservers), _c = _b.next(); !_c.done; _c = _b.next()) {\n                        var observer = _c.value;\n                        observer.next(value);\n                    }\n                }\n                catch (e_1_1) { e_1 = { error: e_1_1 }; }\n                finally {\n                    try {\n                        if (_c && !_c.done && (_a = _b.return)) _a.call(_b);\n                    }\n                    finally { if (e_1) throw e_1.error; }\n                }\n            }\n        });\n    };\n    Subject.prototype.error = function (err) {\n        var _this = this;\n        errorContext(function () {\n            _this._throwIfClosed();\n            if (!_this.isStopped) {\n                _this.hasError = _this.isStopped = true;\n                _this.thrownError = err;\n                var observers = _this.observers;\n                while (observers.length) {\n                    observers.shift().error(err);\n                }\n            }\n        });\n    };\n    Subject.prototype.complete = function () {\n        var _this = this;\n        errorContext(function () {\n            _this._throwIfClosed();\n            if (!_this.isStopped) {\n                _this.isStopped = true;\n                var observers = _this.observers;\n                while (observers.length) {\n                    observers.shift().complete();\n                }\n            }\n        });\n    };\n    Subject.prototype.unsubscribe = function () {\n        this.isStopped = this.closed = true;\n        this.observers = this.currentObservers = null;\n    };\n    Object.defineProperty(Subject.prototype, \"observed\", {\n        get: function () {\n            var _a;\n            return ((_a = this.observers) === null || _a === void 0 ? void 0 : _a.length) > 0;\n        },\n        enumerable: false,\n        configurable: true\n    });\n    Subject.prototype._trySubscribe = function (subscriber) {\n        this._throwIfClosed();\n        return _super.prototype._trySubscribe.call(this, subscriber);\n    };\n    Subject.prototype._subscribe = function (subscriber) {\n        this._throwIfClosed();\n        this._checkFinalizedStatuses(subscriber);\n        return this._innerSubscribe(subscriber);\n    };\n    Subject.prototype._innerSubscribe = function (subscriber) {\n        var _this = this;\n        var _a = this, hasError = _a.hasError, isStopped = _a.isStopped, observers = _a.observers;\n        if (hasError || isStopped) {\n            return EMPTY_SUBSCRIPTION;\n        }\n        this.currentObservers = null;\n        observers.push(subscriber);\n        return new Subscription(function () {\n            _this.currentObservers = null;\n            arrRemove(observers, subscriber);\n        });\n    };\n    Subject.prototype._checkFinalizedStatuses = function (subscriber) {\n        var _a = this, hasError = _a.hasError, thrownError = _a.thrownError, isStopped = _a.isStopped;\n        if (hasError) {\n            subscriber.error(thrownError);\n        }\n        else if (isStopped) {\n            subscriber.complete();\n        }\n    };\n    Subject.prototype.asObservable = function () {\n        var observable = new Observable();\n        observable.source = this;\n        return observable;\n    };\n    Subject.create = function (destination, source) {\n        return new AnonymousSubject(destination, source);\n    };\n    return Subject;\n}(Observable));\nexport { Subject };\nvar AnonymousSubject = (function (_super) {\n    __extends(AnonymousSubject, _super);\n    function AnonymousSubject(destination, source) {\n        var _this = _super.call(this) || this;\n        _this.destination = destination;\n        _this.source = source;\n        return _this;\n    }\n    AnonymousSubject.prototype.next = function (value) {\n        var _a, _b;\n        (_b = (_a = this.destination) === null || _a === void 0 ? void 0 : _a.next) === null || _b === void 0 ? void 0 : _b.call(_a, value);\n    };\n    AnonymousSubject.prototype.error = function (err) {\n        var _a, _b;\n        (_b = (_a = this.destination) === null || _a === void 0 ? void 0 : _a.error) === null || _b === void 0 ? void 0 : _b.call(_a, err);\n    };\n    AnonymousSubject.prototype.complete = function () {\n        var _a, _b;\n        (_b = (_a = this.destination) === null || _a === void 0 ? void 0 : _a.complete) === null || _b === void 0 ? void 0 : _b.call(_a);\n    };\n    AnonymousSubject.prototype._subscribe = function (subscriber) {\n        var _a, _b;\n        return (_b = (_a = this.source) === null || _a === void 0 ? void 0 : _a.subscribe(subscriber)) !== null && _b !== void 0 ? _b : EMPTY_SUBSCRIPTION;\n    };\n    return AnonymousSubject;\n}(Subject));\nexport { AnonymousSubject };\n//# sourceMappingURL=Subject.js.map","export var dateTimestampProvider = {\n    now: function () {\n        return (dateTimestampProvider.delegate || Date).now();\n    },\n    delegate: undefined,\n};\n//# sourceMappingURL=dateTimestampProvider.js.map","import { __extends } from \"tslib\";\nimport { Subscription } from '../Subscription';\nvar Action = (function (_super) {\n    __extends(Action, _super);\n    function Action(scheduler, work) {\n        return _super.call(this) || this;\n    }\n    Action.prototype.schedule = function (state, delay) {\n        if (delay === void 0) { delay = 0; }\n        return this;\n    };\n    return Action;\n}(Subscription));\nexport { Action };\n//# sourceMappingURL=Action.js.map","import { __read, __spreadArray } from \"tslib\";\nexport var intervalProvider = {\n    setInterval: function (handler, timeout) {\n        var args = [];\n        for (var _i = 2; _i < arguments.length; _i++) {\n            args[_i - 2] = arguments[_i];\n        }\n        var delegate = intervalProvider.delegate;\n        if (delegate === null || delegate === void 0 ? void 0 : delegate.setInterval) {\n            return delegate.setInterval.apply(delegate, __spreadArray([handler, timeout], __read(args)));\n        }\n        return setInterval.apply(void 0, __spreadArray([handler, timeout], __read(args)));\n    },\n    clearInterval: function (handle) {\n        var delegate = intervalProvider.delegate;\n        return ((delegate === null || delegate === void 0 ? void 0 : delegate.clearInterval) || clearInterval)(handle);\n    },\n    delegate: undefined,\n};\n//# sourceMappingURL=intervalProvider.js.map","import { __extends } from \"tslib\";\nimport { Action } from './Action';\nimport { intervalProvider } from './intervalProvider';\nimport { arrRemove } from '../util/arrRemove';\nvar AsyncAction = (function (_super) {\n    __extends(AsyncAction, _super);\n    function AsyncAction(scheduler, work) {\n        var _this = _super.call(this, scheduler, work) || this;\n        _this.scheduler = scheduler;\n        _this.work = work;\n        _this.pending = false;\n        return _this;\n    }\n    AsyncAction.prototype.schedule = function (state, delay) {\n        var _a;\n        if (delay === void 0) { delay = 0; }\n        if (this.closed) {\n            return this;\n        }\n        this.state = state;\n        var id = this.id;\n        var scheduler = this.scheduler;\n        if (id != null) {\n            this.id = this.recycleAsyncId(scheduler, id, delay);\n        }\n        this.pending = true;\n        this.delay = delay;\n        this.id = (_a = this.id) !== null && _a !== void 0 ? _a : this.requestAsyncId(scheduler, this.id, delay);\n        return this;\n    };\n    AsyncAction.prototype.requestAsyncId = function (scheduler, _id, delay) {\n        if (delay === void 0) { delay = 0; }\n        return intervalProvider.setInterval(scheduler.flush.bind(scheduler, this), delay);\n    };\n    AsyncAction.prototype.recycleAsyncId = function (_scheduler, id, delay) {\n        if (delay === void 0) { delay = 0; }\n        if (delay != null && this.delay === delay && this.pending === false) {\n            return id;\n        }\n        if (id != null) {\n            intervalProvider.clearInterval(id);\n        }\n        return undefined;\n    };\n    AsyncAction.prototype.execute = function (state, delay) {\n        if (this.closed) {\n            return new Error('executing a cancelled action');\n        }\n        this.pending = false;\n        var error = this._execute(state, delay);\n        if (error) {\n            return error;\n        }\n        else if (this.pending === false && this.id != null) {\n            this.id = this.recycleAsyncId(this.scheduler, this.id, null);\n        }\n    };\n    AsyncAction.prototype._execute = function (state, _delay) {\n        var errored = false;\n        var errorValue;\n        try {\n            this.work(state);\n        }\n        catch (e) {\n            errored = true;\n            errorValue = e ? e : new Error('Scheduled action threw falsy error');\n        }\n        if (errored) {\n            this.unsubscribe();\n            return errorValue;\n        }\n    };\n    AsyncAction.prototype.unsubscribe = function () {\n        if (!this.closed) {\n            var _a = this, id = _a.id, scheduler = _a.scheduler;\n            var actions = scheduler.actions;\n            this.work = this.state = this.scheduler = null;\n            this.pending = false;\n            arrRemove(actions, this);\n            if (id != null) {\n                this.id = this.recycleAsyncId(scheduler, id, null);\n            }\n            this.delay = null;\n            _super.prototype.unsubscribe.call(this);\n        }\n    };\n    return AsyncAction;\n}(Action));\nexport { AsyncAction };\n//# sourceMappingURL=AsyncAction.js.map","import { dateTimestampProvider } from './scheduler/dateTimestampProvider';\nvar Scheduler = (function () {\n    function Scheduler(schedulerActionCtor, now) {\n        if (now === void 0) { now = Scheduler.now; }\n        this.schedulerActionCtor = schedulerActionCtor;\n        this.now = now;\n    }\n    Scheduler.prototype.schedule = function (work, delay, state) {\n        if (delay === void 0) { delay = 0; }\n        return new this.schedulerActionCtor(this, work).schedule(state, delay);\n    };\n    Scheduler.now = dateTimestampProvider.now;\n    return Scheduler;\n}());\nexport { Scheduler };\n//# sourceMappingURL=Scheduler.js.map","import { __extends } from \"tslib\";\nimport { Scheduler } from '../Scheduler';\nvar AsyncScheduler = (function (_super) {\n    __extends(AsyncScheduler, _super);\n    function AsyncScheduler(SchedulerAction, now) {\n        if (now === void 0) { now = Scheduler.now; }\n        var _this = _super.call(this, SchedulerAction, now) || this;\n        _this.actions = [];\n        _this._active = false;\n        return _this;\n    }\n    AsyncScheduler.prototype.flush = function (action) {\n        var actions = this.actions;\n        if (this._active) {\n            actions.push(action);\n            return;\n        }\n        var error;\n        this._active = true;\n        do {\n            if ((error = action.execute(action.state, action.delay))) {\n                break;\n            }\n        } while ((action = actions.shift()));\n        this._active = false;\n        if (error) {\n            while ((action = actions.shift())) {\n                action.unsubscribe();\n            }\n            throw error;\n        }\n    };\n    return AsyncScheduler;\n}(Scheduler));\nexport { AsyncScheduler };\n//# sourceMappingURL=AsyncScheduler.js.map","import { AsyncAction } from './AsyncAction';\nimport { AsyncScheduler } from './AsyncScheduler';\nexport var asyncScheduler = new AsyncScheduler(AsyncAction);\nexport var async = asyncScheduler;\n//# sourceMappingURL=async.js.map","import { Observable } from '../Observable';\nexport var EMPTY = new Observable(function (subscriber) { return subscriber.complete(); });\nexport function empty(scheduler) {\n    return scheduler ? emptyScheduled(scheduler) : EMPTY;\n}\nfunction emptyScheduled(scheduler) {\n    return new Observable(function (subscriber) { return scheduler.schedule(function () { return subscriber.complete(); }); });\n}\n//# sourceMappingURL=empty.js.map","import { isFunction } from './isFunction';\nexport function isScheduler(value) {\n    return value && isFunction(value.schedule);\n}\n//# sourceMappingURL=isScheduler.js.map","import { isFunction } from './isFunction';\nimport { isScheduler } from './isScheduler';\nfunction last(arr) {\n    return arr[arr.length - 1];\n}\nexport function popResultSelector(args) {\n    return isFunction(last(args)) ? args.pop() : undefined;\n}\nexport function popScheduler(args) {\n    return isScheduler(last(args)) ? args.pop() : undefined;\n}\nexport function popNumber(args, defaultValue) {\n    return typeof last(args) === 'number' ? args.pop() : defaultValue;\n}\n//# sourceMappingURL=args.js.map","export var isArrayLike = (function (x) { return x && typeof x.length === 'number' && typeof x !== 'function'; });\n//# sourceMappingURL=isArrayLike.js.map","import { isFunction } from \"./isFunction\";\nexport function isPromise(value) {\n    return isFunction(value === null || value === void 0 ? void 0 : value.then);\n}\n//# sourceMappingURL=isPromise.js.map","import { observable as Symbol_observable } from '../symbol/observable';\nimport { isFunction } from './isFunction';\nexport function isInteropObservable(input) {\n    return isFunction(input[Symbol_observable]);\n}\n//# sourceMappingURL=isInteropObservable.js.map","import { isFunction } from './isFunction';\nexport function isAsyncIterable(obj) {\n    return Symbol.asyncIterator && isFunction(obj === null || obj === void 0 ? void 0 : obj[Symbol.asyncIterator]);\n}\n//# sourceMappingURL=isAsyncIterable.js.map","export function createInvalidObservableTypeError(input) {\n    return new TypeError(\"You provided \" + (input !== null && typeof input === 'object' ? 'an invalid object' : \"'\" + input + \"'\") + \" where a stream was expected. You can provide an Observable, Promise, ReadableStream, Array, AsyncIterable, or Iterable.\");\n}\n//# sourceMappingURL=throwUnobservableError.js.map","export function getSymbolIterator() {\n    if (typeof Symbol !== 'function' || !Symbol.iterator) {\n        return '@@iterator';\n    }\n    return Symbol.iterator;\n}\nexport var iterator = getSymbolIterator();\n//# sourceMappingURL=iterator.js.map","import { iterator as Symbol_iterator } from '../symbol/iterator';\nimport { isFunction } from './isFunction';\nexport function isIterable(input) {\n    return isFunction(input === null || input === void 0 ? void 0 : input[Symbol_iterator]);\n}\n//# sourceMappingURL=isIterable.js.map","import { __asyncGenerator, __await, __generator } from \"tslib\";\nimport { isFunction } from './isFunction';\nexport function readableStreamLikeToAsyncGenerator(readableStream) {\n    return __asyncGenerator(this, arguments, function readableStreamLikeToAsyncGenerator_1() {\n        var reader, _a, value, done;\n        return __generator(this, function (_b) {\n            switch (_b.label) {\n                case 0:\n                    reader = readableStream.getReader();\n                    _b.label = 1;\n                case 1:\n                    _b.trys.push([1, , 9, 10]);\n                    _b.label = 2;\n                case 2:\n                    if (!true) return [3, 8];\n                    return [4, __await(reader.read())];\n                case 3:\n                    _a = _b.sent(), value = _a.value, done = _a.done;\n                    if (!done) return [3, 5];\n                    return [4, __await(void 0)];\n                case 4: return [2, _b.sent()];\n                case 5: return [4, __await(value)];\n                case 6: return [4, _b.sent()];\n                case 7:\n                    _b.sent();\n                    return [3, 2];\n                case 8: return [3, 10];\n                case 9:\n                    reader.releaseLock();\n                    return [7];\n                case 10: return [2];\n            }\n        });\n    });\n}\nexport function isReadableStreamLike(obj) {\n    return isFunction(obj === null || obj === void 0 ? void 0 : obj.getReader);\n}\n//# sourceMappingURL=isReadableStreamLike.js.map","import { __asyncValues, __awaiter, __generator, __values } from \"tslib\";\nimport { isArrayLike } from '../util/isArrayLike';\nimport { isPromise } from '../util/isPromise';\nimport { Observable } from '../Observable';\nimport { isInteropObservable } from '../util/isInteropObservable';\nimport { isAsyncIterable } from '../util/isAsyncIterable';\nimport { createInvalidObservableTypeError } from '../util/throwUnobservableError';\nimport { isIterable } from '../util/isIterable';\nimport { isReadableStreamLike, readableStreamLikeToAsyncGenerator } from '../util/isReadableStreamLike';\nimport { isFunction } from '../util/isFunction';\nimport { reportUnhandledError } from '../util/reportUnhandledError';\nimport { observable as Symbol_observable } from '../symbol/observable';\nexport function innerFrom(input) {\n    if (input instanceof Observable) {\n        return input;\n    }\n    if (input != null) {\n        if (isInteropObservable(input)) {\n            return fromInteropObservable(input);\n        }\n        if (isArrayLike(input)) {\n            return fromArrayLike(input);\n        }\n        if (isPromise(input)) {\n            return fromPromise(input);\n        }\n        if (isAsyncIterable(input)) {\n            return fromAsyncIterable(input);\n        }\n        if (isIterable(input)) {\n            return fromIterable(input);\n        }\n        if (isReadableStreamLike(input)) {\n            return fromReadableStreamLike(input);\n        }\n    }\n    throw createInvalidObservableTypeError(input);\n}\nexport function fromInteropObservable(obj) {\n    return new Observable(function (subscriber) {\n        var obs = obj[Symbol_observable]();\n        if (isFunction(obs.subscribe)) {\n            return obs.subscribe(subscriber);\n        }\n        throw new TypeError('Provided object does not correctly implement Symbol.observable');\n    });\n}\nexport function fromArrayLike(array) {\n    return new Observable(function (subscriber) {\n        for (var i = 0; i < array.length && !subscriber.closed; i++) {\n            subscriber.next(array[i]);\n        }\n        subscriber.complete();\n    });\n}\nexport function fromPromise(promise) {\n    return new Observable(function (subscriber) {\n        promise\n            .then(function (value) {\n            if (!subscriber.closed) {\n                subscriber.next(value);\n                subscriber.complete();\n            }\n        }, function (err) { return subscriber.error(err); })\n            .then(null, reportUnhandledError);\n    });\n}\nexport function fromIterable(iterable) {\n    return new Observable(function (subscriber) {\n        var e_1, _a;\n        try {\n            for (var iterable_1 = __values(iterable), iterable_1_1 = iterable_1.next(); !iterable_1_1.done; iterable_1_1 = iterable_1.next()) {\n                var value = iterable_1_1.value;\n                subscriber.next(value);\n                if (subscriber.closed) {\n                    return;\n                }\n            }\n        }\n        catch (e_1_1) { e_1 = { error: e_1_1 }; }\n        finally {\n            try {\n                if (iterable_1_1 && !iterable_1_1.done && (_a = iterable_1.return)) _a.call(iterable_1);\n            }\n            finally { if (e_1) throw e_1.error; }\n        }\n        subscriber.complete();\n    });\n}\nexport function fromAsyncIterable(asyncIterable) {\n    return new Observable(function (subscriber) {\n        process(asyncIterable, subscriber).catch(function (err) { return subscriber.error(err); });\n    });\n}\nexport function fromReadableStreamLike(readableStream) {\n    return fromAsyncIterable(readableStreamLikeToAsyncGenerator(readableStream));\n}\nfunction process(asyncIterable, subscriber) {\n    var asyncIterable_1, asyncIterable_1_1;\n    var e_2, _a;\n    return __awaiter(this, void 0, void 0, function () {\n        var value, e_2_1;\n        return __generator(this, function (_b) {\n            switch (_b.label) {\n                case 0:\n                    _b.trys.push([0, 5, 6, 11]);\n                    asyncIterable_1 = __asyncValues(asyncIterable);\n                    _b.label = 1;\n                case 1: return [4, asyncIterable_1.next()];\n                case 2:\n                    if (!(asyncIterable_1_1 = _b.sent(), !asyncIterable_1_1.done)) return [3, 4];\n                    value = asyncIterable_1_1.value;\n                    subscriber.next(value);\n                    if (subscriber.closed) {\n                        return [2];\n                    }\n                    _b.label = 3;\n                case 3: return [3, 1];\n                case 4: return [3, 11];\n                case 5:\n                    e_2_1 = _b.sent();\n                    e_2 = { error: e_2_1 };\n                    return [3, 11];\n                case 6:\n                    _b.trys.push([6, , 9, 10]);\n                    if (!(asyncIterable_1_1 && !asyncIterable_1_1.done && (_a = asyncIterable_1.return))) return [3, 8];\n                    return [4, _a.call(asyncIterable_1)];\n                case 7:\n                    _b.sent();\n                    _b.label = 8;\n                case 8: return [3, 10];\n                case 9:\n                    if (e_2) throw e_2.error;\n                    return [7];\n                case 10: return [7];\n                case 11:\n                    subscriber.complete();\n                    return [2];\n            }\n        });\n    });\n}\n//# sourceMappingURL=innerFrom.js.map","export function executeSchedule(parentSubscription, scheduler, work, delay, repeat) {\n    if (delay === void 0) { delay = 0; }\n    if (repeat === void 0) { repeat = false; }\n    var scheduleSubscription = scheduler.schedule(function () {\n        work();\n        if (repeat) {\n            parentSubscription.add(this.schedule(null, delay));\n        }\n        else {\n            this.unsubscribe();\n        }\n    }, delay);\n    parentSubscription.add(scheduleSubscription);\n    if (!repeat) {\n        return scheduleSubscription;\n    }\n}\n//# sourceMappingURL=executeSchedule.js.map","import { executeSchedule } from '../util/executeSchedule';\nimport { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nexport function observeOn(scheduler, delay) {\n    if (delay === void 0) { delay = 0; }\n    return operate(function (source, subscriber) {\n        source.subscribe(createOperatorSubscriber(subscriber, function (value) { return executeSchedule(subscriber, scheduler, function () { return subscriber.next(value); }, delay); }, function () { return executeSchedule(subscriber, scheduler, function () { return subscriber.complete(); }, delay); }, function (err) { return executeSchedule(subscriber, scheduler, function () { return subscriber.error(err); }, delay); }));\n    });\n}\n//# sourceMappingURL=observeOn.js.map","import { operate } from '../util/lift';\nexport function subscribeOn(scheduler, delay) {\n    if (delay === void 0) { delay = 0; }\n    return operate(function (source, subscriber) {\n        subscriber.add(scheduler.schedule(function () { return source.subscribe(subscriber); }, delay));\n    });\n}\n//# sourceMappingURL=subscribeOn.js.map","import { innerFrom } from '../observable/innerFrom';\nimport { observeOn } from '../operators/observeOn';\nimport { subscribeOn } from '../operators/subscribeOn';\nexport function scheduleObservable(input, scheduler) {\n    return innerFrom(input).pipe(subscribeOn(scheduler), observeOn(scheduler));\n}\n//# sourceMappingURL=scheduleObservable.js.map","import { innerFrom } from '../observable/innerFrom';\nimport { observeOn } from '../operators/observeOn';\nimport { subscribeOn } from '../operators/subscribeOn';\nexport function schedulePromise(input, scheduler) {\n    return innerFrom(input).pipe(subscribeOn(scheduler), observeOn(scheduler));\n}\n//# sourceMappingURL=schedulePromise.js.map","import { Observable } from '../Observable';\nexport function scheduleArray(input, scheduler) {\n    return new Observable(function (subscriber) {\n        var i = 0;\n        return scheduler.schedule(function () {\n            if (i === input.length) {\n                subscriber.complete();\n            }\n            else {\n                subscriber.next(input[i++]);\n                if (!subscriber.closed) {\n                    this.schedule();\n                }\n            }\n        });\n    });\n}\n//# sourceMappingURL=scheduleArray.js.map","import { Observable } from '../Observable';\nimport { iterator as Symbol_iterator } from '../symbol/iterator';\nimport { isFunction } from '../util/isFunction';\nimport { executeSchedule } from '../util/executeSchedule';\nexport function scheduleIterable(input, scheduler) {\n    return new Observable(function (subscriber) {\n        var iterator;\n        executeSchedule(subscriber, scheduler, function () {\n            iterator = input[Symbol_iterator]();\n            executeSchedule(subscriber, scheduler, function () {\n                var _a;\n                var value;\n                var done;\n                try {\n                    (_a = iterator.next(), value = _a.value, done = _a.done);\n                }\n                catch (err) {\n                    subscriber.error(err);\n                    return;\n                }\n                if (done) {\n                    subscriber.complete();\n                }\n                else {\n                    subscriber.next(value);\n                }\n            }, 0, true);\n        });\n        return function () { return isFunction(iterator === null || iterator === void 0 ? void 0 : iterator.return) && iterator.return(); };\n    });\n}\n//# sourceMappingURL=scheduleIterable.js.map","import { Observable } from '../Observable';\nimport { executeSchedule } from '../util/executeSchedule';\nexport function scheduleAsyncIterable(input, scheduler) {\n    if (!input) {\n        throw new Error('Iterable cannot be null');\n    }\n    return new Observable(function (subscriber) {\n        executeSchedule(subscriber, scheduler, function () {\n            var iterator = input[Symbol.asyncIterator]();\n            executeSchedule(subscriber, scheduler, function () {\n                iterator.next().then(function (result) {\n                    if (result.done) {\n                        subscriber.complete();\n                    }\n                    else {\n                        subscriber.next(result.value);\n                    }\n                });\n            }, 0, true);\n        });\n    });\n}\n//# sourceMappingURL=scheduleAsyncIterable.js.map","import { scheduleAsyncIterable } from './scheduleAsyncIterable';\nimport { readableStreamLikeToAsyncGenerator } from '../util/isReadableStreamLike';\nexport function scheduleReadableStreamLike(input, scheduler) {\n    return scheduleAsyncIterable(readableStreamLikeToAsyncGenerator(input), scheduler);\n}\n//# sourceMappingURL=scheduleReadableStreamLike.js.map","import { scheduleObservable } from './scheduleObservable';\nimport { schedulePromise } from './schedulePromise';\nimport { scheduleArray } from './scheduleArray';\nimport { scheduleIterable } from './scheduleIterable';\nimport { scheduleAsyncIterable } from './scheduleAsyncIterable';\nimport { isInteropObservable } from '../util/isInteropObservable';\nimport { isPromise } from '../util/isPromise';\nimport { isArrayLike } from '../util/isArrayLike';\nimport { isIterable } from '../util/isIterable';\nimport { isAsyncIterable } from '../util/isAsyncIterable';\nimport { createInvalidObservableTypeError } from '../util/throwUnobservableError';\nimport { isReadableStreamLike } from '../util/isReadableStreamLike';\nimport { scheduleReadableStreamLike } from './scheduleReadableStreamLike';\nexport function scheduled(input, scheduler) {\n    if (input != null) {\n        if (isInteropObservable(input)) {\n            return scheduleObservable(input, scheduler);\n        }\n        if (isArrayLike(input)) {\n            return scheduleArray(input, scheduler);\n        }\n        if (isPromise(input)) {\n            return schedulePromise(input, scheduler);\n        }\n        if (isAsyncIterable(input)) {\n            return scheduleAsyncIterable(input, scheduler);\n        }\n        if (isIterable(input)) {\n            return scheduleIterable(input, scheduler);\n        }\n        if (isReadableStreamLike(input)) {\n            return scheduleReadableStreamLike(input, scheduler);\n        }\n    }\n    throw createInvalidObservableTypeError(input);\n}\n//# sourceMappingURL=scheduled.js.map","import { scheduled } from '../scheduled/scheduled';\nimport { innerFrom } from './innerFrom';\nexport function from(input, scheduler) {\n    return scheduler ? scheduled(input, scheduler) : innerFrom(input);\n}\n//# sourceMappingURL=from.js.map","export function isValidDate(value) {\n    return value instanceof Date && !isNaN(value);\n}\n//# sourceMappingURL=isDate.js.map","import { asyncScheduler } from '../scheduler/async';\nimport { isValidDate } from '../util/isDate';\nimport { operate } from '../util/lift';\nimport { innerFrom } from '../observable/innerFrom';\nimport { createErrorClass } from '../util/createErrorClass';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nimport { executeSchedule } from '../util/executeSchedule';\nexport var TimeoutError = createErrorClass(function (_super) {\n    return function TimeoutErrorImpl(info) {\n        if (info === void 0) { info = null; }\n        _super(this);\n        this.message = 'Timeout has occurred';\n        this.name = 'TimeoutError';\n        this.info = info;\n    };\n});\nexport function timeout(config, schedulerArg) {\n    var _a = (isValidDate(config) ? { first: config } : typeof config === 'number' ? { each: config } : config), first = _a.first, each = _a.each, _b = _a.with, _with = _b === void 0 ? timeoutErrorFactory : _b, _c = _a.scheduler, scheduler = _c === void 0 ? schedulerArg !== null && schedulerArg !== void 0 ? schedulerArg : asyncScheduler : _c, _d = _a.meta, meta = _d === void 0 ? null : _d;\n    if (first == null && each == null) {\n        throw new TypeError('No timeout provided.');\n    }\n    return operate(function (source, subscriber) {\n        var originalSourceSubscription;\n        var timerSubscription;\n        var lastValue = null;\n        var seen = 0;\n        var startTimer = function (delay) {\n            timerSubscription = executeSchedule(subscriber, scheduler, function () {\n                try {\n                    originalSourceSubscription.unsubscribe();\n                    innerFrom(_with({\n                        meta: meta,\n                        lastValue: lastValue,\n                        seen: seen,\n                    })).subscribe(subscriber);\n                }\n                catch (err) {\n                    subscriber.error(err);\n                }\n            }, delay);\n        };\n        originalSourceSubscription = source.subscribe(createOperatorSubscriber(subscriber, function (value) {\n            timerSubscription === null || timerSubscription === void 0 ? void 0 : timerSubscription.unsubscribe();\n            seen++;\n            subscriber.next((lastValue = value));\n            each > 0 && startTimer(each);\n        }, undefined, undefined, function () {\n            if (!(timerSubscription === null || timerSubscription === void 0 ? void 0 : timerSubscription.closed)) {\n                timerSubscription === null || timerSubscription === void 0 ? void 0 : timerSubscription.unsubscribe();\n            }\n            lastValue = null;\n        }));\n        !seen && startTimer(first != null ? (typeof first === 'number' ? first : +first - scheduler.now()) : each);\n    });\n}\nfunction timeoutErrorFactory(info) {\n    throw new TimeoutError(info);\n}\n//# sourceMappingURL=timeout.js.map","import { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nexport function map(project, thisArg) {\n    return operate(function (source, subscriber) {\n        var index = 0;\n        source.subscribe(createOperatorSubscriber(subscriber, function (value) {\n            subscriber.next(project.call(thisArg, value, index++));\n        }));\n    });\n}\n//# sourceMappingURL=map.js.map","import { __read, __spreadArray } from \"tslib\";\nimport { map } from \"../operators/map\";\nvar isArray = Array.isArray;\nfunction callOrApply(fn, args) {\n    return isArray(args) ? fn.apply(void 0, __spreadArray([], __read(args))) : fn(args);\n}\nexport function mapOneOrManyArgs(fn) {\n    return map(function (args) { return callOrApply(fn, args); });\n}\n//# sourceMappingURL=mapOneOrManyArgs.js.map","import { innerFrom } from '../observable/innerFrom';\nimport { executeSchedule } from '../util/executeSchedule';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nexport function mergeInternals(source, subscriber, project, concurrent, onBeforeNext, expand, innerSubScheduler, additionalFinalizer) {\n    var buffer = [];\n    var active = 0;\n    var index = 0;\n    var isComplete = false;\n    var checkComplete = function () {\n        if (isComplete && !buffer.length && !active) {\n            subscriber.complete();\n        }\n    };\n    var outerNext = function (value) { return (active < concurrent ? doInnerSub(value) : buffer.push(value)); };\n    var doInnerSub = function (value) {\n        expand && subscriber.next(value);\n        active++;\n        var innerComplete = false;\n        innerFrom(project(value, index++)).subscribe(createOperatorSubscriber(subscriber, function (innerValue) {\n            onBeforeNext === null || onBeforeNext === void 0 ? void 0 : onBeforeNext(innerValue);\n            if (expand) {\n                outerNext(innerValue);\n            }\n            else {\n                subscriber.next(innerValue);\n            }\n        }, function () {\n            innerComplete = true;\n        }, undefined, function () {\n            if (innerComplete) {\n                try {\n                    active--;\n                    var _loop_1 = function () {\n                        var bufferedValue = buffer.shift();\n                        if (innerSubScheduler) {\n                            executeSchedule(subscriber, innerSubScheduler, function () { return doInnerSub(bufferedValue); });\n                        }\n                        else {\n                            doInnerSub(bufferedValue);\n                        }\n                    };\n                    while (buffer.length && active < concurrent) {\n                        _loop_1();\n                    }\n                    checkComplete();\n                }\n                catch (err) {\n                    subscriber.error(err);\n                }\n            }\n        }));\n    };\n    source.subscribe(createOperatorSubscriber(subscriber, outerNext, function () {\n        isComplete = true;\n        checkComplete();\n    }));\n    return function () {\n        additionalFinalizer === null || additionalFinalizer === void 0 ? void 0 : additionalFinalizer();\n    };\n}\n//# sourceMappingURL=mergeInternals.js.map","import { map } from './map';\nimport { innerFrom } from '../observable/innerFrom';\nimport { operate } from '../util/lift';\nimport { mergeInternals } from './mergeInternals';\nimport { isFunction } from '../util/isFunction';\nexport function mergeMap(project, resultSelector, concurrent) {\n    if (concurrent === void 0) { concurrent = Infinity; }\n    if (isFunction(resultSelector)) {\n        return mergeMap(function (a, i) { return map(function (b, ii) { return resultSelector(a, b, i, ii); })(innerFrom(project(a, i))); }, concurrent);\n    }\n    else if (typeof resultSelector === 'number') {\n        concurrent = resultSelector;\n    }\n    return operate(function (source, subscriber) { return mergeInternals(source, subscriber, project, concurrent); });\n}\n//# sourceMappingURL=mergeMap.js.map","import { mergeMap } from './mergeMap';\nimport { identity } from '../util/identity';\nexport function mergeAll(concurrent) {\n    if (concurrent === void 0) { concurrent = Infinity; }\n    return mergeMap(identity, concurrent);\n}\n//# sourceMappingURL=mergeAll.js.map","import { __read } from \"tslib\";\nimport { innerFrom } from '../observable/innerFrom';\nimport { Observable } from '../Observable';\nimport { mergeMap } from '../operators/mergeMap';\nimport { isArrayLike } from '../util/isArrayLike';\nimport { isFunction } from '../util/isFunction';\nimport { mapOneOrManyArgs } from '../util/mapOneOrManyArgs';\nvar nodeEventEmitterMethods = ['addListener', 'removeListener'];\nvar eventTargetMethods = ['addEventListener', 'removeEventListener'];\nvar jqueryMethods = ['on', 'off'];\nexport function fromEvent(target, eventName, options, resultSelector) {\n    if (isFunction(options)) {\n        resultSelector = options;\n        options = undefined;\n    }\n    if (resultSelector) {\n        return fromEvent(target, eventName, options).pipe(mapOneOrManyArgs(resultSelector));\n    }\n    var _a = __read(isEventTarget(target)\n        ? eventTargetMethods.map(function (methodName) { return function (handler) { return target[methodName](eventName, handler, options); }; })\n        :\n            isNodeStyleEventEmitter(target)\n                ? nodeEventEmitterMethods.map(toCommonHandlerRegistry(target, eventName))\n                : isJQueryStyleEventEmitter(target)\n                    ? jqueryMethods.map(toCommonHandlerRegistry(target, eventName))\n                    : [], 2), add = _a[0], remove = _a[1];\n    if (!add) {\n        if (isArrayLike(target)) {\n            return mergeMap(function (subTarget) { return fromEvent(subTarget, eventName, options); })(innerFrom(target));\n        }\n    }\n    if (!add) {\n        throw new TypeError('Invalid event target');\n    }\n    return new Observable(function (subscriber) {\n        var handler = function () {\n            var args = [];\n            for (var _i = 0; _i < arguments.length; _i++) {\n                args[_i] = arguments[_i];\n            }\n            return subscriber.next(1 < args.length ? args : args[0]);\n        };\n        add(handler);\n        return function () { return remove(handler); };\n    });\n}\nfunction toCommonHandlerRegistry(target, eventName) {\n    return function (methodName) { return function (handler) { return target[methodName](eventName, handler); }; };\n}\nfunction isNodeStyleEventEmitter(target) {\n    return isFunction(target.addListener) && isFunction(target.removeListener);\n}\nfunction isJQueryStyleEventEmitter(target) {\n    return isFunction(target.on) && isFunction(target.off);\n}\nfunction isEventTarget(target) {\n    return isFunction(target.addEventListener) && isFunction(target.removeEventListener);\n}\n//# sourceMappingURL=fromEvent.js.map","import { Observable } from '../Observable';\nimport { async as asyncScheduler } from '../scheduler/async';\nimport { isScheduler } from '../util/isScheduler';\nimport { isValidDate } from '../util/isDate';\nexport function timer(dueTime, intervalOrScheduler, scheduler) {\n    if (dueTime === void 0) { dueTime = 0; }\n    if (scheduler === void 0) { scheduler = asyncScheduler; }\n    var intervalDuration = -1;\n    if (intervalOrScheduler != null) {\n        if (isScheduler(intervalOrScheduler)) {\n            scheduler = intervalOrScheduler;\n        }\n        else {\n            intervalDuration = intervalOrScheduler;\n        }\n    }\n    return new Observable(function (subscriber) {\n        var due = isValidDate(dueTime) ? +dueTime - scheduler.now() : dueTime;\n        if (due < 0) {\n            due = 0;\n        }\n        var n = 0;\n        return scheduler.schedule(function () {\n            if (!subscriber.closed) {\n                subscriber.next(n++);\n                if (0 <= intervalDuration) {\n                    this.schedule(undefined, intervalDuration);\n                }\n                else {\n                    subscriber.complete();\n                }\n            }\n        }, due);\n    });\n}\n//# sourceMappingURL=timer.js.map","import { mergeAll } from '../operators/mergeAll';\nimport { innerFrom } from './innerFrom';\nimport { EMPTY } from './empty';\nimport { popNumber, popScheduler } from '../util/args';\nimport { from } from './from';\nexport function merge() {\n    var args = [];\n    for (var _i = 0; _i < arguments.length; _i++) {\n        args[_i] = arguments[_i];\n    }\n    var scheduler = popScheduler(args);\n    var concurrent = popNumber(args, Infinity);\n    var sources = args;\n    return !sources.length\n        ?\n            EMPTY\n        : sources.length === 1\n            ?\n                innerFrom(sources[0])\n            :\n                mergeAll(concurrent)(from(sources, scheduler));\n}\n//# sourceMappingURL=merge.js.map","var isArray = Array.isArray;\nexport function argsOrArgArray(args) {\n    return args.length === 1 && isArray(args[0]) ? args[0] : args;\n}\n//# sourceMappingURL=argsOrArgArray.js.map","import { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nexport function filter(predicate, thisArg) {\n    return operate(function (source, subscriber) {\n        var index = 0;\n        source.subscribe(createOperatorSubscriber(subscriber, function (value) { return predicate.call(thisArg, value, index++) && subscriber.next(value); }));\n    });\n}\n//# sourceMappingURL=filter.js.map","import { Observable } from '../Observable';\nimport { innerFrom } from './innerFrom';\nimport { argsOrArgArray } from '../util/argsOrArgArray';\nimport { createOperatorSubscriber } from '../operators/OperatorSubscriber';\nexport function race() {\n    var sources = [];\n    for (var _i = 0; _i < arguments.length; _i++) {\n        sources[_i] = arguments[_i];\n    }\n    sources = argsOrArgArray(sources);\n    return sources.length === 1 ? innerFrom(sources[0]) : new Observable(raceInit(sources));\n}\nexport function raceInit(sources) {\n    return function (subscriber) {\n        var subscriptions = [];\n        var _loop_1 = function (i) {\n            subscriptions.push(innerFrom(sources[i]).subscribe(createOperatorSubscriber(subscriber, function (value) {\n                if (subscriptions) {\n                    for (var s = 0; s < subscriptions.length; s++) {\n                        s !== i && subscriptions[s].unsubscribe();\n                    }\n                    subscriptions = null;\n                }\n                subscriber.next(value);\n            })));\n        };\n        for (var i = 0; subscriptions && !subscriber.closed && i < sources.length; i++) {\n            _loop_1(i);\n        }\n    };\n}\n//# sourceMappingURL=race.js.map","import { operate } from '../util/lift';\nimport { noop } from '../util/noop';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nimport { innerFrom } from '../observable/innerFrom';\nexport function buffer(closingNotifier) {\n    return operate(function (source, subscriber) {\n        var currentBuffer = [];\n        source.subscribe(createOperatorSubscriber(subscriber, function (value) { return currentBuffer.push(value); }, function () {\n            subscriber.next(currentBuffer);\n            subscriber.complete();\n        }));\n        innerFrom(closingNotifier).subscribe(createOperatorSubscriber(subscriber, function () {\n            var b = currentBuffer;\n            currentBuffer = [];\n            subscriber.next(b);\n        }, noop));\n        return function () {\n            currentBuffer = null;\n        };\n    });\n}\n//# sourceMappingURL=buffer.js.map","import { asyncScheduler } from '../scheduler/async';\nimport { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nexport function debounceTime(dueTime, scheduler) {\n    if (scheduler === void 0) { scheduler = asyncScheduler; }\n    return operate(function (source, subscriber) {\n        var activeTask = null;\n        var lastValue = null;\n        var lastTime = null;\n        var emit = function () {\n            if (activeTask) {\n                activeTask.unsubscribe();\n                activeTask = null;\n                var value = lastValue;\n                lastValue = null;\n                subscriber.next(value);\n            }\n        };\n        function emitWhenIdle() {\n            var targetTime = lastTime + dueTime;\n            var now = scheduler.now();\n            if (now < targetTime) {\n                activeTask = this.schedule(undefined, targetTime - now);\n                subscriber.add(activeTask);\n                return;\n            }\n            emit();\n        }\n        source.subscribe(createOperatorSubscriber(subscriber, function (value) {\n            lastValue = value;\n            lastTime = scheduler.now();\n            if (!activeTask) {\n                activeTask = scheduler.schedule(emitWhenIdle, dueTime);\n                subscriber.add(activeTask);\n            }\n        }, function () {\n            emit();\n            subscriber.complete();\n        }, undefined, function () {\n            lastValue = activeTask = null;\n        }));\n    });\n}\n//# sourceMappingURL=debounceTime.js.map","import { EMPTY } from '../observable/empty';\nimport { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nexport function take(count) {\n    return count <= 0\n        ?\n            function () { return EMPTY; }\n        : operate(function (source, subscriber) {\n            var seen = 0;\n            source.subscribe(createOperatorSubscriber(subscriber, function (value) {\n                if (++seen <= count) {\n                    subscriber.next(value);\n                    if (count <= seen) {\n                        subscriber.complete();\n                    }\n                }\n            }));\n        });\n}\n//# sourceMappingURL=take.js.map","import { map } from './map';\nexport function mapTo(value) {\n    return map(function () { return value; });\n}\n//# sourceMappingURL=mapTo.js.map","import { concat } from '../observable/concat';\nimport { take } from './take';\nimport { ignoreElements } from './ignoreElements';\nimport { mapTo } from './mapTo';\nimport { mergeMap } from './mergeMap';\nimport { innerFrom } from '../observable/innerFrom';\nexport function delayWhen(delayDurationSelector, subscriptionDelay) {\n    if (subscriptionDelay) {\n        return function (source) {\n            return concat(subscriptionDelay.pipe(take(1), ignoreElements()), source.pipe(delayWhen(delayDurationSelector)));\n        };\n    }\n    return mergeMap(function (value, index) { return innerFrom(delayDurationSelector(value, index)).pipe(take(1), mapTo(value)); });\n}\n//# sourceMappingURL=delayWhen.js.map","import { asyncScheduler } from '../scheduler/async';\nimport { delayWhen } from './delayWhen';\nimport { timer } from '../observable/timer';\nexport function delay(due, scheduler) {\n    if (scheduler === void 0) { scheduler = asyncScheduler; }\n    var duration = timer(due, scheduler);\n    return delayWhen(function () { return duration; });\n}\n//# sourceMappingURL=delay.js.map","import { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nexport function pairwise() {\n    return operate(function (source, subscriber) {\n        var prev;\n        var hasPrev = false;\n        source.subscribe(createOperatorSubscriber(subscriber, function (value) {\n            var p = prev;\n            prev = value;\n            hasPrev && subscriber.next([p, value]);\n            hasPrev = true;\n        }));\n    });\n}\n//# sourceMappingURL=pairwise.js.map","import { __read, __spreadArray } from \"tslib\";\nimport { innerFrom } from '../observable/innerFrom';\nimport { Subject } from '../Subject';\nimport { SafeSubscriber } from '../Subscriber';\nimport { operate } from '../util/lift';\nexport function share(options) {\n    if (options === void 0) { options = {}; }\n    var _a = options.connector, connector = _a === void 0 ? function () { return new Subject(); } : _a, _b = options.resetOnError, resetOnError = _b === void 0 ? true : _b, _c = options.resetOnComplete, resetOnComplete = _c === void 0 ? true : _c, _d = options.resetOnRefCountZero, resetOnRefCountZero = _d === void 0 ? true : _d;\n    return function (wrapperSource) {\n        var connection;\n        var resetConnection;\n        var subject;\n        var refCount = 0;\n        var hasCompleted = false;\n        var hasErrored = false;\n        var cancelReset = function () {\n            resetConnection === null || resetConnection === void 0 ? void 0 : resetConnection.unsubscribe();\n            resetConnection = undefined;\n        };\n        var reset = function () {\n            cancelReset();\n            connection = subject = undefined;\n            hasCompleted = hasErrored = false;\n        };\n        var resetAndUnsubscribe = function () {\n            var conn = connection;\n            reset();\n            conn === null || conn === void 0 ? void 0 : conn.unsubscribe();\n        };\n        return operate(function (source, subscriber) {\n            refCount++;\n            if (!hasErrored && !hasCompleted) {\n                cancelReset();\n            }\n            var dest = (subject = subject !== null && subject !== void 0 ? subject : connector());\n            subscriber.add(function () {\n                refCount--;\n                if (refCount === 0 && !hasErrored && !hasCompleted) {\n                    resetConnection = handleReset(resetAndUnsubscribe, resetOnRefCountZero);\n                }\n            });\n            dest.subscribe(subscriber);\n            if (!connection &&\n                refCount > 0) {\n                connection = new SafeSubscriber({\n                    next: function (value) { return dest.next(value); },\n                    error: function (err) {\n                        hasErrored = true;\n                        cancelReset();\n                        resetConnection = handleReset(reset, resetOnError, err);\n                        dest.error(err);\n                    },\n                    complete: function () {\n                        hasCompleted = true;\n                        cancelReset();\n                        resetConnection = handleReset(reset, resetOnComplete);\n                        dest.complete();\n                    },\n                });\n                innerFrom(source).subscribe(connection);\n            }\n        })(wrapperSource);\n    };\n}\nfunction handleReset(reset, on) {\n    var args = [];\n    for (var _i = 2; _i < arguments.length; _i++) {\n        args[_i - 2] = arguments[_i];\n    }\n    if (on === true) {\n        reset();\n        return;\n    }\n    if (on === false) {\n        return;\n    }\n    var onSubscriber = new SafeSubscriber({\n        next: function () {\n            onSubscriber.unsubscribe();\n            reset();\n        },\n    });\n    return innerFrom(on.apply(void 0, __spreadArray([], __read(args)))).subscribe(onSubscriber);\n}\n//# sourceMappingURL=share.js.map","import { innerFrom } from '../observable/innerFrom';\nimport { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nexport function switchMap(project, resultSelector) {\n    return operate(function (source, subscriber) {\n        var innerSubscriber = null;\n        var index = 0;\n        var isComplete = false;\n        var checkComplete = function () { return isComplete && !innerSubscriber && subscriber.complete(); };\n        source.subscribe(createOperatorSubscriber(subscriber, function (value) {\n            innerSubscriber === null || innerSubscriber === void 0 ? void 0 : innerSubscriber.unsubscribe();\n            var innerIndex = 0;\n            var outerIndex = index++;\n            innerFrom(project(value, outerIndex)).subscribe((innerSubscriber = createOperatorSubscriber(subscriber, function (innerValue) { return subscriber.next(resultSelector ? resultSelector(value, innerValue, outerIndex, innerIndex++) : innerValue); }, function () {\n                innerSubscriber = null;\n                checkComplete();\n            })));\n        }, function () {\n            isComplete = true;\n            checkComplete();\n        }));\n    });\n}\n//# sourceMappingURL=switchMap.js.map","import { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nimport { innerFrom } from '../observable/innerFrom';\nexport function throttle(durationSelector, config) {\n    return operate(function (source, subscriber) {\n        var _a = config !== null && config !== void 0 ? config : {}, _b = _a.leading, leading = _b === void 0 ? true : _b, _c = _a.trailing, trailing = _c === void 0 ? false : _c;\n        var hasValue = false;\n        var sendValue = null;\n        var throttled = null;\n        var isComplete = false;\n        var endThrottling = function () {\n            throttled === null || throttled === void 0 ? void 0 : throttled.unsubscribe();\n            throttled = null;\n            if (trailing) {\n                send();\n                isComplete && subscriber.complete();\n            }\n        };\n        var cleanupThrottling = function () {\n            throttled = null;\n            isComplete && subscriber.complete();\n        };\n        var startThrottle = function (value) {\n            return (throttled = innerFrom(durationSelector(value)).subscribe(createOperatorSubscriber(subscriber, endThrottling, cleanupThrottling)));\n        };\n        var send = function () {\n            if (hasValue) {\n                hasValue = false;\n                var value = sendValue;\n                sendValue = null;\n                subscriber.next(value);\n                !isComplete && startThrottle(value);\n            }\n        };\n        source.subscribe(createOperatorSubscriber(subscriber, function (value) {\n            hasValue = true;\n            sendValue = value;\n            !(throttled && !throttled.closed) && (leading ? send() : startThrottle(value));\n        }, function () {\n            isComplete = true;\n            !(trailing && hasValue && throttled && !throttled.closed) && subscriber.complete();\n        }));\n    });\n}\n//# sourceMappingURL=throttle.js.map","import { asyncScheduler } from '../scheduler/async';\nimport { throttle } from './throttle';\nimport { timer } from '../observable/timer';\nexport function throttleTime(duration, scheduler, config) {\n    if (scheduler === void 0) { scheduler = asyncScheduler; }\n    var duration$ = timer(duration, scheduler);\n    return throttle(function () { return duration$; }, config);\n}\n//# sourceMappingURL=throttleTime.js.map","import { __read, __values } from \"tslib\";\nimport { isNonSensitiveElement } from './helpers';\nvar BLOCKED_ATTRIBUTES = [\n    // Already captured elsewhere in the hierarchy object\n    'id',\n    'class',\n    // non-useful and potentially large attribute\n    'style',\n    // sensitive as prefilled form data may populate this attribute\n    'value',\n    // DOM events\n    'onclick',\n    'onchange',\n    'oninput',\n    'onblur',\n    'onsubmit',\n    'onfocus',\n    'onkeydown',\n    'onkeyup',\n    'onkeypress',\n    // React specific\n    'data-reactid',\n    'data-react-checksum',\n    'data-reactroot',\n];\nvar SENSITIVE_ELEMENT_ATTRIBUTE_ALLOWLIST = ['type'];\nvar SVG_TAGS = ['svg', 'path', 'g'];\nvar HIGHLY_SENSITIVE_INPUT_TYPES = ['password', 'hidden'];\nvar MAX_ATTRIBUTE_LENGTH = 128;\nvar MAX_HIERARCHY_LENGTH = 1024;\nexport function getElementProperties(element) {\n    var e_1, _a;\n    var _b, _c, _d, _e;\n    if (element === null) {\n        return null;\n    }\n    var tagName = String(element.tagName).toLowerCase();\n    var properties = {\n        tag: tagName,\n    };\n    var siblings = Array.from((_c = (_b = element.parentElement) === null || _b === void 0 ? void 0 : _b.children) !== null && _c !== void 0 ? _c : []);\n    if (siblings.length) {\n        properties.index = siblings.indexOf(element);\n        properties.indexOfType = siblings.filter(function (el) { return el.tagName === element.tagName; }).indexOf(element);\n    }\n    var prevSiblingTag = (_e = (_d = element.previousElementSibling) === null || _d === void 0 ? void 0 : _d.tagName) === null || _e === void 0 ? void 0 : _e.toLowerCase();\n    if (prevSiblingTag) {\n        properties.prevSib = String(prevSiblingTag);\n    }\n    var id = element.getAttribute('id');\n    if (id) {\n        properties.id = String(id);\n    }\n    var classes = Array.from(element.classList);\n    if (classes.length) {\n        properties.classes = classes;\n    }\n    var attributes = {};\n    var attributesArray = Array.from(element.attributes);\n    var filteredAttributes = attributesArray.filter(function (attr) { return !BLOCKED_ATTRIBUTES.includes(attr.name); });\n    var isSensitiveElement = !isNonSensitiveElement(element);\n    // if input is hidden or password or for SVGs, skip attribute collection entirely\n    if (!HIGHLY_SENSITIVE_INPUT_TYPES.includes(String(element.getAttribute('type'))) && !SVG_TAGS.includes(tagName)) {\n        try {\n            for (var filteredAttributes_1 = __values(filteredAttributes), filteredAttributes_1_1 = filteredAttributes_1.next(); !filteredAttributes_1_1.done; filteredAttributes_1_1 = filteredAttributes_1.next()) {\n                var attr = filteredAttributes_1_1.value;\n                // If sensitive element, only allow certain attributes\n                if (isSensitiveElement && !SENSITIVE_ELEMENT_ATTRIBUTE_ALLOWLIST.includes(attr.name)) {\n                    continue;\n                }\n                // Finally cast attribute value to string and limit attribute value length\n                attributes[attr.name] = String(attr.value).substring(0, MAX_ATTRIBUTE_LENGTH);\n            }\n        }\n        catch (e_1_1) { e_1 = { error: e_1_1 }; }\n        finally {\n            try {\n                if (filteredAttributes_1_1 && !filteredAttributes_1_1.done && (_a = filteredAttributes_1.return)) _a.call(filteredAttributes_1);\n            }\n            finally { if (e_1) throw e_1.error; }\n        }\n    }\n    if (Object.keys(attributes).length) {\n        properties.attrs = attributes;\n    }\n    return properties;\n}\nexport function getAncestors(targetEl) {\n    var ancestors = [];\n    if (!targetEl) {\n        return ancestors;\n    }\n    // Add self to the list of ancestors\n    ancestors.push(targetEl);\n    var current = targetEl.parentElement;\n    while (current && current.tagName !== 'HTML') {\n        ancestors.push(current);\n        current = current.parentElement;\n    }\n    return ancestors;\n}\n// Get the DOM hierarchy of the element, starting from the target element to the root element.\nexport var getHierarchy = function (element) {\n    var hierarchy = [];\n    if (!element) {\n        return [];\n    }\n    // Get list of ancestors including itself and get properties at each level in the hierarchy\n    var ancestors = getAncestors(element);\n    hierarchy = ensureListUnderLimit(ancestors.map(function (el) { return getElementProperties(el); }), MAX_HIERARCHY_LENGTH);\n    return hierarchy;\n};\nexport function ensureListUnderLimit(list, bytesLimit) {\n    var numChars = 0;\n    for (var i = 0; i < list.length; i++) {\n        var node = list[i];\n        if (node === null) {\n            // simulate 'None' in python\n            numChars += 4;\n        }\n        else {\n            var value = ensureUnicodePythonCompatible(node);\n            // Using Array.from(string).length instead of string.length\n            // to correctly count Unicode characters (including emojis)\n            numChars += value ? Array.from(value).length : 4;\n        }\n        if (numChars > bytesLimit) {\n            return list.slice(0, i);\n        }\n    }\n    return list;\n}\n/**\n * Converts a JSON-compatible value to a Python-compatible string representation.\n * This function handles various data types and ensures proper escaping and formatting.\n *\n * @param value - The value to be converted (can be any JSON-compatible type)\n * @param nested - Indicates if the value is nested within another structure (default: false)\n * @returns A string representation of the value compatible with Python, or null if conversion fails\n */\nexport function ensureUnicodePythonCompatible(value, nested) {\n    if (nested === void 0) { nested = false; }\n    try {\n        if (value == null) {\n            // Handle null values\n            if (nested) {\n                return 'None'; // Represent null as 'None' in Python when nested\n            }\n            return null; // Return null for top-level null values\n        }\n        else if (typeof value === 'string') {\n            if (nested) {\n                // Escape special characters in nested strings\n                value = value.replace(/\\\\/g, '\\\\\\\\').replace(/\\n/g, '\\\\n').replace(/\\t/g, '\\\\t').replace(/\\r/g, '\\\\r');\n                // Handle quotes in the string\n                if (value.includes('\"')) {\n                    return \"'\".concat(value, \"'\"); // Wrap in single quotes if it contains double quotes\n                }\n                if (value.includes(\"'\")) {\n                    return \"\\\"\".concat(value.replace(/'/g, \"\\\\'\"), \"\\\"\"); // Wrap in double quotes and escape single quotes\n                }\n                return \"'\".concat(value, \"'\"); // Default to wrapping in single quotes\n            }\n            return value; // Return non-nested strings as-is\n        }\n        else if (typeof value === 'boolean') {\n            // Convert boolean to Python-style capitalized string\n            return value ? 'True' : 'False';\n        }\n        else if (Array.isArray(value)) {\n            // Handle arrays by recursively converting each element\n            var elements = value.map(function (o) { return ensureUnicodePythonCompatible(o, true); });\n            return \"[\".concat(elements.join(', '), \"]\");\n        }\n        else if (typeof value === 'object') {\n            // Handle objects (dictionaries in Python)\n            var entries = Object.entries(value)\n                .filter(function (_a) {\n                var _b = __read(_a, 1), key = _b[0];\n                return key != null;\n            }) // Filter out null keys\n                .map(function (_a) {\n                var _b = __read(_a, 2), key = _b[0], val = _b[1];\n                return \"\".concat(String(ensureUnicodePythonCompatible(key, true)), \": \").concat(String(ensureUnicodePythonCompatible(val, true)));\n            });\n            var result = \"{\".concat(entries.join(', '), \"}\");\n            // Handle single quotes in the resulting string\n            if (result.includes(\"\\\\'\")) {\n                result = result.replace(/'/g, \"'\").replace(/'/g, \"\\\\'\");\n            }\n            return result;\n        }\n        // For any other types, return their string representation;\n        return value.toString();\n    }\n    catch (e) {\n        // Return null if any error occurs during the conversion\n        return null;\n    }\n}\n//# sourceMappingURL=hierarchy.js.map","/* eslint-disable no-restricted-globals */\nimport * as constants from './constants';\nimport { isUrlMatchAllowlist } from '@amplitude/analytics-core';\nimport { getHierarchy } from './hierarchy';\nvar SENSITIVE_TAGS = ['input', 'select', 'textarea'];\nexport var isElementPointerCursor = function (element, actionType) {\n    var _a;\n    /* istanbul ignore next */\n    var computedStyle = (_a = window === null || window === void 0 ? void 0 : window.getComputedStyle) === null || _a === void 0 ? void 0 : _a.call(window, element);\n    /* istanbul ignore next */\n    return (computedStyle === null || computedStyle === void 0 ? void 0 : computedStyle.getPropertyValue('cursor')) === 'pointer' && actionType === 'click';\n};\nexport var createShouldTrackEvent = function (autocaptureOptions, allowlist, // this can be any type of css selector allow list\nisAlwaysCaptureCursorPointer) {\n    if (isAlwaysCaptureCursorPointer === void 0) { isAlwaysCaptureCursorPointer = false; }\n    return function (actionType, element) {\n        var _a, _b;\n        var pageUrlAllowlist = autocaptureOptions.pageUrlAllowlist, shouldTrackEventResolver = autocaptureOptions.shouldTrackEventResolver;\n        /* istanbul ignore next */\n        var tag = (_b = (_a = element === null || element === void 0 ? void 0 : element.tagName) === null || _a === void 0 ? void 0 : _a.toLowerCase) === null || _b === void 0 ? void 0 : _b.call(_a);\n        // window, document, and Text nodes have no tag\n        if (!tag) {\n            return false;\n        }\n        if (shouldTrackEventResolver) {\n            return shouldTrackEventResolver(actionType, element);\n        }\n        if (!isUrlMatchAllowlist(window.location.href, pageUrlAllowlist)) {\n            return false;\n        }\n        /* istanbul ignore next */\n        var elementType = String(element === null || element === void 0 ? void 0 : element.getAttribute('type')) || '';\n        if (typeof elementType === 'string') {\n            switch (elementType.toLowerCase()) {\n                case 'hidden':\n                    return false;\n                case 'password':\n                    return false;\n            }\n        }\n        var isCursorPointer = isElementPointerCursor(element, actionType);\n        if (isAlwaysCaptureCursorPointer && isCursorPointer) {\n            return true;\n        }\n        /* istanbul ignore if */\n        if (allowlist) {\n            var hasMatchAnyAllowedSelector = allowlist.some(function (selector) { var _a; return !!((_a = element === null || element === void 0 ? void 0 : element.matches) === null || _a === void 0 ? void 0 : _a.call(element, selector)); });\n            if (!hasMatchAnyAllowedSelector) {\n                return false;\n            }\n        }\n        switch (tag) {\n            case 'input':\n            case 'select':\n            case 'textarea':\n                return actionType === 'change' || actionType === 'click';\n            default: {\n                /* istanbul ignore next */\n                /* istanbul ignore next */\n                if (isCursorPointer) {\n                    return true;\n                }\n                return actionType === 'click';\n            }\n        }\n    };\n};\nexport var isNonSensitiveString = function (text) {\n    if (text == null) {\n        return false;\n    }\n    if (typeof text === 'string') {\n        var ccRegex = /^(?:(4[0-9]{12}(?:[0-9]{3})?)|(5[1-5][0-9]{14})|(6(?:011|5[0-9]{2})[0-9]{12})|(3[47][0-9]{13})|(3(?:0[0-5]|[68][0-9])[0-9]{11})|((?:2131|1800|35[0-9]{3})[0-9]{11}))$/;\n        if (ccRegex.test((text || '').replace(/[- ]/g, ''))) {\n            return false;\n        }\n        var ssnRegex = /(^\\d{3}-?\\d{2}-?\\d{4}$)/;\n        if (ssnRegex.test(text)) {\n            return false;\n        }\n    }\n    return true;\n};\nexport var isTextNode = function (node) {\n    return !!node && node.nodeType === 3;\n};\nexport var isNonSensitiveElement = function (element) {\n    var _a, _b, _c;\n    /* istanbul ignore next */\n    var tag = (_b = (_a = element === null || element === void 0 ? void 0 : element.tagName) === null || _a === void 0 ? void 0 : _a.toLowerCase) === null || _b === void 0 ? void 0 : _b.call(_a);\n    var isContentEditable = element instanceof HTMLElement ? ((_c = element.getAttribute('contenteditable')) === null || _c === void 0 ? void 0 : _c.toLowerCase()) === 'true' : false;\n    return !SENSITIVE_TAGS.includes(tag) && !isContentEditable;\n};\n// Maybe this can be simplified with element.innerText, keep and manual concatenating for now, more research needed.\nexport var getText = function (element) {\n    var text = '';\n    if (isNonSensitiveElement(element) && element.childNodes && element.childNodes.length) {\n        element.childNodes.forEach(function (child) {\n            var childText = '';\n            if (isTextNode(child)) {\n                if (child.textContent) {\n                    childText = child.textContent;\n                }\n            }\n            else {\n                childText = getText(child);\n            }\n            text += childText\n                .split(/(\\s+)/)\n                .filter(isNonSensitiveString)\n                .join('')\n                .replace(/[\\r\\n]/g, ' ')\n                .replace(/[ ]+/g, ' ')\n                .substring(0, 255);\n        });\n    }\n    return text;\n};\nexport var getAttributesWithPrefix = function (element, prefix) {\n    return element.getAttributeNames().reduce(function (attributes, attributeName) {\n        if (attributeName.startsWith(prefix)) {\n            var attributeKey = attributeName.replace(prefix, '');\n            var attributeValue = element.getAttribute(attributeName);\n            if (attributeKey) {\n                attributes[attributeKey] = attributeValue || '';\n            }\n        }\n        return attributes;\n    }, {});\n};\nexport var isEmpty = function (value) {\n    return (value === undefined ||\n        value === null ||\n        (typeof value === 'object' && Object.keys(value).length === 0) ||\n        (typeof value === 'string' && value.trim().length === 0));\n};\nexport var removeEmptyProperties = function (properties) {\n    return Object.keys(properties).reduce(function (filteredProperties, key) {\n        var value = properties[key];\n        if (!isEmpty(value)) {\n            filteredProperties[key] = value;\n        }\n        return filteredProperties;\n    }, {});\n};\nexport var getNearestLabel = function (element) {\n    var parent = element.parentElement;\n    if (!parent) {\n        return '';\n    }\n    var labelElement;\n    try {\n        labelElement = parent.querySelector(':scope>span,h1,h2,h3,h4,h5,h6');\n    }\n    catch (error) {\n        /* istanbul ignore next */\n        labelElement = null;\n    }\n    if (labelElement) {\n        /* istanbul ignore next */\n        var labelText = labelElement.textContent || '';\n        return isNonSensitiveString(labelText) ? labelText : '';\n    }\n    return getNearestLabel(parent);\n};\nexport var querySelectUniqueElements = function (root, selectors) {\n    if (root && 'querySelectorAll' in root && typeof root.querySelectorAll === 'function') {\n        var elementSet = selectors.reduce(function (elements, selector) {\n            if (selector) {\n                var selectedElements = Array.from(root.querySelectorAll(selector));\n                selectedElements.forEach(function (element) {\n                    elements.add(element);\n                });\n            }\n            return elements;\n        }, new Set());\n        return Array.from(elementSet);\n    }\n    return [];\n};\n// Similar as element.closest, but works with multiple selectors\nexport var getClosestElement = function (element, selectors) {\n    if (!element) {\n        return null;\n    }\n    /* istanbul ignore next */\n    if (selectors.some(function (selector) { var _a; return (_a = element === null || element === void 0 ? void 0 : element.matches) === null || _a === void 0 ? void 0 : _a.call(element, selector); })) {\n        return element;\n    }\n    /* istanbul ignore next */\n    return getClosestElement(element === null || element === void 0 ? void 0 : element.parentElement, selectors);\n};\n// Returns the element properties for the given element in Visual Labeling.\nexport var getEventTagProps = function (element) {\n    var _a;\n    var _b, _c;\n    if (!element) {\n        return {};\n    }\n    /* istanbul ignore next */\n    var tag = (_c = (_b = element === null || element === void 0 ? void 0 : element.tagName) === null || _b === void 0 ? void 0 : _b.toLowerCase) === null || _c === void 0 ? void 0 : _c.call(_b);\n    var properties = (_a = {},\n        _a[constants.AMPLITUDE_EVENT_PROP_ELEMENT_TAG] = tag,\n        _a[constants.AMPLITUDE_EVENT_PROP_ELEMENT_TEXT] = getText(element),\n        _a[constants.AMPLITUDE_EVENT_PROP_PAGE_URL] = window.location.href.split('?')[0],\n        _a);\n    return removeEmptyProperties(properties);\n};\nexport var asyncLoadScript = function (url) {\n    return new Promise(function (resolve, reject) {\n        var _a;\n        try {\n            var scriptElement = document.createElement('script');\n            scriptElement.type = 'text/javascript';\n            scriptElement.async = true;\n            scriptElement.src = url;\n            scriptElement.addEventListener('load', function () {\n                resolve({ status: true });\n            }, { once: true });\n            scriptElement.addEventListener('error', function () {\n                reject({\n                    status: false,\n                    message: \"Failed to load the script \".concat(url),\n                });\n            });\n            /* istanbul ignore next */\n            (_a = document.head) === null || _a === void 0 ? void 0 : _a.appendChild(scriptElement);\n        }\n        catch (error) {\n            /* istanbul ignore next */\n            reject(error);\n        }\n    });\n};\nexport function generateUniqueId() {\n    return \"\".concat(Date.now(), \"-\").concat(Math.random().toString(36).substr(2, 9));\n}\nexport var filterOutNonTrackableEvents = function (event) {\n    // Filter out changeEvent events with no target\n    // This could happen when change events are triggered programmatically\n    if (event.event.target === null || !event.closestTrackedAncestor) {\n        return false;\n    }\n    return true;\n};\n// Returns the Amplitude event properties for the given element.\nexport var getEventProperties = function (actionType, element, dataAttributePrefix) {\n    var _a;\n    var _b, _c;\n    /* istanbul ignore next */\n    var tag = (_c = (_b = element === null || element === void 0 ? void 0 : element.tagName) === null || _b === void 0 ? void 0 : _b.toLowerCase) === null || _c === void 0 ? void 0 : _c.call(_b);\n    /* istanbul ignore next */\n    var rect = typeof element.getBoundingClientRect === 'function' ? element.getBoundingClientRect() : { left: null, top: null };\n    var ariaLabel = element.getAttribute('aria-label');\n    var attributes = getAttributesWithPrefix(element, dataAttributePrefix);\n    var nearestLabel = getNearestLabel(element);\n    /* istanbul ignore next */\n    var properties = (_a = {},\n        _a[constants.AMPLITUDE_EVENT_PROP_ELEMENT_ID] = element.getAttribute('id') || '',\n        _a[constants.AMPLITUDE_EVENT_PROP_ELEMENT_CLASS] = element.getAttribute('class'),\n        _a[constants.AMPLITUDE_EVENT_PROP_ELEMENT_HIERARCHY] = getHierarchy(element),\n        _a[constants.AMPLITUDE_EVENT_PROP_ELEMENT_TAG] = tag,\n        _a[constants.AMPLITUDE_EVENT_PROP_ELEMENT_TEXT] = getText(element),\n        _a[constants.AMPLITUDE_EVENT_PROP_ELEMENT_POSITION_LEFT] = rect.left == null ? null : Math.round(rect.left),\n        _a[constants.AMPLITUDE_EVENT_PROP_ELEMENT_POSITION_TOP] = rect.top == null ? null : Math.round(rect.top),\n        _a[constants.AMPLITUDE_EVENT_PROP_ELEMENT_ARIA_LABEL] = ariaLabel,\n        _a[constants.AMPLITUDE_EVENT_PROP_ELEMENT_ATTRIBUTES] = attributes,\n        _a[constants.AMPLITUDE_EVENT_PROP_ELEMENT_PARENT_LABEL] = nearestLabel,\n        _a[constants.AMPLITUDE_EVENT_PROP_PAGE_URL] = window.location.href.split('?')[0],\n        _a[constants.AMPLITUDE_EVENT_PROP_PAGE_TITLE] = (typeof document !== 'undefined' && document.title) || '',\n        _a[constants.AMPLITUDE_EVENT_PROP_VIEWPORT_HEIGHT] = window.innerHeight,\n        _a[constants.AMPLITUDE_EVENT_PROP_VIEWPORT_WIDTH] = window.innerWidth,\n        _a);\n    if (tag === 'a' && actionType === 'click' && element instanceof HTMLAnchorElement) {\n        properties[constants.AMPLITUDE_EVENT_PROP_ELEMENT_HREF] = element.href;\n    }\n    return removeEmptyProperties(properties);\n};\nexport var addAdditionalEventProperties = function (event, type, selectorAllowlist, dataAttributePrefix, \n// capture the event if the cursor is a \"pointer\" when this element is clicked on\n// reason: a \"pointer\" cursor indicates that an element should be interactable\n//         regardless of the element's tag name\nisCapturingCursorPointer) {\n    if (isCapturingCursorPointer === void 0) { isCapturingCursorPointer = false; }\n    var baseEvent = {\n        event: event,\n        timestamp: Date.now(),\n        type: type,\n    };\n    if (isElementBasedEvent(baseEvent) && baseEvent.event.target !== null) {\n        if (isCapturingCursorPointer) {\n            var isCursorPointer = isElementPointerCursor(baseEvent.event.target, baseEvent.type);\n            if (isCursorPointer) {\n                baseEvent.closestTrackedAncestor = baseEvent.event.target;\n                baseEvent.targetElementProperties = getEventProperties(baseEvent.type, baseEvent.closestTrackedAncestor, dataAttributePrefix);\n                return baseEvent;\n            }\n        }\n        // Retrieve additional event properties from the target element\n        var closestTrackedAncestor = getClosestElement(baseEvent.event.target, selectorAllowlist);\n        if (closestTrackedAncestor) {\n            baseEvent.closestTrackedAncestor = closestTrackedAncestor;\n            baseEvent.targetElementProperties = getEventProperties(baseEvent.type, closestTrackedAncestor, dataAttributePrefix);\n        }\n        return baseEvent;\n    }\n    return baseEvent;\n};\n// Type predicate\nexport function isElementBasedEvent(event) {\n    return event.type === 'click' || event.type === 'change';\n}\n//# sourceMappingURL=helpers.js.map","// Get DataSource\n/**\n * Gets the DOM element specified by the data source configuration\n * @param dataSource - Configuration for finding the target element\n * @param contextElement - The element to start searching from\n * @returns The matching DOM element or undefined if not found\n */\nexport var getDataSource = function (dataSource, contextElement) {\n    // Only process DOM_ELEMENT type data sources\n    try {\n        if (dataSource.sourceType === 'DOM_ELEMENT') {\n            // If scope is specified, find the closest ancestor matching the scope rather than using documentElement (html) as the scope\n            var scopingElement = document.documentElement;\n            if (dataSource.scope && contextElement) {\n                scopingElement = contextElement.closest(dataSource.scope);\n            }\n            // If we have both a scope and selector, find the matching element\n            if (scopingElement && dataSource.selector) {\n                return scopingElement.querySelector(dataSource.selector);\n            }\n            // Return scopingElement if no selector was specified\n            return scopingElement;\n        }\n    }\n    catch (error) {\n        return undefined;\n    }\n    // Return undefined for non-DOM_ELEMENT data sources\n    return undefined;\n};\n// extract DataSource\nexport var extractDataFromDataSource = function (dataSource, contextElement) {\n    // Extract from DOM Element\n    if (dataSource.sourceType === 'DOM_ELEMENT') {\n        var sourceElement = getDataSource(dataSource, contextElement);\n        if (!sourceElement) {\n            return undefined;\n        }\n        if (dataSource.elementExtractType === 'TEXT') {\n            return sourceElement.textContent;\n        }\n        else if (dataSource.elementExtractType === 'ATTRIBUTE' && dataSource.attribute) {\n            return sourceElement.getAttribute(dataSource.attribute);\n        }\n        return undefined;\n    }\n    // TODO: Extract from other source types\n    return undefined;\n};\n// Execute actions for a condition and attach event properties to the event if needed\nexport var executeActions = function (actions, ev) {\n    actions.forEach(function (action) {\n        // Skip if actions is string until action set is implemented\n        if (typeof action === 'string') {\n            return;\n        }\n        if (action.actionType === 'ATTACH_EVENT_PROPERTY') {\n            var data = extractDataFromDataSource(action.dataSource, ev.closestTrackedAncestor);\n            // Attach data to event\n            ev.targetElementProperties[action.destinationKey] = data;\n        }\n    });\n};\n//# sourceMappingURL=actions.js.map","export var VERSION = '1.9.0';\n//# sourceMappingURL=version.js.map","/* istanbul ignore file */\n/* eslint-disable no-restricted-globals */\nimport { extractDataFromDataSource } from '../pageActions/actions';\nimport { AMPLITUDE_ORIGIN, AMPLITUDE_VISUAL_TAGGING_SELECTOR_SCRIPT_URL, AMPLITUDE_VISUAL_TAGGING_HIGHLIGHT_CLASS, } from '../constants';\nimport { asyncLoadScript, generateUniqueId, getEventTagProps } from '../helpers';\nimport { VERSION } from '../version';\n// TODO: use MessageChannel instead of window.postMessage\nvar WindowMessenger = /** @class */ (function () {\n    function WindowMessenger(_a) {\n        var _b = _a === void 0 ? {} : _a, _c = _b.origin, origin = _c === void 0 ? AMPLITUDE_ORIGIN : _c;\n        var _this = this;\n        this.endpoint = AMPLITUDE_ORIGIN;\n        this.requestCallbacks = {};\n        this.onSelect = function (data) {\n            _this.notify({ action: 'element-selected', data: data });\n        };\n        this.onTrack = function (type, properties) {\n            if (type === 'selector-mode-changed') {\n                _this.notify({ action: 'track-selector-mode-changed', data: properties });\n            }\n            else if (type === 'selector-moved') {\n                _this.notify({ action: 'track-selector-moved', data: properties });\n            }\n        };\n        this.endpoint = origin;\n    }\n    WindowMessenger.prototype.notify = function (message) {\n        var _a, _b, _c, _d;\n        (_b = (_a = this.logger) === null || _a === void 0 ? void 0 : _a.debug) === null || _b === void 0 ? void 0 : _b.call(_a, 'Message sent: ', JSON.stringify(message));\n        (_d = (_c = window.opener) === null || _c === void 0 ? void 0 : _c.postMessage) === null || _d === void 0 ? void 0 : _d.call(_c, message, this.endpoint);\n    };\n    // Send an async request to the parent window\n    WindowMessenger.prototype.sendRequest = function (action, args, options) {\n        var _this = this;\n        if (options === void 0) { options = { timeout: 15000 }; }\n        // Create Request ID\n        var id = generateUniqueId();\n        var request = {\n            id: id,\n            action: action,\n            args: args,\n        };\n        // Create a Promise that will be resolved when the response is received\n        var promise = new Promise(function (resolve, reject) {\n            _this.requestCallbacks[id] = { resolve: resolve, reject: reject };\n            // Send the request\n            _this.notify(request);\n            // Handle request timeouts\n            if ((options === null || options === void 0 ? void 0 : options.timeout) > 0) {\n                setTimeout(function () {\n                    reject(new Error(\"\".concat(action, \" timed out (id: \").concat(id, \")\")));\n                    delete _this.requestCallbacks[id];\n                }, options.timeout);\n            }\n        });\n        return promise;\n    };\n    // Handle messages from the parent window\n    WindowMessenger.prototype.handleResponse = function (response) {\n        var _a;\n        if (!this.requestCallbacks[response.id]) {\n            (_a = this.logger) === null || _a === void 0 ? void 0 : _a.warn(\"No callback found for request id: \".concat(response.id));\n            return;\n        }\n        this.requestCallbacks[response.id].resolve(response.responseData);\n        delete this.requestCallbacks[response.id];\n    };\n    WindowMessenger.prototype.setup = function (_a) {\n        var _this = this;\n        var _b = _a === void 0 ? {} : _a, logger = _b.logger, endpoint = _b.endpoint, isElementSelectable = _b.isElementSelectable, cssSelectorAllowlist = _b.cssSelectorAllowlist, actionClickAllowlist = _b.actionClickAllowlist;\n        this.logger = logger;\n        // If endpoint is customized, don't override it.\n        if (endpoint && this.endpoint === AMPLITUDE_ORIGIN) {\n            this.endpoint = endpoint;\n        }\n        var amplitudeVisualTaggingSelectorInstance = null;\n        // Attach Event Listener to listen for messages from the parent window\n        window.addEventListener('message', function (event) {\n            var _a, _b, _c, _d, _e;\n            (_b = (_a = _this.logger) === null || _a === void 0 ? void 0 : _a.debug) === null || _b === void 0 ? void 0 : _b.call(_a, 'Message received: ', JSON.stringify(event));\n            // Only accept messages from the specified origin\n            if (_this.endpoint !== event.origin) {\n                return;\n            }\n            var eventData = event === null || event === void 0 ? void 0 : event.data;\n            var action = eventData === null || eventData === void 0 ? void 0 : eventData.action;\n            // Ignore messages without action\n            if (!action) {\n                return;\n            }\n            // If id exists, handle responses to previous requests\n            if ('id' in eventData) {\n                (_d = (_c = _this.logger) === null || _c === void 0 ? void 0 : _c.debug) === null || _d === void 0 ? void 0 : _d.call(_c, 'Received Response to previous request: ', JSON.stringify(event));\n                _this.handleResponse(eventData);\n                // If action exists, handle the action using existing handlers\n            }\n            else {\n                if (action === 'ping') {\n                    _this.notify({ action: 'pong' });\n                }\n                else if (action === 'initialize-visual-tagging-selector') {\n                    var actionData_1 = eventData === null || eventData === void 0 ? void 0 : eventData.data;\n                    asyncLoadScript(AMPLITUDE_VISUAL_TAGGING_SELECTOR_SCRIPT_URL)\n                        .then(function () {\n                        var _a;\n                        // eslint-disable-next-line\n                        amplitudeVisualTaggingSelectorInstance = (_a = window === null || window === void 0 ? void 0 : window.amplitudeVisualTaggingSelector) === null || _a === void 0 ? void 0 : _a.call(window, {\n                            getEventTagProps: getEventTagProps,\n                            isElementSelectable: function (element) {\n                                if (isElementSelectable) {\n                                    return isElementSelectable((actionData_1 === null || actionData_1 === void 0 ? void 0 : actionData_1.actionType) || 'click', element);\n                                }\n                                return true;\n                            },\n                            onTrack: _this.onTrack,\n                            onSelect: _this.onSelect,\n                            visualHighlightClass: AMPLITUDE_VISUAL_TAGGING_HIGHLIGHT_CLASS,\n                            messenger: _this,\n                            cssSelectorAllowlist: cssSelectorAllowlist,\n                            actionClickAllowlist: actionClickAllowlist,\n                            extractDataFromDataSource: extractDataFromDataSource,\n                            diagnostics: {\n                                autocapture: {\n                                    version: VERSION,\n                                },\n                            },\n                        });\n                        _this.notify({ action: 'selector-loaded' });\n                    })\n                        .catch(function () {\n                        var _a;\n                        (_a = _this.logger) === null || _a === void 0 ? void 0 : _a.warn('Failed to initialize visual tagging selector');\n                    });\n                }\n                else if (action === 'close-visual-tagging-selector') {\n                    // eslint-disable-next-line\n                    (_e = amplitudeVisualTaggingSelectorInstance === null || amplitudeVisualTaggingSelectorInstance === void 0 ? void 0 : amplitudeVisualTaggingSelectorInstance.close) === null || _e === void 0 ? void 0 : _e.call(amplitudeVisualTaggingSelectorInstance);\n                }\n            }\n        });\n        // Notify the parent window that the page has loaded\n        this.notify({ action: 'page-loaded' });\n    };\n    return WindowMessenger;\n}());\nexport { WindowMessenger };\n//# sourceMappingURL=messenger.js.map","import { __read, __values } from \"tslib\";\nimport { buffer, filter, map, debounceTime, merge, pairwise, delay } from 'rxjs';\nimport { filterOutNonTrackableEvents } from '../helpers';\nimport { AMPLITUDE_ELEMENT_CLICKED_EVENT } from '../constants';\nvar RAGE_CLICK_THRESHOLD = 5;\nexport function trackClicks(_a) {\n    var amplitude = _a.amplitude, allObservables = _a.allObservables, options = _a.options, shouldTrackEvent = _a.shouldTrackEvent, evaluateTriggers = _a.evaluateTriggers;\n    var clickObservable = allObservables.clickObservable;\n    // Trigger if the target of the click event has changed and position is different\n    // Keeping track of position is important to avoid false positives when the user clicks on the same\n    // element where certain frameworks could replace the element instance between rerenders\n    var comparisonTrigger = clickObservable.pipe(pairwise(), filter(function (_a) {\n        var _b = __read(_a, 2), prev = _b[0], current = _b[1];\n        var targetChanged = prev.event.target !== current.event.target;\n        /* istanbul ignore next */\n        var samePos = Math.abs(current.event.screenX - prev.event.screenX) <= 20 &&\n            Math.abs(current.event.screenY - prev.event.screenY) <= 20;\n        return targetChanged && !samePos;\n    }));\n    // Trigger if there is no click event within 1 second\n    var timeoutTrigger = clickObservable.pipe(debounceTime(options.debounceTime), map(function () { return 'timeout'; }));\n    var triggers = merge(comparisonTrigger, timeoutTrigger);\n    // Get buffers of clicks, if the buffer length is over 5, it is rage click\n    var bufferedClicks = clickObservable.pipe(delay(0), filter(filterOutNonTrackableEvents), filter(function (click) {\n        // Only track clicks on elements that should be tracked,\n        return shouldTrackEvent('click', click.closestTrackedAncestor);\n    }), map(function (click) { return evaluateTriggers(click); }), buffer(triggers));\n    return bufferedClicks.subscribe(function (clicks) {\n        var e_1, _a;\n        // TODO: update this when rage clicks are added\n        var clickType = clicks.length >= RAGE_CLICK_THRESHOLD ? AMPLITUDE_ELEMENT_CLICKED_EVENT : AMPLITUDE_ELEMENT_CLICKED_EVENT;\n        try {\n            for (var clicks_1 = __values(clicks), clicks_1_1 = clicks_1.next(); !clicks_1_1.done; clicks_1_1 = clicks_1.next()) {\n                var click = clicks_1_1.value;\n                /* istanbul ignore next */\n                amplitude === null || amplitude === void 0 ? void 0 : amplitude.track(clickType, click.targetElementProperties);\n            }\n        }\n        catch (e_1_1) { e_1 = { error: e_1_1 }; }\n        finally {\n            try {\n                if (clicks_1_1 && !clicks_1_1.done && (_a = clicks_1.return)) _a.call(clicks_1);\n            }\n            finally { if (e_1) throw e_1.error; }\n        }\n    });\n}\n//# sourceMappingURL=track-click.js.map","import { filter, map } from 'rxjs';\nimport { filterOutNonTrackableEvents } from '../helpers';\nimport { AMPLITUDE_ELEMENT_CHANGED_EVENT } from '../constants';\nexport function trackChange(_a) {\n    var amplitude = _a.amplitude, allObservables = _a.allObservables, getEventProperties = _a.getEventProperties, shouldTrackEvent = _a.shouldTrackEvent, evaluateTriggers = _a.evaluateTriggers;\n    var changeObservable = allObservables.changeObservable;\n    var filteredChangeObservable = changeObservable.pipe(filter(filterOutNonTrackableEvents), filter(function (changeEvent) {\n        // Only track change on elements that should be tracked,\n        return shouldTrackEvent('change', changeEvent.closestTrackedAncestor);\n    }), map(function (changeEvent) { return evaluateTriggers(changeEvent); }));\n    return filteredChangeObservable.subscribe(function (changeEvent) {\n        /* istanbul ignore next */\n        amplitude === null || amplitude === void 0 ? void 0 : amplitude.track(AMPLITUDE_ELEMENT_CHANGED_EVENT, getEventProperties('change', changeEvent.closestTrackedAncestor));\n    });\n}\n//# sourceMappingURL=track-change.js.map","import { __read, __spreadArray } from \"tslib\";\nimport { filter, map, merge, switchMap, take, timeout, EMPTY } from 'rxjs';\nimport { filterOutNonTrackableEvents, getClosestElement, } from '../helpers';\nimport { AMPLITUDE_ELEMENT_CLICKED_EVENT } from '../constants';\nexport function trackActionClick(_a) {\n    var amplitude = _a.amplitude, allObservables = _a.allObservables, options = _a.options, getEventProperties = _a.getEventProperties, shouldTrackEvent = _a.shouldTrackEvent, shouldTrackActionClick = _a.shouldTrackActionClick;\n    var clickObservable = allObservables.clickObservable, mutationObservable = allObservables.mutationObservable, navigateObservable = allObservables.navigateObservable;\n    var filteredClickObservable = clickObservable.pipe(filter(function (click) {\n        // Filter out regularly tracked click events that are already handled in trackClicks\n        return !shouldTrackEvent('click', click.closestTrackedAncestor);\n    }), map(function (click) {\n        // overwrite the closestTrackedAncestor with the closest element that is on the actionClickAllowlist\n        var closestActionClickEl = getClosestElement(click.event.target, options.actionClickAllowlist);\n        click.closestTrackedAncestor = closestActionClickEl;\n        // overwrite the targetElementProperties with the properties of the closestActionClickEl\n        if (click.closestTrackedAncestor !== null) {\n            click.targetElementProperties = getEventProperties(click.type, click.closestTrackedAncestor);\n        }\n        return click;\n    }), filter(filterOutNonTrackableEvents), filter(function (clickEvent) {\n        // Only track change on elements that should be tracked\n        return shouldTrackActionClick('click', clickEvent.closestTrackedAncestor);\n    }));\n    var changeObservables = [mutationObservable];\n    /* istanbul ignore next */\n    if (navigateObservable) {\n        changeObservables.push(navigateObservable);\n    }\n    var mutationOrNavigate = merge.apply(void 0, __spreadArray([], __read(changeObservables), false));\n    var actionClicks = filteredClickObservable.pipe(\n    // If a mutation occurs within 0.5 seconds of a click event (timeout({ first: 500 })), it emits the original first click event.\n    // take 1 to only limit the action events in case there are multiple\n    switchMap(function (click) {\n        return mutationOrNavigate.pipe(take(1), timeout({ first: 500, with: function () { return EMPTY; } }), // in case of timeout, map to empty to prevent any click from being emitted\n        map(function () { return click; }));\n    }));\n    return actionClicks.subscribe(function (actionClick) {\n        /* istanbul ignore next */\n        amplitude === null || amplitude === void 0 ? void 0 : amplitude.track(AMPLITUDE_ELEMENT_CLICKED_EVENT, getEventProperties('click', actionClick.closestTrackedAncestor));\n    });\n}\n//# sourceMappingURL=track-action-click.js.map","import { Observable, fromEvent } from 'rxjs';\n/**\n * Creates an observable that tracks DOM mutations on the document body.\n */\nexport var createMutationObservable = function () {\n    return new Observable(function (observer) {\n        var mutationObserver = new MutationObserver(function (mutations) {\n            observer.next(mutations);\n        });\n        mutationObserver.observe(document.body, {\n            childList: true,\n            attributes: true,\n            characterData: true,\n            subtree: true,\n        });\n        return function () { return mutationObserver.disconnect(); };\n    });\n};\n/**\n * Creates an observable that tracks click events on the document.\n * @param clickType - The type of click event to track (click or pointerdown)\n */\nexport var createClickObservable = function (clickType) {\n    if (clickType === void 0) { clickType = 'click'; }\n    return fromEvent(document, clickType, { capture: true });\n};\n//# sourceMappingURL=observables.js.map","/**\n * Matches an event to a single filter\n * @param event - The event to match\n * @param filter - The filter to match against\n * @returns boolean indicating if the event matches the filter\n */\nexport var matchEventToFilter = function (event, filter) {\n    try {\n        if (filter.subprop_key === '[Amplitude] Element Text') {\n            // TODO: add support for the other operators\n            return (filter.subprop_op === 'is' &&\n                filter.subprop_value.includes(event.targetElementProperties['[Amplitude] Element Text']));\n        }\n        else if (filter.subprop_key === '[Amplitude] Element Hierarchy') {\n            // Check if the element ancestory matches the CSS selector, always check this last since it is the most expensive\n            return (filter.subprop_op === 'autotrack css match' &&\n                !!event.closestTrackedAncestor.closest(filter.subprop_value.toString()));\n        }\n    }\n    catch (error) {\n        console.error('Error matching event to filter', error);\n        return false;\n    }\n    return false;\n};\n//# sourceMappingURL=matchEventToFilter.js.map","import { __values } from \"tslib\";\nimport { matchEventToFilter } from './matchEventToFilter';\nimport { executeActions } from './actions';\nvar eventTypeToBrowserEventMap = {\n    '[Amplitude] Element Clicked': 'click',\n    '[Amplitude] Element Changed': 'change',\n};\n// groups labeled events by event type\n// skips any labeled events with malformed definitions or unexpected event_type\nexport var groupLabeledEventIdsByEventType = function (labeledEvents) {\n    var e_1, _a, e_2, _b;\n    // Initialize all event types with empty sets\n    var groupedLabeledEvents = Object.values(eventTypeToBrowserEventMap).reduce(function (acc, browserEvent) {\n        acc[browserEvent] = new Set();\n        return acc;\n    }, {});\n    // If there are no labeled events, return the initialized groupedLabeledEvents\n    if (!labeledEvents) {\n        return groupedLabeledEvents;\n    }\n    try {\n        // Group labeled events by event type\n        for (var labeledEvents_1 = __values(labeledEvents), labeledEvents_1_1 = labeledEvents_1.next(); !labeledEvents_1_1.done; labeledEvents_1_1 = labeledEvents_1.next()) {\n            var le = labeledEvents_1_1.value;\n            try {\n                try {\n                    for (var _c = (e_2 = void 0, __values(le.definition)), _d = _c.next(); !_d.done; _d = _c.next()) {\n                        var def = _d.value;\n                        var browserEvent = eventTypeToBrowserEventMap[def.event_type];\n                        if (browserEvent) {\n                            groupedLabeledEvents[browserEvent].add(le.id);\n                        }\n                    }\n                }\n                catch (e_2_1) { e_2 = { error: e_2_1 }; }\n                finally {\n                    try {\n                        if (_d && !_d.done && (_b = _c.return)) _b.call(_c);\n                    }\n                    finally { if (e_2) throw e_2.error; }\n                }\n            }\n            catch (e) {\n                // Skip this labeled event if there is an error\n                console.warn('Skipping Labeled Event due to malformed definition', le === null || le === void 0 ? void 0 : le.id, e);\n            }\n        }\n    }\n    catch (e_1_1) { e_1 = { error: e_1_1 }; }\n    finally {\n        try {\n            if (labeledEvents_1_1 && !labeledEvents_1_1.done && (_a = labeledEvents_1.return)) _a.call(labeledEvents_1);\n        }\n        finally { if (e_1) throw e_1.error; }\n    }\n    return groupedLabeledEvents;\n};\n// TODO: add tests\nexport var createLabeledEventToTriggerMap = function (triggers) {\n    var e_3, _a, e_4, _b;\n    var labeledEventToTriggerMap = new Map();\n    try {\n        for (var triggers_1 = __values(triggers), triggers_1_1 = triggers_1.next(); !triggers_1_1.done; triggers_1_1 = triggers_1.next()) {\n            var trigger = triggers_1_1.value;\n            try {\n                for (var _c = (e_4 = void 0, __values(trigger.conditions)), _d = _c.next(); !_d.done; _d = _c.next()) {\n                    var condition = _d.value;\n                    if (condition.type === 'LABELED_EVENT') {\n                        var eventId = condition.match.eventId;\n                        // Get existing triggers for this event ID or initialize empty array\n                        var existingTriggers = labeledEventToTriggerMap.get(eventId);\n                        if (!existingTriggers) {\n                            existingTriggers = [];\n                            labeledEventToTriggerMap.set(eventId, existingTriggers);\n                        }\n                        // Add current trigger to the list of triggers for this event ID\n                        existingTriggers.push(trigger);\n                    }\n                }\n            }\n            catch (e_4_1) { e_4 = { error: e_4_1 }; }\n            finally {\n                try {\n                    if (_d && !_d.done && (_b = _c.return)) _b.call(_c);\n                }\n                finally { if (e_4) throw e_4.error; }\n            }\n        }\n    }\n    catch (e_3_1) { e_3 = { error: e_3_1 }; }\n    finally {\n        try {\n            if (triggers_1_1 && !triggers_1_1.done && (_a = triggers_1.return)) _a.call(triggers_1);\n        }\n        finally { if (e_3) throw e_3.error; }\n    }\n    return labeledEventToTriggerMap;\n};\n/**\n * Matches an event to labeled events based on the event's properties.\n * The logic matches exactly what is supported by the query backend.\n * TODO: later pre-filter the labeled events based on URL first\n *\n * @param event - The event to match against labeled events\n * @param labeledEvents - Array of labeled events to match against\n * @returns Array of matching labeled events\n */\nexport var matchEventToLabeledEvents = function (event, labeledEvents) {\n    return labeledEvents.filter(function (le) {\n        return le.definition.some(function (def) {\n            return (eventTypeToBrowserEventMap[def.event_type] === event.type &&\n                def.filters.every(function (filter) { return matchEventToFilter(event, filter); }));\n        });\n    });\n};\nexport var matchLabeledEventsToTriggers = function (labeledEvents, leToTriggerMap) {\n    var e_5, _a, e_6, _b;\n    var matchingTriggers = new Set();\n    try {\n        for (var labeledEvents_2 = __values(labeledEvents), labeledEvents_2_1 = labeledEvents_2.next(); !labeledEvents_2_1.done; labeledEvents_2_1 = labeledEvents_2.next()) {\n            var le = labeledEvents_2_1.value;\n            var triggers = leToTriggerMap.get(le.id);\n            if (triggers) {\n                try {\n                    for (var triggers_2 = (e_6 = void 0, __values(triggers)), triggers_2_1 = triggers_2.next(); !triggers_2_1.done; triggers_2_1 = triggers_2.next()) {\n                        var trigger = triggers_2_1.value;\n                        matchingTriggers.add(trigger);\n                    }\n                }\n                catch (e_6_1) { e_6 = { error: e_6_1 }; }\n                finally {\n                    try {\n                        if (triggers_2_1 && !triggers_2_1.done && (_b = triggers_2.return)) _b.call(triggers_2);\n                    }\n                    finally { if (e_6) throw e_6.error; }\n                }\n            }\n        }\n    }\n    catch (e_5_1) { e_5 = { error: e_5_1 }; }\n    finally {\n        try {\n            if (labeledEvents_2_1 && !labeledEvents_2_1.done && (_a = labeledEvents_2.return)) _a.call(labeledEvents_2);\n        }\n        finally { if (e_5) throw e_5.error; }\n    }\n    return Array.from(matchingTriggers);\n};\nvar TriggerEvaluator = /** @class */ (function () {\n    function TriggerEvaluator(groupedLabeledEvents, labeledEventToTriggerMap, options) {\n        this.groupedLabeledEvents = groupedLabeledEvents;\n        this.labeledEventToTriggerMap = labeledEventToTriggerMap;\n        this.options = options;\n    }\n    TriggerEvaluator.prototype.evaluate = function (event) {\n        var e_7, _a;\n        // If there is no pageActions, return the event as is\n        var pageActions = this.options.pageActions;\n        if (!pageActions) {\n            return event;\n        }\n        // Find matching labeled events\n        var matchingLabeledEvents = matchEventToLabeledEvents(event, Array.from(this.groupedLabeledEvents[event.type]).map(function (id) { return pageActions.labeledEvents[id]; }));\n        // Find matching conditions\n        var matchingTriggers = matchLabeledEventsToTriggers(matchingLabeledEvents, this.labeledEventToTriggerMap);\n        try {\n            for (var matchingTriggers_1 = __values(matchingTriggers), matchingTriggers_1_1 = matchingTriggers_1.next(); !matchingTriggers_1_1.done; matchingTriggers_1_1 = matchingTriggers_1.next()) {\n                var trigger = matchingTriggers_1_1.value;\n                executeActions(trigger.actions, event);\n            }\n        }\n        catch (e_7_1) { e_7 = { error: e_7_1 }; }\n        finally {\n            try {\n                if (matchingTriggers_1_1 && !matchingTriggers_1_1.done && (_a = matchingTriggers_1.return)) _a.call(matchingTriggers_1);\n            }\n            finally { if (e_7) throw e_7.error; }\n        }\n        return event;\n    };\n    TriggerEvaluator.prototype.update = function (groupedLabeledEvents, labeledEventToTriggerMap, options) {\n        this.groupedLabeledEvents = groupedLabeledEvents;\n        this.labeledEventToTriggerMap = labeledEventToTriggerMap;\n        this.options = options;\n    };\n    return TriggerEvaluator;\n}());\nexport { TriggerEvaluator };\nexport var createTriggerEvaluator = function (groupedLabeledEvents, labeledEventToTriggerMap, options) {\n    return new TriggerEvaluator(groupedLabeledEvents, labeledEventToTriggerMap, options);\n};\n//# sourceMappingURL=triggers.js.map","import { __assign, __awaiter, __generator, __read, __spreadArray, __values } from \"tslib\";\n/* eslint-disable no-restricted-globals */\nimport { DEFAULT_CSS_SELECTOR_ALLOWLIST, DEFAULT_ACTION_CLICK_ALLOWLIST, DEFAULT_DATA_ATTRIBUTE_PREFIX, } from '@amplitude/analytics-core';\nimport { createRemoteConfigFetch } from '@amplitude/analytics-remote-config';\nimport * as constants from './constants';\nimport { fromEvent, map, share } from 'rxjs';\nimport { addAdditionalEventProperties, createShouldTrackEvent, getEventProperties, } from './helpers';\nimport { WindowMessenger } from './libs/messenger';\nimport { trackClicks } from './autocapture/track-click';\nimport { trackChange } from './autocapture/track-change';\nimport { trackActionClick } from './autocapture/track-action-click';\nimport { createMutationObservable, createClickObservable } from './observables';\nimport { createLabeledEventToTriggerMap, createTriggerEvaluator, groupLabeledEventIdsByEventType, } from './pageActions/triggers';\nexport var ObservablesEnum;\n(function (ObservablesEnum) {\n    ObservablesEnum[\"ClickObservable\"] = \"clickObservable\";\n    ObservablesEnum[\"ChangeObservable\"] = \"changeObservable\";\n    // ErrorObservable = 'errorObservable',\n    ObservablesEnum[\"NavigateObservable\"] = \"navigateObservable\";\n    ObservablesEnum[\"MutationObservable\"] = \"mutationObservable\";\n})(ObservablesEnum || (ObservablesEnum = {}));\nexport var autocapturePlugin = function (options) {\n    var _a, _b, _c, _d, _e, _f, _g;\n    if (options === void 0) { options = {}; }\n    var _h = options.dataAttributePrefix, dataAttributePrefix = _h === void 0 ? DEFAULT_DATA_ATTRIBUTE_PREFIX : _h, _j = options.visualTaggingOptions, visualTaggingOptions = _j === void 0 ? {\n        enabled: true,\n        messenger: new WindowMessenger(),\n    } : _j;\n    options.cssSelectorAllowlist = (_a = options.cssSelectorAllowlist) !== null && _a !== void 0 ? _a : DEFAULT_CSS_SELECTOR_ALLOWLIST;\n    options.actionClickAllowlist = (_b = options.actionClickAllowlist) !== null && _b !== void 0 ? _b : DEFAULT_ACTION_CLICK_ALLOWLIST;\n    options.debounceTime = (_c = options.debounceTime) !== null && _c !== void 0 ? _c : 0; // TODO: update this when rage clicks are added to 1000ms\n    var name = constants.PLUGIN_NAME;\n    var type = 'enrichment';\n    var subscriptions = [];\n    // Create observables on events on the window\n    var createObservables = function () {\n        var _a;\n        // Create Observables from direct user events\n        var clickObservable = createClickObservable().pipe(map(function (click) {\n            return addAdditionalEventProperties(click, 'click', options.cssSelectorAllowlist, dataAttributePrefix);\n        }), share());\n        var changeObservable = fromEvent(document, 'change', { capture: true }).pipe(map(function (change) {\n            return addAdditionalEventProperties(change, 'change', options.cssSelectorAllowlist, dataAttributePrefix);\n        }), share());\n        // Create Observable from unhandled errors\n        // const errorObservable = fromEvent<ErrorEvent>(window, 'error').pipe(\n        //   map((error) => addAdditionalEventProperties(error, 'error')),\n        // );\n        // Create observable for URL changes\n        var navigateObservable;\n        /* istanbul ignore next */\n        if (window.navigation) {\n            navigateObservable = fromEvent(window.navigation, 'navigate').pipe(map(function (navigate) {\n                return addAdditionalEventProperties(navigate, 'navigate', options.cssSelectorAllowlist, dataAttributePrefix);\n            }), share());\n        }\n        // Track DOM Mutations using shared observable\n        var mutationObservable = createMutationObservable().pipe(map(function (mutation) {\n            return addAdditionalEventProperties(mutation, 'mutation', options.cssSelectorAllowlist, dataAttributePrefix);\n        }), share());\n        return _a = {},\n            _a[ObservablesEnum.ClickObservable] = clickObservable,\n            _a[ObservablesEnum.ChangeObservable] = changeObservable,\n            // [ObservablesEnum.ErrorObservable]: errorObservable,\n            _a[ObservablesEnum.NavigateObservable] = navigateObservable,\n            _a[ObservablesEnum.MutationObservable] = mutationObservable,\n            _a;\n    };\n    // Group labeled events by event type (eg. click, change)\n    var groupedLabeledEvents = groupLabeledEventIdsByEventType(Object.values((_e = (_d = options.pageActions) === null || _d === void 0 ? void 0 : _d.labeledEvents) !== null && _e !== void 0 ? _e : {}));\n    var labeledEventToTriggerMap = createLabeledEventToTriggerMap((_g = (_f = options.pageActions) === null || _f === void 0 ? void 0 : _f.triggers) !== null && _g !== void 0 ? _g : []);\n    // Evaluate triggers for the given event by running the actions associated with the matching triggers\n    var evaluateTriggers = createTriggerEvaluator(groupedLabeledEvents, labeledEventToTriggerMap, options);\n    // Function to recalculate internal variables when remote config is updated\n    var recomputePageActionsData = function (remotePageActions) {\n        var _a, _b;\n        if (remotePageActions) {\n            // Merge remote config with local options\n            options.pageActions = __assign(__assign({}, options.pageActions), remotePageActions);\n            // Recalculate internal variables\n            groupedLabeledEvents = groupLabeledEventIdsByEventType(Object.values((_a = options.pageActions.labeledEvents) !== null && _a !== void 0 ? _a : {}));\n            labeledEventToTriggerMap = createLabeledEventToTriggerMap((_b = options.pageActions.triggers) !== null && _b !== void 0 ? _b : []);\n            // Update evaluateTriggers function\n            evaluateTriggers.update(groupedLabeledEvents, labeledEventToTriggerMap, options);\n        }\n    };\n    var setup = function (config, amplitude) { return __awaiter(void 0, void 0, void 0, function () {\n        var shouldTrackEvent, shouldTrackActionClick, allObservables, clickTrackingSubscription, changeSubscription, actionClickSubscription, allowlist, actionClickAllowlist;\n        var _a, _b;\n        return __generator(this, function (_c) {\n            /* istanbul ignore if */\n            if (typeof document === 'undefined') {\n                return [2 /*return*/];\n            }\n            // Fetch remote config for pageActions in a non-blocking manner\n            if (config.fetchRemoteConfig) {\n                createRemoteConfigFetch({\n                    localConfig: config,\n                    configKeys: ['analyticsSDK.pageActions'],\n                })\n                    .then(function (remoteConfigFetch) { return __awaiter(void 0, void 0, void 0, function () {\n                    var remotePageActions, error_1;\n                    var _a;\n                    return __generator(this, function (_b) {\n                        switch (_b.label) {\n                            case 0:\n                                _b.trys.push([0, 2, , 3]);\n                                return [4 /*yield*/, remoteConfigFetch.getRemoteConfig('analyticsSDK', 'pageActions')];\n                            case 1:\n                                remotePageActions = _b.sent();\n                                recomputePageActionsData(remotePageActions);\n                                return [3 /*break*/, 3];\n                            case 2:\n                                error_1 = _b.sent();\n                                // Log error but don't fail the setup\n                                /* istanbul ignore next */\n                                (_a = config === null || config === void 0 ? void 0 : config.loggerProvider) === null || _a === void 0 ? void 0 : _a.error(\"Failed to fetch remote config: \".concat(String(error_1)));\n                                return [3 /*break*/, 3];\n                            case 3: return [2 /*return*/];\n                        }\n                    });\n                }); })\n                    .catch(function (error) {\n                    var _a;\n                    // Log error but don't fail the setup\n                    /* istanbul ignore next */\n                    (_a = config === null || config === void 0 ? void 0 : config.loggerProvider) === null || _a === void 0 ? void 0 : _a.error(\"Failed to create remote config fetch: \".concat(String(error)));\n                });\n            }\n            shouldTrackEvent = createShouldTrackEvent(options, options.cssSelectorAllowlist);\n            shouldTrackActionClick = createShouldTrackEvent(options, options.actionClickAllowlist);\n            allObservables = createObservables();\n            clickTrackingSubscription = trackClicks({\n                allObservables: allObservables,\n                options: options,\n                amplitude: amplitude,\n                shouldTrackEvent: shouldTrackEvent,\n                evaluateTriggers: evaluateTriggers.evaluate.bind(evaluateTriggers),\n            });\n            subscriptions.push(clickTrackingSubscription);\n            changeSubscription = trackChange({\n                allObservables: allObservables,\n                getEventProperties: function () {\n                    var args = [];\n                    for (var _i = 0; _i < arguments.length; _i++) {\n                        args[_i] = arguments[_i];\n                    }\n                    return getEventProperties.apply(void 0, __spreadArray(__spreadArray([], __read(args), false), [dataAttributePrefix], false));\n                },\n                amplitude: amplitude,\n                shouldTrackEvent: shouldTrackEvent,\n                evaluateTriggers: evaluateTriggers.evaluate.bind(evaluateTriggers),\n            });\n            subscriptions.push(changeSubscription);\n            actionClickSubscription = trackActionClick({\n                allObservables: allObservables,\n                options: options,\n                getEventProperties: function () {\n                    var args = [];\n                    for (var _i = 0; _i < arguments.length; _i++) {\n                        args[_i] = arguments[_i];\n                    }\n                    return getEventProperties.apply(void 0, __spreadArray(__spreadArray([], __read(args), false), [dataAttributePrefix], false));\n                },\n                amplitude: amplitude,\n                shouldTrackEvent: shouldTrackEvent,\n                shouldTrackActionClick: shouldTrackActionClick,\n            });\n            subscriptions.push(actionClickSubscription);\n            /* istanbul ignore next */\n            (_a = config === null || config === void 0 ? void 0 : config.loggerProvider) === null || _a === void 0 ? void 0 : _a.log(\"\".concat(name, \" has been successfully added.\"));\n            // Setup visual tagging selector\n            if (window.opener && visualTaggingOptions.enabled) {\n                allowlist = options.cssSelectorAllowlist;\n                actionClickAllowlist = options.actionClickAllowlist;\n                /* istanbul ignore next */\n                (_b = visualTaggingOptions.messenger) === null || _b === void 0 ? void 0 : _b.setup(__assign(__assign({ logger: config === null || config === void 0 ? void 0 : config.loggerProvider }, ((config === null || config === void 0 ? void 0 : config.serverZone) && { endpoint: constants.AMPLITUDE_ORIGINS_MAP[config.serverZone] })), { isElementSelectable: createShouldTrackEvent(options, __spreadArray(__spreadArray([], __read(allowlist), false), __read(actionClickAllowlist), false)), cssSelectorAllowlist: allowlist, actionClickAllowlist: actionClickAllowlist }));\n            }\n            return [2 /*return*/];\n        });\n    }); };\n    var execute = function (event) { return __awaiter(void 0, void 0, void 0, function () {\n        return __generator(this, function (_a) {\n            return [2 /*return*/, event];\n        });\n    }); };\n    var teardown = function () { return __awaiter(void 0, void 0, void 0, function () {\n        var subscriptions_1, subscriptions_1_1, subscription;\n        var e_1, _a;\n        return __generator(this, function (_b) {\n            try {\n                for (subscriptions_1 = __values(subscriptions), subscriptions_1_1 = subscriptions_1.next(); !subscriptions_1_1.done; subscriptions_1_1 = subscriptions_1.next()) {\n                    subscription = subscriptions_1_1.value;\n                    subscription.unsubscribe();\n                }\n            }\n            catch (e_1_1) { e_1 = { error: e_1_1 }; }\n            finally {\n                try {\n                    if (subscriptions_1_1 && !subscriptions_1_1.done && (_a = subscriptions_1.return)) _a.call(subscriptions_1);\n                }\n                finally { if (e_1) throw e_1.error; }\n            }\n            return [2 /*return*/];\n        });\n    }); };\n    return {\n        name: name,\n        type: type,\n        setup: setup,\n        execute: execute,\n        teardown: teardown,\n    };\n};\n//# sourceMappingURL=autocapture-plugin.js.map","import { __assign, __read, __spreadArray } from \"tslib\";\nimport { filter, map, merge, take, mergeMap, race, Observable, throttleTime } from 'rxjs';\nimport { filterOutNonTrackableEvents } from '../helpers';\nimport { AMPLITUDE_ELEMENT_DEAD_CLICKED_EVENT } from '../constants';\nvar DEAD_CLICK_TIMEOUT = 3000; // 3 seconds to wait for an activity to happen\n// allow override of dead click config for testing only\nexport function _overrideDeadClickConfig(deadClickTimeout) {\n    DEAD_CLICK_TIMEOUT = deadClickTimeout;\n}\nexport function trackDeadClick(_a) {\n    var amplitude = _a.amplitude, allObservables = _a.allObservables, getEventProperties = _a.getEventProperties, shouldTrackDeadClick = _a.shouldTrackDeadClick;\n    var clickObservable = allObservables.clickObservable, mutationObservable = allObservables.mutationObservable, navigateObservable = allObservables.navigateObservable;\n    var filteredClickObservable = clickObservable.pipe(filter(filterOutNonTrackableEvents), filter(function (clickEvent) {\n        // Only track change on elements that should be tracked\n        return shouldTrackDeadClick('click', clickEvent.closestTrackedAncestor);\n    }));\n    var changeObservables = [mutationObservable];\n    if (navigateObservable) {\n        changeObservables.push(navigateObservable);\n    }\n    var mutationOrNavigate = merge.apply(void 0, __spreadArray([], __read(changeObservables), false));\n    var actionClicks = filteredClickObservable.pipe(mergeMap(function (click) {\n        // Create a timer that emits after 500ms\n        var timeoutId;\n        var timer = new Observable(function (subscriber) {\n            timeoutId = setTimeout(function () { return subscriber.next(click); }, DEAD_CLICK_TIMEOUT);\n            return function () {\n                clearTimeout(timeoutId);\n            };\n        });\n        // Race between the timer and any mutations/navigation\n        // if the timer wins, the click is dead so we emit it\n        return race(timer, mutationOrNavigate.pipe(take(1), map(function () { return null; }))).pipe(filter(function (value) { return value !== null; }));\n    }), \n    // Only allow one dead click event every 3 seconds\n    throttleTime(DEAD_CLICK_TIMEOUT));\n    return actionClicks.subscribe(function (actionClick) {\n        var deadClickEvent = {\n            '[Amplitude] X': actionClick.event.clientX,\n            '[Amplitude] Y': actionClick.event.clientY,\n        };\n        amplitude.track(AMPLITUDE_ELEMENT_DEAD_CLICKED_EVENT, __assign(__assign({}, getEventProperties('click', actionClick.closestTrackedAncestor)), deadClickEvent), { time: actionClick.timestamp });\n    });\n}\n//# sourceMappingURL=track-dead-click.js.map","import { __assign } from \"tslib\";\nimport { filter, map } from 'rxjs';\nimport { filterOutNonTrackableEvents } from '../helpers';\nimport { AMPLITUDE_ELEMENT_RAGE_CLICKED_EVENT } from '../constants';\nimport { DEFAULT_RAGE_CLICK_THRESHOLD, DEFAULT_RAGE_CLICK_WINDOW_MS } from '@amplitude/analytics-core';\nvar RAGE_CLICK_THRESHOLD = DEFAULT_RAGE_CLICK_THRESHOLD;\nvar RAGE_CLICK_WINDOW_MS = DEFAULT_RAGE_CLICK_WINDOW_MS;\nexport function trackRageClicks(_a) {\n    var amplitude = _a.amplitude, allObservables = _a.allObservables, shouldTrackRageClick = _a.shouldTrackRageClick;\n    var clickObservable = allObservables.clickObservable;\n    // Keep track of all clicks within the sliding window\n    var clickWindow = [];\n    return clickObservable\n        .pipe(filter(filterOutNonTrackableEvents), filter(function (click) {\n        return shouldTrackRageClick('click', click.closestTrackedAncestor);\n    }), map(function (click) {\n        var now = click.timestamp;\n        // if the current click isn't on the same element as the most recent click,\n        // clear the sliding window and start over\n        if (clickWindow.length > 0 &&\n            clickWindow[clickWindow.length - 1].closestTrackedAncestor !== click.closestTrackedAncestor) {\n            clickWindow.splice(0, clickWindow.length);\n        }\n        // remove past clicks that are outside the sliding window\n        var clickPtr = 0;\n        for (; clickPtr < clickWindow.length; clickPtr++) {\n            if (now - clickWindow[clickPtr].timestamp < RAGE_CLICK_WINDOW_MS) {\n                break;\n            }\n        }\n        clickWindow.splice(0, clickPtr);\n        // add the current click to the window\n        clickWindow.push(click);\n        // if there's not enough clicks to be a rage click, return null\n        if (clickWindow.length < RAGE_CLICK_THRESHOLD) {\n            return null;\n        }\n        // if we've made it here, we have enough trailing clicks on the same element\n        // for it to be a rage click\n        var firstClick = clickWindow[0];\n        var lastClick = clickWindow[clickWindow.length - 1];\n        var rageClickEvent = __assign({ '[Amplitude] Begin Time': new Date(firstClick.timestamp).toISOString(), '[Amplitude] End Time': new Date(lastClick.timestamp).toISOString(), '[Amplitude] Duration': lastClick.timestamp - firstClick.timestamp, '[Amplitude] Clicks': clickWindow.map(function (click) { return ({\n                X: click.event.clientX,\n                Y: click.event.clientY,\n                Time: click.timestamp,\n            }); }), '[Amplitude] Click Count': clickWindow.length }, firstClick.targetElementProperties);\n        // restart the sliding window\n        clickWindow.splice(0, clickWindow.length);\n        return { rageClickEvent: rageClickEvent, time: firstClick.timestamp };\n    }), filter(function (result) { return result !== null; }))\n        .subscribe(function (data) {\n        /* istanbul ignore if */\n        if (data === null) {\n            return;\n        }\n        amplitude.track(AMPLITUDE_ELEMENT_RAGE_CLICKED_EVENT, data.rageClickEvent, { time: data.time });\n    });\n}\n//# sourceMappingURL=track-rage-click.js.map","import { __awaiter, __generator, __read, __spreadArray, __values } from \"tslib\";\n/* eslint-disable no-restricted-globals */\nimport { DEFAULT_DATA_ATTRIBUTE_PREFIX, DEFAULT_RAGE_CLICK_ALLOWLIST, DEFAULT_DEAD_CLICK_ALLOWLIST, } from '@amplitude/analytics-core';\nimport * as constants from './constants';\nimport { fromEvent, map, Observable, share } from 'rxjs';\nimport { addAdditionalEventProperties, createShouldTrackEvent, getEventProperties, } from './helpers';\nimport { trackDeadClick } from './autocapture/track-dead-click';\nimport { trackRageClicks } from './autocapture/track-rage-click';\nimport { ObservablesEnum } from './autocapture-plugin';\nimport { createClickObservable, createMutationObservable } from './observables';\nexport var frustrationPlugin = function (options) {\n    var _a, _b, _c, _d, _e;\n    if (options === void 0) { options = {}; }\n    var name = constants.FRUSTRATION_PLUGIN_NAME;\n    var type = 'enrichment';\n    var subscriptions = [];\n    var rageCssSelectors = (_b = (_a = options.rageClicks) === null || _a === void 0 ? void 0 : _a.cssSelectorAllowlist) !== null && _b !== void 0 ? _b : DEFAULT_RAGE_CLICK_ALLOWLIST;\n    var deadCssSelectors = (_d = (_c = options.deadClicks) === null || _c === void 0 ? void 0 : _c.cssSelectorAllowlist) !== null && _d !== void 0 ? _d : DEFAULT_DEAD_CLICK_ALLOWLIST;\n    var dataAttributePrefix = (_e = options.dataAttributePrefix) !== null && _e !== void 0 ? _e : DEFAULT_DATA_ATTRIBUTE_PREFIX;\n    // combine the two selector lists to determine which clicked elements should be filtered\n    var combinedCssSelectors = __spreadArray([], __read(new Set(__spreadArray(__spreadArray([], __read(rageCssSelectors), false), __read(deadCssSelectors), false))), false);\n    // Create observables on events on the window\n    var createObservables = function () {\n        var _a;\n        // Create Observables from direct user events\n        var clickObservable = createClickObservable('pointerdown').pipe(map(function (click) {\n            return addAdditionalEventProperties(click, 'click', combinedCssSelectors, dataAttributePrefix, true);\n        }), share());\n        // Create observable for URL changes\n        var navigateObservable;\n        /* istanbul ignore next */\n        if (window.navigation) {\n            navigateObservable = fromEvent(window.navigation, 'navigate').pipe(map(function (navigate) {\n                return addAdditionalEventProperties(navigate, 'navigate', combinedCssSelectors, dataAttributePrefix);\n            }), share());\n        }\n        // Track DOM Mutations\n        var enrichedMutationObservable = createMutationObservable().pipe(map(function (mutation) { return addAdditionalEventProperties(mutation, 'mutation', combinedCssSelectors, dataAttributePrefix); }), share());\n        return _a = {},\n            _a[ObservablesEnum.ClickObservable] = clickObservable,\n            _a[ObservablesEnum.ChangeObservable] = new Observable(),\n            _a[ObservablesEnum.NavigateObservable] = navigateObservable,\n            _a[ObservablesEnum.MutationObservable] = enrichedMutationObservable,\n            _a;\n    };\n    var setup = function (config, amplitude) { return __awaiter(void 0, void 0, void 0, function () {\n        var shouldTrackRageClick, shouldTrackDeadClick, allObservables, rageClickSubscription, deadClickSubscription;\n        var _a;\n        return __generator(this, function (_b) {\n            /* istanbul ignore if */\n            if (typeof document === 'undefined') {\n                return [2 /*return*/];\n            }\n            shouldTrackRageClick = createShouldTrackEvent(options, rageCssSelectors);\n            shouldTrackDeadClick = createShouldTrackEvent(options, deadCssSelectors);\n            allObservables = createObservables();\n            rageClickSubscription = trackRageClicks({\n                allObservables: allObservables,\n                amplitude: amplitude,\n                shouldTrackRageClick: shouldTrackRageClick,\n            });\n            subscriptions.push(rageClickSubscription);\n            deadClickSubscription = trackDeadClick({\n                amplitude: amplitude,\n                allObservables: allObservables,\n                getEventProperties: function (actionType, element) { return getEventProperties(actionType, element, dataAttributePrefix); },\n                shouldTrackDeadClick: shouldTrackDeadClick,\n            });\n            subscriptions.push(deadClickSubscription);\n            /* istanbul ignore next */\n            (_a = config === null || config === void 0 ? void 0 : config.loggerProvider) === null || _a === void 0 ? void 0 : _a.log(\"\".concat(name, \" has been successfully added.\"));\n            return [2 /*return*/];\n        });\n    }); };\n    var execute = function (event) { return __awaiter(void 0, void 0, void 0, function () {\n        return __generator(this, function (_a) {\n            return [2 /*return*/, event];\n        });\n    }); };\n    var teardown = function () { return __awaiter(void 0, void 0, void 0, function () {\n        var subscriptions_1, subscriptions_1_1, subscription;\n        var e_1, _a;\n        return __generator(this, function (_b) {\n            try {\n                for (subscriptions_1 = __values(subscriptions), subscriptions_1_1 = subscriptions_1.next(); !subscriptions_1_1.done; subscriptions_1_1 = subscriptions_1.next()) {\n                    subscription = subscriptions_1_1.value;\n                    subscription.unsubscribe();\n                }\n            }\n            catch (e_1_1) { e_1 = { error: e_1_1 }; }\n            finally {\n                try {\n                    if (subscriptions_1_1 && !subscriptions_1_1.done && (_a = subscriptions_1.return)) _a.call(subscriptions_1);\n                }\n                finally { if (e_1) throw e_1.error; }\n            }\n            return [2 /*return*/];\n        });\n    }); };\n    return {\n        name: name,\n        type: type,\n        setup: setup,\n        execute: execute,\n        teardown: teardown,\n    };\n};\n//# sourceMappingURL=frustration-plugin.js.map","export var PLUGIN_NAME = '@amplitude/plugin-network-capture-browser';\nexport var AMPLITUDE_NETWORK_REQUEST_EVENT = '[Amplitude] Network Request';\n//# sourceMappingURL=constants.js.map","import { __read, __spreadArray, __values } from \"tslib\";\nimport { getGlobalScope, } from '@amplitude/analytics-core';\nimport { filter } from 'rxjs';\nimport { AMPLITUDE_NETWORK_REQUEST_EVENT } from './constants';\nvar DEFAULT_STATUS_CODE_RANGE = '500-599';\nfunction wildcardMatch(str, pattern) {\n    // Escape all regex special characters except for *\n    var escapedPattern = pattern.replace(/[-[\\]{}()+?.,\\\\^$|#\\s]/g, '\\\\$&');\n    // Replace * with .*\n    var regexPattern = '^' + escapedPattern.replace(/\\*/g, '.*') + '$';\n    var regex = new RegExp(regexPattern);\n    return regex.test(str);\n}\nfunction isStatusCodeInRange(statusCode, range) {\n    var e_1, _a;\n    var ranges = range.split(',');\n    try {\n        for (var ranges_1 = __values(ranges), ranges_1_1 = ranges_1.next(); !ranges_1_1.done; ranges_1_1 = ranges_1.next()) {\n            var r = ranges_1_1.value;\n            var _b = __read(r.split('-').map(Number), 2), start = _b[0], end = _b[1];\n            if (statusCode === start && end === undefined) {\n                return true;\n            }\n            if (statusCode >= start && statusCode <= end) {\n                return true;\n            }\n        }\n    }\n    catch (e_1_1) { e_1 = { error: e_1_1 }; }\n    finally {\n        try {\n            if (ranges_1_1 && !ranges_1_1.done && (_a = ranges_1.return)) _a.call(ranges_1);\n        }\n        finally { if (e_1) throw e_1.error; }\n    }\n    return false;\n}\nfunction isCaptureRuleMatch(rule, hostname, status) {\n    // check if the host is in the allowed hosts\n    if (rule.hosts && !rule.hosts.find(function (host) { return wildcardMatch(hostname, host); })) {\n        return;\n    }\n    // check if the status code is in the allowed range\n    if (status || status === 0) {\n        var statusCodeRange = rule.statusCodeRange || DEFAULT_STATUS_CODE_RANGE;\n        if (!isStatusCodeInRange(status, statusCodeRange)) {\n            return false;\n        }\n    }\n    return true;\n}\nfunction parseUrl(url) {\n    var _a;\n    if (!url) {\n        return;\n    }\n    try {\n        /* istanbul ignore next */\n        var currentHref = (_a = getGlobalScope()) === null || _a === void 0 ? void 0 : _a.location.href;\n        var urlObj = new URL(url, currentHref);\n        var query = urlObj.searchParams.toString();\n        var fragment = urlObj.hash.replace('#', '');\n        var href = urlObj.href;\n        var host = urlObj.host;\n        urlObj.hash = '';\n        urlObj.search = '';\n        var hrefWithoutQueryOrHash = urlObj.href;\n        return { query: query, fragment: fragment, href: href, hrefWithoutQueryOrHash: hrefWithoutQueryOrHash, host: host };\n    }\n    catch (e) {\n        /* istanbul ignore next */\n        return;\n    }\n}\nfunction isAmplitudeNetworkRequestEvent(host, requestWrapper) {\n    if (host.includes('amplitude.com')) {\n        try {\n            var body = requestWrapper.body;\n            if (typeof body !== 'string') {\n                return false;\n            }\n            var bodyObj = JSON.parse(body);\n            var events = bodyObj.events;\n            /* eslint-disable-next-line @typescript-eslint/no-unsafe-member-access */\n            if (events.find(function (event) { return event.event_type === AMPLITUDE_NETWORK_REQUEST_EVENT; })) {\n                return true;\n            }\n        }\n        catch (e) {\n            // do nothing\n        }\n    }\n    return false;\n}\nexport function shouldTrackNetworkEvent(networkEvent, options) {\n    var _a;\n    if (options === void 0) { options = {}; }\n    var urlObj = parseUrl(networkEvent.url);\n    /* istanbul ignore if */\n    if (!urlObj) {\n        // if the URL failed to parse, do not track the event\n        // this is a probably impossible case that would only happen if the URL is malformed\n        /* istanbul ignore next */\n        return false;\n    }\n    var host = urlObj.host;\n    // false if is amplitude request and not configured to track amplitude requests\n    if (options.ignoreAmplitudeRequests !== false &&\n        (wildcardMatch(host, '*.amplitude.com') || wildcardMatch(host, 'amplitude.com'))) {\n        return false;\n    }\n    // false if the host is in the ignore list\n    if ((_a = options.ignoreHosts) === null || _a === void 0 ? void 0 : _a.find(function (ignoreHost) { return wildcardMatch(host, ignoreHost); })) {\n        return false;\n    }\n    // false if the status code is not 500-599 and there are no captureRules\n    if (!options.captureRules &&\n        networkEvent.status !== undefined &&\n        !isStatusCodeInRange(networkEvent.status, DEFAULT_STATUS_CODE_RANGE)) {\n        return false;\n    }\n    if (options.captureRules) {\n        // find the first capture rule, in reverse-order,\n        // that is a match (true) or a miss (false)\n        var isMatch_1;\n        __spreadArray([], __read(options.captureRules), false).reverse().find(function (rule) {\n            isMatch_1 = isCaptureRuleMatch(rule, host, networkEvent.status);\n            return isMatch_1 !== undefined;\n        });\n        // if we found a miss (false) or no match (undefined),\n        // then do not track the event\n        if (!isMatch_1) {\n            return false;\n        }\n    }\n    // skip Amplitude network requests to \"[Amplitude] Network Request\" to avoid infinite loop\n    if (networkEvent.requestWrapper && isAmplitudeNetworkRequestEvent(host, networkEvent.requestWrapper)) {\n        return false;\n    }\n    return true;\n}\nexport function trackNetworkEvents(_a) {\n    var allObservables = _a.allObservables, networkTrackingOptions = _a.networkTrackingOptions, amplitude = _a.amplitude;\n    var networkObservable = allObservables.networkObservable;\n    var filteredNetworkObservable = networkObservable.pipe(filter(function (event) {\n        // Only track network events that should be tracked,\n        return shouldTrackNetworkEvent(event.event, networkTrackingOptions);\n    }));\n    return filteredNetworkObservable.subscribe(function (networkEvent) {\n        var _a;\n        var _b, _c;\n        var request = networkEvent.event;\n        // convert to NetworkAnalyticsEvent\n        var urlObj = parseUrl(request.url);\n        /* istanbul ignore if */\n        if (!urlObj) {\n            // if the URL failed to parse, do not track the event\n            // this is a very unlikely case, because URL() shouldn't throw an exception\n            // when the URL is a valid URL\n            /* istanbul ignore next */\n            return;\n        }\n        var responseBodySize = (_b = request.responseWrapper) === null || _b === void 0 ? void 0 : _b.bodySize;\n        /* istanbul ignore next */\n        var requestBodySize = (_c = request.requestWrapper) === null || _c === void 0 ? void 0 : _c.bodySize;\n        var networkAnalyticsEvent = (_a = {},\n            _a['[Amplitude] URL'] = urlObj.hrefWithoutQueryOrHash,\n            _a['[Amplitude] URL Query'] = urlObj.query,\n            _a['[Amplitude] URL Fragment'] = urlObj.fragment,\n            _a['[Amplitude] Request Method'] = request.method,\n            _a['[Amplitude] Status Code'] = request.status,\n            _a['[Amplitude] Start Time'] = request.startTime,\n            _a['[Amplitude] Completion Time'] = request.endTime,\n            _a['[Amplitude] Duration'] = request.duration,\n            _a['[Amplitude] Request Body Size'] = requestBodySize,\n            _a['[Amplitude] Response Body Size'] = responseBodySize,\n            _a['[Amplitude] Request Type'] = request.type,\n            _a);\n        /* istanbul ignore next */\n        amplitude === null || amplitude === void 0 ? void 0 : amplitude.track(AMPLITUDE_NETWORK_REQUEST_EVENT, networkAnalyticsEvent);\n    });\n}\n//# sourceMappingURL=track-network-event.js.map","import { __awaiter, __generator, __values } from \"tslib\";\n/* eslint-disable no-restricted-globals */\nimport { networkObserver, NetworkEventCallback, } from '@amplitude/analytics-core';\nimport * as constants from './constants';\nimport { Observable } from 'rxjs';\nimport { trackNetworkEvents } from './track-network-event';\nexport var ObservablesEnum;\n(function (ObservablesEnum) {\n    ObservablesEnum[\"NetworkObservable\"] = \"networkObservable\";\n})(ObservablesEnum || (ObservablesEnum = {}));\nexport var networkCapturePlugin = function (options) {\n    if (options === void 0) { options = {}; }\n    var name = constants.PLUGIN_NAME;\n    var type = 'enrichment';\n    var logger;\n    var subscriptions = [];\n    var addAdditionalEventProperties = function (event, type) {\n        var baseEvent = {\n            event: event,\n            timestamp: Date.now(),\n            type: type,\n        };\n        return baseEvent;\n    };\n    // Create observables on events on the window\n    var createObservables = function () {\n        var _a;\n        var networkObservable = new Observable(function (observer) {\n            var callback = new NetworkEventCallback(function (event) {\n                var eventWithProperties = addAdditionalEventProperties(event, 'network');\n                observer.next(eventWithProperties);\n            });\n            networkObserver.subscribe(callback, logger);\n            return function () {\n                networkObserver.unsubscribe(callback);\n            };\n        });\n        return _a = {},\n            _a[ObservablesEnum.NetworkObservable] = networkObservable,\n            _a;\n    };\n    var setup = function (config, amplitude) { return __awaiter(void 0, void 0, void 0, function () {\n        var allObservables, networkRequestSubscription;\n        return __generator(this, function (_a) {\n            /* istanbul ignore if */\n            if (typeof document === 'undefined') {\n                return [2 /*return*/];\n            }\n            allObservables = createObservables();\n            networkRequestSubscription = trackNetworkEvents({\n                allObservables: allObservables,\n                networkTrackingOptions: options,\n                amplitude: amplitude,\n            });\n            subscriptions.push(networkRequestSubscription);\n            /* istanbul ignore next */\n            logger = config === null || config === void 0 ? void 0 : config.loggerProvider;\n            /* istanbul ignore next */\n            logger === null || logger === void 0 ? void 0 : logger.log(\"\".concat(name, \" has been successfully added.\"));\n            return [2 /*return*/];\n        });\n    }); };\n    /* istanbul ignore next */\n    var execute = function (event) { return __awaiter(void 0, void 0, void 0, function () {\n        return __generator(this, function (_a) {\n            return [2 /*return*/, event];\n        });\n    }); };\n    var teardown = function () { return __awaiter(void 0, void 0, void 0, function () {\n        var subscriptions_1, subscriptions_1_1, subscription;\n        var e_1, _a;\n        return __generator(this, function (_b) {\n            try {\n                for (subscriptions_1 = __values(subscriptions), subscriptions_1_1 = subscriptions_1.next(); !subscriptions_1_1.done; subscriptions_1_1 = subscriptions_1.next()) {\n                    subscription = subscriptions_1_1.value;\n                    subscription.unsubscribe();\n                }\n            }\n            catch (e_1_1) { e_1 = { error: e_1_1 }; }\n            finally {\n                try {\n                    if (subscriptions_1_1 && !subscriptions_1_1.done && (_a = subscriptions_1.return)) _a.call(subscriptions_1);\n                }\n                finally { if (e_1) throw e_1.error; }\n            }\n            return [2 /*return*/];\n        });\n    }); };\n    return {\n        name: name,\n        type: type,\n        setup: setup,\n        execute: execute,\n        teardown: teardown,\n    };\n};\n//# sourceMappingURL=network-capture-plugin.js.map","export var PLUGIN_NAME = 'web-vitals-browser';\nexport var WEB_VITALS_EVENT_NAME = '[Amplitude] Web Vitals';\n//# sourceMappingURL=constants.js.map","let e=-1;const t=t=>{addEventListener(\"pageshow\",(n=>{n.persisted&&(e=n.timeStamp,t(n))}),!0)},n=(e,t,n,i)=>{let s,o;return r=>{t.value>=0&&(r||i)&&(o=t.value-(s??0),(o||void 0===s)&&(s=t.value,t.delta=o,t.rating=((e,t)=>e>t[1]?\"poor\":e>t[0]?\"needs-improvement\":\"good\")(t.value,n),e(t)))}},i=e=>{requestAnimationFrame((()=>requestAnimationFrame((()=>e()))))},s=()=>{const e=performance.getEntriesByType(\"navigation\")[0];if(e&&e.responseStart>0&&e.responseStart<performance.now())return e},o=()=>{const e=s();return e?.activationStart??0},r=(t,n=-1)=>{const i=s();let r=\"navigate\";e>=0?r=\"back-forward-cache\":i&&(document.prerendering||o()>0?r=\"prerender\":document.wasDiscarded?r=\"restore\":i.type&&(r=i.type.replace(/_/g,\"-\")));return{name:t,value:n,rating:\"good\",delta:0,entries:[],id:`v5-${Date.now()}-${Math.floor(8999999999999*Math.random())+1e12}`,navigationType:r}},c=new WeakMap;function a(e,t){return c.get(e)||c.set(e,new t),c.get(e)}class d{t;i=0;o=[];h(e){if(e.hadRecentInput)return;const t=this.o[0],n=this.o.at(-1);this.i&&t&&n&&e.startTime-n.startTime<1e3&&e.startTime-t.startTime<5e3?(this.i+=e.value,this.o.push(e)):(this.i=e.value,this.o=[e]),this.t?.(e)}}const h=(e,t,n={})=>{try{if(PerformanceObserver.supportedEntryTypes.includes(e)){const i=new PerformanceObserver((e=>{Promise.resolve().then((()=>{t(e.getEntries())}))}));return i.observe({type:e,buffered:!0,...n}),i}}catch{}},f=e=>{let t=!1;return()=>{t||(e(),t=!0)}};let u=-1;const l=new Set,m=()=>\"hidden\"!==document.visibilityState||document.prerendering?1/0:0,p=e=>{if(\"hidden\"===document.visibilityState){if(\"visibilitychange\"===e.type)for(const e of l)e();isFinite(u)||(u=\"visibilitychange\"===e.type?e.timeStamp:0,removeEventListener(\"prerenderingchange\",p,!0))}},v=()=>{if(u<0){const e=o(),n=document.prerendering?void 0:globalThis.performance.getEntriesByType(\"visibility-state\").filter((t=>\"hidden\"===t.name&&t.startTime>e))[0]?.startTime;u=n??m(),addEventListener(\"visibilitychange\",p,!0),addEventListener(\"prerenderingchange\",p,!0),t((()=>{setTimeout((()=>{u=m()}))}))}return{get firstHiddenTime(){return u},onHidden(e){l.add(e)}}},g=e=>{document.prerendering?addEventListener(\"prerenderingchange\",(()=>e()),!0):e()},y=[1800,3e3],E=(e,s={})=>{g((()=>{const c=v();let a,d=r(\"FCP\");const f=h(\"paint\",(e=>{for(const t of e)\"first-contentful-paint\"===t.name&&(f.disconnect(),t.startTime<c.firstHiddenTime&&(d.value=Math.max(t.startTime-o(),0),d.entries.push(t),a(!0)))}));f&&(a=n(e,d,y,s.reportAllChanges),t((t=>{d=r(\"FCP\"),a=n(e,d,y,s.reportAllChanges),i((()=>{d.value=performance.now()-t.timeStamp,a(!0)}))})))}))},b=[.1,.25],L=(e,s={})=>{const o=v();E(f((()=>{let c,f=r(\"CLS\",0);const u=a(s,d),l=e=>{for(const t of e)u.h(t);u.i>f.value&&(f.value=u.i,f.entries=u.o,c())},m=h(\"layout-shift\",l);m&&(c=n(e,f,b,s.reportAllChanges),o.onHidden((()=>{l(m.takeRecords()),c(!0)})),t((()=>{u.i=0,f=r(\"CLS\",0),c=n(e,f,b,s.reportAllChanges),i((()=>c()))})),setTimeout(c))})))};let P=0,T=1/0,_=0;const M=e=>{for(const t of e)t.interactionId&&(T=Math.min(T,t.interactionId),_=Math.max(_,t.interactionId),P=_?(_-T)/7+1:0)};let w;const C=()=>w?P:performance.interactionCount??0,I=()=>{\"interactionCount\"in performance||w||(w=h(\"event\",M,{type:\"event\",buffered:!0,durationThreshold:0}))};let F=0;class k{u=[];l=new Map;m;p;v(){F=C(),this.u.length=0,this.l.clear()}L(){const e=Math.min(this.u.length-1,Math.floor((C()-F)/50));return this.u[e]}h(e){if(this.m?.(e),!e.interactionId&&\"first-input\"!==e.entryType)return;const t=this.u.at(-1);let n=this.l.get(e.interactionId);if(n||this.u.length<10||e.duration>t.P){if(n?e.duration>n.P?(n.entries=[e],n.P=e.duration):e.duration===n.P&&e.startTime===n.entries[0].startTime&&n.entries.push(e):(n={id:e.interactionId,entries:[e],P:e.duration},this.l.set(n.id,n),this.u.push(n)),this.u.sort(((e,t)=>t.P-e.P)),this.u.length>10){const e=this.u.splice(10);for(const t of e)this.l.delete(t.id)}this.p?.(n)}}}const A=e=>{const t=globalThis.requestIdleCallback||setTimeout;\"hidden\"===document.visibilityState?e():(e=f(e),addEventListener(\"visibilitychange\",e,{once:!0,capture:!0}),t((()=>{e(),removeEventListener(\"visibilitychange\",e,{capture:!0})})))},B=[200,500],S=(e,i={})=>{if(!globalThis.PerformanceEventTiming||!(\"interactionId\"in PerformanceEventTiming.prototype))return;const s=v();g((()=>{I();let o,c=r(\"INP\");const d=a(i,k),f=e=>{A((()=>{for(const t of e)d.h(t);const t=d.L();t&&t.P!==c.value&&(c.value=t.P,c.entries=t.entries,o())}))},u=h(\"event\",f,{durationThreshold:i.durationThreshold??40});o=n(e,c,B,i.reportAllChanges),u&&(u.observe({type:\"first-input\",buffered:!0}),s.onHidden((()=>{f(u.takeRecords()),o(!0)})),t((()=>{d.v(),c=r(\"INP\"),o=n(e,c,B,i.reportAllChanges)})))}))};class N{m;h(e){this.m?.(e)}}const q=[2500,4e3],x=(e,s={})=>{g((()=>{const c=v();let d,u=r(\"LCP\");const l=a(s,N),m=e=>{s.reportAllChanges||(e=e.slice(-1));for(const t of e)l.h(t),t.startTime<c.firstHiddenTime&&(u.value=Math.max(t.startTime-o(),0),u.entries=[t],d())},p=h(\"largest-contentful-paint\",m);if(p){d=n(e,u,q,s.reportAllChanges);const o=f((()=>{m(p.takeRecords()),p.disconnect(),d(!0)})),c=e=>{e.isTrusted&&(A(o),removeEventListener(e.type,c,{capture:!0}))};for(const e of[\"keydown\",\"click\",\"visibilitychange\"])addEventListener(e,c,{capture:!0});t((t=>{u=r(\"LCP\"),d=n(e,u,q,s.reportAllChanges),i((()=>{u.value=performance.now()-t.timeStamp,d(!0)}))}))}}))},H=[800,1800],O=e=>{document.prerendering?g((()=>O(e))):\"complete\"!==document.readyState?addEventListener(\"load\",(()=>O(e)),!0):setTimeout(e)},$=(e,i={})=>{let c=r(\"TTFB\"),a=n(e,c,H,i.reportAllChanges);O((()=>{const d=s();d&&(c.value=Math.max(d.responseStart-o(),0),c.entries=[d],a(!0),t((()=>{c=r(\"TTFB\",0),a=n(e,c,H,i.reportAllChanges),a(!0)})))}))};export{b as CLSThresholds,y as FCPThresholds,B as INPThresholds,q as LCPThresholds,H as TTFBThresholds,L as onCLS,E as onFCP,S as onINP,x as onLCP,$ as onTTFB};\n","import { __awaiter, __generator } from \"tslib\";\n/* eslint-disable no-restricted-globals */\nimport { getGlobalScope } from '@amplitude/analytics-core';\nimport { PLUGIN_NAME, WEB_VITALS_EVENT_NAME } from './constants';\nimport { onLCP, onINP, onCLS, onFCP, onTTFB } from 'web-vitals';\nfunction getMetricStartTime(metric) {\n    var _a;\n    /* istanbul ignore next */\n    var startTime = ((_a = metric.entries[0]) === null || _a === void 0 ? void 0 : _a.startTime) || 0;\n    return performance.timeOrigin + startTime;\n}\nfunction processMetric(metric) {\n    return {\n        value: metric.value,\n        rating: metric.rating,\n        delta: metric.delta,\n        navigationType: metric.navigationType,\n        id: metric.id,\n        timestamp: Math.floor(getMetricStartTime(metric)),\n        navigationStart: Math.floor(performance.timeOrigin),\n    };\n}\nexport var webVitalsPlugin = function () {\n    var visibilityListener = null;\n    var globalScope = getGlobalScope();\n    var doc = globalScope === null || globalScope === void 0 ? void 0 : globalScope.document;\n    var location = globalScope === null || globalScope === void 0 ? void 0 : globalScope.location;\n    var setup = function (config, amplitude) { return __awaiter(void 0, void 0, void 0, function () {\n        var getDecodeURI, locationHref, webVitalsPayload;\n        return __generator(this, function (_a) {\n            getDecodeURI = function (locationStr) {\n                var _a;\n                /* istanbul ignore next */\n                if (!locationStr) {\n                    return '';\n                }\n                var decodedLocationStr = locationStr;\n                try {\n                    decodedLocationStr = decodeURI(locationStr);\n                }\n                catch (e) {\n                    /* istanbul ignore next */\n                    (_a = config.loggerProvider) === null || _a === void 0 ? void 0 : _a.error('Malformed URI sequence: ', e);\n                }\n                return decodedLocationStr;\n            };\n            if (doc === undefined) {\n                return [2 /*return*/];\n            }\n            locationHref = getDecodeURI(/* istanbul ignore next */ location === null || location === void 0 ? void 0 : location.href);\n            webVitalsPayload = {\n                '[Amplitude] Page Domain': /* istanbul ignore next */ (location === null || location === void 0 ? void 0 : location.hostname) || '',\n                '[Amplitude] Page Location': locationHref,\n                '[Amplitude] Page Path': getDecodeURI(/* istanbul ignore next */ location === null || location === void 0 ? void 0 : location.pathname),\n                '[Amplitude] Page Title': /* istanbul ignore next */ (typeof document !== 'undefined' && document.title) || '',\n                '[Amplitude] Page URL': locationHref.split('?')[0],\n            };\n            onLCP(function (metric) {\n                webVitalsPayload['[Amplitude] LCP'] = processMetric(metric);\n            });\n            onFCP(function (metric) {\n                webVitalsPayload['[Amplitude] FCP'] = processMetric(metric);\n            });\n            onINP(function (metric) {\n                webVitalsPayload['[Amplitude] INP'] = processMetric(metric);\n            });\n            onCLS(function (metric) {\n                webVitalsPayload['[Amplitude] CLS'] = processMetric(metric);\n            });\n            onTTFB(function (metric) {\n                webVitalsPayload['[Amplitude] TTFB'] = processMetric(metric);\n            });\n            visibilityListener = function () {\n                if (doc.visibilityState === 'hidden' && visibilityListener) {\n                    amplitude.track(WEB_VITALS_EVENT_NAME, webVitalsPayload);\n                    doc.removeEventListener('visibilitychange', visibilityListener);\n                    visibilityListener = null;\n                }\n            };\n            doc.addEventListener('visibilitychange', visibilityListener);\n            return [2 /*return*/];\n        });\n    }); };\n    var execute = function (event) { return __awaiter(void 0, void 0, void 0, function () {\n        return __generator(this, function (_a) {\n            return [2 /*return*/, event];\n        });\n    }); };\n    var teardown = function () { return __awaiter(void 0, void 0, void 0, function () {\n        return __generator(this, function (_a) {\n            if (visibilityListener) {\n                /* istanbul ignore next */\n                doc === null || doc === void 0 ? void 0 : doc.removeEventListener('visibilitychange', visibilityListener);\n            }\n            return [2 /*return*/];\n        });\n    }); };\n    return {\n        name: PLUGIN_NAME,\n        type: 'enrichment',\n        setup: setup,\n        execute: execute,\n        teardown: teardown,\n    };\n};\n//# sourceMappingURL=web-vitals-plugin.js.map","import { __assign, __read, __rest } from \"tslib\";\nimport { createIdentifyEvent, Identify, BASE_CAMPAIGN } from '@amplitude/analytics-core';\nvar domainWithoutSubdomain = function (domain) {\n    var parts = domain.split('.');\n    if (parts.length <= 2) {\n        return domain;\n    }\n    return parts.slice(parts.length - 2, parts.length).join('.');\n};\n//Direct traffic mean no external referral, no UTMs, no click-ids, and no other customer identified marketing campaign url params.\nvar isDirectTraffic = function (current) {\n    return Object.values(current).every(function (value) { return !value; });\n};\nexport var isNewCampaign = function (current, previous, options, logger, isNewSession) {\n    if (isNewSession === void 0) { isNewSession = true; }\n    var referrer = current.referrer, referring_domain = current.referring_domain, currentCampaign = __rest(current, [\"referrer\", \"referring_domain\"]);\n    var _a = previous || {}, _previous_referrer = _a.referrer, prevReferringDomain = _a.referring_domain, previousCampaign = __rest(_a, [\"referrer\", \"referring_domain\"]);\n    if (isExcludedReferrer(options.excludeReferrers, current.referring_domain)) {\n        // eslint-disable-next-line @typescript-eslint/restrict-template-expressions\n        logger.debug(\"This is not a new campaign because \".concat(current.referring_domain, \" is in the exclude referrer list.\"));\n        return false;\n    }\n    //In the same session, direct traffic should not override or unset any persisting query params\n    if (!isNewSession && isDirectTraffic(current) && previous) {\n        logger.debug('This is not a new campaign because this is a direct traffic in the same session.');\n        return false;\n    }\n    var hasNewCampaign = JSON.stringify(currentCampaign) !== JSON.stringify(previousCampaign);\n    var hasNewDomain = domainWithoutSubdomain(referring_domain || '') !== domainWithoutSubdomain(prevReferringDomain || '');\n    var result = !previous || hasNewCampaign || hasNewDomain;\n    if (!result) {\n        logger.debug(\"This is not a new campaign because it's the same as the previous one.\");\n    }\n    else {\n        logger.debug(\"This is a new campaign. An $identify event will be sent.\");\n    }\n    return result;\n};\nexport var isExcludedReferrer = function (excludeReferrers, referringDomain) {\n    if (excludeReferrers === void 0) { excludeReferrers = []; }\n    if (referringDomain === void 0) { referringDomain = ''; }\n    return excludeReferrers.some(function (value) {\n        return value instanceof RegExp ? value.test(referringDomain) : value === referringDomain;\n    });\n};\nexport var createCampaignEvent = function (campaign, options) {\n    var campaignParameters = __assign(__assign({}, BASE_CAMPAIGN), campaign);\n    var identifyEvent = Object.entries(campaignParameters).reduce(function (identify, _a) {\n        var _b;\n        var _c = __read(_a, 2), key = _c[0], value = _c[1];\n        identify.setOnce(\"initial_\".concat(key), (_b = value !== null && value !== void 0 ? value : options.initialEmptyValue) !== null && _b !== void 0 ? _b : 'EMPTY');\n        if (value) {\n            return identify.set(key, value);\n        }\n        return identify.unset(key);\n    }, new Identify());\n    return createIdentifyEvent(identifyEvent);\n};\nexport var getDefaultExcludedReferrers = function (cookieDomain) {\n    var domain = cookieDomain;\n    if (domain) {\n        if (domain.startsWith('.')) {\n            domain = domain.substring(1);\n        }\n        return [new RegExp(\"\".concat(domain.replace('.', '\\\\.'), \"$\"))];\n    }\n    return [];\n};\n//# sourceMappingURL=helpers.js.map","import { __assign, __awaiter, __generator, __read } from \"tslib\";\nimport { getStorageKey, isNewSession, BASE_CAMPAIGN, CampaignParser, } from '@amplitude/analytics-core';\nimport { getDefaultExcludedReferrers, createCampaignEvent, isNewCampaign } from './helpers';\nvar WebAttribution = /** @class */ (function () {\n    function WebAttribution(options, config) {\n        var _a;\n        this.shouldTrackNewCampaign = false;\n        this.options = __assign({ initialEmptyValue: 'EMPTY', resetSessionOnNewCampaign: false, excludeReferrers: getDefaultExcludedReferrers((_a = config.cookieOptions) === null || _a === void 0 ? void 0 : _a.domain) }, options);\n        this.storage = config.cookieStorage;\n        this.storageKey = getStorageKey(config.apiKey, 'MKTG');\n        this.currentCampaign = BASE_CAMPAIGN;\n        this.sessionTimeout = config.sessionTimeout;\n        this.lastEventTime = config.lastEventTime;\n        this.logger = config.loggerProvider;\n        config.loggerProvider.log('Installing web attribution tracking.');\n    }\n    WebAttribution.prototype.init = function () {\n        return __awaiter(this, void 0, void 0, function () {\n            var isEventInNewSession;\n            var _a;\n            return __generator(this, function (_b) {\n                switch (_b.label) {\n                    case 0: return [4 /*yield*/, this.fetchCampaign()];\n                    case 1:\n                        _a = __read.apply(void 0, [_b.sent(), 2]), this.currentCampaign = _a[0], this.previousCampaign = _a[1];\n                        isEventInNewSession = !this.lastEventTime ? true : isNewSession(this.sessionTimeout, this.lastEventTime);\n                        if (!isNewCampaign(this.currentCampaign, this.previousCampaign, this.options, this.logger, isEventInNewSession)) return [3 /*break*/, 3];\n                        this.shouldTrackNewCampaign = true;\n                        return [4 /*yield*/, this.storage.set(this.storageKey, this.currentCampaign)];\n                    case 2:\n                        _b.sent();\n                        _b.label = 3;\n                    case 3: return [2 /*return*/];\n                }\n            });\n        });\n    };\n    WebAttribution.prototype.fetchCampaign = function () {\n        return __awaiter(this, void 0, void 0, function () {\n            return __generator(this, function (_a) {\n                switch (_a.label) {\n                    case 0: return [4 /*yield*/, Promise.all([new CampaignParser().parse(), this.storage.get(this.storageKey)])];\n                    case 1: return [2 /*return*/, _a.sent()];\n                }\n            });\n        });\n    };\n    /**\n     * This can be called when enable web attribution and either\n     * 1. set a new session\n     * 2. has new campaign and enable resetSessionOnNewCampaign\n     */\n    WebAttribution.prototype.generateCampaignEvent = function (event_id) {\n        // Mark this campaign has been tracked\n        this.shouldTrackNewCampaign = false;\n        var campaignEvent = createCampaignEvent(this.currentCampaign, this.options);\n        if (event_id) {\n            campaignEvent.event_id = event_id;\n        }\n        return campaignEvent;\n    };\n    WebAttribution.prototype.shouldSetSessionIdOnNewCampaign = function () {\n        return this.shouldTrackNewCampaign && !!this.options.resetSessionOnNewCampaign;\n    };\n    return WebAttribution;\n}());\nexport { WebAttribution };\n//# sourceMappingURL=web-attribution.js.map","import { __assign, __awaiter, __extends, __generator } from \"tslib\";\nimport { AmplitudeCore, Destination, Identify, returnWrapper, Revenue, UUID, getAnalyticsConnector, setConnectorDeviceId, setConnectorUserId, isNewSession, IdentityEventSender, getQueryParams, OfflineDisabled, SpecialEventType, RemoteConfigClient, } from '@amplitude/analytics-core';\nimport { getAttributionTrackingConfig, getPageViewTrackingConfig, getElementInteractionsConfig, getNetworkTrackingConfig, isAttributionTrackingEnabled, isSessionTrackingEnabled, isFileDownloadTrackingEnabled, isFormInteractionTrackingEnabled, isElementInteractionsEnabled, isPageViewTrackingEnabled, isNetworkTrackingEnabled, isWebVitalsEnabled, isFrustrationInteractionsEnabled, getFrustrationInteractionsConfig, } from './default-tracking';\nimport { convertProxyObjectToRealObject, isInstanceProxy } from './utils/snippet-helper';\nimport { Context } from './plugins/context';\nimport { useBrowserConfig, createTransport } from './config';\nimport { pageViewTrackingPlugin } from '@amplitude/plugin-page-view-tracking-browser';\nimport { formInteractionTracking } from './plugins/form-interaction-tracking';\nimport { fileDownloadTracking } from './plugins/file-download-tracking';\nimport { DEFAULT_SESSION_END_EVENT, DEFAULT_SESSION_START_EVENT } from './constants';\nimport { detNotify } from './det-notification';\nimport { networkConnectivityCheckerPlugin } from './plugins/network-connectivity-checker';\nimport { updateBrowserConfigWithRemoteConfig } from './config/joined-config';\nimport { autocapturePlugin, frustrationPlugin } from '@amplitude/plugin-autocapture-browser';\nimport { plugin as networkCapturePlugin } from '@amplitude/plugin-network-capture-browser';\nimport { webVitalsPlugin } from '@amplitude/plugin-web-vitals-browser';\nimport { WebAttribution } from './attribution/web-attribution';\n/**\n * Exported for `@amplitude/unified` or integration with blade plugins.\n * If you only use `@amplitude/analytics-browser`, use `amplitude.init()` or `amplitude.createInstance()` instead.\n */\nvar AmplitudeBrowser = /** @class */ (function (_super) {\n    __extends(AmplitudeBrowser, _super);\n    function AmplitudeBrowser() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    AmplitudeBrowser.prototype.init = function (apiKey, userIdOrOptions, maybeOptions) {\n        if (apiKey === void 0) { apiKey = ''; }\n        var userId;\n        var options;\n        if (arguments.length > 2) {\n            userId = userIdOrOptions;\n            options = maybeOptions;\n        }\n        else {\n            if (typeof userIdOrOptions === 'string') {\n                userId = userIdOrOptions;\n                options = undefined;\n            }\n            else {\n                userId = userIdOrOptions === null || userIdOrOptions === void 0 ? void 0 : userIdOrOptions.userId;\n                options = userIdOrOptions;\n            }\n        }\n        return returnWrapper(this._init(__assign(__assign({}, options), { userId: userId, apiKey: apiKey })));\n    };\n    AmplitudeBrowser.prototype._init = function (options) {\n        var _a, _b, _c;\n        return __awaiter(this, void 0, void 0, function () {\n            var browserOptions, attributionTrackingOptions, queryParams, ampTimestamp, isWithinTimeLimit, querySessionId, connector;\n            var _this = this;\n            return __generator(this, function (_d) {\n                switch (_d.label) {\n                    case 0:\n                        // Step 1: Block concurrent initialization\n                        if (this.initializing) {\n                            return [2 /*return*/];\n                        }\n                        this.initializing = true;\n                        return [4 /*yield*/, useBrowserConfig(options.apiKey, options, this)];\n                    case 1:\n                        browserOptions = _d.sent();\n                        if (!browserOptions.fetchRemoteConfig) return [3 /*break*/, 3];\n                        this.remoteConfigClient = new RemoteConfigClient(browserOptions.apiKey, browserOptions.loggerProvider, browserOptions.serverZone);\n                        // Wait for initial remote config before proceeding.\n                        // Delivery mode is all, meaning it calls the callback with whoever (cache or remote) returns first.\n                        return [4 /*yield*/, new Promise(function (resolve) {\n                                var _a;\n                                // Disable coverage for this line because remote config client will always be defined in this case.\n                                // istanbul ignore next\n                                (_a = _this.remoteConfigClient) === null || _a === void 0 ? void 0 : _a.subscribe('configs.analyticsSDK.browserSDK', 'all', function (remoteConfig, source, lastFetch) {\n                                    browserOptions.loggerProvider.debug('Remote configuration received:', JSON.stringify({\n                                        remoteConfig: remoteConfig,\n                                        source: source,\n                                        lastFetch: lastFetch,\n                                    }, null, 2));\n                                    if (remoteConfig) {\n                                        updateBrowserConfigWithRemoteConfig(remoteConfig, browserOptions);\n                                    }\n                                    // Resolve the promise on first callback (initial config)\n                                    resolve();\n                                });\n                            })];\n                    case 2:\n                        // Wait for initial remote config before proceeding.\n                        // Delivery mode is all, meaning it calls the callback with whoever (cache or remote) returns first.\n                        _d.sent();\n                        _d.label = 3;\n                    case 3: return [4 /*yield*/, _super.prototype._init.call(this, browserOptions)];\n                    case 4:\n                        _d.sent();\n                        this.logBrowserOptions(browserOptions);\n                        if (!isAttributionTrackingEnabled(this.config.defaultTracking)) return [3 /*break*/, 6];\n                        attributionTrackingOptions = getAttributionTrackingConfig(this.config);\n                        this.webAttribution = new WebAttribution(attributionTrackingOptions, this.config);\n                        // Fetch the current campaign, check if need to track web attribution later\n                        return [4 /*yield*/, this.webAttribution.init()];\n                    case 5:\n                        // Fetch the current campaign, check if need to track web attribution later\n                        _d.sent();\n                        _d.label = 6;\n                    case 6:\n                        queryParams = getQueryParams();\n                        ampTimestamp = queryParams.ampTimestamp ? Number(queryParams.ampTimestamp) : undefined;\n                        isWithinTimeLimit = ampTimestamp ? Date.now() < ampTimestamp : true;\n                        querySessionId = isWithinTimeLimit && !Number.isNaN(Number(queryParams.ampSessionId))\n                            ? Number(queryParams.ampSessionId)\n                            : undefined;\n                        this.setSessionId((_c = (_b = (_a = options.sessionId) !== null && _a !== void 0 ? _a : querySessionId) !== null && _b !== void 0 ? _b : this.config.sessionId) !== null && _c !== void 0 ? _c : Date.now());\n                        connector = getAnalyticsConnector(options.instanceName);\n                        connector.identityStore.setIdentity({\n                            userId: this.config.userId,\n                            deviceId: this.config.deviceId,\n                        });\n                        if (!(this.config.offline !== OfflineDisabled)) return [3 /*break*/, 8];\n                        return [4 /*yield*/, this.add(networkConnectivityCheckerPlugin()).promise];\n                    case 7:\n                        _d.sent();\n                        _d.label = 8;\n                    case 8: return [4 /*yield*/, this.add(new Destination()).promise];\n                    case 9:\n                        _d.sent();\n                        return [4 /*yield*/, this.add(new Context()).promise];\n                    case 10:\n                        _d.sent();\n                        return [4 /*yield*/, this.add(new IdentityEventSender()).promise];\n                    case 11:\n                        _d.sent();\n                        // Notify if DET is enabled\n                        detNotify(this.config);\n                        if (!isFileDownloadTrackingEnabled(this.config.defaultTracking)) return [3 /*break*/, 13];\n                        this.config.loggerProvider.debug('Adding file download tracking plugin');\n                        return [4 /*yield*/, this.add(fileDownloadTracking()).promise];\n                    case 12:\n                        _d.sent();\n                        _d.label = 13;\n                    case 13:\n                        if (!isFormInteractionTrackingEnabled(this.config.defaultTracking)) return [3 /*break*/, 15];\n                        this.config.loggerProvider.debug('Adding form interaction plugin');\n                        return [4 /*yield*/, this.add(formInteractionTracking()).promise];\n                    case 14:\n                        _d.sent();\n                        _d.label = 15;\n                    case 15:\n                        if (!isPageViewTrackingEnabled(this.config.defaultTracking)) return [3 /*break*/, 17];\n                        this.config.loggerProvider.debug('Adding page view tracking plugin');\n                        return [4 /*yield*/, this.add(pageViewTrackingPlugin(getPageViewTrackingConfig(this.config))).promise];\n                    case 16:\n                        _d.sent();\n                        _d.label = 17;\n                    case 17:\n                        if (!isElementInteractionsEnabled(this.config.autocapture)) return [3 /*break*/, 19];\n                        this.config.loggerProvider.debug('Adding user interactions plugin (autocapture plugin)');\n                        return [4 /*yield*/, this.add(autocapturePlugin(getElementInteractionsConfig(this.config))).promise];\n                    case 18:\n                        _d.sent();\n                        _d.label = 19;\n                    case 19:\n                        if (!isFrustrationInteractionsEnabled(this.config.autocapture)) return [3 /*break*/, 21];\n                        this.config.loggerProvider.debug('Adding frustration interactions plugin');\n                        return [4 /*yield*/, this.add(frustrationPlugin(getFrustrationInteractionsConfig(this.config))).promise];\n                    case 20:\n                        _d.sent();\n                        _d.label = 21;\n                    case 21:\n                        if (!isNetworkTrackingEnabled(this.config.autocapture)) return [3 /*break*/, 23];\n                        this.config.loggerProvider.debug('Adding network tracking plugin');\n                        return [4 /*yield*/, this.add(networkCapturePlugin(getNetworkTrackingConfig(this.config))).promise];\n                    case 22:\n                        _d.sent();\n                        _d.label = 23;\n                    case 23:\n                        if (!isWebVitalsEnabled(this.config.autocapture)) return [3 /*break*/, 25];\n                        this.config.loggerProvider.debug('Adding web vitals plugin');\n                        return [4 /*yield*/, this.add(webVitalsPlugin()).promise];\n                    case 24:\n                        _d.sent();\n                        _d.label = 25;\n                    case 25:\n                        this.initializing = false;\n                        // Step 6: Run queued dispatch functions\n                        return [4 /*yield*/, this.runQueuedFunctions('dispatchQ')];\n                    case 26:\n                        // Step 6: Run queued dispatch functions\n                        _d.sent();\n                        // Step 7: Add the event receiver after running remaining queued functions.\n                        connector.eventBridge.setEventReceiver(function (event) {\n                            void _this.track(event.eventType, event.eventProperties);\n                        });\n                        return [2 /*return*/];\n                }\n            });\n        });\n    };\n    AmplitudeBrowser.prototype.getUserId = function () {\n        var _a;\n        return (_a = this.config) === null || _a === void 0 ? void 0 : _a.userId;\n    };\n    AmplitudeBrowser.prototype.setUserId = function (userId) {\n        if (!this.config) {\n            this.q.push(this.setUserId.bind(this, userId));\n            return;\n        }\n        this.config.loggerProvider.debug('function setUserId: ', userId);\n        if (userId !== this.config.userId || userId === undefined) {\n            this.config.userId = userId;\n            // eslint-disable-next-line @typescript-eslint/no-unsafe-call\n            this.timeline.onIdentityChanged({ userId: userId });\n            setConnectorUserId(userId, this.config.instanceName);\n        }\n    };\n    AmplitudeBrowser.prototype.getDeviceId = function () {\n        var _a;\n        return (_a = this.config) === null || _a === void 0 ? void 0 : _a.deviceId;\n    };\n    AmplitudeBrowser.prototype.setDeviceId = function (deviceId) {\n        if (!this.config) {\n            this.q.push(this.setDeviceId.bind(this, deviceId));\n            return;\n        }\n        this.config.loggerProvider.debug('function setDeviceId: ', deviceId);\n        if (deviceId !== this.config.deviceId) {\n            this.config.deviceId = deviceId;\n            // eslint-disable-next-line @typescript-eslint/no-unsafe-call\n            this.timeline.onIdentityChanged({ deviceId: deviceId });\n            setConnectorDeviceId(deviceId, this.config.instanceName);\n        }\n    };\n    AmplitudeBrowser.prototype.reset = function () {\n        this.setDeviceId(UUID());\n        this.setUserId(undefined);\n    };\n    AmplitudeBrowser.prototype.getIdentity = function () {\n        var _a, _b;\n        return {\n            deviceId: (_a = this.config) === null || _a === void 0 ? void 0 : _a.deviceId,\n            userId: (_b = this.config) === null || _b === void 0 ? void 0 : _b.userId,\n            userProperties: this.userProperties,\n        };\n    };\n    AmplitudeBrowser.prototype.getOptOut = function () {\n        var _a;\n        return (_a = this.config) === null || _a === void 0 ? void 0 : _a.optOut;\n    };\n    AmplitudeBrowser.prototype.getSessionId = function () {\n        var _a;\n        return (_a = this.config) === null || _a === void 0 ? void 0 : _a.sessionId;\n    };\n    AmplitudeBrowser.prototype.setSessionId = function (sessionId) {\n        var _a;\n        var promises = [];\n        if (!this.config) {\n            this.q.push(this.setSessionId.bind(this, sessionId));\n            return returnWrapper(Promise.resolve());\n        }\n        // Prevents starting a new session with the same session ID\n        if (sessionId === this.config.sessionId) {\n            return returnWrapper(Promise.resolve());\n        }\n        this.config.loggerProvider.debug('function setSessionId: ', sessionId);\n        var previousSessionId = this.getSessionId();\n        if (previousSessionId !== sessionId) {\n            // eslint-disable-next-line @typescript-eslint/no-unsafe-call\n            this.timeline.onSessionIdChanged(sessionId);\n        }\n        var lastEventTime = this.config.lastEventTime;\n        var lastEventId = (_a = this.config.lastEventId) !== null && _a !== void 0 ? _a : -1;\n        this.config.sessionId = sessionId;\n        this.config.lastEventTime = undefined;\n        this.config.pageCounter = 0;\n        if (isSessionTrackingEnabled(this.config.defaultTracking)) {\n            if (previousSessionId && lastEventTime) {\n                promises.push(this.track(DEFAULT_SESSION_END_EVENT, undefined, {\n                    device_id: this.previousSessionDeviceId,\n                    event_id: ++lastEventId,\n                    session_id: previousSessionId,\n                    time: lastEventTime + 1,\n                    user_id: this.previousSessionUserId,\n                }).promise);\n            }\n            this.config.lastEventTime = this.config.sessionId;\n        }\n        // Fire web attribution event when enable webAttribution tracking\n        // 1. has new campaign (call setSessionId from init function)\n        // 2. or shouldTrackNewCampaign (call setSessionId from async process(event) when there has new campaign and resetSessionOnNewCampaign = true )\n        var isCampaignEventTracked = this.trackCampaignEventIfNeeded(++lastEventId, promises);\n        if (isSessionTrackingEnabled(this.config.defaultTracking)) {\n            promises.push(this.track(DEFAULT_SESSION_START_EVENT, undefined, {\n                event_id: isCampaignEventTracked ? ++lastEventId : lastEventId,\n                session_id: this.config.sessionId,\n                time: this.config.lastEventTime,\n            }).promise);\n        }\n        this.previousSessionDeviceId = this.config.deviceId;\n        this.previousSessionUserId = this.config.userId;\n        return returnWrapper(Promise.all(promises));\n    };\n    AmplitudeBrowser.prototype.extendSession = function () {\n        if (!this.config) {\n            this.q.push(this.extendSession.bind(this));\n            return;\n        }\n        this.config.lastEventTime = Date.now();\n    };\n    AmplitudeBrowser.prototype.setTransport = function (transport) {\n        if (!this.config) {\n            this.q.push(this.setTransport.bind(this, transport));\n            return;\n        }\n        this.config.transportProvider = createTransport(transport);\n    };\n    AmplitudeBrowser.prototype.identify = function (identify, eventOptions) {\n        if (isInstanceProxy(identify)) {\n            var queue = identify._q;\n            identify._q = [];\n            identify = convertProxyObjectToRealObject(new Identify(), queue);\n        }\n        if (eventOptions === null || eventOptions === void 0 ? void 0 : eventOptions.user_id) {\n            this.setUserId(eventOptions.user_id);\n        }\n        if (eventOptions === null || eventOptions === void 0 ? void 0 : eventOptions.device_id) {\n            this.setDeviceId(eventOptions.device_id);\n        }\n        return _super.prototype.identify.call(this, identify, eventOptions);\n    };\n    AmplitudeBrowser.prototype.groupIdentify = function (groupType, groupName, identify, eventOptions) {\n        if (isInstanceProxy(identify)) {\n            var queue = identify._q;\n            identify._q = [];\n            identify = convertProxyObjectToRealObject(new Identify(), queue);\n        }\n        return _super.prototype.groupIdentify.call(this, groupType, groupName, identify, eventOptions);\n    };\n    AmplitudeBrowser.prototype.revenue = function (revenue, eventOptions) {\n        if (isInstanceProxy(revenue)) {\n            var queue = revenue._q;\n            revenue._q = [];\n            revenue = convertProxyObjectToRealObject(new Revenue(), queue);\n        }\n        return _super.prototype.revenue.call(this, revenue, eventOptions);\n    };\n    AmplitudeBrowser.prototype.trackCampaignEventIfNeeded = function (lastEventId, promises) {\n        if (!this.webAttribution || !this.webAttribution.shouldTrackNewCampaign) {\n            return false;\n        }\n        var campaignEvent = this.webAttribution.generateCampaignEvent(lastEventId);\n        if (promises) {\n            promises.push(this.track(campaignEvent).promise);\n        }\n        else {\n            this.track(campaignEvent);\n        }\n        this.config.loggerProvider.log('Tracking attribution.');\n        return true;\n    };\n    AmplitudeBrowser.prototype.process = function (event) {\n        return __awaiter(this, void 0, void 0, function () {\n            var currentTime, isEventInNewSession, shouldSetSessionIdOnNewCampaign;\n            return __generator(this, function (_a) {\n                currentTime = Date.now();\n                isEventInNewSession = isNewSession(this.config.sessionTimeout, this.config.lastEventTime);\n                shouldSetSessionIdOnNewCampaign = this.webAttribution && this.webAttribution.shouldSetSessionIdOnNewCampaign();\n                if (event.event_type !== DEFAULT_SESSION_START_EVENT &&\n                    event.event_type !== DEFAULT_SESSION_END_EVENT &&\n                    (!event.session_id || event.session_id === this.getSessionId())) {\n                    if (isEventInNewSession || shouldSetSessionIdOnNewCampaign) {\n                        this.setSessionId(currentTime);\n                        if (shouldSetSessionIdOnNewCampaign) {\n                            this.config.loggerProvider.log('Created a new session for new campaign.');\n                        }\n                    }\n                    else if (!isEventInNewSession) {\n                        // Web attribution should be tracked during the middle of a session\n                        // if there has been a chance in the campaign information.\n                        this.trackCampaignEventIfNeeded();\n                    }\n                }\n                // Set user properties\n                if (event.event_type === SpecialEventType.IDENTIFY && event.user_properties) {\n                    this.userProperties = this.getOperationAppliedUserProperties(event.user_properties);\n                }\n                return [2 /*return*/, _super.prototype.process.call(this, event)];\n            });\n        });\n    };\n    AmplitudeBrowser.prototype.logBrowserOptions = function (browserConfig) {\n        try {\n            var browserConfigCopy = __assign(__assign({}, browserConfig), { apiKey: browserConfig.apiKey.substring(0, 10) + '********' });\n            this.config.loggerProvider.debug('Initialized Amplitude with BrowserConfig:', JSON.stringify(browserConfigCopy));\n        }\n        catch (e) {\n            /* istanbul ignore next */\n            this.config.loggerProvider.error('Error logging browser config', e);\n        }\n    };\n    return AmplitudeBrowser;\n}(AmplitudeCore));\nexport { AmplitudeBrowser };\n//# sourceMappingURL=browser-client.js.map","import { debugWrapper, getClientLogConfig, getClientStates } from '@amplitude/analytics-core';\nimport { AmplitudeBrowser } from './browser-client';\nexport var createInstance = function () {\n    var client = new AmplitudeBrowser();\n    return {\n        init: debugWrapper(client.init.bind(client), 'init', getClientLogConfig(client), getClientStates(client, ['config'])),\n        add: debugWrapper(client.add.bind(client), 'add', getClientLogConfig(client), getClientStates(client, ['config.apiKey', 'timeline.plugins'])),\n        remove: debugWrapper(client.remove.bind(client), 'remove', getClientLogConfig(client), getClientStates(client, ['config.apiKey', 'timeline.plugins'])),\n        track: debugWrapper(client.track.bind(client), 'track', getClientLogConfig(client), getClientStates(client, ['config.apiKey', 'timeline.queue.length'])),\n        logEvent: debugWrapper(client.logEvent.bind(client), 'logEvent', getClientLogConfig(client), getClientStates(client, ['config.apiKey', 'timeline.queue.length'])),\n        identify: debugWrapper(client.identify.bind(client), 'identify', getClientLogConfig(client), getClientStates(client, ['config.apiKey', 'timeline.queue.length'])),\n        groupIdentify: debugWrapper(client.groupIdentify.bind(client), 'groupIdentify', getClientLogConfig(client), getClientStates(client, ['config.apiKey', 'timeline.queue.length'])),\n        setGroup: debugWrapper(client.setGroup.bind(client), 'setGroup', getClientLogConfig(client), getClientStates(client, ['config.apiKey', 'timeline.queue.length'])),\n        revenue: debugWrapper(client.revenue.bind(client), 'revenue', getClientLogConfig(client), getClientStates(client, ['config.apiKey', 'timeline.queue.length'])),\n        flush: debugWrapper(client.flush.bind(client), 'flush', getClientLogConfig(client), getClientStates(client, ['config.apiKey', 'timeline.queue.length'])),\n        getUserId: debugWrapper(client.getUserId.bind(client), 'getUserId', getClientLogConfig(client), getClientStates(client, ['config', 'config.userId'])),\n        setUserId: debugWrapper(client.setUserId.bind(client), 'setUserId', getClientLogConfig(client), getClientStates(client, ['config', 'config.userId'])),\n        getDeviceId: debugWrapper(client.getDeviceId.bind(client), 'getDeviceId', getClientLogConfig(client), getClientStates(client, ['config', 'config.deviceId'])),\n        setDeviceId: debugWrapper(client.setDeviceId.bind(client), 'setDeviceId', getClientLogConfig(client), getClientStates(client, ['config', 'config.deviceId'])),\n        reset: debugWrapper(client.reset.bind(client), 'reset', getClientLogConfig(client), getClientStates(client, ['config', 'config.userId', 'config.deviceId'])),\n        getSessionId: debugWrapper(client.getSessionId.bind(client), 'getSessionId', getClientLogConfig(client), getClientStates(client, ['config'])),\n        setSessionId: debugWrapper(client.setSessionId.bind(client), 'setSessionId', getClientLogConfig(client), getClientStates(client, ['config'])),\n        extendSession: debugWrapper(client.extendSession.bind(client), 'extendSession', getClientLogConfig(client), getClientStates(client, ['config'])),\n        setOptOut: debugWrapper(client.setOptOut.bind(client), 'setOptOut', getClientLogConfig(client), getClientStates(client, ['config'])),\n        setTransport: debugWrapper(client.setTransport.bind(client), 'setTransport', getClientLogConfig(client), getClientStates(client, ['config'])),\n        getIdentity: debugWrapper(client.getIdentity.bind(client), 'getIdentity', getClientLogConfig(client), getClientStates(client, ['config'])),\n        getOptOut: debugWrapper(client.getOptOut.bind(client), 'getOptOut', getClientLogConfig(client), getClientStates(client, ['config'])),\n    };\n};\nexport default createInstance();\n//# sourceMappingURL=browser-client-factory.js.map","/* eslint-disable @typescript-eslint/unbound-method */\nimport client from './browser-client-factory';\nexport { createInstance } from './browser-client-factory';\nexport var add = client.add, extendSession = client.extendSession, flush = client.flush, getDeviceId = client.getDeviceId, getSessionId = client.getSessionId, getUserId = client.getUserId, groupIdentify = client.groupIdentify, identify = client.identify, init = client.init, logEvent = client.logEvent, remove = client.remove, reset = client.reset, revenue = client.revenue, setDeviceId = client.setDeviceId, setGroup = client.setGroup, setOptOut = client.setOptOut, setSessionId = client.setSessionId, setTransport = client.setTransport, setUserId = client.setUserId, track = client.track;\nexport { AmplitudeBrowser } from './browser-client';\nexport { runQueuedFunctions } from './utils/snippet-helper';\nexport { Revenue, Identify } from '@amplitude/analytics-core';\nimport * as Types_1 from './types';\nexport { Types_1 as Types };\n//# sourceMappingURL=index.js.map","import * as amplitude from '@amplitude/analytics-browser'\n\nimport { LoggerLinker } from '../logger'\n\ndeclare const process: {\n  env: {\n    NODE_ENV: string\n  }\n}\n\nexport class AmplitudeLinker implements LoggerLinker {\n  private _key!: string\n\n  private _onAfterInit?: (amp: typeof amplitude) => Promise<void>\n\n  private _options?: amplitude.Types.BrowserOptions\n\n  constructor({\n    key,\n    onAfterInit,\n    options,\n  }: {\n    key: string\n    onAfterInit?: (amp: typeof amplitude) => Promise<void>\n    options?: amplitude.Types.BrowserOptions\n  }) {\n    this._key = key\n    this._onAfterInit = onAfterInit\n    this._options = options\n  }\n\n  public async init() {\n    await amplitude.init(this._key, this._options).promise\n\n    if (this._onAfterInit) {\n      await this._onAfterInit(amplitude)\n    }\n  }\n\n  public async setUserID(userID: string) {\n    await amplitude.setUserId(userID)\n  }\n\n  public async resetUser() {\n    await amplitude.reset()\n  }\n\n  public async setUserProperty(property: string, value: any) {\n    const identify = new amplitude.Identify()\n\n    identify.set(property, value)\n\n    await amplitude.identify(identify)\n  }\n\n  public async log(message: string, params: Record<string, any>) {\n    await amplitude.track(message, params)\n\n    if (\n      process.env.NODE_ENV !== 'production' ||\n      (window as any).__ZVZO_LOGGER_DEBUG__\n    ) {\n      console.log(`[AMPLITUDE] ${message}:`, params)\n    }\n  }\n\n  public async flush() {\n    try {\n      await amplitude.flush()\n    } catch {}\n  }\n}\n","import { LoggerLinker } from '../logger'\n\ndeclare const process: {\n  env: {\n    NODE_ENV: string\n  }\n}\n\nexport class DevConsoleLinker implements LoggerLinker {\n  private _isDev!: boolean\n\n  constructor({\n    isDev = process.env.NODE_ENV !== 'production',\n  }: {\n    isDev?: boolean\n  } = {}) {\n    this._isDev = isDev\n  }\n\n  public async init() {}\n\n  public async log(message: string, params: Record<string, any>) {\n    if (!this._isDev) {\n      return\n    }\n\n    // eslint-disable-next-line no-console\n    console.log(`[LOGGER] ${message}: ${JSON.stringify(params)}`)\n  }\n\n  public async flush() {}\n}\n","import { LoggerLinker } from '../logger'\n\nexport class NoneLinker implements LoggerLinker {\n  public async init() {}\n\n  public async log() {}\n\n  public async flush() {}\n}\n","// since es6 imports are static and we run unit tests from the console, window won't be defined when importing this file\nvar win;\nif (typeof(window) === 'undefined') {\n    var loc = {\n        hostname: ''\n    };\n    win = {\n        crypto: {randomUUID: function() {throw Error('unsupported');}},\n        navigator: { userAgent: '', onLine: true },\n        document: {\n            createElement: function() { return {}; },\n            location: loc,\n            referrer: ''\n        },\n        screen: { width: 0, height: 0 },\n        location: loc,\n        addEventListener: function() {},\n        removeEventListener: function() {}\n    };\n} else {\n    win = window;\n}\n\nfunction _array_like_to_array(arr, len) {\n    if (len == null || len > 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}\nfunction 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}\nfunction _async_to_generator(fn) {\n    return function() {\n        var self = this, 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}\nfunction _construct(Parent, args, Class) {\n    if (_is_native_reflect_construct()) {\n        _construct = Reflect.construct;\n    } else {\n        _construct = function construct(Parent, args, Class) {\n            var a = [\n                null\n            ];\n            a.push.apply(a, args);\n            var Constructor = Function.bind.apply(Parent, a);\n            var instance = new Constructor();\n            if (Class) _set_prototype_of(instance, Class.prototype);\n            return instance;\n        };\n    }\n    return _construct.apply(null, arguments);\n}\nfunction _defineProperties(target, props) {\n    for(var i = 0; i < props.length; i++){\n        var descriptor = props[i];\n        descriptor.enumerable = descriptor.enumerable || false;\n        descriptor.configurable = true;\n        if (\"value\" in descriptor) descriptor.writable = true;\n        Object.defineProperty(target, descriptor.key, descriptor);\n    }\n}\nfunction _create_class(Constructor, protoProps, staticProps) {\n    if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n    return Constructor;\n}\nfunction _extends() {\n    _extends = Object.assign || 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}\nfunction _get_prototype_of(o) {\n    _get_prototype_of = Object.setPrototypeOf ? Object.getPrototypeOf : function getPrototypeOf(o) {\n        return o.__proto__ || Object.getPrototypeOf(o);\n    };\n    return _get_prototype_of(o);\n}\nfunction _inherits(subClass, superClass) {\n    if (typeof superClass !== \"function\" && superClass !== null) {\n        throw new TypeError(\"Super expression must either be null or a function\");\n    }\n    subClass.prototype = Object.create(superClass && superClass.prototype, {\n        constructor: {\n            value: subClass,\n            writable: true,\n            configurable: true\n        }\n    });\n    if (superClass) _set_prototype_of(subClass, superClass);\n}\nfunction _instanceof(left, right) {\n    if (right != null && typeof Symbol !== \"undefined\" && right[Symbol.hasInstance]) {\n        return !!right[Symbol.hasInstance](left);\n    } else {\n        return left instanceof right;\n    }\n}\nfunction _is_native_function(fn) {\n    return Function.toString.call(fn).indexOf(\"[native code]\") !== -1;\n}\nfunction _object_without_properties_loose(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}\nfunction _set_prototype_of(o, p) {\n    _set_prototype_of = Object.setPrototypeOf || function setPrototypeOf(o, p) {\n        o.__proto__ = p;\n        return o;\n    };\n    return _set_prototype_of(o, p);\n}\nfunction _type_of(obj) {\n    \"@swc/helpers - typeof\";\n    return obj && typeof Symbol !== \"undefined\" && obj.constructor === Symbol ? \"symbol\" : typeof obj;\n}\nfunction _unsupported_iterable_to_array(o, minLen) {\n    if (!o) return;\n    if (typeof o === \"string\") return _array_like_to_array(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(n);\n    if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _array_like_to_array(o, minLen);\n}\nfunction _wrap_native_super(Class) {\n    var _cache = typeof Map === \"function\" ? new Map() : undefined;\n    _wrap_native_super = function wrapNativeSuper(Class) {\n        if (Class === null || !_is_native_function(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, _get_prototype_of(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 _set_prototype_of(Wrapper, Class);\n    };\n    return _wrap_native_super(Class);\n}\nfunction _is_native_reflect_construct() {\n    try {\n        var result = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function() {}));\n    } catch (_) {}\n    return (_is_native_reflect_construct = function() {\n        return !!result;\n    })();\n}\nfunction _create_for_of_iterator_helper_loose(o, allowArrayLike) {\n    var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"];\n    if (it) return (it = it.call(o)).next.bind(it);\n    if (Array.isArray(o) || (it = _unsupported_iterable_to_array(o)) || allowArrayLike) {\n        if (it) o = it;\n        var i = 0;\n        return function() {\n            if (i >= o.length) {\n                return {\n                    done: true\n                };\n            }\n            return {\n                done: false,\n                value: o[i++]\n            };\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}\nfunction _ts_generator(thisArg, body) {\n    var f, y, t, g, _ = {\n        label: 0,\n        sent: function() {\n            if (t[0] & 1) throw t[1];\n            return t[1];\n        },\n        trys: [],\n        ops: []\n    };\n    return g = {\n        next: verb(0),\n        \"throw\": verb(1),\n        \"return\": verb(2)\n    }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() {\n        return this;\n    }), g;\n    function verb(n) {\n        return function(v) {\n            return step([\n                n,\n                v\n            ]);\n        };\n    }\n    function step(op) {\n        if (f) throw new TypeError(\"Generator is already executing.\");\n        while(_)try {\n            if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n            if (y = 0, t) op = [\n                op[0] & 2,\n                t.value\n            ];\n            switch(op[0]){\n                case 0:\n                case 1:\n                    t = op;\n                    break;\n                case 4:\n                    _.label++;\n                    return {\n                        value: op[1],\n                        done: false\n                    };\n                case 5:\n                    _.label++;\n                    y = op[1];\n                    op = [\n                        0\n                    ];\n                    continue;\n                case 7:\n                    op = _.ops.pop();\n                    _.trys.pop();\n                    continue;\n                default:\n                    if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {\n                        _ = 0;\n                        continue;\n                    }\n                    if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {\n                        _.label = op[1];\n                        break;\n                    }\n                    if (op[0] === 6 && _.label < t[1]) {\n                        _.label = t[1];\n                        t = op;\n                        break;\n                    }\n                    if (t && _.label < t[2]) {\n                        _.label = t[2];\n                        _.ops.push(op);\n                        break;\n                    }\n                    if (t[2]) _.ops.pop();\n                    _.trys.pop();\n                    continue;\n            }\n            op = body.call(thisArg, _);\n        } catch (e) {\n            op = [\n                6,\n                e\n            ];\n            y = 0;\n        } finally{\n            f = t = 0;\n        }\n        if (op[0] & 5) throw op[1];\n        return {\n            value: op[0] ? op[1] : void 0,\n            done: true\n        };\n    }\n}\nfunction _ts_values(o) {\n    var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n    if (m) return m.call(o);\n    if (o && typeof o.length === \"number\") return {\n        next: function() {\n            if (o && i >= o.length) o = void 0;\n            return {\n                value: o && o[i++],\n                done: !o\n            };\n        }\n    };\n    throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n}\nvar __defProp = Object.defineProperty;\nvar __defNormalProp = function(obj, key, value) {\n    return key in obj ? __defProp(obj, key, {\n        enumerable: true,\n        configurable: true,\n        writable: true,\n        value: value\n    }) : obj[key] = value;\n};\nvar __publicField = function(obj, key, value) {\n    return __defNormalProp(obj, (typeof key === \"undefined\" ? \"undefined\" : _type_of(key)) !== \"symbol\" ? key + \"\" : key, value);\n};\nvar _a;\nvar __defProp$1 = Object.defineProperty;\nvar __defNormalProp$1 = function(obj, key, value) {\n    return key in obj ? __defProp$1(obj, key, {\n        enumerable: true,\n        configurable: true,\n        writable: true,\n        value: value\n    }) : obj[key] = value;\n};\nvar __publicField$1 = function(obj, key, value) {\n    return __defNormalProp$1(obj, (typeof key === \"undefined\" ? \"undefined\" : _type_of(key)) !== \"symbol\" ? key + \"\" : key, value);\n};\nvar NodeType$3 = /* @__PURE__ */ function(NodeType2) {\n    NodeType2[NodeType2[\"Document\"] = 0] = \"Document\";\n    NodeType2[NodeType2[\"DocumentType\"] = 1] = \"DocumentType\";\n    NodeType2[NodeType2[\"Element\"] = 2] = \"Element\";\n    NodeType2[NodeType2[\"Text\"] = 3] = \"Text\";\n    NodeType2[NodeType2[\"CDATA\"] = 4] = \"CDATA\";\n    NodeType2[NodeType2[\"Comment\"] = 5] = \"Comment\";\n    return NodeType2;\n}(NodeType$3 || {});\nvar testableAccessors$1 = {\n    Node: [\n        \"childNodes\",\n        \"parentNode\",\n        \"parentElement\",\n        \"textContent\"\n    ],\n    ShadowRoot: [\n        \"host\",\n        \"styleSheets\"\n    ],\n    Element: [\n        \"shadowRoot\",\n        \"querySelector\",\n        \"querySelectorAll\"\n    ],\n    MutationObserver: []\n};\nvar testableMethods$1 = {\n    Node: [\n        \"contains\",\n        \"getRootNode\"\n    ],\n    ShadowRoot: [\n        \"getSelection\"\n    ],\n    Element: [],\n    MutationObserver: [\n        \"constructor\"\n    ]\n};\nvar untaintedBasePrototype$1 = {};\nvar isAngularZonePresent$1 = function() {\n    return !!globalThis.Zone;\n};\nfunction getUntaintedPrototype$1(key) {\n    if (untaintedBasePrototype$1[key]) return untaintedBasePrototype$1[key];\n    var defaultObj = globalThis[key];\n    var defaultPrototype = defaultObj.prototype;\n    var accessorNames = key in testableAccessors$1 ? testableAccessors$1[key] : void 0;\n    var isUntaintedAccessors = Boolean(accessorNames && // @ts-expect-error 2345\n    accessorNames.every(function(accessor) {\n        var _a2, _b;\n        return Boolean((_b = (_a2 = Object.getOwnPropertyDescriptor(defaultPrototype, accessor)) == null ? void 0 : _a2.get) == null ? void 0 : _b.toString().includes(\"[native code]\"));\n    }));\n    var methodNames = key in testableMethods$1 ? testableMethods$1[key] : void 0;\n    var isUntaintedMethods = Boolean(methodNames && methodNames.every(// @ts-expect-error 2345\n    function(method) {\n        var _a2;\n        return typeof defaultPrototype[method] === \"function\" && ((_a2 = defaultPrototype[method]) == null ? void 0 : _a2.toString().includes(\"[native code]\"));\n    }));\n    if (isUntaintedAccessors && isUntaintedMethods && !isAngularZonePresent$1()) {\n        untaintedBasePrototype$1[key] = defaultObj.prototype;\n        return defaultObj.prototype;\n    }\n    try {\n        var iframeEl = document.createElement(\"iframe\");\n        document.body.appendChild(iframeEl);\n        var win = iframeEl.contentWindow;\n        if (!win) return defaultObj.prototype;\n        var untaintedObject = win[key].prototype;\n        document.body.removeChild(iframeEl);\n        if (!untaintedObject) return defaultPrototype;\n        return untaintedBasePrototype$1[key] = untaintedObject;\n    } catch (e) {\n        return defaultPrototype;\n    }\n}\nvar untaintedAccessorCache$1 = {};\nfunction getUntaintedAccessor$1(key, instance, accessor) {\n    var _a2;\n    var cacheKey = key + \".\" + String(accessor);\n    if (untaintedAccessorCache$1[cacheKey]) return untaintedAccessorCache$1[cacheKey].call(instance);\n    var untaintedPrototype = getUntaintedPrototype$1(key);\n    var untaintedAccessor = (_a2 = Object.getOwnPropertyDescriptor(untaintedPrototype, accessor)) == null ? void 0 : _a2.get;\n    if (!untaintedAccessor) return instance[accessor];\n    untaintedAccessorCache$1[cacheKey] = untaintedAccessor;\n    return untaintedAccessor.call(instance);\n}\nvar untaintedMethodCache$1 = {};\nfunction getUntaintedMethod$1(key, instance, method) {\n    var cacheKey = key + \".\" + String(method);\n    if (untaintedMethodCache$1[cacheKey]) return untaintedMethodCache$1[cacheKey].bind(instance);\n    var untaintedPrototype = getUntaintedPrototype$1(key);\n    var untaintedMethod = untaintedPrototype[method];\n    if (typeof untaintedMethod !== \"function\") return instance[method];\n    untaintedMethodCache$1[cacheKey] = untaintedMethod;\n    return untaintedMethod.bind(instance);\n}\nfunction childNodes$1(n2) {\n    return getUntaintedAccessor$1(\"Node\", n2, \"childNodes\");\n}\nfunction parentNode$1(n2) {\n    return getUntaintedAccessor$1(\"Node\", n2, \"parentNode\");\n}\nfunction parentElement$1(n2) {\n    return getUntaintedAccessor$1(\"Node\", n2, \"parentElement\");\n}\nfunction textContent$1(n2) {\n    return getUntaintedAccessor$1(\"Node\", n2, \"textContent\");\n}\nfunction contains$1(n2, other) {\n    return getUntaintedMethod$1(\"Node\", n2, \"contains\")(other);\n}\nfunction getRootNode$1(n2) {\n    return getUntaintedMethod$1(\"Node\", n2, \"getRootNode\")();\n}\nfunction host$1(n2) {\n    if (!n2 || !(\"host\" in n2)) return null;\n    return getUntaintedAccessor$1(\"ShadowRoot\", n2, \"host\");\n}\nfunction styleSheets$1(n2) {\n    return n2.styleSheets;\n}\nfunction shadowRoot$1(n2) {\n    if (!n2 || !(\"shadowRoot\" in n2)) return null;\n    return getUntaintedAccessor$1(\"Element\", n2, \"shadowRoot\");\n}\nfunction querySelector$1(n2, selectors) {\n    return getUntaintedAccessor$1(\"Element\", n2, \"querySelector\")(selectors);\n}\nfunction querySelectorAll$1(n2, selectors) {\n    return getUntaintedAccessor$1(\"Element\", n2, \"querySelectorAll\")(selectors);\n}\nfunction mutationObserverCtor$1() {\n    return getUntaintedPrototype$1(\"MutationObserver\").constructor;\n}\nvar index$1 = {\n    childNodes: childNodes$1,\n    parentNode: parentNode$1,\n    parentElement: parentElement$1,\n    textContent: textContent$1,\n    contains: contains$1,\n    getRootNode: getRootNode$1,\n    host: host$1,\n    styleSheets: styleSheets$1,\n    shadowRoot: shadowRoot$1,\n    querySelector: querySelector$1,\n    querySelectorAll: querySelectorAll$1,\n    mutationObserver: mutationObserverCtor$1\n};\nfunction isElement(n2) {\n    return n2.nodeType === n2.ELEMENT_NODE;\n}\nfunction isShadowRoot(n2) {\n    var hostEl = // anchor and textarea elements also have a `host` property\n    // but only shadow roots have a `mode` property\n    n2 && \"host\" in n2 && \"mode\" in n2 && index$1.host(n2) || null;\n    return Boolean(hostEl && \"shadowRoot\" in hostEl && index$1.shadowRoot(hostEl) === n2);\n}\nfunction isNativeShadowDom(shadowRoot2) {\n    return Object.prototype.toString.call(shadowRoot2) === \"[object ShadowRoot]\";\n}\nfunction fixBrowserCompatibilityIssuesInCSS(cssText) {\n    if (cssText.includes(\" background-clip: text;\") && !cssText.includes(\" -webkit-background-clip: text;\")) {\n        cssText = cssText.replace(/\\sbackground-clip:\\s*text;/g, \" -webkit-background-clip: text; background-clip: text;\");\n    }\n    return cssText;\n}\nfunction escapeImportStatement(rule2) {\n    var cssText = rule2.cssText;\n    if (cssText.split('\"').length < 3) return cssText;\n    var statement = [\n        \"@import\",\n        \"url(\" + JSON.stringify(rule2.href) + \")\"\n    ];\n    if (rule2.layerName === \"\") {\n        statement.push(\"layer\");\n    } else if (rule2.layerName) {\n        statement.push(\"layer(\" + rule2.layerName + \")\");\n    }\n    if (rule2.supportsText) {\n        statement.push(\"supports(\" + rule2.supportsText + \")\");\n    }\n    if (rule2.media.length) {\n        statement.push(rule2.media.mediaText);\n    }\n    return statement.join(\" \") + \";\";\n}\nfunction stringifyStylesheet(s2) {\n    try {\n        var rules2 = s2.rules || s2.cssRules;\n        if (!rules2) {\n            return null;\n        }\n        var sheetHref = s2.href;\n        if (!sheetHref && s2.ownerNode && s2.ownerNode.ownerDocument) {\n            sheetHref = s2.ownerNode.ownerDocument.location.href;\n        }\n        var stringifiedRules = Array.from(rules2, function(rule2) {\n            return stringifyRule(rule2, sheetHref);\n        }).join(\"\");\n        return fixBrowserCompatibilityIssuesInCSS(stringifiedRules);\n    } catch (error) {\n        return null;\n    }\n}\nfunction stringifyRule(rule2, sheetHref) {\n    if (isCSSImportRule(rule2)) {\n        var importStringified;\n        try {\n            importStringified = // we can access the imported stylesheet rules directly\n            stringifyStylesheet(rule2.styleSheet) || // work around browser issues with the raw string `@import url(...)` statement\n            escapeImportStatement(rule2);\n        } catch (error) {\n            importStringified = rule2.cssText;\n        }\n        if (rule2.styleSheet.href) {\n            return absolutifyURLs(importStringified, rule2.styleSheet.href);\n        }\n        return importStringified;\n    } else {\n        var ruleStringified = rule2.cssText;\n        if (isCSSStyleRule(rule2) && rule2.selectorText.includes(\":\")) {\n            ruleStringified = fixSafariColons(ruleStringified);\n        }\n        if (sheetHref) {\n            return absolutifyURLs(ruleStringified, sheetHref);\n        }\n        return ruleStringified;\n    }\n}\nfunction fixSafariColons(cssStringified) {\n    var regex = /(\\[(?:[\\w-]+)[^\\\\])(:(?:[\\w-]+)\\])/gm;\n    return cssStringified.replace(regex, \"$1\\\\$2\");\n}\nfunction isCSSImportRule(rule2) {\n    return \"styleSheet\" in rule2;\n}\nfunction isCSSStyleRule(rule2) {\n    return \"selectorText\" in rule2;\n}\nvar Mirror = /*#__PURE__*/ function() {\n    function Mirror() {\n        __publicField$1(this, \"idNodeMap\", /* @__PURE__ */ new Map());\n        __publicField$1(this, \"nodeMetaMap\", /* @__PURE__ */ new WeakMap());\n    }\n    var _proto = Mirror.prototype;\n    _proto.getId = function getId(n2) {\n        var _a2;\n        if (!n2) return -1;\n        var id = (_a2 = this.getMeta(n2)) == null ? void 0 : _a2.id;\n        return id != null ? id : -1;\n    };\n    _proto.getNode = function getNode(id) {\n        return this.idNodeMap.get(id) || null;\n    };\n    _proto.getIds = function getIds() {\n        return Array.from(this.idNodeMap.keys());\n    };\n    _proto.getMeta = function getMeta(n2) {\n        return this.nodeMetaMap.get(n2) || null;\n    };\n    // removes the node from idNodeMap\n    // doesn't remove the node from nodeMetaMap\n    _proto.removeNodeFromMap = function removeNodeFromMap(n2) {\n        var _this = this;\n        var id = this.getId(n2);\n        this.idNodeMap.delete(id);\n        if (n2.childNodes) {\n            n2.childNodes.forEach(function(childNode) {\n                return _this.removeNodeFromMap(childNode);\n            });\n        }\n    };\n    _proto.has = function has(id) {\n        return this.idNodeMap.has(id);\n    };\n    _proto.hasNode = function hasNode(node2) {\n        return this.nodeMetaMap.has(node2);\n    };\n    _proto.add = function add(n2, meta) {\n        var id = meta.id;\n        this.idNodeMap.set(id, n2);\n        this.nodeMetaMap.set(n2, meta);\n    };\n    _proto.replace = function replace(id, n2) {\n        var oldNode = this.getNode(id);\n        if (oldNode) {\n            var meta = this.nodeMetaMap.get(oldNode);\n            if (meta) this.nodeMetaMap.set(n2, meta);\n        }\n        this.idNodeMap.set(id, n2);\n    };\n    _proto.reset = function reset() {\n        this.idNodeMap = /* @__PURE__ */ new Map();\n        this.nodeMetaMap = /* @__PURE__ */ new WeakMap();\n    };\n    return Mirror;\n}();\nfunction createMirror$2() {\n    return new Mirror();\n}\nfunction maskInputValue(param) {\n    var element = param.element, maskInputOptions = param.maskInputOptions, tagName = param.tagName, type = param.type, value = param.value, maskInputFn = param.maskInputFn;\n    var text = value || \"\";\n    var actualType = type && toLowerCase(type);\n    if (maskInputOptions[tagName.toLowerCase()] || actualType && maskInputOptions[actualType]) {\n        if (maskInputFn) {\n            text = maskInputFn(text, element);\n        } else {\n            text = \"*\".repeat(text.length);\n        }\n    }\n    return text;\n}\nfunction toLowerCase(str) {\n    return str.toLowerCase();\n}\nvar ORIGINAL_ATTRIBUTE_NAME = \"__rrweb_original__\";\nfunction is2DCanvasBlank(canvas) {\n    var ctx = canvas.getContext(\"2d\");\n    if (!ctx) return true;\n    var chunkSize = 50;\n    for(var x2 = 0; x2 < canvas.width; x2 += chunkSize){\n        for(var y = 0; y < canvas.height; y += chunkSize){\n            var getImageData = ctx.getImageData;\n            var originalGetImageData = ORIGINAL_ATTRIBUTE_NAME in getImageData ? getImageData[ORIGINAL_ATTRIBUTE_NAME] : getImageData;\n            var pixelBuffer = new Uint32Array(// eslint-disable-next-line @typescript-eslint/no-unsafe-argument, @typescript-eslint/no-unsafe-member-access\n            originalGetImageData.call(ctx, x2, y, Math.min(chunkSize, canvas.width - x2), Math.min(chunkSize, canvas.height - y)).data.buffer);\n            if (pixelBuffer.some(function(pixel) {\n                return pixel !== 0;\n            })) return false;\n        }\n    }\n    return true;\n}\nfunction getInputType(element) {\n    var type = element.type;\n    return element.hasAttribute(\"data-rr-is-password\") ? \"password\" : type ? // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion\n    toLowerCase(type) : null;\n}\nfunction extractFileExtension(path, baseURL) {\n    var url;\n    try {\n        url = new URL(path, baseURL != null ? baseURL : window.location.href);\n    } catch (err) {\n        return null;\n    }\n    var regex = /\\.([0-9a-z]+)(?:$)/i;\n    var match = url.pathname.match(regex);\n    var _ref;\n    return (_ref = match == null ? void 0 : match[1]) != null ? _ref : null;\n}\nfunction extractOrigin(url) {\n    var origin = \"\";\n    if (url.indexOf(\"//\") > -1) {\n        origin = url.split(\"/\").slice(0, 3).join(\"/\");\n    } else {\n        origin = url.split(\"/\")[0];\n    }\n    origin = origin.split(\"?\")[0];\n    return origin;\n}\nvar URL_IN_CSS_REF = /url\\((?:(')([^']*)'|(\")(.*?)\"|([^)]*))\\)/gm;\nvar URL_PROTOCOL_MATCH = /^(?:[a-z+]+:)?\\/\\//i;\nvar URL_WWW_MATCH = /^www\\..*/i;\nvar DATA_URI = /^(data:)([^,]*),(.*)/i;\nfunction absolutifyURLs(cssText, href) {\n    return (cssText || \"\").replace(URL_IN_CSS_REF, function(origin, quote1, path1, quote2, path2, path3) {\n        var filePath = path1 || path2 || path3;\n        var maybeQuote = quote1 || quote2 || \"\";\n        if (!filePath) {\n            return origin;\n        }\n        if (URL_PROTOCOL_MATCH.test(filePath) || URL_WWW_MATCH.test(filePath)) {\n            return \"url(\" + maybeQuote + filePath + maybeQuote + \")\";\n        }\n        if (DATA_URI.test(filePath)) {\n            return \"url(\" + maybeQuote + filePath + maybeQuote + \")\";\n        }\n        if (filePath[0] === \"/\") {\n            return \"url(\" + maybeQuote + (extractOrigin(href) + filePath) + maybeQuote + \")\";\n        }\n        var stack = href.split(\"/\");\n        var parts = filePath.split(\"/\");\n        stack.pop();\n        for(var _iterator = _create_for_of_iterator_helper_loose(parts), _step; !(_step = _iterator()).done;){\n            var part = _step.value;\n            if (part === \".\") {\n                continue;\n            } else if (part === \"..\") {\n                stack.pop();\n            } else {\n                stack.push(part);\n            }\n        }\n        return \"url(\" + maybeQuote + stack.join(\"/\") + maybeQuote + \")\";\n    });\n}\nfunction normalizeCssString(cssText) {\n    return cssText.replace(/(\\/\\*[^*]*\\*\\/)|[\\s;]/g, \"\");\n}\nfunction splitCssText(cssText, style) {\n    var childNodes2 = Array.from(style.childNodes);\n    var splits = [];\n    if (childNodes2.length > 1 && cssText && typeof cssText === \"string\") {\n        var cssTextNorm = normalizeCssString(cssText);\n        for(var i2 = 1; i2 < childNodes2.length; i2++){\n            if (childNodes2[i2].textContent && typeof childNodes2[i2].textContent === \"string\") {\n                var textContentNorm = normalizeCssString(childNodes2[i2].textContent);\n                for(var j = 3; j < textContentNorm.length; j++){\n                    var bit = textContentNorm.substring(0, j);\n                    if (cssTextNorm.split(bit).length === 2) {\n                        var splitNorm = cssTextNorm.indexOf(bit);\n                        for(var k = splitNorm; k < cssText.length; k++){\n                            if (normalizeCssString(cssText.substring(0, k)).length === splitNorm) {\n                                splits.push(cssText.substring(0, k));\n                                cssText = cssText.substring(k);\n                                break;\n                            }\n                        }\n                        break;\n                    }\n                }\n            }\n        }\n    }\n    splits.push(cssText);\n    return splits;\n}\nfunction markCssSplits(cssText, style) {\n    return splitCssText(cssText, style).join(\"/* rr_split */\");\n}\nvar _id = 1;\nvar tagNameRegex = new RegExp(\"[^a-z0-9-_:]\");\nvar IGNORED_NODE = -2;\nfunction genId() {\n    return _id++;\n}\nfunction getValidTagName$1(element) {\n    if (_instanceof(element, HTMLFormElement)) {\n        return \"form\";\n    }\n    var processedTagName = toLowerCase(element.tagName);\n    if (tagNameRegex.test(processedTagName)) {\n        return \"div\";\n    }\n    return processedTagName;\n}\nvar canvasService;\nvar canvasCtx;\nvar SRCSET_NOT_SPACES = /^[^ \\t\\n\\r\\u000c]+/;\nvar SRCSET_COMMAS_OR_SPACES = /^[, \\t\\n\\r\\u000c]+/;\nfunction getAbsoluteSrcsetString(doc, attributeValue) {\n    if (attributeValue.trim() === \"\") {\n        return attributeValue;\n    }\n    var pos = 0;\n    function collectCharacters(regEx) {\n        var chars2;\n        var match = regEx.exec(attributeValue.substring(pos));\n        if (match) {\n            chars2 = match[0];\n            pos += chars2.length;\n            return chars2;\n        }\n        return \"\";\n    }\n    var output = [];\n    while(true){\n        collectCharacters(SRCSET_COMMAS_OR_SPACES);\n        if (pos >= attributeValue.length) {\n            break;\n        }\n        var url = collectCharacters(SRCSET_NOT_SPACES);\n        if (url.slice(-1) === \",\") {\n            url = absoluteToDoc(doc, url.substring(0, url.length - 1));\n            output.push(url);\n        } else {\n            var descriptorsStr = \"\";\n            url = absoluteToDoc(doc, url);\n            var inParens = false;\n            while(true){\n                var c2 = attributeValue.charAt(pos);\n                if (c2 === \"\") {\n                    output.push((url + descriptorsStr).trim());\n                    break;\n                } else if (!inParens) {\n                    if (c2 === \",\") {\n                        pos += 1;\n                        output.push((url + descriptorsStr).trim());\n                        break;\n                    } else if (c2 === \"(\") {\n                        inParens = true;\n                    }\n                } else {\n                    if (c2 === \")\") {\n                        inParens = false;\n                    }\n                }\n                descriptorsStr += c2;\n                pos += 1;\n            }\n        }\n    }\n    return output.join(\", \");\n}\nvar cachedDocument = /* @__PURE__ */ new WeakMap();\nfunction absoluteToDoc(doc, attributeValue) {\n    if (!attributeValue || attributeValue.trim() === \"\") {\n        return attributeValue;\n    }\n    return getHref(doc, attributeValue);\n}\nfunction isSVGElement(el) {\n    return Boolean(el.tagName === \"svg\" || el.ownerSVGElement);\n}\nfunction getHref(doc, customHref) {\n    var a2 = cachedDocument.get(doc);\n    if (!a2) {\n        a2 = doc.createElement(\"a\");\n        cachedDocument.set(doc, a2);\n    }\n    if (!customHref) {\n        customHref = \"\";\n    } else if (customHref.startsWith(\"blob:\") || customHref.startsWith(\"data:\")) {\n        return customHref;\n    }\n    a2.setAttribute(\"href\", customHref);\n    return a2.href;\n}\nfunction transformAttribute(doc, tagName, name, value) {\n    if (!value) {\n        return value;\n    }\n    if (name === \"src\" || name === \"href\" && !(tagName === \"use\" && value[0] === \"#\")) {\n        return absoluteToDoc(doc, value);\n    } else if (name === \"xlink:href\" && value[0] !== \"#\") {\n        return absoluteToDoc(doc, value);\n    } else if (name === \"background\" && (tagName === \"table\" || tagName === \"td\" || tagName === \"th\")) {\n        return absoluteToDoc(doc, value);\n    } else if (name === \"srcset\") {\n        return getAbsoluteSrcsetString(doc, value);\n    } else if (name === \"style\") {\n        return absolutifyURLs(value, getHref(doc));\n    } else if (tagName === \"object\" && name === \"data\") {\n        return absoluteToDoc(doc, value);\n    }\n    return value;\n}\nfunction ignoreAttribute(tagName, name, _value) {\n    return (tagName === \"video\" || tagName === \"audio\") && name === \"autoplay\";\n}\nfunction _isBlockedElement(element, blockClass, blockSelector) {\n    try {\n        if (typeof blockClass === \"string\") {\n            if (element.classList.contains(blockClass)) {\n                return true;\n            }\n        } else {\n            for(var eIndex = element.classList.length; eIndex--;){\n                var className = element.classList[eIndex];\n                if (blockClass.test(className)) {\n                    return true;\n                }\n            }\n        }\n        if (blockSelector) {\n            return element.matches(blockSelector);\n        }\n    } catch (e2) {}\n    return false;\n}\nfunction classMatchesRegex(node2, regex, checkAncestors) {\n    if (!node2) return false;\n    if (node2.nodeType !== node2.ELEMENT_NODE) {\n        if (!checkAncestors) return false;\n        return classMatchesRegex(index$1.parentNode(node2), regex, checkAncestors);\n    }\n    for(var eIndex = node2.classList.length; eIndex--;){\n        var className = node2.classList[eIndex];\n        if (regex.test(className)) {\n            return true;\n        }\n    }\n    if (!checkAncestors) return false;\n    return classMatchesRegex(index$1.parentNode(node2), regex, checkAncestors);\n}\nfunction needMaskingText(node2, maskTextClass, maskTextSelector, checkAncestors) {\n    var el;\n    if (isElement(node2)) {\n        el = node2;\n        if (!index$1.childNodes(el).length) {\n            return false;\n        }\n    } else if (index$1.parentElement(node2) === null) {\n        return false;\n    } else {\n        el = index$1.parentElement(node2);\n    }\n    try {\n        if (typeof maskTextClass === \"string\") {\n            if (checkAncestors) {\n                if (el.closest(\".\" + maskTextClass)) return true;\n            } else {\n                if (el.classList.contains(maskTextClass)) return true;\n            }\n        } else {\n            if (classMatchesRegex(el, maskTextClass, checkAncestors)) return true;\n        }\n        if (maskTextSelector) {\n            if (checkAncestors) {\n                if (el.closest(maskTextSelector)) return true;\n            } else {\n                if (el.matches(maskTextSelector)) return true;\n            }\n        }\n    } catch (e2) {}\n    return false;\n}\nfunction onceIframeLoaded(iframeEl, listener, iframeLoadTimeout) {\n    var win = iframeEl.contentWindow;\n    if (!win) {\n        return;\n    }\n    var fired = false;\n    var readyState;\n    try {\n        readyState = win.document.readyState;\n    } catch (error) {\n        return;\n    }\n    if (readyState !== \"complete\") {\n        var timer = setTimeout(function() {\n            if (!fired) {\n                listener();\n                fired = true;\n            }\n        }, iframeLoadTimeout);\n        iframeEl.addEventListener(\"load\", function() {\n            clearTimeout(timer);\n            fired = true;\n            listener();\n        });\n        return;\n    }\n    var blankUrl = \"about:blank\";\n    if (win.location.href !== blankUrl || iframeEl.src === blankUrl || iframeEl.src === \"\") {\n        setTimeout(listener, 0);\n        return iframeEl.addEventListener(\"load\", listener);\n    }\n    iframeEl.addEventListener(\"load\", listener);\n}\nfunction onceStylesheetLoaded(link, listener, styleSheetLoadTimeout) {\n    var fired = false;\n    var styleSheetLoaded;\n    try {\n        styleSheetLoaded = link.sheet;\n    } catch (error) {\n        return;\n    }\n    if (styleSheetLoaded) return;\n    var timer = setTimeout(function() {\n        if (!fired) {\n            listener();\n            fired = true;\n        }\n    }, styleSheetLoadTimeout);\n    link.addEventListener(\"load\", function() {\n        clearTimeout(timer);\n        fired = true;\n        listener();\n    });\n}\nfunction serializeNode(n2, options) {\n    var doc = options.doc, mirror2 = options.mirror, blockClass = options.blockClass, blockSelector = options.blockSelector, needsMask = options.needsMask, inlineStylesheet = options.inlineStylesheet, _options_maskInputOptions = options.maskInputOptions, maskInputOptions = _options_maskInputOptions === void 0 ? {} : _options_maskInputOptions, maskTextFn = options.maskTextFn, maskInputFn = options.maskInputFn, _options_dataURLOptions = options.dataURLOptions, dataURLOptions = _options_dataURLOptions === void 0 ? {} : _options_dataURLOptions, inlineImages = options.inlineImages, recordCanvas = options.recordCanvas, keepIframeSrcFn = options.keepIframeSrcFn, _options_newlyAddedElement = options.newlyAddedElement, newlyAddedElement = _options_newlyAddedElement === void 0 ? false : _options_newlyAddedElement, _options_cssCaptured = options.cssCaptured, cssCaptured = _options_cssCaptured === void 0 ? false : _options_cssCaptured;\n    var rootId = getRootId(doc, mirror2);\n    switch(n2.nodeType){\n        case n2.DOCUMENT_NODE:\n            if (n2.compatMode !== \"CSS1Compat\") {\n                return {\n                    type: NodeType$3.Document,\n                    childNodes: [],\n                    compatMode: n2.compatMode\n                };\n            } else {\n                return {\n                    type: NodeType$3.Document,\n                    childNodes: []\n                };\n            }\n        case n2.DOCUMENT_TYPE_NODE:\n            return {\n                type: NodeType$3.DocumentType,\n                name: n2.name,\n                publicId: n2.publicId,\n                systemId: n2.systemId,\n                rootId: rootId\n            };\n        case n2.ELEMENT_NODE:\n            return serializeElementNode(n2, {\n                doc: doc,\n                blockClass: blockClass,\n                blockSelector: blockSelector,\n                inlineStylesheet: inlineStylesheet,\n                maskInputOptions: maskInputOptions,\n                maskInputFn: maskInputFn,\n                dataURLOptions: dataURLOptions,\n                inlineImages: inlineImages,\n                recordCanvas: recordCanvas,\n                keepIframeSrcFn: keepIframeSrcFn,\n                newlyAddedElement: newlyAddedElement,\n                rootId: rootId\n            });\n        case n2.TEXT_NODE:\n            return serializeTextNode(n2, {\n                doc: doc,\n                needsMask: needsMask,\n                maskTextFn: maskTextFn,\n                rootId: rootId,\n                cssCaptured: cssCaptured\n            });\n        case n2.CDATA_SECTION_NODE:\n            return {\n                type: NodeType$3.CDATA,\n                textContent: \"\",\n                rootId: rootId\n            };\n        case n2.COMMENT_NODE:\n            return {\n                type: NodeType$3.Comment,\n                textContent: index$1.textContent(n2) || \"\",\n                rootId: rootId\n            };\n        default:\n            return false;\n    }\n}\nfunction getRootId(doc, mirror2) {\n    if (!mirror2.hasNode(doc)) return void 0;\n    var docId = mirror2.getId(doc);\n    return docId === 1 ? void 0 : docId;\n}\nfunction serializeTextNode(n2, options) {\n    var needsMask = options.needsMask, maskTextFn = options.maskTextFn, rootId = options.rootId, cssCaptured = options.cssCaptured;\n    var parent = index$1.parentNode(n2);\n    var parentTagName = parent && parent.tagName;\n    var textContent2 = \"\";\n    var isStyle = parentTagName === \"STYLE\" ? true : void 0;\n    var isScript = parentTagName === \"SCRIPT\" ? true : void 0;\n    if (isScript) {\n        textContent2 = \"SCRIPT_PLACEHOLDER\";\n    } else if (!cssCaptured) {\n        textContent2 = index$1.textContent(n2);\n        if (isStyle && textContent2) {\n            textContent2 = absolutifyURLs(textContent2, getHref(options.doc));\n        }\n    }\n    if (!isStyle && !isScript && textContent2 && needsMask) {\n        textContent2 = maskTextFn ? maskTextFn(textContent2, index$1.parentElement(n2)) : textContent2.replace(/[\\S]/g, \"*\");\n    }\n    return {\n        type: NodeType$3.Text,\n        textContent: textContent2 || \"\",\n        rootId: rootId\n    };\n}\nfunction serializeElementNode(n2, options) {\n    var doc = options.doc, blockClass = options.blockClass, blockSelector = options.blockSelector, inlineStylesheet = options.inlineStylesheet, _options_maskInputOptions = options.maskInputOptions, maskInputOptions = _options_maskInputOptions === void 0 ? {} : _options_maskInputOptions, maskInputFn = options.maskInputFn, _options_dataURLOptions = options.dataURLOptions, dataURLOptions = _options_dataURLOptions === void 0 ? {} : _options_dataURLOptions, inlineImages = options.inlineImages, recordCanvas = options.recordCanvas, keepIframeSrcFn = options.keepIframeSrcFn, _options_newlyAddedElement = options.newlyAddedElement, newlyAddedElement = _options_newlyAddedElement === void 0 ? false : _options_newlyAddedElement, rootId = options.rootId;\n    var needBlock = _isBlockedElement(n2, blockClass, blockSelector);\n    var tagName = getValidTagName$1(n2);\n    var attributes = {};\n    var len = n2.attributes.length;\n    for(var i2 = 0; i2 < len; i2++){\n        var attr = n2.attributes[i2];\n        if (!ignoreAttribute(tagName, attr.name, attr.value)) {\n            attributes[attr.name] = transformAttribute(doc, tagName, toLowerCase(attr.name), attr.value);\n        }\n    }\n    if (tagName === \"link\" && inlineStylesheet) {\n        var stylesheet = Array.from(doc.styleSheets).find(function(s2) {\n            return s2.href === n2.href;\n        });\n        var cssText = null;\n        if (stylesheet) {\n            cssText = stringifyStylesheet(stylesheet);\n        }\n        if (cssText) {\n            delete attributes.rel;\n            delete attributes.href;\n            attributes._cssText = cssText;\n        }\n    }\n    if (tagName === \"style\" && n2.sheet) {\n        var cssText1 = stringifyStylesheet(n2.sheet);\n        if (cssText1) {\n            if (n2.childNodes.length > 1) {\n                cssText1 = markCssSplits(cssText1, n2);\n            }\n            attributes._cssText = cssText1;\n        }\n    }\n    if (tagName === \"input\" || tagName === \"textarea\" || tagName === \"select\") {\n        var value = n2.value;\n        var checked = n2.checked;\n        if (attributes.type !== \"radio\" && attributes.type !== \"checkbox\" && attributes.type !== \"submit\" && attributes.type !== \"button\" && value) {\n            attributes.value = maskInputValue({\n                element: n2,\n                type: getInputType(n2),\n                tagName: tagName,\n                value: value,\n                maskInputOptions: maskInputOptions,\n                maskInputFn: maskInputFn\n            });\n        } else if (checked) {\n            attributes.checked = checked;\n        }\n    }\n    if (tagName === \"option\") {\n        if (n2.selected && !maskInputOptions[\"select\"]) {\n            attributes.selected = true;\n        } else {\n            delete attributes.selected;\n        }\n    }\n    if (tagName === \"dialog\" && n2.open) {\n        attributes.rr_open_mode = n2.matches(\"dialog:modal\") ? \"modal\" : \"non-modal\";\n    }\n    if (tagName === \"canvas\" && recordCanvas) {\n        if (n2.__context === \"2d\") {\n            if (!is2DCanvasBlank(n2)) {\n                attributes.rr_dataURL = n2.toDataURL(dataURLOptions.type, dataURLOptions.quality);\n            }\n        } else if (!(\"__context\" in n2)) {\n            var canvasDataURL = n2.toDataURL(dataURLOptions.type, dataURLOptions.quality);\n            var blankCanvas = doc.createElement(\"canvas\");\n            blankCanvas.width = n2.width;\n            blankCanvas.height = n2.height;\n            var blankCanvasDataURL = blankCanvas.toDataURL(dataURLOptions.type, dataURLOptions.quality);\n            if (canvasDataURL !== blankCanvasDataURL) {\n                attributes.rr_dataURL = canvasDataURL;\n            }\n        }\n    }\n    if (tagName === \"img\" && inlineImages) {\n        if (!canvasService) {\n            canvasService = doc.createElement(\"canvas\");\n            canvasCtx = canvasService.getContext(\"2d\");\n        }\n        var image = n2;\n        var imageSrc = image.currentSrc || image.getAttribute(\"src\") || \"<unknown-src>\";\n        var priorCrossOrigin = image.crossOrigin;\n        var recordInlineImage = function() {\n            image.removeEventListener(\"load\", recordInlineImage);\n            try {\n                canvasService.width = image.naturalWidth;\n                canvasService.height = image.naturalHeight;\n                canvasCtx.drawImage(image, 0, 0);\n                attributes.rr_dataURL = canvasService.toDataURL(dataURLOptions.type, dataURLOptions.quality);\n            } catch (err) {\n                if (image.crossOrigin !== \"anonymous\") {\n                    image.crossOrigin = \"anonymous\";\n                    if (image.complete && image.naturalWidth !== 0) recordInlineImage();\n                    else image.addEventListener(\"load\", recordInlineImage);\n                    return;\n                } else {\n                    console.warn(\"Cannot inline img src=\" + imageSrc + \"! Error: \" + err);\n                }\n            }\n            if (image.crossOrigin === \"anonymous\") {\n                priorCrossOrigin ? attributes.crossOrigin = priorCrossOrigin : image.removeAttribute(\"crossorigin\");\n            }\n        };\n        if (image.complete && image.naturalWidth !== 0) recordInlineImage();\n        else image.addEventListener(\"load\", recordInlineImage);\n    }\n    if (tagName === \"audio\" || tagName === \"video\") {\n        var mediaAttributes = attributes;\n        mediaAttributes.rr_mediaState = n2.paused ? \"paused\" : \"played\";\n        mediaAttributes.rr_mediaCurrentTime = n2.currentTime;\n        mediaAttributes.rr_mediaPlaybackRate = n2.playbackRate;\n        mediaAttributes.rr_mediaMuted = n2.muted;\n        mediaAttributes.rr_mediaLoop = n2.loop;\n        mediaAttributes.rr_mediaVolume = n2.volume;\n    }\n    if (!newlyAddedElement) {\n        if (n2.scrollLeft) {\n            attributes.rr_scrollLeft = n2.scrollLeft;\n        }\n        if (n2.scrollTop) {\n            attributes.rr_scrollTop = n2.scrollTop;\n        }\n    }\n    if (needBlock) {\n        var _n2_getBoundingClientRect = n2.getBoundingClientRect(), width = _n2_getBoundingClientRect.width, height = _n2_getBoundingClientRect.height;\n        attributes = {\n            class: attributes.class,\n            rr_width: \"\" + width + \"px\",\n            rr_height: \"\" + height + \"px\"\n        };\n    }\n    if (tagName === \"iframe\" && !keepIframeSrcFn(attributes.src)) {\n        if (!n2.contentDocument) {\n            attributes.rr_src = attributes.src;\n        }\n        delete attributes.src;\n    }\n    var isCustomElement;\n    try {\n        if (customElements.get(tagName)) isCustomElement = true;\n    } catch (e2) {}\n    return {\n        type: NodeType$3.Element,\n        tagName: tagName,\n        attributes: attributes,\n        childNodes: [],\n        isSVG: isSVGElement(n2) || void 0,\n        needBlock: needBlock,\n        rootId: rootId,\n        isCustom: isCustomElement\n    };\n}\nfunction lowerIfExists(maybeAttr) {\n    if (maybeAttr === void 0 || maybeAttr === null) {\n        return \"\";\n    } else {\n        return maybeAttr.toLowerCase();\n    }\n}\nfunction slimDOMExcluded(sn, slimDOMOptions) {\n    if (slimDOMOptions.comment && sn.type === NodeType$3.Comment) {\n        return true;\n    } else if (sn.type === NodeType$3.Element) {\n        if (slimDOMOptions.script && // script tag\n        (sn.tagName === \"script\" || // (module)preload link\n        sn.tagName === \"link\" && (sn.attributes.rel === \"preload\" || sn.attributes.rel === \"modulepreload\") && sn.attributes.as === \"script\" || // prefetch link\n        sn.tagName === \"link\" && sn.attributes.rel === \"prefetch\" && typeof sn.attributes.href === \"string\" && extractFileExtension(sn.attributes.href) === \"js\")) {\n            return true;\n        } else if (slimDOMOptions.headFavicon && (sn.tagName === \"link\" && sn.attributes.rel === \"shortcut icon\" || sn.tagName === \"meta\" && (lowerIfExists(sn.attributes.name).match(/^msapplication-tile(image|color)$/) || lowerIfExists(sn.attributes.name) === \"application-name\" || lowerIfExists(sn.attributes.rel) === \"icon\" || lowerIfExists(sn.attributes.rel) === \"apple-touch-icon\" || lowerIfExists(sn.attributes.rel) === \"shortcut icon\"))) {\n            return true;\n        } else if (sn.tagName === \"meta\") {\n            if (slimDOMOptions.headMetaDescKeywords && lowerIfExists(sn.attributes.name).match(/^description|keywords$/)) {\n                return true;\n            } else if (slimDOMOptions.headMetaSocial && (lowerIfExists(sn.attributes.property).match(/^(og|twitter|fb):/) || // og = opengraph (facebook)\n            lowerIfExists(sn.attributes.name).match(/^(og|twitter):/) || lowerIfExists(sn.attributes.name) === \"pinterest\")) {\n                return true;\n            } else if (slimDOMOptions.headMetaRobots && (lowerIfExists(sn.attributes.name) === \"robots\" || lowerIfExists(sn.attributes.name) === \"googlebot\" || lowerIfExists(sn.attributes.name) === \"bingbot\")) {\n                return true;\n            } else if (slimDOMOptions.headMetaHttpEquiv && sn.attributes[\"http-equiv\"] !== void 0) {\n                return true;\n            } else if (slimDOMOptions.headMetaAuthorship && (lowerIfExists(sn.attributes.name) === \"author\" || lowerIfExists(sn.attributes.name) === \"generator\" || lowerIfExists(sn.attributes.name) === \"framework\" || lowerIfExists(sn.attributes.name) === \"publisher\" || lowerIfExists(sn.attributes.name) === \"progid\" || lowerIfExists(sn.attributes.property).match(/^article:/) || lowerIfExists(sn.attributes.property).match(/^product:/))) {\n                return true;\n            } else if (slimDOMOptions.headMetaVerification && (lowerIfExists(sn.attributes.name) === \"google-site-verification\" || lowerIfExists(sn.attributes.name) === \"yandex-verification\" || lowerIfExists(sn.attributes.name) === \"csrf-token\" || lowerIfExists(sn.attributes.name) === \"p:domain_verify\" || lowerIfExists(sn.attributes.name) === \"verify-v1\" || lowerIfExists(sn.attributes.name) === \"verification\" || lowerIfExists(sn.attributes.name) === \"shopify-checkout-api-token\")) {\n                return true;\n            }\n        }\n    }\n    return false;\n}\nfunction serializeNodeWithId(n2, options) {\n    var doc = options.doc, mirror2 = options.mirror, blockClass = options.blockClass, blockSelector = options.blockSelector, maskTextClass = options.maskTextClass, maskTextSelector = options.maskTextSelector, _options_skipChild = options.skipChild, skipChild = _options_skipChild === void 0 ? false : _options_skipChild, _options_inlineStylesheet = options.inlineStylesheet, inlineStylesheet = _options_inlineStylesheet === void 0 ? true : _options_inlineStylesheet, _options_maskInputOptions = options.maskInputOptions, maskInputOptions = _options_maskInputOptions === void 0 ? {} : _options_maskInputOptions, maskTextFn = options.maskTextFn, maskInputFn = options.maskInputFn, slimDOMOptions = options.slimDOMOptions, _options_dataURLOptions = options.dataURLOptions, dataURLOptions = _options_dataURLOptions === void 0 ? {} : _options_dataURLOptions, _options_inlineImages = options.inlineImages, inlineImages = _options_inlineImages === void 0 ? false : _options_inlineImages, _options_recordCanvas = options.recordCanvas, recordCanvas = _options_recordCanvas === void 0 ? false : _options_recordCanvas, onSerialize = options.onSerialize, onIframeLoad = options.onIframeLoad, _options_iframeLoadTimeout = options.iframeLoadTimeout, iframeLoadTimeout = _options_iframeLoadTimeout === void 0 ? 5e3 : _options_iframeLoadTimeout, onStylesheetLoad = options.onStylesheetLoad, _options_stylesheetLoadTimeout = options.stylesheetLoadTimeout, stylesheetLoadTimeout = _options_stylesheetLoadTimeout === void 0 ? 5e3 : _options_stylesheetLoadTimeout, _options_keepIframeSrcFn = options.keepIframeSrcFn, keepIframeSrcFn = _options_keepIframeSrcFn === void 0 ? function() {\n        return false;\n    } : _options_keepIframeSrcFn, _options_newlyAddedElement = options.newlyAddedElement, newlyAddedElement = _options_newlyAddedElement === void 0 ? false : _options_newlyAddedElement, _options_cssCaptured = options.cssCaptured, cssCaptured = _options_cssCaptured === void 0 ? false : _options_cssCaptured;\n    var needsMask = options.needsMask;\n    var _options_preserveWhiteSpace = options.preserveWhiteSpace, preserveWhiteSpace = _options_preserveWhiteSpace === void 0 ? true : _options_preserveWhiteSpace;\n    if (!needsMask) {\n        var checkAncestors = needsMask === void 0;\n        needsMask = needMaskingText(n2, maskTextClass, maskTextSelector, checkAncestors);\n    }\n    var _serializedNode = serializeNode(n2, {\n        doc: doc,\n        mirror: mirror2,\n        blockClass: blockClass,\n        blockSelector: blockSelector,\n        needsMask: needsMask,\n        inlineStylesheet: inlineStylesheet,\n        maskInputOptions: maskInputOptions,\n        maskTextFn: maskTextFn,\n        maskInputFn: maskInputFn,\n        dataURLOptions: dataURLOptions,\n        inlineImages: inlineImages,\n        recordCanvas: recordCanvas,\n        keepIframeSrcFn: keepIframeSrcFn,\n        newlyAddedElement: newlyAddedElement,\n        cssCaptured: cssCaptured\n    });\n    if (!_serializedNode) {\n        console.warn(n2, \"not serialized\");\n        return null;\n    }\n    var id;\n    if (mirror2.hasNode(n2)) {\n        id = mirror2.getId(n2);\n    } else if (slimDOMExcluded(_serializedNode, slimDOMOptions) || !preserveWhiteSpace && _serializedNode.type === NodeType$3.Text && !_serializedNode.textContent.replace(/^\\s+|\\s+$/gm, \"\").length) {\n        id = IGNORED_NODE;\n    } else {\n        id = genId();\n    }\n    var serializedNode = Object.assign(_serializedNode, {\n        id: id\n    });\n    mirror2.add(n2, serializedNode);\n    if (id === IGNORED_NODE) {\n        return null;\n    }\n    if (onSerialize) {\n        onSerialize(n2);\n    }\n    var recordChild = !skipChild;\n    if (serializedNode.type === NodeType$3.Element) {\n        recordChild = recordChild && !serializedNode.needBlock;\n        delete serializedNode.needBlock;\n        var shadowRootEl = index$1.shadowRoot(n2);\n        if (shadowRootEl && isNativeShadowDom(shadowRootEl)) serializedNode.isShadowHost = true;\n    }\n    if ((serializedNode.type === NodeType$3.Document || serializedNode.type === NodeType$3.Element) && recordChild) {\n        if (slimDOMOptions.headWhitespace && serializedNode.type === NodeType$3.Element && serializedNode.tagName === \"head\") {\n            preserveWhiteSpace = false;\n        }\n        var bypassOptions = {\n            doc: doc,\n            mirror: mirror2,\n            blockClass: blockClass,\n            blockSelector: blockSelector,\n            needsMask: needsMask,\n            maskTextClass: maskTextClass,\n            maskTextSelector: maskTextSelector,\n            skipChild: skipChild,\n            inlineStylesheet: inlineStylesheet,\n            maskInputOptions: maskInputOptions,\n            maskTextFn: maskTextFn,\n            maskInputFn: maskInputFn,\n            slimDOMOptions: slimDOMOptions,\n            dataURLOptions: dataURLOptions,\n            inlineImages: inlineImages,\n            recordCanvas: recordCanvas,\n            preserveWhiteSpace: preserveWhiteSpace,\n            onSerialize: onSerialize,\n            onIframeLoad: onIframeLoad,\n            iframeLoadTimeout: iframeLoadTimeout,\n            onStylesheetLoad: onStylesheetLoad,\n            stylesheetLoadTimeout: stylesheetLoadTimeout,\n            keepIframeSrcFn: keepIframeSrcFn,\n            cssCaptured: false\n        };\n        if (serializedNode.type === NodeType$3.Element && serializedNode.tagName === \"textarea\" && serializedNode.attributes.value !== void 0) ;\n        else {\n            if (serializedNode.type === NodeType$3.Element && serializedNode.attributes._cssText !== void 0 && typeof serializedNode.attributes._cssText === \"string\") {\n                bypassOptions.cssCaptured = true;\n            }\n            for(var _iterator = _create_for_of_iterator_helper_loose(Array.from(index$1.childNodes(n2))), _step; !(_step = _iterator()).done;){\n                var childN = _step.value;\n                var serializedChildNode = serializeNodeWithId(childN, bypassOptions);\n                if (serializedChildNode) {\n                    serializedNode.childNodes.push(serializedChildNode);\n                }\n            }\n        }\n        var shadowRootEl1 = null;\n        if (isElement(n2) && (shadowRootEl1 = index$1.shadowRoot(n2))) {\n            for(var _iterator1 = _create_for_of_iterator_helper_loose(Array.from(index$1.childNodes(shadowRootEl1))), _step1; !(_step1 = _iterator1()).done;){\n                var childN1 = _step1.value;\n                var serializedChildNode1 = serializeNodeWithId(childN1, bypassOptions);\n                if (serializedChildNode1) {\n                    isNativeShadowDom(shadowRootEl1) && (serializedChildNode1.isShadow = true);\n                    serializedNode.childNodes.push(serializedChildNode1);\n                }\n            }\n        }\n    }\n    var parent = index$1.parentNode(n2);\n    if (parent && isShadowRoot(parent) && isNativeShadowDom(parent)) {\n        serializedNode.isShadow = true;\n    }\n    if (serializedNode.type === NodeType$3.Element && serializedNode.tagName === \"iframe\") {\n        onceIframeLoaded(n2, function() {\n            var iframeDoc = n2.contentDocument;\n            if (iframeDoc && onIframeLoad) {\n                var serializedIframeNode = serializeNodeWithId(iframeDoc, {\n                    doc: iframeDoc,\n                    mirror: mirror2,\n                    blockClass: blockClass,\n                    blockSelector: blockSelector,\n                    needsMask: needsMask,\n                    maskTextClass: maskTextClass,\n                    maskTextSelector: maskTextSelector,\n                    skipChild: false,\n                    inlineStylesheet: inlineStylesheet,\n                    maskInputOptions: maskInputOptions,\n                    maskTextFn: maskTextFn,\n                    maskInputFn: maskInputFn,\n                    slimDOMOptions: slimDOMOptions,\n                    dataURLOptions: dataURLOptions,\n                    inlineImages: inlineImages,\n                    recordCanvas: recordCanvas,\n                    preserveWhiteSpace: preserveWhiteSpace,\n                    onSerialize: onSerialize,\n                    onIframeLoad: onIframeLoad,\n                    iframeLoadTimeout: iframeLoadTimeout,\n                    onStylesheetLoad: onStylesheetLoad,\n                    stylesheetLoadTimeout: stylesheetLoadTimeout,\n                    keepIframeSrcFn: keepIframeSrcFn\n                });\n                if (serializedIframeNode) {\n                    onIframeLoad(n2, serializedIframeNode);\n                }\n            }\n        }, iframeLoadTimeout);\n    }\n    if (serializedNode.type === NodeType$3.Element && serializedNode.tagName === \"link\" && typeof serializedNode.attributes.rel === \"string\" && (serializedNode.attributes.rel === \"stylesheet\" || serializedNode.attributes.rel === \"preload\" && typeof serializedNode.attributes.href === \"string\" && extractFileExtension(serializedNode.attributes.href) === \"css\")) {\n        onceStylesheetLoaded(n2, function() {\n            if (onStylesheetLoad) {\n                var serializedLinkNode = serializeNodeWithId(n2, {\n                    doc: doc,\n                    mirror: mirror2,\n                    blockClass: blockClass,\n                    blockSelector: blockSelector,\n                    needsMask: needsMask,\n                    maskTextClass: maskTextClass,\n                    maskTextSelector: maskTextSelector,\n                    skipChild: false,\n                    inlineStylesheet: inlineStylesheet,\n                    maskInputOptions: maskInputOptions,\n                    maskTextFn: maskTextFn,\n                    maskInputFn: maskInputFn,\n                    slimDOMOptions: slimDOMOptions,\n                    dataURLOptions: dataURLOptions,\n                    inlineImages: inlineImages,\n                    recordCanvas: recordCanvas,\n                    preserveWhiteSpace: preserveWhiteSpace,\n                    onSerialize: onSerialize,\n                    onIframeLoad: onIframeLoad,\n                    iframeLoadTimeout: iframeLoadTimeout,\n                    onStylesheetLoad: onStylesheetLoad,\n                    stylesheetLoadTimeout: stylesheetLoadTimeout,\n                    keepIframeSrcFn: keepIframeSrcFn\n                });\n                if (serializedLinkNode) {\n                    onStylesheetLoad(n2, serializedLinkNode);\n                }\n            }\n        }, stylesheetLoadTimeout);\n    }\n    return serializedNode;\n}\nfunction snapshot(n2, options) {\n    var _ref = options || {}, tmp = _ref.mirror, mirror2 = tmp === void 0 ? new Mirror() : tmp, _ref_blockClass = _ref.blockClass, blockClass = _ref_blockClass === void 0 ? \"rr-block\" : _ref_blockClass, _ref_blockSelector = _ref.blockSelector, blockSelector = _ref_blockSelector === void 0 ? null : _ref_blockSelector, _ref_maskTextClass = _ref.maskTextClass, maskTextClass = _ref_maskTextClass === void 0 ? \"rr-mask\" : _ref_maskTextClass, _ref_maskTextSelector = _ref.maskTextSelector, maskTextSelector = _ref_maskTextSelector === void 0 ? null : _ref_maskTextSelector, _ref_inlineStylesheet = _ref.inlineStylesheet, inlineStylesheet = _ref_inlineStylesheet === void 0 ? true : _ref_inlineStylesheet, _ref_inlineImages = _ref.inlineImages, inlineImages = _ref_inlineImages === void 0 ? false : _ref_inlineImages, _ref_recordCanvas = _ref.recordCanvas, recordCanvas = _ref_recordCanvas === void 0 ? false : _ref_recordCanvas, _ref_maskAllInputs = _ref.maskAllInputs, maskAllInputs = _ref_maskAllInputs === void 0 ? false : _ref_maskAllInputs, maskTextFn = _ref.maskTextFn, maskInputFn = _ref.maskInputFn, _ref_slimDOM = _ref.slimDOM, slimDOM = _ref_slimDOM === void 0 ? false : _ref_slimDOM, dataURLOptions = _ref.dataURLOptions, preserveWhiteSpace = _ref.preserveWhiteSpace, onSerialize = _ref.onSerialize, onIframeLoad = _ref.onIframeLoad, iframeLoadTimeout = _ref.iframeLoadTimeout, onStylesheetLoad = _ref.onStylesheetLoad, stylesheetLoadTimeout = _ref.stylesheetLoadTimeout, _ref_keepIframeSrcFn = _ref.keepIframeSrcFn, keepIframeSrcFn = _ref_keepIframeSrcFn === void 0 ? function() {\n        return false;\n    } : _ref_keepIframeSrcFn;\n    var maskInputOptions = maskAllInputs === true ? {\n        color: true,\n        date: true,\n        \"datetime-local\": true,\n        email: true,\n        month: true,\n        number: true,\n        range: true,\n        search: true,\n        tel: true,\n        text: true,\n        time: true,\n        url: true,\n        week: true,\n        textarea: true,\n        select: true,\n        password: true\n    } : maskAllInputs === false ? {\n        password: true\n    } : maskAllInputs;\n    var slimDOMOptions = slimDOM === true || slimDOM === \"all\" ? // if true: set of sensible options that should not throw away any information\n    {\n        script: true,\n        comment: true,\n        headFavicon: true,\n        headWhitespace: true,\n        headMetaDescKeywords: slimDOM === \"all\",\n        // destructive\n        headMetaSocial: true,\n        headMetaRobots: true,\n        headMetaHttpEquiv: true,\n        headMetaAuthorship: true,\n        headMetaVerification: true\n    } : slimDOM === false ? {} : slimDOM;\n    return serializeNodeWithId(n2, {\n        doc: n2,\n        mirror: mirror2,\n        blockClass: blockClass,\n        blockSelector: blockSelector,\n        maskTextClass: maskTextClass,\n        maskTextSelector: maskTextSelector,\n        skipChild: false,\n        inlineStylesheet: inlineStylesheet,\n        maskInputOptions: maskInputOptions,\n        maskTextFn: maskTextFn,\n        maskInputFn: maskInputFn,\n        slimDOMOptions: slimDOMOptions,\n        dataURLOptions: dataURLOptions,\n        inlineImages: inlineImages,\n        recordCanvas: recordCanvas,\n        preserveWhiteSpace: preserveWhiteSpace,\n        onSerialize: onSerialize,\n        onIframeLoad: onIframeLoad,\n        iframeLoadTimeout: iframeLoadTimeout,\n        onStylesheetLoad: onStylesheetLoad,\n        stylesheetLoadTimeout: stylesheetLoadTimeout,\n        keepIframeSrcFn: keepIframeSrcFn,\n        newlyAddedElement: false\n    });\n}\nfunction getDefaultExportFromCjs$1(x2) {\n    return x2 && x2.__esModule && Object.prototype.hasOwnProperty.call(x2, \"default\") ? x2[\"default\"] : x2;\n}\nfunction getAugmentedNamespace$1(n2) {\n    if (n2.__esModule) return n2;\n    var f2 = n2.default;\n    if (typeof f2 == \"function\") {\n        var a2 = function a22() {\n            if (_instanceof(this, a22)) {\n                return Reflect.construct(f2, arguments, this.constructor);\n            }\n            return f2.apply(this, arguments);\n        };\n        a2.prototype = f2.prototype;\n    } else a2 = {};\n    Object.defineProperty(a2, \"__esModule\", {\n        value: true\n    });\n    Object.keys(n2).forEach(function(k) {\n        var d = Object.getOwnPropertyDescriptor(n2, k);\n        Object.defineProperty(a2, k, d.get ? d : {\n            enumerable: true,\n            get: function get() {\n                return n2[k];\n            }\n        });\n    });\n    return a2;\n}\nvar picocolors_browser$1 = {\n    exports: {}\n};\nvar x$1 = String;\nvar create$1 = function create$1() {\n    return {\n        isColorSupported: false,\n        reset: x$1,\n        bold: x$1,\n        dim: x$1,\n        italic: x$1,\n        underline: x$1,\n        inverse: x$1,\n        hidden: x$1,\n        strikethrough: x$1,\n        black: x$1,\n        red: x$1,\n        green: x$1,\n        yellow: x$1,\n        blue: x$1,\n        magenta: x$1,\n        cyan: x$1,\n        white: x$1,\n        gray: x$1,\n        bgBlack: x$1,\n        bgRed: x$1,\n        bgGreen: x$1,\n        bgYellow: x$1,\n        bgBlue: x$1,\n        bgMagenta: x$1,\n        bgCyan: x$1,\n        bgWhite: x$1\n    };\n};\npicocolors_browser$1.exports = create$1();\npicocolors_browser$1.exports.createColors = create$1;\nvar picocolors_browserExports$1 = picocolors_browser$1.exports;\nvar __viteBrowserExternal$2 = {};\nvar __viteBrowserExternal$1$1 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({\n    __proto__: null,\n    default: __viteBrowserExternal$2\n}, Symbol.toStringTag, {\n    value: \"Module\"\n}));\nvar require$$2$1 = /* @__PURE__ */ getAugmentedNamespace$1(__viteBrowserExternal$1$1);\nvar pico$1 = picocolors_browserExports$1;\nvar terminalHighlight$1$1 = require$$2$1;\nvar CssSyntaxError$3$1 = /*#__PURE__*/ function(Error1) {\n    _inherits(CssSyntaxError, Error1);\n    function CssSyntaxError(message, line, column, source, file, plugin22) {\n        var _this;\n        _this = Error1.call(this, message) || this;\n        _this.name = \"CssSyntaxError\";\n        _this.reason = message;\n        if (file) {\n            _this.file = file;\n        }\n        if (source) {\n            _this.source = source;\n        }\n        if (plugin22) {\n            _this.plugin = plugin22;\n        }\n        if (typeof line !== \"undefined\" && typeof column !== \"undefined\") {\n            if (typeof line === \"number\") {\n                _this.line = line;\n                _this.column = column;\n            } else {\n                _this.line = line.line;\n                _this.column = line.column;\n                _this.endLine = column.line;\n                _this.endColumn = column.column;\n            }\n        }\n        _this.setMessage();\n        if (Error.captureStackTrace) {\n            Error.captureStackTrace(_this, CssSyntaxError);\n        }\n        return _this;\n    }\n    var _proto = CssSyntaxError.prototype;\n    _proto.setMessage = function setMessage() {\n        this.message = this.plugin ? this.plugin + \": \" : \"\";\n        this.message += this.file ? this.file : \"<css input>\";\n        if (typeof this.line !== \"undefined\") {\n            this.message += \":\" + this.line + \":\" + this.column;\n        }\n        this.message += \": \" + this.reason;\n    };\n    _proto.showSourceCode = function showSourceCode(color) {\n        var _this = this;\n        if (!this.source) return \"\";\n        var css = this.source;\n        if (color == null) color = pico$1.isColorSupported;\n        if (terminalHighlight$1$1) {\n            if (color) css = terminalHighlight$1$1(css);\n        }\n        var lines = css.split(/\\r?\\n/);\n        var start = Math.max(this.line - 3, 0);\n        var end = Math.min(this.line + 2, lines.length);\n        var maxWidth = String(end).length;\n        var mark, aside;\n        if (color) {\n            var _pico$1_createColors = pico$1.createColors(true), bold = _pico$1_createColors.bold, gray = _pico$1_createColors.gray, red = _pico$1_createColors.red;\n            mark = function(text) {\n                return bold(red(text));\n            };\n            aside = function(text) {\n                return gray(text);\n            };\n        } else {\n            mark = aside = function(str) {\n                return str;\n            };\n        }\n        return lines.slice(start, end).map(function(line, index2) {\n            var number = start + 1 + index2;\n            var gutter = \" \" + (\" \" + number).slice(-maxWidth) + \" | \";\n            if (number === _this.line) {\n                var spacing = aside(gutter.replace(/\\d/g, \" \")) + line.slice(0, _this.column - 1).replace(/[^\\t]/g, \" \");\n                return mark(\">\") + aside(gutter) + line + \"\\n \" + spacing + mark(\"^\");\n            }\n            return \" \" + aside(gutter) + line;\n        }).join(\"\\n\");\n    };\n    _proto.toString = function toString() {\n        var code = this.showSourceCode();\n        if (code) {\n            code = \"\\n\\n\" + code + \"\\n\";\n        }\n        return this.name + \": \" + this.message + code;\n    };\n    return CssSyntaxError;\n}(_wrap_native_super(Error));\nvar cssSyntaxError$1 = CssSyntaxError$3$1;\nCssSyntaxError$3$1.default = CssSyntaxError$3$1;\nvar symbols$1 = {};\nsymbols$1.isClean = Symbol(\"isClean\");\nsymbols$1.my = Symbol(\"my\");\nvar DEFAULT_RAW$1 = {\n    after: \"\\n\",\n    beforeClose: \"\\n\",\n    beforeComment: \"\\n\",\n    beforeDecl: \"\\n\",\n    beforeOpen: \" \",\n    beforeRule: \"\\n\",\n    colon: \": \",\n    commentLeft: \" \",\n    commentRight: \" \",\n    emptyBody: \"\",\n    indent: \"    \",\n    semicolon: false\n};\nfunction capitalize$1(str) {\n    return str[0].toUpperCase() + str.slice(1);\n}\nvar Stringifier$2$1 = /*#__PURE__*/ function() {\n    function Stringifier(builder) {\n        this.builder = builder;\n    }\n    var _proto = Stringifier.prototype;\n    _proto.atrule = function atrule(node2, semicolon) {\n        var name = \"@\" + node2.name;\n        var params = node2.params ? this.rawValue(node2, \"params\") : \"\";\n        if (typeof node2.raws.afterName !== \"undefined\") {\n            name += node2.raws.afterName;\n        } else if (params) {\n            name += \" \";\n        }\n        if (node2.nodes) {\n            this.block(node2, name + params);\n        } else {\n            var end = (node2.raws.between || \"\") + (semicolon ? \";\" : \"\");\n            this.builder(name + params + end, node2);\n        }\n    };\n    _proto.beforeAfter = function beforeAfter(node2, detect) {\n        var value;\n        if (node2.type === \"decl\") {\n            value = this.raw(node2, null, \"beforeDecl\");\n        } else if (node2.type === \"comment\") {\n            value = this.raw(node2, null, \"beforeComment\");\n        } else if (detect === \"before\") {\n            value = this.raw(node2, null, \"beforeRule\");\n        } else {\n            value = this.raw(node2, null, \"beforeClose\");\n        }\n        var buf = node2.parent;\n        var depth = 0;\n        while(buf && buf.type !== \"root\"){\n            depth += 1;\n            buf = buf.parent;\n        }\n        if (value.includes(\"\\n\")) {\n            var indent = this.raw(node2, null, \"indent\");\n            if (indent.length) {\n                for(var step = 0; step < depth; step++)value += indent;\n            }\n        }\n        return value;\n    };\n    _proto.block = function block(node2, start) {\n        var between = this.raw(node2, \"between\", \"beforeOpen\");\n        this.builder(start + between + \"{\", node2, \"start\");\n        var after;\n        if (node2.nodes && node2.nodes.length) {\n            this.body(node2);\n            after = this.raw(node2, \"after\");\n        } else {\n            after = this.raw(node2, \"after\", \"emptyBody\");\n        }\n        if (after) this.builder(after);\n        this.builder(\"}\", node2, \"end\");\n    };\n    _proto.body = function body(node2) {\n        var last = node2.nodes.length - 1;\n        while(last > 0){\n            if (node2.nodes[last].type !== \"comment\") break;\n            last -= 1;\n        }\n        var semicolon = this.raw(node2, \"semicolon\");\n        for(var i2 = 0; i2 < node2.nodes.length; i2++){\n            var child = node2.nodes[i2];\n            var before = this.raw(child, \"before\");\n            if (before) this.builder(before);\n            this.stringify(child, last !== i2 || semicolon);\n        }\n    };\n    _proto.comment = function comment(node2) {\n        var left = this.raw(node2, \"left\", \"commentLeft\");\n        var right = this.raw(node2, \"right\", \"commentRight\");\n        this.builder(\"/*\" + left + node2.text + right + \"*/\", node2);\n    };\n    _proto.decl = function decl(node2, semicolon) {\n        var between = this.raw(node2, \"between\", \"colon\");\n        var string = node2.prop + between + this.rawValue(node2, \"value\");\n        if (node2.important) {\n            string += node2.raws.important || \" !important\";\n        }\n        if (semicolon) string += \";\";\n        this.builder(string, node2);\n    };\n    _proto.document = function document1(node2) {\n        this.body(node2);\n    };\n    _proto.raw = function raw(node2, own, detect) {\n        var value;\n        if (!detect) detect = own;\n        if (own) {\n            value = node2.raws[own];\n            if (typeof value !== \"undefined\") return value;\n        }\n        var parent = node2.parent;\n        if (detect === \"before\") {\n            if (!parent || parent.type === \"root\" && parent.first === node2) {\n                return \"\";\n            }\n            if (parent && parent.type === \"document\") {\n                return \"\";\n            }\n        }\n        if (!parent) return DEFAULT_RAW$1[detect];\n        var root2 = node2.root();\n        if (!root2.rawCache) root2.rawCache = {};\n        if (typeof root2.rawCache[detect] !== \"undefined\") {\n            return root2.rawCache[detect];\n        }\n        if (detect === \"before\" || detect === \"after\") {\n            return this.beforeAfter(node2, detect);\n        } else {\n            var method = \"raw\" + capitalize$1(detect);\n            if (this[method]) {\n                value = this[method](root2, node2);\n            } else {\n                root2.walk(function(i2) {\n                    value = i2.raws[own];\n                    if (typeof value !== \"undefined\") return false;\n                });\n            }\n        }\n        if (typeof value === \"undefined\") value = DEFAULT_RAW$1[detect];\n        root2.rawCache[detect] = value;\n        return value;\n    };\n    _proto.rawBeforeClose = function rawBeforeClose(root2) {\n        var value;\n        root2.walk(function(i2) {\n            if (i2.nodes && i2.nodes.length > 0) {\n                if (typeof i2.raws.after !== \"undefined\") {\n                    value = i2.raws.after;\n                    if (value.includes(\"\\n\")) {\n                        value = value.replace(/[^\\n]+$/, \"\");\n                    }\n                    return false;\n                }\n            }\n        });\n        if (value) value = value.replace(/\\S/g, \"\");\n        return value;\n    };\n    _proto.rawBeforeComment = function rawBeforeComment(root2, node2) {\n        var value;\n        root2.walkComments(function(i2) {\n            if (typeof i2.raws.before !== \"undefined\") {\n                value = i2.raws.before;\n                if (value.includes(\"\\n\")) {\n                    value = value.replace(/[^\\n]+$/, \"\");\n                }\n                return false;\n            }\n        });\n        if (typeof value === \"undefined\") {\n            value = this.raw(node2, null, \"beforeDecl\");\n        } else if (value) {\n            value = value.replace(/\\S/g, \"\");\n        }\n        return value;\n    };\n    _proto.rawBeforeDecl = function rawBeforeDecl(root2, node2) {\n        var value;\n        root2.walkDecls(function(i2) {\n            if (typeof i2.raws.before !== \"undefined\") {\n                value = i2.raws.before;\n                if (value.includes(\"\\n\")) {\n                    value = value.replace(/[^\\n]+$/, \"\");\n                }\n                return false;\n            }\n        });\n        if (typeof value === \"undefined\") {\n            value = this.raw(node2, null, \"beforeRule\");\n        } else if (value) {\n            value = value.replace(/\\S/g, \"\");\n        }\n        return value;\n    };\n    _proto.rawBeforeOpen = function rawBeforeOpen(root2) {\n        var value;\n        root2.walk(function(i2) {\n            if (i2.type !== \"decl\") {\n                value = i2.raws.between;\n                if (typeof value !== \"undefined\") return false;\n            }\n        });\n        return value;\n    };\n    _proto.rawBeforeRule = function rawBeforeRule(root2) {\n        var value;\n        root2.walk(function(i2) {\n            if (i2.nodes && (i2.parent !== root2 || root2.first !== i2)) {\n                if (typeof i2.raws.before !== \"undefined\") {\n                    value = i2.raws.before;\n                    if (value.includes(\"\\n\")) {\n                        value = value.replace(/[^\\n]+$/, \"\");\n                    }\n                    return false;\n                }\n            }\n        });\n        if (value) value = value.replace(/\\S/g, \"\");\n        return value;\n    };\n    _proto.rawColon = function rawColon(root2) {\n        var value;\n        root2.walkDecls(function(i2) {\n            if (typeof i2.raws.between !== \"undefined\") {\n                value = i2.raws.between.replace(/[^\\s:]/g, \"\");\n                return false;\n            }\n        });\n        return value;\n    };\n    _proto.rawEmptyBody = function rawEmptyBody(root2) {\n        var value;\n        root2.walk(function(i2) {\n            if (i2.nodes && i2.nodes.length === 0) {\n                value = i2.raws.after;\n                if (typeof value !== \"undefined\") return false;\n            }\n        });\n        return value;\n    };\n    _proto.rawIndent = function rawIndent(root2) {\n        if (root2.raws.indent) return root2.raws.indent;\n        var value;\n        root2.walk(function(i2) {\n            var p = i2.parent;\n            if (p && p !== root2 && p.parent && p.parent === root2) {\n                if (typeof i2.raws.before !== \"undefined\") {\n                    var parts = i2.raws.before.split(\"\\n\");\n                    value = parts[parts.length - 1];\n                    value = value.replace(/\\S/g, \"\");\n                    return false;\n                }\n            }\n        });\n        return value;\n    };\n    _proto.rawSemicolon = function rawSemicolon(root2) {\n        var value;\n        root2.walk(function(i2) {\n            if (i2.nodes && i2.nodes.length && i2.last.type === \"decl\") {\n                value = i2.raws.semicolon;\n                if (typeof value !== \"undefined\") return false;\n            }\n        });\n        return value;\n    };\n    _proto.rawValue = function rawValue(node2, prop) {\n        var value = node2[prop];\n        var raw = node2.raws[prop];\n        if (raw && raw.value === value) {\n            return raw.raw;\n        }\n        return value;\n    };\n    _proto.root = function root(node2) {\n        this.body(node2);\n        if (node2.raws.after) this.builder(node2.raws.after);\n    };\n    _proto.rule = function rule(node2) {\n        this.block(node2, this.rawValue(node2, \"selector\"));\n        if (node2.raws.ownSemicolon) {\n            this.builder(node2.raws.ownSemicolon, node2, \"end\");\n        }\n    };\n    _proto.stringify = function stringify(node2, semicolon) {\n        if (!this[node2.type]) {\n            throw new Error(\"Unknown AST node type \" + node2.type + \". Maybe you need to change PostCSS stringifier.\");\n        }\n        this[node2.type](node2, semicolon);\n    };\n    return Stringifier;\n}();\nvar stringifier$1 = Stringifier$2$1;\nStringifier$2$1.default = Stringifier$2$1;\nvar Stringifier$1$1 = stringifier$1;\nfunction stringify$4$1(node2, builder) {\n    var str = new Stringifier$1$1(builder);\n    str.stringify(node2);\n}\nvar stringify_1$1 = stringify$4$1;\nstringify$4$1.default = stringify$4$1;\nvar isClean$2$1 = symbols$1.isClean, my$2$1 = symbols$1.my;\nvar CssSyntaxError$2$1 = cssSyntaxError$1;\nvar Stringifier2$1 = stringifier$1;\nvar stringify$3$1 = stringify_1$1;\nfunction cloneNode$1(obj, parent) {\n    var cloned = new obj.constructor();\n    for(var i2 in obj){\n        if (!Object.prototype.hasOwnProperty.call(obj, i2)) {\n            continue;\n        }\n        if (i2 === \"proxyCache\") continue;\n        var value = obj[i2];\n        var type = typeof value === \"undefined\" ? \"undefined\" : _type_of(value);\n        if (i2 === \"parent\" && type === \"object\") {\n            if (parent) cloned[i2] = parent;\n        } else if (i2 === \"source\") {\n            cloned[i2] = value;\n        } else if (Array.isArray(value)) {\n            cloned[i2] = value.map(function(j) {\n                return cloneNode$1(j, cloned);\n            });\n        } else {\n            if (type === \"object\" && value !== null) value = cloneNode$1(value);\n            cloned[i2] = value;\n        }\n    }\n    return cloned;\n}\nvar Node$4$1 = /*#__PURE__*/ function() {\n    function Node2(defaults) {\n        if (defaults === void 0) defaults = {};\n        this.raws = {};\n        this[isClean$2$1] = false;\n        this[my$2$1] = true;\n        for(var name in defaults){\n            if (name === \"nodes\") {\n                this.nodes = [];\n                for(var _iterator = _create_for_of_iterator_helper_loose(defaults[name]), _step; !(_step = _iterator()).done;){\n                    var node2 = _step.value;\n                    if (typeof node2.clone === \"function\") {\n                        this.append(node2.clone());\n                    } else {\n                        this.append(node2);\n                    }\n                }\n            } else {\n                this[name] = defaults[name];\n            }\n        }\n    }\n    var _proto = Node2.prototype;\n    _proto.addToError = function addToError(error) {\n        error.postcssNode = this;\n        if (error.stack && this.source && /\\n\\s{4}at /.test(error.stack)) {\n            var s2 = this.source;\n            error.stack = error.stack.replace(/\\n\\s{4}at /, \"$&\" + s2.input.from + \":\" + s2.start.line + \":\" + s2.start.column + \"$&\");\n        }\n        return error;\n    };\n    _proto.after = function after(add) {\n        this.parent.insertAfter(this, add);\n        return this;\n    };\n    _proto.assign = function assign(overrides) {\n        if (overrides === void 0) overrides = {};\n        for(var name in overrides){\n            this[name] = overrides[name];\n        }\n        return this;\n    };\n    _proto.before = function before(add) {\n        this.parent.insertBefore(this, add);\n        return this;\n    };\n    _proto.cleanRaws = function cleanRaws(keepBetween) {\n        delete this.raws.before;\n        delete this.raws.after;\n        if (!keepBetween) delete this.raws.between;\n    };\n    _proto.clone = function clone(overrides) {\n        if (overrides === void 0) overrides = {};\n        var cloned = cloneNode$1(this);\n        for(var name in overrides){\n            cloned[name] = overrides[name];\n        }\n        return cloned;\n    };\n    _proto.cloneAfter = function cloneAfter(overrides) {\n        if (overrides === void 0) overrides = {};\n        var cloned = this.clone(overrides);\n        this.parent.insertAfter(this, cloned);\n        return cloned;\n    };\n    _proto.cloneBefore = function cloneBefore(overrides) {\n        if (overrides === void 0) overrides = {};\n        var cloned = this.clone(overrides);\n        this.parent.insertBefore(this, cloned);\n        return cloned;\n    };\n    _proto.error = function error(message, opts) {\n        if (opts === void 0) opts = {};\n        if (this.source) {\n            var _this_rangeBy = this.rangeBy(opts), end = _this_rangeBy.end, start = _this_rangeBy.start;\n            return this.source.input.error(message, {\n                column: start.column,\n                line: start.line\n            }, {\n                column: end.column,\n                line: end.line\n            }, opts);\n        }\n        return new CssSyntaxError$2$1(message);\n    };\n    _proto.getProxyProcessor = function getProxyProcessor() {\n        return {\n            get: function get(node2, prop) {\n                if (prop === \"proxyOf\") {\n                    return node2;\n                } else if (prop === \"root\") {\n                    return function() {\n                        return node2.root().toProxy();\n                    };\n                } else {\n                    return node2[prop];\n                }\n            },\n            set: function set(node2, prop, value) {\n                if (node2[prop] === value) return true;\n                node2[prop] = value;\n                if (prop === \"prop\" || prop === \"value\" || prop === \"name\" || prop === \"params\" || prop === \"important\" || /* c8 ignore next */ prop === \"text\") {\n                    node2.markDirty();\n                }\n                return true;\n            }\n        };\n    };\n    _proto.markDirty = function markDirty() {\n        if (this[isClean$2$1]) {\n            this[isClean$2$1] = false;\n            var next = this;\n            while(next = next.parent){\n                next[isClean$2$1] = false;\n            }\n        }\n    };\n    _proto.next = function next() {\n        if (!this.parent) return void 0;\n        var index2 = this.parent.index(this);\n        return this.parent.nodes[index2 + 1];\n    };\n    _proto.positionBy = function positionBy(opts, stringRepresentation) {\n        var pos = this.source.start;\n        if (opts.index) {\n            pos = this.positionInside(opts.index, stringRepresentation);\n        } else if (opts.word) {\n            stringRepresentation = this.toString();\n            var index2 = stringRepresentation.indexOf(opts.word);\n            if (index2 !== -1) pos = this.positionInside(index2, stringRepresentation);\n        }\n        return pos;\n    };\n    _proto.positionInside = function positionInside(index2, stringRepresentation) {\n        var string = stringRepresentation || this.toString();\n        var column = this.source.start.column;\n        var line = this.source.start.line;\n        for(var i2 = 0; i2 < index2; i2++){\n            if (string[i2] === \"\\n\") {\n                column = 1;\n                line += 1;\n            } else {\n                column += 1;\n            }\n        }\n        return {\n            column: column,\n            line: line\n        };\n    };\n    _proto.prev = function prev() {\n        if (!this.parent) return void 0;\n        var index2 = this.parent.index(this);\n        return this.parent.nodes[index2 - 1];\n    };\n    _proto.rangeBy = function rangeBy(opts) {\n        var start = {\n            column: this.source.start.column,\n            line: this.source.start.line\n        };\n        var end = this.source.end ? {\n            column: this.source.end.column + 1,\n            line: this.source.end.line\n        } : {\n            column: start.column + 1,\n            line: start.line\n        };\n        if (opts.word) {\n            var stringRepresentation = this.toString();\n            var index2 = stringRepresentation.indexOf(opts.word);\n            if (index2 !== -1) {\n                start = this.positionInside(index2, stringRepresentation);\n                end = this.positionInside(index2 + opts.word.length, stringRepresentation);\n            }\n        } else {\n            if (opts.start) {\n                start = {\n                    column: opts.start.column,\n                    line: opts.start.line\n                };\n            } else if (opts.index) {\n                start = this.positionInside(opts.index);\n            }\n            if (opts.end) {\n                end = {\n                    column: opts.end.column,\n                    line: opts.end.line\n                };\n            } else if (typeof opts.endIndex === \"number\") {\n                end = this.positionInside(opts.endIndex);\n            } else if (opts.index) {\n                end = this.positionInside(opts.index + 1);\n            }\n        }\n        if (end.line < start.line || end.line === start.line && end.column <= start.column) {\n            end = {\n                column: start.column + 1,\n                line: start.line\n            };\n        }\n        return {\n            end: end,\n            start: start\n        };\n    };\n    _proto.raw = function raw(prop, defaultType) {\n        var str = new Stringifier2$1();\n        return str.raw(this, prop, defaultType);\n    };\n    _proto.remove = function remove() {\n        if (this.parent) {\n            this.parent.removeChild(this);\n        }\n        this.parent = void 0;\n        return this;\n    };\n    _proto.replaceWith = function replaceWith() {\n        for(var _len = arguments.length, nodes = new Array(_len), _key = 0; _key < _len; _key++){\n            nodes[_key] = arguments[_key];\n        }\n        if (this.parent) {\n            var bookmark = this;\n            var foundSelf = false;\n            for(var _iterator = _create_for_of_iterator_helper_loose(nodes), _step; !(_step = _iterator()).done;){\n                var node2 = _step.value;\n                if (node2 === this) {\n                    foundSelf = true;\n                } else if (foundSelf) {\n                    this.parent.insertAfter(bookmark, node2);\n                    bookmark = node2;\n                } else {\n                    this.parent.insertBefore(bookmark, node2);\n                }\n            }\n            if (!foundSelf) {\n                this.remove();\n            }\n        }\n        return this;\n    };\n    _proto.root = function root() {\n        var result2 = this;\n        while(result2.parent && result2.parent.type !== \"document\"){\n            result2 = result2.parent;\n        }\n        return result2;\n    };\n    _proto.toJSON = function toJSON(_, inputs) {\n        var fixed = {};\n        var emitInputs = inputs == null;\n        inputs = inputs || /* @__PURE__ */ new Map();\n        var inputsNextIndex = 0;\n        for(var name in this){\n            if (!Object.prototype.hasOwnProperty.call(this, name)) {\n                continue;\n            }\n            if (name === \"parent\" || name === \"proxyCache\") continue;\n            var value = this[name];\n            if (Array.isArray(value)) {\n                fixed[name] = value.map(function(i2) {\n                    if ((typeof i2 === \"undefined\" ? \"undefined\" : _type_of(i2)) === \"object\" && i2.toJSON) {\n                        return i2.toJSON(null, inputs);\n                    } else {\n                        return i2;\n                    }\n                });\n            } else if ((typeof value === \"undefined\" ? \"undefined\" : _type_of(value)) === \"object\" && value.toJSON) {\n                fixed[name] = value.toJSON(null, inputs);\n            } else if (name === \"source\") {\n                var inputId = inputs.get(value.input);\n                if (inputId == null) {\n                    inputId = inputsNextIndex;\n                    inputs.set(value.input, inputsNextIndex);\n                    inputsNextIndex++;\n                }\n                fixed[name] = {\n                    end: value.end,\n                    inputId: inputId,\n                    start: value.start\n                };\n            } else {\n                fixed[name] = value;\n            }\n        }\n        if (emitInputs) {\n            fixed.inputs = [].concat(inputs.keys()).map(function(input2) {\n                return input2.toJSON();\n            });\n        }\n        return fixed;\n    };\n    _proto.toProxy = function toProxy() {\n        if (!this.proxyCache) {\n            this.proxyCache = new Proxy(this, this.getProxyProcessor());\n        }\n        return this.proxyCache;\n    };\n    _proto.toString = function toString(stringifier2) {\n        if (stringifier2 === void 0) stringifier2 = stringify$3$1;\n        if (stringifier2.stringify) stringifier2 = stringifier2.stringify;\n        var result2 = \"\";\n        stringifier2(this, function(i2) {\n            result2 += i2;\n        });\n        return result2;\n    };\n    _proto.warn = function warn(result2, text, opts) {\n        var data = {\n            node: this\n        };\n        for(var i2 in opts)data[i2] = opts[i2];\n        return result2.warn(text, data);\n    };\n    _create_class(Node2, [\n        {\n            key: \"proxyOf\",\n            get: function get() {\n                return this;\n            }\n        }\n    ]);\n    return Node2;\n}();\nvar node$1 = Node$4$1;\nNode$4$1.default = Node$4$1;\nvar Node$3$1 = node$1;\nvar Declaration$4$1 = /*#__PURE__*/ function(Node$3$1) {\n    _inherits(Declaration, Node$3$1);\n    function Declaration(defaults) {\n        var _this;\n        if (defaults && typeof defaults.value !== \"undefined\" && typeof defaults.value !== \"string\") {\n            defaults = _extends({}, defaults, {\n                value: String(defaults.value)\n            });\n        }\n        _this = Node$3$1.call(this, defaults) || this;\n        _this.type = \"decl\";\n        return _this;\n    }\n    _create_class(Declaration, [\n        {\n            key: \"variable\",\n            get: function get() {\n                return this.prop.startsWith(\"--\") || this.prop[0] === \"$\";\n            }\n        }\n    ]);\n    return Declaration;\n}(Node$3$1);\nvar declaration$1 = Declaration$4$1;\nDeclaration$4$1.default = Declaration$4$1;\nvar urlAlphabet$1 = \"useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict\";\nvar nanoid$1$1 = function(size) {\n    if (size === void 0) size = 21;\n    var id = \"\";\n    var i2 = size;\n    while(i2--){\n        id += urlAlphabet$1[Math.random() * 64 | 0];\n    }\n    return id;\n};\nvar nonSecure$1 = {\n    nanoid: nanoid$1$1};\nvar SourceMapConsumer$2$1 = require$$2$1.SourceMapConsumer, SourceMapGenerator$2$1 = require$$2$1.SourceMapGenerator;\nvar existsSync$1 = require$$2$1.existsSync, readFileSync$1 = require$$2$1.readFileSync;\nvar dirname$1$1 = require$$2$1.dirname, join$1 = require$$2$1.join;\nfunction fromBase64$1(str) {\n    if (Buffer) {\n        return Buffer.from(str, \"base64\").toString();\n    } else {\n        return window.atob(str);\n    }\n}\nvar PreviousMap$2$1 = /*#__PURE__*/ function() {\n    function PreviousMap(css, opts) {\n        if (opts.map === false) return;\n        this.loadAnnotation(css);\n        this.inline = this.startWith(this.annotation, \"data:\");\n        var prev = opts.map ? opts.map.prev : void 0;\n        var text = this.loadMap(opts.from, prev);\n        if (!this.mapFile && opts.from) {\n            this.mapFile = opts.from;\n        }\n        if (this.mapFile) this.root = dirname$1$1(this.mapFile);\n        if (text) this.text = text;\n    }\n    var _proto = PreviousMap.prototype;\n    _proto.consumer = function consumer() {\n        if (!this.consumerCache) {\n            this.consumerCache = new SourceMapConsumer$2$1(this.text);\n        }\n        return this.consumerCache;\n    };\n    _proto.decodeInline = function decodeInline(text) {\n        var baseCharsetUri = /^data:application\\/json;charset=utf-?8;base64,/;\n        var baseUri = /^data:application\\/json;base64,/;\n        var charsetUri = /^data:application\\/json;charset=utf-?8,/;\n        var uri = /^data:application\\/json,/;\n        if (charsetUri.test(text) || uri.test(text)) {\n            return decodeURIComponent(text.substr(RegExp.lastMatch.length));\n        }\n        if (baseCharsetUri.test(text) || baseUri.test(text)) {\n            return fromBase64$1(text.substr(RegExp.lastMatch.length));\n        }\n        var encoding = text.match(/data:application\\/json;([^,]+),/)[1];\n        throw new Error(\"Unsupported source map encoding \" + encoding);\n    };\n    _proto.getAnnotationURL = function getAnnotationURL(sourceMapString) {\n        return sourceMapString.replace(/^\\/\\*\\s*# sourceMappingURL=/, \"\").trim();\n    };\n    _proto.isMap = function isMap(map) {\n        if ((typeof map === \"undefined\" ? \"undefined\" : _type_of(map)) !== \"object\") return false;\n        return typeof map.mappings === \"string\" || typeof map._mappings === \"string\" || Array.isArray(map.sections);\n    };\n    _proto.loadAnnotation = function loadAnnotation(css) {\n        var comments = css.match(/\\/\\*\\s*# sourceMappingURL=/gm);\n        if (!comments) return;\n        var start = css.lastIndexOf(comments.pop());\n        var end = css.indexOf(\"*/\", start);\n        if (start > -1 && end > -1) {\n            this.annotation = this.getAnnotationURL(css.substring(start, end));\n        }\n    };\n    _proto.loadFile = function loadFile(path) {\n        this.root = dirname$1$1(path);\n        if (existsSync$1(path)) {\n            this.mapFile = path;\n            return readFileSync$1(path, \"utf-8\").toString().trim();\n        }\n    };\n    _proto.loadMap = function loadMap(file, prev) {\n        if (prev === false) return false;\n        if (prev) {\n            if (typeof prev === \"string\") {\n                return prev;\n            } else if (typeof prev === \"function\") {\n                var prevPath = prev(file);\n                if (prevPath) {\n                    var map = this.loadFile(prevPath);\n                    if (!map) {\n                        throw new Error(\"Unable to load previous source map: \" + prevPath.toString());\n                    }\n                    return map;\n                }\n            } else if (_instanceof(prev, SourceMapConsumer$2$1)) {\n                return SourceMapGenerator$2$1.fromSourceMap(prev).toString();\n            } else if (_instanceof(prev, SourceMapGenerator$2$1)) {\n                return prev.toString();\n            } else if (this.isMap(prev)) {\n                return JSON.stringify(prev);\n            } else {\n                throw new Error(\"Unsupported previous source map format: \" + prev.toString());\n            }\n        } else if (this.inline) {\n            return this.decodeInline(this.annotation);\n        } else if (this.annotation) {\n            var map1 = this.annotation;\n            if (file) map1 = join$1(dirname$1$1(file), map1);\n            return this.loadFile(map1);\n        }\n    };\n    _proto.startWith = function startWith(string, start) {\n        if (!string) return false;\n        return string.substr(0, start.length) === start;\n    };\n    _proto.withContent = function withContent() {\n        return !!(this.consumer().sourcesContent && this.consumer().sourcesContent.length > 0);\n    };\n    return PreviousMap;\n}();\nvar previousMap$1 = PreviousMap$2$1;\nPreviousMap$2$1.default = PreviousMap$2$1;\nvar SourceMapConsumer$1$1 = require$$2$1.SourceMapConsumer, SourceMapGenerator$1$1 = require$$2$1.SourceMapGenerator;\nvar fileURLToPath$1 = require$$2$1.fileURLToPath, pathToFileURL$1$1 = require$$2$1.pathToFileURL;\nvar isAbsolute$1 = require$$2$1.isAbsolute, resolve$1$1 = require$$2$1.resolve;\nvar nanoid$2 = nonSecure$1.nanoid;\nvar terminalHighlight$2 = require$$2$1;\nvar CssSyntaxError$1$1 = cssSyntaxError$1;\nvar PreviousMap$1$1 = previousMap$1;\nvar fromOffsetCache$1 = Symbol(\"fromOffsetCache\");\nvar sourceMapAvailable$1$1 = Boolean(SourceMapConsumer$1$1 && SourceMapGenerator$1$1);\nvar pathAvailable$1$1 = Boolean(resolve$1$1 && isAbsolute$1);\nvar Input$4$1 = /*#__PURE__*/ function() {\n    function Input(css, opts) {\n        if (opts === void 0) opts = {};\n        if (css === null || typeof css === \"undefined\" || (typeof css === \"undefined\" ? \"undefined\" : _type_of(css)) === \"object\" && !css.toString) {\n            throw new Error(\"PostCSS received \" + css + \" instead of CSS string\");\n        }\n        this.css = css.toString();\n        if (this.css[0] === \"\\uFEFF\" || this.css[0] === \"￾\") {\n            this.hasBOM = true;\n            this.css = this.css.slice(1);\n        } else {\n            this.hasBOM = false;\n        }\n        if (opts.from) {\n            if (!pathAvailable$1$1 || /^\\w+:\\/\\//.test(opts.from) || isAbsolute$1(opts.from)) {\n                this.file = opts.from;\n            } else {\n                this.file = resolve$1$1(opts.from);\n            }\n        }\n        if (pathAvailable$1$1 && sourceMapAvailable$1$1) {\n            var map = new PreviousMap$1$1(this.css, opts);\n            if (map.text) {\n                this.map = map;\n                var file = map.consumer().file;\n                if (!this.file && file) this.file = this.mapResolve(file);\n            }\n        }\n        if (!this.file) {\n            this.id = \"<input css \" + nanoid$2(6) + \">\";\n        }\n        if (this.map) this.map.file = this.from;\n    }\n    var _proto = Input.prototype;\n    _proto.error = function error(message, line, column, opts) {\n        if (opts === void 0) opts = {};\n        var result2, endLine, endColumn;\n        if (line && (typeof line === \"undefined\" ? \"undefined\" : _type_of(line)) === \"object\") {\n            var start = line;\n            var end = column;\n            if (typeof start.offset === \"number\") {\n                var pos = this.fromOffset(start.offset);\n                line = pos.line;\n                column = pos.col;\n            } else {\n                line = start.line;\n                column = start.column;\n            }\n            if (typeof end.offset === \"number\") {\n                var pos1 = this.fromOffset(end.offset);\n                endLine = pos1.line;\n                endColumn = pos1.col;\n            } else {\n                endLine = end.line;\n                endColumn = end.column;\n            }\n        } else if (!column) {\n            var pos2 = this.fromOffset(line);\n            line = pos2.line;\n            column = pos2.col;\n        }\n        var origin = this.origin(line, column, endLine, endColumn);\n        if (origin) {\n            result2 = new CssSyntaxError$1$1(message, origin.endLine === void 0 ? origin.line : {\n                column: origin.column,\n                line: origin.line\n            }, origin.endLine === void 0 ? origin.column : {\n                column: origin.endColumn,\n                line: origin.endLine\n            }, origin.source, origin.file, opts.plugin);\n        } else {\n            result2 = new CssSyntaxError$1$1(message, endLine === void 0 ? line : {\n                column: column,\n                line: line\n            }, endLine === void 0 ? column : {\n                column: endColumn,\n                line: endLine\n            }, this.css, this.file, opts.plugin);\n        }\n        result2.input = {\n            column: column,\n            endColumn: endColumn,\n            endLine: endLine,\n            line: line,\n            source: this.css\n        };\n        if (this.file) {\n            if (pathToFileURL$1$1) {\n                result2.input.url = pathToFileURL$1$1(this.file).toString();\n            }\n            result2.input.file = this.file;\n        }\n        return result2;\n    };\n    _proto.fromOffset = function fromOffset(offset) {\n        var lastLine, lineToIndex;\n        if (!this[fromOffsetCache$1]) {\n            var lines = this.css.split(\"\\n\");\n            lineToIndex = new Array(lines.length);\n            var prevIndex = 0;\n            for(var i2 = 0, l2 = lines.length; i2 < l2; i2++){\n                lineToIndex[i2] = prevIndex;\n                prevIndex += lines[i2].length + 1;\n            }\n            this[fromOffsetCache$1] = lineToIndex;\n        } else {\n            lineToIndex = this[fromOffsetCache$1];\n        }\n        lastLine = lineToIndex[lineToIndex.length - 1];\n        var min = 0;\n        if (offset >= lastLine) {\n            min = lineToIndex.length - 1;\n        } else {\n            var max = lineToIndex.length - 2;\n            var mid;\n            while(min < max){\n                mid = min + (max - min >> 1);\n                if (offset < lineToIndex[mid]) {\n                    max = mid - 1;\n                } else if (offset >= lineToIndex[mid + 1]) {\n                    min = mid + 1;\n                } else {\n                    min = mid;\n                    break;\n                }\n            }\n        }\n        return {\n            col: offset - lineToIndex[min] + 1,\n            line: min + 1\n        };\n    };\n    _proto.mapResolve = function mapResolve(file) {\n        if (/^\\w+:\\/\\//.test(file)) {\n            return file;\n        }\n        return resolve$1$1(this.map.consumer().sourceRoot || this.map.root || \".\", file);\n    };\n    _proto.origin = function origin(line, column, endLine, endColumn) {\n        if (!this.map) return false;\n        var consumer = this.map.consumer();\n        var from = consumer.originalPositionFor({\n            column: column,\n            line: line\n        });\n        if (!from.source) return false;\n        var to;\n        if (typeof endLine === \"number\") {\n            to = consumer.originalPositionFor({\n                column: endColumn,\n                line: endLine\n            });\n        }\n        var fromUrl;\n        if (isAbsolute$1(from.source)) {\n            fromUrl = pathToFileURL$1$1(from.source);\n        } else {\n            fromUrl = new URL(from.source, this.map.consumer().sourceRoot || pathToFileURL$1$1(this.map.mapFile));\n        }\n        var result2 = {\n            column: from.column,\n            endColumn: to && to.column,\n            endLine: to && to.line,\n            line: from.line,\n            url: fromUrl.toString()\n        };\n        if (fromUrl.protocol === \"file:\") {\n            if (fileURLToPath$1) {\n                result2.file = fileURLToPath$1(fromUrl);\n            } else {\n                throw new Error(\"file: protocol is not available in this PostCSS build\");\n            }\n        }\n        var source = consumer.sourceContentFor(from.source);\n        if (source) result2.source = source;\n        return result2;\n    };\n    _proto.toJSON = function toJSON() {\n        var json = {};\n        for(var _i = 0, _iter = [\n            \"hasBOM\",\n            \"css\",\n            \"file\",\n            \"id\"\n        ]; _i < _iter.length; _i++){\n            var name = _iter[_i];\n            if (this[name] != null) {\n                json[name] = this[name];\n            }\n        }\n        if (this.map) {\n            json.map = _extends({}, this.map);\n            if (json.map.consumerCache) {\n                json.map.consumerCache = void 0;\n            }\n        }\n        return json;\n    };\n    _create_class(Input, [\n        {\n            key: \"from\",\n            get: function get() {\n                return this.file || this.id;\n            }\n        }\n    ]);\n    return Input;\n}();\nvar input$1 = Input$4$1;\nInput$4$1.default = Input$4$1;\nif (terminalHighlight$2 && terminalHighlight$2.registerInput) {\n    terminalHighlight$2.registerInput(Input$4$1);\n}\nvar SourceMapConsumer$3 = require$$2$1.SourceMapConsumer, SourceMapGenerator$3 = require$$2$1.SourceMapGenerator;\nvar dirname$2 = require$$2$1.dirname, relative$1 = require$$2$1.relative, resolve$2 = require$$2$1.resolve, sep$1 = require$$2$1.sep;\nvar pathToFileURL$2 = require$$2$1.pathToFileURL;\nvar Input$3$1 = input$1;\nvar sourceMapAvailable$2 = Boolean(SourceMapConsumer$3 && SourceMapGenerator$3);\nvar pathAvailable$2 = Boolean(dirname$2 && resolve$2 && relative$1 && sep$1);\nvar MapGenerator$2$1 = /*#__PURE__*/ function() {\n    function MapGenerator(stringify2, root2, opts, cssString) {\n        this.stringify = stringify2;\n        this.mapOpts = opts.map || {};\n        this.root = root2;\n        this.opts = opts;\n        this.css = cssString;\n        this.originalCSS = cssString;\n        this.usesFileUrls = !this.mapOpts.from && this.mapOpts.absolute;\n        this.memoizedFileURLs = /* @__PURE__ */ new Map();\n        this.memoizedPaths = /* @__PURE__ */ new Map();\n        this.memoizedURLs = /* @__PURE__ */ new Map();\n    }\n    var _proto = MapGenerator.prototype;\n    _proto.addAnnotation = function addAnnotation() {\n        var content;\n        if (this.isInline()) {\n            content = \"data:application/json;base64,\" + this.toBase64(this.map.toString());\n        } else if (typeof this.mapOpts.annotation === \"string\") {\n            content = this.mapOpts.annotation;\n        } else if (typeof this.mapOpts.annotation === \"function\") {\n            content = this.mapOpts.annotation(this.opts.to, this.root);\n        } else {\n            content = this.outputFile() + \".map\";\n        }\n        var eol = \"\\n\";\n        if (this.css.includes(\"\\r\\n\")) eol = \"\\r\\n\";\n        this.css += eol + \"/*# sourceMappingURL=\" + content + \" */\";\n    };\n    _proto.applyPrevMaps = function applyPrevMaps() {\n        for(var _iterator = _create_for_of_iterator_helper_loose(this.previous()), _step; !(_step = _iterator()).done;){\n            var prev = _step.value;\n            var from = this.toUrl(this.path(prev.file));\n            var root2 = prev.root || dirname$2(prev.file);\n            var map = void 0;\n            if (this.mapOpts.sourcesContent === false) {\n                map = new SourceMapConsumer$3(prev.text);\n                if (map.sourcesContent) {\n                    map.sourcesContent = null;\n                }\n            } else {\n                map = prev.consumer();\n            }\n            this.map.applySourceMap(map, from, this.toUrl(this.path(root2)));\n        }\n    };\n    _proto.clearAnnotation = function clearAnnotation() {\n        if (this.mapOpts.annotation === false) return;\n        if (this.root) {\n            var node2;\n            for(var i2 = this.root.nodes.length - 1; i2 >= 0; i2--){\n                node2 = this.root.nodes[i2];\n                if (node2.type !== \"comment\") continue;\n                if (node2.text.indexOf(\"# sourceMappingURL=\") === 0) {\n                    this.root.removeChild(i2);\n                }\n            }\n        } else if (this.css) {\n            this.css = this.css.replace(/\\n*?\\/\\*#[\\S\\s]*?\\*\\/$/gm, \"\");\n        }\n    };\n    _proto.generate = function generate() {\n        this.clearAnnotation();\n        if (pathAvailable$2 && sourceMapAvailable$2 && this.isMap()) {\n            return this.generateMap();\n        } else {\n            var result2 = \"\";\n            this.stringify(this.root, function(i2) {\n                result2 += i2;\n            });\n            return [\n                result2\n            ];\n        }\n    };\n    _proto.generateMap = function generateMap() {\n        if (this.root) {\n            this.generateString();\n        } else if (this.previous().length === 1) {\n            var prev = this.previous()[0].consumer();\n            prev.file = this.outputFile();\n            this.map = SourceMapGenerator$3.fromSourceMap(prev, {\n                ignoreInvalidMapping: true\n            });\n        } else {\n            this.map = new SourceMapGenerator$3({\n                file: this.outputFile(),\n                ignoreInvalidMapping: true\n            });\n            this.map.addMapping({\n                generated: {\n                    column: 0,\n                    line: 1\n                },\n                original: {\n                    column: 0,\n                    line: 1\n                },\n                source: this.opts.from ? this.toUrl(this.path(this.opts.from)) : \"<no source>\"\n            });\n        }\n        if (this.isSourcesContent()) this.setSourcesContent();\n        if (this.root && this.previous().length > 0) this.applyPrevMaps();\n        if (this.isAnnotation()) this.addAnnotation();\n        if (this.isInline()) {\n            return [\n                this.css\n            ];\n        } else {\n            return [\n                this.css,\n                this.map\n            ];\n        }\n    };\n    _proto.generateString = function generateString() {\n        var _this = this;\n        this.css = \"\";\n        this.map = new SourceMapGenerator$3({\n            file: this.outputFile(),\n            ignoreInvalidMapping: true\n        });\n        var line = 1;\n        var column = 1;\n        var noSource = \"<no source>\";\n        var mapping = {\n            generated: {\n                column: 0,\n                line: 0\n            },\n            original: {\n                column: 0,\n                line: 0\n            },\n            source: \"\"\n        };\n        var lines, last;\n        this.stringify(this.root, function(str, node2, type) {\n            _this.css += str;\n            if (node2 && type !== \"end\") {\n                mapping.generated.line = line;\n                mapping.generated.column = column - 1;\n                if (node2.source && node2.source.start) {\n                    mapping.source = _this.sourcePath(node2);\n                    mapping.original.line = node2.source.start.line;\n                    mapping.original.column = node2.source.start.column - 1;\n                    _this.map.addMapping(mapping);\n                } else {\n                    mapping.source = noSource;\n                    mapping.original.line = 1;\n                    mapping.original.column = 0;\n                    _this.map.addMapping(mapping);\n                }\n            }\n            lines = str.match(/\\n/g);\n            if (lines) {\n                line += lines.length;\n                last = str.lastIndexOf(\"\\n\");\n                column = str.length - last;\n            } else {\n                column += str.length;\n            }\n            if (node2 && type !== \"start\") {\n                var p = node2.parent || {\n                    raws: {}\n                };\n                var childless = node2.type === \"decl\" || node2.type === \"atrule\" && !node2.nodes;\n                if (!childless || node2 !== p.last || p.raws.semicolon) {\n                    if (node2.source && node2.source.end) {\n                        mapping.source = _this.sourcePath(node2);\n                        mapping.original.line = node2.source.end.line;\n                        mapping.original.column = node2.source.end.column - 1;\n                        mapping.generated.line = line;\n                        mapping.generated.column = column - 2;\n                        _this.map.addMapping(mapping);\n                    } else {\n                        mapping.source = noSource;\n                        mapping.original.line = 1;\n                        mapping.original.column = 0;\n                        mapping.generated.line = line;\n                        mapping.generated.column = column - 1;\n                        _this.map.addMapping(mapping);\n                    }\n                }\n            }\n        });\n    };\n    _proto.isAnnotation = function isAnnotation() {\n        if (this.isInline()) {\n            return true;\n        }\n        if (typeof this.mapOpts.annotation !== \"undefined\") {\n            return this.mapOpts.annotation;\n        }\n        if (this.previous().length) {\n            return this.previous().some(function(i2) {\n                return i2.annotation;\n            });\n        }\n        return true;\n    };\n    _proto.isInline = function isInline() {\n        if (typeof this.mapOpts.inline !== \"undefined\") {\n            return this.mapOpts.inline;\n        }\n        var annotation = this.mapOpts.annotation;\n        if (typeof annotation !== \"undefined\" && annotation !== true) {\n            return false;\n        }\n        if (this.previous().length) {\n            return this.previous().some(function(i2) {\n                return i2.inline;\n            });\n        }\n        return true;\n    };\n    _proto.isMap = function isMap() {\n        if (typeof this.opts.map !== \"undefined\") {\n            return !!this.opts.map;\n        }\n        return this.previous().length > 0;\n    };\n    _proto.isSourcesContent = function isSourcesContent() {\n        if (typeof this.mapOpts.sourcesContent !== \"undefined\") {\n            return this.mapOpts.sourcesContent;\n        }\n        if (this.previous().length) {\n            return this.previous().some(function(i2) {\n                return i2.withContent();\n            });\n        }\n        return true;\n    };\n    _proto.outputFile = function outputFile() {\n        if (this.opts.to) {\n            return this.path(this.opts.to);\n        } else if (this.opts.from) {\n            return this.path(this.opts.from);\n        } else {\n            return \"to.css\";\n        }\n    };\n    _proto.path = function path(file) {\n        if (this.mapOpts.absolute) return file;\n        if (file.charCodeAt(0) === 60) return file;\n        if (/^\\w+:\\/\\//.test(file)) return file;\n        var cached = this.memoizedPaths.get(file);\n        if (cached) return cached;\n        var from = this.opts.to ? dirname$2(this.opts.to) : \".\";\n        if (typeof this.mapOpts.annotation === \"string\") {\n            from = dirname$2(resolve$2(from, this.mapOpts.annotation));\n        }\n        var path = relative$1(from, file);\n        this.memoizedPaths.set(file, path);\n        return path;\n    };\n    _proto.previous = function previous() {\n        var _this = this;\n        if (!this.previousMaps) {\n            this.previousMaps = [];\n            if (this.root) {\n                this.root.walk(function(node2) {\n                    if (node2.source && node2.source.input.map) {\n                        var map = node2.source.input.map;\n                        if (!_this.previousMaps.includes(map)) {\n                            _this.previousMaps.push(map);\n                        }\n                    }\n                });\n            } else {\n                var input2 = new Input$3$1(this.originalCSS, this.opts);\n                if (input2.map) this.previousMaps.push(input2.map);\n            }\n        }\n        return this.previousMaps;\n    };\n    _proto.setSourcesContent = function setSourcesContent() {\n        var _this = this;\n        var already = {};\n        if (this.root) {\n            this.root.walk(function(node2) {\n                if (node2.source) {\n                    var from = node2.source.input.from;\n                    if (from && !already[from]) {\n                        already[from] = true;\n                        var fromUrl = _this.usesFileUrls ? _this.toFileUrl(from) : _this.toUrl(_this.path(from));\n                        _this.map.setSourceContent(fromUrl, node2.source.input.css);\n                    }\n                }\n            });\n        } else if (this.css) {\n            var from = this.opts.from ? this.toUrl(this.path(this.opts.from)) : \"<no source>\";\n            this.map.setSourceContent(from, this.css);\n        }\n    };\n    _proto.sourcePath = function sourcePath(node2) {\n        if (this.mapOpts.from) {\n            return this.toUrl(this.mapOpts.from);\n        } else if (this.usesFileUrls) {\n            return this.toFileUrl(node2.source.input.from);\n        } else {\n            return this.toUrl(this.path(node2.source.input.from));\n        }\n    };\n    _proto.toBase64 = function toBase64(str) {\n        if (Buffer) {\n            return Buffer.from(str).toString(\"base64\");\n        } else {\n            return window.btoa(unescape(encodeURIComponent(str)));\n        }\n    };\n    _proto.toFileUrl = function toFileUrl(path) {\n        var cached = this.memoizedFileURLs.get(path);\n        if (cached) return cached;\n        if (pathToFileURL$2) {\n            var fileURL = pathToFileURL$2(path).toString();\n            this.memoizedFileURLs.set(path, fileURL);\n            return fileURL;\n        } else {\n            throw new Error(\"`map.absolute` option is not available in this PostCSS build\");\n        }\n    };\n    _proto.toUrl = function toUrl(path) {\n        var cached = this.memoizedURLs.get(path);\n        if (cached) return cached;\n        if (sep$1 === \"\\\\\") {\n            path = path.replace(/\\\\/g, \"/\");\n        }\n        var url = encodeURI(path).replace(/[#?]/g, encodeURIComponent);\n        this.memoizedURLs.set(path, url);\n        return url;\n    };\n    return MapGenerator;\n}();\nvar mapGenerator$1 = MapGenerator$2$1;\nvar Node$2$1 = node$1;\nvar Comment$4$1 = /*#__PURE__*/ function(Node$2$1) {\n    _inherits(Comment, Node$2$1);\n    function Comment(defaults) {\n        var _this;\n        _this = Node$2$1.call(this, defaults) || this;\n        _this.type = \"comment\";\n        return _this;\n    }\n    return Comment;\n}(Node$2$1);\nvar comment$1 = Comment$4$1;\nComment$4$1.default = Comment$4$1;\nvar isClean$1$1 = symbols$1.isClean, my$1$1 = symbols$1.my;\nvar Declaration$3$1 = declaration$1;\nvar Comment$3$1 = comment$1;\nvar Node$1$1 = node$1;\nvar parse$4$1, Rule$4$1, AtRule$4$1, Root$6$1;\nfunction cleanSource$1(nodes) {\n    return nodes.map(function(i2) {\n        if (i2.nodes) i2.nodes = cleanSource$1(i2.nodes);\n        delete i2.source;\n        return i2;\n    });\n}\nfunction markDirtyUp$1(node2) {\n    node2[isClean$1$1] = false;\n    if (node2.proxyOf.nodes) {\n        for(var _iterator = _create_for_of_iterator_helper_loose(node2.proxyOf.nodes), _step; !(_step = _iterator()).done;){\n            var i2 = _step.value;\n            markDirtyUp$1(i2);\n        }\n    }\n}\nvar Container$7$1 = /*#__PURE__*/ function(Node$1$1) {\n    _inherits(Container, Node$1$1);\n    function Container() {\n        return Node$1$1.apply(this, arguments) || this;\n    }\n    var _proto = Container.prototype;\n    _proto.append = function append() {\n        for(var _len = arguments.length, children = new Array(_len), _key = 0; _key < _len; _key++){\n            children[_key] = arguments[_key];\n        }\n        for(var _iterator = _create_for_of_iterator_helper_loose(children), _step; !(_step = _iterator()).done;){\n            var child = _step.value;\n            var nodes = this.normalize(child, this.last);\n            for(var _iterator1 = _create_for_of_iterator_helper_loose(nodes), _step1; !(_step1 = _iterator1()).done;){\n                var node2 = _step1.value;\n                this.proxyOf.nodes.push(node2);\n            }\n        }\n        this.markDirty();\n        return this;\n    };\n    _proto.cleanRaws = function cleanRaws(keepBetween) {\n        Node$1$1.prototype.cleanRaws.call(this, keepBetween);\n        if (this.nodes) {\n            for(var _iterator = _create_for_of_iterator_helper_loose(this.nodes), _step; !(_step = _iterator()).done;){\n                var node2 = _step.value;\n                node2.cleanRaws(keepBetween);\n            }\n        }\n    };\n    _proto.each = function each(callback) {\n        if (!this.proxyOf.nodes) return void 0;\n        var iterator = this.getIterator();\n        var index2, result2;\n        while(this.indexes[iterator] < this.proxyOf.nodes.length){\n            index2 = this.indexes[iterator];\n            result2 = callback(this.proxyOf.nodes[index2], index2);\n            if (result2 === false) break;\n            this.indexes[iterator] += 1;\n        }\n        delete this.indexes[iterator];\n        return result2;\n    };\n    _proto.every = function every(condition) {\n        return this.nodes.every(condition);\n    };\n    _proto.getIterator = function getIterator() {\n        if (!this.lastEach) this.lastEach = 0;\n        if (!this.indexes) this.indexes = {};\n        this.lastEach += 1;\n        var iterator = this.lastEach;\n        this.indexes[iterator] = 0;\n        return iterator;\n    };\n    _proto.getProxyProcessor = function getProxyProcessor() {\n        return {\n            get: function get(node2, prop) {\n                if (prop === \"proxyOf\") {\n                    return node2;\n                } else if (!node2[prop]) {\n                    return node2[prop];\n                } else if (prop === \"each\" || typeof prop === \"string\" && prop.startsWith(\"walk\")) {\n                    return function() {\n                        for(var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++){\n                            args[_key] = arguments[_key];\n                        }\n                        var _node2;\n                        return (_node2 = node2)[prop].apply(_node2, [].concat(args.map(function(i2) {\n                            if (typeof i2 === \"function\") {\n                                return function(child, index2) {\n                                    return i2(child.toProxy(), index2);\n                                };\n                            } else {\n                                return i2;\n                            }\n                        })));\n                    };\n                } else if (prop === \"every\" || prop === \"some\") {\n                    return function(cb) {\n                        return node2[prop](function(child) {\n                            for(var _len = arguments.length, other = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++){\n                                other[_key - 1] = arguments[_key];\n                            }\n                            return cb.apply(void 0, [].concat([\n                                child.toProxy()\n                            ], other));\n                        });\n                    };\n                } else if (prop === \"root\") {\n                    return function() {\n                        return node2.root().toProxy();\n                    };\n                } else if (prop === \"nodes\") {\n                    return node2.nodes.map(function(i2) {\n                        return i2.toProxy();\n                    });\n                } else if (prop === \"first\" || prop === \"last\") {\n                    return node2[prop].toProxy();\n                } else {\n                    return node2[prop];\n                }\n            },\n            set: function set(node2, prop, value) {\n                if (node2[prop] === value) return true;\n                node2[prop] = value;\n                if (prop === \"name\" || prop === \"params\" || prop === \"selector\") {\n                    node2.markDirty();\n                }\n                return true;\n            }\n        };\n    };\n    _proto.index = function index(child) {\n        if (typeof child === \"number\") return child;\n        if (child.proxyOf) child = child.proxyOf;\n        return this.proxyOf.nodes.indexOf(child);\n    };\n    _proto.insertAfter = function insertAfter(exist, add) {\n        var existIndex = this.index(exist);\n        var nodes = this.normalize(add, this.proxyOf.nodes[existIndex]).reverse();\n        existIndex = this.index(exist);\n        for(var _iterator = _create_for_of_iterator_helper_loose(nodes), _step; !(_step = _iterator()).done;){\n            var node2 = _step.value;\n            this.proxyOf.nodes.splice(existIndex + 1, 0, node2);\n        }\n        var index2;\n        for(var id in this.indexes){\n            index2 = this.indexes[id];\n            if (existIndex < index2) {\n                this.indexes[id] = index2 + nodes.length;\n            }\n        }\n        this.markDirty();\n        return this;\n    };\n    _proto.insertBefore = function insertBefore(exist, add) {\n        var existIndex = this.index(exist);\n        var type = existIndex === 0 ? \"prepend\" : false;\n        var nodes = this.normalize(add, this.proxyOf.nodes[existIndex], type).reverse();\n        existIndex = this.index(exist);\n        for(var _iterator = _create_for_of_iterator_helper_loose(nodes), _step; !(_step = _iterator()).done;){\n            var node2 = _step.value;\n            this.proxyOf.nodes.splice(existIndex, 0, node2);\n        }\n        var index2;\n        for(var id in this.indexes){\n            index2 = this.indexes[id];\n            if (existIndex <= index2) {\n                this.indexes[id] = index2 + nodes.length;\n            }\n        }\n        this.markDirty();\n        return this;\n    };\n    _proto.normalize = function normalize(nodes, sample) {\n        var _this = this;\n        if (typeof nodes === \"string\") {\n            nodes = cleanSource$1(parse$4$1(nodes).nodes);\n        } else if (typeof nodes === \"undefined\") {\n            nodes = [];\n        } else if (Array.isArray(nodes)) {\n            nodes = nodes.slice(0);\n            for(var _iterator = _create_for_of_iterator_helper_loose(nodes), _step; !(_step = _iterator()).done;){\n                var i2 = _step.value;\n                if (i2.parent) i2.parent.removeChild(i2, \"ignore\");\n            }\n        } else if (nodes.type === \"root\" && this.type !== \"document\") {\n            nodes = nodes.nodes.slice(0);\n            for(var _iterator1 = _create_for_of_iterator_helper_loose(nodes), _step1; !(_step1 = _iterator1()).done;){\n                var i21 = _step1.value;\n                if (i21.parent) i21.parent.removeChild(i21, \"ignore\");\n            }\n        } else if (nodes.type) {\n            nodes = [\n                nodes\n            ];\n        } else if (nodes.prop) {\n            if (typeof nodes.value === \"undefined\") {\n                throw new Error(\"Value field is missed in node creation\");\n            } else if (typeof nodes.value !== \"string\") {\n                nodes.value = String(nodes.value);\n            }\n            nodes = [\n                new Declaration$3$1(nodes)\n            ];\n        } else if (nodes.selector) {\n            nodes = [\n                new Rule$4$1(nodes)\n            ];\n        } else if (nodes.name) {\n            nodes = [\n                new AtRule$4$1(nodes)\n            ];\n        } else if (nodes.text) {\n            nodes = [\n                new Comment$3$1(nodes)\n            ];\n        } else {\n            throw new Error(\"Unknown node type in node creation\");\n        }\n        var processed = nodes.map(function(i2) {\n            if (!i2[my$1$1]) Container.rebuild(i2);\n            i2 = i2.proxyOf;\n            if (i2.parent) i2.parent.removeChild(i2);\n            if (i2[isClean$1$1]) markDirtyUp$1(i2);\n            if (typeof i2.raws.before === \"undefined\") {\n                if (sample && typeof sample.raws.before !== \"undefined\") {\n                    i2.raws.before = sample.raws.before.replace(/\\S/g, \"\");\n                }\n            }\n            i2.parent = _this.proxyOf;\n            return i2;\n        });\n        return processed;\n    };\n    _proto.prepend = function prepend() {\n        for(var _len = arguments.length, children = new Array(_len), _key = 0; _key < _len; _key++){\n            children[_key] = arguments[_key];\n        }\n        children = children.reverse();\n        for(var _iterator = _create_for_of_iterator_helper_loose(children), _step; !(_step = _iterator()).done;){\n            var child = _step.value;\n            var nodes = this.normalize(child, this.first, \"prepend\").reverse();\n            for(var _iterator1 = _create_for_of_iterator_helper_loose(nodes), _step1; !(_step1 = _iterator1()).done;){\n                var node2 = _step1.value;\n                this.proxyOf.nodes.unshift(node2);\n            }\n            for(var id in this.indexes){\n                this.indexes[id] = this.indexes[id] + nodes.length;\n            }\n        }\n        this.markDirty();\n        return this;\n    };\n    _proto.push = function push(child) {\n        child.parent = this;\n        this.proxyOf.nodes.push(child);\n        return this;\n    };\n    _proto.removeAll = function removeAll() {\n        for(var _iterator = _create_for_of_iterator_helper_loose(this.proxyOf.nodes), _step; !(_step = _iterator()).done;){\n            var node2 = _step.value;\n            node2.parent = void 0;\n        }\n        this.proxyOf.nodes = [];\n        this.markDirty();\n        return this;\n    };\n    _proto.removeChild = function removeChild(child) {\n        child = this.index(child);\n        this.proxyOf.nodes[child].parent = void 0;\n        this.proxyOf.nodes.splice(child, 1);\n        var index2;\n        for(var id in this.indexes){\n            index2 = this.indexes[id];\n            if (index2 >= child) {\n                this.indexes[id] = index2 - 1;\n            }\n        }\n        this.markDirty();\n        return this;\n    };\n    _proto.replaceValues = function replaceValues(pattern, opts, callback) {\n        if (!callback) {\n            callback = opts;\n            opts = {};\n        }\n        this.walkDecls(function(decl) {\n            if (opts.props && !opts.props.includes(decl.prop)) return;\n            if (opts.fast && !decl.value.includes(opts.fast)) return;\n            decl.value = decl.value.replace(pattern, callback);\n        });\n        this.markDirty();\n        return this;\n    };\n    _proto.some = function some(condition) {\n        return this.nodes.some(condition);\n    };\n    _proto.walk = function walk(callback) {\n        return this.each(function(child, i2) {\n            var result2;\n            try {\n                result2 = callback(child, i2);\n            } catch (e2) {\n                throw child.addToError(e2);\n            }\n            if (result2 !== false && child.walk) {\n                result2 = child.walk(callback);\n            }\n            return result2;\n        });\n    };\n    _proto.walkAtRules = function walkAtRules(name, callback) {\n        if (!callback) {\n            callback = name;\n            return this.walk(function(child, i2) {\n                if (child.type === \"atrule\") {\n                    return callback(child, i2);\n                }\n            });\n        }\n        if (_instanceof(name, RegExp)) {\n            return this.walk(function(child, i2) {\n                if (child.type === \"atrule\" && name.test(child.name)) {\n                    return callback(child, i2);\n                }\n            });\n        }\n        return this.walk(function(child, i2) {\n            if (child.type === \"atrule\" && child.name === name) {\n                return callback(child, i2);\n            }\n        });\n    };\n    _proto.walkComments = function walkComments(callback) {\n        return this.walk(function(child, i2) {\n            if (child.type === \"comment\") {\n                return callback(child, i2);\n            }\n        });\n    };\n    _proto.walkDecls = function walkDecls(prop, callback) {\n        if (!callback) {\n            callback = prop;\n            return this.walk(function(child, i2) {\n                if (child.type === \"decl\") {\n                    return callback(child, i2);\n                }\n            });\n        }\n        if (_instanceof(prop, RegExp)) {\n            return this.walk(function(child, i2) {\n                if (child.type === \"decl\" && prop.test(child.prop)) {\n                    return callback(child, i2);\n                }\n            });\n        }\n        return this.walk(function(child, i2) {\n            if (child.type === \"decl\" && child.prop === prop) {\n                return callback(child, i2);\n            }\n        });\n    };\n    _proto.walkRules = function walkRules(selector, callback) {\n        if (!callback) {\n            callback = selector;\n            return this.walk(function(child, i2) {\n                if (child.type === \"rule\") {\n                    return callback(child, i2);\n                }\n            });\n        }\n        if (_instanceof(selector, RegExp)) {\n            return this.walk(function(child, i2) {\n                if (child.type === \"rule\" && selector.test(child.selector)) {\n                    return callback(child, i2);\n                }\n            });\n        }\n        return this.walk(function(child, i2) {\n            if (child.type === \"rule\" && child.selector === selector) {\n                return callback(child, i2);\n            }\n        });\n    };\n    _create_class(Container, [\n        {\n            key: \"first\",\n            get: function get() {\n                if (!this.proxyOf.nodes) return void 0;\n                return this.proxyOf.nodes[0];\n            }\n        },\n        {\n            key: \"last\",\n            get: function get() {\n                if (!this.proxyOf.nodes) return void 0;\n                return this.proxyOf.nodes[this.proxyOf.nodes.length - 1];\n            }\n        }\n    ]);\n    return Container;\n}(Node$1$1);\nContainer$7$1.registerParse = function(dependant) {\n    parse$4$1 = dependant;\n};\nContainer$7$1.registerRule = function(dependant) {\n    Rule$4$1 = dependant;\n};\nContainer$7$1.registerAtRule = function(dependant) {\n    AtRule$4$1 = dependant;\n};\nContainer$7$1.registerRoot = function(dependant) {\n    Root$6$1 = dependant;\n};\nvar container$1 = Container$7$1;\nContainer$7$1.default = Container$7$1;\nContainer$7$1.rebuild = function(node2) {\n    if (node2.type === \"atrule\") {\n        Object.setPrototypeOf(node2, AtRule$4$1.prototype);\n    } else if (node2.type === \"rule\") {\n        Object.setPrototypeOf(node2, Rule$4$1.prototype);\n    } else if (node2.type === \"decl\") {\n        Object.setPrototypeOf(node2, Declaration$3$1.prototype);\n    } else if (node2.type === \"comment\") {\n        Object.setPrototypeOf(node2, Comment$3$1.prototype);\n    } else if (node2.type === \"root\") {\n        Object.setPrototypeOf(node2, Root$6$1.prototype);\n    }\n    node2[my$1$1] = true;\n    if (node2.nodes) {\n        node2.nodes.forEach(function(child) {\n            Container$7$1.rebuild(child);\n        });\n    }\n};\nvar Container$6$1 = container$1;\nvar LazyResult$4$1, Processor$3$1;\nvar Document$3$1 = /*#__PURE__*/ function(Container$6$1) {\n    _inherits(Document2, Container$6$1);\n    function Document2(defaults) {\n        var _this;\n        _this = Container$6$1.call(this, _extends({\n            type: \"document\"\n        }, defaults)) || this;\n        if (!_this.nodes) {\n            _this.nodes = [];\n        }\n        return _this;\n    }\n    var _proto = Document2.prototype;\n    _proto.toResult = function toResult(opts) {\n        if (opts === void 0) opts = {};\n        var lazy = new LazyResult$4$1(new Processor$3$1(), this, opts);\n        return lazy.stringify();\n    };\n    return Document2;\n}(Container$6$1);\nDocument$3$1.registerLazyResult = function(dependant) {\n    LazyResult$4$1 = dependant;\n};\nDocument$3$1.registerProcessor = function(dependant) {\n    Processor$3$1 = dependant;\n};\nvar document$1$1 = Document$3$1;\nDocument$3$1.default = Document$3$1;\nvar printed$1 = {};\nvar warnOnce$2$1 = function warnOnce(message) {\n    if (printed$1[message]) return;\n    printed$1[message] = true;\n    if (typeof console !== \"undefined\" && console.warn) {\n        console.warn(message);\n    }\n};\nvar Warning$2$1 = /*#__PURE__*/ function() {\n    function Warning(text, opts) {\n        if (opts === void 0) opts = {};\n        this.type = \"warning\";\n        this.text = text;\n        if (opts.node && opts.node.source) {\n            var range = opts.node.rangeBy(opts);\n            this.line = range.start.line;\n            this.column = range.start.column;\n            this.endLine = range.end.line;\n            this.endColumn = range.end.column;\n        }\n        for(var opt in opts)this[opt] = opts[opt];\n    }\n    var _proto = Warning.prototype;\n    _proto.toString = function toString() {\n        if (this.node) {\n            return this.node.error(this.text, {\n                index: this.index,\n                plugin: this.plugin,\n                word: this.word\n            }).message;\n        }\n        if (this.plugin) {\n            return this.plugin + \": \" + this.text;\n        }\n        return this.text;\n    };\n    return Warning;\n}();\nvar warning$1 = Warning$2$1;\nWarning$2$1.default = Warning$2$1;\nvar Warning$1$1 = warning$1;\nvar Result$3$1 = /*#__PURE__*/ function() {\n    function Result(processor2, root2, opts) {\n        this.processor = processor2;\n        this.messages = [];\n        this.root = root2;\n        this.opts = opts;\n        this.css = void 0;\n        this.map = void 0;\n    }\n    var _proto = Result.prototype;\n    _proto.toString = function toString() {\n        return this.css;\n    };\n    _proto.warn = function warn(text, opts) {\n        if (opts === void 0) opts = {};\n        if (!opts.plugin) {\n            if (this.lastPlugin && this.lastPlugin.postcssPlugin) {\n                opts.plugin = this.lastPlugin.postcssPlugin;\n            }\n        }\n        var warning2 = new Warning$1$1(text, opts);\n        this.messages.push(warning2);\n        return warning2;\n    };\n    _proto.warnings = function warnings() {\n        return this.messages.filter(function(i2) {\n            return i2.type === \"warning\";\n        });\n    };\n    _create_class(Result, [\n        {\n            key: \"content\",\n            get: function get() {\n                return this.css;\n            }\n        }\n    ]);\n    return Result;\n}();\nvar result$1 = Result$3$1;\nResult$3$1.default = Result$3$1;\nvar SINGLE_QUOTE$1 = \"'\".charCodeAt(0);\nvar DOUBLE_QUOTE$1 = '\"'.charCodeAt(0);\nvar BACKSLASH$1 = \"\\\\\".charCodeAt(0);\nvar SLASH$1 = \"/\".charCodeAt(0);\nvar NEWLINE$1 = \"\\n\".charCodeAt(0);\nvar SPACE$1 = \" \".charCodeAt(0);\nvar FEED$1 = \"\\f\".charCodeAt(0);\nvar TAB$1 = \"\t\".charCodeAt(0);\nvar CR$1 = \"\\r\".charCodeAt(0);\nvar OPEN_SQUARE$1 = \"[\".charCodeAt(0);\nvar CLOSE_SQUARE$1 = \"]\".charCodeAt(0);\nvar OPEN_PARENTHESES$1 = \"(\".charCodeAt(0);\nvar CLOSE_PARENTHESES$1 = \")\".charCodeAt(0);\nvar OPEN_CURLY$1 = \"{\".charCodeAt(0);\nvar CLOSE_CURLY$1 = \"}\".charCodeAt(0);\nvar SEMICOLON$1 = \";\".charCodeAt(0);\nvar ASTERISK$1 = \"*\".charCodeAt(0);\nvar COLON$1 = \":\".charCodeAt(0);\nvar AT$1 = \"@\".charCodeAt(0);\nvar RE_AT_END$1 = /[\\t\\n\\f\\r \"#'()/;[\\\\\\]{}]/g;\nvar RE_WORD_END$1 = /[\\t\\n\\f\\r !\"#'():;@[\\\\\\]{}]|\\/(?=\\*)/g;\nvar RE_BAD_BRACKET$1 = /.[\\r\\n\"'(/\\\\]/;\nvar RE_HEX_ESCAPE$1 = /[\\da-f]/i;\nvar tokenize$1 = function tokenizer(input2, options) {\n    if (options === void 0) options = {};\n    var css = input2.css.valueOf();\n    var ignore = options.ignoreErrors;\n    var code, next, quote, content, escape;\n    var escaped, escapePos, prev, n2, currentToken;\n    var length = css.length;\n    var pos = 0;\n    var buffer = [];\n    var returned = [];\n    function position() {\n        return pos;\n    }\n    function unclosed(what) {\n        throw input2.error(\"Unclosed \" + what, pos);\n    }\n    function endOfFile() {\n        return returned.length === 0 && pos >= length;\n    }\n    function nextToken(opts) {\n        if (returned.length) return returned.pop();\n        if (pos >= length) return;\n        var ignoreUnclosed = opts ? opts.ignoreUnclosed : false;\n        code = css.charCodeAt(pos);\n        switch(code){\n            case NEWLINE$1:\n            case SPACE$1:\n            case TAB$1:\n            case CR$1:\n            case FEED$1:\n                {\n                    next = pos;\n                    do {\n                        next += 1;\n                        code = css.charCodeAt(next);\n                    }while (code === SPACE$1 || code === NEWLINE$1 || code === TAB$1 || code === CR$1 || code === FEED$1);\n                    currentToken = [\n                        \"space\",\n                        css.slice(pos, next)\n                    ];\n                    pos = next - 1;\n                    break;\n                }\n            case OPEN_SQUARE$1:\n            case CLOSE_SQUARE$1:\n            case OPEN_CURLY$1:\n            case CLOSE_CURLY$1:\n            case COLON$1:\n            case SEMICOLON$1:\n            case CLOSE_PARENTHESES$1:\n                {\n                    var controlChar = String.fromCharCode(code);\n                    currentToken = [\n                        controlChar,\n                        controlChar,\n                        pos\n                    ];\n                    break;\n                }\n            case OPEN_PARENTHESES$1:\n                {\n                    prev = buffer.length ? buffer.pop()[1] : \"\";\n                    n2 = css.charCodeAt(pos + 1);\n                    if (prev === \"url\" && n2 !== SINGLE_QUOTE$1 && n2 !== DOUBLE_QUOTE$1 && n2 !== SPACE$1 && n2 !== NEWLINE$1 && n2 !== TAB$1 && n2 !== FEED$1 && n2 !== CR$1) {\n                        next = pos;\n                        do {\n                            escaped = false;\n                            next = css.indexOf(\")\", next + 1);\n                            if (next === -1) {\n                                if (ignore || ignoreUnclosed) {\n                                    next = pos;\n                                    break;\n                                } else {\n                                    unclosed(\"bracket\");\n                                }\n                            }\n                            escapePos = next;\n                            while(css.charCodeAt(escapePos - 1) === BACKSLASH$1){\n                                escapePos -= 1;\n                                escaped = !escaped;\n                            }\n                        }while (escaped);\n                        currentToken = [\n                            \"brackets\",\n                            css.slice(pos, next + 1),\n                            pos,\n                            next\n                        ];\n                        pos = next;\n                    } else {\n                        next = css.indexOf(\")\", pos + 1);\n                        content = css.slice(pos, next + 1);\n                        if (next === -1 || RE_BAD_BRACKET$1.test(content)) {\n                            currentToken = [\n                                \"(\",\n                                \"(\",\n                                pos\n                            ];\n                        } else {\n                            currentToken = [\n                                \"brackets\",\n                                content,\n                                pos,\n                                next\n                            ];\n                            pos = next;\n                        }\n                    }\n                    break;\n                }\n            case SINGLE_QUOTE$1:\n            case DOUBLE_QUOTE$1:\n                {\n                    quote = code === SINGLE_QUOTE$1 ? \"'\" : '\"';\n                    next = pos;\n                    do {\n                        escaped = false;\n                        next = css.indexOf(quote, next + 1);\n                        if (next === -1) {\n                            if (ignore || ignoreUnclosed) {\n                                next = pos + 1;\n                                break;\n                            } else {\n                                unclosed(\"string\");\n                            }\n                        }\n                        escapePos = next;\n                        while(css.charCodeAt(escapePos - 1) === BACKSLASH$1){\n                            escapePos -= 1;\n                            escaped = !escaped;\n                        }\n                    }while (escaped);\n                    currentToken = [\n                        \"string\",\n                        css.slice(pos, next + 1),\n                        pos,\n                        next\n                    ];\n                    pos = next;\n                    break;\n                }\n            case AT$1:\n                {\n                    RE_AT_END$1.lastIndex = pos + 1;\n                    RE_AT_END$1.test(css);\n                    if (RE_AT_END$1.lastIndex === 0) {\n                        next = css.length - 1;\n                    } else {\n                        next = RE_AT_END$1.lastIndex - 2;\n                    }\n                    currentToken = [\n                        \"at-word\",\n                        css.slice(pos, next + 1),\n                        pos,\n                        next\n                    ];\n                    pos = next;\n                    break;\n                }\n            case BACKSLASH$1:\n                {\n                    next = pos;\n                    escape = true;\n                    while(css.charCodeAt(next + 1) === BACKSLASH$1){\n                        next += 1;\n                        escape = !escape;\n                    }\n                    code = css.charCodeAt(next + 1);\n                    if (escape && code !== SLASH$1 && code !== SPACE$1 && code !== NEWLINE$1 && code !== TAB$1 && code !== CR$1 && code !== FEED$1) {\n                        next += 1;\n                        if (RE_HEX_ESCAPE$1.test(css.charAt(next))) {\n                            while(RE_HEX_ESCAPE$1.test(css.charAt(next + 1))){\n                                next += 1;\n                            }\n                            if (css.charCodeAt(next + 1) === SPACE$1) {\n                                next += 1;\n                            }\n                        }\n                    }\n                    currentToken = [\n                        \"word\",\n                        css.slice(pos, next + 1),\n                        pos,\n                        next\n                    ];\n                    pos = next;\n                    break;\n                }\n            default:\n                {\n                    if (code === SLASH$1 && css.charCodeAt(pos + 1) === ASTERISK$1) {\n                        next = css.indexOf(\"*/\", pos + 2) + 1;\n                        if (next === 0) {\n                            if (ignore || ignoreUnclosed) {\n                                next = css.length;\n                            } else {\n                                unclosed(\"comment\");\n                            }\n                        }\n                        currentToken = [\n                            \"comment\",\n                            css.slice(pos, next + 1),\n                            pos,\n                            next\n                        ];\n                        pos = next;\n                    } else {\n                        RE_WORD_END$1.lastIndex = pos + 1;\n                        RE_WORD_END$1.test(css);\n                        if (RE_WORD_END$1.lastIndex === 0) {\n                            next = css.length - 1;\n                        } else {\n                            next = RE_WORD_END$1.lastIndex - 2;\n                        }\n                        currentToken = [\n                            \"word\",\n                            css.slice(pos, next + 1),\n                            pos,\n                            next\n                        ];\n                        buffer.push(currentToken);\n                        pos = next;\n                    }\n                    break;\n                }\n        }\n        pos++;\n        return currentToken;\n    }\n    function back(token) {\n        returned.push(token);\n    }\n    return {\n        back: back,\n        endOfFile: endOfFile,\n        nextToken: nextToken,\n        position: position\n    };\n};\nvar Container$5$1 = container$1;\nvar AtRule$3$1 = /*#__PURE__*/ function(Container$5$1) {\n    _inherits(AtRule, Container$5$1);\n    function AtRule(defaults) {\n        var _this;\n        _this = Container$5$1.call(this, defaults) || this;\n        _this.type = \"atrule\";\n        return _this;\n    }\n    var _proto = AtRule.prototype;\n    _proto.append = function append() {\n        for(var _len = arguments.length, children = new Array(_len), _key = 0; _key < _len; _key++){\n            children[_key] = arguments[_key];\n        }\n        var _Container$5$1_prototype_append;\n        if (!this.proxyOf.nodes) this.nodes = [];\n        return (_Container$5$1_prototype_append = Container$5$1.prototype.append).call.apply(_Container$5$1_prototype_append, [].concat([\n            this\n        ], children));\n    };\n    _proto.prepend = function prepend() {\n        for(var _len = arguments.length, children = new Array(_len), _key = 0; _key < _len; _key++){\n            children[_key] = arguments[_key];\n        }\n        var _Container$5$1_prototype_prepend;\n        if (!this.proxyOf.nodes) this.nodes = [];\n        return (_Container$5$1_prototype_prepend = Container$5$1.prototype.prepend).call.apply(_Container$5$1_prototype_prepend, [].concat([\n            this\n        ], children));\n    };\n    return AtRule;\n}(Container$5$1);\nvar atRule$1 = AtRule$3$1;\nAtRule$3$1.default = AtRule$3$1;\nContainer$5$1.registerAtRule(AtRule$3$1);\nvar Container$4$1 = container$1;\nvar LazyResult$3$1, Processor$2$1;\nvar Root$5$1 = /*#__PURE__*/ function(Container$4$1) {\n    _inherits(Root, Container$4$1);\n    function Root(defaults) {\n        var _this;\n        _this = Container$4$1.call(this, defaults) || this;\n        _this.type = \"root\";\n        if (!_this.nodes) _this.nodes = [];\n        return _this;\n    }\n    var _proto = Root.prototype;\n    _proto.normalize = function normalize(child, sample, type) {\n        var nodes = Container$4$1.prototype.normalize.call(this, child);\n        if (sample) {\n            if (type === \"prepend\") {\n                if (this.nodes.length > 1) {\n                    sample.raws.before = this.nodes[1].raws.before;\n                } else {\n                    delete sample.raws.before;\n                }\n            } else if (this.first !== sample) {\n                for(var _iterator = _create_for_of_iterator_helper_loose(nodes), _step; !(_step = _iterator()).done;){\n                    var node2 = _step.value;\n                    node2.raws.before = sample.raws.before;\n                }\n            }\n        }\n        return nodes;\n    };\n    _proto.removeChild = function removeChild(child, ignore) {\n        var index2 = this.index(child);\n        if (!ignore && index2 === 0 && this.nodes.length > 1) {\n            this.nodes[1].raws.before = this.nodes[index2].raws.before;\n        }\n        return Container$4$1.prototype.removeChild.call(this, child);\n    };\n    _proto.toResult = function toResult(opts) {\n        if (opts === void 0) opts = {};\n        var lazy = new LazyResult$3$1(new Processor$2$1(), this, opts);\n        return lazy.stringify();\n    };\n    return Root;\n}(Container$4$1);\nRoot$5$1.registerLazyResult = function(dependant) {\n    LazyResult$3$1 = dependant;\n};\nRoot$5$1.registerProcessor = function(dependant) {\n    Processor$2$1 = dependant;\n};\nvar root$1 = Root$5$1;\nRoot$5$1.default = Root$5$1;\nContainer$4$1.registerRoot(Root$5$1);\nvar list$2$1 = {\n    comma: function comma(string) {\n        return list$2$1.split(string, [\n            \",\"\n        ], true);\n    },\n    space: function space(string) {\n        var spaces = [\n            \" \",\n            \"\\n\",\n            \"\t\"\n        ];\n        return list$2$1.split(string, spaces);\n    },\n    split: function split(string, separators, last) {\n        var array = [];\n        var current = \"\";\n        var split = false;\n        var func = 0;\n        var inQuote = false;\n        var prevQuote = \"\";\n        var escape = false;\n        for(var _iterator = _create_for_of_iterator_helper_loose(string), _step; !(_step = _iterator()).done;){\n            var letter = _step.value;\n            if (escape) {\n                escape = false;\n            } else if (letter === \"\\\\\") {\n                escape = true;\n            } else if (inQuote) {\n                if (letter === prevQuote) {\n                    inQuote = false;\n                }\n            } else if (letter === '\"' || letter === \"'\") {\n                inQuote = true;\n                prevQuote = letter;\n            } else if (letter === \"(\") {\n                func += 1;\n            } else if (letter === \")\") {\n                if (func > 0) func -= 1;\n            } else if (func === 0) {\n                if (separators.includes(letter)) split = true;\n            }\n            if (split) {\n                if (current !== \"\") array.push(current.trim());\n                current = \"\";\n                split = false;\n            } else {\n                current += letter;\n            }\n        }\n        if (last || current !== \"\") array.push(current.trim());\n        return array;\n    }\n};\nvar list_1$1 = list$2$1;\nlist$2$1.default = list$2$1;\nvar Container$3$1 = container$1;\nvar list$1$1 = list_1$1;\nvar Rule$3$1 = /*#__PURE__*/ function(Container$3$1) {\n    _inherits(Rule, Container$3$1);\n    function Rule(defaults) {\n        var _this;\n        _this = Container$3$1.call(this, defaults) || this;\n        _this.type = \"rule\";\n        if (!_this.nodes) _this.nodes = [];\n        return _this;\n    }\n    _create_class(Rule, [\n        {\n            key: \"selectors\",\n            get: function get() {\n                return list$1$1.comma(this.selector);\n            },\n            set: function set(values) {\n                var match = this.selector ? this.selector.match(/,\\s*/) : null;\n                var sep2 = match ? match[0] : \",\" + this.raw(\"between\", \"beforeOpen\");\n                this.selector = values.join(sep2);\n            }\n        }\n    ]);\n    return Rule;\n}(Container$3$1);\nvar rule$1 = Rule$3$1;\nRule$3$1.default = Rule$3$1;\nContainer$3$1.registerRule(Rule$3$1);\nvar Declaration$2$1 = declaration$1;\nvar tokenizer2$1 = tokenize$1;\nvar Comment$2$1 = comment$1;\nvar AtRule$2$1 = atRule$1;\nvar Root$4$1 = root$1;\nvar Rule$2$1 = rule$1;\nvar SAFE_COMMENT_NEIGHBOR$1 = {\n    empty: true,\n    space: true\n};\nfunction findLastWithPosition$1(tokens) {\n    for(var i2 = tokens.length - 1; i2 >= 0; i2--){\n        var token = tokens[i2];\n        var pos = token[3] || token[2];\n        if (pos) return pos;\n    }\n}\nvar Parser$1$1 = /*#__PURE__*/ function() {\n    function Parser(input2) {\n        this.input = input2;\n        this.root = new Root$4$1();\n        this.current = this.root;\n        this.spaces = \"\";\n        this.semicolon = false;\n        this.createTokenizer();\n        this.root.source = {\n            input: input2,\n            start: {\n                column: 1,\n                line: 1,\n                offset: 0\n            }\n        };\n    }\n    var _proto = Parser.prototype;\n    _proto.atrule = function atrule(token) {\n        var node2 = new AtRule$2$1();\n        node2.name = token[1].slice(1);\n        if (node2.name === \"\") {\n            this.unnamedAtrule(node2, token);\n        }\n        this.init(node2, token[2]);\n        var type;\n        var prev;\n        var shift;\n        var last = false;\n        var open = false;\n        var params = [];\n        var brackets = [];\n        while(!this.tokenizer.endOfFile()){\n            token = this.tokenizer.nextToken();\n            type = token[0];\n            if (type === \"(\" || type === \"[\") {\n                brackets.push(type === \"(\" ? \")\" : \"]\");\n            } else if (type === \"{\" && brackets.length > 0) {\n                brackets.push(\"}\");\n            } else if (type === brackets[brackets.length - 1]) {\n                brackets.pop();\n            }\n            if (brackets.length === 0) {\n                if (type === \";\") {\n                    node2.source.end = this.getPosition(token[2]);\n                    node2.source.end.offset++;\n                    this.semicolon = true;\n                    break;\n                } else if (type === \"{\") {\n                    open = true;\n                    break;\n                } else if (type === \"}\") {\n                    if (params.length > 0) {\n                        shift = params.length - 1;\n                        prev = params[shift];\n                        while(prev && prev[0] === \"space\"){\n                            prev = params[--shift];\n                        }\n                        if (prev) {\n                            node2.source.end = this.getPosition(prev[3] || prev[2]);\n                            node2.source.end.offset++;\n                        }\n                    }\n                    this.end(token);\n                    break;\n                } else {\n                    params.push(token);\n                }\n            } else {\n                params.push(token);\n            }\n            if (this.tokenizer.endOfFile()) {\n                last = true;\n                break;\n            }\n        }\n        node2.raws.between = this.spacesAndCommentsFromEnd(params);\n        if (params.length) {\n            node2.raws.afterName = this.spacesAndCommentsFromStart(params);\n            this.raw(node2, \"params\", params);\n            if (last) {\n                token = params[params.length - 1];\n                node2.source.end = this.getPosition(token[3] || token[2]);\n                node2.source.end.offset++;\n                this.spaces = node2.raws.between;\n                node2.raws.between = \"\";\n            }\n        } else {\n            node2.raws.afterName = \"\";\n            node2.params = \"\";\n        }\n        if (open) {\n            node2.nodes = [];\n            this.current = node2;\n        }\n    };\n    _proto.checkMissedSemicolon = function checkMissedSemicolon(tokens) {\n        var colon = this.colon(tokens);\n        if (colon === false) return;\n        var founded = 0;\n        var token;\n        for(var j = colon - 1; j >= 0; j--){\n            token = tokens[j];\n            if (token[0] !== \"space\") {\n                founded += 1;\n                if (founded === 2) break;\n            }\n        }\n        throw this.input.error(\"Missed semicolon\", token[0] === \"word\" ? token[3] + 1 : token[2]);\n    };\n    _proto.colon = function colon(tokens) {\n        var brackets = 0;\n        var token, type, prev;\n        for(var _iterator = _create_for_of_iterator_helper_loose(tokens.entries()), _step; !(_step = _iterator()).done;){\n            var _step_value = _step.value, i2 = _step_value[0], element = _step_value[1];\n            token = element;\n            type = token[0];\n            if (type === \"(\") {\n                brackets += 1;\n            }\n            if (type === \")\") {\n                brackets -= 1;\n            }\n            if (brackets === 0 && type === \":\") {\n                if (!prev) {\n                    this.doubleColon(token);\n                } else if (prev[0] === \"word\" && prev[1] === \"progid\") {\n                    continue;\n                } else {\n                    return i2;\n                }\n            }\n            prev = token;\n        }\n        return false;\n    };\n    _proto.comment = function comment(token) {\n        var node2 = new Comment$2$1();\n        this.init(node2, token[2]);\n        node2.source.end = this.getPosition(token[3] || token[2]);\n        node2.source.end.offset++;\n        var text = token[1].slice(2, -2);\n        if (/^\\s*$/.test(text)) {\n            node2.text = \"\";\n            node2.raws.left = text;\n            node2.raws.right = \"\";\n        } else {\n            var match = text.match(/^(\\s*)([^]*\\S)(\\s*)$/);\n            node2.text = match[2];\n            node2.raws.left = match[1];\n            node2.raws.right = match[3];\n        }\n    };\n    _proto.createTokenizer = function createTokenizer() {\n        this.tokenizer = tokenizer2$1(this.input);\n    };\n    _proto.decl = function decl(tokens, customProperty) {\n        var node2 = new Declaration$2$1();\n        this.init(node2, tokens[0][2]);\n        var last = tokens[tokens.length - 1];\n        if (last[0] === \";\") {\n            this.semicolon = true;\n            tokens.pop();\n        }\n        node2.source.end = this.getPosition(last[3] || last[2] || findLastWithPosition$1(tokens));\n        node2.source.end.offset++;\n        while(tokens[0][0] !== \"word\"){\n            if (tokens.length === 1) this.unknownWord(tokens);\n            node2.raws.before += tokens.shift()[1];\n        }\n        node2.source.start = this.getPosition(tokens[0][2]);\n        node2.prop = \"\";\n        while(tokens.length){\n            var type = tokens[0][0];\n            if (type === \":\" || type === \"space\" || type === \"comment\") {\n                break;\n            }\n            node2.prop += tokens.shift()[1];\n        }\n        node2.raws.between = \"\";\n        var token;\n        while(tokens.length){\n            token = tokens.shift();\n            if (token[0] === \":\") {\n                node2.raws.between += token[1];\n                break;\n            } else {\n                if (token[0] === \"word\" && /\\w/.test(token[1])) {\n                    this.unknownWord([\n                        token\n                    ]);\n                }\n                node2.raws.between += token[1];\n            }\n        }\n        if (node2.prop[0] === \"_\" || node2.prop[0] === \"*\") {\n            node2.raws.before += node2.prop[0];\n            node2.prop = node2.prop.slice(1);\n        }\n        var firstSpaces = [];\n        var next;\n        while(tokens.length){\n            next = tokens[0][0];\n            if (next !== \"space\" && next !== \"comment\") break;\n            firstSpaces.push(tokens.shift());\n        }\n        this.precheckMissedSemicolon(tokens);\n        for(var i2 = tokens.length - 1; i2 >= 0; i2--){\n            token = tokens[i2];\n            if (token[1].toLowerCase() === \"!important\") {\n                node2.important = true;\n                var string = this.stringFrom(tokens, i2);\n                string = this.spacesFromEnd(tokens) + string;\n                if (string !== \" !important\") node2.raws.important = string;\n                break;\n            } else if (token[1].toLowerCase() === \"important\") {\n                var cache = tokens.slice(0);\n                var str = \"\";\n                for(var j = i2; j > 0; j--){\n                    var type1 = cache[j][0];\n                    if (str.trim().indexOf(\"!\") === 0 && type1 !== \"space\") {\n                        break;\n                    }\n                    str = cache.pop()[1] + str;\n                }\n                if (str.trim().indexOf(\"!\") === 0) {\n                    node2.important = true;\n                    node2.raws.important = str;\n                    tokens = cache;\n                }\n            }\n            if (token[0] !== \"space\" && token[0] !== \"comment\") {\n                break;\n            }\n        }\n        var hasWord = tokens.some(function(i2) {\n            return i2[0] !== \"space\" && i2[0] !== \"comment\";\n        });\n        if (hasWord) {\n            node2.raws.between += firstSpaces.map(function(i2) {\n                return i2[1];\n            }).join(\"\");\n            firstSpaces = [];\n        }\n        this.raw(node2, \"value\", firstSpaces.concat(tokens), customProperty);\n        if (node2.value.includes(\":\") && !customProperty) {\n            this.checkMissedSemicolon(tokens);\n        }\n    };\n    _proto.doubleColon = function doubleColon(token) {\n        throw this.input.error(\"Double colon\", {\n            offset: token[2]\n        }, {\n            offset: token[2] + token[1].length\n        });\n    };\n    _proto.emptyRule = function emptyRule(token) {\n        var node2 = new Rule$2$1();\n        this.init(node2, token[2]);\n        node2.selector = \"\";\n        node2.raws.between = \"\";\n        this.current = node2;\n    };\n    _proto.end = function end(token) {\n        if (this.current.nodes && this.current.nodes.length) {\n            this.current.raws.semicolon = this.semicolon;\n        }\n        this.semicolon = false;\n        this.current.raws.after = (this.current.raws.after || \"\") + this.spaces;\n        this.spaces = \"\";\n        if (this.current.parent) {\n            this.current.source.end = this.getPosition(token[2]);\n            this.current.source.end.offset++;\n            this.current = this.current.parent;\n        } else {\n            this.unexpectedClose(token);\n        }\n    };\n    _proto.endFile = function endFile() {\n        if (this.current.parent) this.unclosedBlock();\n        if (this.current.nodes && this.current.nodes.length) {\n            this.current.raws.semicolon = this.semicolon;\n        }\n        this.current.raws.after = (this.current.raws.after || \"\") + this.spaces;\n        this.root.source.end = this.getPosition(this.tokenizer.position());\n    };\n    _proto.freeSemicolon = function freeSemicolon(token) {\n        this.spaces += token[1];\n        if (this.current.nodes) {\n            var prev = this.current.nodes[this.current.nodes.length - 1];\n            if (prev && prev.type === \"rule\" && !prev.raws.ownSemicolon) {\n                prev.raws.ownSemicolon = this.spaces;\n                this.spaces = \"\";\n            }\n        }\n    };\n    // Helpers\n    _proto.getPosition = function getPosition(offset) {\n        var pos = this.input.fromOffset(offset);\n        return {\n            column: pos.col,\n            line: pos.line,\n            offset: offset\n        };\n    };\n    _proto.init = function init(node2, offset) {\n        this.current.push(node2);\n        node2.source = {\n            input: this.input,\n            start: this.getPosition(offset)\n        };\n        node2.raws.before = this.spaces;\n        this.spaces = \"\";\n        if (node2.type !== \"comment\") this.semicolon = false;\n    };\n    _proto.other = function other(start) {\n        var end = false;\n        var type = null;\n        var colon = false;\n        var bracket = null;\n        var brackets = [];\n        var customProperty = start[1].startsWith(\"--\");\n        var tokens = [];\n        var token = start;\n        while(token){\n            type = token[0];\n            tokens.push(token);\n            if (type === \"(\" || type === \"[\") {\n                if (!bracket) bracket = token;\n                brackets.push(type === \"(\" ? \")\" : \"]\");\n            } else if (customProperty && colon && type === \"{\") {\n                if (!bracket) bracket = token;\n                brackets.push(\"}\");\n            } else if (brackets.length === 0) {\n                if (type === \";\") {\n                    if (colon) {\n                        this.decl(tokens, customProperty);\n                        return;\n                    } else {\n                        break;\n                    }\n                } else if (type === \"{\") {\n                    this.rule(tokens);\n                    return;\n                } else if (type === \"}\") {\n                    this.tokenizer.back(tokens.pop());\n                    end = true;\n                    break;\n                } else if (type === \":\") {\n                    colon = true;\n                }\n            } else if (type === brackets[brackets.length - 1]) {\n                brackets.pop();\n                if (brackets.length === 0) bracket = null;\n            }\n            token = this.tokenizer.nextToken();\n        }\n        if (this.tokenizer.endOfFile()) end = true;\n        if (brackets.length > 0) this.unclosedBracket(bracket);\n        if (end && colon) {\n            if (!customProperty) {\n                while(tokens.length){\n                    token = tokens[tokens.length - 1][0];\n                    if (token !== \"space\" && token !== \"comment\") break;\n                    this.tokenizer.back(tokens.pop());\n                }\n            }\n            this.decl(tokens, customProperty);\n        } else {\n            this.unknownWord(tokens);\n        }\n    };\n    _proto.parse = function parse() {\n        var token;\n        while(!this.tokenizer.endOfFile()){\n            token = this.tokenizer.nextToken();\n            switch(token[0]){\n                case \"space\":\n                    this.spaces += token[1];\n                    break;\n                case \";\":\n                    this.freeSemicolon(token);\n                    break;\n                case \"}\":\n                    this.end(token);\n                    break;\n                case \"comment\":\n                    this.comment(token);\n                    break;\n                case \"at-word\":\n                    this.atrule(token);\n                    break;\n                case \"{\":\n                    this.emptyRule(token);\n                    break;\n                default:\n                    this.other(token);\n                    break;\n            }\n        }\n        this.endFile();\n    };\n    _proto.precheckMissedSemicolon = function precheckMissedSemicolon() {};\n    _proto.raw = function raw(node2, prop, tokens, customProperty) {\n        var token, type;\n        var length = tokens.length;\n        var value = \"\";\n        var clean = true;\n        var next, prev;\n        for(var i2 = 0; i2 < length; i2 += 1){\n            token = tokens[i2];\n            type = token[0];\n            if (type === \"space\" && i2 === length - 1 && !customProperty) {\n                clean = false;\n            } else if (type === \"comment\") {\n                prev = tokens[i2 - 1] ? tokens[i2 - 1][0] : \"empty\";\n                next = tokens[i2 + 1] ? tokens[i2 + 1][0] : \"empty\";\n                if (!SAFE_COMMENT_NEIGHBOR$1[prev] && !SAFE_COMMENT_NEIGHBOR$1[next]) {\n                    if (value.slice(-1) === \",\") {\n                        clean = false;\n                    } else {\n                        value += token[1];\n                    }\n                } else {\n                    clean = false;\n                }\n            } else {\n                value += token[1];\n            }\n        }\n        if (!clean) {\n            var raw = tokens.reduce(function(all, i2) {\n                return all + i2[1];\n            }, \"\");\n            node2.raws[prop] = {\n                raw: raw,\n                value: value\n            };\n        }\n        node2[prop] = value;\n    };\n    _proto.rule = function rule(tokens) {\n        tokens.pop();\n        var node2 = new Rule$2$1();\n        this.init(node2, tokens[0][2]);\n        node2.raws.between = this.spacesAndCommentsFromEnd(tokens);\n        this.raw(node2, \"selector\", tokens);\n        this.current = node2;\n    };\n    _proto.spacesAndCommentsFromEnd = function spacesAndCommentsFromEnd(tokens) {\n        var lastTokenType;\n        var spaces = \"\";\n        while(tokens.length){\n            lastTokenType = tokens[tokens.length - 1][0];\n            if (lastTokenType !== \"space\" && lastTokenType !== \"comment\") break;\n            spaces = tokens.pop()[1] + spaces;\n        }\n        return spaces;\n    };\n    // Errors\n    _proto.spacesAndCommentsFromStart = function spacesAndCommentsFromStart(tokens) {\n        var next;\n        var spaces = \"\";\n        while(tokens.length){\n            next = tokens[0][0];\n            if (next !== \"space\" && next !== \"comment\") break;\n            spaces += tokens.shift()[1];\n        }\n        return spaces;\n    };\n    _proto.spacesFromEnd = function spacesFromEnd(tokens) {\n        var lastTokenType;\n        var spaces = \"\";\n        while(tokens.length){\n            lastTokenType = tokens[tokens.length - 1][0];\n            if (lastTokenType !== \"space\") break;\n            spaces = tokens.pop()[1] + spaces;\n        }\n        return spaces;\n    };\n    _proto.stringFrom = function stringFrom(tokens, from) {\n        var result2 = \"\";\n        for(var i2 = from; i2 < tokens.length; i2++){\n            result2 += tokens[i2][1];\n        }\n        tokens.splice(from, tokens.length - from);\n        return result2;\n    };\n    _proto.unclosedBlock = function unclosedBlock() {\n        var pos = this.current.source.start;\n        throw this.input.error(\"Unclosed block\", pos.line, pos.column);\n    };\n    _proto.unclosedBracket = function unclosedBracket(bracket) {\n        throw this.input.error(\"Unclosed bracket\", {\n            offset: bracket[2]\n        }, {\n            offset: bracket[2] + 1\n        });\n    };\n    _proto.unexpectedClose = function unexpectedClose(token) {\n        throw this.input.error(\"Unexpected }\", {\n            offset: token[2]\n        }, {\n            offset: token[2] + 1\n        });\n    };\n    _proto.unknownWord = function unknownWord(tokens) {\n        throw this.input.error(\"Unknown word\", {\n            offset: tokens[0][2]\n        }, {\n            offset: tokens[0][2] + tokens[0][1].length\n        });\n    };\n    _proto.unnamedAtrule = function unnamedAtrule(node2, token) {\n        throw this.input.error(\"At-rule without name\", {\n            offset: token[2]\n        }, {\n            offset: token[2] + token[1].length\n        });\n    };\n    return Parser;\n}();\nvar parser$1 = Parser$1$1;\nvar Container$2$1 = container$1;\nvar Parser2$1 = parser$1;\nvar Input$2$1 = input$1;\nfunction parse$3$1(css, opts) {\n    var input2 = new Input$2$1(css, opts);\n    var parser2 = new Parser2$1(input2);\n    try {\n        parser2.parse();\n    } catch (e2) {\n        if (process.env.NODE_ENV !== \"production\") {\n            if (e2.name === \"CssSyntaxError\" && opts && opts.from) {\n                if (/\\.scss$/i.test(opts.from)) {\n                    e2.message += \"\\nYou tried to parse SCSS with the standard CSS parser; try again with the postcss-scss parser\";\n                } else if (/\\.sass/i.test(opts.from)) {\n                    e2.message += \"\\nYou tried to parse Sass with the standard CSS parser; try again with the postcss-sass parser\";\n                } else if (/\\.less$/i.test(opts.from)) {\n                    e2.message += \"\\nYou tried to parse Less with the standard CSS parser; try again with the postcss-less parser\";\n                }\n            }\n        }\n        throw e2;\n    }\n    return parser2.root;\n}\nvar parse_1$1 = parse$3$1;\nparse$3$1.default = parse$3$1;\nContainer$2$1.registerParse(parse$3$1);\nvar isClean$3 = symbols$1.isClean, my$3 = symbols$1.my;\nvar MapGenerator$1$1 = mapGenerator$1;\nvar stringify$2$1 = stringify_1$1;\nvar Container$1$1 = container$1;\nvar Document$2$1 = document$1$1;\nvar warnOnce$1$1 = warnOnce$2$1;\nvar Result$2$1 = result$1;\nvar parse$2$1 = parse_1$1;\nvar Root$3$1 = root$1;\nvar TYPE_TO_CLASS_NAME$1 = {\n    atrule: \"AtRule\",\n    comment: \"Comment\",\n    decl: \"Declaration\",\n    document: \"Document\",\n    root: \"Root\",\n    rule: \"Rule\"\n};\nvar PLUGIN_PROPS$1 = {\n    AtRule: true,\n    AtRuleExit: true,\n    Comment: true,\n    CommentExit: true,\n    Declaration: true,\n    DeclarationExit: true,\n    Document: true,\n    DocumentExit: true,\n    Once: true,\n    OnceExit: true,\n    postcssPlugin: true,\n    prepare: true,\n    Root: true,\n    RootExit: true,\n    Rule: true,\n    RuleExit: true\n};\nvar NOT_VISITORS$1 = {\n    Once: true,\n    postcssPlugin: true,\n    prepare: true\n};\nvar CHILDREN$1 = 0;\nfunction isPromise$1(obj) {\n    return (typeof obj === \"undefined\" ? \"undefined\" : _type_of(obj)) === \"object\" && typeof obj.then === \"function\";\n}\nfunction getEvents$1(node2) {\n    var key = false;\n    var type = TYPE_TO_CLASS_NAME$1[node2.type];\n    if (node2.type === \"decl\") {\n        key = node2.prop.toLowerCase();\n    } else if (node2.type === \"atrule\") {\n        key = node2.name.toLowerCase();\n    }\n    if (key && node2.append) {\n        return [\n            type,\n            type + \"-\" + key,\n            CHILDREN$1,\n            type + \"Exit\",\n            type + \"Exit-\" + key\n        ];\n    } else if (key) {\n        return [\n            type,\n            type + \"-\" + key,\n            type + \"Exit\",\n            type + \"Exit-\" + key\n        ];\n    } else if (node2.append) {\n        return [\n            type,\n            CHILDREN$1,\n            type + \"Exit\"\n        ];\n    } else {\n        return [\n            type,\n            type + \"Exit\"\n        ];\n    }\n}\nfunction toStack$1(node2) {\n    var events;\n    if (node2.type === \"document\") {\n        events = [\n            \"Document\",\n            CHILDREN$1,\n            \"DocumentExit\"\n        ];\n    } else if (node2.type === \"root\") {\n        events = [\n            \"Root\",\n            CHILDREN$1,\n            \"RootExit\"\n        ];\n    } else {\n        events = getEvents$1(node2);\n    }\n    return {\n        eventIndex: 0,\n        events: events,\n        iterator: 0,\n        node: node2,\n        visitorIndex: 0,\n        visitors: []\n    };\n}\nfunction cleanMarks$1(node2) {\n    node2[isClean$3] = false;\n    if (node2.nodes) node2.nodes.forEach(function(i2) {\n        return cleanMarks$1(i2);\n    });\n    return node2;\n}\nvar postcss$2$1 = {};\nvar LazyResult$2$1 = /*#__PURE__*/ function() {\n    function LazyResult(processor2, css, opts) {\n        var _this = this;\n        this.stringified = false;\n        this.processed = false;\n        var root2;\n        if ((typeof css === \"undefined\" ? \"undefined\" : _type_of(css)) === \"object\" && css !== null && (css.type === \"root\" || css.type === \"document\")) {\n            root2 = cleanMarks$1(css);\n        } else if (_instanceof(css, LazyResult) || _instanceof(css, Result$2$1)) {\n            root2 = cleanMarks$1(css.root);\n            if (css.map) {\n                if (typeof opts.map === \"undefined\") opts.map = {};\n                if (!opts.map.inline) opts.map.inline = false;\n                opts.map.prev = css.map;\n            }\n        } else {\n            var parser2 = parse$2$1;\n            if (opts.syntax) parser2 = opts.syntax.parse;\n            if (opts.parser) parser2 = opts.parser;\n            if (parser2.parse) parser2 = parser2.parse;\n            try {\n                root2 = parser2(css, opts);\n            } catch (error) {\n                this.processed = true;\n                this.error = error;\n            }\n            if (root2 && !root2[my$3]) {\n                Container$1$1.rebuild(root2);\n            }\n        }\n        this.result = new Result$2$1(processor2, root2, opts);\n        this.helpers = _extends({}, postcss$2$1, {\n            postcss: postcss$2$1,\n            result: this.result\n        });\n        this.plugins = this.processor.plugins.map(function(plugin22) {\n            if ((typeof plugin22 === \"undefined\" ? \"undefined\" : _type_of(plugin22)) === \"object\" && plugin22.prepare) {\n                return _extends({}, plugin22, plugin22.prepare(_this.result));\n            } else {\n                return plugin22;\n            }\n        });\n    }\n    var _proto = LazyResult.prototype;\n    _proto.async = function async() {\n        if (this.error) return Promise.reject(this.error);\n        if (this.processed) return Promise.resolve(this.result);\n        if (!this.processing) {\n            this.processing = this.runAsync();\n        }\n        return this.processing;\n    };\n    _proto.catch = function _catch(onRejected) {\n        return this.async().catch(onRejected);\n    };\n    _proto.finally = function _finally(onFinally) {\n        return this.async().then(onFinally, onFinally);\n    };\n    _proto.getAsyncError = function getAsyncError() {\n        throw new Error(\"Use process(css).then(cb) to work with async plugins\");\n    };\n    _proto.handleError = function handleError(error, node2) {\n        var plugin22 = this.result.lastPlugin;\n        try {\n            if (node2) node2.addToError(error);\n            this.error = error;\n            if (error.name === \"CssSyntaxError\" && !error.plugin) {\n                error.plugin = plugin22.postcssPlugin;\n                error.setMessage();\n            } else if (plugin22.postcssVersion) {\n                if (process.env.NODE_ENV !== \"production\") {\n                    var pluginName = plugin22.postcssPlugin;\n                    var pluginVer = plugin22.postcssVersion;\n                    var runtimeVer = this.result.processor.version;\n                    var a2 = pluginVer.split(\".\");\n                    var b = runtimeVer.split(\".\");\n                    if (a2[0] !== b[0] || parseInt(a2[1]) > parseInt(b[1])) {\n                        console.error(\"Unknown error from PostCSS plugin. Your current PostCSS version is \" + runtimeVer + \", but \" + pluginName + \" uses \" + pluginVer + \". Perhaps this is the source of the error below.\");\n                    }\n                }\n            }\n        } catch (err) {\n            if (console && console.error) console.error(err);\n        }\n        return error;\n    };\n    _proto.prepareVisitors = function prepareVisitors() {\n        var _this = this;\n        this.listeners = {};\n        var add = function(plugin22, type, cb) {\n            if (!_this.listeners[type]) _this.listeners[type] = [];\n            _this.listeners[type].push([\n                plugin22,\n                cb\n            ]);\n        };\n        for(var _iterator = _create_for_of_iterator_helper_loose(this.plugins), _step; !(_step = _iterator()).done;){\n            var plugin22 = _step.value;\n            if ((typeof plugin22 === \"undefined\" ? \"undefined\" : _type_of(plugin22)) === \"object\") {\n                for(var event in plugin22){\n                    if (!PLUGIN_PROPS$1[event] && /^[A-Z]/.test(event)) {\n                        throw new Error(\"Unknown event \" + event + \" in \" + plugin22.postcssPlugin + \". Try to update PostCSS (\" + this.processor.version + \" now).\");\n                    }\n                    if (!NOT_VISITORS$1[event]) {\n                        if (_type_of(plugin22[event]) === \"object\") {\n                            for(var filter in plugin22[event]){\n                                if (filter === \"*\") {\n                                    add(plugin22, event, plugin22[event][filter]);\n                                } else {\n                                    add(plugin22, event + \"-\" + filter.toLowerCase(), plugin22[event][filter]);\n                                }\n                            }\n                        } else if (typeof plugin22[event] === \"function\") {\n                            add(plugin22, event, plugin22[event]);\n                        }\n                    }\n                }\n            }\n        }\n        this.hasListener = Object.keys(this.listeners).length > 0;\n    };\n    _proto.runAsync = function runAsync() {\n        var _this = this;\n        return _async_to_generator(function() {\n            var i2, plugin22, promise, error, root2, stack, promise1, e2, node2, _loop, _iterator, _step;\n            return _ts_generator(this, function(_state) {\n                switch(_state.label){\n                    case 0:\n                        _this.plugin = 0;\n                        i2 = 0;\n                        _state.label = 1;\n                    case 1:\n                        if (!(i2 < _this.plugins.length)) return [\n                            3,\n                            6\n                        ];\n                        plugin22 = _this.plugins[i2];\n                        promise = _this.runOnRoot(plugin22);\n                        if (!isPromise$1(promise)) return [\n                            3,\n                            5\n                        ];\n                        _state.label = 2;\n                    case 2:\n                        _state.trys.push([\n                            2,\n                            4,\n                            ,\n                            5\n                        ]);\n                        return [\n                            4,\n                            promise\n                        ];\n                    case 3:\n                        _state.sent();\n                        return [\n                            3,\n                            5\n                        ];\n                    case 4:\n                        error = _state.sent();\n                        throw _this.handleError(error);\n                    case 5:\n                        i2++;\n                        return [\n                            3,\n                            1\n                        ];\n                    case 6:\n                        _this.prepareVisitors();\n                        if (!_this.hasListener) return [\n                            3,\n                            18\n                        ];\n                        root2 = _this.result.root;\n                        _state.label = 7;\n                    case 7:\n                        if (!!root2[isClean$3]) return [\n                            3,\n                            14\n                        ];\n                        root2[isClean$3] = true;\n                        stack = [\n                            toStack$1(root2)\n                        ];\n                        _state.label = 8;\n                    case 8:\n                        if (!(stack.length > 0)) return [\n                            3,\n                            13\n                        ];\n                        promise1 = _this.visitTick(stack);\n                        if (!isPromise$1(promise1)) return [\n                            3,\n                            12\n                        ];\n                        _state.label = 9;\n                    case 9:\n                        _state.trys.push([\n                            9,\n                            11,\n                            ,\n                            12\n                        ]);\n                        return [\n                            4,\n                            promise1\n                        ];\n                    case 10:\n                        _state.sent();\n                        return [\n                            3,\n                            12\n                        ];\n                    case 11:\n                        e2 = _state.sent();\n                        node2 = stack[stack.length - 1].node;\n                        throw _this.handleError(e2, node2);\n                    case 12:\n                        return [\n                            3,\n                            8\n                        ];\n                    case 13:\n                        return [\n                            3,\n                            7\n                        ];\n                    case 14:\n                        if (!_this.listeners.OnceExit) return [\n                            3,\n                            18\n                        ];\n                        _loop = function() {\n                            var _step_value, plugin22, visitor, roots, e2;\n                            return _ts_generator(this, function(_state) {\n                                switch(_state.label){\n                                    case 0:\n                                        _step_value = _step.value, plugin22 = _step_value[0], visitor = _step_value[1];\n                                        _this.result.lastPlugin = plugin22;\n                                        _state.label = 1;\n                                    case 1:\n                                        _state.trys.push([\n                                            1,\n                                            6,\n                                            ,\n                                            7\n                                        ]);\n                                        if (!(root2.type === \"document\")) return [\n                                            3,\n                                            3\n                                        ];\n                                        roots = root2.nodes.map(function(subRoot) {\n                                            return visitor(subRoot, _this.helpers);\n                                        });\n                                        return [\n                                            4,\n                                            Promise.all(roots)\n                                        ];\n                                    case 2:\n                                        _state.sent();\n                                        return [\n                                            3,\n                                            5\n                                        ];\n                                    case 3:\n                                        return [\n                                            4,\n                                            visitor(root2, _this.helpers)\n                                        ];\n                                    case 4:\n                                        _state.sent();\n                                        _state.label = 5;\n                                    case 5:\n                                        return [\n                                            3,\n                                            7\n                                        ];\n                                    case 6:\n                                        e2 = _state.sent();\n                                        throw _this.handleError(e2);\n                                    case 7:\n                                        return [\n                                            2\n                                        ];\n                                }\n                            });\n                        };\n                        _iterator = _create_for_of_iterator_helper_loose(_this.listeners.OnceExit);\n                        _state.label = 15;\n                    case 15:\n                        if (!!(_step = _iterator()).done) return [\n                            3,\n                            18\n                        ];\n                        return [\n                            5,\n                            _ts_values(_loop())\n                        ];\n                    case 16:\n                        _state.sent();\n                        _state.label = 17;\n                    case 17:\n                        return [\n                            3,\n                            15\n                        ];\n                    case 18:\n                        _this.processed = true;\n                        return [\n                            2,\n                            _this.stringify()\n                        ];\n                }\n            });\n        })();\n    };\n    _proto.runOnRoot = function runOnRoot(plugin22) {\n        var _this = this;\n        this.result.lastPlugin = plugin22;\n        try {\n            if ((typeof plugin22 === \"undefined\" ? \"undefined\" : _type_of(plugin22)) === \"object\" && plugin22.Once) {\n                if (this.result.root.type === \"document\") {\n                    var roots = this.result.root.nodes.map(function(root2) {\n                        return plugin22.Once(root2, _this.helpers);\n                    });\n                    if (isPromise$1(roots[0])) {\n                        return Promise.all(roots);\n                    }\n                    return roots;\n                }\n                return plugin22.Once(this.result.root, this.helpers);\n            } else if (typeof plugin22 === \"function\") {\n                return plugin22(this.result.root, this.result);\n            }\n        } catch (error) {\n            throw this.handleError(error);\n        }\n    };\n    _proto.stringify = function stringify() {\n        if (this.error) throw this.error;\n        if (this.stringified) return this.result;\n        this.stringified = true;\n        this.sync();\n        var opts = this.result.opts;\n        var str = stringify$2$1;\n        if (opts.syntax) str = opts.syntax.stringify;\n        if (opts.stringifier) str = opts.stringifier;\n        if (str.stringify) str = str.stringify;\n        var map = new MapGenerator$1$1(str, this.result.root, this.result.opts);\n        var data = map.generate();\n        this.result.css = data[0];\n        this.result.map = data[1];\n        return this.result;\n    };\n    _proto.sync = function sync() {\n        if (this.error) throw this.error;\n        if (this.processed) return this.result;\n        this.processed = true;\n        if (this.processing) {\n            throw this.getAsyncError();\n        }\n        for(var _iterator = _create_for_of_iterator_helper_loose(this.plugins), _step; !(_step = _iterator()).done;){\n            var plugin22 = _step.value;\n            var promise = this.runOnRoot(plugin22);\n            if (isPromise$1(promise)) {\n                throw this.getAsyncError();\n            }\n        }\n        this.prepareVisitors();\n        if (this.hasListener) {\n            var root2 = this.result.root;\n            while(!root2[isClean$3]){\n                root2[isClean$3] = true;\n                this.walkSync(root2);\n            }\n            if (this.listeners.OnceExit) {\n                if (root2.type === \"document\") {\n                    for(var _iterator1 = _create_for_of_iterator_helper_loose(root2.nodes), _step1; !(_step1 = _iterator1()).done;){\n                        var subRoot = _step1.value;\n                        this.visitSync(this.listeners.OnceExit, subRoot);\n                    }\n                } else {\n                    this.visitSync(this.listeners.OnceExit, root2);\n                }\n            }\n        }\n        return this.result;\n    };\n    _proto.then = function then(onFulfilled, onRejected) {\n        if (process.env.NODE_ENV !== \"production\") {\n            if (!(\"from\" in this.opts)) {\n                warnOnce$1$1(\"Without `from` option PostCSS could generate wrong source map and will not find Browserslist config. Set it to CSS file path or to `undefined` to prevent this warning.\");\n            }\n        }\n        return this.async().then(onFulfilled, onRejected);\n    };\n    _proto.toString = function toString() {\n        return this.css;\n    };\n    _proto.visitSync = function visitSync(visitors, node2) {\n        for(var _iterator = _create_for_of_iterator_helper_loose(visitors), _step; !(_step = _iterator()).done;){\n            var _step_value = _step.value, plugin22 = _step_value[0], visitor = _step_value[1];\n            this.result.lastPlugin = plugin22;\n            var promise = void 0;\n            try {\n                promise = visitor(node2, this.helpers);\n            } catch (e2) {\n                throw this.handleError(e2, node2.proxyOf);\n            }\n            if (node2.type !== \"root\" && node2.type !== \"document\" && !node2.parent) {\n                return true;\n            }\n            if (isPromise$1(promise)) {\n                throw this.getAsyncError();\n            }\n        }\n    };\n    _proto.visitTick = function visitTick(stack) {\n        var visit2 = stack[stack.length - 1];\n        var node2 = visit2.node, visitors = visit2.visitors;\n        if (node2.type !== \"root\" && node2.type !== \"document\" && !node2.parent) {\n            stack.pop();\n            return;\n        }\n        if (visitors.length > 0 && visit2.visitorIndex < visitors.length) {\n            var _visitors_visit2_visitorIndex = visitors[visit2.visitorIndex], plugin22 = _visitors_visit2_visitorIndex[0], visitor = _visitors_visit2_visitorIndex[1];\n            visit2.visitorIndex += 1;\n            if (visit2.visitorIndex === visitors.length) {\n                visit2.visitors = [];\n                visit2.visitorIndex = 0;\n            }\n            this.result.lastPlugin = plugin22;\n            try {\n                return visitor(node2.toProxy(), this.helpers);\n            } catch (e2) {\n                throw this.handleError(e2, node2);\n            }\n        }\n        if (visit2.iterator !== 0) {\n            var iterator = visit2.iterator;\n            var child;\n            while(child = node2.nodes[node2.indexes[iterator]]){\n                node2.indexes[iterator] += 1;\n                if (!child[isClean$3]) {\n                    child[isClean$3] = true;\n                    stack.push(toStack$1(child));\n                    return;\n                }\n            }\n            visit2.iterator = 0;\n            delete node2.indexes[iterator];\n        }\n        var events = visit2.events;\n        while(visit2.eventIndex < events.length){\n            var event = events[visit2.eventIndex];\n            visit2.eventIndex += 1;\n            if (event === CHILDREN$1) {\n                if (node2.nodes && node2.nodes.length) {\n                    node2[isClean$3] = true;\n                    visit2.iterator = node2.getIterator();\n                }\n                return;\n            } else if (this.listeners[event]) {\n                visit2.visitors = this.listeners[event];\n                return;\n            }\n        }\n        stack.pop();\n    };\n    _proto.walkSync = function walkSync(node2) {\n        var _this = this;\n        node2[isClean$3] = true;\n        var events = getEvents$1(node2);\n        for(var _iterator = _create_for_of_iterator_helper_loose(events), _step; !(_step = _iterator()).done;){\n            var event = _step.value;\n            if (event === CHILDREN$1) {\n                if (node2.nodes) {\n                    node2.each(function(child) {\n                        if (!child[isClean$3]) _this.walkSync(child);\n                    });\n                }\n            } else {\n                var visitors = this.listeners[event];\n                if (visitors) {\n                    if (this.visitSync(visitors, node2.toProxy())) return;\n                }\n            }\n        }\n    };\n    _proto.warnings = function warnings() {\n        return this.sync().warnings();\n    };\n    _create_class(LazyResult, [\n        {\n            key: \"content\",\n            get: function get() {\n                return this.stringify().content;\n            }\n        },\n        {\n            key: \"css\",\n            get: function get() {\n                return this.stringify().css;\n            }\n        },\n        {\n            key: \"map\",\n            get: function get() {\n                return this.stringify().map;\n            }\n        },\n        {\n            key: \"messages\",\n            get: function get() {\n                return this.sync().messages;\n            }\n        },\n        {\n            key: \"opts\",\n            get: function get() {\n                return this.result.opts;\n            }\n        },\n        {\n            key: \"processor\",\n            get: function get() {\n                return this.result.processor;\n            }\n        },\n        {\n            key: \"root\",\n            get: function get() {\n                return this.sync().root;\n            }\n        },\n        {\n            key: Symbol.toStringTag,\n            get: function get() {\n                return \"LazyResult\";\n            }\n        }\n    ]);\n    return LazyResult;\n}();\nLazyResult$2$1.registerPostcss = function(dependant) {\n    postcss$2$1 = dependant;\n};\nvar lazyResult$1 = LazyResult$2$1;\nLazyResult$2$1.default = LazyResult$2$1;\nRoot$3$1.registerLazyResult(LazyResult$2$1);\nDocument$2$1.registerLazyResult(LazyResult$2$1);\nvar MapGenerator2$1 = mapGenerator$1;\nvar stringify$1$1 = stringify_1$1;\nvar warnOnce2$1 = warnOnce$2$1;\nvar parse$1$1 = parse_1$1;\nvar Result$1$1 = result$1;\nvar NoWorkResult$1$1 = /*#__PURE__*/ function() {\n    function NoWorkResult(processor2, css, opts) {\n        css = css.toString();\n        this.stringified = false;\n        this._processor = processor2;\n        this._css = css;\n        this._opts = opts;\n        this._map = void 0;\n        var root2;\n        var str = stringify$1$1;\n        this.result = new Result$1$1(this._processor, root2, this._opts);\n        this.result.css = css;\n        var self = this;\n        Object.defineProperty(this.result, \"root\", {\n            get: function get() {\n                return self.root;\n            }\n        });\n        var map = new MapGenerator2$1(str, root2, this._opts, css);\n        if (map.isMap()) {\n            var _map_generate = map.generate(), generatedCSS = _map_generate[0], generatedMap = _map_generate[1];\n            if (generatedCSS) {\n                this.result.css = generatedCSS;\n            }\n            if (generatedMap) {\n                this.result.map = generatedMap;\n            }\n        } else {\n            map.clearAnnotation();\n            this.result.css = map.css;\n        }\n    }\n    var _proto = NoWorkResult.prototype;\n    _proto.async = function async() {\n        if (this.error) return Promise.reject(this.error);\n        return Promise.resolve(this.result);\n    };\n    _proto.catch = function _catch(onRejected) {\n        return this.async().catch(onRejected);\n    };\n    _proto.finally = function _finally(onFinally) {\n        return this.async().then(onFinally, onFinally);\n    };\n    _proto.sync = function sync() {\n        if (this.error) throw this.error;\n        return this.result;\n    };\n    _proto.then = function then(onFulfilled, onRejected) {\n        if (process.env.NODE_ENV !== \"production\") {\n            if (!(\"from\" in this._opts)) {\n                warnOnce2$1(\"Without `from` option PostCSS could generate wrong source map and will not find Browserslist config. Set it to CSS file path or to `undefined` to prevent this warning.\");\n            }\n        }\n        return this.async().then(onFulfilled, onRejected);\n    };\n    _proto.toString = function toString() {\n        return this._css;\n    };\n    _proto.warnings = function warnings() {\n        return [];\n    };\n    _create_class(NoWorkResult, [\n        {\n            key: \"content\",\n            get: function get() {\n                return this.result.css;\n            }\n        },\n        {\n            key: \"css\",\n            get: function get() {\n                return this.result.css;\n            }\n        },\n        {\n            key: \"map\",\n            get: function get() {\n                return this.result.map;\n            }\n        },\n        {\n            key: \"messages\",\n            get: function get() {\n                return [];\n            }\n        },\n        {\n            key: \"opts\",\n            get: function get() {\n                return this.result.opts;\n            }\n        },\n        {\n            key: \"processor\",\n            get: function get() {\n                return this.result.processor;\n            }\n        },\n        {\n            key: \"root\",\n            get: function get() {\n                if (this._root) {\n                    return this._root;\n                }\n                var root2;\n                var parser2 = parse$1$1;\n                try {\n                    root2 = parser2(this._css, this._opts);\n                } catch (error) {\n                    this.error = error;\n                }\n                if (this.error) {\n                    throw this.error;\n                } else {\n                    this._root = root2;\n                    return root2;\n                }\n            }\n        },\n        {\n            key: Symbol.toStringTag,\n            get: function get() {\n                return \"NoWorkResult\";\n            }\n        }\n    ]);\n    return NoWorkResult;\n}();\nvar noWorkResult$1 = NoWorkResult$1$1;\nNoWorkResult$1$1.default = NoWorkResult$1$1;\nvar NoWorkResult2$1 = noWorkResult$1;\nvar LazyResult$1$1 = lazyResult$1;\nvar Document$1$1 = document$1$1;\nvar Root$2$1 = root$1;\nvar Processor$1$1 = /*#__PURE__*/ function() {\n    function Processor(plugins) {\n        if (plugins === void 0) plugins = [];\n        this.version = \"8.4.38\";\n        this.plugins = this.normalize(plugins);\n    }\n    var _proto = Processor.prototype;\n    _proto.normalize = function normalize(plugins) {\n        var normalized = [];\n        for(var _iterator = _create_for_of_iterator_helper_loose(plugins), _step; !(_step = _iterator()).done;){\n            var i2 = _step.value;\n            if (i2.postcss === true) {\n                i2 = i2();\n            } else if (i2.postcss) {\n                i2 = i2.postcss;\n            }\n            if ((typeof i2 === \"undefined\" ? \"undefined\" : _type_of(i2)) === \"object\" && Array.isArray(i2.plugins)) {\n                normalized = normalized.concat(i2.plugins);\n            } else if ((typeof i2 === \"undefined\" ? \"undefined\" : _type_of(i2)) === \"object\" && i2.postcssPlugin) {\n                normalized.push(i2);\n            } else if (typeof i2 === \"function\") {\n                normalized.push(i2);\n            } else if ((typeof i2 === \"undefined\" ? \"undefined\" : _type_of(i2)) === \"object\" && (i2.parse || i2.stringify)) {\n                if (process.env.NODE_ENV !== \"production\") {\n                    throw new Error(\"PostCSS syntaxes cannot be used as plugins. Instead, please use one of the syntax/parser/stringifier options as outlined in your PostCSS runner documentation.\");\n                }\n            } else {\n                throw new Error(i2 + \" is not a PostCSS plugin\");\n            }\n        }\n        return normalized;\n    };\n    _proto.process = function process1(css, opts) {\n        if (opts === void 0) opts = {};\n        if (!this.plugins.length && !opts.parser && !opts.stringifier && !opts.syntax) {\n            return new NoWorkResult2$1(this, css, opts);\n        } else {\n            return new LazyResult$1$1(this, css, opts);\n        }\n    };\n    _proto.use = function use(plugin22) {\n        this.plugins = this.plugins.concat(this.normalize([\n            plugin22\n        ]));\n        return this;\n    };\n    return Processor;\n}();\nvar processor$1 = Processor$1$1;\nProcessor$1$1.default = Processor$1$1;\nRoot$2$1.registerProcessor(Processor$1$1);\nDocument$1$1.registerProcessor(Processor$1$1);\nvar Declaration$1$1 = declaration$1;\nvar PreviousMap2$1 = previousMap$1;\nvar Comment$1$1 = comment$1;\nvar AtRule$1$1 = atRule$1;\nvar Input$1$1 = input$1;\nvar Root$1$1 = root$1;\nvar Rule$1$1 = rule$1;\nfunction fromJSON$1$1(json, inputs) {\n    if (Array.isArray(json)) return json.map(function(n2) {\n        return fromJSON$1$1(n2);\n    });\n    var ownInputs = json.inputs, defaults = _object_without_properties_loose(json, [\n        \"inputs\"\n    ]);\n    if (ownInputs) {\n        inputs = [];\n        for(var _iterator = _create_for_of_iterator_helper_loose(ownInputs), _step; !(_step = _iterator()).done;){\n            var input2 = _step.value;\n            var inputHydrated = _extends({}, input2, {\n                __proto__: Input$1$1.prototype\n            });\n            if (inputHydrated.map) {\n                inputHydrated.map = _extends({}, inputHydrated.map, {\n                    __proto__: PreviousMap2$1.prototype\n                });\n            }\n            inputs.push(inputHydrated);\n        }\n    }\n    if (defaults.nodes) {\n        defaults.nodes = json.nodes.map(function(n2) {\n            return fromJSON$1$1(n2, inputs);\n        });\n    }\n    if (defaults.source) {\n        var _defaults_source = defaults.source, inputId = _defaults_source.inputId, source = _object_without_properties_loose(_defaults_source, [\n            \"inputId\"\n        ]);\n        defaults.source = source;\n        if (inputId != null) {\n            defaults.source.input = inputs[inputId];\n        }\n    }\n    if (defaults.type === \"root\") {\n        return new Root$1$1(defaults);\n    } else if (defaults.type === \"decl\") {\n        return new Declaration$1$1(defaults);\n    } else if (defaults.type === \"rule\") {\n        return new Rule$1$1(defaults);\n    } else if (defaults.type === \"comment\") {\n        return new Comment$1$1(defaults);\n    } else if (defaults.type === \"atrule\") {\n        return new AtRule$1$1(defaults);\n    } else {\n        throw new Error(\"Unknown node type: \" + json.type);\n    }\n}\nvar fromJSON_1$1 = fromJSON$1$1;\nfromJSON$1$1.default = fromJSON$1$1;\nvar CssSyntaxError2$1 = cssSyntaxError$1;\nvar Declaration2$1 = declaration$1;\nvar LazyResult2$1 = lazyResult$1;\nvar Container2$1 = container$1;\nvar Processor2$1 = processor$1;\nvar stringify$5 = stringify_1$1;\nvar fromJSON$2 = fromJSON_1$1;\nvar Document22 = document$1$1;\nvar Warning2$1 = warning$1;\nvar Comment2$1 = comment$1;\nvar AtRule2$1 = atRule$1;\nvar Result2$1 = result$1;\nvar Input2$1 = input$1;\nvar parse$5 = parse_1$1;\nvar list$3 = list_1$1;\nvar Rule2$1 = rule$1;\nvar Root2$1 = root$1;\nvar Node2$1 = node$1;\nfunction postcss$3() {\n    for(var _len = arguments.length, plugins = new Array(_len), _key = 0; _key < _len; _key++){\n        plugins[_key] = arguments[_key];\n    }\n    if (plugins.length === 1 && Array.isArray(plugins[0])) {\n        plugins = plugins[0];\n    }\n    return new Processor2$1(plugins);\n}\npostcss$3.plugin = function plugin(name, initializer) {\n    var warningPrinted = false;\n    function creator() {\n        for(var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++){\n            args[_key] = arguments[_key];\n        }\n        if (console && console.warn && !warningPrinted) {\n            warningPrinted = true;\n            console.warn(name + \": postcss.plugin was deprecated. Migration guide:\\nhttps://evilmartians.com/chronicles/postcss-8-plugin-migration\");\n            if (process.env.LANG && process.env.LANG.startsWith(\"cn\")) {\n                console.warn(name + \": 里面 postcss.plugin 被弃用. 迁移指南:\\nhttps://www.w3ctech.com/topic/2226\");\n            }\n        }\n        var transformer = initializer.apply(void 0, [].concat(args));\n        transformer.postcssPlugin = name;\n        transformer.postcssVersion = new Processor2$1().version;\n        return transformer;\n    }\n    var cache;\n    Object.defineProperty(creator, \"postcss\", {\n        get: function get() {\n            if (!cache) cache = creator();\n            return cache;\n        }\n    });\n    creator.process = function(css, processOpts, pluginOpts) {\n        return postcss$3([\n            creator(pluginOpts)\n        ]).process(css, processOpts);\n    };\n    return creator;\n};\npostcss$3.stringify = stringify$5;\npostcss$3.parse = parse$5;\npostcss$3.fromJSON = fromJSON$2;\npostcss$3.list = list$3;\npostcss$3.comment = function(defaults) {\n    return new Comment2$1(defaults);\n};\npostcss$3.atRule = function(defaults) {\n    return new AtRule2$1(defaults);\n};\npostcss$3.decl = function(defaults) {\n    return new Declaration2$1(defaults);\n};\npostcss$3.rule = function(defaults) {\n    return new Rule2$1(defaults);\n};\npostcss$3.root = function(defaults) {\n    return new Root2$1(defaults);\n};\npostcss$3.document = function(defaults) {\n    return new Document22(defaults);\n};\npostcss$3.CssSyntaxError = CssSyntaxError2$1;\npostcss$3.Declaration = Declaration2$1;\npostcss$3.Container = Container2$1;\npostcss$3.Processor = Processor2$1;\npostcss$3.Document = Document22;\npostcss$3.Comment = Comment2$1;\npostcss$3.Warning = Warning2$1;\npostcss$3.AtRule = AtRule2$1;\npostcss$3.Result = Result2$1;\npostcss$3.Input = Input2$1;\npostcss$3.Rule = Rule2$1;\npostcss$3.Root = Root2$1;\npostcss$3.Node = Node2$1;\nLazyResult2$1.registerPostcss(postcss$3);\nvar postcss_1$1 = postcss$3;\npostcss$3.default = postcss$3;\nvar postcss$1$1 = /* @__PURE__ */ getDefaultExportFromCjs$1(postcss_1$1);\npostcss$1$1.stringify;\npostcss$1$1.fromJSON;\npostcss$1$1.plugin;\npostcss$1$1.parse;\npostcss$1$1.list;\npostcss$1$1.document;\npostcss$1$1.comment;\npostcss$1$1.atRule;\npostcss$1$1.rule;\npostcss$1$1.decl;\npostcss$1$1.root;\npostcss$1$1.CssSyntaxError;\npostcss$1$1.Declaration;\npostcss$1$1.Container;\npostcss$1$1.Processor;\npostcss$1$1.Document;\npostcss$1$1.Comment;\npostcss$1$1.Warning;\npostcss$1$1.AtRule;\npostcss$1$1.Result;\npostcss$1$1.Input;\npostcss$1$1.Rule;\npostcss$1$1.Root;\npostcss$1$1.Node;\nvar __defProp2 = Object.defineProperty;\nvar __defNormalProp2 = function(obj, key, value) {\n    return key in obj ? __defProp2(obj, key, {\n        enumerable: true,\n        configurable: true,\n        writable: true,\n        value: value\n    }) : obj[key] = value;\n};\nvar __publicField2 = function(obj, key, value) {\n    return __defNormalProp2(obj, (typeof key === \"undefined\" ? \"undefined\" : _type_of(key)) !== \"symbol\" ? key + \"\" : key, value);\n};\nfunction getDefaultExportFromCjs(x2) {\n    return x2 && x2.__esModule && Object.prototype.hasOwnProperty.call(x2, \"default\") ? x2[\"default\"] : x2;\n}\nfunction getAugmentedNamespace(n2) {\n    if (n2.__esModule) return n2;\n    var f2 = n2.default;\n    if (typeof f2 == \"function\") {\n        var a2 = function a22() {\n            if (_instanceof(this, a22)) {\n                return Reflect.construct(f2, arguments, this.constructor);\n            }\n            return f2.apply(this, arguments);\n        };\n        a2.prototype = f2.prototype;\n    } else a2 = {};\n    Object.defineProperty(a2, \"__esModule\", {\n        value: true\n    });\n    Object.keys(n2).forEach(function(k) {\n        var d = Object.getOwnPropertyDescriptor(n2, k);\n        Object.defineProperty(a2, k, d.get ? d : {\n            enumerable: true,\n            get: function get() {\n                return n2[k];\n            }\n        });\n    });\n    return a2;\n}\nvar picocolors_browser = {\n    exports: {}\n};\nvar x = String;\nvar create = function create() {\n    return {\n        isColorSupported: false,\n        reset: x,\n        bold: x,\n        dim: x,\n        italic: x,\n        underline: x,\n        inverse: x,\n        hidden: x,\n        strikethrough: x,\n        black: x,\n        red: x,\n        green: x,\n        yellow: x,\n        blue: x,\n        magenta: x,\n        cyan: x,\n        white: x,\n        gray: x,\n        bgBlack: x,\n        bgRed: x,\n        bgGreen: x,\n        bgYellow: x,\n        bgBlue: x,\n        bgMagenta: x,\n        bgCyan: x,\n        bgWhite: x\n    };\n};\npicocolors_browser.exports = create();\npicocolors_browser.exports.createColors = create;\nvar picocolors_browserExports = picocolors_browser.exports;\nvar __viteBrowserExternal = {};\nvar __viteBrowserExternal$1 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({\n    __proto__: null,\n    default: __viteBrowserExternal\n}, Symbol.toStringTag, {\n    value: \"Module\"\n}));\nvar require$$2 = /* @__PURE__ */ getAugmentedNamespace(__viteBrowserExternal$1);\nvar pico = picocolors_browserExports;\nvar terminalHighlight$1 = require$$2;\nvar CssSyntaxError$3 = /*#__PURE__*/ function(Error1) {\n    _inherits(CssSyntaxError2, Error1);\n    function CssSyntaxError2(message, line, column, source, file, plugin22) {\n        var _this;\n        _this = Error1.call(this, message) || this;\n        _this.name = \"CssSyntaxError\";\n        _this.reason = message;\n        if (file) {\n            _this.file = file;\n        }\n        if (source) {\n            _this.source = source;\n        }\n        if (plugin22) {\n            _this.plugin = plugin22;\n        }\n        if (typeof line !== \"undefined\" && typeof column !== \"undefined\") {\n            if (typeof line === \"number\") {\n                _this.line = line;\n                _this.column = column;\n            } else {\n                _this.line = line.line;\n                _this.column = line.column;\n                _this.endLine = column.line;\n                _this.endColumn = column.column;\n            }\n        }\n        _this.setMessage();\n        if (Error.captureStackTrace) {\n            Error.captureStackTrace(_this, CssSyntaxError2);\n        }\n        return _this;\n    }\n    var _proto = CssSyntaxError2.prototype;\n    _proto.setMessage = function setMessage() {\n        this.message = this.plugin ? this.plugin + \": \" : \"\";\n        this.message += this.file ? this.file : \"<css input>\";\n        if (typeof this.line !== \"undefined\") {\n            this.message += \":\" + this.line + \":\" + this.column;\n        }\n        this.message += \": \" + this.reason;\n    };\n    _proto.showSourceCode = function showSourceCode(color) {\n        var _this = this;\n        if (!this.source) return \"\";\n        var css = this.source;\n        if (color == null) color = pico.isColorSupported;\n        if (terminalHighlight$1) {\n            if (color) css = terminalHighlight$1(css);\n        }\n        var lines = css.split(/\\r?\\n/);\n        var start = Math.max(this.line - 3, 0);\n        var end = Math.min(this.line + 2, lines.length);\n        var maxWidth = String(end).length;\n        var mark, aside;\n        if (color) {\n            var _pico_createColors = pico.createColors(true), bold = _pico_createColors.bold, gray = _pico_createColors.gray, red = _pico_createColors.red;\n            mark = function(text) {\n                return bold(red(text));\n            };\n            aside = function(text) {\n                return gray(text);\n            };\n        } else {\n            mark = aside = function(str) {\n                return str;\n            };\n        }\n        return lines.slice(start, end).map(function(line, index2) {\n            var number = start + 1 + index2;\n            var gutter = \" \" + (\" \" + number).slice(-maxWidth) + \" | \";\n            if (number === _this.line) {\n                var spacing = aside(gutter.replace(/\\d/g, \" \")) + line.slice(0, _this.column - 1).replace(/[^\\t]/g, \" \");\n                return mark(\">\") + aside(gutter) + line + \"\\n \" + spacing + mark(\"^\");\n            }\n            return \" \" + aside(gutter) + line;\n        }).join(\"\\n\");\n    };\n    _proto.toString = function toString() {\n        var code = this.showSourceCode();\n        if (code) {\n            code = \"\\n\\n\" + code + \"\\n\";\n        }\n        return this.name + \": \" + this.message + code;\n    };\n    return CssSyntaxError2;\n}(_wrap_native_super(Error));\nvar cssSyntaxError = CssSyntaxError$3;\nCssSyntaxError$3.default = CssSyntaxError$3;\nvar symbols = {};\nsymbols.isClean = Symbol(\"isClean\");\nsymbols.my = Symbol(\"my\");\nvar DEFAULT_RAW = {\n    after: \"\\n\",\n    beforeClose: \"\\n\",\n    beforeComment: \"\\n\",\n    beforeDecl: \"\\n\",\n    beforeOpen: \" \",\n    beforeRule: \"\\n\",\n    colon: \": \",\n    commentLeft: \" \",\n    commentRight: \" \",\n    emptyBody: \"\",\n    indent: \"    \",\n    semicolon: false\n};\nfunction capitalize(str) {\n    return str[0].toUpperCase() + str.slice(1);\n}\nvar Stringifier$2 = /*#__PURE__*/ function() {\n    function Stringifier2(builder) {\n        this.builder = builder;\n    }\n    var _proto = Stringifier2.prototype;\n    _proto.atrule = function atrule(node2, semicolon) {\n        var name = \"@\" + node2.name;\n        var params = node2.params ? this.rawValue(node2, \"params\") : \"\";\n        if (typeof node2.raws.afterName !== \"undefined\") {\n            name += node2.raws.afterName;\n        } else if (params) {\n            name += \" \";\n        }\n        if (node2.nodes) {\n            this.block(node2, name + params);\n        } else {\n            var end = (node2.raws.between || \"\") + (semicolon ? \";\" : \"\");\n            this.builder(name + params + end, node2);\n        }\n    };\n    _proto.beforeAfter = function beforeAfter(node2, detect) {\n        var value;\n        if (node2.type === \"decl\") {\n            value = this.raw(node2, null, \"beforeDecl\");\n        } else if (node2.type === \"comment\") {\n            value = this.raw(node2, null, \"beforeComment\");\n        } else if (detect === \"before\") {\n            value = this.raw(node2, null, \"beforeRule\");\n        } else {\n            value = this.raw(node2, null, \"beforeClose\");\n        }\n        var buf = node2.parent;\n        var depth = 0;\n        while(buf && buf.type !== \"root\"){\n            depth += 1;\n            buf = buf.parent;\n        }\n        if (value.includes(\"\\n\")) {\n            var indent = this.raw(node2, null, \"indent\");\n            if (indent.length) {\n                for(var step = 0; step < depth; step++)value += indent;\n            }\n        }\n        return value;\n    };\n    _proto.block = function block(node2, start) {\n        var between = this.raw(node2, \"between\", \"beforeOpen\");\n        this.builder(start + between + \"{\", node2, \"start\");\n        var after;\n        if (node2.nodes && node2.nodes.length) {\n            this.body(node2);\n            after = this.raw(node2, \"after\");\n        } else {\n            after = this.raw(node2, \"after\", \"emptyBody\");\n        }\n        if (after) this.builder(after);\n        this.builder(\"}\", node2, \"end\");\n    };\n    _proto.body = function body(node2) {\n        var last = node2.nodes.length - 1;\n        while(last > 0){\n            if (node2.nodes[last].type !== \"comment\") break;\n            last -= 1;\n        }\n        var semicolon = this.raw(node2, \"semicolon\");\n        for(var i2 = 0; i2 < node2.nodes.length; i2++){\n            var child = node2.nodes[i2];\n            var before = this.raw(child, \"before\");\n            if (before) this.builder(before);\n            this.stringify(child, last !== i2 || semicolon);\n        }\n    };\n    _proto.comment = function comment(node2) {\n        var left = this.raw(node2, \"left\", \"commentLeft\");\n        var right = this.raw(node2, \"right\", \"commentRight\");\n        this.builder(\"/*\" + left + node2.text + right + \"*/\", node2);\n    };\n    _proto.decl = function decl(node2, semicolon) {\n        var between = this.raw(node2, \"between\", \"colon\");\n        var string = node2.prop + between + this.rawValue(node2, \"value\");\n        if (node2.important) {\n            string += node2.raws.important || \" !important\";\n        }\n        if (semicolon) string += \";\";\n        this.builder(string, node2);\n    };\n    _proto.document = function document1(node2) {\n        this.body(node2);\n    };\n    _proto.raw = function raw(node2, own, detect) {\n        var value;\n        if (!detect) detect = own;\n        if (own) {\n            value = node2.raws[own];\n            if (typeof value !== \"undefined\") return value;\n        }\n        var parent = node2.parent;\n        if (detect === \"before\") {\n            if (!parent || parent.type === \"root\" && parent.first === node2) {\n                return \"\";\n            }\n            if (parent && parent.type === \"document\") {\n                return \"\";\n            }\n        }\n        if (!parent) return DEFAULT_RAW[detect];\n        var root2 = node2.root();\n        if (!root2.rawCache) root2.rawCache = {};\n        if (typeof root2.rawCache[detect] !== \"undefined\") {\n            return root2.rawCache[detect];\n        }\n        if (detect === \"before\" || detect === \"after\") {\n            return this.beforeAfter(node2, detect);\n        } else {\n            var method = \"raw\" + capitalize(detect);\n            if (this[method]) {\n                value = this[method](root2, node2);\n            } else {\n                root2.walk(function(i2) {\n                    value = i2.raws[own];\n                    if (typeof value !== \"undefined\") return false;\n                });\n            }\n        }\n        if (typeof value === \"undefined\") value = DEFAULT_RAW[detect];\n        root2.rawCache[detect] = value;\n        return value;\n    };\n    _proto.rawBeforeClose = function rawBeforeClose(root2) {\n        var value;\n        root2.walk(function(i2) {\n            if (i2.nodes && i2.nodes.length > 0) {\n                if (typeof i2.raws.after !== \"undefined\") {\n                    value = i2.raws.after;\n                    if (value.includes(\"\\n\")) {\n                        value = value.replace(/[^\\n]+$/, \"\");\n                    }\n                    return false;\n                }\n            }\n        });\n        if (value) value = value.replace(/\\S/g, \"\");\n        return value;\n    };\n    _proto.rawBeforeComment = function rawBeforeComment(root2, node2) {\n        var value;\n        root2.walkComments(function(i2) {\n            if (typeof i2.raws.before !== \"undefined\") {\n                value = i2.raws.before;\n                if (value.includes(\"\\n\")) {\n                    value = value.replace(/[^\\n]+$/, \"\");\n                }\n                return false;\n            }\n        });\n        if (typeof value === \"undefined\") {\n            value = this.raw(node2, null, \"beforeDecl\");\n        } else if (value) {\n            value = value.replace(/\\S/g, \"\");\n        }\n        return value;\n    };\n    _proto.rawBeforeDecl = function rawBeforeDecl(root2, node2) {\n        var value;\n        root2.walkDecls(function(i2) {\n            if (typeof i2.raws.before !== \"undefined\") {\n                value = i2.raws.before;\n                if (value.includes(\"\\n\")) {\n                    value = value.replace(/[^\\n]+$/, \"\");\n                }\n                return false;\n            }\n        });\n        if (typeof value === \"undefined\") {\n            value = this.raw(node2, null, \"beforeRule\");\n        } else if (value) {\n            value = value.replace(/\\S/g, \"\");\n        }\n        return value;\n    };\n    _proto.rawBeforeOpen = function rawBeforeOpen(root2) {\n        var value;\n        root2.walk(function(i2) {\n            if (i2.type !== \"decl\") {\n                value = i2.raws.between;\n                if (typeof value !== \"undefined\") return false;\n            }\n        });\n        return value;\n    };\n    _proto.rawBeforeRule = function rawBeforeRule(root2) {\n        var value;\n        root2.walk(function(i2) {\n            if (i2.nodes && (i2.parent !== root2 || root2.first !== i2)) {\n                if (typeof i2.raws.before !== \"undefined\") {\n                    value = i2.raws.before;\n                    if (value.includes(\"\\n\")) {\n                        value = value.replace(/[^\\n]+$/, \"\");\n                    }\n                    return false;\n                }\n            }\n        });\n        if (value) value = value.replace(/\\S/g, \"\");\n        return value;\n    };\n    _proto.rawColon = function rawColon(root2) {\n        var value;\n        root2.walkDecls(function(i2) {\n            if (typeof i2.raws.between !== \"undefined\") {\n                value = i2.raws.between.replace(/[^\\s:]/g, \"\");\n                return false;\n            }\n        });\n        return value;\n    };\n    _proto.rawEmptyBody = function rawEmptyBody(root2) {\n        var value;\n        root2.walk(function(i2) {\n            if (i2.nodes && i2.nodes.length === 0) {\n                value = i2.raws.after;\n                if (typeof value !== \"undefined\") return false;\n            }\n        });\n        return value;\n    };\n    _proto.rawIndent = function rawIndent(root2) {\n        if (root2.raws.indent) return root2.raws.indent;\n        var value;\n        root2.walk(function(i2) {\n            var p = i2.parent;\n            if (p && p !== root2 && p.parent && p.parent === root2) {\n                if (typeof i2.raws.before !== \"undefined\") {\n                    var parts = i2.raws.before.split(\"\\n\");\n                    value = parts[parts.length - 1];\n                    value = value.replace(/\\S/g, \"\");\n                    return false;\n                }\n            }\n        });\n        return value;\n    };\n    _proto.rawSemicolon = function rawSemicolon(root2) {\n        var value;\n        root2.walk(function(i2) {\n            if (i2.nodes && i2.nodes.length && i2.last.type === \"decl\") {\n                value = i2.raws.semicolon;\n                if (typeof value !== \"undefined\") return false;\n            }\n        });\n        return value;\n    };\n    _proto.rawValue = function rawValue(node2, prop) {\n        var value = node2[prop];\n        var raw = node2.raws[prop];\n        if (raw && raw.value === value) {\n            return raw.raw;\n        }\n        return value;\n    };\n    _proto.root = function root(node2) {\n        this.body(node2);\n        if (node2.raws.after) this.builder(node2.raws.after);\n    };\n    _proto.rule = function rule(node2) {\n        this.block(node2, this.rawValue(node2, \"selector\"));\n        if (node2.raws.ownSemicolon) {\n            this.builder(node2.raws.ownSemicolon, node2, \"end\");\n        }\n    };\n    _proto.stringify = function stringify(node2, semicolon) {\n        if (!this[node2.type]) {\n            throw new Error(\"Unknown AST node type \" + node2.type + \". Maybe you need to change PostCSS stringifier.\");\n        }\n        this[node2.type](node2, semicolon);\n    };\n    return Stringifier2;\n}();\nvar stringifier = Stringifier$2;\nStringifier$2.default = Stringifier$2;\nvar Stringifier$1 = stringifier;\nfunction stringify$4(node2, builder) {\n    var str = new Stringifier$1(builder);\n    str.stringify(node2);\n}\nvar stringify_1 = stringify$4;\nstringify$4.default = stringify$4;\nvar isClean$2 = symbols.isClean, my$2 = symbols.my;\nvar CssSyntaxError$2 = cssSyntaxError;\nvar Stringifier22 = stringifier;\nvar stringify$3 = stringify_1;\nfunction cloneNode(obj, parent) {\n    var cloned = new obj.constructor();\n    for(var i2 in obj){\n        if (!Object.prototype.hasOwnProperty.call(obj, i2)) {\n            continue;\n        }\n        if (i2 === \"proxyCache\") continue;\n        var value = obj[i2];\n        var type = typeof value === \"undefined\" ? \"undefined\" : _type_of(value);\n        if (i2 === \"parent\" && type === \"object\") {\n            if (parent) cloned[i2] = parent;\n        } else if (i2 === \"source\") {\n            cloned[i2] = value;\n        } else if (Array.isArray(value)) {\n            cloned[i2] = value.map(function(j) {\n                return cloneNode(j, cloned);\n            });\n        } else {\n            if (type === \"object\" && value !== null) value = cloneNode(value);\n            cloned[i2] = value;\n        }\n    }\n    return cloned;\n}\nvar Node$4 = /*#__PURE__*/ function() {\n    function Node3(defaults) {\n        if (defaults === void 0) defaults = {};\n        this.raws = {};\n        this[isClean$2] = false;\n        this[my$2] = true;\n        for(var name in defaults){\n            if (name === \"nodes\") {\n                this.nodes = [];\n                for(var _iterator = _create_for_of_iterator_helper_loose(defaults[name]), _step; !(_step = _iterator()).done;){\n                    var node2 = _step.value;\n                    if (typeof node2.clone === \"function\") {\n                        this.append(node2.clone());\n                    } else {\n                        this.append(node2);\n                    }\n                }\n            } else {\n                this[name] = defaults[name];\n            }\n        }\n    }\n    var _proto = Node3.prototype;\n    _proto.addToError = function addToError(error) {\n        error.postcssNode = this;\n        if (error.stack && this.source && /\\n\\s{4}at /.test(error.stack)) {\n            var s2 = this.source;\n            error.stack = error.stack.replace(/\\n\\s{4}at /, \"$&\" + s2.input.from + \":\" + s2.start.line + \":\" + s2.start.column + \"$&\");\n        }\n        return error;\n    };\n    _proto.after = function after(add) {\n        this.parent.insertAfter(this, add);\n        return this;\n    };\n    _proto.assign = function assign(overrides) {\n        if (overrides === void 0) overrides = {};\n        for(var name in overrides){\n            this[name] = overrides[name];\n        }\n        return this;\n    };\n    _proto.before = function before(add) {\n        this.parent.insertBefore(this, add);\n        return this;\n    };\n    _proto.cleanRaws = function cleanRaws(keepBetween) {\n        delete this.raws.before;\n        delete this.raws.after;\n        if (!keepBetween) delete this.raws.between;\n    };\n    _proto.clone = function clone(overrides) {\n        if (overrides === void 0) overrides = {};\n        var cloned = cloneNode(this);\n        for(var name in overrides){\n            cloned[name] = overrides[name];\n        }\n        return cloned;\n    };\n    _proto.cloneAfter = function cloneAfter(overrides) {\n        if (overrides === void 0) overrides = {};\n        var cloned = this.clone(overrides);\n        this.parent.insertAfter(this, cloned);\n        return cloned;\n    };\n    _proto.cloneBefore = function cloneBefore(overrides) {\n        if (overrides === void 0) overrides = {};\n        var cloned = this.clone(overrides);\n        this.parent.insertBefore(this, cloned);\n        return cloned;\n    };\n    _proto.error = function error(message, opts) {\n        if (opts === void 0) opts = {};\n        if (this.source) {\n            var _this_rangeBy = this.rangeBy(opts), end = _this_rangeBy.end, start = _this_rangeBy.start;\n            return this.source.input.error(message, {\n                column: start.column,\n                line: start.line\n            }, {\n                column: end.column,\n                line: end.line\n            }, opts);\n        }\n        return new CssSyntaxError$2(message);\n    };\n    _proto.getProxyProcessor = function getProxyProcessor() {\n        return {\n            get: function get(node2, prop) {\n                if (prop === \"proxyOf\") {\n                    return node2;\n                } else if (prop === \"root\") {\n                    return function() {\n                        return node2.root().toProxy();\n                    };\n                } else {\n                    return node2[prop];\n                }\n            },\n            set: function set(node2, prop, value) {\n                if (node2[prop] === value) return true;\n                node2[prop] = value;\n                if (prop === \"prop\" || prop === \"value\" || prop === \"name\" || prop === \"params\" || prop === \"important\" || /* c8 ignore next */ prop === \"text\") {\n                    node2.markDirty();\n                }\n                return true;\n            }\n        };\n    };\n    _proto.markDirty = function markDirty() {\n        if (this[isClean$2]) {\n            this[isClean$2] = false;\n            var next = this;\n            while(next = next.parent){\n                next[isClean$2] = false;\n            }\n        }\n    };\n    _proto.next = function next() {\n        if (!this.parent) return void 0;\n        var index2 = this.parent.index(this);\n        return this.parent.nodes[index2 + 1];\n    };\n    _proto.positionBy = function positionBy(opts, stringRepresentation) {\n        var pos = this.source.start;\n        if (opts.index) {\n            pos = this.positionInside(opts.index, stringRepresentation);\n        } else if (opts.word) {\n            stringRepresentation = this.toString();\n            var index2 = stringRepresentation.indexOf(opts.word);\n            if (index2 !== -1) pos = this.positionInside(index2, stringRepresentation);\n        }\n        return pos;\n    };\n    _proto.positionInside = function positionInside(index2, stringRepresentation) {\n        var string = stringRepresentation || this.toString();\n        var column = this.source.start.column;\n        var line = this.source.start.line;\n        for(var i2 = 0; i2 < index2; i2++){\n            if (string[i2] === \"\\n\") {\n                column = 1;\n                line += 1;\n            } else {\n                column += 1;\n            }\n        }\n        return {\n            column: column,\n            line: line\n        };\n    };\n    _proto.prev = function prev() {\n        if (!this.parent) return void 0;\n        var index2 = this.parent.index(this);\n        return this.parent.nodes[index2 - 1];\n    };\n    _proto.rangeBy = function rangeBy(opts) {\n        var start = {\n            column: this.source.start.column,\n            line: this.source.start.line\n        };\n        var end = this.source.end ? {\n            column: this.source.end.column + 1,\n            line: this.source.end.line\n        } : {\n            column: start.column + 1,\n            line: start.line\n        };\n        if (opts.word) {\n            var stringRepresentation = this.toString();\n            var index2 = stringRepresentation.indexOf(opts.word);\n            if (index2 !== -1) {\n                start = this.positionInside(index2, stringRepresentation);\n                end = this.positionInside(index2 + opts.word.length, stringRepresentation);\n            }\n        } else {\n            if (opts.start) {\n                start = {\n                    column: opts.start.column,\n                    line: opts.start.line\n                };\n            } else if (opts.index) {\n                start = this.positionInside(opts.index);\n            }\n            if (opts.end) {\n                end = {\n                    column: opts.end.column,\n                    line: opts.end.line\n                };\n            } else if (typeof opts.endIndex === \"number\") {\n                end = this.positionInside(opts.endIndex);\n            } else if (opts.index) {\n                end = this.positionInside(opts.index + 1);\n            }\n        }\n        if (end.line < start.line || end.line === start.line && end.column <= start.column) {\n            end = {\n                column: start.column + 1,\n                line: start.line\n            };\n        }\n        return {\n            end: end,\n            start: start\n        };\n    };\n    _proto.raw = function raw(prop, defaultType) {\n        var str = new Stringifier22();\n        return str.raw(this, prop, defaultType);\n    };\n    _proto.remove = function remove() {\n        if (this.parent) {\n            this.parent.removeChild(this);\n        }\n        this.parent = void 0;\n        return this;\n    };\n    _proto.replaceWith = function replaceWith() {\n        for(var _len = arguments.length, nodes = new Array(_len), _key = 0; _key < _len; _key++){\n            nodes[_key] = arguments[_key];\n        }\n        if (this.parent) {\n            var bookmark = this;\n            var foundSelf = false;\n            for(var _iterator = _create_for_of_iterator_helper_loose(nodes), _step; !(_step = _iterator()).done;){\n                var node2 = _step.value;\n                if (node2 === this) {\n                    foundSelf = true;\n                } else if (foundSelf) {\n                    this.parent.insertAfter(bookmark, node2);\n                    bookmark = node2;\n                } else {\n                    this.parent.insertBefore(bookmark, node2);\n                }\n            }\n            if (!foundSelf) {\n                this.remove();\n            }\n        }\n        return this;\n    };\n    _proto.root = function root() {\n        var result2 = this;\n        while(result2.parent && result2.parent.type !== \"document\"){\n            result2 = result2.parent;\n        }\n        return result2;\n    };\n    _proto.toJSON = function toJSON(_, inputs) {\n        var fixed = {};\n        var emitInputs = inputs == null;\n        inputs = inputs || /* @__PURE__ */ new Map();\n        var inputsNextIndex = 0;\n        for(var name in this){\n            if (!Object.prototype.hasOwnProperty.call(this, name)) {\n                continue;\n            }\n            if (name === \"parent\" || name === \"proxyCache\") continue;\n            var value = this[name];\n            if (Array.isArray(value)) {\n                fixed[name] = value.map(function(i2) {\n                    if ((typeof i2 === \"undefined\" ? \"undefined\" : _type_of(i2)) === \"object\" && i2.toJSON) {\n                        return i2.toJSON(null, inputs);\n                    } else {\n                        return i2;\n                    }\n                });\n            } else if ((typeof value === \"undefined\" ? \"undefined\" : _type_of(value)) === \"object\" && value.toJSON) {\n                fixed[name] = value.toJSON(null, inputs);\n            } else if (name === \"source\") {\n                var inputId = inputs.get(value.input);\n                if (inputId == null) {\n                    inputId = inputsNextIndex;\n                    inputs.set(value.input, inputsNextIndex);\n                    inputsNextIndex++;\n                }\n                fixed[name] = {\n                    end: value.end,\n                    inputId: inputId,\n                    start: value.start\n                };\n            } else {\n                fixed[name] = value;\n            }\n        }\n        if (emitInputs) {\n            fixed.inputs = [].concat(inputs.keys()).map(function(input2) {\n                return input2.toJSON();\n            });\n        }\n        return fixed;\n    };\n    _proto.toProxy = function toProxy() {\n        if (!this.proxyCache) {\n            this.proxyCache = new Proxy(this, this.getProxyProcessor());\n        }\n        return this.proxyCache;\n    };\n    _proto.toString = function toString(stringifier2) {\n        if (stringifier2 === void 0) stringifier2 = stringify$3;\n        if (stringifier2.stringify) stringifier2 = stringifier2.stringify;\n        var result2 = \"\";\n        stringifier2(this, function(i2) {\n            result2 += i2;\n        });\n        return result2;\n    };\n    _proto.warn = function warn(result2, text, opts) {\n        var data = {\n            node: this\n        };\n        for(var i2 in opts)data[i2] = opts[i2];\n        return result2.warn(text, data);\n    };\n    _create_class(Node3, [\n        {\n            key: \"proxyOf\",\n            get: function get() {\n                return this;\n            }\n        }\n    ]);\n    return Node3;\n}();\nvar node = Node$4;\nNode$4.default = Node$4;\nvar Node$3 = node;\nvar Declaration$4 = /*#__PURE__*/ function(Node$3) {\n    _inherits(Declaration2, Node$3);\n    function Declaration2(defaults) {\n        var _this;\n        if (defaults && typeof defaults.value !== \"undefined\" && typeof defaults.value !== \"string\") {\n            defaults = _extends({}, defaults, {\n                value: String(defaults.value)\n            });\n        }\n        _this = Node$3.call(this, defaults) || this;\n        _this.type = \"decl\";\n        return _this;\n    }\n    _create_class(Declaration2, [\n        {\n            key: \"variable\",\n            get: function get() {\n                return this.prop.startsWith(\"--\") || this.prop[0] === \"$\";\n            }\n        }\n    ]);\n    return Declaration2;\n}(Node$3);\nvar declaration = Declaration$4;\nDeclaration$4.default = Declaration$4;\nvar urlAlphabet = \"useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict\";\nvar nanoid$1 = function(size) {\n    if (size === void 0) size = 21;\n    var id = \"\";\n    var i2 = size;\n    while(i2--){\n        id += urlAlphabet[Math.random() * 64 | 0];\n    }\n    return id;\n};\nvar nonSecure = {\n    nanoid: nanoid$1};\nvar SourceMapConsumer$2 = require$$2.SourceMapConsumer, SourceMapGenerator$2 = require$$2.SourceMapGenerator;\nvar existsSync = require$$2.existsSync, readFileSync = require$$2.readFileSync;\nvar dirname$1 = require$$2.dirname, join = require$$2.join;\nfunction fromBase64(str) {\n    if (Buffer) {\n        return Buffer.from(str, \"base64\").toString();\n    } else {\n        return window.atob(str);\n    }\n}\nvar PreviousMap$2 = /*#__PURE__*/ function() {\n    function PreviousMap2(css, opts) {\n        if (opts.map === false) return;\n        this.loadAnnotation(css);\n        this.inline = this.startWith(this.annotation, \"data:\");\n        var prev = opts.map ? opts.map.prev : void 0;\n        var text = this.loadMap(opts.from, prev);\n        if (!this.mapFile && opts.from) {\n            this.mapFile = opts.from;\n        }\n        if (this.mapFile) this.root = dirname$1(this.mapFile);\n        if (text) this.text = text;\n    }\n    var _proto = PreviousMap2.prototype;\n    _proto.consumer = function consumer() {\n        if (!this.consumerCache) {\n            this.consumerCache = new SourceMapConsumer$2(this.text);\n        }\n        return this.consumerCache;\n    };\n    _proto.decodeInline = function decodeInline(text) {\n        var baseCharsetUri = /^data:application\\/json;charset=utf-?8;base64,/;\n        var baseUri = /^data:application\\/json;base64,/;\n        var charsetUri = /^data:application\\/json;charset=utf-?8,/;\n        var uri = /^data:application\\/json,/;\n        if (charsetUri.test(text) || uri.test(text)) {\n            return decodeURIComponent(text.substr(RegExp.lastMatch.length));\n        }\n        if (baseCharsetUri.test(text) || baseUri.test(text)) {\n            return fromBase64(text.substr(RegExp.lastMatch.length));\n        }\n        var encoding = text.match(/data:application\\/json;([^,]+),/)[1];\n        throw new Error(\"Unsupported source map encoding \" + encoding);\n    };\n    _proto.getAnnotationURL = function getAnnotationURL(sourceMapString) {\n        return sourceMapString.replace(/^\\/\\*\\s*# sourceMappingURL=/, \"\").trim();\n    };\n    _proto.isMap = function isMap(map) {\n        if ((typeof map === \"undefined\" ? \"undefined\" : _type_of(map)) !== \"object\") return false;\n        return typeof map.mappings === \"string\" || typeof map._mappings === \"string\" || Array.isArray(map.sections);\n    };\n    _proto.loadAnnotation = function loadAnnotation(css) {\n        var comments = css.match(/\\/\\*\\s*# sourceMappingURL=/gm);\n        if (!comments) return;\n        var start = css.lastIndexOf(comments.pop());\n        var end = css.indexOf(\"*/\", start);\n        if (start > -1 && end > -1) {\n            this.annotation = this.getAnnotationURL(css.substring(start, end));\n        }\n    };\n    _proto.loadFile = function loadFile(path) {\n        this.root = dirname$1(path);\n        if (existsSync(path)) {\n            this.mapFile = path;\n            return readFileSync(path, \"utf-8\").toString().trim();\n        }\n    };\n    _proto.loadMap = function loadMap(file, prev) {\n        if (prev === false) return false;\n        if (prev) {\n            if (typeof prev === \"string\") {\n                return prev;\n            } else if (typeof prev === \"function\") {\n                var prevPath = prev(file);\n                if (prevPath) {\n                    var map = this.loadFile(prevPath);\n                    if (!map) {\n                        throw new Error(\"Unable to load previous source map: \" + prevPath.toString());\n                    }\n                    return map;\n                }\n            } else if (_instanceof(prev, SourceMapConsumer$2)) {\n                return SourceMapGenerator$2.fromSourceMap(prev).toString();\n            } else if (_instanceof(prev, SourceMapGenerator$2)) {\n                return prev.toString();\n            } else if (this.isMap(prev)) {\n                return JSON.stringify(prev);\n            } else {\n                throw new Error(\"Unsupported previous source map format: \" + prev.toString());\n            }\n        } else if (this.inline) {\n            return this.decodeInline(this.annotation);\n        } else if (this.annotation) {\n            var map1 = this.annotation;\n            if (file) map1 = join(dirname$1(file), map1);\n            return this.loadFile(map1);\n        }\n    };\n    _proto.startWith = function startWith(string, start) {\n        if (!string) return false;\n        return string.substr(0, start.length) === start;\n    };\n    _proto.withContent = function withContent() {\n        return !!(this.consumer().sourcesContent && this.consumer().sourcesContent.length > 0);\n    };\n    return PreviousMap2;\n}();\nvar previousMap = PreviousMap$2;\nPreviousMap$2.default = PreviousMap$2;\nvar SourceMapConsumer$1 = require$$2.SourceMapConsumer, SourceMapGenerator$1 = require$$2.SourceMapGenerator;\nvar fileURLToPath = require$$2.fileURLToPath, pathToFileURL$1 = require$$2.pathToFileURL;\nvar isAbsolute = require$$2.isAbsolute, resolve$1 = require$$2.resolve;\nvar nanoid = nonSecure.nanoid;\nvar terminalHighlight = require$$2;\nvar CssSyntaxError$1 = cssSyntaxError;\nvar PreviousMap$1 = previousMap;\nvar fromOffsetCache = Symbol(\"fromOffsetCache\");\nvar sourceMapAvailable$1 = Boolean(SourceMapConsumer$1 && SourceMapGenerator$1);\nvar pathAvailable$1 = Boolean(resolve$1 && isAbsolute);\nvar Input$4 = /*#__PURE__*/ function() {\n    function Input2(css, opts) {\n        if (opts === void 0) opts = {};\n        if (css === null || typeof css === \"undefined\" || (typeof css === \"undefined\" ? \"undefined\" : _type_of(css)) === \"object\" && !css.toString) {\n            throw new Error(\"PostCSS received \" + css + \" instead of CSS string\");\n        }\n        this.css = css.toString();\n        if (this.css[0] === \"\\uFEFF\" || this.css[0] === \"￾\") {\n            this.hasBOM = true;\n            this.css = this.css.slice(1);\n        } else {\n            this.hasBOM = false;\n        }\n        if (opts.from) {\n            if (!pathAvailable$1 || /^\\w+:\\/\\//.test(opts.from) || isAbsolute(opts.from)) {\n                this.file = opts.from;\n            } else {\n                this.file = resolve$1(opts.from);\n            }\n        }\n        if (pathAvailable$1 && sourceMapAvailable$1) {\n            var map = new PreviousMap$1(this.css, opts);\n            if (map.text) {\n                this.map = map;\n                var file = map.consumer().file;\n                if (!this.file && file) this.file = this.mapResolve(file);\n            }\n        }\n        if (!this.file) {\n            this.id = \"<input css \" + nanoid(6) + \">\";\n        }\n        if (this.map) this.map.file = this.from;\n    }\n    var _proto = Input2.prototype;\n    _proto.error = function error(message, line, column, opts) {\n        if (opts === void 0) opts = {};\n        var result2, endLine, endColumn;\n        if (line && (typeof line === \"undefined\" ? \"undefined\" : _type_of(line)) === \"object\") {\n            var start = line;\n            var end = column;\n            if (typeof start.offset === \"number\") {\n                var pos = this.fromOffset(start.offset);\n                line = pos.line;\n                column = pos.col;\n            } else {\n                line = start.line;\n                column = start.column;\n            }\n            if (typeof end.offset === \"number\") {\n                var pos1 = this.fromOffset(end.offset);\n                endLine = pos1.line;\n                endColumn = pos1.col;\n            } else {\n                endLine = end.line;\n                endColumn = end.column;\n            }\n        } else if (!column) {\n            var pos2 = this.fromOffset(line);\n            line = pos2.line;\n            column = pos2.col;\n        }\n        var origin = this.origin(line, column, endLine, endColumn);\n        if (origin) {\n            result2 = new CssSyntaxError$1(message, origin.endLine === void 0 ? origin.line : {\n                column: origin.column,\n                line: origin.line\n            }, origin.endLine === void 0 ? origin.column : {\n                column: origin.endColumn,\n                line: origin.endLine\n            }, origin.source, origin.file, opts.plugin);\n        } else {\n            result2 = new CssSyntaxError$1(message, endLine === void 0 ? line : {\n                column: column,\n                line: line\n            }, endLine === void 0 ? column : {\n                column: endColumn,\n                line: endLine\n            }, this.css, this.file, opts.plugin);\n        }\n        result2.input = {\n            column: column,\n            endColumn: endColumn,\n            endLine: endLine,\n            line: line,\n            source: this.css\n        };\n        if (this.file) {\n            if (pathToFileURL$1) {\n                result2.input.url = pathToFileURL$1(this.file).toString();\n            }\n            result2.input.file = this.file;\n        }\n        return result2;\n    };\n    _proto.fromOffset = function fromOffset(offset) {\n        var lastLine, lineToIndex;\n        if (!this[fromOffsetCache]) {\n            var lines = this.css.split(\"\\n\");\n            lineToIndex = new Array(lines.length);\n            var prevIndex = 0;\n            for(var i2 = 0, l2 = lines.length; i2 < l2; i2++){\n                lineToIndex[i2] = prevIndex;\n                prevIndex += lines[i2].length + 1;\n            }\n            this[fromOffsetCache] = lineToIndex;\n        } else {\n            lineToIndex = this[fromOffsetCache];\n        }\n        lastLine = lineToIndex[lineToIndex.length - 1];\n        var min = 0;\n        if (offset >= lastLine) {\n            min = lineToIndex.length - 1;\n        } else {\n            var max = lineToIndex.length - 2;\n            var mid;\n            while(min < max){\n                mid = min + (max - min >> 1);\n                if (offset < lineToIndex[mid]) {\n                    max = mid - 1;\n                } else if (offset >= lineToIndex[mid + 1]) {\n                    min = mid + 1;\n                } else {\n                    min = mid;\n                    break;\n                }\n            }\n        }\n        return {\n            col: offset - lineToIndex[min] + 1,\n            line: min + 1\n        };\n    };\n    _proto.mapResolve = function mapResolve(file) {\n        if (/^\\w+:\\/\\//.test(file)) {\n            return file;\n        }\n        return resolve$1(this.map.consumer().sourceRoot || this.map.root || \".\", file);\n    };\n    _proto.origin = function origin(line, column, endLine, endColumn) {\n        if (!this.map) return false;\n        var consumer = this.map.consumer();\n        var from = consumer.originalPositionFor({\n            column: column,\n            line: line\n        });\n        if (!from.source) return false;\n        var to;\n        if (typeof endLine === \"number\") {\n            to = consumer.originalPositionFor({\n                column: endColumn,\n                line: endLine\n            });\n        }\n        var fromUrl;\n        if (isAbsolute(from.source)) {\n            fromUrl = pathToFileURL$1(from.source);\n        } else {\n            fromUrl = new URL(from.source, this.map.consumer().sourceRoot || pathToFileURL$1(this.map.mapFile));\n        }\n        var result2 = {\n            column: from.column,\n            endColumn: to && to.column,\n            endLine: to && to.line,\n            line: from.line,\n            url: fromUrl.toString()\n        };\n        if (fromUrl.protocol === \"file:\") {\n            if (fileURLToPath) {\n                result2.file = fileURLToPath(fromUrl);\n            } else {\n                throw new Error(\"file: protocol is not available in this PostCSS build\");\n            }\n        }\n        var source = consumer.sourceContentFor(from.source);\n        if (source) result2.source = source;\n        return result2;\n    };\n    _proto.toJSON = function toJSON() {\n        var json = {};\n        for(var _i = 0, _iter = [\n            \"hasBOM\",\n            \"css\",\n            \"file\",\n            \"id\"\n        ]; _i < _iter.length; _i++){\n            var name = _iter[_i];\n            if (this[name] != null) {\n                json[name] = this[name];\n            }\n        }\n        if (this.map) {\n            json.map = _extends({}, this.map);\n            if (json.map.consumerCache) {\n                json.map.consumerCache = void 0;\n            }\n        }\n        return json;\n    };\n    _create_class(Input2, [\n        {\n            key: \"from\",\n            get: function get() {\n                return this.file || this.id;\n            }\n        }\n    ]);\n    return Input2;\n}();\nvar input = Input$4;\nInput$4.default = Input$4;\nif (terminalHighlight && terminalHighlight.registerInput) {\n    terminalHighlight.registerInput(Input$4);\n}\nvar SourceMapConsumer = require$$2.SourceMapConsumer, SourceMapGenerator = require$$2.SourceMapGenerator;\nvar dirname = require$$2.dirname, relative = require$$2.relative, resolve$3 = require$$2.resolve, sep = require$$2.sep;\nvar pathToFileURL = require$$2.pathToFileURL;\nvar Input$3 = input;\nvar sourceMapAvailable = Boolean(SourceMapConsumer && SourceMapGenerator);\nvar pathAvailable = Boolean(dirname && resolve$3 && relative && sep);\nvar MapGenerator$2 = /*#__PURE__*/ function() {\n    function MapGenerator2(stringify2, root2, opts, cssString) {\n        this.stringify = stringify2;\n        this.mapOpts = opts.map || {};\n        this.root = root2;\n        this.opts = opts;\n        this.css = cssString;\n        this.originalCSS = cssString;\n        this.usesFileUrls = !this.mapOpts.from && this.mapOpts.absolute;\n        this.memoizedFileURLs = /* @__PURE__ */ new Map();\n        this.memoizedPaths = /* @__PURE__ */ new Map();\n        this.memoizedURLs = /* @__PURE__ */ new Map();\n    }\n    var _proto = MapGenerator2.prototype;\n    _proto.addAnnotation = function addAnnotation() {\n        var content;\n        if (this.isInline()) {\n            content = \"data:application/json;base64,\" + this.toBase64(this.map.toString());\n        } else if (typeof this.mapOpts.annotation === \"string\") {\n            content = this.mapOpts.annotation;\n        } else if (typeof this.mapOpts.annotation === \"function\") {\n            content = this.mapOpts.annotation(this.opts.to, this.root);\n        } else {\n            content = this.outputFile() + \".map\";\n        }\n        var eol = \"\\n\";\n        if (this.css.includes(\"\\r\\n\")) eol = \"\\r\\n\";\n        this.css += eol + \"/*# sourceMappingURL=\" + content + \" */\";\n    };\n    _proto.applyPrevMaps = function applyPrevMaps() {\n        for(var _iterator = _create_for_of_iterator_helper_loose(this.previous()), _step; !(_step = _iterator()).done;){\n            var prev = _step.value;\n            var from = this.toUrl(this.path(prev.file));\n            var root2 = prev.root || dirname(prev.file);\n            var map = void 0;\n            if (this.mapOpts.sourcesContent === false) {\n                map = new SourceMapConsumer(prev.text);\n                if (map.sourcesContent) {\n                    map.sourcesContent = null;\n                }\n            } else {\n                map = prev.consumer();\n            }\n            this.map.applySourceMap(map, from, this.toUrl(this.path(root2)));\n        }\n    };\n    _proto.clearAnnotation = function clearAnnotation() {\n        if (this.mapOpts.annotation === false) return;\n        if (this.root) {\n            var node2;\n            for(var i2 = this.root.nodes.length - 1; i2 >= 0; i2--){\n                node2 = this.root.nodes[i2];\n                if (node2.type !== \"comment\") continue;\n                if (node2.text.indexOf(\"# sourceMappingURL=\") === 0) {\n                    this.root.removeChild(i2);\n                }\n            }\n        } else if (this.css) {\n            this.css = this.css.replace(/\\n*?\\/\\*#[\\S\\s]*?\\*\\/$/gm, \"\");\n        }\n    };\n    _proto.generate = function generate() {\n        this.clearAnnotation();\n        if (pathAvailable && sourceMapAvailable && this.isMap()) {\n            return this.generateMap();\n        } else {\n            var result2 = \"\";\n            this.stringify(this.root, function(i2) {\n                result2 += i2;\n            });\n            return [\n                result2\n            ];\n        }\n    };\n    _proto.generateMap = function generateMap() {\n        if (this.root) {\n            this.generateString();\n        } else if (this.previous().length === 1) {\n            var prev = this.previous()[0].consumer();\n            prev.file = this.outputFile();\n            this.map = SourceMapGenerator.fromSourceMap(prev, {\n                ignoreInvalidMapping: true\n            });\n        } else {\n            this.map = new SourceMapGenerator({\n                file: this.outputFile(),\n                ignoreInvalidMapping: true\n            });\n            this.map.addMapping({\n                generated: {\n                    column: 0,\n                    line: 1\n                },\n                original: {\n                    column: 0,\n                    line: 1\n                },\n                source: this.opts.from ? this.toUrl(this.path(this.opts.from)) : \"<no source>\"\n            });\n        }\n        if (this.isSourcesContent()) this.setSourcesContent();\n        if (this.root && this.previous().length > 0) this.applyPrevMaps();\n        if (this.isAnnotation()) this.addAnnotation();\n        if (this.isInline()) {\n            return [\n                this.css\n            ];\n        } else {\n            return [\n                this.css,\n                this.map\n            ];\n        }\n    };\n    _proto.generateString = function generateString() {\n        var _this = this;\n        this.css = \"\";\n        this.map = new SourceMapGenerator({\n            file: this.outputFile(),\n            ignoreInvalidMapping: true\n        });\n        var line = 1;\n        var column = 1;\n        var noSource = \"<no source>\";\n        var mapping = {\n            generated: {\n                column: 0,\n                line: 0\n            },\n            original: {\n                column: 0,\n                line: 0\n            },\n            source: \"\"\n        };\n        var lines, last;\n        this.stringify(this.root, function(str, node2, type) {\n            _this.css += str;\n            if (node2 && type !== \"end\") {\n                mapping.generated.line = line;\n                mapping.generated.column = column - 1;\n                if (node2.source && node2.source.start) {\n                    mapping.source = _this.sourcePath(node2);\n                    mapping.original.line = node2.source.start.line;\n                    mapping.original.column = node2.source.start.column - 1;\n                    _this.map.addMapping(mapping);\n                } else {\n                    mapping.source = noSource;\n                    mapping.original.line = 1;\n                    mapping.original.column = 0;\n                    _this.map.addMapping(mapping);\n                }\n            }\n            lines = str.match(/\\n/g);\n            if (lines) {\n                line += lines.length;\n                last = str.lastIndexOf(\"\\n\");\n                column = str.length - last;\n            } else {\n                column += str.length;\n            }\n            if (node2 && type !== \"start\") {\n                var p = node2.parent || {\n                    raws: {}\n                };\n                var childless = node2.type === \"decl\" || node2.type === \"atrule\" && !node2.nodes;\n                if (!childless || node2 !== p.last || p.raws.semicolon) {\n                    if (node2.source && node2.source.end) {\n                        mapping.source = _this.sourcePath(node2);\n                        mapping.original.line = node2.source.end.line;\n                        mapping.original.column = node2.source.end.column - 1;\n                        mapping.generated.line = line;\n                        mapping.generated.column = column - 2;\n                        _this.map.addMapping(mapping);\n                    } else {\n                        mapping.source = noSource;\n                        mapping.original.line = 1;\n                        mapping.original.column = 0;\n                        mapping.generated.line = line;\n                        mapping.generated.column = column - 1;\n                        _this.map.addMapping(mapping);\n                    }\n                }\n            }\n        });\n    };\n    _proto.isAnnotation = function isAnnotation() {\n        if (this.isInline()) {\n            return true;\n        }\n        if (typeof this.mapOpts.annotation !== \"undefined\") {\n            return this.mapOpts.annotation;\n        }\n        if (this.previous().length) {\n            return this.previous().some(function(i2) {\n                return i2.annotation;\n            });\n        }\n        return true;\n    };\n    _proto.isInline = function isInline() {\n        if (typeof this.mapOpts.inline !== \"undefined\") {\n            return this.mapOpts.inline;\n        }\n        var annotation = this.mapOpts.annotation;\n        if (typeof annotation !== \"undefined\" && annotation !== true) {\n            return false;\n        }\n        if (this.previous().length) {\n            return this.previous().some(function(i2) {\n                return i2.inline;\n            });\n        }\n        return true;\n    };\n    _proto.isMap = function isMap() {\n        if (typeof this.opts.map !== \"undefined\") {\n            return !!this.opts.map;\n        }\n        return this.previous().length > 0;\n    };\n    _proto.isSourcesContent = function isSourcesContent() {\n        if (typeof this.mapOpts.sourcesContent !== \"undefined\") {\n            return this.mapOpts.sourcesContent;\n        }\n        if (this.previous().length) {\n            return this.previous().some(function(i2) {\n                return i2.withContent();\n            });\n        }\n        return true;\n    };\n    _proto.outputFile = function outputFile() {\n        if (this.opts.to) {\n            return this.path(this.opts.to);\n        } else if (this.opts.from) {\n            return this.path(this.opts.from);\n        } else {\n            return \"to.css\";\n        }\n    };\n    _proto.path = function path(file) {\n        if (this.mapOpts.absolute) return file;\n        if (file.charCodeAt(0) === 60) return file;\n        if (/^\\w+:\\/\\//.test(file)) return file;\n        var cached = this.memoizedPaths.get(file);\n        if (cached) return cached;\n        var from = this.opts.to ? dirname(this.opts.to) : \".\";\n        if (typeof this.mapOpts.annotation === \"string\") {\n            from = dirname(resolve$3(from, this.mapOpts.annotation));\n        }\n        var path = relative(from, file);\n        this.memoizedPaths.set(file, path);\n        return path;\n    };\n    _proto.previous = function previous() {\n        var _this = this;\n        if (!this.previousMaps) {\n            this.previousMaps = [];\n            if (this.root) {\n                this.root.walk(function(node2) {\n                    if (node2.source && node2.source.input.map) {\n                        var map = node2.source.input.map;\n                        if (!_this.previousMaps.includes(map)) {\n                            _this.previousMaps.push(map);\n                        }\n                    }\n                });\n            } else {\n                var input2 = new Input$3(this.originalCSS, this.opts);\n                if (input2.map) this.previousMaps.push(input2.map);\n            }\n        }\n        return this.previousMaps;\n    };\n    _proto.setSourcesContent = function setSourcesContent() {\n        var _this = this;\n        var already = {};\n        if (this.root) {\n            this.root.walk(function(node2) {\n                if (node2.source) {\n                    var from = node2.source.input.from;\n                    if (from && !already[from]) {\n                        already[from] = true;\n                        var fromUrl = _this.usesFileUrls ? _this.toFileUrl(from) : _this.toUrl(_this.path(from));\n                        _this.map.setSourceContent(fromUrl, node2.source.input.css);\n                    }\n                }\n            });\n        } else if (this.css) {\n            var from = this.opts.from ? this.toUrl(this.path(this.opts.from)) : \"<no source>\";\n            this.map.setSourceContent(from, this.css);\n        }\n    };\n    _proto.sourcePath = function sourcePath(node2) {\n        if (this.mapOpts.from) {\n            return this.toUrl(this.mapOpts.from);\n        } else if (this.usesFileUrls) {\n            return this.toFileUrl(node2.source.input.from);\n        } else {\n            return this.toUrl(this.path(node2.source.input.from));\n        }\n    };\n    _proto.toBase64 = function toBase64(str) {\n        if (Buffer) {\n            return Buffer.from(str).toString(\"base64\");\n        } else {\n            return window.btoa(unescape(encodeURIComponent(str)));\n        }\n    };\n    _proto.toFileUrl = function toFileUrl(path) {\n        var cached = this.memoizedFileURLs.get(path);\n        if (cached) return cached;\n        if (pathToFileURL) {\n            var fileURL = pathToFileURL(path).toString();\n            this.memoizedFileURLs.set(path, fileURL);\n            return fileURL;\n        } else {\n            throw new Error(\"`map.absolute` option is not available in this PostCSS build\");\n        }\n    };\n    _proto.toUrl = function toUrl(path) {\n        var cached = this.memoizedURLs.get(path);\n        if (cached) return cached;\n        if (sep === \"\\\\\") {\n            path = path.replace(/\\\\/g, \"/\");\n        }\n        var url = encodeURI(path).replace(/[#?]/g, encodeURIComponent);\n        this.memoizedURLs.set(path, url);\n        return url;\n    };\n    return MapGenerator2;\n}();\nvar mapGenerator = MapGenerator$2;\nvar Node$2 = node;\nvar Comment$4 = /*#__PURE__*/ function(Node$2) {\n    _inherits(Comment2, Node$2);\n    function Comment2(defaults) {\n        var _this;\n        _this = Node$2.call(this, defaults) || this;\n        _this.type = \"comment\";\n        return _this;\n    }\n    return Comment2;\n}(Node$2);\nvar comment = Comment$4;\nComment$4.default = Comment$4;\nvar isClean$1 = symbols.isClean, my$1 = symbols.my;\nvar Declaration$3 = declaration;\nvar Comment$3 = comment;\nvar Node$1 = node;\nvar parse$4, Rule$4, AtRule$4, Root$6;\nfunction cleanSource(nodes) {\n    return nodes.map(function(i2) {\n        if (i2.nodes) i2.nodes = cleanSource(i2.nodes);\n        delete i2.source;\n        return i2;\n    });\n}\nfunction markDirtyUp(node2) {\n    node2[isClean$1] = false;\n    if (node2.proxyOf.nodes) {\n        for(var _iterator = _create_for_of_iterator_helper_loose(node2.proxyOf.nodes), _step; !(_step = _iterator()).done;){\n            var i2 = _step.value;\n            markDirtyUp(i2);\n        }\n    }\n}\nvar Container$7 = /*#__PURE__*/ function(Node$1) {\n    _inherits(Container2, Node$1);\n    function Container2() {\n        return Node$1.apply(this, arguments) || this;\n    }\n    var _proto = Container2.prototype;\n    _proto.append = function append() {\n        for(var _len = arguments.length, children = new Array(_len), _key = 0; _key < _len; _key++){\n            children[_key] = arguments[_key];\n        }\n        for(var _iterator = _create_for_of_iterator_helper_loose(children), _step; !(_step = _iterator()).done;){\n            var child = _step.value;\n            var nodes = this.normalize(child, this.last);\n            for(var _iterator1 = _create_for_of_iterator_helper_loose(nodes), _step1; !(_step1 = _iterator1()).done;){\n                var node2 = _step1.value;\n                this.proxyOf.nodes.push(node2);\n            }\n        }\n        this.markDirty();\n        return this;\n    };\n    _proto.cleanRaws = function cleanRaws(keepBetween) {\n        Node$1.prototype.cleanRaws.call(this, keepBetween);\n        if (this.nodes) {\n            for(var _iterator = _create_for_of_iterator_helper_loose(this.nodes), _step; !(_step = _iterator()).done;){\n                var node2 = _step.value;\n                node2.cleanRaws(keepBetween);\n            }\n        }\n    };\n    _proto.each = function each(callback) {\n        if (!this.proxyOf.nodes) return void 0;\n        var iterator = this.getIterator();\n        var index2, result2;\n        while(this.indexes[iterator] < this.proxyOf.nodes.length){\n            index2 = this.indexes[iterator];\n            result2 = callback(this.proxyOf.nodes[index2], index2);\n            if (result2 === false) break;\n            this.indexes[iterator] += 1;\n        }\n        delete this.indexes[iterator];\n        return result2;\n    };\n    _proto.every = function every(condition) {\n        return this.nodes.every(condition);\n    };\n    _proto.getIterator = function getIterator() {\n        if (!this.lastEach) this.lastEach = 0;\n        if (!this.indexes) this.indexes = {};\n        this.lastEach += 1;\n        var iterator = this.lastEach;\n        this.indexes[iterator] = 0;\n        return iterator;\n    };\n    _proto.getProxyProcessor = function getProxyProcessor() {\n        return {\n            get: function get(node2, prop) {\n                if (prop === \"proxyOf\") {\n                    return node2;\n                } else if (!node2[prop]) {\n                    return node2[prop];\n                } else if (prop === \"each\" || typeof prop === \"string\" && prop.startsWith(\"walk\")) {\n                    return function() {\n                        for(var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++){\n                            args[_key] = arguments[_key];\n                        }\n                        var _node2;\n                        return (_node2 = node2)[prop].apply(_node2, [].concat(args.map(function(i2) {\n                            if (typeof i2 === \"function\") {\n                                return function(child, index2) {\n                                    return i2(child.toProxy(), index2);\n                                };\n                            } else {\n                                return i2;\n                            }\n                        })));\n                    };\n                } else if (prop === \"every\" || prop === \"some\") {\n                    return function(cb) {\n                        return node2[prop](function(child) {\n                            for(var _len = arguments.length, other = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++){\n                                other[_key - 1] = arguments[_key];\n                            }\n                            return cb.apply(void 0, [].concat([\n                                child.toProxy()\n                            ], other));\n                        });\n                    };\n                } else if (prop === \"root\") {\n                    return function() {\n                        return node2.root().toProxy();\n                    };\n                } else if (prop === \"nodes\") {\n                    return node2.nodes.map(function(i2) {\n                        return i2.toProxy();\n                    });\n                } else if (prop === \"first\" || prop === \"last\") {\n                    return node2[prop].toProxy();\n                } else {\n                    return node2[prop];\n                }\n            },\n            set: function set(node2, prop, value) {\n                if (node2[prop] === value) return true;\n                node2[prop] = value;\n                if (prop === \"name\" || prop === \"params\" || prop === \"selector\") {\n                    node2.markDirty();\n                }\n                return true;\n            }\n        };\n    };\n    _proto.index = function index(child) {\n        if (typeof child === \"number\") return child;\n        if (child.proxyOf) child = child.proxyOf;\n        return this.proxyOf.nodes.indexOf(child);\n    };\n    _proto.insertAfter = function insertAfter(exist, add) {\n        var existIndex = this.index(exist);\n        var nodes = this.normalize(add, this.proxyOf.nodes[existIndex]).reverse();\n        existIndex = this.index(exist);\n        for(var _iterator = _create_for_of_iterator_helper_loose(nodes), _step; !(_step = _iterator()).done;){\n            var node2 = _step.value;\n            this.proxyOf.nodes.splice(existIndex + 1, 0, node2);\n        }\n        var index2;\n        for(var id in this.indexes){\n            index2 = this.indexes[id];\n            if (existIndex < index2) {\n                this.indexes[id] = index2 + nodes.length;\n            }\n        }\n        this.markDirty();\n        return this;\n    };\n    _proto.insertBefore = function insertBefore(exist, add) {\n        var existIndex = this.index(exist);\n        var type = existIndex === 0 ? \"prepend\" : false;\n        var nodes = this.normalize(add, this.proxyOf.nodes[existIndex], type).reverse();\n        existIndex = this.index(exist);\n        for(var _iterator = _create_for_of_iterator_helper_loose(nodes), _step; !(_step = _iterator()).done;){\n            var node2 = _step.value;\n            this.proxyOf.nodes.splice(existIndex, 0, node2);\n        }\n        var index2;\n        for(var id in this.indexes){\n            index2 = this.indexes[id];\n            if (existIndex <= index2) {\n                this.indexes[id] = index2 + nodes.length;\n            }\n        }\n        this.markDirty();\n        return this;\n    };\n    _proto.normalize = function normalize(nodes, sample) {\n        var _this = this;\n        if (typeof nodes === \"string\") {\n            nodes = cleanSource(parse$4(nodes).nodes);\n        } else if (typeof nodes === \"undefined\") {\n            nodes = [];\n        } else if (Array.isArray(nodes)) {\n            nodes = nodes.slice(0);\n            for(var _iterator = _create_for_of_iterator_helper_loose(nodes), _step; !(_step = _iterator()).done;){\n                var i2 = _step.value;\n                if (i2.parent) i2.parent.removeChild(i2, \"ignore\");\n            }\n        } else if (nodes.type === \"root\" && this.type !== \"document\") {\n            nodes = nodes.nodes.slice(0);\n            for(var _iterator1 = _create_for_of_iterator_helper_loose(nodes), _step1; !(_step1 = _iterator1()).done;){\n                var i21 = _step1.value;\n                if (i21.parent) i21.parent.removeChild(i21, \"ignore\");\n            }\n        } else if (nodes.type) {\n            nodes = [\n                nodes\n            ];\n        } else if (nodes.prop) {\n            if (typeof nodes.value === \"undefined\") {\n                throw new Error(\"Value field is missed in node creation\");\n            } else if (typeof nodes.value !== \"string\") {\n                nodes.value = String(nodes.value);\n            }\n            nodes = [\n                new Declaration$3(nodes)\n            ];\n        } else if (nodes.selector) {\n            nodes = [\n                new Rule$4(nodes)\n            ];\n        } else if (nodes.name) {\n            nodes = [\n                new AtRule$4(nodes)\n            ];\n        } else if (nodes.text) {\n            nodes = [\n                new Comment$3(nodes)\n            ];\n        } else {\n            throw new Error(\"Unknown node type in node creation\");\n        }\n        var processed = nodes.map(function(i2) {\n            if (!i2[my$1]) Container2.rebuild(i2);\n            i2 = i2.proxyOf;\n            if (i2.parent) i2.parent.removeChild(i2);\n            if (i2[isClean$1]) markDirtyUp(i2);\n            if (typeof i2.raws.before === \"undefined\") {\n                if (sample && typeof sample.raws.before !== \"undefined\") {\n                    i2.raws.before = sample.raws.before.replace(/\\S/g, \"\");\n                }\n            }\n            i2.parent = _this.proxyOf;\n            return i2;\n        });\n        return processed;\n    };\n    _proto.prepend = function prepend() {\n        for(var _len = arguments.length, children = new Array(_len), _key = 0; _key < _len; _key++){\n            children[_key] = arguments[_key];\n        }\n        children = children.reverse();\n        for(var _iterator = _create_for_of_iterator_helper_loose(children), _step; !(_step = _iterator()).done;){\n            var child = _step.value;\n            var nodes = this.normalize(child, this.first, \"prepend\").reverse();\n            for(var _iterator1 = _create_for_of_iterator_helper_loose(nodes), _step1; !(_step1 = _iterator1()).done;){\n                var node2 = _step1.value;\n                this.proxyOf.nodes.unshift(node2);\n            }\n            for(var id in this.indexes){\n                this.indexes[id] = this.indexes[id] + nodes.length;\n            }\n        }\n        this.markDirty();\n        return this;\n    };\n    _proto.push = function push(child) {\n        child.parent = this;\n        this.proxyOf.nodes.push(child);\n        return this;\n    };\n    _proto.removeAll = function removeAll() {\n        for(var _iterator = _create_for_of_iterator_helper_loose(this.proxyOf.nodes), _step; !(_step = _iterator()).done;){\n            var node2 = _step.value;\n            node2.parent = void 0;\n        }\n        this.proxyOf.nodes = [];\n        this.markDirty();\n        return this;\n    };\n    _proto.removeChild = function removeChild(child) {\n        child = this.index(child);\n        this.proxyOf.nodes[child].parent = void 0;\n        this.proxyOf.nodes.splice(child, 1);\n        var index2;\n        for(var id in this.indexes){\n            index2 = this.indexes[id];\n            if (index2 >= child) {\n                this.indexes[id] = index2 - 1;\n            }\n        }\n        this.markDirty();\n        return this;\n    };\n    _proto.replaceValues = function replaceValues(pattern, opts, callback) {\n        if (!callback) {\n            callback = opts;\n            opts = {};\n        }\n        this.walkDecls(function(decl) {\n            if (opts.props && !opts.props.includes(decl.prop)) return;\n            if (opts.fast && !decl.value.includes(opts.fast)) return;\n            decl.value = decl.value.replace(pattern, callback);\n        });\n        this.markDirty();\n        return this;\n    };\n    _proto.some = function some(condition) {\n        return this.nodes.some(condition);\n    };\n    _proto.walk = function walk(callback) {\n        return this.each(function(child, i2) {\n            var result2;\n            try {\n                result2 = callback(child, i2);\n            } catch (e2) {\n                throw child.addToError(e2);\n            }\n            if (result2 !== false && child.walk) {\n                result2 = child.walk(callback);\n            }\n            return result2;\n        });\n    };\n    _proto.walkAtRules = function walkAtRules(name, callback) {\n        if (!callback) {\n            callback = name;\n            return this.walk(function(child, i2) {\n                if (child.type === \"atrule\") {\n                    return callback(child, i2);\n                }\n            });\n        }\n        if (_instanceof(name, RegExp)) {\n            return this.walk(function(child, i2) {\n                if (child.type === \"atrule\" && name.test(child.name)) {\n                    return callback(child, i2);\n                }\n            });\n        }\n        return this.walk(function(child, i2) {\n            if (child.type === \"atrule\" && child.name === name) {\n                return callback(child, i2);\n            }\n        });\n    };\n    _proto.walkComments = function walkComments(callback) {\n        return this.walk(function(child, i2) {\n            if (child.type === \"comment\") {\n                return callback(child, i2);\n            }\n        });\n    };\n    _proto.walkDecls = function walkDecls(prop, callback) {\n        if (!callback) {\n            callback = prop;\n            return this.walk(function(child, i2) {\n                if (child.type === \"decl\") {\n                    return callback(child, i2);\n                }\n            });\n        }\n        if (_instanceof(prop, RegExp)) {\n            return this.walk(function(child, i2) {\n                if (child.type === \"decl\" && prop.test(child.prop)) {\n                    return callback(child, i2);\n                }\n            });\n        }\n        return this.walk(function(child, i2) {\n            if (child.type === \"decl\" && child.prop === prop) {\n                return callback(child, i2);\n            }\n        });\n    };\n    _proto.walkRules = function walkRules(selector, callback) {\n        if (!callback) {\n            callback = selector;\n            return this.walk(function(child, i2) {\n                if (child.type === \"rule\") {\n                    return callback(child, i2);\n                }\n            });\n        }\n        if (_instanceof(selector, RegExp)) {\n            return this.walk(function(child, i2) {\n                if (child.type === \"rule\" && selector.test(child.selector)) {\n                    return callback(child, i2);\n                }\n            });\n        }\n        return this.walk(function(child, i2) {\n            if (child.type === \"rule\" && child.selector === selector) {\n                return callback(child, i2);\n            }\n        });\n    };\n    _create_class(Container2, [\n        {\n            key: \"first\",\n            get: function get() {\n                if (!this.proxyOf.nodes) return void 0;\n                return this.proxyOf.nodes[0];\n            }\n        },\n        {\n            key: \"last\",\n            get: function get() {\n                if (!this.proxyOf.nodes) return void 0;\n                return this.proxyOf.nodes[this.proxyOf.nodes.length - 1];\n            }\n        }\n    ]);\n    return Container2;\n}(Node$1);\nContainer$7.registerParse = function(dependant) {\n    parse$4 = dependant;\n};\nContainer$7.registerRule = function(dependant) {\n    Rule$4 = dependant;\n};\nContainer$7.registerAtRule = function(dependant) {\n    AtRule$4 = dependant;\n};\nContainer$7.registerRoot = function(dependant) {\n    Root$6 = dependant;\n};\nvar container = Container$7;\nContainer$7.default = Container$7;\nContainer$7.rebuild = function(node2) {\n    if (node2.type === \"atrule\") {\n        Object.setPrototypeOf(node2, AtRule$4.prototype);\n    } else if (node2.type === \"rule\") {\n        Object.setPrototypeOf(node2, Rule$4.prototype);\n    } else if (node2.type === \"decl\") {\n        Object.setPrototypeOf(node2, Declaration$3.prototype);\n    } else if (node2.type === \"comment\") {\n        Object.setPrototypeOf(node2, Comment$3.prototype);\n    } else if (node2.type === \"root\") {\n        Object.setPrototypeOf(node2, Root$6.prototype);\n    }\n    node2[my$1] = true;\n    if (node2.nodes) {\n        node2.nodes.forEach(function(child) {\n            Container$7.rebuild(child);\n        });\n    }\n};\nvar Container$6 = container;\nvar LazyResult$4, Processor$3;\nvar Document$3 = /*#__PURE__*/ function(Container$6) {\n    _inherits(Document23, Container$6);\n    function Document23(defaults) {\n        var _this;\n        _this = Container$6.call(this, _extends({\n            type: \"document\"\n        }, defaults)) || this;\n        if (!_this.nodes) {\n            _this.nodes = [];\n        }\n        return _this;\n    }\n    var _proto = Document23.prototype;\n    _proto.toResult = function toResult(opts) {\n        if (opts === void 0) opts = {};\n        var lazy = new LazyResult$4(new Processor$3(), this, opts);\n        return lazy.stringify();\n    };\n    return Document23;\n}(Container$6);\nDocument$3.registerLazyResult = function(dependant) {\n    LazyResult$4 = dependant;\n};\nDocument$3.registerProcessor = function(dependant) {\n    Processor$3 = dependant;\n};\nvar document$1$2 = Document$3;\nDocument$3.default = Document$3;\nvar printed = {};\nvar warnOnce$2 = function warnOnce2(message) {\n    if (printed[message]) return;\n    printed[message] = true;\n    if (typeof console !== \"undefined\" && console.warn) {\n        console.warn(message);\n    }\n};\nvar Warning$2 = /*#__PURE__*/ function() {\n    function Warning2(text, opts) {\n        if (opts === void 0) opts = {};\n        this.type = \"warning\";\n        this.text = text;\n        if (opts.node && opts.node.source) {\n            var range = opts.node.rangeBy(opts);\n            this.line = range.start.line;\n            this.column = range.start.column;\n            this.endLine = range.end.line;\n            this.endColumn = range.end.column;\n        }\n        for(var opt in opts)this[opt] = opts[opt];\n    }\n    var _proto = Warning2.prototype;\n    _proto.toString = function toString() {\n        if (this.node) {\n            return this.node.error(this.text, {\n                index: this.index,\n                plugin: this.plugin,\n                word: this.word\n            }).message;\n        }\n        if (this.plugin) {\n            return this.plugin + \": \" + this.text;\n        }\n        return this.text;\n    };\n    return Warning2;\n}();\nvar warning = Warning$2;\nWarning$2.default = Warning$2;\nvar Warning$1 = warning;\nvar Result$3 = /*#__PURE__*/ function() {\n    function Result2(processor2, root2, opts) {\n        this.processor = processor2;\n        this.messages = [];\n        this.root = root2;\n        this.opts = opts;\n        this.css = void 0;\n        this.map = void 0;\n    }\n    var _proto = Result2.prototype;\n    _proto.toString = function toString() {\n        return this.css;\n    };\n    _proto.warn = function warn(text, opts) {\n        if (opts === void 0) opts = {};\n        if (!opts.plugin) {\n            if (this.lastPlugin && this.lastPlugin.postcssPlugin) {\n                opts.plugin = this.lastPlugin.postcssPlugin;\n            }\n        }\n        var warning2 = new Warning$1(text, opts);\n        this.messages.push(warning2);\n        return warning2;\n    };\n    _proto.warnings = function warnings() {\n        return this.messages.filter(function(i2) {\n            return i2.type === \"warning\";\n        });\n    };\n    _create_class(Result2, [\n        {\n            key: \"content\",\n            get: function get() {\n                return this.css;\n            }\n        }\n    ]);\n    return Result2;\n}();\nvar result = Result$3;\nResult$3.default = Result$3;\nvar SINGLE_QUOTE = \"'\".charCodeAt(0);\nvar DOUBLE_QUOTE = '\"'.charCodeAt(0);\nvar BACKSLASH = \"\\\\\".charCodeAt(0);\nvar SLASH = \"/\".charCodeAt(0);\nvar NEWLINE = \"\\n\".charCodeAt(0);\nvar SPACE = \" \".charCodeAt(0);\nvar FEED = \"\\f\".charCodeAt(0);\nvar TAB = \"\t\".charCodeAt(0);\nvar CR = \"\\r\".charCodeAt(0);\nvar OPEN_SQUARE = \"[\".charCodeAt(0);\nvar CLOSE_SQUARE = \"]\".charCodeAt(0);\nvar OPEN_PARENTHESES = \"(\".charCodeAt(0);\nvar CLOSE_PARENTHESES = \")\".charCodeAt(0);\nvar OPEN_CURLY = \"{\".charCodeAt(0);\nvar CLOSE_CURLY = \"}\".charCodeAt(0);\nvar SEMICOLON = \";\".charCodeAt(0);\nvar ASTERISK = \"*\".charCodeAt(0);\nvar COLON = \":\".charCodeAt(0);\nvar AT = \"@\".charCodeAt(0);\nvar RE_AT_END = /[\\t\\n\\f\\r \"#'()/;[\\\\\\]{}]/g;\nvar RE_WORD_END = /[\\t\\n\\f\\r !\"#'():;@[\\\\\\]{}]|\\/(?=\\*)/g;\nvar RE_BAD_BRACKET = /.[\\r\\n\"'(/\\\\]/;\nvar RE_HEX_ESCAPE = /[\\da-f]/i;\nvar tokenize = function tokenizer2(input2, options) {\n    if (options === void 0) options = {};\n    var css = input2.css.valueOf();\n    var ignore = options.ignoreErrors;\n    var code, next, quote, content, escape;\n    var escaped, escapePos, prev, n2, currentToken;\n    var length = css.length;\n    var pos = 0;\n    var buffer = [];\n    var returned = [];\n    function position() {\n        return pos;\n    }\n    function unclosed(what) {\n        throw input2.error(\"Unclosed \" + what, pos);\n    }\n    function endOfFile() {\n        return returned.length === 0 && pos >= length;\n    }\n    function nextToken(opts) {\n        if (returned.length) return returned.pop();\n        if (pos >= length) return;\n        var ignoreUnclosed = opts ? opts.ignoreUnclosed : false;\n        code = css.charCodeAt(pos);\n        switch(code){\n            case NEWLINE:\n            case SPACE:\n            case TAB:\n            case CR:\n            case FEED:\n                {\n                    next = pos;\n                    do {\n                        next += 1;\n                        code = css.charCodeAt(next);\n                    }while (code === SPACE || code === NEWLINE || code === TAB || code === CR || code === FEED);\n                    currentToken = [\n                        \"space\",\n                        css.slice(pos, next)\n                    ];\n                    pos = next - 1;\n                    break;\n                }\n            case OPEN_SQUARE:\n            case CLOSE_SQUARE:\n            case OPEN_CURLY:\n            case CLOSE_CURLY:\n            case COLON:\n            case SEMICOLON:\n            case CLOSE_PARENTHESES:\n                {\n                    var controlChar = String.fromCharCode(code);\n                    currentToken = [\n                        controlChar,\n                        controlChar,\n                        pos\n                    ];\n                    break;\n                }\n            case OPEN_PARENTHESES:\n                {\n                    prev = buffer.length ? buffer.pop()[1] : \"\";\n                    n2 = css.charCodeAt(pos + 1);\n                    if (prev === \"url\" && n2 !== SINGLE_QUOTE && n2 !== DOUBLE_QUOTE && n2 !== SPACE && n2 !== NEWLINE && n2 !== TAB && n2 !== FEED && n2 !== CR) {\n                        next = pos;\n                        do {\n                            escaped = false;\n                            next = css.indexOf(\")\", next + 1);\n                            if (next === -1) {\n                                if (ignore || ignoreUnclosed) {\n                                    next = pos;\n                                    break;\n                                } else {\n                                    unclosed(\"bracket\");\n                                }\n                            }\n                            escapePos = next;\n                            while(css.charCodeAt(escapePos - 1) === BACKSLASH){\n                                escapePos -= 1;\n                                escaped = !escaped;\n                            }\n                        }while (escaped);\n                        currentToken = [\n                            \"brackets\",\n                            css.slice(pos, next + 1),\n                            pos,\n                            next\n                        ];\n                        pos = next;\n                    } else {\n                        next = css.indexOf(\")\", pos + 1);\n                        content = css.slice(pos, next + 1);\n                        if (next === -1 || RE_BAD_BRACKET.test(content)) {\n                            currentToken = [\n                                \"(\",\n                                \"(\",\n                                pos\n                            ];\n                        } else {\n                            currentToken = [\n                                \"brackets\",\n                                content,\n                                pos,\n                                next\n                            ];\n                            pos = next;\n                        }\n                    }\n                    break;\n                }\n            case SINGLE_QUOTE:\n            case DOUBLE_QUOTE:\n                {\n                    quote = code === SINGLE_QUOTE ? \"'\" : '\"';\n                    next = pos;\n                    do {\n                        escaped = false;\n                        next = css.indexOf(quote, next + 1);\n                        if (next === -1) {\n                            if (ignore || ignoreUnclosed) {\n                                next = pos + 1;\n                                break;\n                            } else {\n                                unclosed(\"string\");\n                            }\n                        }\n                        escapePos = next;\n                        while(css.charCodeAt(escapePos - 1) === BACKSLASH){\n                            escapePos -= 1;\n                            escaped = !escaped;\n                        }\n                    }while (escaped);\n                    currentToken = [\n                        \"string\",\n                        css.slice(pos, next + 1),\n                        pos,\n                        next\n                    ];\n                    pos = next;\n                    break;\n                }\n            case AT:\n                {\n                    RE_AT_END.lastIndex = pos + 1;\n                    RE_AT_END.test(css);\n                    if (RE_AT_END.lastIndex === 0) {\n                        next = css.length - 1;\n                    } else {\n                        next = RE_AT_END.lastIndex - 2;\n                    }\n                    currentToken = [\n                        \"at-word\",\n                        css.slice(pos, next + 1),\n                        pos,\n                        next\n                    ];\n                    pos = next;\n                    break;\n                }\n            case BACKSLASH:\n                {\n                    next = pos;\n                    escape = true;\n                    while(css.charCodeAt(next + 1) === BACKSLASH){\n                        next += 1;\n                        escape = !escape;\n                    }\n                    code = css.charCodeAt(next + 1);\n                    if (escape && code !== SLASH && code !== SPACE && code !== NEWLINE && code !== TAB && code !== CR && code !== FEED) {\n                        next += 1;\n                        if (RE_HEX_ESCAPE.test(css.charAt(next))) {\n                            while(RE_HEX_ESCAPE.test(css.charAt(next + 1))){\n                                next += 1;\n                            }\n                            if (css.charCodeAt(next + 1) === SPACE) {\n                                next += 1;\n                            }\n                        }\n                    }\n                    currentToken = [\n                        \"word\",\n                        css.slice(pos, next + 1),\n                        pos,\n                        next\n                    ];\n                    pos = next;\n                    break;\n                }\n            default:\n                {\n                    if (code === SLASH && css.charCodeAt(pos + 1) === ASTERISK) {\n                        next = css.indexOf(\"*/\", pos + 2) + 1;\n                        if (next === 0) {\n                            if (ignore || ignoreUnclosed) {\n                                next = css.length;\n                            } else {\n                                unclosed(\"comment\");\n                            }\n                        }\n                        currentToken = [\n                            \"comment\",\n                            css.slice(pos, next + 1),\n                            pos,\n                            next\n                        ];\n                        pos = next;\n                    } else {\n                        RE_WORD_END.lastIndex = pos + 1;\n                        RE_WORD_END.test(css);\n                        if (RE_WORD_END.lastIndex === 0) {\n                            next = css.length - 1;\n                        } else {\n                            next = RE_WORD_END.lastIndex - 2;\n                        }\n                        currentToken = [\n                            \"word\",\n                            css.slice(pos, next + 1),\n                            pos,\n                            next\n                        ];\n                        buffer.push(currentToken);\n                        pos = next;\n                    }\n                    break;\n                }\n        }\n        pos++;\n        return currentToken;\n    }\n    function back(token) {\n        returned.push(token);\n    }\n    return {\n        back: back,\n        endOfFile: endOfFile,\n        nextToken: nextToken,\n        position: position\n    };\n};\nvar Container$5 = container;\nvar AtRule$3 = /*#__PURE__*/ function(Container$5) {\n    _inherits(AtRule2, Container$5);\n    function AtRule2(defaults) {\n        var _this;\n        _this = Container$5.call(this, defaults) || this;\n        _this.type = \"atrule\";\n        return _this;\n    }\n    var _proto = AtRule2.prototype;\n    _proto.append = function append() {\n        for(var _len = arguments.length, children = new Array(_len), _key = 0; _key < _len; _key++){\n            children[_key] = arguments[_key];\n        }\n        var _Container$5_prototype_append;\n        if (!this.proxyOf.nodes) this.nodes = [];\n        return (_Container$5_prototype_append = Container$5.prototype.append).call.apply(_Container$5_prototype_append, [].concat([\n            this\n        ], children));\n    };\n    _proto.prepend = function prepend() {\n        for(var _len = arguments.length, children = new Array(_len), _key = 0; _key < _len; _key++){\n            children[_key] = arguments[_key];\n        }\n        var _Container$5_prototype_prepend;\n        if (!this.proxyOf.nodes) this.nodes = [];\n        return (_Container$5_prototype_prepend = Container$5.prototype.prepend).call.apply(_Container$5_prototype_prepend, [].concat([\n            this\n        ], children));\n    };\n    return AtRule2;\n}(Container$5);\nvar atRule = AtRule$3;\nAtRule$3.default = AtRule$3;\nContainer$5.registerAtRule(AtRule$3);\nvar Container$4 = container;\nvar LazyResult$3, Processor$2;\nvar Root$5 = /*#__PURE__*/ function(Container$4) {\n    _inherits(Root2, Container$4);\n    function Root2(defaults) {\n        var _this;\n        _this = Container$4.call(this, defaults) || this;\n        _this.type = \"root\";\n        if (!_this.nodes) _this.nodes = [];\n        return _this;\n    }\n    var _proto = Root2.prototype;\n    _proto.normalize = function normalize(child, sample, type) {\n        var nodes = Container$4.prototype.normalize.call(this, child);\n        if (sample) {\n            if (type === \"prepend\") {\n                if (this.nodes.length > 1) {\n                    sample.raws.before = this.nodes[1].raws.before;\n                } else {\n                    delete sample.raws.before;\n                }\n            } else if (this.first !== sample) {\n                for(var _iterator = _create_for_of_iterator_helper_loose(nodes), _step; !(_step = _iterator()).done;){\n                    var node2 = _step.value;\n                    node2.raws.before = sample.raws.before;\n                }\n            }\n        }\n        return nodes;\n    };\n    _proto.removeChild = function removeChild(child, ignore) {\n        var index2 = this.index(child);\n        if (!ignore && index2 === 0 && this.nodes.length > 1) {\n            this.nodes[1].raws.before = this.nodes[index2].raws.before;\n        }\n        return Container$4.prototype.removeChild.call(this, child);\n    };\n    _proto.toResult = function toResult(opts) {\n        if (opts === void 0) opts = {};\n        var lazy = new LazyResult$3(new Processor$2(), this, opts);\n        return lazy.stringify();\n    };\n    return Root2;\n}(Container$4);\nRoot$5.registerLazyResult = function(dependant) {\n    LazyResult$3 = dependant;\n};\nRoot$5.registerProcessor = function(dependant) {\n    Processor$2 = dependant;\n};\nvar root = Root$5;\nRoot$5.default = Root$5;\nContainer$4.registerRoot(Root$5);\nvar list$2 = {\n    comma: function comma(string) {\n        return list$2.split(string, [\n            \",\"\n        ], true);\n    },\n    space: function space(string) {\n        var spaces = [\n            \" \",\n            \"\\n\",\n            \"\t\"\n        ];\n        return list$2.split(string, spaces);\n    },\n    split: function split(string, separators, last) {\n        var array = [];\n        var current = \"\";\n        var split = false;\n        var func = 0;\n        var inQuote = false;\n        var prevQuote = \"\";\n        var escape = false;\n        for(var _iterator = _create_for_of_iterator_helper_loose(string), _step; !(_step = _iterator()).done;){\n            var letter = _step.value;\n            if (escape) {\n                escape = false;\n            } else if (letter === \"\\\\\") {\n                escape = true;\n            } else if (inQuote) {\n                if (letter === prevQuote) {\n                    inQuote = false;\n                }\n            } else if (letter === '\"' || letter === \"'\") {\n                inQuote = true;\n                prevQuote = letter;\n            } else if (letter === \"(\") {\n                func += 1;\n            } else if (letter === \")\") {\n                if (func > 0) func -= 1;\n            } else if (func === 0) {\n                if (separators.includes(letter)) split = true;\n            }\n            if (split) {\n                if (current !== \"\") array.push(current.trim());\n                current = \"\";\n                split = false;\n            } else {\n                current += letter;\n            }\n        }\n        if (last || current !== \"\") array.push(current.trim());\n        return array;\n    }\n};\nvar list_1 = list$2;\nlist$2.default = list$2;\nvar Container$3 = container;\nvar list$1 = list_1;\nvar Rule$3 = /*#__PURE__*/ function(Container$3) {\n    _inherits(Rule2, Container$3);\n    function Rule2(defaults) {\n        var _this;\n        _this = Container$3.call(this, defaults) || this;\n        _this.type = \"rule\";\n        if (!_this.nodes) _this.nodes = [];\n        return _this;\n    }\n    _create_class(Rule2, [\n        {\n            key: \"selectors\",\n            get: function get() {\n                return list$1.comma(this.selector);\n            },\n            set: function set(values) {\n                var match = this.selector ? this.selector.match(/,\\s*/) : null;\n                var sep2 = match ? match[0] : \",\" + this.raw(\"between\", \"beforeOpen\");\n                this.selector = values.join(sep2);\n            }\n        }\n    ]);\n    return Rule2;\n}(Container$3);\nvar rule = Rule$3;\nRule$3.default = Rule$3;\nContainer$3.registerRule(Rule$3);\nvar Declaration$2 = declaration;\nvar tokenizer22 = tokenize;\nvar Comment$2 = comment;\nvar AtRule$2 = atRule;\nvar Root$4 = root;\nvar Rule$2 = rule;\nvar SAFE_COMMENT_NEIGHBOR = {\n    empty: true,\n    space: true\n};\nfunction findLastWithPosition(tokens) {\n    for(var i2 = tokens.length - 1; i2 >= 0; i2--){\n        var token = tokens[i2];\n        var pos = token[3] || token[2];\n        if (pos) return pos;\n    }\n}\nvar Parser$1 = /*#__PURE__*/ function() {\n    function Parser2(input2) {\n        this.input = input2;\n        this.root = new Root$4();\n        this.current = this.root;\n        this.spaces = \"\";\n        this.semicolon = false;\n        this.createTokenizer();\n        this.root.source = {\n            input: input2,\n            start: {\n                column: 1,\n                line: 1,\n                offset: 0\n            }\n        };\n    }\n    var _proto = Parser2.prototype;\n    _proto.atrule = function atrule(token) {\n        var node2 = new AtRule$2();\n        node2.name = token[1].slice(1);\n        if (node2.name === \"\") {\n            this.unnamedAtrule(node2, token);\n        }\n        this.init(node2, token[2]);\n        var type;\n        var prev;\n        var shift;\n        var last = false;\n        var open = false;\n        var params = [];\n        var brackets = [];\n        while(!this.tokenizer.endOfFile()){\n            token = this.tokenizer.nextToken();\n            type = token[0];\n            if (type === \"(\" || type === \"[\") {\n                brackets.push(type === \"(\" ? \")\" : \"]\");\n            } else if (type === \"{\" && brackets.length > 0) {\n                brackets.push(\"}\");\n            } else if (type === brackets[brackets.length - 1]) {\n                brackets.pop();\n            }\n            if (brackets.length === 0) {\n                if (type === \";\") {\n                    node2.source.end = this.getPosition(token[2]);\n                    node2.source.end.offset++;\n                    this.semicolon = true;\n                    break;\n                } else if (type === \"{\") {\n                    open = true;\n                    break;\n                } else if (type === \"}\") {\n                    if (params.length > 0) {\n                        shift = params.length - 1;\n                        prev = params[shift];\n                        while(prev && prev[0] === \"space\"){\n                            prev = params[--shift];\n                        }\n                        if (prev) {\n                            node2.source.end = this.getPosition(prev[3] || prev[2]);\n                            node2.source.end.offset++;\n                        }\n                    }\n                    this.end(token);\n                    break;\n                } else {\n                    params.push(token);\n                }\n            } else {\n                params.push(token);\n            }\n            if (this.tokenizer.endOfFile()) {\n                last = true;\n                break;\n            }\n        }\n        node2.raws.between = this.spacesAndCommentsFromEnd(params);\n        if (params.length) {\n            node2.raws.afterName = this.spacesAndCommentsFromStart(params);\n            this.raw(node2, \"params\", params);\n            if (last) {\n                token = params[params.length - 1];\n                node2.source.end = this.getPosition(token[3] || token[2]);\n                node2.source.end.offset++;\n                this.spaces = node2.raws.between;\n                node2.raws.between = \"\";\n            }\n        } else {\n            node2.raws.afterName = \"\";\n            node2.params = \"\";\n        }\n        if (open) {\n            node2.nodes = [];\n            this.current = node2;\n        }\n    };\n    _proto.checkMissedSemicolon = function checkMissedSemicolon(tokens) {\n        var colon = this.colon(tokens);\n        if (colon === false) return;\n        var founded = 0;\n        var token;\n        for(var j = colon - 1; j >= 0; j--){\n            token = tokens[j];\n            if (token[0] !== \"space\") {\n                founded += 1;\n                if (founded === 2) break;\n            }\n        }\n        throw this.input.error(\"Missed semicolon\", token[0] === \"word\" ? token[3] + 1 : token[2]);\n    };\n    _proto.colon = function colon(tokens) {\n        var brackets = 0;\n        var token, type, prev;\n        for(var _iterator = _create_for_of_iterator_helper_loose(tokens.entries()), _step; !(_step = _iterator()).done;){\n            var _step_value = _step.value, i2 = _step_value[0], element = _step_value[1];\n            token = element;\n            type = token[0];\n            if (type === \"(\") {\n                brackets += 1;\n            }\n            if (type === \")\") {\n                brackets -= 1;\n            }\n            if (brackets === 0 && type === \":\") {\n                if (!prev) {\n                    this.doubleColon(token);\n                } else if (prev[0] === \"word\" && prev[1] === \"progid\") {\n                    continue;\n                } else {\n                    return i2;\n                }\n            }\n            prev = token;\n        }\n        return false;\n    };\n    _proto.comment = function comment(token) {\n        var node2 = new Comment$2();\n        this.init(node2, token[2]);\n        node2.source.end = this.getPosition(token[3] || token[2]);\n        node2.source.end.offset++;\n        var text = token[1].slice(2, -2);\n        if (/^\\s*$/.test(text)) {\n            node2.text = \"\";\n            node2.raws.left = text;\n            node2.raws.right = \"\";\n        } else {\n            var match = text.match(/^(\\s*)([^]*\\S)(\\s*)$/);\n            node2.text = match[2];\n            node2.raws.left = match[1];\n            node2.raws.right = match[3];\n        }\n    };\n    _proto.createTokenizer = function createTokenizer() {\n        this.tokenizer = tokenizer22(this.input);\n    };\n    _proto.decl = function decl(tokens, customProperty) {\n        var node2 = new Declaration$2();\n        this.init(node2, tokens[0][2]);\n        var last = tokens[tokens.length - 1];\n        if (last[0] === \";\") {\n            this.semicolon = true;\n            tokens.pop();\n        }\n        node2.source.end = this.getPosition(last[3] || last[2] || findLastWithPosition(tokens));\n        node2.source.end.offset++;\n        while(tokens[0][0] !== \"word\"){\n            if (tokens.length === 1) this.unknownWord(tokens);\n            node2.raws.before += tokens.shift()[1];\n        }\n        node2.source.start = this.getPosition(tokens[0][2]);\n        node2.prop = \"\";\n        while(tokens.length){\n            var type = tokens[0][0];\n            if (type === \":\" || type === \"space\" || type === \"comment\") {\n                break;\n            }\n            node2.prop += tokens.shift()[1];\n        }\n        node2.raws.between = \"\";\n        var token;\n        while(tokens.length){\n            token = tokens.shift();\n            if (token[0] === \":\") {\n                node2.raws.between += token[1];\n                break;\n            } else {\n                if (token[0] === \"word\" && /\\w/.test(token[1])) {\n                    this.unknownWord([\n                        token\n                    ]);\n                }\n                node2.raws.between += token[1];\n            }\n        }\n        if (node2.prop[0] === \"_\" || node2.prop[0] === \"*\") {\n            node2.raws.before += node2.prop[0];\n            node2.prop = node2.prop.slice(1);\n        }\n        var firstSpaces = [];\n        var next;\n        while(tokens.length){\n            next = tokens[0][0];\n            if (next !== \"space\" && next !== \"comment\") break;\n            firstSpaces.push(tokens.shift());\n        }\n        this.precheckMissedSemicolon(tokens);\n        for(var i2 = tokens.length - 1; i2 >= 0; i2--){\n            token = tokens[i2];\n            if (token[1].toLowerCase() === \"!important\") {\n                node2.important = true;\n                var string = this.stringFrom(tokens, i2);\n                string = this.spacesFromEnd(tokens) + string;\n                if (string !== \" !important\") node2.raws.important = string;\n                break;\n            } else if (token[1].toLowerCase() === \"important\") {\n                var cache = tokens.slice(0);\n                var str = \"\";\n                for(var j = i2; j > 0; j--){\n                    var type1 = cache[j][0];\n                    if (str.trim().indexOf(\"!\") === 0 && type1 !== \"space\") {\n                        break;\n                    }\n                    str = cache.pop()[1] + str;\n                }\n                if (str.trim().indexOf(\"!\") === 0) {\n                    node2.important = true;\n                    node2.raws.important = str;\n                    tokens = cache;\n                }\n            }\n            if (token[0] !== \"space\" && token[0] !== \"comment\") {\n                break;\n            }\n        }\n        var hasWord = tokens.some(function(i2) {\n            return i2[0] !== \"space\" && i2[0] !== \"comment\";\n        });\n        if (hasWord) {\n            node2.raws.between += firstSpaces.map(function(i2) {\n                return i2[1];\n            }).join(\"\");\n            firstSpaces = [];\n        }\n        this.raw(node2, \"value\", firstSpaces.concat(tokens), customProperty);\n        if (node2.value.includes(\":\") && !customProperty) {\n            this.checkMissedSemicolon(tokens);\n        }\n    };\n    _proto.doubleColon = function doubleColon(token) {\n        throw this.input.error(\"Double colon\", {\n            offset: token[2]\n        }, {\n            offset: token[2] + token[1].length\n        });\n    };\n    _proto.emptyRule = function emptyRule(token) {\n        var node2 = new Rule$2();\n        this.init(node2, token[2]);\n        node2.selector = \"\";\n        node2.raws.between = \"\";\n        this.current = node2;\n    };\n    _proto.end = function end(token) {\n        if (this.current.nodes && this.current.nodes.length) {\n            this.current.raws.semicolon = this.semicolon;\n        }\n        this.semicolon = false;\n        this.current.raws.after = (this.current.raws.after || \"\") + this.spaces;\n        this.spaces = \"\";\n        if (this.current.parent) {\n            this.current.source.end = this.getPosition(token[2]);\n            this.current.source.end.offset++;\n            this.current = this.current.parent;\n        } else {\n            this.unexpectedClose(token);\n        }\n    };\n    _proto.endFile = function endFile() {\n        if (this.current.parent) this.unclosedBlock();\n        if (this.current.nodes && this.current.nodes.length) {\n            this.current.raws.semicolon = this.semicolon;\n        }\n        this.current.raws.after = (this.current.raws.after || \"\") + this.spaces;\n        this.root.source.end = this.getPosition(this.tokenizer.position());\n    };\n    _proto.freeSemicolon = function freeSemicolon(token) {\n        this.spaces += token[1];\n        if (this.current.nodes) {\n            var prev = this.current.nodes[this.current.nodes.length - 1];\n            if (prev && prev.type === \"rule\" && !prev.raws.ownSemicolon) {\n                prev.raws.ownSemicolon = this.spaces;\n                this.spaces = \"\";\n            }\n        }\n    };\n    // Helpers\n    _proto.getPosition = function getPosition(offset) {\n        var pos = this.input.fromOffset(offset);\n        return {\n            column: pos.col,\n            line: pos.line,\n            offset: offset\n        };\n    };\n    _proto.init = function init(node2, offset) {\n        this.current.push(node2);\n        node2.source = {\n            input: this.input,\n            start: this.getPosition(offset)\n        };\n        node2.raws.before = this.spaces;\n        this.spaces = \"\";\n        if (node2.type !== \"comment\") this.semicolon = false;\n    };\n    _proto.other = function other(start) {\n        var end = false;\n        var type = null;\n        var colon = false;\n        var bracket = null;\n        var brackets = [];\n        var customProperty = start[1].startsWith(\"--\");\n        var tokens = [];\n        var token = start;\n        while(token){\n            type = token[0];\n            tokens.push(token);\n            if (type === \"(\" || type === \"[\") {\n                if (!bracket) bracket = token;\n                brackets.push(type === \"(\" ? \")\" : \"]\");\n            } else if (customProperty && colon && type === \"{\") {\n                if (!bracket) bracket = token;\n                brackets.push(\"}\");\n            } else if (brackets.length === 0) {\n                if (type === \";\") {\n                    if (colon) {\n                        this.decl(tokens, customProperty);\n                        return;\n                    } else {\n                        break;\n                    }\n                } else if (type === \"{\") {\n                    this.rule(tokens);\n                    return;\n                } else if (type === \"}\") {\n                    this.tokenizer.back(tokens.pop());\n                    end = true;\n                    break;\n                } else if (type === \":\") {\n                    colon = true;\n                }\n            } else if (type === brackets[brackets.length - 1]) {\n                brackets.pop();\n                if (brackets.length === 0) bracket = null;\n            }\n            token = this.tokenizer.nextToken();\n        }\n        if (this.tokenizer.endOfFile()) end = true;\n        if (brackets.length > 0) this.unclosedBracket(bracket);\n        if (end && colon) {\n            if (!customProperty) {\n                while(tokens.length){\n                    token = tokens[tokens.length - 1][0];\n                    if (token !== \"space\" && token !== \"comment\") break;\n                    this.tokenizer.back(tokens.pop());\n                }\n            }\n            this.decl(tokens, customProperty);\n        } else {\n            this.unknownWord(tokens);\n        }\n    };\n    _proto.parse = function parse() {\n        var token;\n        while(!this.tokenizer.endOfFile()){\n            token = this.tokenizer.nextToken();\n            switch(token[0]){\n                case \"space\":\n                    this.spaces += token[1];\n                    break;\n                case \";\":\n                    this.freeSemicolon(token);\n                    break;\n                case \"}\":\n                    this.end(token);\n                    break;\n                case \"comment\":\n                    this.comment(token);\n                    break;\n                case \"at-word\":\n                    this.atrule(token);\n                    break;\n                case \"{\":\n                    this.emptyRule(token);\n                    break;\n                default:\n                    this.other(token);\n                    break;\n            }\n        }\n        this.endFile();\n    };\n    _proto.precheckMissedSemicolon = function precheckMissedSemicolon() {};\n    _proto.raw = function raw(node2, prop, tokens, customProperty) {\n        var token, type;\n        var length = tokens.length;\n        var value = \"\";\n        var clean = true;\n        var next, prev;\n        for(var i2 = 0; i2 < length; i2 += 1){\n            token = tokens[i2];\n            type = token[0];\n            if (type === \"space\" && i2 === length - 1 && !customProperty) {\n                clean = false;\n            } else if (type === \"comment\") {\n                prev = tokens[i2 - 1] ? tokens[i2 - 1][0] : \"empty\";\n                next = tokens[i2 + 1] ? tokens[i2 + 1][0] : \"empty\";\n                if (!SAFE_COMMENT_NEIGHBOR[prev] && !SAFE_COMMENT_NEIGHBOR[next]) {\n                    if (value.slice(-1) === \",\") {\n                        clean = false;\n                    } else {\n                        value += token[1];\n                    }\n                } else {\n                    clean = false;\n                }\n            } else {\n                value += token[1];\n            }\n        }\n        if (!clean) {\n            var raw = tokens.reduce(function(all, i2) {\n                return all + i2[1];\n            }, \"\");\n            node2.raws[prop] = {\n                raw: raw,\n                value: value\n            };\n        }\n        node2[prop] = value;\n    };\n    _proto.rule = function rule(tokens) {\n        tokens.pop();\n        var node2 = new Rule$2();\n        this.init(node2, tokens[0][2]);\n        node2.raws.between = this.spacesAndCommentsFromEnd(tokens);\n        this.raw(node2, \"selector\", tokens);\n        this.current = node2;\n    };\n    _proto.spacesAndCommentsFromEnd = function spacesAndCommentsFromEnd(tokens) {\n        var lastTokenType;\n        var spaces = \"\";\n        while(tokens.length){\n            lastTokenType = tokens[tokens.length - 1][0];\n            if (lastTokenType !== \"space\" && lastTokenType !== \"comment\") break;\n            spaces = tokens.pop()[1] + spaces;\n        }\n        return spaces;\n    };\n    // Errors\n    _proto.spacesAndCommentsFromStart = function spacesAndCommentsFromStart(tokens) {\n        var next;\n        var spaces = \"\";\n        while(tokens.length){\n            next = tokens[0][0];\n            if (next !== \"space\" && next !== \"comment\") break;\n            spaces += tokens.shift()[1];\n        }\n        return spaces;\n    };\n    _proto.spacesFromEnd = function spacesFromEnd(tokens) {\n        var lastTokenType;\n        var spaces = \"\";\n        while(tokens.length){\n            lastTokenType = tokens[tokens.length - 1][0];\n            if (lastTokenType !== \"space\") break;\n            spaces = tokens.pop()[1] + spaces;\n        }\n        return spaces;\n    };\n    _proto.stringFrom = function stringFrom(tokens, from) {\n        var result2 = \"\";\n        for(var i2 = from; i2 < tokens.length; i2++){\n            result2 += tokens[i2][1];\n        }\n        tokens.splice(from, tokens.length - from);\n        return result2;\n    };\n    _proto.unclosedBlock = function unclosedBlock() {\n        var pos = this.current.source.start;\n        throw this.input.error(\"Unclosed block\", pos.line, pos.column);\n    };\n    _proto.unclosedBracket = function unclosedBracket(bracket) {\n        throw this.input.error(\"Unclosed bracket\", {\n            offset: bracket[2]\n        }, {\n            offset: bracket[2] + 1\n        });\n    };\n    _proto.unexpectedClose = function unexpectedClose(token) {\n        throw this.input.error(\"Unexpected }\", {\n            offset: token[2]\n        }, {\n            offset: token[2] + 1\n        });\n    };\n    _proto.unknownWord = function unknownWord(tokens) {\n        throw this.input.error(\"Unknown word\", {\n            offset: tokens[0][2]\n        }, {\n            offset: tokens[0][2] + tokens[0][1].length\n        });\n    };\n    _proto.unnamedAtrule = function unnamedAtrule(node2, token) {\n        throw this.input.error(\"At-rule without name\", {\n            offset: token[2]\n        }, {\n            offset: token[2] + token[1].length\n        });\n    };\n    return Parser2;\n}();\nvar parser = Parser$1;\nvar Container$2 = container;\nvar Parser22 = parser;\nvar Input$2 = input;\nfunction parse$3(css, opts) {\n    var input2 = new Input$2(css, opts);\n    var parser2 = new Parser22(input2);\n    try {\n        parser2.parse();\n    } catch (e2) {\n        if (process.env.NODE_ENV !== \"production\") {\n            if (e2.name === \"CssSyntaxError\" && opts && opts.from) {\n                if (/\\.scss$/i.test(opts.from)) {\n                    e2.message += \"\\nYou tried to parse SCSS with the standard CSS parser; try again with the postcss-scss parser\";\n                } else if (/\\.sass/i.test(opts.from)) {\n                    e2.message += \"\\nYou tried to parse Sass with the standard CSS parser; try again with the postcss-sass parser\";\n                } else if (/\\.less$/i.test(opts.from)) {\n                    e2.message += \"\\nYou tried to parse Less with the standard CSS parser; try again with the postcss-less parser\";\n                }\n            }\n        }\n        throw e2;\n    }\n    return parser2.root;\n}\nvar parse_1 = parse$3;\nparse$3.default = parse$3;\nContainer$2.registerParse(parse$3);\nvar isClean = symbols.isClean, my = symbols.my;\nvar MapGenerator$1 = mapGenerator;\nvar stringify$2 = stringify_1;\nvar Container$1 = container;\nvar Document$2 = document$1$2;\nvar warnOnce$1 = warnOnce$2;\nvar Result$2 = result;\nvar parse$2 = parse_1;\nvar Root$3 = root;\nvar TYPE_TO_CLASS_NAME = {\n    atrule: \"AtRule\",\n    comment: \"Comment\",\n    decl: \"Declaration\",\n    document: \"Document\",\n    root: \"Root\",\n    rule: \"Rule\"\n};\nvar PLUGIN_PROPS = {\n    AtRule: true,\n    AtRuleExit: true,\n    Comment: true,\n    CommentExit: true,\n    Declaration: true,\n    DeclarationExit: true,\n    Document: true,\n    DocumentExit: true,\n    Once: true,\n    OnceExit: true,\n    postcssPlugin: true,\n    prepare: true,\n    Root: true,\n    RootExit: true,\n    Rule: true,\n    RuleExit: true\n};\nvar NOT_VISITORS = {\n    Once: true,\n    postcssPlugin: true,\n    prepare: true\n};\nvar CHILDREN = 0;\nfunction isPromise(obj) {\n    return (typeof obj === \"undefined\" ? \"undefined\" : _type_of(obj)) === \"object\" && typeof obj.then === \"function\";\n}\nfunction getEvents(node2) {\n    var key = false;\n    var type = TYPE_TO_CLASS_NAME[node2.type];\n    if (node2.type === \"decl\") {\n        key = node2.prop.toLowerCase();\n    } else if (node2.type === \"atrule\") {\n        key = node2.name.toLowerCase();\n    }\n    if (key && node2.append) {\n        return [\n            type,\n            type + \"-\" + key,\n            CHILDREN,\n            type + \"Exit\",\n            type + \"Exit-\" + key\n        ];\n    } else if (key) {\n        return [\n            type,\n            type + \"-\" + key,\n            type + \"Exit\",\n            type + \"Exit-\" + key\n        ];\n    } else if (node2.append) {\n        return [\n            type,\n            CHILDREN,\n            type + \"Exit\"\n        ];\n    } else {\n        return [\n            type,\n            type + \"Exit\"\n        ];\n    }\n}\nfunction toStack(node2) {\n    var events;\n    if (node2.type === \"document\") {\n        events = [\n            \"Document\",\n            CHILDREN,\n            \"DocumentExit\"\n        ];\n    } else if (node2.type === \"root\") {\n        events = [\n            \"Root\",\n            CHILDREN,\n            \"RootExit\"\n        ];\n    } else {\n        events = getEvents(node2);\n    }\n    return {\n        eventIndex: 0,\n        events: events,\n        iterator: 0,\n        node: node2,\n        visitorIndex: 0,\n        visitors: []\n    };\n}\nfunction cleanMarks(node2) {\n    node2[isClean] = false;\n    if (node2.nodes) node2.nodes.forEach(function(i2) {\n        return cleanMarks(i2);\n    });\n    return node2;\n}\nvar postcss$2 = {};\nvar LazyResult$2 = /*#__PURE__*/ function() {\n    function LazyResult2(processor2, css, opts) {\n        var _this = this;\n        this.stringified = false;\n        this.processed = false;\n        var root2;\n        if ((typeof css === \"undefined\" ? \"undefined\" : _type_of(css)) === \"object\" && css !== null && (css.type === \"root\" || css.type === \"document\")) {\n            root2 = cleanMarks(css);\n        } else if (_instanceof(css, LazyResult2) || _instanceof(css, Result$2)) {\n            root2 = cleanMarks(css.root);\n            if (css.map) {\n                if (typeof opts.map === \"undefined\") opts.map = {};\n                if (!opts.map.inline) opts.map.inline = false;\n                opts.map.prev = css.map;\n            }\n        } else {\n            var parser2 = parse$2;\n            if (opts.syntax) parser2 = opts.syntax.parse;\n            if (opts.parser) parser2 = opts.parser;\n            if (parser2.parse) parser2 = parser2.parse;\n            try {\n                root2 = parser2(css, opts);\n            } catch (error) {\n                this.processed = true;\n                this.error = error;\n            }\n            if (root2 && !root2[my]) {\n                Container$1.rebuild(root2);\n            }\n        }\n        this.result = new Result$2(processor2, root2, opts);\n        this.helpers = _extends({}, postcss$2, {\n            postcss: postcss$2,\n            result: this.result\n        });\n        this.plugins = this.processor.plugins.map(function(plugin22) {\n            if ((typeof plugin22 === \"undefined\" ? \"undefined\" : _type_of(plugin22)) === \"object\" && plugin22.prepare) {\n                return _extends({}, plugin22, plugin22.prepare(_this.result));\n            } else {\n                return plugin22;\n            }\n        });\n    }\n    var _proto = LazyResult2.prototype;\n    _proto.async = function async() {\n        if (this.error) return Promise.reject(this.error);\n        if (this.processed) return Promise.resolve(this.result);\n        if (!this.processing) {\n            this.processing = this.runAsync();\n        }\n        return this.processing;\n    };\n    _proto.catch = function _catch(onRejected) {\n        return this.async().catch(onRejected);\n    };\n    _proto.finally = function _finally(onFinally) {\n        return this.async().then(onFinally, onFinally);\n    };\n    _proto.getAsyncError = function getAsyncError() {\n        throw new Error(\"Use process(css).then(cb) to work with async plugins\");\n    };\n    _proto.handleError = function handleError(error, node2) {\n        var plugin22 = this.result.lastPlugin;\n        try {\n            if (node2) node2.addToError(error);\n            this.error = error;\n            if (error.name === \"CssSyntaxError\" && !error.plugin) {\n                error.plugin = plugin22.postcssPlugin;\n                error.setMessage();\n            } else if (plugin22.postcssVersion) {\n                if (process.env.NODE_ENV !== \"production\") {\n                    var pluginName = plugin22.postcssPlugin;\n                    var pluginVer = plugin22.postcssVersion;\n                    var runtimeVer = this.result.processor.version;\n                    var a2 = pluginVer.split(\".\");\n                    var b = runtimeVer.split(\".\");\n                    if (a2[0] !== b[0] || parseInt(a2[1]) > parseInt(b[1])) {\n                        console.error(\"Unknown error from PostCSS plugin. Your current PostCSS version is \" + runtimeVer + \", but \" + pluginName + \" uses \" + pluginVer + \". Perhaps this is the source of the error below.\");\n                    }\n                }\n            }\n        } catch (err) {\n            if (console && console.error) console.error(err);\n        }\n        return error;\n    };\n    _proto.prepareVisitors = function prepareVisitors() {\n        var _this = this;\n        this.listeners = {};\n        var add = function(plugin22, type, cb) {\n            if (!_this.listeners[type]) _this.listeners[type] = [];\n            _this.listeners[type].push([\n                plugin22,\n                cb\n            ]);\n        };\n        for(var _iterator = _create_for_of_iterator_helper_loose(this.plugins), _step; !(_step = _iterator()).done;){\n            var plugin22 = _step.value;\n            if ((typeof plugin22 === \"undefined\" ? \"undefined\" : _type_of(plugin22)) === \"object\") {\n                for(var event in plugin22){\n                    if (!PLUGIN_PROPS[event] && /^[A-Z]/.test(event)) {\n                        throw new Error(\"Unknown event \" + event + \" in \" + plugin22.postcssPlugin + \". Try to update PostCSS (\" + this.processor.version + \" now).\");\n                    }\n                    if (!NOT_VISITORS[event]) {\n                        if (_type_of(plugin22[event]) === \"object\") {\n                            for(var filter in plugin22[event]){\n                                if (filter === \"*\") {\n                                    add(plugin22, event, plugin22[event][filter]);\n                                } else {\n                                    add(plugin22, event + \"-\" + filter.toLowerCase(), plugin22[event][filter]);\n                                }\n                            }\n                        } else if (typeof plugin22[event] === \"function\") {\n                            add(plugin22, event, plugin22[event]);\n                        }\n                    }\n                }\n            }\n        }\n        this.hasListener = Object.keys(this.listeners).length > 0;\n    };\n    _proto.runAsync = function runAsync() {\n        var _this = this;\n        return _async_to_generator(function() {\n            var i2, plugin22, promise, error, root2, stack, promise1, e2, node2, _loop, _iterator, _step;\n            return _ts_generator(this, function(_state) {\n                switch(_state.label){\n                    case 0:\n                        _this.plugin = 0;\n                        i2 = 0;\n                        _state.label = 1;\n                    case 1:\n                        if (!(i2 < _this.plugins.length)) return [\n                            3,\n                            6\n                        ];\n                        plugin22 = _this.plugins[i2];\n                        promise = _this.runOnRoot(plugin22);\n                        if (!isPromise(promise)) return [\n                            3,\n                            5\n                        ];\n                        _state.label = 2;\n                    case 2:\n                        _state.trys.push([\n                            2,\n                            4,\n                            ,\n                            5\n                        ]);\n                        return [\n                            4,\n                            promise\n                        ];\n                    case 3:\n                        _state.sent();\n                        return [\n                            3,\n                            5\n                        ];\n                    case 4:\n                        error = _state.sent();\n                        throw _this.handleError(error);\n                    case 5:\n                        i2++;\n                        return [\n                            3,\n                            1\n                        ];\n                    case 6:\n                        _this.prepareVisitors();\n                        if (!_this.hasListener) return [\n                            3,\n                            18\n                        ];\n                        root2 = _this.result.root;\n                        _state.label = 7;\n                    case 7:\n                        if (!!root2[isClean]) return [\n                            3,\n                            14\n                        ];\n                        root2[isClean] = true;\n                        stack = [\n                            toStack(root2)\n                        ];\n                        _state.label = 8;\n                    case 8:\n                        if (!(stack.length > 0)) return [\n                            3,\n                            13\n                        ];\n                        promise1 = _this.visitTick(stack);\n                        if (!isPromise(promise1)) return [\n                            3,\n                            12\n                        ];\n                        _state.label = 9;\n                    case 9:\n                        _state.trys.push([\n                            9,\n                            11,\n                            ,\n                            12\n                        ]);\n                        return [\n                            4,\n                            promise1\n                        ];\n                    case 10:\n                        _state.sent();\n                        return [\n                            3,\n                            12\n                        ];\n                    case 11:\n                        e2 = _state.sent();\n                        node2 = stack[stack.length - 1].node;\n                        throw _this.handleError(e2, node2);\n                    case 12:\n                        return [\n                            3,\n                            8\n                        ];\n                    case 13:\n                        return [\n                            3,\n                            7\n                        ];\n                    case 14:\n                        if (!_this.listeners.OnceExit) return [\n                            3,\n                            18\n                        ];\n                        _loop = function() {\n                            var _step_value, plugin22, visitor, roots, e2;\n                            return _ts_generator(this, function(_state) {\n                                switch(_state.label){\n                                    case 0:\n                                        _step_value = _step.value, plugin22 = _step_value[0], visitor = _step_value[1];\n                                        _this.result.lastPlugin = plugin22;\n                                        _state.label = 1;\n                                    case 1:\n                                        _state.trys.push([\n                                            1,\n                                            6,\n                                            ,\n                                            7\n                                        ]);\n                                        if (!(root2.type === \"document\")) return [\n                                            3,\n                                            3\n                                        ];\n                                        roots = root2.nodes.map(function(subRoot) {\n                                            return visitor(subRoot, _this.helpers);\n                                        });\n                                        return [\n                                            4,\n                                            Promise.all(roots)\n                                        ];\n                                    case 2:\n                                        _state.sent();\n                                        return [\n                                            3,\n                                            5\n                                        ];\n                                    case 3:\n                                        return [\n                                            4,\n                                            visitor(root2, _this.helpers)\n                                        ];\n                                    case 4:\n                                        _state.sent();\n                                        _state.label = 5;\n                                    case 5:\n                                        return [\n                                            3,\n                                            7\n                                        ];\n                                    case 6:\n                                        e2 = _state.sent();\n                                        throw _this.handleError(e2);\n                                    case 7:\n                                        return [\n                                            2\n                                        ];\n                                }\n                            });\n                        };\n                        _iterator = _create_for_of_iterator_helper_loose(_this.listeners.OnceExit);\n                        _state.label = 15;\n                    case 15:\n                        if (!!(_step = _iterator()).done) return [\n                            3,\n                            18\n                        ];\n                        return [\n                            5,\n                            _ts_values(_loop())\n                        ];\n                    case 16:\n                        _state.sent();\n                        _state.label = 17;\n                    case 17:\n                        return [\n                            3,\n                            15\n                        ];\n                    case 18:\n                        _this.processed = true;\n                        return [\n                            2,\n                            _this.stringify()\n                        ];\n                }\n            });\n        })();\n    };\n    _proto.runOnRoot = function runOnRoot(plugin22) {\n        var _this = this;\n        this.result.lastPlugin = plugin22;\n        try {\n            if ((typeof plugin22 === \"undefined\" ? \"undefined\" : _type_of(plugin22)) === \"object\" && plugin22.Once) {\n                if (this.result.root.type === \"document\") {\n                    var roots = this.result.root.nodes.map(function(root2) {\n                        return plugin22.Once(root2, _this.helpers);\n                    });\n                    if (isPromise(roots[0])) {\n                        return Promise.all(roots);\n                    }\n                    return roots;\n                }\n                return plugin22.Once(this.result.root, this.helpers);\n            } else if (typeof plugin22 === \"function\") {\n                return plugin22(this.result.root, this.result);\n            }\n        } catch (error) {\n            throw this.handleError(error);\n        }\n    };\n    _proto.stringify = function stringify() {\n        if (this.error) throw this.error;\n        if (this.stringified) return this.result;\n        this.stringified = true;\n        this.sync();\n        var opts = this.result.opts;\n        var str = stringify$2;\n        if (opts.syntax) str = opts.syntax.stringify;\n        if (opts.stringifier) str = opts.stringifier;\n        if (str.stringify) str = str.stringify;\n        var map = new MapGenerator$1(str, this.result.root, this.result.opts);\n        var data = map.generate();\n        this.result.css = data[0];\n        this.result.map = data[1];\n        return this.result;\n    };\n    _proto.sync = function sync() {\n        if (this.error) throw this.error;\n        if (this.processed) return this.result;\n        this.processed = true;\n        if (this.processing) {\n            throw this.getAsyncError();\n        }\n        for(var _iterator = _create_for_of_iterator_helper_loose(this.plugins), _step; !(_step = _iterator()).done;){\n            var plugin22 = _step.value;\n            var promise = this.runOnRoot(plugin22);\n            if (isPromise(promise)) {\n                throw this.getAsyncError();\n            }\n        }\n        this.prepareVisitors();\n        if (this.hasListener) {\n            var root2 = this.result.root;\n            while(!root2[isClean]){\n                root2[isClean] = true;\n                this.walkSync(root2);\n            }\n            if (this.listeners.OnceExit) {\n                if (root2.type === \"document\") {\n                    for(var _iterator1 = _create_for_of_iterator_helper_loose(root2.nodes), _step1; !(_step1 = _iterator1()).done;){\n                        var subRoot = _step1.value;\n                        this.visitSync(this.listeners.OnceExit, subRoot);\n                    }\n                } else {\n                    this.visitSync(this.listeners.OnceExit, root2);\n                }\n            }\n        }\n        return this.result;\n    };\n    _proto.then = function then(onFulfilled, onRejected) {\n        if (process.env.NODE_ENV !== \"production\") {\n            if (!(\"from\" in this.opts)) {\n                warnOnce$1(\"Without `from` option PostCSS could generate wrong source map and will not find Browserslist config. Set it to CSS file path or to `undefined` to prevent this warning.\");\n            }\n        }\n        return this.async().then(onFulfilled, onRejected);\n    };\n    _proto.toString = function toString() {\n        return this.css;\n    };\n    _proto.visitSync = function visitSync(visitors, node2) {\n        for(var _iterator = _create_for_of_iterator_helper_loose(visitors), _step; !(_step = _iterator()).done;){\n            var _step_value = _step.value, plugin22 = _step_value[0], visitor = _step_value[1];\n            this.result.lastPlugin = plugin22;\n            var promise = void 0;\n            try {\n                promise = visitor(node2, this.helpers);\n            } catch (e2) {\n                throw this.handleError(e2, node2.proxyOf);\n            }\n            if (node2.type !== \"root\" && node2.type !== \"document\" && !node2.parent) {\n                return true;\n            }\n            if (isPromise(promise)) {\n                throw this.getAsyncError();\n            }\n        }\n    };\n    _proto.visitTick = function visitTick(stack) {\n        var visit2 = stack[stack.length - 1];\n        var node2 = visit2.node, visitors = visit2.visitors;\n        if (node2.type !== \"root\" && node2.type !== \"document\" && !node2.parent) {\n            stack.pop();\n            return;\n        }\n        if (visitors.length > 0 && visit2.visitorIndex < visitors.length) {\n            var _visitors_visit2_visitorIndex = visitors[visit2.visitorIndex], plugin22 = _visitors_visit2_visitorIndex[0], visitor = _visitors_visit2_visitorIndex[1];\n            visit2.visitorIndex += 1;\n            if (visit2.visitorIndex === visitors.length) {\n                visit2.visitors = [];\n                visit2.visitorIndex = 0;\n            }\n            this.result.lastPlugin = plugin22;\n            try {\n                return visitor(node2.toProxy(), this.helpers);\n            } catch (e2) {\n                throw this.handleError(e2, node2);\n            }\n        }\n        if (visit2.iterator !== 0) {\n            var iterator = visit2.iterator;\n            var child;\n            while(child = node2.nodes[node2.indexes[iterator]]){\n                node2.indexes[iterator] += 1;\n                if (!child[isClean]) {\n                    child[isClean] = true;\n                    stack.push(toStack(child));\n                    return;\n                }\n            }\n            visit2.iterator = 0;\n            delete node2.indexes[iterator];\n        }\n        var events = visit2.events;\n        while(visit2.eventIndex < events.length){\n            var event = events[visit2.eventIndex];\n            visit2.eventIndex += 1;\n            if (event === CHILDREN) {\n                if (node2.nodes && node2.nodes.length) {\n                    node2[isClean] = true;\n                    visit2.iterator = node2.getIterator();\n                }\n                return;\n            } else if (this.listeners[event]) {\n                visit2.visitors = this.listeners[event];\n                return;\n            }\n        }\n        stack.pop();\n    };\n    _proto.walkSync = function walkSync(node2) {\n        var _this = this;\n        node2[isClean] = true;\n        var events = getEvents(node2);\n        for(var _iterator = _create_for_of_iterator_helper_loose(events), _step; !(_step = _iterator()).done;){\n            var event = _step.value;\n            if (event === CHILDREN) {\n                if (node2.nodes) {\n                    node2.each(function(child) {\n                        if (!child[isClean]) _this.walkSync(child);\n                    });\n                }\n            } else {\n                var visitors = this.listeners[event];\n                if (visitors) {\n                    if (this.visitSync(visitors, node2.toProxy())) return;\n                }\n            }\n        }\n    };\n    _proto.warnings = function warnings() {\n        return this.sync().warnings();\n    };\n    _create_class(LazyResult2, [\n        {\n            key: \"content\",\n            get: function get() {\n                return this.stringify().content;\n            }\n        },\n        {\n            key: \"css\",\n            get: function get() {\n                return this.stringify().css;\n            }\n        },\n        {\n            key: \"map\",\n            get: function get() {\n                return this.stringify().map;\n            }\n        },\n        {\n            key: \"messages\",\n            get: function get() {\n                return this.sync().messages;\n            }\n        },\n        {\n            key: \"opts\",\n            get: function get() {\n                return this.result.opts;\n            }\n        },\n        {\n            key: \"processor\",\n            get: function get() {\n                return this.result.processor;\n            }\n        },\n        {\n            key: \"root\",\n            get: function get() {\n                return this.sync().root;\n            }\n        },\n        {\n            key: Symbol.toStringTag,\n            get: function get() {\n                return \"LazyResult\";\n            }\n        }\n    ]);\n    return LazyResult2;\n}();\nLazyResult$2.registerPostcss = function(dependant) {\n    postcss$2 = dependant;\n};\nvar lazyResult = LazyResult$2;\nLazyResult$2.default = LazyResult$2;\nRoot$3.registerLazyResult(LazyResult$2);\nDocument$2.registerLazyResult(LazyResult$2);\nvar MapGenerator22 = mapGenerator;\nvar stringify$1 = stringify_1;\nvar warnOnce22 = warnOnce$2;\nvar parse$1 = parse_1;\nvar Result$1 = result;\nvar NoWorkResult$1 = /*#__PURE__*/ function() {\n    function NoWorkResult2(processor2, css, opts) {\n        css = css.toString();\n        this.stringified = false;\n        this._processor = processor2;\n        this._css = css;\n        this._opts = opts;\n        this._map = void 0;\n        var root2;\n        var str = stringify$1;\n        this.result = new Result$1(this._processor, root2, this._opts);\n        this.result.css = css;\n        var self = this;\n        Object.defineProperty(this.result, \"root\", {\n            get: function get() {\n                return self.root;\n            }\n        });\n        var map = new MapGenerator22(str, root2, this._opts, css);\n        if (map.isMap()) {\n            var _map_generate = map.generate(), generatedCSS = _map_generate[0], generatedMap = _map_generate[1];\n            if (generatedCSS) {\n                this.result.css = generatedCSS;\n            }\n            if (generatedMap) {\n                this.result.map = generatedMap;\n            }\n        } else {\n            map.clearAnnotation();\n            this.result.css = map.css;\n        }\n    }\n    var _proto = NoWorkResult2.prototype;\n    _proto.async = function async() {\n        if (this.error) return Promise.reject(this.error);\n        return Promise.resolve(this.result);\n    };\n    _proto.catch = function _catch(onRejected) {\n        return this.async().catch(onRejected);\n    };\n    _proto.finally = function _finally(onFinally) {\n        return this.async().then(onFinally, onFinally);\n    };\n    _proto.sync = function sync() {\n        if (this.error) throw this.error;\n        return this.result;\n    };\n    _proto.then = function then(onFulfilled, onRejected) {\n        if (process.env.NODE_ENV !== \"production\") {\n            if (!(\"from\" in this._opts)) {\n                warnOnce22(\"Without `from` option PostCSS could generate wrong source map and will not find Browserslist config. Set it to CSS file path or to `undefined` to prevent this warning.\");\n            }\n        }\n        return this.async().then(onFulfilled, onRejected);\n    };\n    _proto.toString = function toString() {\n        return this._css;\n    };\n    _proto.warnings = function warnings() {\n        return [];\n    };\n    _create_class(NoWorkResult2, [\n        {\n            key: \"content\",\n            get: function get() {\n                return this.result.css;\n            }\n        },\n        {\n            key: \"css\",\n            get: function get() {\n                return this.result.css;\n            }\n        },\n        {\n            key: \"map\",\n            get: function get() {\n                return this.result.map;\n            }\n        },\n        {\n            key: \"messages\",\n            get: function get() {\n                return [];\n            }\n        },\n        {\n            key: \"opts\",\n            get: function get() {\n                return this.result.opts;\n            }\n        },\n        {\n            key: \"processor\",\n            get: function get() {\n                return this.result.processor;\n            }\n        },\n        {\n            key: \"root\",\n            get: function get() {\n                if (this._root) {\n                    return this._root;\n                }\n                var root2;\n                var parser2 = parse$1;\n                try {\n                    root2 = parser2(this._css, this._opts);\n                } catch (error) {\n                    this.error = error;\n                }\n                if (this.error) {\n                    throw this.error;\n                } else {\n                    this._root = root2;\n                    return root2;\n                }\n            }\n        },\n        {\n            key: Symbol.toStringTag,\n            get: function get() {\n                return \"NoWorkResult\";\n            }\n        }\n    ]);\n    return NoWorkResult2;\n}();\nvar noWorkResult = NoWorkResult$1;\nNoWorkResult$1.default = NoWorkResult$1;\nvar NoWorkResult22 = noWorkResult;\nvar LazyResult$1 = lazyResult;\nvar Document$1 = document$1$2;\nvar Root$2 = root;\nvar Processor$1 = /*#__PURE__*/ function() {\n    function Processor2(plugins) {\n        if (plugins === void 0) plugins = [];\n        this.version = \"8.4.38\";\n        this.plugins = this.normalize(plugins);\n    }\n    var _proto = Processor2.prototype;\n    _proto.normalize = function normalize(plugins) {\n        var normalized = [];\n        for(var _iterator = _create_for_of_iterator_helper_loose(plugins), _step; !(_step = _iterator()).done;){\n            var i2 = _step.value;\n            if (i2.postcss === true) {\n                i2 = i2();\n            } else if (i2.postcss) {\n                i2 = i2.postcss;\n            }\n            if ((typeof i2 === \"undefined\" ? \"undefined\" : _type_of(i2)) === \"object\" && Array.isArray(i2.plugins)) {\n                normalized = normalized.concat(i2.plugins);\n            } else if ((typeof i2 === \"undefined\" ? \"undefined\" : _type_of(i2)) === \"object\" && i2.postcssPlugin) {\n                normalized.push(i2);\n            } else if (typeof i2 === \"function\") {\n                normalized.push(i2);\n            } else if ((typeof i2 === \"undefined\" ? \"undefined\" : _type_of(i2)) === \"object\" && (i2.parse || i2.stringify)) {\n                if (process.env.NODE_ENV !== \"production\") {\n                    throw new Error(\"PostCSS syntaxes cannot be used as plugins. Instead, please use one of the syntax/parser/stringifier options as outlined in your PostCSS runner documentation.\");\n                }\n            } else {\n                throw new Error(i2 + \" is not a PostCSS plugin\");\n            }\n        }\n        return normalized;\n    };\n    _proto.process = function process1(css, opts) {\n        if (opts === void 0) opts = {};\n        if (!this.plugins.length && !opts.parser && !opts.stringifier && !opts.syntax) {\n            return new NoWorkResult22(this, css, opts);\n        } else {\n            return new LazyResult$1(this, css, opts);\n        }\n    };\n    _proto.use = function use(plugin22) {\n        this.plugins = this.plugins.concat(this.normalize([\n            plugin22\n        ]));\n        return this;\n    };\n    return Processor2;\n}();\nvar processor = Processor$1;\nProcessor$1.default = Processor$1;\nRoot$2.registerProcessor(Processor$1);\nDocument$1.registerProcessor(Processor$1);\nvar Declaration$1 = declaration;\nvar PreviousMap22 = previousMap;\nvar Comment$1 = comment;\nvar AtRule$1 = atRule;\nvar Input$1 = input;\nvar Root$1 = root;\nvar Rule$1 = rule;\nfunction fromJSON$1(json, inputs) {\n    if (Array.isArray(json)) return json.map(function(n2) {\n        return fromJSON$1(n2);\n    });\n    var ownInputs = json.inputs, defaults = _object_without_properties_loose(json, [\n        \"inputs\"\n    ]);\n    if (ownInputs) {\n        inputs = [];\n        for(var _iterator = _create_for_of_iterator_helper_loose(ownInputs), _step; !(_step = _iterator()).done;){\n            var input2 = _step.value;\n            var inputHydrated = _extends({}, input2, {\n                __proto__: Input$1.prototype\n            });\n            if (inputHydrated.map) {\n                inputHydrated.map = _extends({}, inputHydrated.map, {\n                    __proto__: PreviousMap22.prototype\n                });\n            }\n            inputs.push(inputHydrated);\n        }\n    }\n    if (defaults.nodes) {\n        defaults.nodes = json.nodes.map(function(n2) {\n            return fromJSON$1(n2, inputs);\n        });\n    }\n    if (defaults.source) {\n        var _defaults_source = defaults.source, inputId = _defaults_source.inputId, source = _object_without_properties_loose(_defaults_source, [\n            \"inputId\"\n        ]);\n        defaults.source = source;\n        if (inputId != null) {\n            defaults.source.input = inputs[inputId];\n        }\n    }\n    if (defaults.type === \"root\") {\n        return new Root$1(defaults);\n    } else if (defaults.type === \"decl\") {\n        return new Declaration$1(defaults);\n    } else if (defaults.type === \"rule\") {\n        return new Rule$1(defaults);\n    } else if (defaults.type === \"comment\") {\n        return new Comment$1(defaults);\n    } else if (defaults.type === \"atrule\") {\n        return new AtRule$1(defaults);\n    } else {\n        throw new Error(\"Unknown node type: \" + json.type);\n    }\n}\nvar fromJSON_1 = fromJSON$1;\nfromJSON$1.default = fromJSON$1;\nvar CssSyntaxError22 = cssSyntaxError;\nvar Declaration22 = declaration;\nvar LazyResult22 = lazyResult;\nvar Container22 = container;\nvar Processor22 = processor;\nvar stringify = stringify_1;\nvar fromJSON = fromJSON_1;\nvar Document222 = document$1$2;\nvar Warning22 = warning;\nvar Comment22 = comment;\nvar AtRule22 = atRule;\nvar Result22 = result;\nvar Input22 = input;\nvar parse = parse_1;\nvar list = list_1;\nvar Rule22 = rule;\nvar Root22 = root;\nvar Node22 = node;\nfunction postcss() {\n    for(var _len = arguments.length, plugins = new Array(_len), _key = 0; _key < _len; _key++){\n        plugins[_key] = arguments[_key];\n    }\n    if (plugins.length === 1 && Array.isArray(plugins[0])) {\n        plugins = plugins[0];\n    }\n    return new Processor22(plugins);\n}\npostcss.plugin = function plugin2(name, initializer) {\n    var warningPrinted = false;\n    function creator() {\n        for(var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++){\n            args[_key] = arguments[_key];\n        }\n        if (console && console.warn && !warningPrinted) {\n            warningPrinted = true;\n            console.warn(name + \": postcss.plugin was deprecated. Migration guide:\\nhttps://evilmartians.com/chronicles/postcss-8-plugin-migration\");\n            if (process.env.LANG && process.env.LANG.startsWith(\"cn\")) {\n                console.warn(name + \": 里面 postcss.plugin 被弃用. 迁移指南:\\nhttps://www.w3ctech.com/topic/2226\");\n            }\n        }\n        var transformer = initializer.apply(void 0, [].concat(args));\n        transformer.postcssPlugin = name;\n        transformer.postcssVersion = new Processor22().version;\n        return transformer;\n    }\n    var cache;\n    Object.defineProperty(creator, \"postcss\", {\n        get: function get() {\n            if (!cache) cache = creator();\n            return cache;\n        }\n    });\n    creator.process = function(css, processOpts, pluginOpts) {\n        return postcss([\n            creator(pluginOpts)\n        ]).process(css, processOpts);\n    };\n    return creator;\n};\npostcss.stringify = stringify;\npostcss.parse = parse;\npostcss.fromJSON = fromJSON;\npostcss.list = list;\npostcss.comment = function(defaults) {\n    return new Comment22(defaults);\n};\npostcss.atRule = function(defaults) {\n    return new AtRule22(defaults);\n};\npostcss.decl = function(defaults) {\n    return new Declaration22(defaults);\n};\npostcss.rule = function(defaults) {\n    return new Rule22(defaults);\n};\npostcss.root = function(defaults) {\n    return new Root22(defaults);\n};\npostcss.document = function(defaults) {\n    return new Document222(defaults);\n};\npostcss.CssSyntaxError = CssSyntaxError22;\npostcss.Declaration = Declaration22;\npostcss.Container = Container22;\npostcss.Processor = Processor22;\npostcss.Document = Document222;\npostcss.Comment = Comment22;\npostcss.Warning = Warning22;\npostcss.AtRule = AtRule22;\npostcss.Result = Result22;\npostcss.Input = Input22;\npostcss.Rule = Rule22;\npostcss.Root = Root22;\npostcss.Node = Node22;\nLazyResult22.registerPostcss(postcss);\nvar postcss_1 = postcss;\npostcss.default = postcss;\nvar postcss$1 = /* @__PURE__ */ getDefaultExportFromCjs(postcss_1);\npostcss$1.stringify;\npostcss$1.fromJSON;\npostcss$1.plugin;\npostcss$1.parse;\npostcss$1.list;\npostcss$1.document;\npostcss$1.comment;\npostcss$1.atRule;\npostcss$1.rule;\npostcss$1.decl;\npostcss$1.root;\npostcss$1.CssSyntaxError;\npostcss$1.Declaration;\npostcss$1.Container;\npostcss$1.Processor;\npostcss$1.Document;\npostcss$1.Comment;\npostcss$1.Warning;\npostcss$1.AtRule;\npostcss$1.Result;\npostcss$1.Input;\npostcss$1.Rule;\npostcss$1.Root;\npostcss$1.Node;\nvar BaseRRNode = /*#__PURE__*/ function() {\n    function BaseRRNode() {\n        for(var _len = arguments.length, _args = new Array(_len), _key = 0; _key < _len; _key++){\n            _args[_key] = arguments[_key];\n        }\n        __publicField2(this, \"parentElement\", null);\n        __publicField2(this, \"parentNode\", null);\n        __publicField2(this, \"ownerDocument\");\n        __publicField2(this, \"firstChild\", null);\n        __publicField2(this, \"lastChild\", null);\n        __publicField2(this, \"previousSibling\", null);\n        __publicField2(this, \"nextSibling\", null);\n        __publicField2(this, \"ELEMENT_NODE\", 1);\n        __publicField2(this, \"TEXT_NODE\", 3);\n        __publicField2(this, \"nodeType\");\n        __publicField2(this, \"nodeName\");\n        __publicField2(this, \"RRNodeType\");\n    }\n    var _proto = BaseRRNode.prototype;\n    _proto.contains = function contains(node2) {\n        if (!_instanceof(node2, BaseRRNode)) return false;\n        else if (node2.ownerDocument !== this.ownerDocument) return false;\n        else if (node2 === this) return true;\n        while(node2.parentNode){\n            if (node2.parentNode === this) return true;\n            node2 = node2.parentNode;\n        }\n        return false;\n    };\n    // eslint-disable-next-line @typescript-eslint/no-unused-vars\n    _proto.appendChild = function appendChild(_newChild) {\n        throw new Error(\"RRDomException: Failed to execute 'appendChild' on 'RRNode': This RRNode type does not support this method.\");\n    };\n    // eslint-disable-next-line @typescript-eslint/no-unused-vars\n    _proto.insertBefore = function insertBefore(_newChild, _refChild) {\n        throw new Error(\"RRDomException: Failed to execute 'insertBefore' on 'RRNode': This RRNode type does not support this method.\");\n    };\n    // eslint-disable-next-line @typescript-eslint/no-unused-vars\n    _proto.removeChild = function removeChild(_node) {\n        throw new Error(\"RRDomException: Failed to execute 'removeChild' on 'RRNode': This RRNode type does not support this method.\");\n    };\n    _proto.toString = function toString() {\n        return \"RRNode\";\n    };\n    _create_class(BaseRRNode, [\n        {\n            key: \"childNodes\",\n            get: function get() {\n                var childNodes2 = [];\n                var childIterator = this.firstChild;\n                while(childIterator){\n                    childNodes2.push(childIterator);\n                    childIterator = childIterator.nextSibling;\n                }\n                return childNodes2;\n            }\n        }\n    ]);\n    return BaseRRNode;\n}();\nvar testableAccessors = {\n    Node: [\n        \"childNodes\",\n        \"parentNode\",\n        \"parentElement\",\n        \"textContent\"\n    ],\n    ShadowRoot: [\n        \"host\",\n        \"styleSheets\"\n    ],\n    Element: [\n        \"shadowRoot\",\n        \"querySelector\",\n        \"querySelectorAll\"\n    ],\n    MutationObserver: []\n};\nvar testableMethods = {\n    Node: [\n        \"contains\",\n        \"getRootNode\"\n    ],\n    ShadowRoot: [\n        \"getSelection\"\n    ],\n    Element: [],\n    MutationObserver: [\n        \"constructor\"\n    ]\n};\nvar untaintedBasePrototype = {};\nvar isAngularZonePresent = function() {\n    return !!globalThis.Zone;\n};\nfunction getUntaintedPrototype(key) {\n    if (untaintedBasePrototype[key]) return untaintedBasePrototype[key];\n    var defaultObj = globalThis[key];\n    var defaultPrototype = defaultObj.prototype;\n    var accessorNames = key in testableAccessors ? testableAccessors[key] : void 0;\n    var isUntaintedAccessors = Boolean(accessorNames && // @ts-expect-error 2345\n    accessorNames.every(function(accessor) {\n        var _a2, _b;\n        return Boolean((_b = (_a2 = Object.getOwnPropertyDescriptor(defaultPrototype, accessor)) == null ? void 0 : _a2.get) == null ? void 0 : _b.toString().includes(\"[native code]\"));\n    }));\n    var methodNames = key in testableMethods ? testableMethods[key] : void 0;\n    var isUntaintedMethods = Boolean(methodNames && methodNames.every(// @ts-expect-error 2345\n    function(method) {\n        var _a2;\n        return typeof defaultPrototype[method] === \"function\" && ((_a2 = defaultPrototype[method]) == null ? void 0 : _a2.toString().includes(\"[native code]\"));\n    }));\n    if (isUntaintedAccessors && isUntaintedMethods && !isAngularZonePresent()) {\n        untaintedBasePrototype[key] = defaultObj.prototype;\n        return defaultObj.prototype;\n    }\n    try {\n        var iframeEl = document.createElement(\"iframe\");\n        document.body.appendChild(iframeEl);\n        var win = iframeEl.contentWindow;\n        if (!win) return defaultObj.prototype;\n        var untaintedObject = win[key].prototype;\n        document.body.removeChild(iframeEl);\n        if (!untaintedObject) return defaultPrototype;\n        return untaintedBasePrototype[key] = untaintedObject;\n    } catch (e) {\n        return defaultPrototype;\n    }\n}\nvar untaintedAccessorCache = {};\nfunction getUntaintedAccessor(key, instance, accessor) {\n    var _a2;\n    var cacheKey = key + \".\" + String(accessor);\n    if (untaintedAccessorCache[cacheKey]) return untaintedAccessorCache[cacheKey].call(instance);\n    var untaintedPrototype = getUntaintedPrototype(key);\n    var untaintedAccessor = (_a2 = Object.getOwnPropertyDescriptor(untaintedPrototype, accessor)) == null ? void 0 : _a2.get;\n    if (!untaintedAccessor) return instance[accessor];\n    untaintedAccessorCache[cacheKey] = untaintedAccessor;\n    return untaintedAccessor.call(instance);\n}\nvar untaintedMethodCache = {};\nfunction getUntaintedMethod(key, instance, method) {\n    var cacheKey = key + \".\" + String(method);\n    if (untaintedMethodCache[cacheKey]) return untaintedMethodCache[cacheKey].bind(instance);\n    var untaintedPrototype = getUntaintedPrototype(key);\n    var untaintedMethod = untaintedPrototype[method];\n    if (typeof untaintedMethod !== \"function\") return instance[method];\n    untaintedMethodCache[cacheKey] = untaintedMethod;\n    return untaintedMethod.bind(instance);\n}\nfunction childNodes(n2) {\n    return getUntaintedAccessor(\"Node\", n2, \"childNodes\");\n}\nfunction parentNode(n2) {\n    return getUntaintedAccessor(\"Node\", n2, \"parentNode\");\n}\nfunction parentElement(n2) {\n    return getUntaintedAccessor(\"Node\", n2, \"parentElement\");\n}\nfunction textContent(n2) {\n    return getUntaintedAccessor(\"Node\", n2, \"textContent\");\n}\nfunction contains(n2, other) {\n    return getUntaintedMethod(\"Node\", n2, \"contains\")(other);\n}\nfunction getRootNode(n2) {\n    return getUntaintedMethod(\"Node\", n2, \"getRootNode\")();\n}\nfunction host(n2) {\n    if (!n2 || !(\"host\" in n2)) return null;\n    return getUntaintedAccessor(\"ShadowRoot\", n2, \"host\");\n}\nfunction styleSheets(n2) {\n    return n2.styleSheets;\n}\nfunction shadowRoot(n2) {\n    if (!n2 || !(\"shadowRoot\" in n2)) return null;\n    return getUntaintedAccessor(\"Element\", n2, \"shadowRoot\");\n}\nfunction querySelector(n2, selectors) {\n    return getUntaintedAccessor(\"Element\", n2, \"querySelector\")(selectors);\n}\nfunction querySelectorAll(n2, selectors) {\n    return getUntaintedAccessor(\"Element\", n2, \"querySelectorAll\")(selectors);\n}\nfunction mutationObserverCtor() {\n    return getUntaintedPrototype(\"MutationObserver\").constructor;\n}\nvar index = {\n    childNodes: childNodes,\n    parentNode: parentNode,\n    parentElement: parentElement,\n    textContent: textContent,\n    contains: contains,\n    getRootNode: getRootNode,\n    host: host,\n    styleSheets: styleSheets,\n    shadowRoot: shadowRoot,\n    querySelector: querySelector,\n    querySelectorAll: querySelectorAll,\n    mutationObserver: mutationObserverCtor\n};\nfunction on(type, fn, target) {\n    if (target === void 0) target = document;\n    var options = {\n        capture: true,\n        passive: true\n    };\n    target.addEventListener(type, fn, options);\n    return function() {\n        return target.removeEventListener(type, fn, options);\n    };\n}\nvar DEPARTED_MIRROR_ACCESS_WARNING = \"Please stop import mirror directly. Instead of that,\\r\\nnow you can use replayer.getMirror() to access the mirror instance of a replayer,\\r\\nor you can use record.mirror to access the mirror instance during recording.\";\nvar _mirror = {\n    map: {},\n    getId: function getId() {\n        console.error(DEPARTED_MIRROR_ACCESS_WARNING);\n        return -1;\n    },\n    getNode: function getNode() {\n        console.error(DEPARTED_MIRROR_ACCESS_WARNING);\n        return null;\n    },\n    removeNodeFromMap: function removeNodeFromMap() {\n        console.error(DEPARTED_MIRROR_ACCESS_WARNING);\n    },\n    has: function has() {\n        console.error(DEPARTED_MIRROR_ACCESS_WARNING);\n        return false;\n    },\n    reset: function reset() {\n        console.error(DEPARTED_MIRROR_ACCESS_WARNING);\n    }\n};\nif (typeof window !== \"undefined\" && window.Proxy && window.Reflect) {\n    _mirror = new Proxy(_mirror, {\n        get: function get(target, prop, receiver) {\n            if (prop === \"map\") {\n                console.error(DEPARTED_MIRROR_ACCESS_WARNING);\n            }\n            return Reflect.get(target, prop, receiver);\n        }\n    });\n}\nfunction throttle(func, wait, options) {\n    if (options === void 0) options = {};\n    var timeout = null;\n    var previous = 0;\n    return function() {\n        for(var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++){\n            args[_key] = arguments[_key];\n        }\n        var now = Date.now();\n        if (!previous && options.leading === false) {\n            previous = now;\n        }\n        var remaining = wait - (now - previous);\n        var context = this;\n        if (remaining <= 0 || remaining > wait) {\n            if (timeout) {\n                clearTimeout(timeout);\n                timeout = null;\n            }\n            previous = now;\n            func.apply(context, args);\n        } else if (!timeout && options.trailing !== false) {\n            timeout = setTimeout(function() {\n                previous = options.leading === false ? 0 : Date.now();\n                timeout = null;\n                func.apply(context, args);\n            }, remaining);\n        }\n    };\n}\nfunction hookSetter(target, key, d, isRevoked, win) {\n    if (win === void 0) win = window;\n    var original = win.Object.getOwnPropertyDescriptor(target, key);\n    win.Object.defineProperty(target, key, isRevoked ? d : {\n        set: function set(value) {\n            var _this = this;\n            setTimeout(function() {\n                d.set.call(_this, value);\n            }, 0);\n            if (original && original.set) {\n                original.set.call(this, value);\n            }\n        }\n    });\n    return function() {\n        return hookSetter(target, key, original || {}, true);\n    };\n}\nfunction patch(source, name, replacement) {\n    try {\n        if (!(name in source)) {\n            return function() {};\n        }\n        var original = source[name];\n        var wrapped = replacement(original);\n        if (typeof wrapped === \"function\") {\n            wrapped.prototype = wrapped.prototype || {};\n            Object.defineProperties(wrapped, {\n                __rrweb_original__: {\n                    enumerable: false,\n                    value: original\n                }\n            });\n        }\n        source[name] = wrapped;\n        return function() {\n            source[name] = original;\n        };\n    } catch (e) {\n        return function() {};\n    }\n}\nvar nowTimestamp = Date.now;\nif (!/* @__PURE__ */ /[1-9][0-9]{12}/.test(Date.now().toString())) {\n    nowTimestamp = function() {\n        return /* @__PURE__ */ new Date().getTime();\n    };\n}\nfunction getWindowScroll(win) {\n    var _a2, _b, _c, _d;\n    var doc = win.document;\n    return {\n        left: doc.scrollingElement ? doc.scrollingElement.scrollLeft : win.pageXOffset !== void 0 ? win.pageXOffset : doc.documentElement.scrollLeft || (doc == null ? void 0 : doc.body) && ((_a2 = index.parentElement(doc.body)) == null ? void 0 : _a2.scrollLeft) || ((_b = doc == null ? void 0 : doc.body) == null ? void 0 : _b.scrollLeft) || 0,\n        top: doc.scrollingElement ? doc.scrollingElement.scrollTop : win.pageYOffset !== void 0 ? win.pageYOffset : (doc == null ? void 0 : doc.documentElement.scrollTop) || (doc == null ? void 0 : doc.body) && ((_c = index.parentElement(doc.body)) == null ? void 0 : _c.scrollTop) || ((_d = doc == null ? void 0 : doc.body) == null ? void 0 : _d.scrollTop) || 0\n    };\n}\nfunction getWindowHeight() {\n    return window.innerHeight || document.documentElement && document.documentElement.clientHeight || document.body && document.body.clientHeight;\n}\nfunction getWindowWidth() {\n    return window.innerWidth || document.documentElement && document.documentElement.clientWidth || document.body && document.body.clientWidth;\n}\nfunction closestElementOfNode(node2) {\n    if (!node2) {\n        return null;\n    }\n    var el = node2.nodeType === node2.ELEMENT_NODE ? node2 : index.parentElement(node2);\n    return el;\n}\nfunction isBlocked(node2, blockClass, blockSelector, checkAncestors) {\n    if (!node2) {\n        return false;\n    }\n    var el = closestElementOfNode(node2);\n    if (!el) {\n        return false;\n    }\n    try {\n        if (typeof blockClass === \"string\") {\n            if (el.classList.contains(blockClass)) return true;\n            if (checkAncestors && el.closest(\".\" + blockClass) !== null) return true;\n        } else {\n            if (classMatchesRegex(el, blockClass, checkAncestors)) return true;\n        }\n    } catch (e2) {}\n    if (blockSelector) {\n        if (el.matches(blockSelector)) return true;\n        if (checkAncestors && el.closest(blockSelector) !== null) return true;\n    }\n    return false;\n}\nfunction isSerialized(n2, mirror2) {\n    return mirror2.getId(n2) !== -1;\n}\nfunction isIgnored(n2, mirror2, slimDOMOptions) {\n    if (n2.tagName === \"TITLE\" && slimDOMOptions.headTitleMutations) {\n        return true;\n    }\n    return mirror2.getId(n2) === IGNORED_NODE;\n}\nfunction isAncestorRemoved(target, mirror2) {\n    if (isShadowRoot(target)) {\n        return false;\n    }\n    var id = mirror2.getId(target);\n    if (!mirror2.has(id)) {\n        return true;\n    }\n    var parent = index.parentNode(target);\n    if (parent && parent.nodeType === target.DOCUMENT_NODE) {\n        return false;\n    }\n    if (!parent) {\n        return true;\n    }\n    return isAncestorRemoved(parent, mirror2);\n}\nfunction legacy_isTouchEvent(event) {\n    return Boolean(event.changedTouches);\n}\nfunction polyfill$1(win) {\n    if (win === void 0) win = window;\n    if (\"NodeList\" in win && !win.NodeList.prototype.forEach) {\n        win.NodeList.prototype.forEach = Array.prototype.forEach;\n    }\n    if (\"DOMTokenList\" in win && !win.DOMTokenList.prototype.forEach) {\n        win.DOMTokenList.prototype.forEach = Array.prototype.forEach;\n    }\n}\nfunction isSerializedIframe(n2, mirror2) {\n    return Boolean(n2.nodeName === \"IFRAME\" && mirror2.getMeta(n2));\n}\nfunction isSerializedStylesheet(n2, mirror2) {\n    return Boolean(n2.nodeName === \"LINK\" && n2.nodeType === n2.ELEMENT_NODE && n2.getAttribute && n2.getAttribute(\"rel\") === \"stylesheet\" && mirror2.getMeta(n2));\n}\nfunction hasShadowRoot(n2) {\n    if (!n2) return false;\n    if (_instanceof(n2, BaseRRNode) && \"shadowRoot\" in n2) {\n        return Boolean(n2.shadowRoot);\n    }\n    return Boolean(index.shadowRoot(n2));\n}\nvar StyleSheetMirror = /*#__PURE__*/ function() {\n    function StyleSheetMirror() {\n        __publicField(this, \"id\", 1);\n        __publicField(this, \"styleIDMap\", /* @__PURE__ */ new WeakMap());\n        __publicField(this, \"idStyleMap\", /* @__PURE__ */ new Map());\n    }\n    var _proto = StyleSheetMirror.prototype;\n    _proto.getId = function getId(stylesheet) {\n        var _this_styleIDMap_get;\n        return (_this_styleIDMap_get = this.styleIDMap.get(stylesheet)) != null ? _this_styleIDMap_get : -1;\n    };\n    _proto.has = function has(stylesheet) {\n        return this.styleIDMap.has(stylesheet);\n    };\n    /**\n   * @returns If the stylesheet is in the mirror, returns the id of the stylesheet. If not, return the new assigned id.\n   */ _proto.add = function add(stylesheet, id) {\n        if (this.has(stylesheet)) return this.getId(stylesheet);\n        var newId;\n        if (id === void 0) {\n            newId = this.id++;\n        } else newId = id;\n        this.styleIDMap.set(stylesheet, newId);\n        this.idStyleMap.set(newId, stylesheet);\n        return newId;\n    };\n    _proto.getStyle = function getStyle(id) {\n        return this.idStyleMap.get(id) || null;\n    };\n    _proto.reset = function reset() {\n        this.styleIDMap = /* @__PURE__ */ new WeakMap();\n        this.idStyleMap = /* @__PURE__ */ new Map();\n        this.id = 1;\n    };\n    _proto.generateId = function generateId() {\n        return this.id++;\n    };\n    return StyleSheetMirror;\n}();\nfunction getShadowHost(n2) {\n    var _a2;\n    var shadowHost = null;\n    if (\"getRootNode\" in n2 && ((_a2 = index.getRootNode(n2)) == null ? void 0 : _a2.nodeType) === Node.DOCUMENT_FRAGMENT_NODE && index.host(index.getRootNode(n2))) shadowHost = index.host(index.getRootNode(n2));\n    return shadowHost;\n}\nfunction getRootShadowHost(n2) {\n    var rootShadowHost = n2;\n    var shadowHost;\n    while(shadowHost = getShadowHost(rootShadowHost))rootShadowHost = shadowHost;\n    return rootShadowHost;\n}\nfunction shadowHostInDom(n2) {\n    var doc = n2.ownerDocument;\n    if (!doc) return false;\n    var shadowHost = getRootShadowHost(n2);\n    return index.contains(doc, shadowHost);\n}\nfunction inDom(n2) {\n    var doc = n2.ownerDocument;\n    if (!doc) return false;\n    return index.contains(doc, n2) || shadowHostInDom(n2);\n}\nvar EventType = /* @__PURE__ */ function(EventType2) {\n    EventType2[EventType2[\"DomContentLoaded\"] = 0] = \"DomContentLoaded\";\n    EventType2[EventType2[\"Load\"] = 1] = \"Load\";\n    EventType2[EventType2[\"FullSnapshot\"] = 2] = \"FullSnapshot\";\n    EventType2[EventType2[\"IncrementalSnapshot\"] = 3] = \"IncrementalSnapshot\";\n    EventType2[EventType2[\"Meta\"] = 4] = \"Meta\";\n    EventType2[EventType2[\"Custom\"] = 5] = \"Custom\";\n    EventType2[EventType2[\"Plugin\"] = 6] = \"Plugin\";\n    return EventType2;\n}(EventType || {});\nvar IncrementalSource = /* @__PURE__ */ function(IncrementalSource2) {\n    IncrementalSource2[IncrementalSource2[\"Mutation\"] = 0] = \"Mutation\";\n    IncrementalSource2[IncrementalSource2[\"MouseMove\"] = 1] = \"MouseMove\";\n    IncrementalSource2[IncrementalSource2[\"MouseInteraction\"] = 2] = \"MouseInteraction\";\n    IncrementalSource2[IncrementalSource2[\"Scroll\"] = 3] = \"Scroll\";\n    IncrementalSource2[IncrementalSource2[\"ViewportResize\"] = 4] = \"ViewportResize\";\n    IncrementalSource2[IncrementalSource2[\"Input\"] = 5] = \"Input\";\n    IncrementalSource2[IncrementalSource2[\"TouchMove\"] = 6] = \"TouchMove\";\n    IncrementalSource2[IncrementalSource2[\"MediaInteraction\"] = 7] = \"MediaInteraction\";\n    IncrementalSource2[IncrementalSource2[\"StyleSheetRule\"] = 8] = \"StyleSheetRule\";\n    IncrementalSource2[IncrementalSource2[\"CanvasMutation\"] = 9] = \"CanvasMutation\";\n    IncrementalSource2[IncrementalSource2[\"Font\"] = 10] = \"Font\";\n    IncrementalSource2[IncrementalSource2[\"Log\"] = 11] = \"Log\";\n    IncrementalSource2[IncrementalSource2[\"Drag\"] = 12] = \"Drag\";\n    IncrementalSource2[IncrementalSource2[\"StyleDeclaration\"] = 13] = \"StyleDeclaration\";\n    IncrementalSource2[IncrementalSource2[\"Selection\"] = 14] = \"Selection\";\n    IncrementalSource2[IncrementalSource2[\"AdoptedStyleSheet\"] = 15] = \"AdoptedStyleSheet\";\n    IncrementalSource2[IncrementalSource2[\"CustomElement\"] = 16] = \"CustomElement\";\n    return IncrementalSource2;\n}(IncrementalSource || {});\nvar MouseInteractions = /* @__PURE__ */ function(MouseInteractions2) {\n    MouseInteractions2[MouseInteractions2[\"MouseUp\"] = 0] = \"MouseUp\";\n    MouseInteractions2[MouseInteractions2[\"MouseDown\"] = 1] = \"MouseDown\";\n    MouseInteractions2[MouseInteractions2[\"Click\"] = 2] = \"Click\";\n    MouseInteractions2[MouseInteractions2[\"ContextMenu\"] = 3] = \"ContextMenu\";\n    MouseInteractions2[MouseInteractions2[\"DblClick\"] = 4] = \"DblClick\";\n    MouseInteractions2[MouseInteractions2[\"Focus\"] = 5] = \"Focus\";\n    MouseInteractions2[MouseInteractions2[\"Blur\"] = 6] = \"Blur\";\n    MouseInteractions2[MouseInteractions2[\"TouchStart\"] = 7] = \"TouchStart\";\n    MouseInteractions2[MouseInteractions2[\"TouchMove_Departed\"] = 8] = \"TouchMove_Departed\";\n    MouseInteractions2[MouseInteractions2[\"TouchEnd\"] = 9] = \"TouchEnd\";\n    MouseInteractions2[MouseInteractions2[\"TouchCancel\"] = 10] = \"TouchCancel\";\n    return MouseInteractions2;\n}(MouseInteractions || {});\nvar PointerTypes = /* @__PURE__ */ function(PointerTypes2) {\n    PointerTypes2[PointerTypes2[\"Mouse\"] = 0] = \"Mouse\";\n    PointerTypes2[PointerTypes2[\"Pen\"] = 1] = \"Pen\";\n    PointerTypes2[PointerTypes2[\"Touch\"] = 2] = \"Touch\";\n    return PointerTypes2;\n}(PointerTypes || {});\nvar CanvasContext = /* @__PURE__ */ function(CanvasContext2) {\n    CanvasContext2[CanvasContext2[\"2D\"] = 0] = \"2D\";\n    CanvasContext2[CanvasContext2[\"WebGL\"] = 1] = \"WebGL\";\n    CanvasContext2[CanvasContext2[\"WebGL2\"] = 2] = \"WebGL2\";\n    return CanvasContext2;\n}(CanvasContext || {});\nvar MediaInteractions = /* @__PURE__ */ function(MediaInteractions2) {\n    MediaInteractions2[MediaInteractions2[\"Play\"] = 0] = \"Play\";\n    MediaInteractions2[MediaInteractions2[\"Pause\"] = 1] = \"Pause\";\n    MediaInteractions2[MediaInteractions2[\"Seeked\"] = 2] = \"Seeked\";\n    MediaInteractions2[MediaInteractions2[\"VolumeChange\"] = 3] = \"VolumeChange\";\n    MediaInteractions2[MediaInteractions2[\"RateChange\"] = 4] = \"RateChange\";\n    return MediaInteractions2;\n}(MediaInteractions || {});\nvar NodeType = /* @__PURE__ */ function(NodeType2) {\n    NodeType2[NodeType2[\"Document\"] = 0] = \"Document\";\n    NodeType2[NodeType2[\"DocumentType\"] = 1] = \"DocumentType\";\n    NodeType2[NodeType2[\"Element\"] = 2] = \"Element\";\n    NodeType2[NodeType2[\"Text\"] = 3] = \"Text\";\n    NodeType2[NodeType2[\"CDATA\"] = 4] = \"CDATA\";\n    NodeType2[NodeType2[\"Comment\"] = 5] = \"Comment\";\n    return NodeType2;\n}(NodeType || {});\nfunction isNodeInLinkedList(n2) {\n    return \"__ln\" in n2;\n}\nvar DoubleLinkedList = /*#__PURE__*/ function() {\n    function DoubleLinkedList() {\n        __publicField(this, \"length\", 0);\n        __publicField(this, \"head\", null);\n        __publicField(this, \"tail\", null);\n    }\n    var _proto = DoubleLinkedList.prototype;\n    _proto.get = function get(position) {\n        if (position >= this.length) {\n            throw new Error(\"Position outside of list range\");\n        }\n        var current = this.head;\n        for(var index2 = 0; index2 < position; index2++){\n            current = (current == null ? void 0 : current.next) || null;\n        }\n        return current;\n    };\n    _proto.addNode = function addNode(n2) {\n        var node2 = {\n            value: n2,\n            previous: null,\n            next: null\n        };\n        n2.__ln = node2;\n        if (n2.previousSibling && isNodeInLinkedList(n2.previousSibling)) {\n            var current = n2.previousSibling.__ln.next;\n            node2.next = current;\n            node2.previous = n2.previousSibling.__ln;\n            n2.previousSibling.__ln.next = node2;\n            if (current) {\n                current.previous = node2;\n            }\n        } else if (n2.nextSibling && isNodeInLinkedList(n2.nextSibling) && n2.nextSibling.__ln.previous) {\n            var current1 = n2.nextSibling.__ln.previous;\n            node2.previous = current1;\n            node2.next = n2.nextSibling.__ln;\n            n2.nextSibling.__ln.previous = node2;\n            if (current1) {\n                current1.next = node2;\n            }\n        } else {\n            if (this.head) {\n                this.head.previous = node2;\n            }\n            node2.next = this.head;\n            this.head = node2;\n        }\n        if (node2.next === null) {\n            this.tail = node2;\n        }\n        this.length++;\n    };\n    _proto.removeNode = function removeNode(n2) {\n        var current = n2.__ln;\n        if (!this.head) {\n            return;\n        }\n        if (!current.previous) {\n            this.head = current.next;\n            if (this.head) {\n                this.head.previous = null;\n            } else {\n                this.tail = null;\n            }\n        } else {\n            current.previous.next = current.next;\n            if (current.next) {\n                current.next.previous = current.previous;\n            } else {\n                this.tail = current.previous;\n            }\n        }\n        if (n2.__ln) {\n            delete n2.__ln;\n        }\n        this.length--;\n    };\n    return DoubleLinkedList;\n}();\nvar moveKey = function(id, parentId) {\n    return id + \"@\" + parentId;\n};\nvar MutationBuffer = /*#__PURE__*/ function() {\n    function MutationBuffer() {\n        var _this = this;\n        __publicField(this, \"frozen\", false);\n        __publicField(this, \"locked\", false);\n        __publicField(this, \"texts\", []);\n        __publicField(this, \"attributes\", []);\n        __publicField(this, \"attributeMap\", /* @__PURE__ */ new WeakMap());\n        __publicField(this, \"removes\", []);\n        __publicField(this, \"mapRemoves\", []);\n        __publicField(this, \"movedMap\", {});\n        /**\n     * the browser MutationObserver emits multiple mutations after\n     * a delay for performance reasons, making tracing added nodes hard\n     * in our `processMutations` callback function.\n     * For example, if we append an element el_1 into body, and then append\n     * another element el_2 into el_1, these two mutations may be passed to the\n     * callback function together when the two operations were done.\n     * Generally we need to trace child nodes of newly added nodes, but in this\n     * case if we count el_2 as el_1's child node in the first mutation record,\n     * then we will count el_2 again in the second mutation record which was\n     * duplicated.\n     * To avoid of duplicate counting added nodes, we use a Set to store\n     * added nodes and its child nodes during iterate mutation records. Then\n     * collect added nodes from the Set which have no duplicate copy. But\n     * this also causes newly added nodes will not be serialized with id ASAP,\n     * which means all the id related calculation should be lazy too.\n     */ __publicField(this, \"addedSet\", /* @__PURE__ */ new Set());\n        __publicField(this, \"movedSet\", /* @__PURE__ */ new Set());\n        __publicField(this, \"droppedSet\", /* @__PURE__ */ new Set());\n        __publicField(this, \"removesSubTreeCache\", /* @__PURE__ */ new Set());\n        __publicField(this, \"mutationCb\");\n        __publicField(this, \"blockClass\");\n        __publicField(this, \"blockSelector\");\n        __publicField(this, \"maskTextClass\");\n        __publicField(this, \"maskTextSelector\");\n        __publicField(this, \"inlineStylesheet\");\n        __publicField(this, \"maskInputOptions\");\n        __publicField(this, \"maskTextFn\");\n        __publicField(this, \"maskInputFn\");\n        __publicField(this, \"keepIframeSrcFn\");\n        __publicField(this, \"recordCanvas\");\n        __publicField(this, \"inlineImages\");\n        __publicField(this, \"slimDOMOptions\");\n        __publicField(this, \"dataURLOptions\");\n        __publicField(this, \"doc\");\n        __publicField(this, \"mirror\");\n        __publicField(this, \"iframeManager\");\n        __publicField(this, \"stylesheetManager\");\n        __publicField(this, \"shadowDomManager\");\n        __publicField(this, \"canvasManager\");\n        __publicField(this, \"processedNodeManager\");\n        __publicField(this, \"unattachedDoc\");\n        __publicField(this, \"processMutations\", function(mutations) {\n            mutations.forEach(_this.processMutation);\n            _this.emit();\n        });\n        __publicField(this, \"emit\", function() {\n            if (_this.frozen || _this.locked) {\n                return;\n            }\n            var adds = [];\n            var addedIds = /* @__PURE__ */ new Set();\n            var addList = new DoubleLinkedList();\n            var getNextId = function(n2) {\n                var ns = n2;\n                var nextId = IGNORED_NODE;\n                while(nextId === IGNORED_NODE){\n                    ns = ns && ns.nextSibling;\n                    nextId = ns && _this.mirror.getId(ns);\n                }\n                return nextId;\n            };\n            var pushAdd = function(n2) {\n                var parent = index.parentNode(n2);\n                if (!parent || !inDom(n2)) {\n                    return;\n                }\n                var cssCaptured = false;\n                if (n2.nodeType === Node.TEXT_NODE) {\n                    var parentTag = parent.tagName;\n                    if (parentTag === \"TEXTAREA\") {\n                        return;\n                    } else if (parentTag === \"STYLE\" && _this.addedSet.has(parent)) {\n                        cssCaptured = true;\n                    }\n                }\n                var parentId = isShadowRoot(parent) ? _this.mirror.getId(getShadowHost(n2)) : _this.mirror.getId(parent);\n                var nextId = getNextId(n2);\n                if (parentId === -1 || nextId === -1) {\n                    return addList.addNode(n2);\n                }\n                var sn = serializeNodeWithId(n2, {\n                    doc: _this.doc,\n                    mirror: _this.mirror,\n                    blockClass: _this.blockClass,\n                    blockSelector: _this.blockSelector,\n                    maskTextClass: _this.maskTextClass,\n                    maskTextSelector: _this.maskTextSelector,\n                    skipChild: true,\n                    newlyAddedElement: true,\n                    inlineStylesheet: _this.inlineStylesheet,\n                    maskInputOptions: _this.maskInputOptions,\n                    maskTextFn: _this.maskTextFn,\n                    maskInputFn: _this.maskInputFn,\n                    slimDOMOptions: _this.slimDOMOptions,\n                    dataURLOptions: _this.dataURLOptions,\n                    recordCanvas: _this.recordCanvas,\n                    inlineImages: _this.inlineImages,\n                    onSerialize: function(currentN) {\n                        if (isSerializedIframe(currentN, _this.mirror)) {\n                            _this.iframeManager.addIframe(currentN);\n                        }\n                        if (isSerializedStylesheet(currentN, _this.mirror)) {\n                            _this.stylesheetManager.trackLinkElement(currentN);\n                        }\n                        if (hasShadowRoot(n2)) {\n                            _this.shadowDomManager.addShadowRoot(index.shadowRoot(n2), _this.doc);\n                        }\n                    },\n                    onIframeLoad: function(iframe, childSn) {\n                        _this.iframeManager.attachIframe(iframe, childSn);\n                        _this.shadowDomManager.observeAttachShadow(iframe);\n                    },\n                    onStylesheetLoad: function(link, childSn) {\n                        _this.stylesheetManager.attachLinkElement(link, childSn);\n                    },\n                    cssCaptured: cssCaptured\n                });\n                if (sn) {\n                    adds.push({\n                        parentId: parentId,\n                        nextId: nextId,\n                        node: sn\n                    });\n                    addedIds.add(sn.id);\n                }\n            };\n            while(_this.mapRemoves.length){\n                _this.mirror.removeNodeFromMap(_this.mapRemoves.shift());\n            }\n            for(var _iterator = _create_for_of_iterator_helper_loose(_this.movedSet), _step; !(_step = _iterator()).done;){\n                var n2 = _step.value;\n                if (isParentRemoved(_this.removesSubTreeCache, n2, _this.mirror) && !_this.movedSet.has(index.parentNode(n2))) {\n                    continue;\n                }\n                pushAdd(n2);\n            }\n            for(var _iterator1 = _create_for_of_iterator_helper_loose(_this.addedSet), _step1; !(_step1 = _iterator1()).done;){\n                var n21 = _step1.value;\n                if (!isAncestorInSet(_this.droppedSet, n21) && !isParentRemoved(_this.removesSubTreeCache, n21, _this.mirror)) {\n                    pushAdd(n21);\n                } else if (isAncestorInSet(_this.movedSet, n21)) {\n                    pushAdd(n21);\n                } else {\n                    _this.droppedSet.add(n21);\n                }\n            }\n            var candidate = null;\n            while(addList.length){\n                var node2 = null;\n                if (candidate) {\n                    var parentId = _this.mirror.getId(index.parentNode(candidate.value));\n                    var nextId = getNextId(candidate.value);\n                    if (parentId !== -1 && nextId !== -1) {\n                        node2 = candidate;\n                    }\n                }\n                if (!node2) {\n                    var tailNode = addList.tail;\n                    while(tailNode){\n                        var _node = tailNode;\n                        tailNode = tailNode.previous;\n                        if (_node) {\n                            var parentId1 = _this.mirror.getId(index.parentNode(_node.value));\n                            var nextId1 = getNextId(_node.value);\n                            if (nextId1 === -1) continue;\n                            else if (parentId1 !== -1) {\n                                node2 = _node;\n                                break;\n                            } else {\n                                var unhandledNode = _node.value;\n                                var parent = index.parentNode(unhandledNode);\n                                if (parent && parent.nodeType === Node.DOCUMENT_FRAGMENT_NODE) {\n                                    var shadowHost = index.host(parent);\n                                    var parentId2 = _this.mirror.getId(shadowHost);\n                                    if (parentId2 !== -1) {\n                                        node2 = _node;\n                                        break;\n                                    }\n                                }\n                            }\n                        }\n                    }\n                }\n                if (!node2) {\n                    while(addList.head){\n                        addList.removeNode(addList.head.value);\n                    }\n                    break;\n                }\n                candidate = node2.previous;\n                addList.removeNode(node2.value);\n                pushAdd(node2.value);\n            }\n            var payload = {\n                texts: _this.texts.map(function(text) {\n                    var n2 = text.node;\n                    var parent = index.parentNode(n2);\n                    if (parent && parent.tagName === \"TEXTAREA\") {\n                        _this.genTextAreaValueMutation(parent);\n                    }\n                    return {\n                        id: _this.mirror.getId(n2),\n                        value: text.value\n                    };\n                }).filter(function(text) {\n                    return !addedIds.has(text.id);\n                }).filter(function(text) {\n                    return _this.mirror.has(text.id);\n                }),\n                attributes: _this.attributes.map(function(attribute) {\n                    var attributes = attribute.attributes;\n                    if (typeof attributes.style === \"string\") {\n                        var diffAsStr = JSON.stringify(attribute.styleDiff);\n                        var unchangedAsStr = JSON.stringify(attribute._unchangedStyles);\n                        if (diffAsStr.length < attributes.style.length) {\n                            if ((diffAsStr + unchangedAsStr).split(\"var(\").length === attributes.style.split(\"var(\").length) {\n                                attributes.style = attribute.styleDiff;\n                            }\n                        }\n                    }\n                    return {\n                        id: _this.mirror.getId(attribute.node),\n                        attributes: attributes\n                    };\n                }).filter(function(attribute) {\n                    return !addedIds.has(attribute.id);\n                }).filter(function(attribute) {\n                    return _this.mirror.has(attribute.id);\n                }),\n                removes: _this.removes,\n                adds: adds\n            };\n            if (!payload.texts.length && !payload.attributes.length && !payload.removes.length && !payload.adds.length) {\n                return;\n            }\n            _this.texts = [];\n            _this.attributes = [];\n            _this.attributeMap = /* @__PURE__ */ new WeakMap();\n            _this.removes = [];\n            _this.addedSet = /* @__PURE__ */ new Set();\n            _this.movedSet = /* @__PURE__ */ new Set();\n            _this.droppedSet = /* @__PURE__ */ new Set();\n            _this.removesSubTreeCache = /* @__PURE__ */ new Set();\n            _this.movedMap = {};\n            _this.mutationCb(payload);\n        });\n        __publicField(this, \"genTextAreaValueMutation\", function(textarea) {\n            var item = _this.attributeMap.get(textarea);\n            if (!item) {\n                item = {\n                    node: textarea,\n                    attributes: {},\n                    styleDiff: {},\n                    _unchangedStyles: {}\n                };\n                _this.attributes.push(item);\n                _this.attributeMap.set(textarea, item);\n            }\n            item.attributes.value = Array.from(index.childNodes(textarea), function(cn) {\n                return index.textContent(cn) || \"\";\n            }).join(\"\");\n        });\n        __publicField(this, \"processMutation\", function(m) {\n            if (isIgnored(m.target, _this.mirror, _this.slimDOMOptions)) {\n                return;\n            }\n            switch(m.type){\n                case \"characterData\":\n                    {\n                        var value = index.textContent(m.target);\n                        if (!isBlocked(m.target, _this.blockClass, _this.blockSelector, false) && value !== m.oldValue) {\n                            _this.texts.push({\n                                value: needMaskingText(m.target, _this.maskTextClass, _this.maskTextSelector, true) && value ? _this.maskTextFn ? _this.maskTextFn(value, closestElementOfNode(m.target)) : value.replace(/[\\S]/g, \"*\") : value,\n                                node: m.target\n                            });\n                        }\n                        break;\n                    }\n                case \"attributes\":\n                    {\n                        var target = m.target;\n                        var attributeName = m.attributeName;\n                        var value1 = m.target.getAttribute(attributeName);\n                        if (attributeName === \"value\") {\n                            var type = getInputType(target);\n                            value1 = maskInputValue({\n                                element: target,\n                                maskInputOptions: _this.maskInputOptions,\n                                tagName: target.tagName,\n                                type: type,\n                                value: value1,\n                                maskInputFn: _this.maskInputFn\n                            });\n                        }\n                        if (isBlocked(m.target, _this.blockClass, _this.blockSelector, false) || value1 === m.oldValue) {\n                            return;\n                        }\n                        var item = _this.attributeMap.get(m.target);\n                        if (target.tagName === \"IFRAME\" && attributeName === \"src\" && !_this.keepIframeSrcFn(value1)) {\n                            if (!target.contentDocument) {\n                                attributeName = \"rr_src\";\n                            } else {\n                                return;\n                            }\n                        }\n                        if (!item) {\n                            item = {\n                                node: m.target,\n                                attributes: {},\n                                styleDiff: {},\n                                _unchangedStyles: {}\n                            };\n                            _this.attributes.push(item);\n                            _this.attributeMap.set(m.target, item);\n                        }\n                        if (attributeName === \"type\" && target.tagName === \"INPUT\" && (m.oldValue || \"\").toLowerCase() === \"password\") {\n                            target.setAttribute(\"data-rr-is-password\", \"true\");\n                        }\n                        if (!ignoreAttribute(target.tagName, attributeName)) {\n                            item.attributes[attributeName] = transformAttribute(_this.doc, toLowerCase(target.tagName), toLowerCase(attributeName), value1);\n                            if (attributeName === \"style\") {\n                                if (!_this.unattachedDoc) {\n                                    try {\n                                        _this.unattachedDoc = document.implementation.createHTMLDocument();\n                                    } catch (e2) {\n                                        _this.unattachedDoc = _this.doc;\n                                    }\n                                }\n                                var old = _this.unattachedDoc.createElement(\"span\");\n                                if (m.oldValue) {\n                                    old.setAttribute(\"style\", m.oldValue);\n                                }\n                                for(var _iterator = _create_for_of_iterator_helper_loose(Array.from(target.style)), _step; !(_step = _iterator()).done;){\n                                    var pname = _step.value;\n                                    var newValue = target.style.getPropertyValue(pname);\n                                    var newPriority = target.style.getPropertyPriority(pname);\n                                    if (newValue !== old.style.getPropertyValue(pname) || newPriority !== old.style.getPropertyPriority(pname)) {\n                                        if (newPriority === \"\") {\n                                            item.styleDiff[pname] = newValue;\n                                        } else {\n                                            item.styleDiff[pname] = [\n                                                newValue,\n                                                newPriority\n                                            ];\n                                        }\n                                    } else {\n                                        item._unchangedStyles[pname] = [\n                                            newValue,\n                                            newPriority\n                                        ];\n                                    }\n                                }\n                                for(var _iterator1 = _create_for_of_iterator_helper_loose(Array.from(old.style)), _step1; !(_step1 = _iterator1()).done;){\n                                    var pname1 = _step1.value;\n                                    if (target.style.getPropertyValue(pname1) === \"\") {\n                                        item.styleDiff[pname1] = false;\n                                    }\n                                }\n                            } else if (attributeName === \"open\" && target.tagName === \"DIALOG\") {\n                                if (target.matches(\"dialog:modal\")) {\n                                    item.attributes[\"rr_open_mode\"] = \"modal\";\n                                } else {\n                                    item.attributes[\"rr_open_mode\"] = \"non-modal\";\n                                }\n                            }\n                        }\n                        break;\n                    }\n                case \"childList\":\n                    {\n                        if (isBlocked(m.target, _this.blockClass, _this.blockSelector, true)) return;\n                        if (m.target.tagName === \"TEXTAREA\") {\n                            _this.genTextAreaValueMutation(m.target);\n                            return;\n                        }\n                        m.addedNodes.forEach(function(n2) {\n                            return _this.genAdds(n2, m.target);\n                        });\n                        m.removedNodes.forEach(function(n2) {\n                            var nodeId = _this.mirror.getId(n2);\n                            var parentId = isShadowRoot(m.target) ? _this.mirror.getId(index.host(m.target)) : _this.mirror.getId(m.target);\n                            if (isBlocked(m.target, _this.blockClass, _this.blockSelector, false) || isIgnored(n2, _this.mirror, _this.slimDOMOptions) || !isSerialized(n2, _this.mirror)) {\n                                return;\n                            }\n                            if (_this.addedSet.has(n2)) {\n                                deepDelete(_this.addedSet, n2);\n                                _this.droppedSet.add(n2);\n                            } else if (_this.addedSet.has(m.target) && nodeId === -1) ;\n                            else if (isAncestorRemoved(m.target, _this.mirror)) ;\n                            else if (_this.movedSet.has(n2) && _this.movedMap[moveKey(nodeId, parentId)]) {\n                                deepDelete(_this.movedSet, n2);\n                            } else {\n                                _this.removes.push({\n                                    parentId: parentId,\n                                    id: nodeId,\n                                    isShadow: isShadowRoot(m.target) && isNativeShadowDom(m.target) ? true : void 0\n                                });\n                                processRemoves(n2, _this.removesSubTreeCache);\n                            }\n                            _this.mapRemoves.push(n2);\n                        });\n                        break;\n                    }\n            }\n        });\n        /**\n     * Make sure you check if `n`'s parent is blocked before calling this function\n     * */ __publicField(this, \"genAdds\", function(n2, target) {\n            if (_this.processedNodeManager.inOtherBuffer(n2, _this)) return;\n            if (_this.addedSet.has(n2) || _this.movedSet.has(n2)) return;\n            if (_this.mirror.hasNode(n2)) {\n                if (isIgnored(n2, _this.mirror, _this.slimDOMOptions)) {\n                    return;\n                }\n                _this.movedSet.add(n2);\n                var targetId = null;\n                if (target && _this.mirror.hasNode(target)) {\n                    targetId = _this.mirror.getId(target);\n                }\n                if (targetId && targetId !== -1) {\n                    _this.movedMap[moveKey(_this.mirror.getId(n2), targetId)] = true;\n                }\n            } else {\n                _this.addedSet.add(n2);\n                _this.droppedSet.delete(n2);\n            }\n            if (!isBlocked(n2, _this.blockClass, _this.blockSelector, false)) {\n                index.childNodes(n2).forEach(function(childN) {\n                    return _this.genAdds(childN);\n                });\n                if (hasShadowRoot(n2)) {\n                    index.childNodes(index.shadowRoot(n2)).forEach(function(childN) {\n                        _this.processedNodeManager.add(childN, _this);\n                        _this.genAdds(childN, n2);\n                    });\n                }\n            }\n        });\n    }\n    var _proto = MutationBuffer.prototype;\n    _proto.init = function init(options) {\n        var _this = this;\n        [\n            \"mutationCb\",\n            \"blockClass\",\n            \"blockSelector\",\n            \"maskTextClass\",\n            \"maskTextSelector\",\n            \"inlineStylesheet\",\n            \"maskInputOptions\",\n            \"maskTextFn\",\n            \"maskInputFn\",\n            \"keepIframeSrcFn\",\n            \"recordCanvas\",\n            \"inlineImages\",\n            \"slimDOMOptions\",\n            \"dataURLOptions\",\n            \"doc\",\n            \"mirror\",\n            \"iframeManager\",\n            \"stylesheetManager\",\n            \"shadowDomManager\",\n            \"canvasManager\",\n            \"processedNodeManager\"\n        ].forEach(function(key) {\n            _this[key] = options[key];\n        });\n    };\n    _proto.freeze = function freeze() {\n        this.frozen = true;\n        this.canvasManager.freeze();\n    };\n    _proto.unfreeze = function unfreeze() {\n        this.frozen = false;\n        this.canvasManager.unfreeze();\n        this.emit();\n    };\n    _proto.isFrozen = function isFrozen() {\n        return this.frozen;\n    };\n    _proto.lock = function lock() {\n        this.locked = true;\n        this.canvasManager.lock();\n    };\n    _proto.unlock = function unlock() {\n        this.locked = false;\n        this.canvasManager.unlock();\n        this.emit();\n    };\n    _proto.reset = function reset() {\n        this.shadowDomManager.reset();\n        this.canvasManager.reset();\n    };\n    return MutationBuffer;\n}();\nfunction deepDelete(addsSet, n2) {\n    addsSet.delete(n2);\n    index.childNodes(n2).forEach(function(childN) {\n        return deepDelete(addsSet, childN);\n    });\n}\nfunction processRemoves(n2, cache) {\n    var queue = [\n        n2\n    ];\n    while(queue.length){\n        var next = queue.pop();\n        if (cache.has(next)) continue;\n        cache.add(next);\n        index.childNodes(next).forEach(function(n22) {\n            return queue.push(n22);\n        });\n    }\n    return;\n}\nfunction isParentRemoved(removes, n2, mirror2) {\n    if (removes.size === 0) return false;\n    return _isParentRemoved(removes, n2);\n}\nfunction _isParentRemoved(removes, n2, _mirror2) {\n    var node2 = index.parentNode(n2);\n    if (!node2) return false;\n    return removes.has(node2);\n}\nfunction isAncestorInSet(set, n2) {\n    if (set.size === 0) return false;\n    return _isAncestorInSet(set, n2);\n}\nfunction _isAncestorInSet(set, n2) {\n    var parent = index.parentNode(n2);\n    if (!parent) {\n        return false;\n    }\n    if (set.has(parent)) {\n        return true;\n    }\n    return _isAncestorInSet(set, parent);\n}\nvar errorHandler;\nfunction registerErrorHandler(handler) {\n    errorHandler = handler;\n}\nfunction unregisterErrorHandler() {\n    errorHandler = void 0;\n}\nvar callbackWrapper = function(cb) {\n    if (!errorHandler) {\n        return cb;\n    }\n    var rrwebWrapped = function() {\n        for(var _len = arguments.length, rest = new Array(_len), _key = 0; _key < _len; _key++){\n            rest[_key] = arguments[_key];\n        }\n        try {\n            return cb.apply(void 0, [].concat(rest));\n        } catch (error) {\n            if (errorHandler && errorHandler(error) === true) {\n                return;\n            }\n            throw error;\n        }\n    };\n    return rrwebWrapped;\n};\nvar mutationBuffers = [];\nfunction getEventTarget(event) {\n    try {\n        if (\"composedPath\" in event) {\n            var path = event.composedPath();\n            if (path.length) {\n                return path[0];\n            }\n        } else if (\"path\" in event && event.path.length) {\n            return event.path[0];\n        }\n    } catch (e) {}\n    return event && event.target;\n}\nfunction initMutationObserver(options, rootEl) {\n    var mutationBuffer = new MutationBuffer();\n    mutationBuffers.push(mutationBuffer);\n    mutationBuffer.init(options);\n    var observer = new (mutationObserverCtor())(callbackWrapper(mutationBuffer.processMutations.bind(mutationBuffer)));\n    observer.observe(rootEl, {\n        attributes: true,\n        attributeOldValue: true,\n        characterData: true,\n        characterDataOldValue: true,\n        childList: true,\n        subtree: true\n    });\n    return observer;\n}\nfunction initMoveObserver(param) {\n    var mousemoveCb = param.mousemoveCb, sampling = param.sampling, doc = param.doc, mirror2 = param.mirror;\n    if (sampling.mousemove === false) {\n        return function() {};\n    }\n    var threshold = typeof sampling.mousemove === \"number\" ? sampling.mousemove : 50;\n    var callbackThreshold = typeof sampling.mousemoveCallback === \"number\" ? sampling.mousemoveCallback : 500;\n    var positions = [];\n    var timeBaseline;\n    var wrappedCb = throttle(callbackWrapper(function(source) {\n        var totalOffset = Date.now() - timeBaseline;\n        mousemoveCb(positions.map(function(p) {\n            p.timeOffset -= totalOffset;\n            return p;\n        }), source);\n        positions = [];\n        timeBaseline = null;\n    }), callbackThreshold);\n    var updatePosition = callbackWrapper(throttle(callbackWrapper(function(evt) {\n        var target = getEventTarget(evt);\n        var _ref = legacy_isTouchEvent(evt) ? evt.changedTouches[0] : evt, clientX = _ref.clientX, clientY = _ref.clientY;\n        if (!timeBaseline) {\n            timeBaseline = nowTimestamp();\n        }\n        positions.push({\n            x: clientX,\n            y: clientY,\n            id: mirror2.getId(target),\n            timeOffset: nowTimestamp() - timeBaseline\n        });\n        wrappedCb(typeof DragEvent !== \"undefined\" && _instanceof(evt, DragEvent) ? IncrementalSource.Drag : _instanceof(evt, MouseEvent) ? IncrementalSource.MouseMove : IncrementalSource.TouchMove);\n    }), threshold, {\n        trailing: false\n    }));\n    var handlers = [\n        on(\"mousemove\", updatePosition, doc),\n        on(\"touchmove\", updatePosition, doc),\n        on(\"drag\", updatePosition, doc)\n    ];\n    return callbackWrapper(function() {\n        handlers.forEach(function(h) {\n            return h();\n        });\n    });\n}\nfunction initMouseInteractionObserver(param) {\n    var mouseInteractionCb = param.mouseInteractionCb, doc = param.doc, mirror2 = param.mirror, blockClass = param.blockClass, blockSelector = param.blockSelector, sampling = param.sampling;\n    if (sampling.mouseInteraction === false) {\n        return function() {};\n    }\n    var disableMap = sampling.mouseInteraction === true || sampling.mouseInteraction === void 0 ? {} : sampling.mouseInteraction;\n    var handlers = [];\n    var currentPointerType = null;\n    var getHandler = function(eventKey) {\n        return function(event) {\n            var target = getEventTarget(event);\n            if (isBlocked(target, blockClass, blockSelector, true)) {\n                return;\n            }\n            var pointerType = null;\n            var thisEventKey = eventKey;\n            if (\"pointerType\" in event) {\n                switch(event.pointerType){\n                    case \"mouse\":\n                        pointerType = PointerTypes.Mouse;\n                        break;\n                    case \"touch\":\n                        pointerType = PointerTypes.Touch;\n                        break;\n                    case \"pen\":\n                        pointerType = PointerTypes.Pen;\n                        break;\n                }\n                if (pointerType === PointerTypes.Touch) {\n                    if (MouseInteractions[eventKey] === MouseInteractions.MouseDown) {\n                        thisEventKey = \"TouchStart\";\n                    } else if (MouseInteractions[eventKey] === MouseInteractions.MouseUp) {\n                        thisEventKey = \"TouchEnd\";\n                    }\n                } else if (pointerType === PointerTypes.Pen) ;\n            } else if (legacy_isTouchEvent(event)) {\n                pointerType = PointerTypes.Touch;\n            }\n            if (pointerType !== null) {\n                currentPointerType = pointerType;\n                if (thisEventKey.startsWith(\"Touch\") && pointerType === PointerTypes.Touch || thisEventKey.startsWith(\"Mouse\") && pointerType === PointerTypes.Mouse) {\n                    pointerType = null;\n                }\n            } else if (MouseInteractions[eventKey] === MouseInteractions.Click) {\n                pointerType = currentPointerType;\n                currentPointerType = null;\n            }\n            var e2 = legacy_isTouchEvent(event) ? event.changedTouches[0] : event;\n            if (!e2) {\n                return;\n            }\n            var id = mirror2.getId(target);\n            var clientX = e2.clientX, clientY = e2.clientY;\n            callbackWrapper(mouseInteractionCb)(_extends({\n                type: MouseInteractions[thisEventKey],\n                id: id,\n                x: clientX,\n                y: clientY\n            }, pointerType !== null && {\n                pointerType: pointerType\n            }));\n        };\n    };\n    Object.keys(MouseInteractions).filter(function(key) {\n        return Number.isNaN(Number(key)) && !key.endsWith(\"_Departed\") && disableMap[key] !== false;\n    }).forEach(function(eventKey) {\n        var eventName = toLowerCase(eventKey);\n        var handler = getHandler(eventKey);\n        if (window.PointerEvent) {\n            switch(MouseInteractions[eventKey]){\n                case MouseInteractions.MouseDown:\n                case MouseInteractions.MouseUp:\n                    eventName = eventName.replace(\"mouse\", \"pointer\");\n                    break;\n                case MouseInteractions.TouchStart:\n                case MouseInteractions.TouchEnd:\n                    return;\n            }\n        }\n        handlers.push(on(eventName, handler, doc));\n    });\n    return callbackWrapper(function() {\n        handlers.forEach(function(h) {\n            return h();\n        });\n    });\n}\nfunction initScrollObserver(param) {\n    var scrollCb = param.scrollCb, doc = param.doc, mirror2 = param.mirror, blockClass = param.blockClass, blockSelector = param.blockSelector, sampling = param.sampling;\n    var updatePosition = callbackWrapper(throttle(callbackWrapper(function(evt) {\n        var target = getEventTarget(evt);\n        if (!target || isBlocked(target, blockClass, blockSelector, true)) {\n            return;\n        }\n        var id = mirror2.getId(target);\n        if (target === doc && doc.defaultView) {\n            var scrollLeftTop = getWindowScroll(doc.defaultView);\n            scrollCb({\n                id: id,\n                x: scrollLeftTop.left,\n                y: scrollLeftTop.top\n            });\n        } else {\n            scrollCb({\n                id: id,\n                x: target.scrollLeft,\n                y: target.scrollTop\n            });\n        }\n    }), sampling.scroll || 100));\n    return on(\"scroll\", updatePosition, doc);\n}\nfunction initViewportResizeObserver(param, param1) {\n    var viewportResizeCb = param.viewportResizeCb;\n    var win = param1.win;\n    var lastH = -1;\n    var lastW = -1;\n    var updateDimension = callbackWrapper(throttle(callbackWrapper(function() {\n        var height = getWindowHeight();\n        var width = getWindowWidth();\n        if (lastH !== height || lastW !== width) {\n            viewportResizeCb({\n                width: Number(width),\n                height: Number(height)\n            });\n            lastH = height;\n            lastW = width;\n        }\n    }), 200));\n    return on(\"resize\", updateDimension, win);\n}\nvar INPUT_TAGS = [\n    \"INPUT\",\n    \"TEXTAREA\",\n    \"SELECT\"\n];\nvar lastInputValueMap = /* @__PURE__ */ new WeakMap();\nfunction initInputObserver(param) {\n    var inputCb = param.inputCb, doc = param.doc, mirror2 = param.mirror, blockClass = param.blockClass, blockSelector = param.blockSelector, ignoreClass = param.ignoreClass, ignoreSelector = param.ignoreSelector, maskInputOptions = param.maskInputOptions, maskInputFn = param.maskInputFn, sampling = param.sampling, userTriggeredOnInput = param.userTriggeredOnInput;\n    function eventHandler(event) {\n        var target = getEventTarget(event);\n        var userTriggered = event.isTrusted;\n        var tagName = target && target.tagName;\n        if (target && tagName === \"OPTION\") {\n            target = index.parentElement(target);\n        }\n        if (!target || !tagName || INPUT_TAGS.indexOf(tagName) < 0 || isBlocked(target, blockClass, blockSelector, true)) {\n            return;\n        }\n        if (target.classList.contains(ignoreClass) || ignoreSelector && target.matches(ignoreSelector)) {\n            return;\n        }\n        var text = target.value;\n        var isChecked = false;\n        var type = getInputType(target) || \"\";\n        if (type === \"radio\" || type === \"checkbox\") {\n            isChecked = target.checked;\n        } else if (maskInputOptions[tagName.toLowerCase()] || maskInputOptions[type]) {\n            text = maskInputValue({\n                element: target,\n                maskInputOptions: maskInputOptions,\n                tagName: tagName,\n                type: type,\n                value: text,\n                maskInputFn: maskInputFn\n            });\n        }\n        cbWithDedup(target, userTriggeredOnInput ? {\n            text: text,\n            isChecked: isChecked,\n            userTriggered: userTriggered\n        } : {\n            text: text,\n            isChecked: isChecked\n        });\n        var name = target.name;\n        if (type === \"radio\" && name && isChecked) {\n            doc.querySelectorAll('input[type=\"radio\"][name=\"' + name + '\"]').forEach(function(el) {\n                if (el !== target) {\n                    var text2 = el.value;\n                    cbWithDedup(el, userTriggeredOnInput ? {\n                        text: text2,\n                        isChecked: !isChecked,\n                        userTriggered: false\n                    } : {\n                        text: text2,\n                        isChecked: !isChecked\n                    });\n                }\n            });\n        }\n    }\n    function cbWithDedup(target, v2) {\n        var lastInputValue = lastInputValueMap.get(target);\n        if (!lastInputValue || lastInputValue.text !== v2.text || lastInputValue.isChecked !== v2.isChecked) {\n            lastInputValueMap.set(target, v2);\n            var id = mirror2.getId(target);\n            callbackWrapper(inputCb)(_extends({}, v2, {\n                id: id\n            }));\n        }\n    }\n    var events = sampling.input === \"last\" ? [\n        \"change\"\n    ] : [\n        \"input\",\n        \"change\"\n    ];\n    var handlers = events.map(function(eventName) {\n        return on(eventName, callbackWrapper(eventHandler), doc);\n    });\n    var currentWindow = doc.defaultView;\n    if (!currentWindow) {\n        return function() {\n            handlers.forEach(function(h) {\n                return h();\n            });\n        };\n    }\n    var propertyDescriptor = currentWindow.Object.getOwnPropertyDescriptor(currentWindow.HTMLInputElement.prototype, \"value\");\n    var hookProperties = [\n        [\n            currentWindow.HTMLInputElement.prototype,\n            \"value\"\n        ],\n        [\n            currentWindow.HTMLInputElement.prototype,\n            \"checked\"\n        ],\n        [\n            currentWindow.HTMLSelectElement.prototype,\n            \"value\"\n        ],\n        [\n            currentWindow.HTMLTextAreaElement.prototype,\n            \"value\"\n        ],\n        // Some UI library use selectedIndex to set select value\n        [\n            currentWindow.HTMLSelectElement.prototype,\n            \"selectedIndex\"\n        ],\n        [\n            currentWindow.HTMLOptionElement.prototype,\n            \"selected\"\n        ]\n    ];\n    if (propertyDescriptor && propertyDescriptor.set) {\n        var _handlers;\n        (_handlers = handlers).push.apply(_handlers, [].concat(hookProperties.map(function(p) {\n            return hookSetter(p[0], p[1], {\n                set: function set() {\n                    callbackWrapper(eventHandler)({\n                        target: this,\n                        isTrusted: false\n                    });\n                }\n            }, false, currentWindow);\n        })));\n    }\n    return callbackWrapper(function() {\n        handlers.forEach(function(h) {\n            return h();\n        });\n    });\n}\nfunction getNestedCSSRulePositions(rule2) {\n    var positions = [];\n    function recurse(childRule, pos) {\n        if (hasNestedCSSRule(\"CSSGroupingRule\") && _instanceof(childRule.parentRule, CSSGroupingRule) || hasNestedCSSRule(\"CSSMediaRule\") && _instanceof(childRule.parentRule, CSSMediaRule) || hasNestedCSSRule(\"CSSSupportsRule\") && _instanceof(childRule.parentRule, CSSSupportsRule) || hasNestedCSSRule(\"CSSConditionRule\") && _instanceof(childRule.parentRule, CSSConditionRule)) {\n            var rules2 = Array.from(childRule.parentRule.cssRules);\n            var index2 = rules2.indexOf(childRule);\n            pos.unshift(index2);\n        } else if (childRule.parentStyleSheet) {\n            var rules21 = Array.from(childRule.parentStyleSheet.cssRules);\n            var index21 = rules21.indexOf(childRule);\n            pos.unshift(index21);\n        }\n        return pos;\n    }\n    return recurse(rule2, positions);\n}\nfunction getIdAndStyleId(sheet, mirror2, styleMirror) {\n    var id, styleId;\n    if (!sheet) return {};\n    if (sheet.ownerNode) id = mirror2.getId(sheet.ownerNode);\n    else styleId = styleMirror.getId(sheet);\n    return {\n        styleId: styleId,\n        id: id\n    };\n}\nfunction initStyleSheetObserver(param, param1) {\n    var styleSheetRuleCb = param.styleSheetRuleCb, mirror2 = param.mirror, stylesheetManager = param.stylesheetManager;\n    var win = param1.win;\n    if (!win.CSSStyleSheet || !win.CSSStyleSheet.prototype) {\n        return function() {};\n    }\n    var insertRule = win.CSSStyleSheet.prototype.insertRule;\n    win.CSSStyleSheet.prototype.insertRule = new Proxy(insertRule, {\n        apply: callbackWrapper(function(target, thisArg, argumentsList) {\n            var rule2 = argumentsList[0], index2 = argumentsList[1];\n            var _getIdAndStyleId = getIdAndStyleId(thisArg, mirror2, stylesheetManager.styleMirror), id = _getIdAndStyleId.id, styleId = _getIdAndStyleId.styleId;\n            if (id && id !== -1 || styleId && styleId !== -1) {\n                styleSheetRuleCb({\n                    id: id,\n                    styleId: styleId,\n                    adds: [\n                        {\n                            rule: rule2,\n                            index: index2\n                        }\n                    ]\n                });\n            }\n            return target.apply(thisArg, argumentsList);\n        })\n    });\n    win.CSSStyleSheet.prototype.addRule = function(selector, styleBlock, index2) {\n        if (index2 === void 0) index2 = this.cssRules.length;\n        var rule2 = selector + \" { \" + styleBlock + \" }\";\n        return win.CSSStyleSheet.prototype.insertRule.apply(this, [\n            rule2,\n            index2\n        ]);\n    };\n    var deleteRule = win.CSSStyleSheet.prototype.deleteRule;\n    win.CSSStyleSheet.prototype.deleteRule = new Proxy(deleteRule, {\n        apply: callbackWrapper(function(target, thisArg, argumentsList) {\n            var index2 = argumentsList[0];\n            var _getIdAndStyleId = getIdAndStyleId(thisArg, mirror2, stylesheetManager.styleMirror), id = _getIdAndStyleId.id, styleId = _getIdAndStyleId.styleId;\n            if (id && id !== -1 || styleId && styleId !== -1) {\n                styleSheetRuleCb({\n                    id: id,\n                    styleId: styleId,\n                    removes: [\n                        {\n                            index: index2\n                        }\n                    ]\n                });\n            }\n            return target.apply(thisArg, argumentsList);\n        })\n    });\n    win.CSSStyleSheet.prototype.removeRule = function(index2) {\n        return win.CSSStyleSheet.prototype.deleteRule.apply(this, [\n            index2\n        ]);\n    };\n    var replace;\n    if (win.CSSStyleSheet.prototype.replace) {\n        replace = win.CSSStyleSheet.prototype.replace;\n        win.CSSStyleSheet.prototype.replace = new Proxy(replace, {\n            apply: callbackWrapper(function(target, thisArg, argumentsList) {\n                var text = argumentsList[0];\n                var _getIdAndStyleId = getIdAndStyleId(thisArg, mirror2, stylesheetManager.styleMirror), id = _getIdAndStyleId.id, styleId = _getIdAndStyleId.styleId;\n                if (id && id !== -1 || styleId && styleId !== -1) {\n                    styleSheetRuleCb({\n                        id: id,\n                        styleId: styleId,\n                        replace: text\n                    });\n                }\n                return target.apply(thisArg, argumentsList);\n            })\n        });\n    }\n    var replaceSync;\n    if (win.CSSStyleSheet.prototype.replaceSync) {\n        replaceSync = win.CSSStyleSheet.prototype.replaceSync;\n        win.CSSStyleSheet.prototype.replaceSync = new Proxy(replaceSync, {\n            apply: callbackWrapper(function(target, thisArg, argumentsList) {\n                var text = argumentsList[0];\n                var _getIdAndStyleId = getIdAndStyleId(thisArg, mirror2, stylesheetManager.styleMirror), id = _getIdAndStyleId.id, styleId = _getIdAndStyleId.styleId;\n                if (id && id !== -1 || styleId && styleId !== -1) {\n                    styleSheetRuleCb({\n                        id: id,\n                        styleId: styleId,\n                        replaceSync: text\n                    });\n                }\n                return target.apply(thisArg, argumentsList);\n            })\n        });\n    }\n    var supportedNestedCSSRuleTypes = {};\n    if (canMonkeyPatchNestedCSSRule(\"CSSGroupingRule\")) {\n        supportedNestedCSSRuleTypes.CSSGroupingRule = win.CSSGroupingRule;\n    } else {\n        if (canMonkeyPatchNestedCSSRule(\"CSSMediaRule\")) {\n            supportedNestedCSSRuleTypes.CSSMediaRule = win.CSSMediaRule;\n        }\n        if (canMonkeyPatchNestedCSSRule(\"CSSConditionRule\")) {\n            supportedNestedCSSRuleTypes.CSSConditionRule = win.CSSConditionRule;\n        }\n        if (canMonkeyPatchNestedCSSRule(\"CSSSupportsRule\")) {\n            supportedNestedCSSRuleTypes.CSSSupportsRule = win.CSSSupportsRule;\n        }\n    }\n    var unmodifiedFunctions = {};\n    Object.entries(supportedNestedCSSRuleTypes).forEach(function(param) {\n        var typeKey = param[0], type = param[1];\n        unmodifiedFunctions[typeKey] = {\n            // eslint-disable-next-line @typescript-eslint/unbound-method\n            insertRule: type.prototype.insertRule,\n            // eslint-disable-next-line @typescript-eslint/unbound-method\n            deleteRule: type.prototype.deleteRule\n        };\n        type.prototype.insertRule = new Proxy(unmodifiedFunctions[typeKey].insertRule, {\n            apply: callbackWrapper(function(target, thisArg, argumentsList) {\n                var rule2 = argumentsList[0], index2 = argumentsList[1];\n                var _getIdAndStyleId = getIdAndStyleId(thisArg.parentStyleSheet, mirror2, stylesheetManager.styleMirror), id = _getIdAndStyleId.id, styleId = _getIdAndStyleId.styleId;\n                if (id && id !== -1 || styleId && styleId !== -1) {\n                    styleSheetRuleCb({\n                        id: id,\n                        styleId: styleId,\n                        adds: [\n                            {\n                                rule: rule2,\n                                index: [].concat(getNestedCSSRulePositions(thisArg), [\n                                    index2 || 0\n                                ])\n                            }\n                        ]\n                    });\n                }\n                return target.apply(thisArg, argumentsList);\n            })\n        });\n        type.prototype.deleteRule = new Proxy(unmodifiedFunctions[typeKey].deleteRule, {\n            apply: callbackWrapper(function(target, thisArg, argumentsList) {\n                var index2 = argumentsList[0];\n                var _getIdAndStyleId = getIdAndStyleId(thisArg.parentStyleSheet, mirror2, stylesheetManager.styleMirror), id = _getIdAndStyleId.id, styleId = _getIdAndStyleId.styleId;\n                if (id && id !== -1 || styleId && styleId !== -1) {\n                    styleSheetRuleCb({\n                        id: id,\n                        styleId: styleId,\n                        removes: [\n                            {\n                                index: [].concat(getNestedCSSRulePositions(thisArg), [\n                                    index2\n                                ])\n                            }\n                        ]\n                    });\n                }\n                return target.apply(thisArg, argumentsList);\n            })\n        });\n    });\n    return callbackWrapper(function() {\n        win.CSSStyleSheet.prototype.insertRule = insertRule;\n        win.CSSStyleSheet.prototype.deleteRule = deleteRule;\n        replace && (win.CSSStyleSheet.prototype.replace = replace);\n        replaceSync && (win.CSSStyleSheet.prototype.replaceSync = replaceSync);\n        Object.entries(supportedNestedCSSRuleTypes).forEach(function(param) {\n            var typeKey = param[0], type = param[1];\n            type.prototype.insertRule = unmodifiedFunctions[typeKey].insertRule;\n            type.prototype.deleteRule = unmodifiedFunctions[typeKey].deleteRule;\n        });\n    });\n}\nfunction initAdoptedStyleSheetObserver(param, host2) {\n    var mirror2 = param.mirror, stylesheetManager = param.stylesheetManager;\n    var _a2, _b, _c;\n    var hostId = null;\n    if (host2.nodeName === \"#document\") hostId = mirror2.getId(host2);\n    else hostId = mirror2.getId(index.host(host2));\n    var patchTarget = host2.nodeName === \"#document\" ? (_a2 = host2.defaultView) == null ? void 0 : _a2.Document : (_c = (_b = host2.ownerDocument) == null ? void 0 : _b.defaultView) == null ? void 0 : _c.ShadowRoot;\n    var originalPropertyDescriptor = (patchTarget == null ? void 0 : patchTarget.prototype) ? Object.getOwnPropertyDescriptor(patchTarget == null ? void 0 : patchTarget.prototype, \"adoptedStyleSheets\") : void 0;\n    if (hostId === null || hostId === -1 || !patchTarget || !originalPropertyDescriptor) return function() {};\n    Object.defineProperty(host2, \"adoptedStyleSheets\", {\n        configurable: originalPropertyDescriptor.configurable,\n        enumerable: originalPropertyDescriptor.enumerable,\n        get: function get() {\n            var _a3;\n            return (_a3 = originalPropertyDescriptor.get) == null ? void 0 : _a3.call(this);\n        },\n        set: function set(sheets) {\n            var _a3;\n            var result2 = (_a3 = originalPropertyDescriptor.set) == null ? void 0 : _a3.call(this, sheets);\n            if (hostId !== null && hostId !== -1) {\n                try {\n                    stylesheetManager.adoptStyleSheets(sheets, hostId);\n                } catch (e2) {}\n            }\n            return result2;\n        }\n    });\n    return callbackWrapper(function() {\n        Object.defineProperty(host2, \"adoptedStyleSheets\", {\n            configurable: originalPropertyDescriptor.configurable,\n            enumerable: originalPropertyDescriptor.enumerable,\n            // eslint-disable-next-line @typescript-eslint/unbound-method\n            get: originalPropertyDescriptor.get,\n            // eslint-disable-next-line @typescript-eslint/unbound-method\n            set: originalPropertyDescriptor.set\n        });\n    });\n}\nfunction initStyleDeclarationObserver(param, param1) {\n    var styleDeclarationCb = param.styleDeclarationCb, mirror2 = param.mirror, ignoreCSSAttributes = param.ignoreCSSAttributes, stylesheetManager = param.stylesheetManager;\n    var win = param1.win;\n    var setProperty = win.CSSStyleDeclaration.prototype.setProperty;\n    win.CSSStyleDeclaration.prototype.setProperty = new Proxy(setProperty, {\n        apply: callbackWrapper(function(target, thisArg, argumentsList) {\n            var _a2;\n            var property = argumentsList[0], value = argumentsList[1], priority = argumentsList[2];\n            if (ignoreCSSAttributes.has(property)) {\n                return setProperty.apply(thisArg, [\n                    property,\n                    value,\n                    priority\n                ]);\n            }\n            var _getIdAndStyleId = getIdAndStyleId((_a2 = thisArg.parentRule) == null ? void 0 : _a2.parentStyleSheet, mirror2, stylesheetManager.styleMirror), id = _getIdAndStyleId.id, styleId = _getIdAndStyleId.styleId;\n            if (id && id !== -1 || styleId && styleId !== -1) {\n                styleDeclarationCb({\n                    id: id,\n                    styleId: styleId,\n                    set: {\n                        property: property,\n                        value: value,\n                        priority: priority\n                    },\n                    // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n                    index: getNestedCSSRulePositions(thisArg.parentRule)\n                });\n            }\n            return target.apply(thisArg, argumentsList);\n        })\n    });\n    var removeProperty = win.CSSStyleDeclaration.prototype.removeProperty;\n    win.CSSStyleDeclaration.prototype.removeProperty = new Proxy(removeProperty, {\n        apply: callbackWrapper(function(target, thisArg, argumentsList) {\n            var _a2;\n            var property = argumentsList[0];\n            if (ignoreCSSAttributes.has(property)) {\n                return removeProperty.apply(thisArg, [\n                    property\n                ]);\n            }\n            var _getIdAndStyleId = getIdAndStyleId((_a2 = thisArg.parentRule) == null ? void 0 : _a2.parentStyleSheet, mirror2, stylesheetManager.styleMirror), id = _getIdAndStyleId.id, styleId = _getIdAndStyleId.styleId;\n            if (id && id !== -1 || styleId && styleId !== -1) {\n                styleDeclarationCb({\n                    id: id,\n                    styleId: styleId,\n                    remove: {\n                        property: property\n                    },\n                    // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n                    index: getNestedCSSRulePositions(thisArg.parentRule)\n                });\n            }\n            return target.apply(thisArg, argumentsList);\n        })\n    });\n    return callbackWrapper(function() {\n        win.CSSStyleDeclaration.prototype.setProperty = setProperty;\n        win.CSSStyleDeclaration.prototype.removeProperty = removeProperty;\n    });\n}\nfunction initMediaInteractionObserver(param) {\n    var mediaInteractionCb = param.mediaInteractionCb, blockClass = param.blockClass, blockSelector = param.blockSelector, mirror2 = param.mirror, sampling = param.sampling, doc = param.doc;\n    var handler = callbackWrapper(function(type) {\n        return throttle(callbackWrapper(function(event) {\n            var target = getEventTarget(event);\n            if (!target || isBlocked(target, blockClass, blockSelector, true)) {\n                return;\n            }\n            var currentTime = target.currentTime, volume = target.volume, muted = target.muted, playbackRate = target.playbackRate, loop = target.loop;\n            mediaInteractionCb({\n                type: type,\n                id: mirror2.getId(target),\n                currentTime: currentTime,\n                volume: volume,\n                muted: muted,\n                playbackRate: playbackRate,\n                loop: loop\n            });\n        }), sampling.media || 500);\n    });\n    var handlers = [\n        on(\"play\", handler(MediaInteractions.Play), doc),\n        on(\"pause\", handler(MediaInteractions.Pause), doc),\n        on(\"seeked\", handler(MediaInteractions.Seeked), doc),\n        on(\"volumechange\", handler(MediaInteractions.VolumeChange), doc),\n        on(\"ratechange\", handler(MediaInteractions.RateChange), doc)\n    ];\n    return callbackWrapper(function() {\n        handlers.forEach(function(h) {\n            return h();\n        });\n    });\n}\nfunction initFontObserver(param) {\n    var fontCb = param.fontCb, doc = param.doc;\n    var win = doc.defaultView;\n    if (!win) {\n        return function() {};\n    }\n    var handlers = [];\n    var fontMap = /* @__PURE__ */ new WeakMap();\n    var originalFontFace = win.FontFace;\n    win.FontFace = function FontFace2(family, source, descriptors) {\n        var fontFace = new originalFontFace(family, source, descriptors);\n        fontMap.set(fontFace, {\n            family: family,\n            buffer: typeof source !== \"string\",\n            descriptors: descriptors,\n            fontSource: typeof source === \"string\" ? source : JSON.stringify(Array.from(new Uint8Array(source)))\n        });\n        return fontFace;\n    };\n    var restoreHandler = patch(doc.fonts, \"add\", function(original) {\n        return function(fontFace) {\n            setTimeout(callbackWrapper(function() {\n                var p = fontMap.get(fontFace);\n                if (p) {\n                    fontCb(p);\n                    fontMap.delete(fontFace);\n                }\n            }), 0);\n            return original.apply(this, [\n                fontFace\n            ]);\n        };\n    });\n    handlers.push(function() {\n        win.FontFace = originalFontFace;\n    });\n    handlers.push(restoreHandler);\n    return callbackWrapper(function() {\n        handlers.forEach(function(h) {\n            return h();\n        });\n    });\n}\nfunction initSelectionObserver(param) {\n    var doc = param.doc, mirror2 = param.mirror, blockClass = param.blockClass, blockSelector = param.blockSelector, selectionCb = param.selectionCb;\n    var collapsed = true;\n    var updateSelection = callbackWrapper(function() {\n        var selection = doc.getSelection();\n        if (!selection || collapsed && (selection == null ? void 0 : selection.isCollapsed)) return;\n        collapsed = selection.isCollapsed || false;\n        var ranges = [];\n        var count = selection.rangeCount || 0;\n        for(var i2 = 0; i2 < count; i2++){\n            var range = selection.getRangeAt(i2);\n            var startContainer = range.startContainer, startOffset = range.startOffset, endContainer = range.endContainer, endOffset = range.endOffset;\n            var blocked = isBlocked(startContainer, blockClass, blockSelector, true) || isBlocked(endContainer, blockClass, blockSelector, true);\n            if (blocked) continue;\n            ranges.push({\n                start: mirror2.getId(startContainer),\n                startOffset: startOffset,\n                end: mirror2.getId(endContainer),\n                endOffset: endOffset\n            });\n        }\n        selectionCb({\n            ranges: ranges\n        });\n    });\n    updateSelection();\n    return on(\"selectionchange\", updateSelection);\n}\nfunction initCustomElementObserver(param) {\n    var doc = param.doc, customElementCb = param.customElementCb;\n    var win = doc.defaultView;\n    if (!win || !win.customElements) return function() {};\n    var restoreHandler = patch(win.customElements, \"define\", function(original) {\n        return function(name, constructor, options) {\n            try {\n                customElementCb({\n                    define: {\n                        name: name\n                    }\n                });\n            } catch (e2) {\n                console.warn(\"Custom element callback failed for \" + name);\n            }\n            return original.apply(this, [\n                name,\n                constructor,\n                options\n            ]);\n        };\n    });\n    return restoreHandler;\n}\nfunction mergeHooks(o2, hooks) {\n    var mutationCb = o2.mutationCb, mousemoveCb = o2.mousemoveCb, mouseInteractionCb = o2.mouseInteractionCb, scrollCb = o2.scrollCb, viewportResizeCb = o2.viewportResizeCb, inputCb = o2.inputCb, mediaInteractionCb = o2.mediaInteractionCb, styleSheetRuleCb = o2.styleSheetRuleCb, styleDeclarationCb = o2.styleDeclarationCb, canvasMutationCb = o2.canvasMutationCb, fontCb = o2.fontCb, selectionCb = o2.selectionCb, customElementCb = o2.customElementCb;\n    o2.mutationCb = function() {\n        for(var _len = arguments.length, p = new Array(_len), _key = 0; _key < _len; _key++){\n            p[_key] = arguments[_key];\n        }\n        if (hooks.mutation) {\n            var _hooks;\n            (_hooks = hooks).mutation.apply(_hooks, [].concat(p));\n        }\n        mutationCb.apply(void 0, [].concat(p));\n    };\n    o2.mousemoveCb = function() {\n        for(var _len = arguments.length, p = new Array(_len), _key = 0; _key < _len; _key++){\n            p[_key] = arguments[_key];\n        }\n        if (hooks.mousemove) {\n            var _hooks;\n            (_hooks = hooks).mousemove.apply(_hooks, [].concat(p));\n        }\n        mousemoveCb.apply(void 0, [].concat(p));\n    };\n    o2.mouseInteractionCb = function() {\n        for(var _len = arguments.length, p = new Array(_len), _key = 0; _key < _len; _key++){\n            p[_key] = arguments[_key];\n        }\n        if (hooks.mouseInteraction) {\n            var _hooks;\n            (_hooks = hooks).mouseInteraction.apply(_hooks, [].concat(p));\n        }\n        mouseInteractionCb.apply(void 0, [].concat(p));\n    };\n    o2.scrollCb = function() {\n        for(var _len = arguments.length, p = new Array(_len), _key = 0; _key < _len; _key++){\n            p[_key] = arguments[_key];\n        }\n        if (hooks.scroll) {\n            var _hooks;\n            (_hooks = hooks).scroll.apply(_hooks, [].concat(p));\n        }\n        scrollCb.apply(void 0, [].concat(p));\n    };\n    o2.viewportResizeCb = function() {\n        for(var _len = arguments.length, p = new Array(_len), _key = 0; _key < _len; _key++){\n            p[_key] = arguments[_key];\n        }\n        if (hooks.viewportResize) {\n            var _hooks;\n            (_hooks = hooks).viewportResize.apply(_hooks, [].concat(p));\n        }\n        viewportResizeCb.apply(void 0, [].concat(p));\n    };\n    o2.inputCb = function() {\n        for(var _len = arguments.length, p = new Array(_len), _key = 0; _key < _len; _key++){\n            p[_key] = arguments[_key];\n        }\n        if (hooks.input) {\n            var _hooks;\n            (_hooks = hooks).input.apply(_hooks, [].concat(p));\n        }\n        inputCb.apply(void 0, [].concat(p));\n    };\n    o2.mediaInteractionCb = function() {\n        for(var _len = arguments.length, p = new Array(_len), _key = 0; _key < _len; _key++){\n            p[_key] = arguments[_key];\n        }\n        if (hooks.mediaInteaction) {\n            var _hooks;\n            (_hooks = hooks).mediaInteaction.apply(_hooks, [].concat(p));\n        }\n        mediaInteractionCb.apply(void 0, [].concat(p));\n    };\n    o2.styleSheetRuleCb = function() {\n        for(var _len = arguments.length, p = new Array(_len), _key = 0; _key < _len; _key++){\n            p[_key] = arguments[_key];\n        }\n        if (hooks.styleSheetRule) {\n            var _hooks;\n            (_hooks = hooks).styleSheetRule.apply(_hooks, [].concat(p));\n        }\n        styleSheetRuleCb.apply(void 0, [].concat(p));\n    };\n    o2.styleDeclarationCb = function() {\n        for(var _len = arguments.length, p = new Array(_len), _key = 0; _key < _len; _key++){\n            p[_key] = arguments[_key];\n        }\n        if (hooks.styleDeclaration) {\n            var _hooks;\n            (_hooks = hooks).styleDeclaration.apply(_hooks, [].concat(p));\n        }\n        styleDeclarationCb.apply(void 0, [].concat(p));\n    };\n    o2.canvasMutationCb = function() {\n        for(var _len = arguments.length, p = new Array(_len), _key = 0; _key < _len; _key++){\n            p[_key] = arguments[_key];\n        }\n        if (hooks.canvasMutation) {\n            var _hooks;\n            (_hooks = hooks).canvasMutation.apply(_hooks, [].concat(p));\n        }\n        canvasMutationCb.apply(void 0, [].concat(p));\n    };\n    o2.fontCb = function() {\n        for(var _len = arguments.length, p = new Array(_len), _key = 0; _key < _len; _key++){\n            p[_key] = arguments[_key];\n        }\n        if (hooks.font) {\n            var _hooks;\n            (_hooks = hooks).font.apply(_hooks, [].concat(p));\n        }\n        fontCb.apply(void 0, [].concat(p));\n    };\n    o2.selectionCb = function() {\n        for(var _len = arguments.length, p = new Array(_len), _key = 0; _key < _len; _key++){\n            p[_key] = arguments[_key];\n        }\n        if (hooks.selection) {\n            var _hooks;\n            (_hooks = hooks).selection.apply(_hooks, [].concat(p));\n        }\n        selectionCb.apply(void 0, [].concat(p));\n    };\n    o2.customElementCb = function() {\n        for(var _len = arguments.length, c2 = new Array(_len), _key = 0; _key < _len; _key++){\n            c2[_key] = arguments[_key];\n        }\n        if (hooks.customElement) {\n            var _hooks;\n            (_hooks = hooks).customElement.apply(_hooks, [].concat(c2));\n        }\n        customElementCb.apply(void 0, [].concat(c2));\n    };\n}\nfunction initObservers(o2, hooks) {\n    if (hooks === void 0) hooks = {};\n    var currentWindow = o2.doc.defaultView;\n    if (!currentWindow) {\n        return function() {};\n    }\n    mergeHooks(o2, hooks);\n    var mutationObserver;\n    if (o2.recordDOM) {\n        mutationObserver = initMutationObserver(o2, o2.doc);\n    }\n    var mousemoveHandler = initMoveObserver(o2);\n    var mouseInteractionHandler = initMouseInteractionObserver(o2);\n    var scrollHandler = initScrollObserver(o2);\n    var viewportResizeHandler = initViewportResizeObserver(o2, {\n        win: currentWindow\n    });\n    var inputHandler = initInputObserver(o2);\n    var mediaInteractionHandler = initMediaInteractionObserver(o2);\n    var styleSheetObserver = function() {};\n    var adoptedStyleSheetObserver = function() {};\n    var styleDeclarationObserver = function() {};\n    var fontObserver = function() {};\n    if (o2.recordDOM) {\n        styleSheetObserver = initStyleSheetObserver(o2, {\n            win: currentWindow\n        });\n        adoptedStyleSheetObserver = initAdoptedStyleSheetObserver(o2, o2.doc);\n        styleDeclarationObserver = initStyleDeclarationObserver(o2, {\n            win: currentWindow\n        });\n        if (o2.collectFonts) {\n            fontObserver = initFontObserver(o2);\n        }\n    }\n    var selectionObserver = initSelectionObserver(o2);\n    var customElementObserver = initCustomElementObserver(o2);\n    var pluginHandlers = [];\n    for(var _iterator = _create_for_of_iterator_helper_loose(o2.plugins), _step; !(_step = _iterator()).done;){\n        var plugin3 = _step.value;\n        pluginHandlers.push(plugin3.observer(plugin3.callback, currentWindow, plugin3.options));\n    }\n    return callbackWrapper(function() {\n        mutationBuffers.forEach(function(b) {\n            return b.reset();\n        });\n        mutationObserver == null ? void 0 : mutationObserver.disconnect();\n        mousemoveHandler();\n        mouseInteractionHandler();\n        scrollHandler();\n        viewportResizeHandler();\n        inputHandler();\n        mediaInteractionHandler();\n        styleSheetObserver();\n        adoptedStyleSheetObserver();\n        styleDeclarationObserver();\n        fontObserver();\n        selectionObserver();\n        customElementObserver();\n        pluginHandlers.forEach(function(h) {\n            return h();\n        });\n    });\n}\nfunction hasNestedCSSRule(prop) {\n    return typeof window[prop] !== \"undefined\";\n}\nfunction canMonkeyPatchNestedCSSRule(prop) {\n    return Boolean(typeof window[prop] !== \"undefined\" && // Note: Generally, this check _shouldn't_ be necessary\n    // However, in some scenarios (e.g. jsdom) this can sometimes fail, so we check for it here\n    window[prop].prototype && \"insertRule\" in window[prop].prototype && \"deleteRule\" in window[prop].prototype);\n}\nvar CrossOriginIframeMirror = /*#__PURE__*/ function() {\n    function CrossOriginIframeMirror(generateIdFn) {\n        __publicField(this, \"iframeIdToRemoteIdMap\", /* @__PURE__ */ new WeakMap());\n        __publicField(this, \"iframeRemoteIdToIdMap\", /* @__PURE__ */ new WeakMap());\n        this.generateIdFn = generateIdFn;\n    }\n    var _proto = CrossOriginIframeMirror.prototype;\n    _proto.getId = function getId(iframe, remoteId, idToRemoteMap, remoteToIdMap) {\n        var idToRemoteIdMap = idToRemoteMap || this.getIdToRemoteIdMap(iframe);\n        var remoteIdToIdMap = remoteToIdMap || this.getRemoteIdToIdMap(iframe);\n        var id = idToRemoteIdMap.get(remoteId);\n        if (!id) {\n            id = this.generateIdFn();\n            idToRemoteIdMap.set(remoteId, id);\n            remoteIdToIdMap.set(id, remoteId);\n        }\n        return id;\n    };\n    _proto.getIds = function getIds(iframe, remoteId) {\n        var _this = this;\n        var idToRemoteIdMap = this.getIdToRemoteIdMap(iframe);\n        var remoteIdToIdMap = this.getRemoteIdToIdMap(iframe);\n        return remoteId.map(function(id) {\n            return _this.getId(iframe, id, idToRemoteIdMap, remoteIdToIdMap);\n        });\n    };\n    _proto.getRemoteId = function getRemoteId(iframe, id, map) {\n        var remoteIdToIdMap = map || this.getRemoteIdToIdMap(iframe);\n        if (typeof id !== \"number\") return id;\n        var remoteId = remoteIdToIdMap.get(id);\n        if (!remoteId) return -1;\n        return remoteId;\n    };\n    _proto.getRemoteIds = function getRemoteIds(iframe, ids) {\n        var _this = this;\n        var remoteIdToIdMap = this.getRemoteIdToIdMap(iframe);\n        return ids.map(function(id) {\n            return _this.getRemoteId(iframe, id, remoteIdToIdMap);\n        });\n    };\n    _proto.reset = function reset(iframe) {\n        if (!iframe) {\n            this.iframeIdToRemoteIdMap = /* @__PURE__ */ new WeakMap();\n            this.iframeRemoteIdToIdMap = /* @__PURE__ */ new WeakMap();\n            return;\n        }\n        this.iframeIdToRemoteIdMap.delete(iframe);\n        this.iframeRemoteIdToIdMap.delete(iframe);\n    };\n    _proto.getIdToRemoteIdMap = function getIdToRemoteIdMap(iframe) {\n        var idToRemoteIdMap = this.iframeIdToRemoteIdMap.get(iframe);\n        if (!idToRemoteIdMap) {\n            idToRemoteIdMap = /* @__PURE__ */ new Map();\n            this.iframeIdToRemoteIdMap.set(iframe, idToRemoteIdMap);\n        }\n        return idToRemoteIdMap;\n    };\n    _proto.getRemoteIdToIdMap = function getRemoteIdToIdMap(iframe) {\n        var remoteIdToIdMap = this.iframeRemoteIdToIdMap.get(iframe);\n        if (!remoteIdToIdMap) {\n            remoteIdToIdMap = /* @__PURE__ */ new Map();\n            this.iframeRemoteIdToIdMap.set(iframe, remoteIdToIdMap);\n        }\n        return remoteIdToIdMap;\n    };\n    return CrossOriginIframeMirror;\n}();\nvar IframeManager = /*#__PURE__*/ function() {\n    function IframeManager(options) {\n        __publicField(this, \"iframes\", /* @__PURE__ */ new WeakMap());\n        __publicField(this, \"crossOriginIframeMap\", /* @__PURE__ */ new WeakMap());\n        __publicField(this, \"crossOriginIframeMirror\", new CrossOriginIframeMirror(genId));\n        __publicField(this, \"crossOriginIframeStyleMirror\");\n        __publicField(this, \"crossOriginIframeRootIdMap\", /* @__PURE__ */ new WeakMap());\n        __publicField(this, \"mirror\");\n        __publicField(this, \"mutationCb\");\n        __publicField(this, \"wrappedEmit\");\n        __publicField(this, \"loadListener\");\n        __publicField(this, \"stylesheetManager\");\n        __publicField(this, \"recordCrossOriginIframes\");\n        this.mutationCb = options.mutationCb;\n        this.wrappedEmit = options.wrappedEmit;\n        this.stylesheetManager = options.stylesheetManager;\n        this.recordCrossOriginIframes = options.recordCrossOriginIframes;\n        this.crossOriginIframeStyleMirror = new CrossOriginIframeMirror(this.stylesheetManager.styleMirror.generateId.bind(this.stylesheetManager.styleMirror));\n        this.mirror = options.mirror;\n        if (this.recordCrossOriginIframes) {\n            window.addEventListener(\"message\", this.handleMessage.bind(this));\n        }\n    }\n    var _proto = IframeManager.prototype;\n    _proto.addIframe = function addIframe(iframeEl) {\n        this.iframes.set(iframeEl, true);\n        if (iframeEl.contentWindow) this.crossOriginIframeMap.set(iframeEl.contentWindow, iframeEl);\n    };\n    _proto.addLoadListener = function addLoadListener(cb) {\n        this.loadListener = cb;\n    };\n    _proto.attachIframe = function attachIframe(iframeEl, childSn) {\n        var _a2, _b;\n        this.mutationCb({\n            adds: [\n                {\n                    parentId: this.mirror.getId(iframeEl),\n                    nextId: null,\n                    node: childSn\n                }\n            ],\n            removes: [],\n            texts: [],\n            attributes: [],\n            isAttachIframe: true\n        });\n        if (this.recordCrossOriginIframes) (_a2 = iframeEl.contentWindow) == null ? void 0 : _a2.addEventListener(\"message\", this.handleMessage.bind(this));\n        (_b = this.loadListener) == null ? void 0 : _b.call(this, iframeEl);\n        if (iframeEl.contentDocument && iframeEl.contentDocument.adoptedStyleSheets && iframeEl.contentDocument.adoptedStyleSheets.length > 0) this.stylesheetManager.adoptStyleSheets(iframeEl.contentDocument.adoptedStyleSheets, this.mirror.getId(iframeEl.contentDocument));\n    };\n    _proto.handleMessage = function handleMessage(message) {\n        var crossOriginMessageEvent = message;\n        if (crossOriginMessageEvent.data.type !== \"rrweb\" || // To filter out the rrweb messages which are forwarded by some sites.\n        crossOriginMessageEvent.origin !== crossOriginMessageEvent.data.origin) return;\n        var iframeSourceWindow = message.source;\n        if (!iframeSourceWindow) return;\n        var iframeEl = this.crossOriginIframeMap.get(message.source);\n        if (!iframeEl) return;\n        var transformedEvent = this.transformCrossOriginEvent(iframeEl, crossOriginMessageEvent.data.event);\n        if (transformedEvent) this.wrappedEmit(transformedEvent, crossOriginMessageEvent.data.isCheckout);\n    };\n    _proto.transformCrossOriginEvent = function transformCrossOriginEvent(iframeEl, e2) {\n        var _this = this;\n        var _a2;\n        switch(e2.type){\n            case EventType.FullSnapshot:\n                {\n                    this.crossOriginIframeMirror.reset(iframeEl);\n                    this.crossOriginIframeStyleMirror.reset(iframeEl);\n                    this.replaceIdOnNode(e2.data.node, iframeEl);\n                    var rootId = e2.data.node.id;\n                    this.crossOriginIframeRootIdMap.set(iframeEl, rootId);\n                    this.patchRootIdOnNode(e2.data.node, rootId);\n                    return {\n                        timestamp: e2.timestamp,\n                        type: EventType.IncrementalSnapshot,\n                        data: {\n                            source: IncrementalSource.Mutation,\n                            adds: [\n                                {\n                                    parentId: this.mirror.getId(iframeEl),\n                                    nextId: null,\n                                    node: e2.data.node\n                                }\n                            ],\n                            removes: [],\n                            texts: [],\n                            attributes: [],\n                            isAttachIframe: true\n                        }\n                    };\n                }\n            case EventType.Meta:\n            case EventType.Load:\n            case EventType.DomContentLoaded:\n                {\n                    return false;\n                }\n            case EventType.Plugin:\n                {\n                    return e2;\n                }\n            case EventType.Custom:\n                {\n                    this.replaceIds(e2.data.payload, iframeEl, [\n                        \"id\",\n                        \"parentId\",\n                        \"previousId\",\n                        \"nextId\"\n                    ]);\n                    return e2;\n                }\n            case EventType.IncrementalSnapshot:\n                {\n                    switch(e2.data.source){\n                        case IncrementalSource.Mutation:\n                            {\n                                e2.data.adds.forEach(function(n2) {\n                                    _this.replaceIds(n2, iframeEl, [\n                                        \"parentId\",\n                                        \"nextId\",\n                                        \"previousId\"\n                                    ]);\n                                    _this.replaceIdOnNode(n2.node, iframeEl);\n                                    var rootId = _this.crossOriginIframeRootIdMap.get(iframeEl);\n                                    rootId && _this.patchRootIdOnNode(n2.node, rootId);\n                                });\n                                e2.data.removes.forEach(function(n2) {\n                                    _this.replaceIds(n2, iframeEl, [\n                                        \"parentId\",\n                                        \"id\"\n                                    ]);\n                                });\n                                e2.data.attributes.forEach(function(n2) {\n                                    _this.replaceIds(n2, iframeEl, [\n                                        \"id\"\n                                    ]);\n                                });\n                                e2.data.texts.forEach(function(n2) {\n                                    _this.replaceIds(n2, iframeEl, [\n                                        \"id\"\n                                    ]);\n                                });\n                                return e2;\n                            }\n                        case IncrementalSource.Drag:\n                        case IncrementalSource.TouchMove:\n                        case IncrementalSource.MouseMove:\n                            {\n                                e2.data.positions.forEach(function(p) {\n                                    _this.replaceIds(p, iframeEl, [\n                                        \"id\"\n                                    ]);\n                                });\n                                return e2;\n                            }\n                        case IncrementalSource.ViewportResize:\n                            {\n                                return false;\n                            }\n                        case IncrementalSource.MediaInteraction:\n                        case IncrementalSource.MouseInteraction:\n                        case IncrementalSource.Scroll:\n                        case IncrementalSource.CanvasMutation:\n                        case IncrementalSource.Input:\n                            {\n                                this.replaceIds(e2.data, iframeEl, [\n                                    \"id\"\n                                ]);\n                                return e2;\n                            }\n                        case IncrementalSource.StyleSheetRule:\n                        case IncrementalSource.StyleDeclaration:\n                            {\n                                this.replaceIds(e2.data, iframeEl, [\n                                    \"id\"\n                                ]);\n                                this.replaceStyleIds(e2.data, iframeEl, [\n                                    \"styleId\"\n                                ]);\n                                return e2;\n                            }\n                        case IncrementalSource.Font:\n                            {\n                                return e2;\n                            }\n                        case IncrementalSource.Selection:\n                            {\n                                e2.data.ranges.forEach(function(range) {\n                                    _this.replaceIds(range, iframeEl, [\n                                        \"start\",\n                                        \"end\"\n                                    ]);\n                                });\n                                return e2;\n                            }\n                        case IncrementalSource.AdoptedStyleSheet:\n                            {\n                                this.replaceIds(e2.data, iframeEl, [\n                                    \"id\"\n                                ]);\n                                this.replaceStyleIds(e2.data, iframeEl, [\n                                    \"styleIds\"\n                                ]);\n                                (_a2 = e2.data.styles) == null ? void 0 : _a2.forEach(function(style) {\n                                    _this.replaceStyleIds(style, iframeEl, [\n                                        \"styleId\"\n                                    ]);\n                                });\n                                return e2;\n                            }\n                    }\n                }\n        }\n        return false;\n    };\n    _proto.replace = function replace(iframeMirror, obj, iframeEl, keys) {\n        for(var _iterator = _create_for_of_iterator_helper_loose(keys), _step; !(_step = _iterator()).done;){\n            var key = _step.value;\n            if (!Array.isArray(obj[key]) && typeof obj[key] !== \"number\") continue;\n            if (Array.isArray(obj[key])) {\n                obj[key] = iframeMirror.getIds(iframeEl, obj[key]);\n            } else {\n                obj[key] = iframeMirror.getId(iframeEl, obj[key]);\n            }\n        }\n        return obj;\n    };\n    _proto.replaceIds = function replaceIds(obj, iframeEl, keys) {\n        return this.replace(this.crossOriginIframeMirror, obj, iframeEl, keys);\n    };\n    _proto.replaceStyleIds = function replaceStyleIds(obj, iframeEl, keys) {\n        return this.replace(this.crossOriginIframeStyleMirror, obj, iframeEl, keys);\n    };\n    _proto.replaceIdOnNode = function replaceIdOnNode(node2, iframeEl) {\n        var _this = this;\n        this.replaceIds(node2, iframeEl, [\n            \"id\",\n            \"rootId\"\n        ]);\n        if (\"childNodes\" in node2) {\n            node2.childNodes.forEach(function(child) {\n                _this.replaceIdOnNode(child, iframeEl);\n            });\n        }\n    };\n    _proto.patchRootIdOnNode = function patchRootIdOnNode(node2, rootId) {\n        var _this = this;\n        if (node2.type !== NodeType.Document && !node2.rootId) node2.rootId = rootId;\n        if (\"childNodes\" in node2) {\n            node2.childNodes.forEach(function(child) {\n                _this.patchRootIdOnNode(child, rootId);\n            });\n        }\n    };\n    return IframeManager;\n}();\nvar ShadowDomManager = /*#__PURE__*/ function() {\n    function ShadowDomManager(options) {\n        __publicField(this, \"shadowDoms\", /* @__PURE__ */ new WeakSet());\n        __publicField(this, \"mutationCb\");\n        __publicField(this, \"scrollCb\");\n        __publicField(this, \"bypassOptions\");\n        __publicField(this, \"mirror\");\n        __publicField(this, \"restoreHandlers\", []);\n        this.mutationCb = options.mutationCb;\n        this.scrollCb = options.scrollCb;\n        this.bypassOptions = options.bypassOptions;\n        this.mirror = options.mirror;\n        this.init();\n    }\n    var _proto = ShadowDomManager.prototype;\n    _proto.init = function init() {\n        this.reset();\n        this.patchAttachShadow(Element, document);\n    };\n    _proto.addShadowRoot = function addShadowRoot(shadowRoot2, doc) {\n        var _this = this;\n        if (!isNativeShadowDom(shadowRoot2)) return;\n        if (this.shadowDoms.has(shadowRoot2)) return;\n        this.shadowDoms.add(shadowRoot2);\n        var observer = initMutationObserver(_extends({}, this.bypassOptions, {\n            doc: doc,\n            mutationCb: this.mutationCb,\n            mirror: this.mirror,\n            shadowDomManager: this\n        }), shadowRoot2);\n        this.restoreHandlers.push(function() {\n            return observer.disconnect();\n        });\n        this.restoreHandlers.push(initScrollObserver(_extends({}, this.bypassOptions, {\n            scrollCb: this.scrollCb,\n            // https://gist.github.com/praveenpuglia/0832da687ed5a5d7a0907046c9ef1813\n            // scroll is not allowed to pass the boundary, so we need to listen the shadow document\n            doc: shadowRoot2,\n            mirror: this.mirror\n        })));\n        setTimeout(function() {\n            if (shadowRoot2.adoptedStyleSheets && shadowRoot2.adoptedStyleSheets.length > 0) _this.bypassOptions.stylesheetManager.adoptStyleSheets(shadowRoot2.adoptedStyleSheets, _this.mirror.getId(index.host(shadowRoot2)));\n            _this.restoreHandlers.push(initAdoptedStyleSheetObserver({\n                mirror: _this.mirror,\n                stylesheetManager: _this.bypassOptions.stylesheetManager\n            }, shadowRoot2));\n        }, 0);\n    };\n    /**\n   * Monkey patch 'attachShadow' of an IFrameElement to observe newly added shadow doms.\n   */ _proto.observeAttachShadow = function observeAttachShadow(iframeElement) {\n        if (!iframeElement.contentWindow || !iframeElement.contentDocument) return;\n        this.patchAttachShadow(iframeElement.contentWindow.Element, iframeElement.contentDocument);\n    };\n    /**\n   * Patch 'attachShadow' to observe newly added shadow doms.\n   */ _proto.patchAttachShadow = function patchAttachShadow(element, doc) {\n        var manager = this;\n        this.restoreHandlers.push(patch(element.prototype, \"attachShadow\", function(original) {\n            return function(option) {\n                var sRoot = original.call(this, option);\n                var shadowRootEl = index.shadowRoot(this);\n                if (shadowRootEl && inDom(this)) manager.addShadowRoot(shadowRootEl, doc);\n                return sRoot;\n            };\n        }));\n    };\n    _proto.reset = function reset() {\n        this.restoreHandlers.forEach(function(handler) {\n            try {\n                handler();\n            } catch (e2) {}\n        });\n        this.restoreHandlers = [];\n        this.shadowDoms = /* @__PURE__ */ new WeakSet();\n    };\n    return ShadowDomManager;\n}();\nvar chars = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\";\nvar lookup = typeof Uint8Array === \"undefined\" ? [] : new Uint8Array(256);\nfor(var i$1 = 0; i$1 < chars.length; i$1++){\n    lookup[chars.charCodeAt(i$1)] = i$1;\n}\nvar encode = function encode(arraybuffer) {\n    var bytes = new Uint8Array(arraybuffer), i2, len = bytes.length, base64 = \"\";\n    for(i2 = 0; i2 < len; i2 += 3){\n        base64 += chars[bytes[i2] >> 2];\n        base64 += chars[(bytes[i2] & 3) << 4 | bytes[i2 + 1] >> 4];\n        base64 += chars[(bytes[i2 + 1] & 15) << 2 | bytes[i2 + 2] >> 6];\n        base64 += chars[bytes[i2 + 2] & 63];\n    }\n    if (len % 3 === 2) {\n        base64 = base64.substring(0, base64.length - 1) + \"=\";\n    } else if (len % 3 === 1) {\n        base64 = base64.substring(0, base64.length - 2) + \"==\";\n    }\n    return base64;\n};\nvar canvasVarMap = /* @__PURE__ */ new Map();\nfunction variableListFor$1(ctx, ctor) {\n    var contextMap = canvasVarMap.get(ctx);\n    if (!contextMap) {\n        contextMap = /* @__PURE__ */ new Map();\n        canvasVarMap.set(ctx, contextMap);\n    }\n    if (!contextMap.has(ctor)) {\n        contextMap.set(ctor, []);\n    }\n    return contextMap.get(ctor);\n}\nvar saveWebGLVar = function(value, win, ctx) {\n    if (!value || !(isInstanceOfWebGLObject(value, win) || (typeof value === \"undefined\" ? \"undefined\" : _type_of(value)) === \"object\")) return;\n    var name = value.constructor.name;\n    var list2 = variableListFor$1(ctx, name);\n    var index2 = list2.indexOf(value);\n    if (index2 === -1) {\n        index2 = list2.length;\n        list2.push(value);\n    }\n    return index2;\n};\nfunction serializeArg(value, win, ctx) {\n    if (_instanceof(value, Array)) {\n        return value.map(function(arg) {\n            return serializeArg(arg, win, ctx);\n        });\n    } else if (value === null) {\n        return value;\n    } else if (_instanceof(value, Float32Array) || _instanceof(value, Float64Array) || _instanceof(value, Int32Array) || _instanceof(value, Uint32Array) || _instanceof(value, Uint8Array) || _instanceof(value, Uint16Array) || _instanceof(value, Int16Array) || _instanceof(value, Int8Array) || _instanceof(value, Uint8ClampedArray)) {\n        var name = value.constructor.name;\n        return {\n            rr_type: name,\n            args: [\n                Object.values(value)\n            ]\n        };\n    } else if (// SharedArrayBuffer disabled on most browsers due to spectre.\n    // More info: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/SharedArrayBuffer/SharedArrayBuffer\n    // value instanceof SharedArrayBuffer ||\n    _instanceof(value, ArrayBuffer)) {\n        var name1 = value.constructor.name;\n        var base64 = encode(value);\n        return {\n            rr_type: name1,\n            base64: base64\n        };\n    } else if (_instanceof(value, DataView)) {\n        var name2 = value.constructor.name;\n        return {\n            rr_type: name2,\n            args: [\n                serializeArg(value.buffer, win, ctx),\n                value.byteOffset,\n                value.byteLength\n            ]\n        };\n    } else if (_instanceof(value, HTMLImageElement)) {\n        var name3 = value.constructor.name;\n        var src = value.src;\n        return {\n            rr_type: name3,\n            src: src\n        };\n    } else if (_instanceof(value, HTMLCanvasElement)) {\n        var name4 = \"HTMLImageElement\";\n        var src1 = value.toDataURL();\n        return {\n            rr_type: name4,\n            src: src1\n        };\n    } else if (_instanceof(value, ImageData)) {\n        var name5 = value.constructor.name;\n        return {\n            rr_type: name5,\n            args: [\n                serializeArg(value.data, win, ctx),\n                value.width,\n                value.height\n            ]\n        };\n    } else if (isInstanceOfWebGLObject(value, win) || (typeof value === \"undefined\" ? \"undefined\" : _type_of(value)) === \"object\") {\n        var name6 = value.constructor.name;\n        var index2 = saveWebGLVar(value, win, ctx);\n        return {\n            rr_type: name6,\n            index: index2\n        };\n    }\n    return value;\n}\nvar serializeArgs = function(args, win, ctx) {\n    return args.map(function(arg) {\n        return serializeArg(arg, win, ctx);\n    });\n};\nvar isInstanceOfWebGLObject = function(value, win) {\n    var webGLConstructorNames = [\n        \"WebGLActiveInfo\",\n        \"WebGLBuffer\",\n        \"WebGLFramebuffer\",\n        \"WebGLProgram\",\n        \"WebGLRenderbuffer\",\n        \"WebGLShader\",\n        \"WebGLShaderPrecisionFormat\",\n        \"WebGLTexture\",\n        \"WebGLUniformLocation\",\n        \"WebGLVertexArrayObject\",\n        // In old Chrome versions, value won't be an instanceof WebGLVertexArrayObject.\n        \"WebGLVertexArrayObjectOES\"\n    ];\n    var supportedWebGLConstructorNames = webGLConstructorNames.filter(function(name) {\n        return typeof win[name] === \"function\";\n    });\n    return Boolean(supportedWebGLConstructorNames.find(function(name) {\n        return _instanceof(value, win[name]);\n    }));\n};\nfunction initCanvas2DMutationObserver(cb, win, blockClass, blockSelector) {\n    var _loop = function() {\n        var prop = _step.value;\n        try {\n            if (typeof win.CanvasRenderingContext2D.prototype[prop] !== \"function\") {\n                return \"continue\";\n            }\n            var restoreHandler = patch(win.CanvasRenderingContext2D.prototype, prop, function(original) {\n                return function() {\n                    var _this = this;\n                    for(var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++){\n                        args[_key] = arguments[_key];\n                    }\n                    if (!isBlocked(this.canvas, blockClass, blockSelector, true)) {\n                        setTimeout(function() {\n                            var recordArgs = serializeArgs(args, win, _this);\n                            cb(_this.canvas, {\n                                type: CanvasContext[\"2D\"],\n                                property: prop,\n                                args: recordArgs\n                            });\n                        }, 0);\n                    }\n                    return original.apply(this, args);\n                };\n            });\n            handlers.push(restoreHandler);\n        } catch (e) {\n            var hookHandler = hookSetter(win.CanvasRenderingContext2D.prototype, prop, {\n                set: function set(v2) {\n                    cb(this.canvas, {\n                        type: CanvasContext[\"2D\"],\n                        property: prop,\n                        args: [\n                            v2\n                        ],\n                        setter: true\n                    });\n                }\n            });\n            handlers.push(hookHandler);\n        }\n    };\n    var handlers = [];\n    var props2D = Object.getOwnPropertyNames(win.CanvasRenderingContext2D.prototype);\n    for(var _iterator = _create_for_of_iterator_helper_loose(props2D), _step; !(_step = _iterator()).done;)_loop();\n    return function() {\n        handlers.forEach(function(h) {\n            return h();\n        });\n    };\n}\nfunction getNormalizedContextName(contextType) {\n    return contextType === \"experimental-webgl\" ? \"webgl\" : contextType;\n}\nfunction initCanvasContextObserver(win, blockClass, blockSelector, setPreserveDrawingBufferToTrue) {\n    var handlers = [];\n    try {\n        var restoreHandler = patch(win.HTMLCanvasElement.prototype, \"getContext\", function(original) {\n            return function(contextType) {\n                for(var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++){\n                    args[_key - 1] = arguments[_key];\n                }\n                if (!isBlocked(this, blockClass, blockSelector, true)) {\n                    var ctxName = getNormalizedContextName(contextType);\n                    if (!(\"__context\" in this)) this.__context = ctxName;\n                    if (setPreserveDrawingBufferToTrue && [\n                        \"webgl\",\n                        \"webgl2\"\n                    ].includes(ctxName)) {\n                        if (args[0] && _type_of(args[0]) === \"object\") {\n                            var contextAttributes = args[0];\n                            if (!contextAttributes.preserveDrawingBuffer) {\n                                contextAttributes.preserveDrawingBuffer = true;\n                            }\n                        } else {\n                            args.splice(0, 1, {\n                                preserveDrawingBuffer: true\n                            });\n                        }\n                    }\n                }\n                return original.apply(this, [].concat([\n                    contextType\n                ], args));\n            };\n        });\n        handlers.push(restoreHandler);\n    } catch (e) {\n        console.error(\"failed to patch HTMLCanvasElement.prototype.getContext\");\n    }\n    return function() {\n        handlers.forEach(function(h) {\n            return h();\n        });\n    };\n}\nfunction patchGLPrototype(prototype, type, cb, blockClass, blockSelector, win) {\n    var _loop = function() {\n        var prop = _step.value;\n        if (//prop.startsWith('get') ||  // e.g. getProgramParameter, but too risky\n        [\n            \"isContextLost\",\n            \"canvas\",\n            \"drawingBufferWidth\",\n            \"drawingBufferHeight\"\n        ].includes(prop)) {\n            return \"continue\";\n        }\n        try {\n            if (typeof prototype[prop] !== \"function\") {\n                return \"continue\";\n            }\n            var restoreHandler = patch(prototype, prop, function(original) {\n                return function() {\n                    for(var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++){\n                        args[_key] = arguments[_key];\n                    }\n                    var result2 = original.apply(this, args);\n                    saveWebGLVar(result2, win, this);\n                    if (\"tagName\" in this.canvas && !isBlocked(this.canvas, blockClass, blockSelector, true)) {\n                        var recordArgs = serializeArgs(args, win, this);\n                        var mutation = {\n                            type: type,\n                            property: prop,\n                            args: recordArgs\n                        };\n                        cb(this.canvas, mutation);\n                    }\n                    return result2;\n                };\n            });\n            handlers.push(restoreHandler);\n        } catch (e) {\n            var hookHandler = hookSetter(prototype, prop, {\n                set: function set(v2) {\n                    cb(this.canvas, {\n                        type: type,\n                        property: prop,\n                        args: [\n                            v2\n                        ],\n                        setter: true\n                    });\n                }\n            });\n            handlers.push(hookHandler);\n        }\n    };\n    var handlers = [];\n    var props = Object.getOwnPropertyNames(prototype);\n    for(var _iterator = _create_for_of_iterator_helper_loose(props), _step; !(_step = _iterator()).done;)_loop();\n    return handlers;\n}\nfunction initCanvasWebGLMutationObserver(cb, win, blockClass, blockSelector) {\n    var _handlers;\n    var handlers = [];\n    (_handlers = handlers).push.apply(_handlers, [].concat(patchGLPrototype(win.WebGLRenderingContext.prototype, CanvasContext.WebGL, cb, blockClass, blockSelector, win)));\n    if (typeof win.WebGL2RenderingContext !== \"undefined\") {\n        var _handlers1;\n        (_handlers1 = handlers).push.apply(_handlers1, [].concat(patchGLPrototype(win.WebGL2RenderingContext.prototype, CanvasContext.WebGL2, cb, blockClass, blockSelector, win)));\n    }\n    return function() {\n        handlers.forEach(function(h) {\n            return h();\n        });\n    };\n}\nvar encodedJs = \"KGZ1bmN0aW9uKCkgewogICJ1c2Ugc3RyaWN0IjsKICB2YXIgY2hhcnMgPSAiQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxMjM0NTY3ODkrLyI7CiAgdmFyIGxvb2t1cCA9IHR5cGVvZiBVaW50OEFycmF5ID09PSAidW5kZWZpbmVkIiA/IFtdIDogbmV3IFVpbnQ4QXJyYXkoMjU2KTsKICBmb3IgKHZhciBpID0gMDsgaSA8IGNoYXJzLmxlbmd0aDsgaSsrKSB7CiAgICBsb29rdXBbY2hhcnMuY2hhckNvZGVBdChpKV0gPSBpOwogIH0KICB2YXIgZW5jb2RlID0gZnVuY3Rpb24oYXJyYXlidWZmZXIpIHsKICAgIHZhciBieXRlcyA9IG5ldyBVaW50OEFycmF5KGFycmF5YnVmZmVyKSwgaTIsIGxlbiA9IGJ5dGVzLmxlbmd0aCwgYmFzZTY0ID0gIiI7CiAgICBmb3IgKGkyID0gMDsgaTIgPCBsZW47IGkyICs9IDMpIHsKICAgICAgYmFzZTY0ICs9IGNoYXJzW2J5dGVzW2kyXSA+PiAyXTsKICAgICAgYmFzZTY0ICs9IGNoYXJzWyhieXRlc1tpMl0gJiAzKSA8PCA0IHwgYnl0ZXNbaTIgKyAxXSA+PiA0XTsKICAgICAgYmFzZTY0ICs9IGNoYXJzWyhieXRlc1tpMiArIDFdICYgMTUpIDw8IDIgfCBieXRlc1tpMiArIDJdID4+IDZdOwogICAgICBiYXNlNjQgKz0gY2hhcnNbYnl0ZXNbaTIgKyAyXSAmIDYzXTsKICAgIH0KICAgIGlmIChsZW4gJSAzID09PSAyKSB7CiAgICAgIGJhc2U2NCA9IGJhc2U2NC5zdWJzdHJpbmcoMCwgYmFzZTY0Lmxlbmd0aCAtIDEpICsgIj0iOwogICAgfSBlbHNlIGlmIChsZW4gJSAzID09PSAxKSB7CiAgICAgIGJhc2U2NCA9IGJhc2U2NC5zdWJzdHJpbmcoMCwgYmFzZTY0Lmxlbmd0aCAtIDIpICsgIj09IjsKICAgIH0KICAgIHJldHVybiBiYXNlNjQ7CiAgfTsKICBjb25zdCBsYXN0QmxvYk1hcCA9IC8qIEBfX1BVUkVfXyAqLyBuZXcgTWFwKCk7CiAgY29uc3QgdHJhbnNwYXJlbnRCbG9iTWFwID0gLyogQF9fUFVSRV9fICovIG5ldyBNYXAoKTsKICBhc3luYyBmdW5jdGlvbiBnZXRUcmFuc3BhcmVudEJsb2JGb3Iod2lkdGgsIGhlaWdodCwgZGF0YVVSTE9wdGlvbnMpIHsKICAgIGNvbnN0IGlkID0gYCR7d2lkdGh9LSR7aGVpZ2h0fWA7CiAgICBpZiAoIk9mZnNjcmVlbkNhbnZhcyIgaW4gZ2xvYmFsVGhpcykgewogICAgICBpZiAodHJhbnNwYXJlbnRCbG9iTWFwLmhhcyhpZCkpIHJldHVybiB0cmFuc3BhcmVudEJsb2JNYXAuZ2V0KGlkKTsKICAgICAgY29uc3Qgb2Zmc2NyZWVuID0gbmV3IE9mZnNjcmVlbkNhbnZhcyh3aWR0aCwgaGVpZ2h0KTsKICAgICAgb2Zmc2NyZWVuLmdldENvbnRleHQoIjJkIik7CiAgICAgIGNvbnN0IGJsb2IgPSBhd2FpdCBvZmZzY3JlZW4uY29udmVydFRvQmxvYihkYXRhVVJMT3B0aW9ucyk7CiAgICAgIGNvbnN0IGFycmF5QnVmZmVyID0gYXdhaXQgYmxvYi5hcnJheUJ1ZmZlcigpOwogICAgICBjb25zdCBiYXNlNjQgPSBlbmNvZGUoYXJyYXlCdWZmZXIpOwogICAgICB0cmFuc3BhcmVudEJsb2JNYXAuc2V0KGlkLCBiYXNlNjQpOwogICAgICByZXR1cm4gYmFzZTY0OwogICAgfSBlbHNlIHsKICAgICAgcmV0dXJuICIiOwogICAgfQogIH0KICBjb25zdCB3b3JrZXIgPSBzZWxmOwogIHdvcmtlci5vbm1lc3NhZ2UgPSBhc3luYyBmdW5jdGlvbihlKSB7CiAgICBpZiAoIk9mZnNjcmVlbkNhbnZhcyIgaW4gZ2xvYmFsVGhpcykgewogICAgICBjb25zdCB7IGlkLCBiaXRtYXAsIHdpZHRoLCBoZWlnaHQsIGRhdGFVUkxPcHRpb25zIH0gPSBlLmRhdGE7CiAgICAgIGNvbnN0IHRyYW5zcGFyZW50QmFzZTY0ID0gZ2V0VHJhbnNwYXJlbnRCbG9iRm9yKAogICAgICAgIHdpZHRoLAogICAgICAgIGhlaWdodCwKICAgICAgICBkYXRhVVJMT3B0aW9ucwogICAgICApOwogICAgICBjb25zdCBvZmZzY3JlZW4gPSBuZXcgT2Zmc2NyZWVuQ2FudmFzKHdpZHRoLCBoZWlnaHQpOwogICAgICBjb25zdCBjdHggPSBvZmZzY3JlZW4uZ2V0Q29udGV4dCgiMmQiKTsKICAgICAgY3R4LmRyYXdJbWFnZShiaXRtYXAsIDAsIDApOwogICAgICBiaXRtYXAuY2xvc2UoKTsKICAgICAgY29uc3QgYmxvYiA9IGF3YWl0IG9mZnNjcmVlbi5jb252ZXJ0VG9CbG9iKGRhdGFVUkxPcHRpb25zKTsKICAgICAgY29uc3QgdHlwZSA9IGJsb2IudHlwZTsKICAgICAgY29uc3QgYXJyYXlCdWZmZXIgPSBhd2FpdCBibG9iLmFycmF5QnVmZmVyKCk7CiAgICAgIGNvbnN0IGJhc2U2NCA9IGVuY29kZShhcnJheUJ1ZmZlcik7CiAgICAgIGlmICghbGFzdEJsb2JNYXAuaGFzKGlkKSAmJiBhd2FpdCB0cmFuc3BhcmVudEJhc2U2NCA9PT0gYmFzZTY0KSB7CiAgICAgICAgbGFzdEJsb2JNYXAuc2V0KGlkLCBiYXNlNjQpOwogICAgICAgIHJldHVybiB3b3JrZXIucG9zdE1lc3NhZ2UoeyBpZCB9KTsKICAgICAgfQogICAgICBpZiAobGFzdEJsb2JNYXAuZ2V0KGlkKSA9PT0gYmFzZTY0KSByZXR1cm4gd29ya2VyLnBvc3RNZXNzYWdlKHsgaWQgfSk7CiAgICAgIHdvcmtlci5wb3N0TWVzc2FnZSh7CiAgICAgICAgaWQsCiAgICAgICAgdHlwZSwKICAgICAgICBiYXNlNjQsCiAgICAgICAgd2lkdGgsCiAgICAgICAgaGVpZ2h0CiAgICAgIH0pOwogICAgICBsYXN0QmxvYk1hcC5zZXQoaWQsIGJhc2U2NCk7CiAgICB9IGVsc2UgewogICAgICByZXR1cm4gd29ya2VyLnBvc3RNZXNzYWdlKHsgaWQ6IGUuZGF0YS5pZCB9KTsKICAgIH0KICB9Owp9KSgpOwovLyMgc291cmNlTWFwcGluZ1VSTD1pbWFnZS1iaXRtYXAtZGF0YS11cmwtd29ya2VyLUlKcEM3Z19iLmpzLm1hcAo=\";\nvar decodeBase64 = function(base64) {\n    return Uint8Array.from(atob(base64), function(c2) {\n        return c2.charCodeAt(0);\n    });\n};\nvar blob = typeof window !== \"undefined\" && window.Blob && new Blob([\n    decodeBase64(encodedJs)\n], {\n    type: \"text/javascript;charset=utf-8\"\n});\nfunction WorkerWrapper(options) {\n    var objURL;\n    try {\n        objURL = blob && (window.URL || window.webkitURL).createObjectURL(blob);\n        if (!objURL) throw \"\";\n        var worker = new Worker(objURL, {\n            name: options == null ? void 0 : options.name\n        });\n        worker.addEventListener(\"error\", function() {\n            (window.URL || window.webkitURL).revokeObjectURL(objURL);\n        });\n        return worker;\n    } catch (e2) {\n        return new Worker(\"data:text/javascript;base64,\" + encodedJs, {\n            name: options == null ? void 0 : options.name\n        });\n    } finally{\n        objURL && (window.URL || window.webkitURL).revokeObjectURL(objURL);\n    }\n}\nvar CanvasManager = /*#__PURE__*/ function() {\n    function CanvasManager(options) {\n        var _this = this;\n        __publicField(this, \"pendingCanvasMutations\", /* @__PURE__ */ new Map());\n        __publicField(this, \"rafStamps\", {\n            latestId: 0,\n            invokeId: null\n        });\n        __publicField(this, \"mirror\");\n        __publicField(this, \"mutationCb\");\n        __publicField(this, \"resetObservers\");\n        __publicField(this, \"frozen\", false);\n        __publicField(this, \"locked\", false);\n        __publicField(this, \"processMutation\", function(target, mutation) {\n            var newFrame = _this.rafStamps.invokeId && _this.rafStamps.latestId !== _this.rafStamps.invokeId;\n            if (newFrame || !_this.rafStamps.invokeId) _this.rafStamps.invokeId = _this.rafStamps.latestId;\n            if (!_this.pendingCanvasMutations.has(target)) {\n                _this.pendingCanvasMutations.set(target, []);\n            }\n            _this.pendingCanvasMutations.get(target).push(mutation);\n        });\n        var _options_sampling = options.sampling, sampling = _options_sampling === void 0 ? \"all\" : _options_sampling, win = options.win, blockClass = options.blockClass, blockSelector = options.blockSelector, recordCanvas = options.recordCanvas, dataURLOptions = options.dataURLOptions;\n        this.mutationCb = options.mutationCb;\n        this.mirror = options.mirror;\n        if (recordCanvas && sampling === \"all\") this.initCanvasMutationObserver(win, blockClass, blockSelector);\n        if (recordCanvas && typeof sampling === \"number\") this.initCanvasFPSObserver(sampling, win, blockClass, blockSelector, {\n            dataURLOptions: dataURLOptions\n        });\n    }\n    var _proto = CanvasManager.prototype;\n    _proto.reset = function reset() {\n        this.pendingCanvasMutations.clear();\n        this.resetObservers && this.resetObservers();\n    };\n    _proto.freeze = function freeze() {\n        this.frozen = true;\n    };\n    _proto.unfreeze = function unfreeze() {\n        this.frozen = false;\n    };\n    _proto.lock = function lock() {\n        this.locked = true;\n    };\n    _proto.unlock = function unlock() {\n        this.locked = false;\n    };\n    _proto.initCanvasFPSObserver = function initCanvasFPSObserver(fps, win, blockClass, blockSelector, options) {\n        var _this = this;\n        var canvasContextReset = initCanvasContextObserver(win, blockClass, blockSelector, true);\n        var snapshotInProgressMap = /* @__PURE__ */ new Map();\n        var worker = new WorkerWrapper();\n        worker.onmessage = function(e2) {\n            var id = e2.data.id;\n            snapshotInProgressMap.set(id, false);\n            if (!(\"base64\" in e2.data)) return;\n            var _e2_data = e2.data, base64 = _e2_data.base64, type = _e2_data.type, width = _e2_data.width, height = _e2_data.height;\n            _this.mutationCb({\n                id: id,\n                type: CanvasContext[\"2D\"],\n                commands: [\n                    {\n                        property: \"clearRect\",\n                        // wipe canvas\n                        args: [\n                            0,\n                            0,\n                            width,\n                            height\n                        ]\n                    },\n                    {\n                        property: \"drawImage\",\n                        // draws (semi-transparent) image\n                        args: [\n                            {\n                                rr_type: \"ImageBitmap\",\n                                args: [\n                                    {\n                                        rr_type: \"Blob\",\n                                        data: [\n                                            {\n                                                rr_type: \"ArrayBuffer\",\n                                                base64: base64\n                                            }\n                                        ],\n                                        type: type\n                                    }\n                                ]\n                            },\n                            0,\n                            0\n                        ]\n                    }\n                ]\n            });\n        };\n        var timeBetweenSnapshots = 1e3 / fps;\n        var lastSnapshotTime = 0;\n        var rafId;\n        var getCanvas = function() {\n            var matchedCanvas = [];\n            win.document.querySelectorAll(\"canvas\").forEach(function(canvas) {\n                if (!isBlocked(canvas, blockClass, blockSelector, true)) {\n                    matchedCanvas.push(canvas);\n                }\n            });\n            return matchedCanvas;\n        };\n        var takeCanvasSnapshots = function(timestamp) {\n            if (lastSnapshotTime && timestamp - lastSnapshotTime < timeBetweenSnapshots) {\n                rafId = requestAnimationFrame(takeCanvasSnapshots);\n                return;\n            }\n            lastSnapshotTime = timestamp;\n            var _this1 = _this;\n            getCanvas().forEach(/*#__PURE__*/ _async_to_generator(function(canvas) {\n                var _a2, id, context, bitmap;\n                return _ts_generator(this, function(_state) {\n                    switch(_state.label){\n                        case 0:\n                            id = _this1.mirror.getId(canvas);\n                            if (snapshotInProgressMap.get(id)) return [\n                                2\n                            ];\n                            if (canvas.width === 0 || canvas.height === 0) return [\n                                2\n                            ];\n                            snapshotInProgressMap.set(id, true);\n                            if ([\n                                \"webgl\",\n                                \"webgl2\"\n                            ].includes(canvas.__context)) {\n                                context = canvas.getContext(canvas.__context);\n                                if (((_a2 = context == null ? void 0 : context.getContextAttributes()) == null ? void 0 : _a2.preserveDrawingBuffer) === false) {\n                                    context.clear(context.COLOR_BUFFER_BIT);\n                                }\n                            }\n                            return [\n                                4,\n                                createImageBitmap(canvas)\n                            ];\n                        case 1:\n                            bitmap = _state.sent();\n                            worker.postMessage({\n                                id: id,\n                                bitmap: bitmap,\n                                width: canvas.width,\n                                height: canvas.height,\n                                dataURLOptions: options.dataURLOptions\n                            }, [\n                                bitmap\n                            ]);\n                            return [\n                                2\n                            ];\n                    }\n                });\n            }));\n            rafId = requestAnimationFrame(takeCanvasSnapshots);\n        };\n        rafId = requestAnimationFrame(takeCanvasSnapshots);\n        this.resetObservers = function() {\n            canvasContextReset();\n            cancelAnimationFrame(rafId);\n        };\n    };\n    _proto.initCanvasMutationObserver = function initCanvasMutationObserver(win, blockClass, blockSelector) {\n        this.startRAFTimestamping();\n        this.startPendingCanvasMutationFlusher();\n        var canvasContextReset = initCanvasContextObserver(win, blockClass, blockSelector, false);\n        var canvas2DReset = initCanvas2DMutationObserver(this.processMutation.bind(this), win, blockClass, blockSelector);\n        var canvasWebGL1and2Reset = initCanvasWebGLMutationObserver(this.processMutation.bind(this), win, blockClass, blockSelector);\n        this.resetObservers = function() {\n            canvasContextReset();\n            canvas2DReset();\n            canvasWebGL1and2Reset();\n        };\n    };\n    _proto.startPendingCanvasMutationFlusher = function startPendingCanvasMutationFlusher() {\n        var _this = this;\n        requestAnimationFrame(function() {\n            return _this.flushPendingCanvasMutations();\n        });\n    };\n    _proto.startRAFTimestamping = function startRAFTimestamping() {\n        var _this = this;\n        var setLatestRAFTimestamp = function(timestamp) {\n            _this.rafStamps.latestId = timestamp;\n            requestAnimationFrame(setLatestRAFTimestamp);\n        };\n        requestAnimationFrame(setLatestRAFTimestamp);\n    };\n    _proto.flushPendingCanvasMutations = function flushPendingCanvasMutations() {\n        var _this = this;\n        this.pendingCanvasMutations.forEach(function(_values, canvas) {\n            var id = _this.mirror.getId(canvas);\n            _this.flushPendingCanvasMutationFor(canvas, id);\n        });\n        requestAnimationFrame(function() {\n            return _this.flushPendingCanvasMutations();\n        });\n    };\n    _proto.flushPendingCanvasMutationFor = function flushPendingCanvasMutationFor(canvas, id) {\n        if (this.frozen || this.locked) {\n            return;\n        }\n        var valuesWithType = this.pendingCanvasMutations.get(canvas);\n        if (!valuesWithType || id === -1) return;\n        var values = valuesWithType.map(function(value) {\n            value.type; var rest = _object_without_properties_loose(value, [\n                \"type\"\n            ]);\n            return rest;\n        });\n        var type = valuesWithType[0].type;\n        this.mutationCb({\n            id: id,\n            type: type,\n            commands: values\n        });\n        this.pendingCanvasMutations.delete(canvas);\n    };\n    return CanvasManager;\n}();\nvar StylesheetManager = /*#__PURE__*/ function() {\n    function StylesheetManager(options) {\n        __publicField(this, \"trackedLinkElements\", /* @__PURE__ */ new WeakSet());\n        __publicField(this, \"mutationCb\");\n        __publicField(this, \"adoptedStyleSheetCb\");\n        __publicField(this, \"styleMirror\", new StyleSheetMirror());\n        this.mutationCb = options.mutationCb;\n        this.adoptedStyleSheetCb = options.adoptedStyleSheetCb;\n    }\n    var _proto = StylesheetManager.prototype;\n    _proto.attachLinkElement = function attachLinkElement(linkEl, childSn) {\n        if (\"_cssText\" in childSn.attributes) this.mutationCb({\n            adds: [],\n            removes: [],\n            texts: [],\n            attributes: [\n                {\n                    id: childSn.id,\n                    attributes: childSn.attributes\n                }\n            ]\n        });\n        this.trackLinkElement(linkEl);\n    };\n    _proto.trackLinkElement = function trackLinkElement(linkEl) {\n        if (this.trackedLinkElements.has(linkEl)) return;\n        this.trackedLinkElements.add(linkEl);\n        this.trackStylesheetInLinkElement(linkEl);\n    };\n    _proto.adoptStyleSheets = function adoptStyleSheets(sheets, hostId) {\n        var _this, _loop = function() {\n            var sheet = _step.value;\n            var styleId = void 0;\n            if (!_this.styleMirror.has(sheet)) {\n                styleId = _this.styleMirror.add(sheet);\n                styles.push({\n                    styleId: styleId,\n                    rules: Array.from(sheet.rules || CSSRule, function(r2, index2) {\n                        return {\n                            rule: stringifyRule(r2, sheet.href),\n                            index: index2\n                        };\n                    })\n                });\n            } else styleId = _this.styleMirror.getId(sheet);\n            adoptedStyleSheetData.styleIds.push(styleId);\n        };\n        if (sheets.length === 0) return;\n        var adoptedStyleSheetData = {\n            id: hostId,\n            styleIds: []\n        };\n        var styles = [];\n        for(var _iterator = _create_for_of_iterator_helper_loose(sheets), _step; !(_step = _iterator()).done;)_this = this, _loop();\n        if (styles.length > 0) adoptedStyleSheetData.styles = styles;\n        this.adoptedStyleSheetCb(adoptedStyleSheetData);\n    };\n    _proto.reset = function reset() {\n        this.styleMirror.reset();\n        this.trackedLinkElements = /* @__PURE__ */ new WeakSet();\n    };\n    // TODO: take snapshot on stylesheet reload by applying event listener\n    _proto.trackStylesheetInLinkElement = function trackStylesheetInLinkElement(_linkEl) {};\n    return StylesheetManager;\n}();\nvar ProcessedNodeManager = /*#__PURE__*/ function() {\n    function ProcessedNodeManager() {\n        __publicField(this, \"nodeMap\", /* @__PURE__ */ new WeakMap());\n        __publicField(this, \"active\", false);\n    }\n    var _proto = ProcessedNodeManager.prototype;\n    _proto.inOtherBuffer = function inOtherBuffer(node2, thisBuffer) {\n        var buffers = this.nodeMap.get(node2);\n        return buffers && Array.from(buffers).some(function(buffer) {\n            return buffer !== thisBuffer;\n        });\n    };\n    _proto.add = function add(node2, buffer) {\n        var _this = this;\n        if (!this.active) {\n            this.active = true;\n            requestAnimationFrame(function() {\n                _this.nodeMap = /* @__PURE__ */ new WeakMap();\n                _this.active = false;\n            });\n        }\n        this.nodeMap.set(node2, (this.nodeMap.get(node2) || /* @__PURE__ */ new Set()).add(buffer));\n    };\n    _proto.destroy = function destroy() {};\n    return ProcessedNodeManager;\n}();\nvar wrappedEmit;\nvar takeFullSnapshot$1;\nvar canvasManager;\nvar recording = false;\ntry {\n    if (Array.from([\n        1\n    ], function(x2) {\n        return x2 * 2;\n    })[0] !== 2) {\n        var cleanFrame = document.createElement(\"iframe\");\n        document.body.appendChild(cleanFrame);\n        Array.from = ((_a = cleanFrame.contentWindow) == null ? void 0 : _a.Array.from) || Array.from;\n        document.body.removeChild(cleanFrame);\n    }\n} catch (err) {\n    console.debug(\"Unable to override Array.from\", err);\n}\nvar mirror = createMirror$2();\nfunction record(options) {\n    if (options === void 0) options = {};\n    var emit = options.emit, checkoutEveryNms = options.checkoutEveryNms, checkoutEveryNth = options.checkoutEveryNth, _options_blockClass = options.blockClass, blockClass = _options_blockClass === void 0 ? \"rr-block\" : _options_blockClass, _options_blockSelector = options.blockSelector, blockSelector = _options_blockSelector === void 0 ? null : _options_blockSelector, _options_ignoreClass = options.ignoreClass, ignoreClass = _options_ignoreClass === void 0 ? \"rr-ignore\" : _options_ignoreClass, _options_ignoreSelector = options.ignoreSelector, ignoreSelector = _options_ignoreSelector === void 0 ? null : _options_ignoreSelector, _options_maskTextClass = options.maskTextClass, maskTextClass = _options_maskTextClass === void 0 ? \"rr-mask\" : _options_maskTextClass, _options_maskTextSelector = options.maskTextSelector, maskTextSelector = _options_maskTextSelector === void 0 ? null : _options_maskTextSelector, _options_inlineStylesheet = options.inlineStylesheet, inlineStylesheet = _options_inlineStylesheet === void 0 ? true : _options_inlineStylesheet, maskAllInputs = options.maskAllInputs, _maskInputOptions = options.maskInputOptions, _slimDOMOptions = options.slimDOMOptions, maskInputFn = options.maskInputFn, maskTextFn = options.maskTextFn, hooks = options.hooks, packFn = options.packFn, _options_sampling = options.sampling, sampling = _options_sampling === void 0 ? {} : _options_sampling, _options_dataURLOptions = options.dataURLOptions, dataURLOptions = _options_dataURLOptions === void 0 ? {} : _options_dataURLOptions, mousemoveWait = options.mousemoveWait, _options_recordDOM = options.recordDOM, recordDOM = _options_recordDOM === void 0 ? true : _options_recordDOM, _options_recordCanvas = options.recordCanvas, recordCanvas = _options_recordCanvas === void 0 ? false : _options_recordCanvas, _options_recordCrossOriginIframes = options.recordCrossOriginIframes, recordCrossOriginIframes = _options_recordCrossOriginIframes === void 0 ? false : _options_recordCrossOriginIframes, _options_recordAfter = options.recordAfter, recordAfter = _options_recordAfter === void 0 ? options.recordAfter === \"DOMContentLoaded\" ? options.recordAfter : \"load\" : _options_recordAfter, _options_userTriggeredOnInput = options.userTriggeredOnInput, userTriggeredOnInput = _options_userTriggeredOnInput === void 0 ? false : _options_userTriggeredOnInput, _options_collectFonts = options.collectFonts, collectFonts = _options_collectFonts === void 0 ? false : _options_collectFonts, _options_inlineImages = options.inlineImages, inlineImages = _options_inlineImages === void 0 ? false : _options_inlineImages, plugins = options.plugins, _options_keepIframeSrcFn = options.keepIframeSrcFn, keepIframeSrcFn = _options_keepIframeSrcFn === void 0 ? function() {\n        return false;\n    } : _options_keepIframeSrcFn, _options_ignoreCSSAttributes = options.ignoreCSSAttributes, ignoreCSSAttributes = _options_ignoreCSSAttributes === void 0 ? /* @__PURE__ */ new Set([]) : _options_ignoreCSSAttributes, errorHandler2 = options.errorHandler;\n    registerErrorHandler(errorHandler2);\n    var inEmittingFrame = recordCrossOriginIframes ? window.parent === window : true;\n    var passEmitsToParent = false;\n    if (!inEmittingFrame) {\n        try {\n            if (window.parent.document) {\n                passEmitsToParent = false;\n            }\n        } catch (e2) {\n            passEmitsToParent = true;\n        }\n    }\n    if (inEmittingFrame && !emit) {\n        throw new Error(\"emit function is required\");\n    }\n    if (!inEmittingFrame && !passEmitsToParent) {\n        return function() {};\n    }\n    if (mousemoveWait !== void 0 && sampling.mousemove === void 0) {\n        sampling.mousemove = mousemoveWait;\n    }\n    mirror.reset();\n    var maskInputOptions = maskAllInputs === true ? {\n        color: true,\n        date: true,\n        \"datetime-local\": true,\n        email: true,\n        month: true,\n        number: true,\n        range: true,\n        search: true,\n        tel: true,\n        text: true,\n        time: true,\n        url: true,\n        week: true,\n        textarea: true,\n        select: true,\n        password: true\n    } : _maskInputOptions !== void 0 ? _maskInputOptions : {\n        password: true\n    };\n    var slimDOMOptions = _slimDOMOptions === true || _slimDOMOptions === \"all\" ? {\n        script: true,\n        comment: true,\n        headFavicon: true,\n        headWhitespace: true,\n        headMetaSocial: true,\n        headMetaRobots: true,\n        headMetaHttpEquiv: true,\n        headMetaVerification: true,\n        // the following are off for slimDOMOptions === true,\n        // as they destroy some (hidden) info:\n        headMetaAuthorship: _slimDOMOptions === \"all\",\n        headMetaDescKeywords: _slimDOMOptions === \"all\",\n        headTitleMutations: _slimDOMOptions === \"all\"\n    } : _slimDOMOptions ? _slimDOMOptions : {};\n    polyfill$1();\n    var lastFullSnapshotEvent;\n    var incrementalSnapshotCount = 0;\n    var eventProcessor = function(e2) {\n        for(var _iterator = _create_for_of_iterator_helper_loose(plugins || []), _step; !(_step = _iterator()).done;){\n            var plugin3 = _step.value;\n            if (plugin3.eventProcessor) {\n                e2 = plugin3.eventProcessor(e2);\n            }\n        }\n        if (packFn && // Disable packing events which will be emitted to parent frames.\n        !passEmitsToParent) {\n            e2 = packFn(e2);\n        }\n        return e2;\n    };\n    wrappedEmit = function(r2, isCheckout) {\n        var _a2;\n        var e2 = r2;\n        e2.timestamp = nowTimestamp();\n        if (((_a2 = mutationBuffers[0]) == null ? void 0 : _a2.isFrozen()) && e2.type !== EventType.FullSnapshot && !(e2.type === EventType.IncrementalSnapshot && e2.data.source === IncrementalSource.Mutation)) {\n            mutationBuffers.forEach(function(buf) {\n                return buf.unfreeze();\n            });\n        }\n        if (inEmittingFrame) {\n            emit == null ? void 0 : emit(eventProcessor(e2), isCheckout);\n        } else if (passEmitsToParent) {\n            var message = {\n                type: \"rrweb\",\n                event: eventProcessor(e2),\n                origin: window.location.origin,\n                isCheckout: isCheckout\n            };\n            window.parent.postMessage(message, \"*\");\n        }\n        if (e2.type === EventType.FullSnapshot) {\n            lastFullSnapshotEvent = e2;\n            incrementalSnapshotCount = 0;\n        } else if (e2.type === EventType.IncrementalSnapshot) {\n            if (e2.data.source === IncrementalSource.Mutation && e2.data.isAttachIframe) {\n                return;\n            }\n            incrementalSnapshotCount++;\n            var exceedCount = checkoutEveryNth && incrementalSnapshotCount >= checkoutEveryNth;\n            var exceedTime = checkoutEveryNms && e2.timestamp - lastFullSnapshotEvent.timestamp > checkoutEveryNms;\n            if (exceedCount || exceedTime) {\n                takeFullSnapshot$1(true);\n            }\n        }\n    };\n    var wrappedMutationEmit = function(m) {\n        wrappedEmit({\n            type: EventType.IncrementalSnapshot,\n            data: _extends({\n                source: IncrementalSource.Mutation\n            }, m)\n        });\n    };\n    var wrappedScrollEmit = function(p) {\n        return wrappedEmit({\n            type: EventType.IncrementalSnapshot,\n            data: _extends({\n                source: IncrementalSource.Scroll\n            }, p)\n        });\n    };\n    var wrappedCanvasMutationEmit = function(p) {\n        return wrappedEmit({\n            type: EventType.IncrementalSnapshot,\n            data: _extends({\n                source: IncrementalSource.CanvasMutation\n            }, p)\n        });\n    };\n    var wrappedAdoptedStyleSheetEmit = function(a2) {\n        return wrappedEmit({\n            type: EventType.IncrementalSnapshot,\n            data: _extends({\n                source: IncrementalSource.AdoptedStyleSheet\n            }, a2)\n        });\n    };\n    var stylesheetManager = new StylesheetManager({\n        mutationCb: wrappedMutationEmit,\n        adoptedStyleSheetCb: wrappedAdoptedStyleSheetEmit\n    });\n    var iframeManager = new IframeManager({\n        mirror: mirror,\n        mutationCb: wrappedMutationEmit,\n        stylesheetManager: stylesheetManager,\n        recordCrossOriginIframes: recordCrossOriginIframes,\n        wrappedEmit: wrappedEmit\n    });\n    for(var _iterator = _create_for_of_iterator_helper_loose(plugins || []), _step; !(_step = _iterator()).done;){\n        var plugin3 = _step.value;\n        if (plugin3.getMirror) plugin3.getMirror({\n            nodeMirror: mirror,\n            crossOriginIframeMirror: iframeManager.crossOriginIframeMirror,\n            crossOriginIframeStyleMirror: iframeManager.crossOriginIframeStyleMirror\n        });\n    }\n    var processedNodeManager = new ProcessedNodeManager();\n    canvasManager = new CanvasManager({\n        recordCanvas: recordCanvas,\n        mutationCb: wrappedCanvasMutationEmit,\n        win: window,\n        blockClass: blockClass,\n        blockSelector: blockSelector,\n        mirror: mirror,\n        sampling: sampling.canvas,\n        dataURLOptions: dataURLOptions\n    });\n    var shadowDomManager = new ShadowDomManager({\n        mutationCb: wrappedMutationEmit,\n        scrollCb: wrappedScrollEmit,\n        bypassOptions: {\n            blockClass: blockClass,\n            blockSelector: blockSelector,\n            maskTextClass: maskTextClass,\n            maskTextSelector: maskTextSelector,\n            inlineStylesheet: inlineStylesheet,\n            maskInputOptions: maskInputOptions,\n            dataURLOptions: dataURLOptions,\n            maskTextFn: maskTextFn,\n            maskInputFn: maskInputFn,\n            recordCanvas: recordCanvas,\n            inlineImages: inlineImages,\n            sampling: sampling,\n            slimDOMOptions: slimDOMOptions,\n            iframeManager: iframeManager,\n            stylesheetManager: stylesheetManager,\n            canvasManager: canvasManager,\n            keepIframeSrcFn: keepIframeSrcFn,\n            processedNodeManager: processedNodeManager\n        },\n        mirror: mirror\n    });\n    takeFullSnapshot$1 = function(isCheckout) {\n        if (isCheckout === void 0) isCheckout = false;\n        if (!recordDOM) {\n            return;\n        }\n        wrappedEmit({\n            type: EventType.Meta,\n            data: {\n                href: window.location.href,\n                width: getWindowWidth(),\n                height: getWindowHeight()\n            }\n        }, isCheckout);\n        stylesheetManager.reset();\n        shadowDomManager.init();\n        mutationBuffers.forEach(function(buf) {\n            return buf.lock();\n        });\n        var node2 = snapshot(document, {\n            mirror: mirror,\n            blockClass: blockClass,\n            blockSelector: blockSelector,\n            maskTextClass: maskTextClass,\n            maskTextSelector: maskTextSelector,\n            inlineStylesheet: inlineStylesheet,\n            maskAllInputs: maskInputOptions,\n            maskTextFn: maskTextFn,\n            maskInputFn: maskInputFn,\n            slimDOM: slimDOMOptions,\n            dataURLOptions: dataURLOptions,\n            recordCanvas: recordCanvas,\n            inlineImages: inlineImages,\n            onSerialize: function(n2) {\n                if (isSerializedIframe(n2, mirror)) {\n                    iframeManager.addIframe(n2);\n                }\n                if (isSerializedStylesheet(n2, mirror)) {\n                    stylesheetManager.trackLinkElement(n2);\n                }\n                if (hasShadowRoot(n2)) {\n                    shadowDomManager.addShadowRoot(index.shadowRoot(n2), document);\n                }\n            },\n            onIframeLoad: function(iframe, childSn) {\n                iframeManager.attachIframe(iframe, childSn);\n                shadowDomManager.observeAttachShadow(iframe);\n            },\n            onStylesheetLoad: function(linkEl, childSn) {\n                stylesheetManager.attachLinkElement(linkEl, childSn);\n            },\n            keepIframeSrcFn: keepIframeSrcFn\n        });\n        if (!node2) {\n            return console.warn(\"Failed to snapshot the document\");\n        }\n        wrappedEmit({\n            type: EventType.FullSnapshot,\n            data: {\n                node: node2,\n                initialOffset: getWindowScroll(window)\n            }\n        }, isCheckout);\n        mutationBuffers.forEach(function(buf) {\n            return buf.unlock();\n        });\n        if (document.adoptedStyleSheets && document.adoptedStyleSheets.length > 0) stylesheetManager.adoptStyleSheets(document.adoptedStyleSheets, mirror.getId(document));\n    };\n    try {\n        var handlers = [];\n        var observe = function(doc) {\n            var _a2;\n            return callbackWrapper(initObservers)({\n                mutationCb: wrappedMutationEmit,\n                mousemoveCb: function(positions, source) {\n                    return wrappedEmit({\n                        type: EventType.IncrementalSnapshot,\n                        data: {\n                            source: source,\n                            positions: positions\n                        }\n                    });\n                },\n                mouseInteractionCb: function(d) {\n                    return wrappedEmit({\n                        type: EventType.IncrementalSnapshot,\n                        data: _extends({\n                            source: IncrementalSource.MouseInteraction\n                        }, d)\n                    });\n                },\n                scrollCb: wrappedScrollEmit,\n                viewportResizeCb: function(d) {\n                    return wrappedEmit({\n                        type: EventType.IncrementalSnapshot,\n                        data: _extends({\n                            source: IncrementalSource.ViewportResize\n                        }, d)\n                    });\n                },\n                inputCb: function(v2) {\n                    return wrappedEmit({\n                        type: EventType.IncrementalSnapshot,\n                        data: _extends({\n                            source: IncrementalSource.Input\n                        }, v2)\n                    });\n                },\n                mediaInteractionCb: function(p) {\n                    return wrappedEmit({\n                        type: EventType.IncrementalSnapshot,\n                        data: _extends({\n                            source: IncrementalSource.MediaInteraction\n                        }, p)\n                    });\n                },\n                styleSheetRuleCb: function(r2) {\n                    return wrappedEmit({\n                        type: EventType.IncrementalSnapshot,\n                        data: _extends({\n                            source: IncrementalSource.StyleSheetRule\n                        }, r2)\n                    });\n                },\n                styleDeclarationCb: function(r2) {\n                    return wrappedEmit({\n                        type: EventType.IncrementalSnapshot,\n                        data: _extends({\n                            source: IncrementalSource.StyleDeclaration\n                        }, r2)\n                    });\n                },\n                canvasMutationCb: wrappedCanvasMutationEmit,\n                fontCb: function(p) {\n                    return wrappedEmit({\n                        type: EventType.IncrementalSnapshot,\n                        data: _extends({\n                            source: IncrementalSource.Font\n                        }, p)\n                    });\n                },\n                selectionCb: function(p) {\n                    wrappedEmit({\n                        type: EventType.IncrementalSnapshot,\n                        data: _extends({\n                            source: IncrementalSource.Selection\n                        }, p)\n                    });\n                },\n                customElementCb: function(c2) {\n                    wrappedEmit({\n                        type: EventType.IncrementalSnapshot,\n                        data: _extends({\n                            source: IncrementalSource.CustomElement\n                        }, c2)\n                    });\n                },\n                blockClass: blockClass,\n                ignoreClass: ignoreClass,\n                ignoreSelector: ignoreSelector,\n                maskTextClass: maskTextClass,\n                maskTextSelector: maskTextSelector,\n                maskInputOptions: maskInputOptions,\n                inlineStylesheet: inlineStylesheet,\n                sampling: sampling,\n                recordDOM: recordDOM,\n                recordCanvas: recordCanvas,\n                inlineImages: inlineImages,\n                userTriggeredOnInput: userTriggeredOnInput,\n                collectFonts: collectFonts,\n                doc: doc,\n                maskInputFn: maskInputFn,\n                maskTextFn: maskTextFn,\n                keepIframeSrcFn: keepIframeSrcFn,\n                blockSelector: blockSelector,\n                slimDOMOptions: slimDOMOptions,\n                dataURLOptions: dataURLOptions,\n                mirror: mirror,\n                iframeManager: iframeManager,\n                stylesheetManager: stylesheetManager,\n                shadowDomManager: shadowDomManager,\n                processedNodeManager: processedNodeManager,\n                canvasManager: canvasManager,\n                ignoreCSSAttributes: ignoreCSSAttributes,\n                plugins: ((_a2 = plugins == null ? void 0 : plugins.filter(function(p) {\n                    return p.observer;\n                })) == null ? void 0 : _a2.map(function(p) {\n                    return {\n                        observer: p.observer,\n                        options: p.options,\n                        callback: function(payload) {\n                            return wrappedEmit({\n                                type: EventType.Plugin,\n                                data: {\n                                    plugin: p.name,\n                                    payload: payload\n                                }\n                            });\n                        }\n                    };\n                })) || []\n            }, hooks);\n        };\n        iframeManager.addLoadListener(function(iframeEl) {\n            try {\n                handlers.push(observe(iframeEl.contentDocument));\n            } catch (error) {\n                console.warn(error);\n            }\n        });\n        var init = function() {\n            takeFullSnapshot$1();\n            handlers.push(observe(document));\n            recording = true;\n        };\n        if (document.readyState === \"interactive\" || document.readyState === \"complete\") {\n            init();\n        } else {\n            handlers.push(on(\"DOMContentLoaded\", function() {\n                wrappedEmit({\n                    type: EventType.DomContentLoaded,\n                    data: {}\n                });\n                if (recordAfter === \"DOMContentLoaded\") init();\n            }));\n            handlers.push(on(\"load\", function() {\n                wrappedEmit({\n                    type: EventType.Load,\n                    data: {}\n                });\n                if (recordAfter === \"load\") init();\n            }, window));\n        }\n        return function() {\n            handlers.forEach(function(h) {\n                return h();\n            });\n            processedNodeManager.destroy();\n            recording = false;\n            unregisterErrorHandler();\n        };\n    } catch (error) {\n        console.warn(error);\n    }\n}\nrecord.addCustomEvent = function(tag, payload) {\n    if (!recording) {\n        throw new Error(\"please add custom event after start recording\");\n    }\n    wrappedEmit({\n        type: EventType.Custom,\n        data: {\n            tag: tag,\n            payload: payload\n        }\n    });\n};\nrecord.freezePage = function() {\n    mutationBuffers.forEach(function(buf) {\n        return buf.freeze();\n    });\n};\nrecord.takeFullSnapshot = function(isCheckout) {\n    if (!recording) {\n        throw new Error(\"please take full snapshot after start recording\");\n    }\n    takeFullSnapshot$1(isCheckout);\n};\nrecord.mirror = mirror;\nvar n;\n!function(t2) {\n    t2[t2.NotStarted = 0] = \"NotStarted\", t2[t2.Running = 1] = \"Running\", t2[t2.Stopped = 2] = \"Stopped\";\n}(n || (n = {}));\nrecord.addCustomEvent;\nrecord.freezePage;\nrecord.takeFullSnapshot;\n\nvar setImmediate = win['setImmediate'];\nvar builtInProp, cycle, schedulingQueue,\n    ToString = Object.prototype.toString,\n    timer = (typeof setImmediate !== 'undefined') ?\n        function timer(fn) { return setImmediate(fn); } :\n        setTimeout;\n\n// dammit, IE8.\ntry {\n    Object.defineProperty({},'x',{});\n    builtInProp = function builtInProp(obj,name,val,config) {\n        return Object.defineProperty(obj,name,{\n            value: val,\n            writable: true,\n            configurable: config !== false\n        });\n    };\n}\ncatch (err) {\n    builtInProp = function builtInProp(obj,name,val) {\n        obj[name] = val;\n        return obj;\n    };\n}\n\n// Note: using a queue instead of array for efficiency\nschedulingQueue = (function Queue() {\n    var first, last, item;\n\n    function Item(fn,self) {\n        this.fn = fn;\n        this.self = self;\n        this.next = void 0;\n    }\n\n    return {\n        add: function add(fn,self) {\n            item = new Item(fn,self);\n            if (last) {\n                last.next = item;\n            }\n            else {\n                first = item;\n            }\n            last = item;\n            item = void 0;\n        },\n        drain: function drain() {\n            var f = first;\n            first = last = cycle = void 0;\n\n            while (f) {\n                f.fn.call(f.self);\n                f = f.next;\n            }\n        }\n    };\n})();\n\nfunction schedule(fn,self) {\n    schedulingQueue.add(fn,self);\n    if (!cycle) {\n        cycle = timer(schedulingQueue.drain);\n    }\n}\n\n// promise duck typing\nfunction isThenable(o) {\n    var _then, oType = typeof o;\n\n    if (o !== null && (oType === 'object' || oType === 'function')) {\n        _then = o.then;\n    }\n    return typeof _then === 'function' ? _then : false;\n}\n\nfunction notify() {\n    for (var i=0; i<this.chain.length; i++) {\n        notifyIsolated(\n            this,\n            (this.state === 1) ? this.chain[i].success : this.chain[i].failure,\n            this.chain[i]\n        );\n    }\n    this.chain.length = 0;\n}\n\n// NOTE: This is a separate function to isolate\n// the `try..catch` so that other code can be\n// optimized better\nfunction notifyIsolated(self,cb,chain) {\n    var ret, _then;\n    try {\n        if (cb === false) {\n            chain.reject(self.msg);\n        }\n        else {\n            if (cb === true) {\n                ret = self.msg;\n            }\n            else {\n                ret = cb.call(void 0,self.msg);\n            }\n\n            if (ret === chain.promise) {\n                chain.reject(TypeError('Promise-chain cycle'));\n            }\n            // eslint-disable-next-line no-cond-assign\n            else if (_then = isThenable(ret)) {\n                _then.call(ret,chain.resolve,chain.reject);\n            }\n            else {\n                chain.resolve(ret);\n            }\n        }\n    }\n    catch (err) {\n        chain.reject(err);\n    }\n}\n\nfunction resolve(msg) {\n    var _then, self = this;\n\n    // already triggered?\n    if (self.triggered) { return; }\n\n    self.triggered = true;\n\n    // unwrap\n    if (self.def) {\n        self = self.def;\n    }\n\n    try {\n        // eslint-disable-next-line no-cond-assign\n        if (_then = isThenable(msg)) {\n            schedule(function(){\n                var defWrapper = new MakeDefWrapper(self);\n                try {\n                    _then.call(msg,\n                        function $resolve$(){ resolve.apply(defWrapper,arguments); },\n                        function $reject$(){ reject.apply(defWrapper,arguments); }\n                    );\n                }\n                catch (err) {\n                    reject.call(defWrapper,err);\n                }\n            });\n        }\n        else {\n            self.msg = msg;\n            self.state = 1;\n            if (self.chain.length > 0) {\n                schedule(notify,self);\n            }\n        }\n    }\n    catch (err) {\n        reject.call(new MakeDefWrapper(self),err);\n    }\n}\n\nfunction reject(msg) {\n    var self = this;\n\n    // already triggered?\n    if (self.triggered) { return; }\n\n    self.triggered = true;\n\n    // unwrap\n    if (self.def) {\n        self = self.def;\n    }\n\n    self.msg = msg;\n    self.state = 2;\n    if (self.chain.length > 0) {\n        schedule(notify,self);\n    }\n}\n\nfunction iteratePromises(Constructor,arr,resolver,rejecter) {\n    for (var idx=0; idx<arr.length; idx++) {\n        (function IIFE(idx){\n            Constructor.resolve(arr[idx])\n                .then(\n                    function $resolver$(msg){\n                        resolver(idx,msg);\n                    },\n                    rejecter\n                );\n        })(idx);\n    }\n}\n\nfunction MakeDefWrapper(self) {\n    this.def = self;\n    this.triggered = false;\n}\n\nfunction MakeDef(self) {\n    this.promise = self;\n    this.state = 0;\n    this.triggered = false;\n    this.chain = [];\n    this.msg = void 0;\n}\n\nfunction NpoPromise(executor) {\n    if (typeof executor !== 'function') {\n        throw TypeError('Not a function');\n    }\n\n    if (this['__NPO__'] !== 0) {\n        throw TypeError('Not a promise');\n    }\n\n    // instance shadowing the inherited \"brand\"\n    // to signal an already \"initialized\" promise\n    this['__NPO__'] = 1;\n\n    var def = new MakeDef(this);\n\n    this['then'] = function then(success,failure) {\n        var o = {\n            success: typeof success === 'function' ? success : true,\n            failure: typeof failure === 'function' ? failure : false\n        };\n            // Note: `then(..)` itself can be borrowed to be used against\n            // a different promise constructor for making the chained promise,\n            // by substituting a different `this` binding.\n        o.promise = new this.constructor(function extractChain(resolve,reject) {\n            if (typeof resolve !== 'function' || typeof reject !== 'function') {\n                throw TypeError('Not a function');\n            }\n\n            o.resolve = resolve;\n            o.reject = reject;\n        });\n        def.chain.push(o);\n\n        if (def.state !== 0) {\n            schedule(notify,def);\n        }\n\n        return o.promise;\n    };\n    this['catch'] = function $catch$(failure) {\n        return this.then(void 0,failure);\n    };\n\n    try {\n        executor.call(\n            void 0,\n            function publicResolve(msg){\n                resolve.call(def,msg);\n            },\n            function publicReject(msg) {\n                reject.call(def,msg);\n            }\n        );\n    }\n    catch (err) {\n        reject.call(def,err);\n    }\n}\n\nvar PromisePrototype = builtInProp({},'constructor',NpoPromise,\n    /*configurable=*/false\n);\n\n    // Note: Android 4 cannot use `Object.defineProperty(..)` here\nNpoPromise.prototype = PromisePrototype;\n\n// built-in \"brand\" to signal an \"uninitialized\" promise\nbuiltInProp(PromisePrototype,'__NPO__',0,\n    /*configurable=*/false\n);\n\nbuiltInProp(NpoPromise,'resolve',function Promise$resolve(msg) {\n    var Constructor = this;\n\n    // spec mandated checks\n    // note: best \"isPromise\" check that's practical for now\n    if (msg && typeof msg === 'object' && msg['__NPO__'] === 1) {\n        return msg;\n    }\n\n    return new Constructor(function executor(resolve,reject){\n        if (typeof resolve !== 'function' || typeof reject !== 'function') {\n            throw TypeError('Not a function');\n        }\n\n        resolve(msg);\n    });\n});\n\nbuiltInProp(NpoPromise,'reject',function Promise$reject(msg) {\n    return new this(function executor(resolve,reject){\n        if (typeof resolve !== 'function' || typeof reject !== 'function') {\n            throw TypeError('Not a function');\n        }\n\n        reject(msg);\n    });\n});\n\nbuiltInProp(NpoPromise,'all',function Promise$all(arr) {\n    var Constructor = this;\n\n    // spec mandated checks\n    if (ToString.call(arr) !== '[object Array]') {\n        return Constructor.reject(TypeError('Not an array'));\n    }\n    if (arr.length === 0) {\n        return Constructor.resolve([]);\n    }\n\n    return new Constructor(function executor(resolve,reject){\n        if (typeof resolve !== 'function' || typeof reject !== 'function') {\n            throw TypeError('Not a function');\n        }\n\n        var len = arr.length, msgs = Array(len), count = 0;\n\n        iteratePromises(Constructor,arr,function resolver(idx,msg) {\n            msgs[idx] = msg;\n            if (++count === len) {\n                resolve(msgs);\n            }\n        },reject);\n    });\n});\n\nbuiltInProp(NpoPromise,'race',function Promise$race(arr) {\n    var Constructor = this;\n\n    // spec mandated checks\n    if (ToString.call(arr) !== '[object Array]') {\n        return Constructor.reject(TypeError('Not an array'));\n    }\n\n    return new Constructor(function executor(resolve,reject){\n        if (typeof resolve !== 'function' || typeof reject !== 'function') {\n            throw TypeError('Not a function');\n        }\n\n        iteratePromises(Constructor,arr,function resolver(idx,msg){\n            resolve(msg);\n        },reject);\n    });\n});\n\nvar PromisePolyfill;\nif (typeof Promise !== 'undefined' && Promise.toString().indexOf('[native code]') !== -1) {\n    PromisePolyfill = Promise;\n} else {\n    PromisePolyfill = NpoPromise;\n}\n\nvar Config = {\n    DEBUG: false,\n    LIB_VERSION: '2.68.0'\n};\n\n/* eslint camelcase: \"off\", eqeqeq: \"off\" */\n\n// Maximum allowed session recording length\nvar MAX_RECORDING_MS = 24 * 60 * 60 * 1000; // 24 hours\n// Maximum allowed value for minimum session recording length\nvar MAX_VALUE_FOR_MIN_RECORDING_MS = 8 * 1000; // 8 seconds\n\n/*\n * Saved references to long variable names, so that closure compiler can\n * minimize file size.\n */\n\nvar ArrayProto = Array.prototype,\n    FuncProto = Function.prototype,\n    ObjProto = Object.prototype,\n    slice = ArrayProto.slice,\n    toString = ObjProto.toString,\n    hasOwnProperty = ObjProto.hasOwnProperty,\n    windowConsole = win.console,\n    navigator = win.navigator,\n    document$1 = win.document,\n    windowOpera = win.opera,\n    screen = win.screen,\n    userAgent = navigator.userAgent;\n\nvar nativeBind = FuncProto.bind,\n    nativeForEach = ArrayProto.forEach,\n    nativeIndexOf = ArrayProto.indexOf,\n    nativeMap = ArrayProto.map,\n    nativeIsArray = Array.isArray,\n    breaker = {};\n\nvar _ = {\n    trim: function(str) {\n        // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/Trim#Polyfill\n        return str.replace(/^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g, '');\n    }\n};\n\n// Console override\nvar console$1 = {\n    /** @type {function(...*)} */\n    log: function() {\n        if (Config.DEBUG && !_.isUndefined(windowConsole) && windowConsole) {\n            try {\n                windowConsole.log.apply(windowConsole, arguments);\n            } catch (err) {\n                _.each(arguments, function(arg) {\n                    windowConsole.log(arg);\n                });\n            }\n        }\n    },\n    /** @type {function(...*)} */\n    warn: function() {\n        if (Config.DEBUG && !_.isUndefined(windowConsole) && windowConsole) {\n            var args = ['Mixpanel warning:'].concat(_.toArray(arguments));\n            try {\n                windowConsole.warn.apply(windowConsole, args);\n            } catch (err) {\n                _.each(args, function(arg) {\n                    windowConsole.warn(arg);\n                });\n            }\n        }\n    },\n    /** @type {function(...*)} */\n    error: function() {\n        if (Config.DEBUG && !_.isUndefined(windowConsole) && windowConsole) {\n            var args = ['Mixpanel error:'].concat(_.toArray(arguments));\n            try {\n                windowConsole.error.apply(windowConsole, args);\n            } catch (err) {\n                _.each(args, function(arg) {\n                    windowConsole.error(arg);\n                });\n            }\n        }\n    },\n    /** @type {function(...*)} */\n    critical: function() {\n        if (!_.isUndefined(windowConsole) && windowConsole) {\n            var args = ['Mixpanel error:'].concat(_.toArray(arguments));\n            try {\n                windowConsole.error.apply(windowConsole, args);\n            } catch (err) {\n                _.each(args, function(arg) {\n                    windowConsole.error(arg);\n                });\n            }\n        }\n    }\n};\n\nvar log_func_with_prefix = function(func, prefix) {\n    return function() {\n        arguments[0] = '[' + prefix + '] ' + arguments[0];\n        return func.apply(console$1, arguments);\n    };\n};\nvar console_with_prefix = function(prefix) {\n    return {\n        log: log_func_with_prefix(console$1.log, prefix),\n        error: log_func_with_prefix(console$1.error, prefix),\n        critical: log_func_with_prefix(console$1.critical, prefix)\n    };\n};\n\n\nvar safewrap = function(f) {\n    return function() {\n        try {\n            return f.apply(this, arguments);\n        } catch (e) {\n            console$1.critical('Implementation error. Please turn on debug and contact support@mixpanel.com.');\n            if (Config.DEBUG){\n                console$1.critical(e);\n            }\n        }\n    };\n};\n\nvar safewrapClass = function(klass) {\n    var proto = klass.prototype;\n    for (var func in proto) {\n        if (typeof(proto[func]) === 'function') {\n            proto[func] = safewrap(proto[func]);\n        }\n    }\n};\n\n\n// UNDERSCORE\n// Embed part of the Underscore Library\n_.bind = function(func, context) {\n    var args, bound;\n    if (nativeBind && func.bind === nativeBind) {\n        return nativeBind.apply(func, slice.call(arguments, 1));\n    }\n    if (!_.isFunction(func)) {\n        throw new TypeError();\n    }\n    args = slice.call(arguments, 2);\n    bound = function() {\n        if (!(this instanceof bound)) {\n            return func.apply(context, args.concat(slice.call(arguments)));\n        }\n        var ctor = {};\n        ctor.prototype = func.prototype;\n        var self = new ctor();\n        ctor.prototype = null;\n        var result = func.apply(self, args.concat(slice.call(arguments)));\n        if (Object(result) === result) {\n            return result;\n        }\n        return self;\n    };\n    return bound;\n};\n\n/**\n * @param {*=} obj\n * @param {function(...*)=} iterator\n * @param {Object=} context\n */\n_.each = function(obj, iterator, context) {\n    if (obj === null || obj === undefined) {\n        return;\n    }\n    if (nativeForEach && obj.forEach === nativeForEach) {\n        obj.forEach(iterator, context);\n    } else if (obj.length === +obj.length) {\n        for (var i = 0, l = obj.length; i < l; i++) {\n            if (i in obj && iterator.call(context, obj[i], i, obj) === breaker) {\n                return;\n            }\n        }\n    } else {\n        for (var key in obj) {\n            if (hasOwnProperty.call(obj, key)) {\n                if (iterator.call(context, obj[key], key, obj) === breaker) {\n                    return;\n                }\n            }\n        }\n    }\n};\n\n_.extend = function(obj) {\n    _.each(slice.call(arguments, 1), function(source) {\n        for (var prop in source) {\n            if (source[prop] !== void 0) {\n                obj[prop] = source[prop];\n            }\n        }\n    });\n    return obj;\n};\n\n_.isArray = nativeIsArray || function(obj) {\n    return toString.call(obj) === '[object Array]';\n};\n\n// from a comment on http://dbj.org/dbj/?p=286\n// fails on only one very rare and deliberate custom object:\n// var bomb = { toString : undefined, valueOf: function(o) { return \"function BOMBA!\"; }};\n_.isFunction = function(f) {\n    try {\n        return /^\\s*\\bfunction\\b/.test(f);\n    } catch (x) {\n        return false;\n    }\n};\n\n_.isArguments = function(obj) {\n    return !!(obj && hasOwnProperty.call(obj, 'callee'));\n};\n\n_.toArray = function(iterable) {\n    if (!iterable) {\n        return [];\n    }\n    if (iterable.toArray) {\n        return iterable.toArray();\n    }\n    if (_.isArray(iterable)) {\n        return slice.call(iterable);\n    }\n    if (_.isArguments(iterable)) {\n        return slice.call(iterable);\n    }\n    return _.values(iterable);\n};\n\n_.map = function(arr, callback, context) {\n    if (nativeMap && arr.map === nativeMap) {\n        return arr.map(callback, context);\n    } else {\n        var results = [];\n        _.each(arr, function(item) {\n            results.push(callback.call(context, item));\n        });\n        return results;\n    }\n};\n\n_.keys = function(obj) {\n    var results = [];\n    if (obj === null) {\n        return results;\n    }\n    _.each(obj, function(value, key) {\n        results[results.length] = key;\n    });\n    return results;\n};\n\n_.values = function(obj) {\n    var results = [];\n    if (obj === null) {\n        return results;\n    }\n    _.each(obj, function(value) {\n        results[results.length] = value;\n    });\n    return results;\n};\n\n_.include = function(obj, target) {\n    var found = false;\n    if (obj === null) {\n        return found;\n    }\n    if (nativeIndexOf && obj.indexOf === nativeIndexOf) {\n        return obj.indexOf(target) != -1;\n    }\n    _.each(obj, function(value) {\n        if (found || (found = (value === target))) {\n            return breaker;\n        }\n    });\n    return found;\n};\n\n_.includes = function(str, needle) {\n    return str.indexOf(needle) !== -1;\n};\n\n// Underscore Addons\n_.inherit = function(subclass, superclass) {\n    subclass.prototype = new superclass();\n    subclass.prototype.constructor = subclass;\n    subclass.superclass = superclass.prototype;\n    return subclass;\n};\n\n_.isObject = function(obj) {\n    return (obj === Object(obj) && !_.isArray(obj));\n};\n\n_.isEmptyObject = function(obj) {\n    if (_.isObject(obj)) {\n        for (var key in obj) {\n            if (hasOwnProperty.call(obj, key)) {\n                return false;\n            }\n        }\n        return true;\n    }\n    return false;\n};\n\n_.isUndefined = function(obj) {\n    return obj === void 0;\n};\n\n_.isString = function(obj) {\n    return toString.call(obj) == '[object String]';\n};\n\n_.isDate = function(obj) {\n    return toString.call(obj) == '[object Date]';\n};\n\n_.isNumber = function(obj) {\n    return toString.call(obj) == '[object Number]';\n};\n\n_.isElement = function(obj) {\n    return !!(obj && obj.nodeType === 1);\n};\n\n_.encodeDates = function(obj) {\n    _.each(obj, function(v, k) {\n        if (_.isDate(v)) {\n            obj[k] = _.formatDate(v);\n        } else if (_.isObject(v)) {\n            obj[k] = _.encodeDates(v); // recurse\n        }\n    });\n    return obj;\n};\n\n_.timestamp = function() {\n    Date.now = Date.now || function() {\n        return +new Date;\n    };\n    return Date.now();\n};\n\n_.formatDate = function(d) {\n    // YYYY-MM-DDTHH:MM:SS in UTC\n    function pad(n) {\n        return n < 10 ? '0' + n : n;\n    }\n    return d.getUTCFullYear() + '-' +\n        pad(d.getUTCMonth() + 1) + '-' +\n        pad(d.getUTCDate()) + 'T' +\n        pad(d.getUTCHours()) + ':' +\n        pad(d.getUTCMinutes()) + ':' +\n        pad(d.getUTCSeconds());\n};\n\n_.strip_empty_properties = function(p) {\n    var ret = {};\n    _.each(p, function(v, k) {\n        if (_.isString(v) && v.length > 0) {\n            ret[k] = v;\n        }\n    });\n    return ret;\n};\n\n/*\n * this function returns a copy of object after truncating it.  If\n * passed an Array or Object it will iterate through obj and\n * truncate all the values recursively.\n */\n_.truncate = function(obj, length) {\n    var ret;\n\n    if (typeof(obj) === 'string') {\n        ret = obj.slice(0, length);\n    } else if (_.isArray(obj)) {\n        ret = [];\n        _.each(obj, function(val) {\n            ret.push(_.truncate(val, length));\n        });\n    } else if (_.isObject(obj)) {\n        ret = {};\n        _.each(obj, function(val, key) {\n            ret[key] = _.truncate(val, length);\n        });\n    } else {\n        ret = obj;\n    }\n\n    return ret;\n};\n\n_.JSONEncode = (function() {\n    return function(mixed_val) {\n        var value = mixed_val;\n        var quote = function(string) {\n            var escapable = /[\\\\\"\\x00-\\x1f\\x7f-\\x9f\\u00ad\\u0600-\\u0604\\u070f\\u17b4\\u17b5\\u200c-\\u200f\\u2028-\\u202f\\u2060-\\u206f\\ufeff\\ufff0-\\uffff]/g; // eslint-disable-line no-control-regex\n            var meta = { // table of character substitutions\n                '\\b': '\\\\b',\n                '\\t': '\\\\t',\n                '\\n': '\\\\n',\n                '\\f': '\\\\f',\n                '\\r': '\\\\r',\n                '\"': '\\\\\"',\n                '\\\\': '\\\\\\\\'\n            };\n\n            escapable.lastIndex = 0;\n            return escapable.test(string) ?\n                '\"' + string.replace(escapable, function(a) {\n                    var c = meta[a];\n                    return typeof c === 'string' ? c :\n                        '\\\\u' + ('0000' + a.charCodeAt(0).toString(16)).slice(-4);\n                }) + '\"' :\n                '\"' + string + '\"';\n        };\n\n        var str = function(key, holder) {\n            var gap = '';\n            var indent = '    ';\n            var i = 0; // The loop counter.\n            var k = ''; // The member key.\n            var v = ''; // The member value.\n            var length = 0;\n            var mind = gap;\n            var partial = [];\n            var value = holder[key];\n\n            // If the value has a toJSON method, call it to obtain a replacement value.\n            if (value && typeof value === 'object' &&\n                typeof value.toJSON === 'function') {\n                value = value.toJSON(key);\n            }\n\n            // What happens next depends on the value's type.\n            switch (typeof value) {\n                case 'string':\n                    return quote(value);\n\n                case 'number':\n                    // JSON numbers must be finite. Encode non-finite numbers as null.\n                    return isFinite(value) ? String(value) : 'null';\n\n                case 'boolean':\n                case 'null':\n                    // If the value is a boolean or null, convert it to a string. Note:\n                    // typeof null does not produce 'null'. The case is included here in\n                    // the remote chance that this gets fixed someday.\n\n                    return String(value);\n\n                case 'object':\n                    // If the type is 'object', we might be dealing with an object or an array or\n                    // null.\n                    // Due to a specification blunder in ECMAScript, typeof null is 'object',\n                    // so watch out for that case.\n                    if (!value) {\n                        return 'null';\n                    }\n\n                    // Make an array to hold the partial results of stringifying this object value.\n                    gap += indent;\n                    partial = [];\n\n                    // Is the value an array?\n                    if (toString.apply(value) === '[object Array]') {\n                        // The value is an array. Stringify every element. Use null as a placeholder\n                        // for non-JSON values.\n\n                        length = value.length;\n                        for (i = 0; i < length; i += 1) {\n                            partial[i] = str(i, value) || 'null';\n                        }\n\n                        // Join all of the elements together, separated with commas, and wrap them in\n                        // brackets.\n                        v = partial.length === 0 ? '[]' :\n                            gap ? '[\\n' + gap +\n                            partial.join(',\\n' + gap) + '\\n' +\n                            mind + ']' :\n                                '[' + partial.join(',') + ']';\n                        gap = mind;\n                        return v;\n                    }\n\n                    // Iterate through all of the keys in the object.\n                    for (k in value) {\n                        if (hasOwnProperty.call(value, k)) {\n                            v = str(k, value);\n                            if (v) {\n                                partial.push(quote(k) + (gap ? ': ' : ':') + v);\n                            }\n                        }\n                    }\n\n                    // Join all of the member texts together, separated with commas,\n                    // and wrap them in braces.\n                    v = partial.length === 0 ? '{}' :\n                        gap ? '{' + partial.join(',') + '' +\n                        mind + '}' : '{' + partial.join(',') + '}';\n                    gap = mind;\n                    return v;\n            }\n        };\n\n        // Make a fake root object containing our value under the key of ''.\n        // Return the result of stringifying the value.\n        return str('', {\n            '': value\n        });\n    };\n})();\n\n/**\n * From https://github.com/douglascrockford/JSON-js/blob/master/json_parse.js\n * Slightly modified to throw a real Error rather than a POJO\n */\n_.JSONDecode = (function() {\n    var at, // The index of the current character\n        ch, // The current character\n        escapee = {\n            '\"': '\"',\n            '\\\\': '\\\\',\n            '/': '/',\n            'b': '\\b',\n            'f': '\\f',\n            'n': '\\n',\n            'r': '\\r',\n            't': '\\t'\n        },\n        text,\n        error = function(m) {\n            var e = new SyntaxError(m);\n            e.at = at;\n            e.text = text;\n            throw e;\n        },\n        next = function(c) {\n            // If a c parameter is provided, verify that it matches the current character.\n            if (c && c !== ch) {\n                error('Expected \\'' + c + '\\' instead of \\'' + ch + '\\'');\n            }\n            // Get the next character. When there are no more characters,\n            // return the empty string.\n            ch = text.charAt(at);\n            at += 1;\n            return ch;\n        },\n        number = function() {\n            // Parse a number value.\n            var number,\n                string = '';\n\n            if (ch === '-') {\n                string = '-';\n                next('-');\n            }\n            while (ch >= '0' && ch <= '9') {\n                string += ch;\n                next();\n            }\n            if (ch === '.') {\n                string += '.';\n                while (next() && ch >= '0' && ch <= '9') {\n                    string += ch;\n                }\n            }\n            if (ch === 'e' || ch === 'E') {\n                string += ch;\n                next();\n                if (ch === '-' || ch === '+') {\n                    string += ch;\n                    next();\n                }\n                while (ch >= '0' && ch <= '9') {\n                    string += ch;\n                    next();\n                }\n            }\n            number = +string;\n            if (!isFinite(number)) {\n                error('Bad number');\n            } else {\n                return number;\n            }\n        },\n\n        string = function() {\n            // Parse a string value.\n            var hex,\n                i,\n                string = '',\n                uffff;\n            // When parsing for string values, we must look for \" and \\ characters.\n            if (ch === '\"') {\n                while (next()) {\n                    if (ch === '\"') {\n                        next();\n                        return string;\n                    }\n                    if (ch === '\\\\') {\n                        next();\n                        if (ch === 'u') {\n                            uffff = 0;\n                            for (i = 0; i < 4; i += 1) {\n                                hex = parseInt(next(), 16);\n                                if (!isFinite(hex)) {\n                                    break;\n                                }\n                                uffff = uffff * 16 + hex;\n                            }\n                            string += String.fromCharCode(uffff);\n                        } else if (typeof escapee[ch] === 'string') {\n                            string += escapee[ch];\n                        } else {\n                            break;\n                        }\n                    } else {\n                        string += ch;\n                    }\n                }\n            }\n            error('Bad string');\n        },\n        white = function() {\n            // Skip whitespace.\n            while (ch && ch <= ' ') {\n                next();\n            }\n        },\n        word = function() {\n            // true, false, or null.\n            switch (ch) {\n                case 't':\n                    next('t');\n                    next('r');\n                    next('u');\n                    next('e');\n                    return true;\n                case 'f':\n                    next('f');\n                    next('a');\n                    next('l');\n                    next('s');\n                    next('e');\n                    return false;\n                case 'n':\n                    next('n');\n                    next('u');\n                    next('l');\n                    next('l');\n                    return null;\n            }\n            error('Unexpected \"' + ch + '\"');\n        },\n        value, // Placeholder for the value function.\n        array = function() {\n            // Parse an array value.\n            var array = [];\n\n            if (ch === '[') {\n                next('[');\n                white();\n                if (ch === ']') {\n                    next(']');\n                    return array; // empty array\n                }\n                while (ch) {\n                    array.push(value());\n                    white();\n                    if (ch === ']') {\n                        next(']');\n                        return array;\n                    }\n                    next(',');\n                    white();\n                }\n            }\n            error('Bad array');\n        },\n        object = function() {\n            // Parse an object value.\n            var key,\n                object = {};\n\n            if (ch === '{') {\n                next('{');\n                white();\n                if (ch === '}') {\n                    next('}');\n                    return object; // empty object\n                }\n                while (ch) {\n                    key = string();\n                    white();\n                    next(':');\n                    if (Object.hasOwnProperty.call(object, key)) {\n                        error('Duplicate key \"' + key + '\"');\n                    }\n                    object[key] = value();\n                    white();\n                    if (ch === '}') {\n                        next('}');\n                        return object;\n                    }\n                    next(',');\n                    white();\n                }\n            }\n            error('Bad object');\n        };\n\n    value = function() {\n        // Parse a JSON value. It could be an object, an array, a string,\n        // a number, or a word.\n        white();\n        switch (ch) {\n            case '{':\n                return object();\n            case '[':\n                return array();\n            case '\"':\n                return string();\n            case '-':\n                return number();\n            default:\n                return ch >= '0' && ch <= '9' ? number() : word();\n        }\n    };\n\n    // Return the json_parse function. It will have access to all of the\n    // above functions and variables.\n    return function(source) {\n        var result;\n\n        text = source;\n        at = 0;\n        ch = ' ';\n        result = value();\n        white();\n        if (ch) {\n            error('Syntax error');\n        }\n\n        return result;\n    };\n})();\n\n_.base64Encode = function(data) {\n    var b64 = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';\n    var o1, o2, o3, h1, h2, h3, h4, bits, i = 0,\n        ac = 0,\n        enc = '',\n        tmp_arr = [];\n\n    if (!data) {\n        return data;\n    }\n\n    data = _.utf8Encode(data);\n\n    do { // pack three octets into four hexets\n        o1 = data.charCodeAt(i++);\n        o2 = data.charCodeAt(i++);\n        o3 = data.charCodeAt(i++);\n\n        bits = o1 << 16 | o2 << 8 | o3;\n\n        h1 = bits >> 18 & 0x3f;\n        h2 = bits >> 12 & 0x3f;\n        h3 = bits >> 6 & 0x3f;\n        h4 = bits & 0x3f;\n\n        // use hexets to index into b64, and append result to encoded string\n        tmp_arr[ac++] = b64.charAt(h1) + b64.charAt(h2) + b64.charAt(h3) + b64.charAt(h4);\n    } while (i < data.length);\n\n    enc = tmp_arr.join('');\n\n    switch (data.length % 3) {\n        case 1:\n            enc = enc.slice(0, -2) + '==';\n            break;\n        case 2:\n            enc = enc.slice(0, -1) + '=';\n            break;\n    }\n\n    return enc;\n};\n\n_.utf8Encode = function(string) {\n    string = (string + '').replace(/\\r\\n/g, '\\n').replace(/\\r/g, '\\n');\n\n    var utftext = '',\n        start,\n        end;\n    var stringl = 0,\n        n;\n\n    start = end = 0;\n    stringl = string.length;\n\n    for (n = 0; n < stringl; n++) {\n        var c1 = string.charCodeAt(n);\n        var enc = null;\n\n        if (c1 < 128) {\n            end++;\n        } else if ((c1 > 127) && (c1 < 2048)) {\n            enc = String.fromCharCode((c1 >> 6) | 192, (c1 & 63) | 128);\n        } else {\n            enc = String.fromCharCode((c1 >> 12) | 224, ((c1 >> 6) & 63) | 128, (c1 & 63) | 128);\n        }\n        if (enc !== null) {\n            if (end > start) {\n                utftext += string.substring(start, end);\n            }\n            utftext += enc;\n            start = end = n + 1;\n        }\n    }\n\n    if (end > start) {\n        utftext += string.substring(start, string.length);\n    }\n\n    return utftext;\n};\n\n_.UUID = function() {\n    try {\n        // use native Crypto API when available\n        return win['crypto']['randomUUID']();\n    } catch (err) {\n        // fall back to generating our own UUID\n        // based on https://gist.github.com/scwood/3bff42cc005cc20ab7ec98f0d8e1d59d\n        var uuid = new Array(36);\n        for (var i = 0; i < 36; i++) {\n            uuid[i] = Math.floor(Math.random() * 16);\n        }\n        uuid[14] = 4; // set bits 12-15 of time-high-and-version to 0100\n        uuid[19] = uuid[19] &= -5; // set bit 6 of clock-seq-and-reserved to zero\n        uuid[19] = uuid[19] |= (1 << 3); // set bit 7 of clock-seq-and-reserved to one\n        uuid[8] = uuid[13] = uuid[18] = uuid[23] = '-';\n\n        return _.map(uuid, function(x) {\n            return x.toString(16);\n        }).join('');\n    }\n};\n\n// _.isBlockedUA()\n// This is to block various web spiders from executing our JS and\n// sending false tracking data\nvar BLOCKED_UA_STRS = [\n    'ahrefsbot',\n    'ahrefssiteaudit',\n    'amazonbot',\n    'baiduspider',\n    'bingbot',\n    'bingpreview',\n    'chrome-lighthouse',\n    'facebookexternal',\n    'petalbot',\n    'pinterest',\n    'screaming frog',\n    'yahoo! slurp',\n    'yandex',\n\n    // a whole bunch of goog-specific crawlers\n    // https://developers.google.com/search/docs/advanced/crawling/overview-google-crawlers\n    'adsbot-google',\n    'apis-google',\n    'duplexweb-google',\n    'feedfetcher-google',\n    'google favicon',\n    'google web preview',\n    'google-read-aloud',\n    'googlebot',\n    'googleweblight',\n    'mediapartners-google',\n    'storebot-google'\n];\n_.isBlockedUA = function(ua) {\n    var i;\n    ua = ua.toLowerCase();\n    for (i = 0; i < BLOCKED_UA_STRS.length; i++) {\n        if (ua.indexOf(BLOCKED_UA_STRS[i]) !== -1) {\n            return true;\n        }\n    }\n    return false;\n};\n\n/**\n * @param {Object=} formdata\n * @param {string=} arg_separator\n */\n_.HTTPBuildQuery = function(formdata, arg_separator) {\n    var use_val, use_key, tmp_arr = [];\n\n    if (_.isUndefined(arg_separator)) {\n        arg_separator = '&';\n    }\n\n    _.each(formdata, function(val, key) {\n        use_val = encodeURIComponent(val.toString());\n        use_key = encodeURIComponent(key);\n        tmp_arr[tmp_arr.length] = use_key + '=' + use_val;\n    });\n\n    return tmp_arr.join(arg_separator);\n};\n\n_.getQueryParam = function(url, param) {\n    // Expects a raw URL\n\n    param = param.replace(/[[]/g, '\\\\[').replace(/[\\]]/g, '\\\\]');\n    var regexS = '[\\\\?&]' + param + '=([^&#]*)',\n        regex = new RegExp(regexS),\n        results = regex.exec(url);\n    if (results === null || (results && typeof(results[1]) !== 'string' && results[1].length)) {\n        return '';\n    } else {\n        var result = results[1];\n        try {\n            result = decodeURIComponent(result);\n        } catch(err) {\n            console$1.error('Skipping decoding for malformed query param: ' + result);\n        }\n        return result.replace(/\\+/g, ' ');\n    }\n};\n\n\n// _.cookie\n// Methods partially borrowed from quirksmode.org/js/cookies.html\n_.cookie = {\n    get: function(name) {\n        var nameEQ = name + '=';\n        var ca = document$1.cookie.split(';');\n        for (var i = 0; i < ca.length; i++) {\n            var c = ca[i];\n            while (c.charAt(0) == ' ') {\n                c = c.substring(1, c.length);\n            }\n            if (c.indexOf(nameEQ) === 0) {\n                return decodeURIComponent(c.substring(nameEQ.length, c.length));\n            }\n        }\n        return null;\n    },\n\n    parse: function(name) {\n        var cookie;\n        try {\n            cookie = _.JSONDecode(_.cookie.get(name)) || {};\n        } catch (err) {\n            // noop\n        }\n        return cookie;\n    },\n\n    set_seconds: function(name, value, seconds, is_cross_subdomain, is_secure, is_cross_site, domain_override) {\n        var cdomain = '',\n            expires = '',\n            secure = '';\n\n        if (domain_override) {\n            cdomain = '; domain=' + domain_override;\n        } else if (is_cross_subdomain) {\n            var domain = extract_domain(document$1.location.hostname);\n            cdomain = domain ? '; domain=.' + domain : '';\n        }\n\n        if (seconds) {\n            var date = new Date();\n            date.setTime(date.getTime() + (seconds * 1000));\n            expires = '; expires=' + date.toGMTString();\n        }\n\n        if (is_cross_site) {\n            is_secure = true;\n            secure = '; SameSite=None';\n        }\n        if (is_secure) {\n            secure += '; secure';\n        }\n\n        document$1.cookie = name + '=' + encodeURIComponent(value) + expires + '; path=/' + cdomain + secure;\n    },\n\n    set: function(name, value, days, is_cross_subdomain, is_secure, is_cross_site, domain_override) {\n        var cdomain = '', expires = '', secure = '';\n\n        if (domain_override) {\n            cdomain = '; domain=' + domain_override;\n        } else if (is_cross_subdomain) {\n            var domain = extract_domain(document$1.location.hostname);\n            cdomain = domain ? '; domain=.' + domain : '';\n        }\n\n        if (days) {\n            var date = new Date();\n            date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000));\n            expires = '; expires=' + date.toGMTString();\n        }\n\n        if (is_cross_site) {\n            is_secure = true;\n            secure = '; SameSite=None';\n        }\n        if (is_secure) {\n            secure += '; secure';\n        }\n\n        var new_cookie_val = name + '=' + encodeURIComponent(value) + expires + '; path=/' + cdomain + secure;\n        document$1.cookie = new_cookie_val;\n        return new_cookie_val;\n    },\n\n    remove: function(name, is_cross_subdomain, domain_override) {\n        _.cookie.set(name, '', -1, is_cross_subdomain, false, false, domain_override);\n    }\n};\n\nvar _testStorageSupported = function (storage) {\n    var supported = true;\n    try {\n        var key = '__mplss_' + cheap_guid(8),\n            val = 'xyz';\n        storage.setItem(key, val);\n        if (storage.getItem(key) !== val) {\n            supported = false;\n        }\n        storage.removeItem(key);\n    } catch (err) {\n        supported = false;\n    }\n    return supported;\n};\n\nvar _localStorageSupported = null;\nvar localStorageSupported = function(storage, forceCheck) {\n    if (_localStorageSupported !== null && !forceCheck) {\n        return _localStorageSupported;\n    }\n    return _localStorageSupported = _testStorageSupported(storage || win.localStorage);\n};\n\nvar _sessionStorageSupported = null;\nvar sessionStorageSupported = function(storage, forceCheck) {\n    if (_sessionStorageSupported !== null && !forceCheck) {\n        return _sessionStorageSupported;\n    }\n    return _sessionStorageSupported = _testStorageSupported(storage || win.sessionStorage);\n};\n\nfunction _storageWrapper(storage, name, is_supported_fn) {\n    var log_error = function(msg) {\n        console$1.error(name + ' error: ' + msg);\n    };\n\n    return {\n        is_supported: function(forceCheck) {\n            var supported = is_supported_fn(storage, forceCheck);\n            if (!supported) {\n                console$1.error(name + ' unsupported');\n            }\n            return supported;\n        },\n        error: log_error,\n        get: function(key) {\n            try {\n                return storage.getItem(key);\n            } catch (err) {\n                log_error(err);\n            }\n            return null;\n        },\n        parse: function(key) {\n            try {\n                return _.JSONDecode(storage.getItem(key)) || {};\n            } catch (err) {\n                // noop\n            }\n            return null;\n        },\n        set: function(key, value) {\n            try {\n                storage.setItem(key, value);\n            } catch (err) {\n                log_error(err);\n            }\n        },\n        remove: function(key) {\n            try {\n                storage.removeItem(key);\n            } catch (err) {\n                log_error(err);\n            }\n        }\n    };\n}\n\n_.localStorage = _storageWrapper(win.localStorage, 'localStorage', localStorageSupported);\n_.sessionStorage = _storageWrapper(win.sessionStorage, 'sessionStorage', sessionStorageSupported);\n\n_.register_event = (function() {\n    // written by Dean Edwards, 2005\n    // with input from Tino Zijdel - crisp@xs4all.nl\n    // with input from Carl Sverre - mail@carlsverre.com\n    // with input from Mixpanel\n    // http://dean.edwards.name/weblog/2005/10/add-event/\n    // https://gist.github.com/1930440\n\n    /**\n     * @param {Object} element\n     * @param {string} type\n     * @param {function(...*)} handler\n     * @param {boolean=} oldSchool\n     * @param {boolean=} useCapture\n     */\n    var register_event = function(element, type, handler, oldSchool, useCapture) {\n        if (!element) {\n            console$1.error('No valid element provided to register_event');\n            return;\n        }\n\n        if (element.addEventListener && !oldSchool) {\n            element.addEventListener(type, handler, !!useCapture);\n        } else {\n            var ontype = 'on' + type;\n            var old_handler = element[ontype]; // can be undefined\n            element[ontype] = makeHandler(element, handler, old_handler);\n        }\n    };\n\n    function makeHandler(element, new_handler, old_handlers) {\n        var handler = function(event) {\n            event = event || fixEvent(win.event);\n\n            // this basically happens in firefox whenever another script\n            // overwrites the onload callback and doesn't pass the event\n            // object to previously defined callbacks.  All the browsers\n            // that don't define window.event implement addEventListener\n            // so the dom_loaded handler will still be fired as usual.\n            if (!event) {\n                return undefined;\n            }\n\n            var ret = true;\n            var old_result, new_result;\n\n            if (_.isFunction(old_handlers)) {\n                old_result = old_handlers(event);\n            }\n            new_result = new_handler.call(element, event);\n\n            if ((false === old_result) || (false === new_result)) {\n                ret = false;\n            }\n\n            return ret;\n        };\n\n        return handler;\n    }\n\n    function fixEvent(event) {\n        if (event) {\n            event.preventDefault = fixEvent.preventDefault;\n            event.stopPropagation = fixEvent.stopPropagation;\n        }\n        return event;\n    }\n    fixEvent.preventDefault = function() {\n        this.returnValue = false;\n    };\n    fixEvent.stopPropagation = function() {\n        this.cancelBubble = true;\n    };\n\n    return register_event;\n})();\n\n\nvar TOKEN_MATCH_REGEX = new RegExp('^(\\\\w*)\\\\[(\\\\w+)([=~\\\\|\\\\^\\\\$\\\\*]?)=?\"?([^\\\\]\"]*)\"?\\\\]$');\n\n_.dom_query = (function() {\n    /* document.getElementsBySelector(selector)\n    - returns an array of element objects from the current document\n    matching the CSS selector. Selectors can contain element names,\n    class names and ids and can be nested. For example:\n\n    elements = document.getElementsBySelector('div#main p a.external')\n\n    Will return an array of all 'a' elements with 'external' in their\n    class attribute that are contained inside 'p' elements that are\n    contained inside the 'div' element which has id=\"main\"\n\n    New in version 0.4: Support for CSS2 and CSS3 attribute selectors:\n    See http://www.w3.org/TR/css3-selectors/#attribute-selectors\n\n    Version 0.4 - Simon Willison, March 25th 2003\n    -- Works in Phoenix 0.5, Mozilla 1.3, Opera 7, Internet Explorer 6, Internet Explorer 5 on Windows\n    -- Opera 7 fails\n\n    Version 0.5 - Carl Sverre, Jan 7th 2013\n    -- Now uses jQuery-esque `hasClass` for testing class name\n    equality.  This fixes a bug related to '-' characters being\n    considered not part of a 'word' in regex.\n    */\n\n    function getAllChildren(e) {\n        // Returns all children of element. Workaround required for IE5/Windows. Ugh.\n        return e.all ? e.all : e.getElementsByTagName('*');\n    }\n\n    var bad_whitespace = /[\\t\\r\\n]/g;\n\n    function hasClass(elem, selector) {\n        var className = ' ' + selector + ' ';\n        return ((' ' + elem.className + ' ').replace(bad_whitespace, ' ').indexOf(className) >= 0);\n    }\n\n    function getElementsBySelector(selector) {\n        // Attempt to fail gracefully in lesser browsers\n        if (!document$1.getElementsByTagName) {\n            return [];\n        }\n        // Split selector in to tokens\n        var tokens = selector.split(' ');\n        var token, bits, tagName, found, foundCount, i, j, k, elements, currentContextIndex;\n        var currentContext = [document$1];\n        for (i = 0; i < tokens.length; i++) {\n            token = tokens[i].replace(/^\\s+/, '').replace(/\\s+$/, '');\n            if (token.indexOf('#') > -1) {\n                // Token is an ID selector\n                bits = token.split('#');\n                tagName = bits[0];\n                var id = bits[1];\n                var element = document$1.getElementById(id);\n                if (!element || (tagName && element.nodeName.toLowerCase() != tagName)) {\n                    // element not found or tag with that ID not found, return false\n                    return [];\n                }\n                // Set currentContext to contain just this element\n                currentContext = [element];\n                continue; // Skip to next token\n            }\n            if (token.indexOf('.') > -1) {\n                // Token contains a class selector\n                bits = token.split('.');\n                tagName = bits[0];\n                var className = bits[1];\n                if (!tagName) {\n                    tagName = '*';\n                }\n                // Get elements matching tag, filter them for class selector\n                found = [];\n                foundCount = 0;\n                for (j = 0; j < currentContext.length; j++) {\n                    if (tagName == '*') {\n                        elements = getAllChildren(currentContext[j]);\n                    } else {\n                        elements = currentContext[j].getElementsByTagName(tagName);\n                    }\n                    for (k = 0; k < elements.length; k++) {\n                        found[foundCount++] = elements[k];\n                    }\n                }\n                currentContext = [];\n                currentContextIndex = 0;\n                for (j = 0; j < found.length; j++) {\n                    if (found[j].className &&\n                        _.isString(found[j].className) && // some SVG elements have classNames which are not strings\n                        hasClass(found[j], className)\n                    ) {\n                        currentContext[currentContextIndex++] = found[j];\n                    }\n                }\n                continue; // Skip to next token\n            }\n            // Code to deal with attribute selectors\n            var token_match = token.match(TOKEN_MATCH_REGEX);\n            if (token_match) {\n                tagName = token_match[1];\n                var attrName = token_match[2];\n                var attrOperator = token_match[3];\n                var attrValue = token_match[4];\n                if (!tagName) {\n                    tagName = '*';\n                }\n                // Grab all of the tagName elements within current context\n                found = [];\n                foundCount = 0;\n                for (j = 0; j < currentContext.length; j++) {\n                    if (tagName == '*') {\n                        elements = getAllChildren(currentContext[j]);\n                    } else {\n                        elements = currentContext[j].getElementsByTagName(tagName);\n                    }\n                    for (k = 0; k < elements.length; k++) {\n                        found[foundCount++] = elements[k];\n                    }\n                }\n                currentContext = [];\n                currentContextIndex = 0;\n                var checkFunction; // This function will be used to filter the elements\n                switch (attrOperator) {\n                    case '=': // Equality\n                        checkFunction = function(e) {\n                            return (e.getAttribute(attrName) == attrValue);\n                        };\n                        break;\n                    case '~': // Match one of space seperated words\n                        checkFunction = function(e) {\n                            return (e.getAttribute(attrName).match(new RegExp('\\\\b' + attrValue + '\\\\b')));\n                        };\n                        break;\n                    case '|': // Match start with value followed by optional hyphen\n                        checkFunction = function(e) {\n                            return (e.getAttribute(attrName).match(new RegExp('^' + attrValue + '-?')));\n                        };\n                        break;\n                    case '^': // Match starts with value\n                        checkFunction = function(e) {\n                            return (e.getAttribute(attrName).indexOf(attrValue) === 0);\n                        };\n                        break;\n                    case '$': // Match ends with value - fails with \"Warning\" in Opera 7\n                        checkFunction = function(e) {\n                            return (e.getAttribute(attrName).lastIndexOf(attrValue) == e.getAttribute(attrName).length - attrValue.length);\n                        };\n                        break;\n                    case '*': // Match ends with value\n                        checkFunction = function(e) {\n                            return (e.getAttribute(attrName).indexOf(attrValue) > -1);\n                        };\n                        break;\n                    default:\n                        // Just test for existence of attribute\n                        checkFunction = function(e) {\n                            return e.getAttribute(attrName);\n                        };\n                }\n                currentContext = [];\n                currentContextIndex = 0;\n                for (j = 0; j < found.length; j++) {\n                    if (checkFunction(found[j])) {\n                        currentContext[currentContextIndex++] = found[j];\n                    }\n                }\n                // alert('Attribute Selector: '+tagName+' '+attrName+' '+attrOperator+' '+attrValue);\n                continue; // Skip to next token\n            }\n            // If we get here, token is JUST an element (not a class or ID selector)\n            tagName = token;\n            found = [];\n            foundCount = 0;\n            for (j = 0; j < currentContext.length; j++) {\n                elements = currentContext[j].getElementsByTagName(tagName);\n                for (k = 0; k < elements.length; k++) {\n                    found[foundCount++] = elements[k];\n                }\n            }\n            currentContext = found;\n        }\n        return currentContext;\n    }\n\n    return function(query) {\n        if (_.isElement(query)) {\n            return [query];\n        } else if (_.isObject(query) && !_.isUndefined(query.length)) {\n            return query;\n        } else {\n            return getElementsBySelector.call(this, query);\n        }\n    };\n})();\n\nvar CAMPAIGN_KEYWORDS = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_content', 'utm_term', 'utm_id', 'utm_source_platform','utm_campaign_id', 'utm_creative_format', 'utm_marketing_tactic'];\nvar CLICK_IDS = ['dclid', 'fbclid', 'gclid', 'ko_click_id', 'li_fat_id', 'msclkid', 'sccid', 'ttclid', 'twclid', 'wbraid'];\n\n_.info = {\n    campaignParams: function(default_value) {\n        var kw = '',\n            params = {};\n        _.each(CAMPAIGN_KEYWORDS, function(kwkey) {\n            kw = _.getQueryParam(document$1.URL, kwkey);\n            if (kw.length) {\n                params[kwkey] = kw;\n            } else if (default_value !== undefined) {\n                params[kwkey] = default_value;\n            }\n        });\n\n        return params;\n    },\n\n    clickParams: function() {\n        var id = '',\n            params = {};\n        _.each(CLICK_IDS, function(idkey) {\n            id = _.getQueryParam(document$1.URL, idkey);\n            if (id.length) {\n                params[idkey] = id;\n            }\n        });\n\n        return params;\n    },\n\n    marketingParams: function() {\n        return _.extend(_.info.campaignParams(), _.info.clickParams());\n    },\n\n    searchEngine: function(referrer) {\n        if (referrer.search('https?://(.*)google.([^/?]*)') === 0) {\n            return 'google';\n        } else if (referrer.search('https?://(.*)bing.com') === 0) {\n            return 'bing';\n        } else if (referrer.search('https?://(.*)yahoo.com') === 0) {\n            return 'yahoo';\n        } else if (referrer.search('https?://(.*)duckduckgo.com') === 0) {\n            return 'duckduckgo';\n        } else {\n            return null;\n        }\n    },\n\n    searchInfo: function(referrer) {\n        var search = _.info.searchEngine(referrer),\n            param = (search != 'yahoo') ? 'q' : 'p',\n            ret = {};\n\n        if (search !== null) {\n            ret['$search_engine'] = search;\n\n            var keyword = _.getQueryParam(referrer, param);\n            if (keyword.length) {\n                ret['mp_keyword'] = keyword;\n            }\n        }\n\n        return ret;\n    },\n\n    /**\n     * This function detects which browser is running this script.\n     * The order of the checks are important since many user agents\n     * include key words used in later checks.\n     */\n    browser: function(user_agent, vendor, opera) {\n        vendor = vendor || ''; // vendor is undefined for at least IE9\n        if (opera || _.includes(user_agent, ' OPR/')) {\n            if (_.includes(user_agent, 'Mini')) {\n                return 'Opera Mini';\n            }\n            return 'Opera';\n        } else if (/(BlackBerry|PlayBook|BB10)/i.test(user_agent)) {\n            return 'BlackBerry';\n        } else if (_.includes(user_agent, 'IEMobile') || _.includes(user_agent, 'WPDesktop')) {\n            return 'Internet Explorer Mobile';\n        } else if (_.includes(user_agent, 'SamsungBrowser/')) {\n            // https://developer.samsung.com/internet/user-agent-string-format\n            return 'Samsung Internet';\n        } else if (_.includes(user_agent, 'Edge') || _.includes(user_agent, 'Edg/')) {\n            return 'Microsoft Edge';\n        } else if (_.includes(user_agent, 'FBIOS')) {\n            return 'Facebook Mobile';\n        } else if (_.includes(user_agent, 'Whale/')) {\n            // https://user-agents.net/browsers/whale-browser\n            return 'Whale Browser';\n        } else if (_.includes(user_agent, 'Chrome')) {\n            return 'Chrome';\n        } else if (_.includes(user_agent, 'CriOS')) {\n            return 'Chrome iOS';\n        } else if (_.includes(user_agent, 'UCWEB') || _.includes(user_agent, 'UCBrowser')) {\n            return 'UC Browser';\n        } else if (_.includes(user_agent, 'FxiOS')) {\n            return 'Firefox iOS';\n        } else if (_.includes(vendor, 'Apple')) {\n            if (_.includes(user_agent, 'Mobile')) {\n                return 'Mobile Safari';\n            }\n            return 'Safari';\n        } else if (_.includes(user_agent, 'Android')) {\n            return 'Android Mobile';\n        } else if (_.includes(user_agent, 'Konqueror')) {\n            return 'Konqueror';\n        } else if (_.includes(user_agent, 'Firefox')) {\n            return 'Firefox';\n        } else if (_.includes(user_agent, 'MSIE') || _.includes(user_agent, 'Trident/')) {\n            return 'Internet Explorer';\n        } else if (_.includes(user_agent, 'Gecko')) {\n            return 'Mozilla';\n        } else {\n            return '';\n        }\n    },\n\n    /**\n     * This function detects which browser version is running this script,\n     * parsing major and minor version (e.g., 42.1). User agent strings from:\n     * http://www.useragentstring.com/pages/useragentstring.php\n     */\n    browserVersion: function(userAgent, vendor, opera) {\n        var browser = _.info.browser(userAgent, vendor, opera);\n        var versionRegexs = {\n            'Internet Explorer Mobile': /rv:(\\d+(\\.\\d+)?)/,\n            'Microsoft Edge': /Edge?\\/(\\d+(\\.\\d+)?)/,\n            'Chrome': /Chrome\\/(\\d+(\\.\\d+)?)/,\n            'Chrome iOS': /CriOS\\/(\\d+(\\.\\d+)?)/,\n            'UC Browser' : /(UCBrowser|UCWEB)\\/(\\d+(\\.\\d+)?)/,\n            'Safari': /Version\\/(\\d+(\\.\\d+)?)/,\n            'Mobile Safari': /Version\\/(\\d+(\\.\\d+)?)/,\n            'Opera': /(Opera|OPR)\\/(\\d+(\\.\\d+)?)/,\n            'Firefox': /Firefox\\/(\\d+(\\.\\d+)?)/,\n            'Firefox iOS': /FxiOS\\/(\\d+(\\.\\d+)?)/,\n            'Konqueror': /Konqueror:(\\d+(\\.\\d+)?)/,\n            'BlackBerry': /BlackBerry (\\d+(\\.\\d+)?)/,\n            'Android Mobile': /android\\s(\\d+(\\.\\d+)?)/,\n            'Samsung Internet': /SamsungBrowser\\/(\\d+(\\.\\d+)?)/,\n            'Internet Explorer': /(rv:|MSIE )(\\d+(\\.\\d+)?)/,\n            'Mozilla': /rv:(\\d+(\\.\\d+)?)/,\n            'Whale Browser': /Whale\\/(\\d+(\\.\\d+)?)/\n        };\n        var regex = versionRegexs[browser];\n        if (regex === undefined) {\n            return null;\n        }\n        var matches = userAgent.match(regex);\n        if (!matches) {\n            return null;\n        }\n        return parseFloat(matches[matches.length - 2]);\n    },\n\n    os: function() {\n        var a = userAgent;\n        if (/Windows/i.test(a)) {\n            if (/Phone/.test(a) || /WPDesktop/.test(a)) {\n                return 'Windows Phone';\n            }\n            return 'Windows';\n        } else if (/(iPhone|iPad|iPod)/.test(a)) {\n            return 'iOS';\n        } else if (/Android/.test(a)) {\n            return 'Android';\n        } else if (/(BlackBerry|PlayBook|BB10)/i.test(a)) {\n            return 'BlackBerry';\n        } else if (/Mac/i.test(a)) {\n            return 'Mac OS X';\n        } else if (/Linux/.test(a)) {\n            return 'Linux';\n        } else if (/CrOS/.test(a)) {\n            return 'Chrome OS';\n        } else {\n            return '';\n        }\n    },\n\n    device: function(user_agent) {\n        if (/Windows Phone/i.test(user_agent) || /WPDesktop/.test(user_agent)) {\n            return 'Windows Phone';\n        } else if (/iPad/.test(user_agent)) {\n            return 'iPad';\n        } else if (/iPod/.test(user_agent)) {\n            return 'iPod Touch';\n        } else if (/iPhone/.test(user_agent)) {\n            return 'iPhone';\n        } else if (/(BlackBerry|PlayBook|BB10)/i.test(user_agent)) {\n            return 'BlackBerry';\n        } else if (/Android/.test(user_agent)) {\n            return 'Android';\n        } else {\n            return '';\n        }\n    },\n\n    referringDomain: function(referrer) {\n        var split = referrer.split('/');\n        if (split.length >= 3) {\n            return split[2];\n        }\n        return '';\n    },\n\n    currentUrl: function() {\n        return win.location.href;\n    },\n\n    properties: function(extra_props) {\n        if (typeof extra_props !== 'object') {\n            extra_props = {};\n        }\n        return _.extend(_.strip_empty_properties({\n            '$os': _.info.os(),\n            '$browser': _.info.browser(userAgent, navigator.vendor, windowOpera),\n            '$referrer': document$1.referrer,\n            '$referring_domain': _.info.referringDomain(document$1.referrer),\n            '$device': _.info.device(userAgent)\n        }), {\n            '$current_url': _.info.currentUrl(),\n            '$browser_version': _.info.browserVersion(userAgent, navigator.vendor, windowOpera),\n            '$screen_height': screen.height,\n            '$screen_width': screen.width,\n            'mp_lib': 'web',\n            '$lib_version': Config.LIB_VERSION,\n            '$insert_id': cheap_guid(),\n            'time': _.timestamp() / 1000 // epoch time in seconds\n        }, _.strip_empty_properties(extra_props));\n    },\n\n    people_properties: function() {\n        return _.extend(_.strip_empty_properties({\n            '$os': _.info.os(),\n            '$browser': _.info.browser(userAgent, navigator.vendor, windowOpera)\n        }), {\n            '$browser_version': _.info.browserVersion(userAgent, navigator.vendor, windowOpera)\n        });\n    },\n\n    mpPageViewProperties: function() {\n        return _.strip_empty_properties({\n            'current_page_title': document$1.title,\n            'current_domain': win.location.hostname,\n            'current_url_path': win.location.pathname,\n            'current_url_protocol': win.location.protocol,\n            'current_url_search': win.location.search\n        });\n    }\n};\n\n/**\n * Returns a throttled function that will only run at most every `waitMs` and returns a promise that resolves with the next invocation.\n * Throttled calls will build up a batch of args and invoke the callback with all args since the last invocation.\n */\nvar batchedThrottle = function (fn, waitMs) {\n    var timeoutPromise = null;\n    var throttledItems = [];\n    return function (item) {\n        var self = this;\n        throttledItems.push(item);\n\n        if (!timeoutPromise) {\n            timeoutPromise = new PromisePolyfill(function (resolve) {\n                setTimeout(function () {\n                    var returnValue = fn.apply(self, [throttledItems]);\n                    timeoutPromise = null;\n                    throttledItems = [];\n                    resolve(returnValue);\n                }, waitMs);\n            });\n        }\n        return timeoutPromise;\n    };\n};\n\nvar cheap_guid = function(maxlen) {\n    var guid = Math.random().toString(36).substring(2, 10) + Math.random().toString(36).substring(2, 10);\n    return maxlen ? guid.substring(0, maxlen) : guid;\n};\n\n// naive way to extract domain name (example.com) from full hostname (my.sub.example.com)\nvar SIMPLE_DOMAIN_MATCH_REGEX = /[a-z0-9][a-z0-9-]*\\.[a-z]+$/i;\n// this next one attempts to account for some ccSLDs, e.g. extracting oxford.ac.uk from www.oxford.ac.uk\nvar DOMAIN_MATCH_REGEX = /[a-z0-9][a-z0-9-]+\\.[a-z.]{2,6}$/i;\n/**\n * Attempts to extract main domain name from full hostname, using a few blunt heuristics. For\n * common TLDs like .com/.org that always have a simple SLD.TLD structure (example.com), we\n * simply extract the last two .-separated parts of the hostname (SIMPLE_DOMAIN_MATCH_REGEX).\n * For others, we attempt to account for short ccSLD+TLD combos (.ac.uk) with the legacy\n * DOMAIN_MATCH_REGEX (kept to maintain backwards compatibility with existing Mixpanel\n * integrations). The only _reliable_ way to extract domain from hostname is with an up-to-date\n * list like at https://publicsuffix.org/ so for cases that this helper fails at, the SDK\n * offers the 'cookie_domain' config option to set it explicitly.\n * @example\n * extract_domain('my.sub.example.com')\n * // 'example.com'\n */\nvar extract_domain = function(hostname) {\n    var domain_regex = DOMAIN_MATCH_REGEX;\n    var parts = hostname.split('.');\n    var tld = parts[parts.length - 1];\n    if (tld.length > 4 || tld === 'com' || tld === 'org') {\n        domain_regex = SIMPLE_DOMAIN_MATCH_REGEX;\n    }\n    var matches = hostname.match(domain_regex);\n    return matches ? matches[0] : '';\n};\n\n/**\n * Check whether we have network connection. default to true for browsers that don't support navigator.onLine (IE)\n * @returns {boolean}\n */\nvar isOnline = function() {\n    var onLine = win.navigator['onLine'];\n    return _.isUndefined(onLine) || onLine;\n};\n\nvar NOOP_FUNC = function () {};\n\nvar JSONStringify = null, JSONParse = null;\nif (typeof JSON !== 'undefined') {\n    JSONStringify = JSON.stringify;\n    JSONParse = JSON.parse;\n}\nJSONStringify = JSONStringify || _.JSONEncode;\nJSONParse = JSONParse || _.JSONDecode;\n\n// UNMINIFIED EXPORTS (for closure compiler)\n_['info']                   = _.info;\n_['info']['browser']        = _.info.browser;\n_['info']['browserVersion'] = _.info.browserVersion;\n_['info']['device']         = _.info.device;\n_['info']['properties']     = _.info.properties;\n_['isBlockedUA']            = _.isBlockedUA;\n_['isEmptyObject']          = _.isEmptyObject;\n_['isObject']               = _.isObject;\n_['JSONDecode']             = _.JSONDecode;\n_['JSONEncode']             = _.JSONEncode;\n_['toArray']                = _.toArray;\n_['NPO']                    = NpoPromise;\n\nvar MIXPANEL_DB_NAME = 'mixpanelBrowserDb';\n\nvar RECORDING_EVENTS_STORE_NAME = 'mixpanelRecordingEvents';\nvar RECORDING_REGISTRY_STORE_NAME = 'mixpanelRecordingRegistry';\n\n// note: increment the version number when adding new object stores\nvar DB_VERSION = 1;\nvar OBJECT_STORES = [RECORDING_EVENTS_STORE_NAME, RECORDING_REGISTRY_STORE_NAME];\n\n/**\n * @type {import('./wrapper').StorageWrapper}\n */\nvar IDBStorageWrapper = function (storeName) {\n    /**\n     * @type {Promise<IDBDatabase>|null}\n     */\n    this.dbPromise = null;\n    this.storeName = storeName;\n};\n\nIDBStorageWrapper.prototype._openDb = function () {\n    return new PromisePolyfill(function (resolve, reject) {\n        var openRequest = win.indexedDB.open(MIXPANEL_DB_NAME, DB_VERSION);\n        openRequest['onerror'] = function () {\n            reject(openRequest.error);\n        };\n\n        openRequest['onsuccess'] = function () {\n            resolve(openRequest.result);\n        };\n\n        openRequest['onupgradeneeded'] = function (ev) {\n            var db = ev.target.result;\n\n            OBJECT_STORES.forEach(function (storeName) {\n                db.createObjectStore(storeName);\n            });\n        };\n    });\n};\n\nIDBStorageWrapper.prototype.init = function () {\n    if (!win.indexedDB) {\n        return PromisePolyfill.reject('indexedDB is not supported in this browser');\n    }\n\n    if (!this.dbPromise) {\n        this.dbPromise = this._openDb();\n    }\n\n    return this.dbPromise\n        .then(function (dbOrError) {\n            if (dbOrError instanceof win['IDBDatabase']) {\n                return PromisePolyfill.resolve();\n            } else {\n                return PromisePolyfill.reject(dbOrError);\n            }\n        });\n};\n\n/**\n * @param {IDBTransactionMode} mode\n * @param {function(IDBObjectStore): void} storeCb\n */\nIDBStorageWrapper.prototype.makeTransaction = function (mode, storeCb) {\n    var storeName = this.storeName;\n    var doTransaction = function (db) {\n        return new PromisePolyfill(function (resolve, reject) {\n            var transaction = db.transaction(storeName, mode);\n            transaction.oncomplete = function () {\n                resolve(transaction);\n            };\n            transaction.onabort = transaction.onerror = function () {\n                reject(transaction.error);\n            };\n\n            storeCb(transaction.objectStore(storeName));\n        });\n    };\n\n    return this.dbPromise\n        .then(doTransaction)\n        .catch(function (err) {\n            if (err && err['name'] === 'InvalidStateError') {\n                // try reopening the DB if the connection is closed\n                this.dbPromise = this._openDb();\n                return this.dbPromise.then(doTransaction);\n            } else {\n                return PromisePolyfill.reject(err);\n            }\n        }.bind(this));\n};\n\nIDBStorageWrapper.prototype.setItem = function (key, value) {\n    return this.makeTransaction('readwrite', function (objectStore) {\n        objectStore.put(value, key);\n    });\n};\n\nIDBStorageWrapper.prototype.getItem = function (key) {\n    var req;\n    return this.makeTransaction('readonly', function (objectStore) {\n        req = objectStore.get(key);\n    }).then(function () {\n        return req.result;\n    });\n};\n\nIDBStorageWrapper.prototype.removeItem = function (key) {\n    return this.makeTransaction('readwrite', function (objectStore) {\n        objectStore.delete(key);\n    });\n};\n\nIDBStorageWrapper.prototype.getAll = function () {\n    var req;\n    return this.makeTransaction('readonly', function (objectStore) {\n        req = objectStore.getAll();\n    }).then(function () {\n        return req.result;\n    });\n};\n\n/**\n * GDPR utils\n *\n * The General Data Protection Regulation (GDPR) is a regulation in EU law on data protection\n * and privacy for all individuals within the European Union. It addresses the export of personal\n * data outside the EU. The GDPR aims primarily to give control back to citizens and residents\n * over their personal data and to simplify the regulatory environment for international business\n * by unifying the regulation within the EU.\n *\n * This set of utilities is intended to enable opt in/out functionality in the Mixpanel JS SDK.\n * These functions are used internally by the SDK and are not intended to be publicly exposed.\n */\n\n\n/**\n * A function used to track a Mixpanel event (e.g. MixpanelLib.track)\n * @callback trackFunction\n * @param {String} event_name The name of the event. This can be anything the user does - 'Button Click', 'Sign Up', 'Item Purchased', etc.\n * @param {Object} [properties] A set of properties to include with the event you're sending. These describe the user who did the event or details about the event itself.\n * @param {Function} [callback] If provided, the callback function will be called after tracking the event.\n */\n\n/** Public **/\n\nvar GDPR_DEFAULT_PERSISTENCE_PREFIX = '__mp_opt_in_out_';\n\n/**\n * Opt the user in to data tracking and cookies/localstorage for the given token\n * @param {string} token - Mixpanel project tracking token\n * @param {Object} [options]\n * @param {trackFunction} [options.track] - function used for tracking a Mixpanel event to record the opt-in action\n * @param {string} [options.trackEventName] - event name to be used for tracking the opt-in action\n * @param {Object} [options.trackProperties] - set of properties to be tracked along with the opt-in action\n * @param {string} [options.persistenceType] Persistence mechanism used - cookie or localStorage\n * @param {string} [options.persistencePrefix=__mp_opt_in_out] - custom prefix to be used in the cookie/localstorage name\n * @param {Number} [options.cookieExpiration] - number of days until the opt-in cookie expires\n * @param {string} [options.cookieDomain] - custom cookie domain\n * @param {boolean} [options.crossSiteCookie] - whether the opt-in cookie is set as cross-site-enabled\n * @param {boolean} [options.crossSubdomainCookie] - whether the opt-in cookie is set as cross-subdomain or not\n * @param {boolean} [options.secureCookie] - whether the opt-in cookie is set as secure or not\n */\nfunction optIn(token, options) {\n    _optInOut(true, token, options);\n}\n\n/**\n * Opt the user out of data tracking and cookies/localstorage for the given token\n * @param {string} token - Mixpanel project tracking token\n * @param {Object} [options]\n * @param {string} [options.persistenceType] Persistence mechanism used - cookie or localStorage\n * @param {string} [options.persistencePrefix=__mp_opt_in_out] - custom prefix to be used in the cookie/localstorage name\n * @param {Number} [options.cookieExpiration] - number of days until the opt-out cookie expires\n * @param {string} [options.cookieDomain] - custom cookie domain\n * @param {boolean} [options.crossSiteCookie] - whether the opt-in cookie is set as cross-site-enabled\n * @param {boolean} [options.crossSubdomainCookie] - whether the opt-out cookie is set as cross-subdomain or not\n * @param {boolean} [options.secureCookie] - whether the opt-out cookie is set as secure or not\n */\nfunction optOut(token, options) {\n    _optInOut(false, token, options);\n}\n\n/**\n * Check whether the user has opted in to data tracking and cookies/localstorage for the given token\n * @param {string} token - Mixpanel project tracking token\n * @param {Object} [options]\n * @param {string} [options.persistenceType] Persistence mechanism used - cookie or localStorage\n * @param {string} [options.persistencePrefix=__mp_opt_in_out] - custom prefix to be used in the cookie/localstorage name\n * @returns {boolean} whether the user has opted in to the given opt type\n */\nfunction hasOptedIn(token, options) {\n    return _getStorageValue(token, options) === '1';\n}\n\n/**\n * Check whether the user has opted out of data tracking and cookies/localstorage for the given token\n * @param {string} token - Mixpanel project tracking token\n * @param {Object} [options]\n * @param {string} [options.persistenceType] Persistence mechanism used - cookie or localStorage\n * @param {string} [options.persistencePrefix=__mp_opt_in_out] - custom prefix to be used in the cookie/localstorage name\n * @param {boolean} [options.ignoreDnt] - flag to ignore browser DNT settings and always return false\n * @returns {boolean} whether the user has opted out of the given opt type\n */\nfunction hasOptedOut(token, options) {\n    if (_hasDoNotTrackFlagOn(options)) {\n        console$1.warn('This browser has \"Do Not Track\" enabled. This will prevent the Mixpanel SDK from sending any data. To ignore the \"Do Not Track\" browser setting, initialize the Mixpanel instance with the config \"ignore_dnt: true\"');\n        return true;\n    }\n    var optedOut = _getStorageValue(token, options) === '0';\n    if (optedOut) {\n        console$1.warn('You are opted out of Mixpanel tracking. This will prevent the Mixpanel SDK from sending any data.');\n    }\n    return optedOut;\n}\n\n/**\n * Wrap a MixpanelLib method with a check for whether the user is opted out of data tracking and cookies/localstorage for the given token\n * If the user has opted out, return early instead of executing the method.\n * If a callback argument was provided, execute it passing the 0 error code.\n * @param {function} method - wrapped method to be executed if the user has not opted out\n * @returns {*} the result of executing method OR undefined if the user has opted out\n */\nfunction addOptOutCheckMixpanelLib(method) {\n    return _addOptOutCheck(method, function(name) {\n        return this.get_config(name);\n    });\n}\n\n/**\n * Wrap a MixpanelPeople method with a check for whether the user is opted out of data tracking and cookies/localstorage for the given token\n * If the user has opted out, return early instead of executing the method.\n * If a callback argument was provided, execute it passing the 0 error code.\n * @param {function} method - wrapped method to be executed if the user has not opted out\n * @returns {*} the result of executing method OR undefined if the user has opted out\n */\nfunction addOptOutCheckMixpanelPeople(method) {\n    return _addOptOutCheck(method, function(name) {\n        return this._get_config(name);\n    });\n}\n\n/**\n * Wrap a MixpanelGroup method with a check for whether the user is opted out of data tracking and cookies/localstorage for the given token\n * If the user has opted out, return early instead of executing the method.\n * If a callback argument was provided, execute it passing the 0 error code.\n * @param {function} method - wrapped method to be executed if the user has not opted out\n * @returns {*} the result of executing method OR undefined if the user has opted out\n */\nfunction addOptOutCheckMixpanelGroup(method) {\n    return _addOptOutCheck(method, function(name) {\n        return this._get_config(name);\n    });\n}\n\n/**\n * Clear the user's opt in/out status of data tracking and cookies/localstorage for the given token\n * @param {string} token - Mixpanel project tracking token\n * @param {Object} [options]\n * @param {string} [options.persistenceType] Persistence mechanism used - cookie or localStorage\n * @param {string} [options.persistencePrefix=__mp_opt_in_out] - custom prefix to be used in the cookie/localstorage name\n * @param {Number} [options.cookieExpiration] - number of days until the opt-in cookie expires\n * @param {string} [options.cookieDomain] - custom cookie domain\n * @param {boolean} [options.crossSiteCookie] - whether the opt-in cookie is set as cross-site-enabled\n * @param {boolean} [options.crossSubdomainCookie] - whether the opt-in cookie is set as cross-subdomain or not\n * @param {boolean} [options.secureCookie] - whether the opt-in cookie is set as secure or not\n */\nfunction clearOptInOut(token, options) {\n    options = options || {};\n    _getStorage(options).remove(\n        _getStorageKey(token, options), !!options.crossSubdomainCookie, options.cookieDomain\n    );\n}\n\n/** Private **/\n\n/**\n * Get storage util\n * @param {Object} [options]\n * @param {string} [options.persistenceType]\n * @returns {object} either _.cookie or _.localstorage\n */\nfunction _getStorage(options) {\n    options = options || {};\n    return options.persistenceType === 'localStorage' ? _.localStorage : _.cookie;\n}\n\n/**\n * Get the name of the cookie that is used for the given opt type (tracking, cookie, etc.)\n * @param {string} token - Mixpanel project tracking token\n * @param {Object} [options]\n * @param {string} [options.persistencePrefix=__mp_opt_in_out] - custom prefix to be used in the cookie/localstorage name\n * @returns {string} the name of the cookie for the given opt type\n */\nfunction _getStorageKey(token, options) {\n    options = options || {};\n    return (options.persistencePrefix || GDPR_DEFAULT_PERSISTENCE_PREFIX) + token;\n}\n\n/**\n * Get the value of the cookie that is used for the given opt type (tracking, cookie, etc.)\n * @param {string} token - Mixpanel project tracking token\n * @param {Object} [options]\n * @param {string} [options.persistencePrefix=__mp_opt_in_out] - custom prefix to be used in the cookie/localstorage name\n * @returns {string} the value of the cookie for the given opt type\n */\nfunction _getStorageValue(token, options) {\n    return _getStorage(options).get(_getStorageKey(token, options));\n}\n\n/**\n * Check whether the user has set the DNT/doNotTrack setting to true in their browser\n * @param {Object} [options]\n * @param {string} [options.window] - alternate window object to check; used to force various DNT settings in browser tests\n * @param {boolean} [options.ignoreDnt] - flag to ignore browser DNT settings and always return false\n * @returns {boolean} whether the DNT setting is true\n */\nfunction _hasDoNotTrackFlagOn(options) {\n    if (options && options.ignoreDnt) {\n        return false;\n    }\n    var win$1 = (options && options.window) || win;\n    var nav = win$1['navigator'] || {};\n    var hasDntOn = false;\n\n    _.each([\n        nav['doNotTrack'], // standard\n        nav['msDoNotTrack'],\n        win$1['doNotTrack']\n    ], function(dntValue) {\n        if (_.includes([true, 1, '1', 'yes'], dntValue)) {\n            hasDntOn = true;\n        }\n    });\n\n    return hasDntOn;\n}\n\n/**\n * Set cookie/localstorage for the user indicating that they are opted in or out for the given opt type\n * @param {boolean} optValue - whether to opt the user in or out for the given opt type\n * @param {string} token - Mixpanel project tracking token\n * @param {Object} [options]\n * @param {trackFunction} [options.track] - function used for tracking a Mixpanel event to record the opt-in action\n * @param {string} [options.trackEventName] - event name to be used for tracking the opt-in action\n * @param {Object} [options.trackProperties] - set of properties to be tracked along with the opt-in action\n * @param {string} [options.persistencePrefix=__mp_opt_in_out] - custom prefix to be used in the cookie/localstorage name\n * @param {Number} [options.cookieExpiration] - number of days until the opt-in cookie expires\n * @param {string} [options.cookieDomain] - custom cookie domain\n * @param {boolean} [options.crossSiteCookie] - whether the opt-in cookie is set as cross-site-enabled\n * @param {boolean} [options.crossSubdomainCookie] - whether the opt-in cookie is set as cross-subdomain or not\n * @param {boolean} [options.secureCookie] - whether the opt-in cookie is set as secure or not\n */\nfunction _optInOut(optValue, token, options) {\n    if (!_.isString(token) || !token.length) {\n        console$1.error('gdpr.' + (optValue ? 'optIn' : 'optOut') + ' called with an invalid token');\n        return;\n    }\n\n    options = options || {};\n\n    _getStorage(options).set(\n        _getStorageKey(token, options),\n        optValue ? 1 : 0,\n        _.isNumber(options.cookieExpiration) ? options.cookieExpiration : null,\n        !!options.crossSubdomainCookie,\n        !!options.secureCookie,\n        !!options.crossSiteCookie,\n        options.cookieDomain\n    );\n\n    if (options.track && optValue) { // only track event if opting in (optValue=true)\n        options.track(options.trackEventName || '$opt_in', options.trackProperties, {\n            'send_immediately': true\n        });\n    }\n}\n\n/**\n * Wrap a method with a check for whether the user is opted out of data tracking and cookies/localstorage for the given token\n * If the user has opted out, return early instead of executing the method.\n * If a callback argument was provided, execute it passing the 0 error code.\n * @param {function} method - wrapped method to be executed if the user has not opted out\n * @param {function} getConfigValue - getter function for the Mixpanel API token and other options to be used with opt-out check\n * @returns {*} the result of executing method OR undefined if the user has opted out\n */\nfunction _addOptOutCheck(method, getConfigValue) {\n    return function() {\n        var optedOut = false;\n\n        try {\n            var token = getConfigValue.call(this, 'token');\n            var ignoreDnt = getConfigValue.call(this, 'ignore_dnt');\n            var persistenceType = getConfigValue.call(this, 'opt_out_tracking_persistence_type');\n            var persistencePrefix = getConfigValue.call(this, 'opt_out_tracking_cookie_prefix');\n            var win = getConfigValue.call(this, 'window'); // used to override window during browser tests\n\n            if (token) { // if there was an issue getting the token, continue method execution as normal\n                optedOut = hasOptedOut(token, {\n                    ignoreDnt: ignoreDnt,\n                    persistenceType: persistenceType,\n                    persistencePrefix: persistencePrefix,\n                    window: win\n                });\n            }\n        } catch(err) {\n            console$1.error('Unexpected error when checking tracking opt-out status: ' + err);\n        }\n\n        if (!optedOut) {\n            return method.apply(this, arguments);\n        }\n\n        var callback = arguments[arguments.length - 1];\n        if (typeof(callback) === 'function') {\n            callback(0);\n        }\n\n        return;\n    };\n}\n\nvar logger$6 = console_with_prefix('lock');\n\n/**\n * SharedLock: a mutex built on HTML5 localStorage, to ensure that only one browser\n * window/tab at a time will be able to access shared resources.\n *\n * Based on the Alur and Taubenfeld fast lock\n * (http://www.cs.rochester.edu/research/synchronization/pseudocode/fastlock.html)\n * with an added timeout to ensure there will be eventual progress in the event\n * that a window is closed in the middle of the callback.\n *\n * Implementation based on the original version by David Wolever (https://github.com/wolever)\n * at https://gist.github.com/wolever/5fd7573d1ef6166e8f8c4af286a69432.\n *\n * @example\n * const myLock = new SharedLock('some-key');\n * myLock.withLock(function() {\n *   console.log('I hold the mutex!');\n * });\n *\n * @constructor\n */\nvar SharedLock = function(key, options) {\n    options = options || {};\n\n    this.storageKey = key;\n    this.storage = options.storage || win.localStorage;\n    this.pollIntervalMS = options.pollIntervalMS || 100;\n    this.timeoutMS = options.timeoutMS || 2000;\n\n    // dependency-inject promise implementation for testing purposes\n    this.promiseImpl = options.promiseImpl || PromisePolyfill;\n};\n\n// pass in a specific pid to test contention scenarios; otherwise\n// it is chosen randomly for each acquisition attempt\nSharedLock.prototype.withLock = function(lockedCB, pid) {\n    var Promise = this.promiseImpl;\n    return new Promise(_.bind(function (resolve, reject) {\n        var i = pid || (new Date().getTime() + '|' + Math.random());\n        var startTime = new Date().getTime();\n        var key = this.storageKey;\n        var pollIntervalMS = this.pollIntervalMS;\n        var timeoutMS = this.timeoutMS;\n        var storage = this.storage;\n\n        var keyX = key + ':X';\n        var keyY = key + ':Y';\n        var keyZ = key + ':Z';\n\n        var delay = function(cb) {\n            if (new Date().getTime() - startTime > timeoutMS) {\n                logger$6.error('Timeout waiting for mutex on ' + key + '; clearing lock. [' + i + ']');\n                storage.removeItem(keyZ);\n                storage.removeItem(keyY);\n                loop();\n                return;\n            }\n            setTimeout(function() {\n                try {\n                    cb();\n                } catch(err) {\n                    reject(err);\n                }\n            }, pollIntervalMS * (Math.random() + 0.1));\n        };\n\n        var waitFor = function(predicate, cb) {\n            if (predicate()) {\n                cb();\n            } else {\n                delay(function() {\n                    waitFor(predicate, cb);\n                });\n            }\n        };\n\n        var getSetY = function() {\n            var valY = storage.getItem(keyY);\n            if (valY && valY !== i) { // if Y == i then this process already has the lock (useful for test cases)\n                return false;\n            } else {\n                storage.setItem(keyY, i);\n                if (storage.getItem(keyY) === i) {\n                    return true;\n                } else {\n                    if (!localStorageSupported(storage, true)) {\n                        reject(new Error('localStorage support dropped while acquiring lock'));\n                    }\n                    return false;\n                }\n            }\n        };\n\n        var loop = function() {\n            storage.setItem(keyX, i);\n\n            waitFor(getSetY, function() {\n                if (storage.getItem(keyX) === i) {\n                    criticalSection();\n                    return;\n                }\n\n                delay(function() {\n                    if (storage.getItem(keyY) !== i) {\n                        loop();\n                        return;\n                    }\n                    waitFor(function() {\n                        return !storage.getItem(keyZ);\n                    }, criticalSection);\n                });\n            });\n        };\n\n        var criticalSection = function() {\n            storage.setItem(keyZ, '1');\n            var removeLock = function () {\n                storage.removeItem(keyZ);\n                if (storage.getItem(keyY) === i) {\n                    storage.removeItem(keyY);\n                }\n                if (storage.getItem(keyX) === i) {\n                    storage.removeItem(keyX);\n                }\n            };\n\n            lockedCB()\n                .then(function (ret) {\n                    removeLock();\n                    resolve(ret);\n                })\n                .catch(function (err) {\n                    removeLock();\n                    reject(err);\n                });\n        };\n\n        try {\n            if (localStorageSupported(storage, true)) {\n                loop();\n            } else {\n                throw new Error('localStorage support check failed');\n            }\n        } catch(err) {\n            reject(err);\n        }\n    }, this));\n};\n\n/**\n * @type {import('./wrapper').StorageWrapper}\n */\nvar LocalStorageWrapper = function (storageOverride) {\n    this.storage = storageOverride || win.localStorage;\n};\n\nLocalStorageWrapper.prototype.init = function () {\n    return PromisePolyfill.resolve();\n};\n\nLocalStorageWrapper.prototype.setItem = function (key, value) {\n    return new PromisePolyfill(_.bind(function (resolve, reject) {\n        try {\n            this.storage.setItem(key, JSONStringify(value));\n        } catch (e) {\n            reject(e);\n        }\n        resolve();\n    }, this));\n};\n\nLocalStorageWrapper.prototype.getItem = function (key) {\n    return new PromisePolyfill(_.bind(function (resolve, reject) {\n        var item;\n        try {\n            item = JSONParse(this.storage.getItem(key));\n        } catch (e) {\n            reject(e);\n        }\n        resolve(item);\n    }, this));\n};\n\nLocalStorageWrapper.prototype.removeItem = function (key) {\n    return new PromisePolyfill(_.bind(function (resolve, reject) {\n        try {\n            this.storage.removeItem(key);\n        } catch (e) {\n            reject(e);\n        }\n        resolve();\n    }, this));\n};\n\nvar logger$5 = console_with_prefix('batch');\n\n/**\n * RequestQueue: queue for batching API requests with localStorage backup for retries.\n * Maintains an in-memory queue which represents the source of truth for the current\n * page, but also writes all items out to a copy in the browser's localStorage, which\n * can be read on subsequent pageloads and retried. For batchability, all the request\n * items in the queue should be of the same type (events, people updates, group updates)\n * so they can be sent in a single request to the same API endpoint.\n *\n * LocalStorage keying and locking: In order for reloads and subsequent pageloads of\n * the same site to access the same persisted data, they must share the same localStorage\n * key (for instance based on project token and queue type). Therefore access to the\n * localStorage entry is guarded by an asynchronous mutex (SharedLock) to prevent\n * simultaneously open windows/tabs from overwriting each other's data (which would lead\n * to data loss in some situations).\n * @constructor\n */\nvar RequestQueue = function (storageKey, options) {\n    options = options || {};\n    this.storageKey = storageKey;\n    this.usePersistence = options.usePersistence;\n    if (this.usePersistence) {\n        this.queueStorage = options.queueStorage || new LocalStorageWrapper();\n        this.lock = new SharedLock(storageKey, {\n            storage: options.sharedLockStorage || win.localStorage,\n            timeoutMS: options.sharedLockTimeoutMS,\n        });\n    }\n    this.reportError = options.errorReporter || _.bind(logger$5.error, logger$5);\n\n    this.pid = options.pid || null; // pass pid to test out storage lock contention scenarios\n\n    this.memQueue = [];\n    this.initialized = false;\n\n    if (options.enqueueThrottleMs) {\n        this.enqueuePersisted = batchedThrottle(_.bind(this._enqueuePersisted, this), options.enqueueThrottleMs);\n    } else {\n        this.enqueuePersisted = _.bind(function (queueEntry) {\n            return this._enqueuePersisted([queueEntry]);\n        }, this);\n    }\n};\n\nRequestQueue.prototype.ensureInit = function () {\n    if (this.initialized) {\n        return PromisePolyfill.resolve();\n    }\n\n    return this.queueStorage\n        .init()\n        .then(_.bind(function () {\n            this.initialized = true;\n        }, this))\n        .catch(_.bind(function (err) {\n            this.reportError('Error initializing queue persistence. Disabling persistence', err);\n            this.initialized = true;\n            this.usePersistence = false;\n        }, this));\n};\n\n/**\n * Add one item to queues (memory and localStorage). The queued entry includes\n * the given item along with an auto-generated ID and a \"flush-after\" timestamp.\n * It is expected that the item will be sent over the network and dequeued\n * before the flush-after time; if this doesn't happen it is considered orphaned\n * (e.g., the original tab where it was enqueued got closed before it could be\n * sent) and the item can be sent by any tab that finds it in localStorage.\n *\n * The final callback param is called with a param indicating success or\n * failure of the enqueue operation; it is asynchronous because the localStorage\n * lock is asynchronous.\n */\nRequestQueue.prototype.enqueue = function (item, flushInterval) {\n    var queueEntry = {\n        'id': cheap_guid(),\n        'flushAfter': new Date().getTime() + flushInterval * 2,\n        'payload': item\n    };\n\n    if (!this.usePersistence) {\n        this.memQueue.push(queueEntry);\n        return PromisePolyfill.resolve(true);\n    } else {\n        return this.enqueuePersisted(queueEntry);\n    }\n};\n\nRequestQueue.prototype._enqueuePersisted = function (queueEntries) {\n    var enqueueItem = _.bind(function () {\n        return this.ensureInit()\n            .then(_.bind(function () {\n                return this.readFromStorage();\n            }, this))\n            .then(_.bind(function (storedQueue) {\n                return this.saveToStorage(storedQueue.concat(queueEntries));\n            }, this))\n            .then(_.bind(function (succeeded) {\n                // only add to in-memory queue when storage succeeds\n                if (succeeded) {\n                    this.memQueue = this.memQueue.concat(queueEntries);\n                }\n\n                return succeeded;\n            }, this))\n            .catch(_.bind(function (err) {\n                this.reportError('Error enqueueing items', err, queueEntries);\n                return false;\n            }, this));\n    }, this);\n\n    return this.lock\n        .withLock(enqueueItem, this.pid)\n        .catch(_.bind(function (err) {\n            this.reportError('Error acquiring storage lock', err);\n            return false;\n        }, this));\n};\n\n/**\n * Read out the given number of queue entries. If this.memQueue\n * has fewer than batchSize items, then look for \"orphaned\" items\n * in the persisted queue (items where the 'flushAfter' time has\n * already passed).\n */\nRequestQueue.prototype.fillBatch = function (batchSize) {\n    var batch = this.memQueue.slice(0, batchSize);\n    if (this.usePersistence && batch.length < batchSize) {\n        // don't need lock just to read events; localStorage is thread-safe\n        // and the worst that could happen is a duplicate send of some\n        // orphaned events, which will be deduplicated on the server side\n        return this.ensureInit()\n            .then(_.bind(function () {\n                return this.readFromStorage();\n            }, this))\n            .then(_.bind(function (storedQueue) {\n                if (storedQueue.length) {\n                    // item IDs already in batch; don't duplicate out of storage\n                    var idsInBatch = {}; // poor man's Set\n                    _.each(batch, function (item) {\n                        idsInBatch[item['id']] = true;\n                    });\n\n                    for (var i = 0; i < storedQueue.length; i++) {\n                        var item = storedQueue[i];\n                        if (new Date().getTime() > item['flushAfter'] && !idsInBatch[item['id']]) {\n                            item.orphaned = true;\n                            batch.push(item);\n                            if (batch.length >= batchSize) {\n                                break;\n                            }\n                        }\n                    }\n                }\n\n                return batch;\n            }, this));\n    } else {\n        return PromisePolyfill.resolve(batch);\n    }\n};\n\n/**\n * Remove items with matching 'id' from array (immutably)\n * also remove any item without a valid id (e.g., malformed\n * storage entries).\n */\nvar filterOutIDsAndInvalid = function (items, idSet) {\n    var filteredItems = [];\n    _.each(items, function (item) {\n        if (item['id'] && !idSet[item['id']]) {\n            filteredItems.push(item);\n        }\n    });\n    return filteredItems;\n};\n\n/**\n * Remove items with matching IDs from both in-memory queue\n * and persisted queue\n */\nRequestQueue.prototype.removeItemsByID = function (ids) {\n    var idSet = {}; // poor man's Set\n    _.each(ids, function (id) {\n        idSet[id] = true;\n    });\n\n    this.memQueue = filterOutIDsAndInvalid(this.memQueue, idSet);\n    if (!this.usePersistence) {\n        return PromisePolyfill.resolve(true);\n    } else {\n        var removeFromStorage = _.bind(function () {\n            return this.ensureInit()\n                .then(_.bind(function () {\n                    return this.readFromStorage();\n                }, this))\n                .then(_.bind(function (storedQueue) {\n                    storedQueue = filterOutIDsAndInvalid(storedQueue, idSet);\n                    return this.saveToStorage(storedQueue);\n                }, this))\n                .then(_.bind(function () {\n                    return this.readFromStorage();\n                }, this))\n                .then(_.bind(function (storedQueue) {\n                    // an extra check: did storage report success but somehow\n                    // the items are still there?\n                    for (var i = 0; i < storedQueue.length; i++) {\n                        var item = storedQueue[i];\n                        if (item['id'] && !!idSet[item['id']]) {\n                            throw new Error('Item not removed from storage');\n                        }\n                    }\n                    return true;\n                }, this))\n                .catch(_.bind(function (err) {\n                    this.reportError('Error removing items', err, ids);\n                    return false;\n                }, this));\n        }, this);\n\n        return this.lock\n            .withLock(removeFromStorage, this.pid)\n            .catch(_.bind(function (err) {\n                this.reportError('Error acquiring storage lock', err);\n                if (!localStorageSupported(this.lock.storage, true)) {\n                    // Looks like localStorage writes have stopped working sometime after\n                    // initialization (probably full), and so nobody can acquire locks\n                    // anymore. Consider it temporarily safe to remove items without the\n                    // lock, since nobody's writing successfully anyway.\n                    return removeFromStorage()\n                        .then(_.bind(function (success) {\n                            if (!success) {\n                                // OK, we couldn't even write out the smaller queue. Try clearing it\n                                // entirely.\n                                return this.queueStorage.removeItem(this.storageKey).then(function () {\n                                    return success;\n                                });\n                            }\n                            return success;\n                        }, this))\n                        .catch(_.bind(function (err) {\n                            this.reportError('Error clearing queue', err);\n                            return false;\n                        }, this));\n                } else {\n                    return false;\n                }\n            }, this));\n    }\n};\n\n// internal helper for RequestQueue.updatePayloads\nvar updatePayloads = function (existingItems, itemsToUpdate) {\n    var newItems = [];\n    _.each(existingItems, function (item) {\n        var id = item['id'];\n        if (id in itemsToUpdate) {\n            var newPayload = itemsToUpdate[id];\n            if (newPayload !== null) {\n                item['payload'] = newPayload;\n                newItems.push(item);\n            }\n        } else {\n            // no update\n            newItems.push(item);\n        }\n    });\n    return newItems;\n};\n\n/**\n * Update payloads of given items in both in-memory queue and\n * persisted queue. Items set to null are removed from queues.\n */\nRequestQueue.prototype.updatePayloads = function (itemsToUpdate) {\n    this.memQueue = updatePayloads(this.memQueue, itemsToUpdate);\n    if (!this.usePersistence) {\n        return PromisePolyfill.resolve(true);\n    } else {\n        return this.lock\n            .withLock(_.bind(function lockAcquired() {\n                return this.ensureInit()\n                    .then(_.bind(function () {\n                        return this.readFromStorage();\n                    }, this))\n                    .then(_.bind(function (storedQueue) {\n                        storedQueue = updatePayloads(storedQueue, itemsToUpdate);\n                        return this.saveToStorage(storedQueue);\n                    }, this))\n                    .catch(_.bind(function (err) {\n                        this.reportError('Error updating items', itemsToUpdate, err);\n                        return false;\n                    }, this));\n            }, this), this.pid)\n            .catch(_.bind(function (err) {\n                this.reportError('Error acquiring storage lock', err);\n                return false;\n            }, this));\n    }\n};\n\n/**\n * Read and parse items array from localStorage entry, handling\n * malformed/missing data if necessary.\n */\nRequestQueue.prototype.readFromStorage = function () {\n    return this.ensureInit()\n        .then(_.bind(function () {\n            return this.queueStorage.getItem(this.storageKey);\n        }, this))\n        .then(_.bind(function (storageEntry) {\n            if (storageEntry) {\n                if (!_.isArray(storageEntry)) {\n                    this.reportError('Invalid storage entry:', storageEntry);\n                    storageEntry = null;\n                }\n            }\n            return storageEntry || [];\n        }, this))\n        .catch(_.bind(function (err) {\n            this.reportError('Error retrieving queue', err);\n            return [];\n        }, this));\n};\n\n/**\n * Serialize the given items array to localStorage.\n */\nRequestQueue.prototype.saveToStorage = function (queue) {\n    return this.ensureInit()\n        .then(_.bind(function () {\n            return this.queueStorage.setItem(this.storageKey, queue);\n        }, this))\n        .then(function () {\n            return true;\n        })\n        .catch(_.bind(function (err) {\n            this.reportError('Error saving queue', err);\n            return false;\n        }, this));\n};\n\n/**\n * Clear out queues (memory and localStorage).\n */\nRequestQueue.prototype.clear = function () {\n    this.memQueue = [];\n\n    if (this.usePersistence) {\n        return this.ensureInit()\n            .then(_.bind(function () {\n                return this.queueStorage.removeItem(this.storageKey);\n            }, this));\n    } else {\n        return PromisePolyfill.resolve();\n    }\n};\n\n// maximum interval between request retries after exponential backoff\nvar MAX_RETRY_INTERVAL_MS = 10 * 60 * 1000; // 10 minutes\n\nvar logger$4 = console_with_prefix('batch');\n\n/**\n * RequestBatcher: manages the queueing, flushing, retry etc of requests of one\n * type (events, people, groups).\n * Uses RequestQueue to manage the backing store.\n * @constructor\n */\nvar RequestBatcher = function(storageKey, options) {\n    this.errorReporter = options.errorReporter;\n    this.queue = new RequestQueue(storageKey, {\n        errorReporter: _.bind(this.reportError, this),\n        queueStorage: options.queueStorage,\n        sharedLockStorage: options.sharedLockStorage,\n        sharedLockTimeoutMS: options.sharedLockTimeoutMS,\n        usePersistence: options.usePersistence,\n        enqueueThrottleMs: options.enqueueThrottleMs\n    });\n\n    this.libConfig = options.libConfig;\n    this.sendRequest = options.sendRequestFunc;\n    this.beforeSendHook = options.beforeSendHook;\n    this.stopAllBatching = options.stopAllBatchingFunc;\n\n    // seed variable batch size + flush interval with configured values\n    this.batchSize = this.libConfig['batch_size'];\n    this.flushInterval = this.libConfig['batch_flush_interval_ms'];\n\n    this.stopped = !this.libConfig['batch_autostart'];\n    this.consecutiveRemovalFailures = 0;\n\n    // extra client-side dedupe\n    this.itemIdsSentSuccessfully = {};\n\n    // Make the flush occur at the interval specified by flushIntervalMs, default behavior will attempt consecutive flushes\n    // as long as the queue is not empty. This is useful for high-frequency events like Session Replay where we might end up\n    // in a request loop and get ratelimited by the server.\n    this.flushOnlyOnInterval = options.flushOnlyOnInterval || false;\n\n    this._flushPromise = null;\n};\n\n/**\n * Add one item to queue.\n */\nRequestBatcher.prototype.enqueue = function(item) {\n    return this.queue.enqueue(item, this.flushInterval);\n};\n\n/**\n * Start flushing batches at the configured time interval. Must call\n * this method upon SDK init in order to send anything over the network.\n */\nRequestBatcher.prototype.start = function() {\n    this.stopped = false;\n    this.consecutiveRemovalFailures = 0;\n    return this.flush();\n};\n\n/**\n * Stop flushing batches. Can be restarted by calling start().\n */\nRequestBatcher.prototype.stop = function() {\n    this.stopped = true;\n    if (this.timeoutID) {\n        clearTimeout(this.timeoutID);\n        this.timeoutID = null;\n    }\n};\n\n/**\n * Clear out queue.\n */\nRequestBatcher.prototype.clear = function() {\n    return this.queue.clear();\n};\n\n/**\n * Restore batch size configuration to whatever is set in the main SDK.\n */\nRequestBatcher.prototype.resetBatchSize = function() {\n    this.batchSize = this.libConfig['batch_size'];\n};\n\n/**\n * Restore flush interval time configuration to whatever is set in the main SDK.\n */\nRequestBatcher.prototype.resetFlush = function() {\n    this.scheduleFlush(this.libConfig['batch_flush_interval_ms']);\n};\n\n/**\n * Schedule the next flush in the given number of milliseconds.\n */\nRequestBatcher.prototype.scheduleFlush = function(flushMS) {\n    this.flushInterval = flushMS;\n    if (!this.stopped) { // don't schedule anymore if batching has been stopped\n        this.timeoutID = setTimeout(_.bind(function() {\n            if (!this.stopped) {\n                this._flushPromise = this.flush();\n            }\n        }, this), this.flushInterval);\n    }\n};\n\n/**\n * Send a request using the sendRequest callback, but promisified.\n * TODO: sendRequest should be promisified in the first place.\n */\nRequestBatcher.prototype.sendRequestPromise = function(data, options) {\n    return new PromisePolyfill(_.bind(function(resolve) {\n        this.sendRequest(data, options, resolve);\n    }, this));\n};\n\n\n/**\n * Flush one batch to network. Depending on success/failure modes, it will either\n * remove the batch from the queue or leave it in for retry, and schedule the next\n * flush. In cases of most network or API failures, it will back off exponentially\n * when retrying.\n * @param {Object} [options]\n * @param {boolean} [options.sendBeacon] - whether to send batch with\n * navigator.sendBeacon (only useful for sending batches before page unloads, as\n * sendBeacon offers no callbacks or status indications)\n */\nRequestBatcher.prototype.flush = function(options) {\n    if (this.requestInProgress) {\n        logger$4.log('Flush: Request already in progress');\n        return PromisePolyfill.resolve();\n    }\n\n    this.requestInProgress = true;\n\n    options = options || {};\n    var timeoutMS = this.libConfig['batch_request_timeout_ms'];\n    var startTime = new Date().getTime();\n    var currentBatchSize = this.batchSize;\n\n    return this.queue.fillBatch(currentBatchSize)\n        .then(_.bind(function(batch) {\n\n            // if there's more items in the queue than the batch size, attempt\n            // to flush again after the current batch is done.\n            var attemptSecondaryFlush = batch.length === currentBatchSize;\n            var dataForRequest = [];\n            var transformedItems = {};\n            _.each(batch, function(item) {\n                var payload = item['payload'];\n                if (this.beforeSendHook && !item.orphaned) {\n                    payload = this.beforeSendHook(payload);\n                }\n                if (payload) {\n                    // mp_sent_by_lib_version prop captures which lib version actually\n                    // sends each event (regardless of which version originally queued\n                    // it for sending)\n                    if (payload['event'] && payload['properties']) {\n                        payload['properties'] = _.extend(\n                            {},\n                            payload['properties'],\n                            {'mp_sent_by_lib_version': Config.LIB_VERSION}\n                        );\n                    }\n                    var addPayload = true;\n                    var itemId = item['id'];\n                    if (itemId) {\n                        if ((this.itemIdsSentSuccessfully[itemId] || 0) > 5) {\n                            this.reportError('[dupe] item ID sent too many times, not sending', {\n                                item: item,\n                                batchSize: batch.length,\n                                timesSent: this.itemIdsSentSuccessfully[itemId]\n                            });\n                            addPayload = false;\n                        }\n                    } else {\n                        this.reportError('[dupe] found item with no ID', {item: item});\n                    }\n\n                    if (addPayload) {\n                        dataForRequest.push(payload);\n                    }\n                }\n                transformedItems[item['id']] = payload;\n            }, this);\n\n            if (dataForRequest.length < 1) {\n                this.requestInProgress = false;\n                this.resetFlush();\n                return PromisePolyfill.resolve(); // nothing to do\n            }\n\n            var removeItemsFromQueue = _.bind(function () {\n                return this.queue\n                    .removeItemsByID(\n                        _.map(batch, function (item) {\n                            return item['id'];\n                        })\n                    )\n                    .then(_.bind(function (succeeded) {\n                        // client-side dedupe\n                        _.each(batch, _.bind(function(item) {\n                            var itemId = item['id'];\n                            if (itemId) {\n                                this.itemIdsSentSuccessfully[itemId] = this.itemIdsSentSuccessfully[itemId] || 0;\n                                this.itemIdsSentSuccessfully[itemId]++;\n                                if (this.itemIdsSentSuccessfully[itemId] > 5) {\n                                    this.reportError('[dupe] item ID sent too many times', {\n                                        item: item,\n                                        batchSize: batch.length,\n                                        timesSent: this.itemIdsSentSuccessfully[itemId]\n                                    });\n                                }\n                            } else {\n                                this.reportError('[dupe] found item with no ID while removing', {item: item});\n                            }\n                        }, this));\n\n                        if (succeeded) {\n                            this.consecutiveRemovalFailures = 0;\n                            if (this.flushOnlyOnInterval && !attemptSecondaryFlush) {\n                                this.resetFlush(); // schedule next batch with a delay\n                                return PromisePolyfill.resolve();\n                            } else {\n                                return this.flush(); // handle next batch if the queue isn't empty\n                            }\n                        } else {\n                            if (++this.consecutiveRemovalFailures > 5) {\n                                this.reportError('Too many queue failures; disabling batching system.');\n                                this.stopAllBatching();\n                            } else {\n                                this.resetFlush();\n                            }\n                            return PromisePolyfill.resolve();\n                        }\n                    }, this));\n            }, this);\n\n            var batchSendCallback = _.bind(function(res) {\n                this.requestInProgress = false;\n\n                try {\n\n                    // handle API response in a try-catch to make sure we can reset the\n                    // flush operation if something goes wrong\n\n                    if (options.unloading) {\n                        // update persisted data to include hook transformations\n                        return this.queue.updatePayloads(transformedItems);\n                    } else if (\n                        _.isObject(res) &&\n                            res.error === 'timeout' &&\n                            new Date().getTime() - startTime >= timeoutMS\n                    ) {\n                        this.reportError('Network timeout; retrying');\n                        return this.flush();\n                    } else if (\n                        _.isObject(res) &&\n                            (\n                                res.httpStatusCode >= 500\n                                || res.httpStatusCode === 429\n                                || (res.httpStatusCode <= 0 && !isOnline())\n                                || res.error === 'timeout'\n                            )\n                    ) {\n                        // network or API error, or 429 Too Many Requests, retry\n                        var retryMS = this.flushInterval * 2;\n                        if (res.retryAfter) {\n                            retryMS = (parseInt(res.retryAfter, 10) * 1000) || retryMS;\n                        }\n                        retryMS = Math.min(MAX_RETRY_INTERVAL_MS, retryMS);\n                        this.reportError('Error; retry in ' + retryMS + ' ms');\n                        this.scheduleFlush(retryMS);\n                        return PromisePolyfill.resolve();\n                    } else if (_.isObject(res) && res.httpStatusCode === 413) {\n                        // 413 Payload Too Large\n                        if (batch.length > 1) {\n                            var halvedBatchSize = Math.max(1, Math.floor(currentBatchSize / 2));\n                            this.batchSize = Math.min(this.batchSize, halvedBatchSize, batch.length - 1);\n                            this.reportError('413 response; reducing batch size to ' + this.batchSize);\n                            this.resetFlush();\n                            return PromisePolyfill.resolve();\n                        } else {\n                            this.reportError('Single-event request too large; dropping', batch);\n                            this.resetBatchSize();\n                            return removeItemsFromQueue();\n                        }\n                    } else {\n                        // successful network request+response; remove each item in batch from queue\n                        // (even if it was e.g. a 400, in which case retrying won't help)\n                        return removeItemsFromQueue();\n                    }\n                } catch(err) {\n                    this.reportError('Error handling API response', err);\n                    this.resetFlush();\n                }\n            }, this);\n            var requestOptions = {\n                method: 'POST',\n                verbose: true,\n                ignore_json_errors: true, // eslint-disable-line camelcase\n                timeout_ms: timeoutMS // eslint-disable-line camelcase\n            };\n            if (options.unloading) {\n                requestOptions.transport = 'sendBeacon';\n            }\n            logger$4.log('MIXPANEL REQUEST:', dataForRequest);\n            return this.sendRequestPromise(dataForRequest, requestOptions).then(batchSendCallback);\n        }, this))\n        .catch(_.bind(function(err) {\n            this.reportError('Error flushing request queue', err);\n            this.resetFlush();\n        }, this));\n};\n\n/**\n * Log error to global logger and optional user-defined logger.\n */\nRequestBatcher.prototype.reportError = function(msg, err) {\n    logger$4.error.apply(logger$4.error, arguments);\n    if (this.errorReporter) {\n        try {\n            if (!(err instanceof Error)) {\n                err = new Error(msg);\n            }\n            this.errorReporter(msg, err);\n        } catch(err) {\n            logger$4.error(err);\n        }\n    }\n};\n\n/**\n * @param {import('./session-recording').SerializedRecording} serializedRecording\n * @returns {boolean}\n */\nvar isRecordingExpired = function(serializedRecording) {\n    var now = Date.now();\n    return !serializedRecording || now > serializedRecording['maxExpires'] || now > serializedRecording['idleExpires'];\n};\n\nvar RECORD_ENQUEUE_THROTTLE_MS = 250;\n\nvar logger$3 = console_with_prefix('recorder');\nvar CompressionStream = win['CompressionStream'];\n\nvar RECORDER_BATCHER_LIB_CONFIG = {\n    'batch_size': 1000,\n    'batch_flush_interval_ms': 10 * 1000,\n    'batch_request_timeout_ms': 90 * 1000,\n    'batch_autostart': true\n};\n\nvar ACTIVE_SOURCES = new Set([\n    IncrementalSource.MouseMove,\n    IncrementalSource.MouseInteraction,\n    IncrementalSource.Scroll,\n    IncrementalSource.ViewportResize,\n    IncrementalSource.Input,\n    IncrementalSource.TouchMove,\n    IncrementalSource.MediaInteraction,\n    IncrementalSource.Drag,\n    IncrementalSource.Selection,\n]);\n\nfunction isUserEvent(ev) {\n    return ev.type === EventType.IncrementalSnapshot && ACTIVE_SOURCES.has(ev.data.source);\n}\n\n/**\n * @typedef {Object} SerializedRecording\n * @property {number} idleExpires\n * @property {number} maxExpires\n * @property {number} replayStartTime\n * @property {number} seqNo\n * @property {string} batchStartUrl\n * @property {string} replayId\n * @property {string} tabId\n * @property {string} replayStartUrl\n */\n\n/**\n * @typedef {Object} SessionRecordingOptions\n * @property {Object} [options.mixpanelInstance] - reference to the core MixpanelLib\n * @property {String} [options.replayId] - unique uuid for a single replay\n * @property {Function} [options.onIdleTimeout] - callback when a recording reaches idle timeout\n * @property {Function} [options.onMaxLengthReached] - callback when a recording reaches its maximum length\n * @property {Function} [options.rrwebRecord] - rrweb's `record` function\n * @property {Function} [options.onBatchSent] - callback when a batch of events is sent to the server\n * @property {Storage} [options.sharedLockStorage] - optional storage for shared lock, used for test dependency injection\n * optional properties for deserialization:\n * @property {number} idleExpires\n * @property {number} maxExpires\n * @property {number} replayStartTime\n * @property {number} seqNo\n * @property {string} batchStartUrl\n * @property {string} replayStartUrl\n */\n\n/**\n * @typedef {Object} UserIdInfo\n * @property {string} distinct_id\n * @property {string} user_id\n * @property {string} device_id\n */\n\n\n/**\n * This class encapsulates a single session recording and its lifecycle.\n * @param {SessionRecordingOptions} options\n */\nvar SessionRecording = function(options) {\n    this._mixpanel = options.mixpanelInstance;\n    this._onIdleTimeout = options.onIdleTimeout || NOOP_FUNC;\n    this._onMaxLengthReached = options.onMaxLengthReached || NOOP_FUNC;\n    this._onBatchSent = options.onBatchSent || NOOP_FUNC;\n    this._rrwebRecord = options.rrwebRecord || null;\n\n    // internal rrweb stopRecording function\n    this._stopRecording = null;\n    this.replayId = options.replayId;\n\n    this.batchStartUrl = options.batchStartUrl || null;\n    this.replayStartUrl = options.replayStartUrl || null;\n    this.idleExpires = options.idleExpires || null;\n    this.maxExpires = options.maxExpires || null;\n    this.replayStartTime = options.replayStartTime || null;\n    this.seqNo = options.seqNo || 0;\n\n    this.idleTimeoutId = null;\n    this.maxTimeoutId = null;\n\n    this.recordMaxMs = MAX_RECORDING_MS;\n    this.recordMinMs = 0;\n\n    // disable persistence if localStorage is not supported\n    // request-queue will automatically disable persistence if indexedDB fails to initialize\n    var usePersistence = localStorageSupported(options.sharedLockStorage, true);\n\n    // each replay has its own batcher key to avoid conflicts between rrweb events of different recordings\n    // this will be important when persistence is introduced\n    this.batcherKey = '__mprec_' + this.getConfig('name') + '_' + this.getConfig('token') + '_' + this.replayId;\n    this.queueStorage = new IDBStorageWrapper(RECORDING_EVENTS_STORE_NAME);\n    this.batcher = new RequestBatcher(this.batcherKey, {\n        errorReporter: this.reportError.bind(this),\n        flushOnlyOnInterval: true,\n        libConfig: RECORDER_BATCHER_LIB_CONFIG,\n        sendRequestFunc: this.flushEventsWithOptOut.bind(this),\n        queueStorage: this.queueStorage,\n        sharedLockStorage: options.sharedLockStorage,\n        usePersistence: usePersistence,\n        stopAllBatchingFunc: this.stopRecording.bind(this),\n\n        // increased throttle and shared lock timeout because recording events are very high frequency.\n        // this will minimize the amount of lock contention between enqueued events.\n        // for session recordings there is a lock for each tab anyway, so there's no risk of deadlock between tabs.\n        enqueueThrottleMs: RECORD_ENQUEUE_THROTTLE_MS,\n        sharedLockTimeoutMS: 10 * 1000,\n    });\n};\n\n/**\n * @returns {UserIdInfo}\n */\nSessionRecording.prototype.getUserIdInfo = function () {\n    if (this.finalFlushUserIdInfo) {\n        return this.finalFlushUserIdInfo;\n    }\n\n    var userIdInfo = {\n        'distinct_id': String(this._mixpanel.get_distinct_id()),\n    };\n\n    // send ID management props if they exist\n    var deviceId = this._mixpanel.get_property('$device_id');\n    if (deviceId) {\n        userIdInfo['$device_id'] = deviceId;\n    }\n    var userId = this._mixpanel.get_property('$user_id');\n    if (userId) {\n        userIdInfo['$user_id'] = userId;\n    }\n    return userIdInfo;\n};\n\nSessionRecording.prototype.unloadPersistedData = function () {\n    this.batcher.stop();\n    return this.batcher.flush()\n        .then(function () {\n            return this.queueStorage.removeItem(this.batcherKey);\n        }.bind(this));\n};\n\nSessionRecording.prototype.getConfig = function(configVar) {\n    return this._mixpanel.get_config(configVar);\n};\n\n// Alias for getConfig, used by the common addOptOutCheckMixpanelLib function which\n// reaches into this class instance and expects the snake case version of the function.\n// eslint-disable-next-line camelcase\nSessionRecording.prototype.get_config = function(configVar) {\n    return this.getConfig(configVar);\n};\n\nSessionRecording.prototype.startRecording = function (shouldStopBatcher) {\n    if (this._rrwebRecord === null) {\n        this.reportError('rrweb record function not provided. ');\n        return;\n    }\n\n    if (this._stopRecording !== null) {\n        logger$3.log('Recording already in progress, skipping startRecording.');\n        return;\n    }\n\n    this.recordMaxMs = this.getConfig('record_max_ms');\n    if (this.recordMaxMs > MAX_RECORDING_MS) {\n        this.recordMaxMs = MAX_RECORDING_MS;\n        logger$3.critical('record_max_ms cannot be greater than ' + MAX_RECORDING_MS + 'ms. Capping value.');\n    }\n\n    if (!this.maxExpires) {\n        this.maxExpires = new Date().getTime() + this.recordMaxMs;\n    }\n\n    this.recordMinMs = this.getConfig('record_min_ms');\n    if (this.recordMinMs > MAX_VALUE_FOR_MIN_RECORDING_MS) {\n        this.recordMinMs = MAX_VALUE_FOR_MIN_RECORDING_MS;\n        logger$3.critical('record_min_ms cannot be greater than ' + MAX_VALUE_FOR_MIN_RECORDING_MS + 'ms. Capping value.');\n    }\n\n    if (!this.replayStartTime) {\n        this.replayStartTime = new Date().getTime();\n        this.batchStartUrl = _.info.currentUrl();\n        this.replayStartUrl = _.info.currentUrl();\n    }\n\n    if (shouldStopBatcher || this.recordMinMs > 0) {\n        // the primary case for shouldStopBatcher is when we're starting recording after a reset\n        // and don't want to send anything over the network until there's\n        // actual user activity\n        // this also applies if the minimum recording length has not been hit yet\n        // so that we don't send data until we know the recording will be long enough\n        this.batcher.stop();\n    } else {\n        this.batcher.start();\n    }\n\n    var resetIdleTimeout = function () {\n        clearTimeout(this.idleTimeoutId);\n        var idleTimeoutMs = this.getConfig('record_idle_timeout_ms');\n        this.idleTimeoutId = setTimeout(this._onIdleTimeout, idleTimeoutMs);\n        this.idleExpires = new Date().getTime() + idleTimeoutMs;\n    }.bind(this);\n    resetIdleTimeout();\n\n    var blockSelector = this.getConfig('record_block_selector');\n    if (blockSelector === '' || blockSelector === null) {\n        blockSelector = undefined;\n    }\n\n    try {\n        this._stopRecording = this._rrwebRecord({\n            'emit': function (ev) {\n                if (this.idleExpires && this.idleExpires < ev.timestamp) {\n                    this._onIdleTimeout();\n                    return;\n                }\n                if (isUserEvent(ev)) {\n                    if (this.batcher.stopped && new Date().getTime() - this.replayStartTime >= this.recordMinMs) {\n                        // start flushing again after user activity\n                        this.batcher.start();\n                    }\n                    resetIdleTimeout();\n                }\n                // promise only used to await during tests\n                this.__enqueuePromise = this.batcher.enqueue(ev);\n            }.bind(this),\n            'blockClass': this.getConfig('record_block_class'),\n            'blockSelector': blockSelector,\n            'collectFonts': this.getConfig('record_collect_fonts'),\n            'dataURLOptions': { // canvas image options (https://developer.mozilla.org/en-US/docs/Web/API/HTMLCanvasElement/toDataURL)\n                'type': 'image/webp',\n                'quality': 0.6\n            },\n            'maskAllInputs': true,\n            'maskTextClass': this.getConfig('record_mask_text_class'),\n            'maskTextSelector': this.getConfig('record_mask_text_selector'),\n            'recordCanvas': this.getConfig('record_canvas'),\n            'sampling': {\n                'canvas': 15\n            }\n        });\n    } catch (err) {\n        this.reportError('Unexpected error when starting rrweb recording.', err);\n    }\n\n    if (typeof this._stopRecording !== 'function') {\n        this.reportError('rrweb failed to start, skipping this recording.');\n        this._stopRecording = null;\n        this.stopRecording(); // stop batcher looping and any timeouts\n        return;\n    }\n\n    var maxTimeoutMs = this.maxExpires - new Date().getTime();\n    this.maxTimeoutId = setTimeout(this._onMaxLengthReached.bind(this), maxTimeoutMs);\n};\n\nSessionRecording.prototype.stopRecording = function (skipFlush) {\n    // store the user ID info in case this is getting called in mixpanel.reset()\n    this.finalFlushUserIdInfo = this.getUserIdInfo();\n\n    if (!this.isRrwebStopped()) {\n        try {\n            this._stopRecording();\n        } catch (err) {\n            this.reportError('Error with rrweb stopRecording', err);\n        }\n        this._stopRecording = null;\n    }\n\n    var flushPromise;\n    if (this.batcher.stopped) {\n        // never got user activity to flush after reset, so just clear the batcher\n        flushPromise = this.batcher.clear();\n    } else if (!skipFlush) {\n        // flush any remaining events from running batcher\n        flushPromise = this.batcher.flush();\n    }\n    this.batcher.stop();\n\n    clearTimeout(this.idleTimeoutId);\n    clearTimeout(this.maxTimeoutId);\n    return flushPromise;\n};\n\nSessionRecording.prototype.isRrwebStopped = function () {\n    return this._stopRecording === null;\n};\n\n\n/**\n * Flushes the current batch of events to the server, but passes an opt-out callback to make sure\n * we stop recording and dump any queued events if the user has opted out.\n */\nSessionRecording.prototype.flushEventsWithOptOut = function (data, options, cb) {\n    var onOptOut = function (code) {\n        // addOptOutCheckMixpanelLib invokes this function with code=0 when the user has opted out\n        if (code === 0) {\n            this.stopRecording();\n            cb({error: 'Tracking has been opted out, stopping recording.'});\n        }\n    }.bind(this);\n\n    this._flushEvents(data, options, cb, onOptOut);\n};\n\n/**\n * @returns {SerializedRecording}\n */\nSessionRecording.prototype.serialize = function () {\n    // don't break if mixpanel instance was destroyed at some point\n    var tabId;\n    try {\n        tabId = this._mixpanel.get_tab_id();\n    } catch (e) {\n        this.reportError('Error getting tab ID for serialization ', e);\n        tabId = null;\n    }\n\n    return {\n        'replayId': this.replayId,\n        'seqNo': this.seqNo,\n        'replayStartTime': this.replayStartTime,\n        'batchStartUrl': this.batchStartUrl,\n        'replayStartUrl': this.replayStartUrl,\n        'idleExpires': this.idleExpires,\n        'maxExpires': this.maxExpires,\n        'tabId': tabId,\n    };\n};\n\n\n/**\n * @static\n * @param {SerializedRecording} serializedRecording\n * @param {SessionRecordingOptions} options\n * @returns {SessionRecording}\n */\nSessionRecording.deserialize = function (serializedRecording, options) {\n    var recording = new SessionRecording(_.extend({}, options, {\n        replayId: serializedRecording['replayId'],\n        batchStartUrl: serializedRecording['batchStartUrl'],\n        replayStartUrl: serializedRecording['replayStartUrl'],\n        idleExpires: serializedRecording['idleExpires'],\n        maxExpires: serializedRecording['maxExpires'],\n        replayStartTime: serializedRecording['replayStartTime'],\n        seqNo: serializedRecording['seqNo'],\n        sharedLockStorage: options.sharedLockStorage,\n    }));\n\n    return recording;\n};\n\nSessionRecording.prototype._sendRequest = function(currentReplayId, reqParams, reqBody, callback) {\n    var onSuccess = function (response, responseBody) {\n        // Update batch specific props only if the request was successful to guarantee ordering.\n        // RequestBatcher will always flush the next batch after the previous one succeeds.\n        // extra check to see if the replay ID has changed so that we don't increment the seqNo on the wrong replay\n        if (response.status === 200 && this.replayId === currentReplayId) {\n            this.seqNo++;\n            this.batchStartUrl = _.info.currentUrl();\n        }\n\n        this._onBatchSent();\n        callback({\n            status: 0,\n            httpStatusCode: response.status,\n            responseBody: responseBody,\n            retryAfter: response.headers.get('Retry-After')\n        });\n    }.bind(this);\n    var apiHost = (this._mixpanel.get_api_host && this._mixpanel.get_api_host('record')) || this.getConfig('api_host');\n    win['fetch'](apiHost + '/' + this.getConfig('api_routes')['record'] + '?' + new URLSearchParams(reqParams), {\n        'method': 'POST',\n        'headers': {\n            'Authorization': 'Basic ' + btoa(this.getConfig('token') + ':'),\n            'Content-Type': 'application/octet-stream'\n        },\n        'body': reqBody,\n    }).then(function (response) {\n        response.json().then(function (responseBody) {\n            onSuccess(response, responseBody);\n        }).catch(function (error) {\n            callback({error: error});\n        });\n    }).catch(function (error) {\n        callback({error: error, httpStatusCode: 0});\n    });\n};\n\nSessionRecording.prototype._flushEvents = addOptOutCheckMixpanelLib(function (data, options, callback) {\n    var numEvents = data.length;\n\n    if (numEvents > 0) {\n        var replayId = this.replayId;\n\n        // each rrweb event has a timestamp - leverage those to get time properties\n        var batchStartTime = Infinity;\n        var batchEndTime = -Infinity;\n        var hasFullSnapshot = false;\n        for (var i = 0; i < numEvents; i++) {\n            batchStartTime = Math.min(batchStartTime, data[i].timestamp);\n            batchEndTime = Math.max(batchEndTime, data[i].timestamp);\n            if (data[i].type === EventType.FullSnapshot) {\n                hasFullSnapshot = true;\n            }\n        }\n\n        if (this.seqNo === 0) {\n            if (!hasFullSnapshot) {\n                callback({error: 'First batch does not contain a full snapshot. Aborting recording.'});\n                this.stopRecording(true);\n                return;\n            }\n            this.replayStartTime = batchStartTime;\n        } else if (!this.replayStartTime) {\n            this.reportError('Replay start time not set but seqNo is not 0. Using current batch start time as a fallback.');\n            this.replayStartTime = batchStartTime;\n        }\n\n        var replayLengthMs = batchEndTime - this.replayStartTime;\n\n        var reqParams = {\n            '$current_url': this.batchStartUrl,\n            '$lib_version': Config.LIB_VERSION,\n            'batch_start_time': batchStartTime / 1000,\n            'mp_lib': 'web',\n            'replay_id': replayId,\n            'replay_length_ms': replayLengthMs,\n            'replay_start_time': this.replayStartTime / 1000,\n            'replay_start_url': this.replayStartUrl,\n            'seq': this.seqNo\n        };\n        var eventsJson = JSON.stringify(data);\n        Object.assign(reqParams, this.getUserIdInfo());\n\n        if (CompressionStream) {\n            var jsonStream = new Blob([eventsJson], {type: 'application/json'}).stream();\n            var gzipStream = jsonStream.pipeThrough(new CompressionStream('gzip'));\n            new Response(gzipStream)\n                .blob()\n                .then(function(compressedBlob) {\n                    reqParams['format'] = 'gzip';\n                    this._sendRequest(replayId, reqParams, compressedBlob, callback);\n                }.bind(this));\n        } else {\n            reqParams['format'] = 'body';\n            this._sendRequest(replayId, reqParams, eventsJson, callback);\n        }\n    }\n});\n\n\nSessionRecording.prototype.reportError = function(msg, err) {\n    logger$3.error.apply(logger$3.error, arguments);\n    try {\n        if (!err && !(msg instanceof Error)) {\n            msg = new Error(msg);\n        }\n        this.getConfig('error_reporter')(msg, err);\n    } catch(err) {\n        logger$3.error(err);\n    }\n};\n\n/**\n * Module for handling the storage and retrieval of recording metadata as well as any active recordings.\n * Makes sure that only one tab can be recording at a time.\n */\nvar RecordingRegistry = function (options) {\n    this.idb = new IDBStorageWrapper(RECORDING_REGISTRY_STORE_NAME);\n    this.errorReporter = options.errorReporter;\n    this.mixpanelInstance = options.mixpanelInstance;\n    this.sharedLockStorage = options.sharedLockStorage;\n};\n\nRecordingRegistry.prototype.handleError = function (err) {\n    this.errorReporter('IndexedDB error: ', err);\n};\n\n/**\n * @param {import('./session-recording').SerializedRecording} serializedRecording\n */\nRecordingRegistry.prototype.setActiveRecording = function (serializedRecording) {\n    var tabId = serializedRecording['tabId'];\n    if (!tabId) {\n        console.warn('No tab ID is set, cannot persist recording metadata.');\n        return PromisePolyfill.resolve();\n    }\n\n    return this.idb.init()\n        .then(function () {\n            return this.idb.setItem(tabId, serializedRecording);\n        }.bind(this))\n        .catch(this.handleError.bind(this));\n};\n\n/**\n * @returns {Promise<import('./session-recording').SerializedRecording>}\n */\nRecordingRegistry.prototype.getActiveRecording = function () {\n    return this.idb.init()\n        .then(function () {\n            return this.idb.getItem(this.mixpanelInstance.get_tab_id());\n        }.bind(this))\n        .then(function (serializedRecording) {\n            return isRecordingExpired(serializedRecording) ? null : serializedRecording;\n        }.bind(this))\n        .catch(this.handleError.bind(this));\n};\n\nRecordingRegistry.prototype.clearActiveRecording = function () {\n    // mark recording as expired instead of deleting it in case the page unloads mid-flush and doesn't make it to ingestion.\n    // this will ensure the next pageload will flush the remaining events, but not try to continue the recording.\n    return this.getActiveRecording()\n        .then(function (serializedRecording) {\n            if (serializedRecording) {\n                serializedRecording['maxExpires'] = 0;\n                return this.setActiveRecording(serializedRecording);\n            }\n        }.bind(this))\n        .catch(this.handleError.bind(this));\n};\n\n/**\n * Flush any inactive recordings from the registry to minimize data loss.\n * The main idea here is that we can flush remaining rrweb events on the next page load if a tab is closed mid-batch.\n */\nRecordingRegistry.prototype.flushInactiveRecordings = function () {\n    return this.idb.init()\n        .then(function() {\n            return this.idb.getAll();\n        }.bind(this))\n        .then(function (serializedRecordings) {\n            // clean up any expired recordings from the registry, non-expired ones may be active in other tabs\n            var unloadPromises = serializedRecordings\n                .filter(function (serializedRecording) {\n                    return isRecordingExpired(serializedRecording);\n                })\n                .map(function (serializedRecording) {\n                    var sessionRecording = SessionRecording.deserialize(serializedRecording, {\n                        mixpanelInstance: this.mixpanelInstance,\n                        sharedLockStorage: this.sharedLockStorage\n                    });\n                    return sessionRecording.unloadPersistedData()\n                        .then(function () {\n                            // expired recording was successfully flushed, we can clean it up from the registry\n                            return this.idb.removeItem(serializedRecording['tabId']);\n                        }.bind(this))\n                        .catch(this.handleError.bind(this));\n                }.bind(this));\n\n            return PromisePolyfill.all(unloadPromises);\n        }.bind(this))\n        .catch(this.handleError.bind(this));\n};\n\nvar logger$2 = console_with_prefix('recorder');\n\n/**\n * Recorder API: bundles rrweb and and exposes methods to start and stop recordings.\n * @param {Object} [options.mixpanelInstance] - reference to the core MixpanelLib\n*/\nvar MixpanelRecorder = function(mixpanelInstance, rrwebRecord, sharedLockStorage) {\n    this.mixpanelInstance = mixpanelInstance;\n    this.rrwebRecord = rrwebRecord || record;\n    this.sharedLockStorage = sharedLockStorage;\n\n    /**\n     * @member {import('./registry').RecordingRegistry}\n     */\n    this.recordingRegistry = new RecordingRegistry({\n        mixpanelInstance: this.mixpanelInstance,\n        errorReporter: logger$2.error,\n        sharedLockStorage: sharedLockStorage\n    });\n    this._flushInactivePromise = this.recordingRegistry.flushInactiveRecordings();\n\n    this.activeRecording = null;\n    this.stopRecordingInProgress = false;\n};\n\nMixpanelRecorder.prototype.startRecording = function(options) {\n    options = options || {};\n    if (this.activeRecording && !this.activeRecording.isRrwebStopped()) {\n        logger$2.log('Recording already in progress, skipping startRecording.');\n        return;\n    }\n\n    var onIdleTimeout = function () {\n        logger$2.log('Idle timeout reached, restarting recording.');\n        this.resetRecording();\n    }.bind(this);\n\n    var onMaxLengthReached = function () {\n        logger$2.log('Max recording length reached, stopping recording.');\n        this.resetRecording();\n    }.bind(this);\n\n    var onBatchSent = function () {\n        this.recordingRegistry.setActiveRecording(this.activeRecording.serialize());\n        this['__flushPromise'] = this.activeRecording.batcher._flushPromise;\n    }.bind(this);\n\n    /**\n     * @type {import('./session-recording').SessionRecordingOptions}\n     */\n    var sessionRecordingOptions = {\n        mixpanelInstance: this.mixpanelInstance,\n        onBatchSent: onBatchSent,\n        onIdleTimeout: onIdleTimeout,\n        onMaxLengthReached: onMaxLengthReached,\n        replayId: _.UUID(),\n        rrwebRecord: this.rrwebRecord,\n        sharedLockStorage: this.sharedLockStorage\n    };\n\n    if (options.activeSerializedRecording) {\n        this.activeRecording = SessionRecording.deserialize(options.activeSerializedRecording, sessionRecordingOptions);\n    } else {\n        this.activeRecording = new SessionRecording(sessionRecordingOptions);\n    }\n\n    this.activeRecording.startRecording(options.shouldStopBatcher);\n    return this.recordingRegistry.setActiveRecording(this.activeRecording.serialize());\n};\n\nMixpanelRecorder.prototype.stopRecording = function() {\n    // Prevents activeSerializedRecording from being reused when stopping the recording.\n    this.stopRecordingInProgress = true;\n    return this._stopCurrentRecording(false, true).then(function() {\n        return this.recordingRegistry.clearActiveRecording();\n    }.bind(this)).then(function() {\n        this.stopRecordingInProgress = false;\n    }.bind(this));\n};\n\nMixpanelRecorder.prototype.pauseRecording = function() {\n    return this._stopCurrentRecording(false);\n};\n\nMixpanelRecorder.prototype._stopCurrentRecording = function(skipFlush, disableActiveRecording) {\n    if (this.activeRecording) {\n        var stopRecordingPromise = this.activeRecording.stopRecording(skipFlush);\n        if (disableActiveRecording) {\n            this.activeRecording = null;\n        }\n        return stopRecordingPromise;\n    }\n    return PromisePolyfill.resolve();\n};\n\nMixpanelRecorder.prototype.resumeRecording = function (startNewIfInactive) {\n    if (this.activeRecording && this.activeRecording.isRrwebStopped()) {\n        this.activeRecording.startRecording(false);\n        return PromisePolyfill.resolve(null);\n    }\n\n    return this.recordingRegistry.getActiveRecording()\n        .then(function (activeSerializedRecording) {\n            if (activeSerializedRecording && !this.stopRecordingInProgress) {\n                return this.startRecording({activeSerializedRecording: activeSerializedRecording});\n            } else if (startNewIfInactive) {\n                return this.startRecording({shouldStopBatcher: false});\n            } else {\n                logger$2.log('No resumable recording found.');\n                return null;\n            }\n        }.bind(this));\n};\n\n\nMixpanelRecorder.prototype.resetRecording = function () {\n    this.stopRecording();\n    this.startRecording({shouldStopBatcher: true});\n};\n\nMixpanelRecorder.prototype.getActiveReplayId = function () {\n    if (this.activeRecording && !this.activeRecording.isRrwebStopped()) {\n        return this.activeRecording.replayId;\n    } else {\n        return null;\n    }\n};\n\n// getter so that older mixpanel-core versions can still retrieve the replay ID\n// when pulling the latest recorder bundle from the CDN\nObject.defineProperty(MixpanelRecorder.prototype, 'replayId', {\n    get: function () {\n        return this.getActiveReplayId();\n    }\n});\n\nwin['__mp_recorder'] = MixpanelRecorder;\n\n// stateless utils\n// mostly from https://github.com/mixpanel/mixpanel-js/blob/989ada50f518edab47b9c4fd9535f9fbd5ec5fc0/src/autotrack-utils.js\n\n\nvar EV_CHANGE = 'change';\nvar EV_CLICK = 'click';\nvar EV_HASHCHANGE = 'hashchange';\nvar EV_MP_LOCATION_CHANGE = 'mp_locationchange';\nvar EV_POPSTATE = 'popstate';\n// TODO scrollend isn't available in Safari: document or polyfill?\nvar EV_SCROLLEND = 'scrollend';\nvar EV_SUBMIT = 'submit';\n\nvar CLICK_EVENT_PROPS = [\n    'clientX', 'clientY',\n    'offsetX', 'offsetY',\n    'pageX', 'pageY',\n    'screenX', 'screenY',\n    'x', 'y'\n];\nvar OPT_IN_CLASSES = ['mp-include'];\nvar OPT_OUT_CLASSES = ['mp-no-track'];\nvar SENSITIVE_DATA_CLASSES = OPT_OUT_CLASSES.concat(['mp-sensitive']);\nvar TRACKED_ATTRS = [\n    'aria-label', 'aria-labelledby', 'aria-describedby',\n    'href', 'name', 'role', 'title', 'type'\n];\n\nvar logger$1 = console_with_prefix('autocapture');\n\n\nfunction getClasses(el) {\n    var classes = {};\n    var classList = getClassName(el).split(' ');\n    for (var i = 0; i < classList.length; i++) {\n        var cls = classList[i];\n        if (cls) {\n            classes[cls] = true;\n        }\n    }\n    return classes;\n}\n\n/*\n * Get the className of an element, accounting for edge cases where element.className is an object\n * @param {Element} el - element to get the className of\n * @returns {string} the element's class\n */\nfunction getClassName(el) {\n    switch(typeof el.className) {\n        case 'string':\n            return el.className;\n        case 'object': // handle cases where className might be SVGAnimatedString or some other type\n            return el.className.baseVal || el.getAttribute('class') || '';\n        default: // future proof\n            return '';\n    }\n}\n\nfunction getPreviousElementSibling(el) {\n    if (el.previousElementSibling) {\n        return el.previousElementSibling;\n    } else {\n        do {\n            el = el.previousSibling;\n        } while (el && !isElementNode(el));\n        return el;\n    }\n}\n\nfunction getPropertiesFromElement(el, ev, blockAttrsSet, extraAttrs, allowElementCallback, allowSelectors) {\n    var props = {\n        '$classes': getClassName(el).split(' '),\n        '$tag_name': el.tagName.toLowerCase()\n    };\n    var elId = el.id;\n    if (elId) {\n        props['$id'] = elId;\n    }\n\n    if (shouldTrackElementDetails(el, ev, allowElementCallback, allowSelectors)) {\n        _.each(TRACKED_ATTRS.concat(extraAttrs), function(attr) {\n            if (el.hasAttribute(attr) && !blockAttrsSet[attr]) {\n                var attrVal = el.getAttribute(attr);\n                if (shouldTrackValue(attrVal)) {\n                    props['$attr-' + attr] = attrVal;\n                }\n            }\n        });\n    }\n\n    var nthChild = 1;\n    var nthOfType = 1;\n    var currentElem = el;\n    while (currentElem = getPreviousElementSibling(currentElem)) { // eslint-disable-line no-cond-assign\n        nthChild++;\n        if (currentElem.tagName === el.tagName) {\n            nthOfType++;\n        }\n    }\n    props['$nth_child'] = nthChild;\n    props['$nth_of_type'] = nthOfType;\n\n    return props;\n}\n\nfunction getPropsForDOMEvent(ev, config) {\n    var allowElementCallback = config.allowElementCallback;\n    var allowSelectors = config.allowSelectors || [];\n    var blockAttrs = config.blockAttrs || [];\n    var blockElementCallback = config.blockElementCallback;\n    var blockSelectors = config.blockSelectors || [];\n    var captureTextContent = config.captureTextContent || false;\n    var captureExtraAttrs = config.captureExtraAttrs || [];\n    var capturedForHeatMap = config.capturedForHeatMap || false;\n\n    // convert array to set every time, as the config may have changed\n    var blockAttrsSet = {};\n    _.each(blockAttrs, function(attr) {\n        blockAttrsSet[attr] = true;\n    });\n\n    var props = null;\n\n    var target = typeof ev.target === 'undefined' ? ev.srcElement : ev.target;\n    if (isTextNode(target)) { // defeat Safari bug (see: http://www.quirksmode.org/js/events_properties.html)\n        target = target.parentNode;\n    }\n\n    if (\n        shouldTrackDomEvent(target, ev) &&\n        isElementAllowed(target, ev, allowElementCallback, allowSelectors) &&\n        !isElementBlocked(target, ev, blockElementCallback, blockSelectors)\n    ) {\n        var targetElementList = [target];\n        var curEl = target;\n        while (curEl.parentNode && !isTag(curEl, 'body')) {\n            targetElementList.push(curEl.parentNode);\n            curEl = curEl.parentNode;\n        }\n\n        var elementsJson = [];\n        var href, explicitNoTrack = false;\n        _.each(targetElementList, function(el) {\n            var shouldTrackDetails = shouldTrackElementDetails(el, ev, allowElementCallback, allowSelectors);\n\n            // if the element or a parent element is an anchor tag\n            // include the href as a property\n            if (!blockAttrsSet['href'] && el.tagName.toLowerCase() === 'a') {\n                href = el.getAttribute('href');\n                href = shouldTrackDetails && shouldTrackValue(href) && href;\n            }\n\n            if (isElementBlocked(el, ev, blockElementCallback, blockSelectors)) {\n                explicitNoTrack = true;\n            }\n\n            elementsJson.push(getPropertiesFromElement(el, ev, blockAttrsSet, captureExtraAttrs, allowElementCallback, allowSelectors));\n        }, this);\n\n        if (!explicitNoTrack) {\n            var docElement = document$1['documentElement'];\n            props = {\n                '$event_type': ev.type,\n                '$host': win.location.host,\n                '$pathname': win.location.pathname,\n                '$elements':  elementsJson,\n                '$el_attr__href': href,\n                '$viewportHeight': Math.max(docElement['clientHeight'], win['innerHeight'] || 0),\n                '$viewportWidth': Math.max(docElement['clientWidth'], win['innerWidth'] || 0),\n                '$pageHeight': document$1['body']['offsetHeight'] || 0,\n                '$pageWidth': document$1['body']['offsetWidth'] || 0,\n            };\n            _.each(captureExtraAttrs, function(attr) {\n                if (!blockAttrsSet[attr] && target.hasAttribute(attr)) {\n                    var attrVal = target.getAttribute(attr);\n                    if (shouldTrackValue(attrVal)) {\n                        props['$el_attr__' + attr] = attrVal;\n                    }\n                }\n            });\n\n            if (captureTextContent) {\n                elementText = getSafeText(target, ev, allowElementCallback, allowSelectors);\n                if (elementText && elementText.length) {\n                    props['$el_text'] = elementText;\n                }\n            }\n\n            if (ev.type === EV_CLICK) {\n                _.each(CLICK_EVENT_PROPS, function(prop) {\n                    if (prop in ev) {\n                        props['$' + prop] = ev[prop];\n                    }\n                });\n                if (capturedForHeatMap) {\n                    props['$captured_for_heatmap'] = true;\n                }\n                target = guessRealClickTarget(ev);\n            }\n            // prioritize text content from \"real\" click target if different from original target\n            if (captureTextContent) {\n                var elementText = getSafeText(target, ev, allowElementCallback, allowSelectors);\n                if (elementText && elementText.length) {\n                    props['$el_text'] = elementText;\n                }\n            }\n\n            if (target) {\n                // target may have been recalculated; check allowlists and blocklists again\n                if (\n                    !isElementAllowed(target, ev, allowElementCallback, allowSelectors) ||\n                    isElementBlocked(target, ev, blockElementCallback, blockSelectors)\n                ) {\n                    return null;\n                }\n\n                var targetProps = getPropertiesFromElement(target, ev, blockAttrsSet, captureExtraAttrs, allowElementCallback, allowSelectors);\n                props['$target'] = targetProps;\n                // pull up more props onto main event props\n                props['$el_classes'] = targetProps['$classes'];\n                _.extend(props, _.strip_empty_properties({\n                    '$el_id': targetProps['$id'],\n                    '$el_tag_name': targetProps['$tag_name']\n                }));\n            }\n        }\n    }\n\n    return props;\n}\n\n\n/**\n * Get the direct text content of an element, protecting against sensitive data collection.\n * Concats textContent of each of the element's text node children; this avoids potential\n * collection of sensitive data that could happen if we used element.textContent and the\n * element had sensitive child elements, since element.textContent includes child content.\n * Scrubs values that look like they could be sensitive (i.e. cc or ssn number).\n * @param {Element} el - element to get the text of\n * @param {Array<string>} allowSelectors - CSS selectors for elements that should be included\n * @returns {string} the element's direct text content\n */\nfunction getSafeText(el, ev, allowElementCallback, allowSelectors) {\n    var elText = '';\n\n    if (shouldTrackElementDetails(el, ev, allowElementCallback, allowSelectors) && el.childNodes && el.childNodes.length) {\n        _.each(el.childNodes, function(child) {\n            if (isTextNode(child) && child.textContent) {\n                elText += _.trim(child.textContent)\n                    // scrub potentially sensitive values\n                    .split(/(\\s+)/).filter(shouldTrackValue).join('')\n                    // normalize whitespace\n                    .replace(/[\\r\\n]/g, ' ').replace(/[ ]+/g, ' ')\n                    // truncate\n                    .substring(0, 255);\n            }\n        });\n    }\n\n    return _.trim(elText);\n}\n\nfunction guessRealClickTarget(ev) {\n    var target = ev.target;\n    var composedPath = ev['composedPath']();\n    for (var i = 0; i < composedPath.length; i++) {\n        var node = composedPath[i];\n        if (\n            isTag(node, 'a') ||\n            isTag(node, 'button') ||\n            isTag(node, 'input') ||\n            isTag(node, 'select') ||\n            (node.getAttribute && node.getAttribute('role') === 'button')\n        ) {\n            target = node;\n            break;\n        }\n        if (node === target) {\n            break;\n        }\n    }\n    return target;\n}\n\nfunction isElementAllowed(el, ev, allowElementCallback, allowSelectors) {\n    if (allowElementCallback) {\n        try {\n            if (!allowElementCallback(el, ev)) {\n                return false;\n            }\n        } catch (err) {\n            logger$1.critical('Error while checking element in allowElementCallback', err);\n            return false;\n        }\n    }\n\n    if (!allowSelectors.length) {\n        // no allowlist; all elements are fair game\n        return true;\n    }\n\n    for (var i = 0; i < allowSelectors.length; i++) {\n        var sel = allowSelectors[i];\n        try {\n            if (el['matches'](sel)) {\n                return true;\n            }\n        } catch (err) {\n            logger$1.critical('Error while checking selector: ' + sel, err);\n        }\n    }\n    return false;\n}\n\nfunction isElementBlocked(el, ev, blockElementCallback, blockSelectors) {\n    var i;\n\n    if (blockElementCallback) {\n        try {\n            if (blockElementCallback(el, ev)) {\n                return true;\n            }\n        } catch (err) {\n            logger$1.critical('Error while checking element in blockElementCallback', err);\n            return true;\n        }\n    }\n\n    if (blockSelectors && blockSelectors.length) {\n        // programmatically prevent tracking of elements that match CSS selectors\n        for (i = 0; i < blockSelectors.length; i++) {\n            var sel = blockSelectors[i];\n            try {\n                if (el['matches'](sel)) {\n                    return true;\n                }\n            } catch (err) {\n                logger$1.critical('Error while checking selector: ' + sel, err);\n            }\n        }\n    }\n\n    // allow users to programmatically prevent tracking of elements by adding default classes such as 'mp-no-track'\n    var classes = getClasses(el);\n    for (i = 0; i < OPT_OUT_CLASSES.length; i++) {\n        if (classes[OPT_OUT_CLASSES[i]]) {\n            return true;\n        }\n    }\n\n    return false;\n}\n\n/*\n * Check whether a DOM node has nodeType Node.ELEMENT_NODE\n * @param {Node} node - node to check\n * @returns {boolean} whether node is of the correct nodeType\n */\nfunction isElementNode(node) {\n    return node && node.nodeType === 1; // Node.ELEMENT_NODE - use integer constant for browser portability\n}\n\n/*\n * Check whether an element is of a given tag type.\n * Due to potential reference discrepancies (such as the webcomponents.js polyfill),\n * we want to match tagNames instead of specific references because something like\n * element === document.body won't always work because element might not be a native\n * element.\n * @param {Element} el - element to check\n * @param {string} tag - tag name (e.g., \"div\")\n * @returns {boolean} whether el is of the given tag type\n */\nfunction isTag(el, tag) {\n    return el && el.tagName && el.tagName.toLowerCase() === tag.toLowerCase();\n}\n\n/*\n * Check whether a DOM node is a TEXT_NODE\n * @param {Node} node - node to check\n * @returns {boolean} whether node is of type Node.TEXT_NODE\n */\nfunction isTextNode(node) {\n    return node && node.nodeType === 3; // Node.TEXT_NODE - use integer constant for browser portability\n}\n\nfunction minDOMApisSupported() {\n    try {\n        var testEl = document$1.createElement('div');\n        return !!testEl['matches'];\n    } catch (err) {\n        return false;\n    }\n}\n\n/*\n * Check whether a DOM event should be \"tracked\" or if it may contain sensitive data\n * using a variety of heuristics.\n * @param {Element} el - element to check\n * @param {Event} ev - event to check\n * @returns {boolean} whether the event should be tracked\n */\nfunction shouldTrackDomEvent(el, ev) {\n    if (!el || isTag(el, 'html') || !isElementNode(el)) {\n        return false;\n    }\n    var tag = el.tagName.toLowerCase();\n    switch (tag) {\n        case 'form':\n            return ev.type === EV_SUBMIT;\n        case 'input':\n            if (['button', 'submit'].indexOf(el.getAttribute('type')) === -1) {\n                return ev.type === EV_CHANGE;\n            } else {\n                return ev.type === EV_CLICK;\n            }\n        case 'select':\n        case 'textarea':\n            return ev.type === EV_CHANGE;\n        default:\n            return ev.type === EV_CLICK;\n    }\n}\n\n/*\n * Check whether a DOM element should be \"tracked\" or if it may contain sensitive data\n * using a variety of heuristics.\n * @param {Element} el - element to check\n * @param {Array<string>} allowSelectors - CSS selectors for elements that should be included\n * @returns {boolean} whether the element should be tracked\n */\nfunction shouldTrackElementDetails(el, ev, allowElementCallback, allowSelectors) {\n    var i;\n\n    if (!isElementAllowed(el, ev, allowElementCallback, allowSelectors)) {\n        return false;\n    }\n\n    for (var curEl = el; curEl.parentNode && !isTag(curEl, 'body'); curEl = curEl.parentNode) {\n        var classes = getClasses(curEl);\n        for (i = 0; i < SENSITIVE_DATA_CLASSES.length; i++) {\n            if (classes[SENSITIVE_DATA_CLASSES[i]]) {\n                return false;\n            }\n        }\n    }\n\n    var elClasses = getClasses(el);\n    for (i = 0; i < OPT_IN_CLASSES.length; i++) {\n        if (elClasses[OPT_IN_CLASSES[i]]) {\n            return true;\n        }\n    }\n\n    // don't send data from inputs or similar elements since there will always be\n    // a risk of clientside javascript placing sensitive data in attributes\n    if (\n        isTag(el, 'input') ||\n        isTag(el, 'select') ||\n        isTag(el, 'textarea') ||\n        el.getAttribute('contenteditable') === 'true'\n    ) {\n        return false;\n    }\n\n    // don't include hidden or password fields\n    var type = el.type || '';\n    if (typeof type === 'string') { // it's possible for el.type to be a DOM element if el is a form with a child input[name=\"type\"]\n        switch(type.toLowerCase()) {\n            case 'hidden':\n                return false;\n            case 'password':\n                return false;\n        }\n    }\n\n    // filter out data from fields that look like sensitive fields\n    var name = el.name || el.id || '';\n    if (typeof name === 'string') { // it's possible for el.name or el.id to be a DOM element if el is a form with a child input[name=\"name\"]\n        var sensitiveNameRegex = /^cc|cardnum|ccnum|creditcard|csc|cvc|cvv|exp|pass|pwd|routing|seccode|securitycode|securitynum|socialsec|socsec|ssn/i;\n        if (sensitiveNameRegex.test(name.replace(/[^a-zA-Z0-9]/g, ''))) {\n            return false;\n        }\n    }\n\n    return true;\n}\n\n\n/*\n * Check whether a string value should be \"tracked\" or if it may contain sensitive data\n * using a variety of heuristics.\n * @param {string} value - string value to check\n * @returns {boolean} whether the element should be tracked\n */\nfunction shouldTrackValue(value) {\n    if (value === null || _.isUndefined(value)) {\n        return false;\n    }\n\n    if (typeof value === 'string') {\n        value = _.trim(value);\n\n        // check to see if input value looks like a credit card number\n        // see: https://www.safaribooksonline.com/library/view/regular-expressions-cookbook/9781449327453/ch04s20.html\n        var ccRegex = /^(?:(4[0-9]{12}(?:[0-9]{3})?)|(5[1-5][0-9]{14})|(6(?:011|5[0-9]{2})[0-9]{12})|(3[47][0-9]{13})|(3(?:0[0-5]|[68][0-9])[0-9]{11})|((?:2131|1800|35[0-9]{3})[0-9]{11}))$/;\n        if (ccRegex.test((value || '').replace(/[- ]/g, ''))) {\n            return false;\n        }\n\n        // check to see if input value looks like a social security number\n        var ssnRegex = /(^\\d{3}-?\\d{2}-?\\d{4}$)/;\n        if (ssnRegex.test(value)) {\n            return false;\n        }\n    }\n\n    return true;\n}\n\n/** @const */ var DEFAULT_RAGE_CLICK_THRESHOLD_PX = 30;\n/** @const */ var DEFAULT_RAGE_CLICK_TIMEOUT_MS = 1000;\n/** @const */ var DEFAULT_RAGE_CLICK_CLICK_COUNT = 4;\n\nfunction RageClickTracker() {\n    this.clicks = [];\n}\n\nRageClickTracker.prototype.isRageClick = function(x, y, options) {\n    options = options || {};\n    var thresholdPx = options['threshold_px'] || DEFAULT_RAGE_CLICK_THRESHOLD_PX;\n    var timeoutMs = options['timeout_ms'] || DEFAULT_RAGE_CLICK_TIMEOUT_MS;\n    var clickCount = options['click_count'] || DEFAULT_RAGE_CLICK_CLICK_COUNT;\n    var timestamp = Date.now();\n\n    var lastClick = this.clicks[this.clicks.length - 1];\n    if (\n        lastClick &&\n        timestamp - lastClick.timestamp < timeoutMs &&\n        Math.sqrt(Math.pow(x - lastClick.x, 2) + Math.pow(y - lastClick.y, 2)) < thresholdPx\n    ) {\n        this.clicks.push({ x: x, y: y, timestamp: timestamp });\n        if (this.clicks.length >= clickCount) {\n            this.clicks = [];\n            return true;\n        }\n    } else {\n        this.clicks = [{ x: x, y: y, timestamp: timestamp }];\n    }\n    return false;\n};\n\nvar AUTOCAPTURE_CONFIG_KEY = 'autocapture';\nvar LEGACY_PAGEVIEW_CONFIG_KEY = 'track_pageview';\n\nvar PAGEVIEW_OPTION_FULL_URL = 'full-url';\nvar PAGEVIEW_OPTION_URL_WITH_PATH_AND_QUERY_STRING = 'url-with-path-and-query-string';\nvar PAGEVIEW_OPTION_URL_WITH_PATH = 'url-with-path';\n\nvar CONFIG_ALLOW_ELEMENT_CALLBACK = 'allow_element_callback';\nvar CONFIG_ALLOW_SELECTORS = 'allow_selectors';\nvar CONFIG_ALLOW_URL_REGEXES = 'allow_url_regexes';\nvar CONFIG_BLOCK_ATTRS = 'block_attrs';\nvar CONFIG_BLOCK_ELEMENT_CALLBACK = 'block_element_callback';\nvar CONFIG_BLOCK_SELECTORS = 'block_selectors';\nvar CONFIG_BLOCK_URL_REGEXES = 'block_url_regexes';\nvar CONFIG_CAPTURE_EXTRA_ATTRS = 'capture_extra_attrs';\nvar CONFIG_CAPTURE_TEXT_CONTENT = 'capture_text_content';\nvar CONFIG_SCROLL_CAPTURE_ALL = 'scroll_capture_all';\nvar CONFIG_SCROLL_CHECKPOINTS = 'scroll_depth_percent_checkpoints';\nvar CONFIG_TRACK_CLICK = 'click';\nvar CONFIG_TRACK_INPUT = 'input';\nvar CONFIG_TRACK_PAGEVIEW = 'pageview';\nvar CONFIG_TRACK_RAGE_CLICK = 'rage_click';\nvar CONFIG_TRACK_SCROLL = 'scroll';\nvar CONFIG_TRACK_SUBMIT = 'submit';\n\nvar CONFIG_DEFAULTS$1 = {};\nCONFIG_DEFAULTS$1[CONFIG_ALLOW_SELECTORS] = [];\nCONFIG_DEFAULTS$1[CONFIG_ALLOW_URL_REGEXES] = [];\nCONFIG_DEFAULTS$1[CONFIG_BLOCK_ATTRS] = [];\nCONFIG_DEFAULTS$1[CONFIG_BLOCK_ELEMENT_CALLBACK] = null;\nCONFIG_DEFAULTS$1[CONFIG_BLOCK_SELECTORS] = [];\nCONFIG_DEFAULTS$1[CONFIG_BLOCK_URL_REGEXES] = [];\nCONFIG_DEFAULTS$1[CONFIG_CAPTURE_EXTRA_ATTRS] = [];\nCONFIG_DEFAULTS$1[CONFIG_CAPTURE_TEXT_CONTENT] = false;\nCONFIG_DEFAULTS$1[CONFIG_SCROLL_CAPTURE_ALL] = false;\nCONFIG_DEFAULTS$1[CONFIG_SCROLL_CHECKPOINTS] = [25, 50, 75, 100];\nCONFIG_DEFAULTS$1[CONFIG_TRACK_CLICK] = true;\nCONFIG_DEFAULTS$1[CONFIG_TRACK_INPUT] = true;\nCONFIG_DEFAULTS$1[CONFIG_TRACK_PAGEVIEW] = PAGEVIEW_OPTION_FULL_URL;\nCONFIG_DEFAULTS$1[CONFIG_TRACK_RAGE_CLICK] = true;\nCONFIG_DEFAULTS$1[CONFIG_TRACK_SCROLL] = true;\nCONFIG_DEFAULTS$1[CONFIG_TRACK_SUBMIT] = true;\n\nvar DEFAULT_PROPS = {\n    '$mp_autocapture': true\n};\n\nvar MP_EV_CLICK = '$mp_click';\nvar MP_EV_INPUT = '$mp_input_change';\nvar MP_EV_RAGE_CLICK = '$mp_rage_click';\nvar MP_EV_SCROLL = '$mp_scroll';\nvar MP_EV_SUBMIT = '$mp_submit';\n\n/**\n * Autocapture: manages automatic event tracking\n * @constructor\n */\nvar Autocapture = function(mp) {\n    this.mp = mp;\n};\n\nAutocapture.prototype.init = function() {\n    if (!minDOMApisSupported()) {\n        logger$1.critical('Autocapture unavailable: missing required DOM APIs');\n        return;\n    }\n\n    this.initPageviewTracking();\n    this.initClickTracking();\n    this.initInputTracking();\n    this.initScrollTracking();\n    this.initSubmitTracking();\n    this.initRageClickTracking();\n};\n\nAutocapture.prototype.getFullConfig = function() {\n    var autocaptureConfig = this.mp.get_config(AUTOCAPTURE_CONFIG_KEY);\n    if (!autocaptureConfig) {\n        // Autocapture is completely off\n        return {};\n    } else if (_.isObject(autocaptureConfig)) {\n        return _.extend({}, CONFIG_DEFAULTS$1, autocaptureConfig);\n    } else {\n        // Autocapture config is non-object truthy value, return default\n        return CONFIG_DEFAULTS$1;\n    }\n};\n\nAutocapture.prototype.getConfig = function(key) {\n    return this.getFullConfig()[key];\n};\n\nAutocapture.prototype.currentUrlBlocked = function() {\n    var i;\n    var currentUrl = _.info.currentUrl();\n\n    var allowUrlRegexes = this.getConfig(CONFIG_ALLOW_URL_REGEXES) || [];\n    if (allowUrlRegexes.length) {\n        // we're using an allowlist, only track if current URL matches\n        var allowed = false;\n        for (i = 0; i < allowUrlRegexes.length; i++) {\n            var allowRegex = allowUrlRegexes[i];\n            try {\n                if (currentUrl.match(allowRegex)) {\n                    allowed = true;\n                    break;\n                }\n            } catch (err) {\n                logger$1.critical('Error while checking block URL regex: ' + allowRegex, err);\n                return true;\n            }\n        }\n        if (!allowed) {\n            // wasn't allowed by any regex\n            return true;\n        }\n    }\n\n    var blockUrlRegexes = this.getConfig(CONFIG_BLOCK_URL_REGEXES) || [];\n    if (!blockUrlRegexes || !blockUrlRegexes.length) {\n        return false;\n    }\n\n    for (i = 0; i < blockUrlRegexes.length; i++) {\n        try {\n            if (currentUrl.match(blockUrlRegexes[i])) {\n                return true;\n            }\n        } catch (err) {\n            logger$1.critical('Error while checking block URL regex: ' + blockUrlRegexes[i], err);\n            return true;\n        }\n    }\n    return false;\n};\n\nAutocapture.prototype.pageviewTrackingConfig = function() {\n    // supports both autocapture config and old track_pageview config\n    if (this.mp.get_config(AUTOCAPTURE_CONFIG_KEY)) {\n        return this.getConfig(CONFIG_TRACK_PAGEVIEW);\n    } else {\n        return this.mp.get_config(LEGACY_PAGEVIEW_CONFIG_KEY);\n    }\n};\n\n// helper for event handlers\nAutocapture.prototype.trackDomEvent = function(ev, mpEventName) {\n    if (this.currentUrlBlocked()) {\n        return;\n    }\n\n    var isCapturedForHeatMap = this.mp.is_recording_heatmap_data() && (\n        (mpEventName === MP_EV_CLICK && !this.getConfig(CONFIG_TRACK_CLICK)) ||\n        (mpEventName === MP_EV_RAGE_CLICK && !this._getRageClickConfig())\n    );\n\n    var props = getPropsForDOMEvent(ev, {\n        allowElementCallback: this.getConfig(CONFIG_ALLOW_ELEMENT_CALLBACK),\n        allowSelectors: this.getConfig(CONFIG_ALLOW_SELECTORS),\n        blockAttrs: this.getConfig(CONFIG_BLOCK_ATTRS),\n        blockElementCallback: this.getConfig(CONFIG_BLOCK_ELEMENT_CALLBACK),\n        blockSelectors: this.getConfig(CONFIG_BLOCK_SELECTORS),\n        captureExtraAttrs: this.getConfig(CONFIG_CAPTURE_EXTRA_ATTRS),\n        captureTextContent: this.getConfig(CONFIG_CAPTURE_TEXT_CONTENT),\n        capturedForHeatMap: isCapturedForHeatMap,\n    });\n    if (props) {\n        _.extend(props, DEFAULT_PROPS);\n        this.mp.track(mpEventName, props);\n    }\n};\n\nAutocapture.prototype._getRageClickConfig = function() {\n    var config = this.getConfig(CONFIG_TRACK_RAGE_CLICK);\n\n    if (!config) {\n        return null; // rage click tracking disabled\n    }\n\n    if (config === true) {\n        return {}; // use defaults\n    }\n\n    if (typeof config === 'object') {\n        return config; // use custom configuration\n    }\n\n    return {}; // fallback to defaults for any other truthy value\n};\n\nAutocapture.prototype.initClickTracking = function() {\n    win.removeEventListener(EV_CLICK, this.listenerClick);\n\n    if (!this.getConfig(CONFIG_TRACK_CLICK) && !this.mp.get_config('record_heatmap_data')) {\n        return;\n    }\n    logger$1.log('Initializing click tracking');\n\n    this.listenerClick = win.addEventListener(EV_CLICK, function(ev) {\n        if (!this.getConfig(CONFIG_TRACK_CLICK) && !this.mp.is_recording_heatmap_data()) {\n            return;\n        }\n        this.trackDomEvent(ev, MP_EV_CLICK);\n    }.bind(this));\n};\n\nAutocapture.prototype.initInputTracking = function() {\n    win.removeEventListener(EV_CHANGE, this.listenerChange);\n\n    if (!this.getConfig(CONFIG_TRACK_INPUT)) {\n        return;\n    }\n    logger$1.log('Initializing input tracking');\n\n    this.listenerChange = win.addEventListener(EV_CHANGE, function(ev) {\n        if (!this.getConfig(CONFIG_TRACK_INPUT)) {\n            return;\n        }\n        this.trackDomEvent(ev, MP_EV_INPUT);\n    }.bind(this));\n};\n\nAutocapture.prototype.initPageviewTracking = function() {\n    win.removeEventListener(EV_POPSTATE, this.listenerPopstate);\n    win.removeEventListener(EV_HASHCHANGE, this.listenerHashchange);\n    win.removeEventListener(EV_MP_LOCATION_CHANGE, this.listenerLocationchange);\n\n    if (!this.pageviewTrackingConfig()) {\n        return;\n    }\n    logger$1.log('Initializing pageview tracking');\n\n    var previousTrackedUrl = '';\n    var tracked = false;\n    if (!this.currentUrlBlocked()) {\n        tracked = this.mp.track_pageview(DEFAULT_PROPS);\n    }\n    if (tracked) {\n        previousTrackedUrl = _.info.currentUrl();\n    }\n\n    this.listenerPopstate = win.addEventListener(EV_POPSTATE, function() {\n        win.dispatchEvent(new Event(EV_MP_LOCATION_CHANGE));\n    });\n    this.listenerHashchange = win.addEventListener(EV_HASHCHANGE, function() {\n        win.dispatchEvent(new Event(EV_MP_LOCATION_CHANGE));\n    });\n    var nativePushState = win.history.pushState;\n    if (typeof nativePushState === 'function') {\n        win.history.pushState = function(state, unused, url) {\n            nativePushState.call(win.history, state, unused, url);\n            win.dispatchEvent(new Event(EV_MP_LOCATION_CHANGE));\n        };\n    }\n    var nativeReplaceState = win.history.replaceState;\n    if (typeof nativeReplaceState === 'function') {\n        win.history.replaceState = function(state, unused, url) {\n            nativeReplaceState.call(win.history, state, unused, url);\n            win.dispatchEvent(new Event(EV_MP_LOCATION_CHANGE));\n        };\n    }\n    this.listenerLocationchange = win.addEventListener(EV_MP_LOCATION_CHANGE, safewrap(function() {\n        if (this.currentUrlBlocked()) {\n            return;\n        }\n\n        var currentUrl = _.info.currentUrl();\n        var shouldTrack = false;\n        var didPathChange = currentUrl.split('#')[0].split('?')[0] !== previousTrackedUrl.split('#')[0].split('?')[0];\n        var trackPageviewOption = this.pageviewTrackingConfig();\n        if (trackPageviewOption === PAGEVIEW_OPTION_FULL_URL) {\n            shouldTrack = currentUrl !== previousTrackedUrl;\n        } else if (trackPageviewOption === PAGEVIEW_OPTION_URL_WITH_PATH_AND_QUERY_STRING) {\n            shouldTrack = currentUrl.split('#')[0] !== previousTrackedUrl.split('#')[0];\n        } else if (trackPageviewOption === PAGEVIEW_OPTION_URL_WITH_PATH) {\n            shouldTrack = didPathChange;\n        }\n\n        if (shouldTrack) {\n            var tracked = this.mp.track_pageview(DEFAULT_PROPS);\n            if (tracked) {\n                previousTrackedUrl = currentUrl;\n            }\n            if (didPathChange) {\n                this.lastScrollCheckpoint = 0;\n                logger$1.log('Path change: re-initializing scroll depth checkpoints');\n            }\n        }\n    }.bind(this)));\n};\n\nAutocapture.prototype.initRageClickTracking = function() {\n    win.removeEventListener(EV_CLICK, this.listenerRageClick);\n\n    var rageClickConfig = this._getRageClickConfig();\n    if (!rageClickConfig && !this.mp.get_config('record_heatmap_data')) {\n        return;\n    }\n\n    logger$1.log('Initializing rage click tracking');\n    if (!this._rageClickTracker) {\n        this._rageClickTracker = new RageClickTracker();\n    }\n\n    this.listenerRageClick = function(ev) {\n        var currentRageClickConfig = this._getRageClickConfig();\n        if (!currentRageClickConfig && !this.mp.is_recording_heatmap_data()) {\n            return;\n        }\n\n        if (this.currentUrlBlocked()) {\n            return;\n        }\n\n        if (this._rageClickTracker.isRageClick(ev['pageX'], ev['pageY'], currentRageClickConfig)) {\n            this.trackDomEvent(ev, MP_EV_RAGE_CLICK);\n        }\n    }.bind(this);\n    win.addEventListener(EV_CLICK, this.listenerRageClick);\n};\n\nAutocapture.prototype.initScrollTracking = function() {\n    win.removeEventListener(EV_SCROLLEND, this.listenerScroll);\n\n    if (!this.getConfig(CONFIG_TRACK_SCROLL)) {\n        return;\n    }\n    logger$1.log('Initializing scroll tracking');\n    this.lastScrollCheckpoint = 0;\n\n    this.listenerScroll = win.addEventListener(EV_SCROLLEND, safewrap(function() {\n        if (!this.getConfig(CONFIG_TRACK_SCROLL)) {\n            return;\n        }\n        if (this.currentUrlBlocked()) {\n            return;\n        }\n\n        var shouldTrack = this.getConfig(CONFIG_SCROLL_CAPTURE_ALL);\n        var scrollCheckpoints = (this.getConfig(CONFIG_SCROLL_CHECKPOINTS) || [])\n            .slice()\n            .sort(function(a, b) { return a - b; });\n\n        var scrollTop = win.scrollY;\n        var props = _.extend({'$scroll_top': scrollTop}, DEFAULT_PROPS);\n        try {\n            var scrollHeight = document$1.body.scrollHeight;\n            var scrollPercentage = Math.round((scrollTop / (scrollHeight - win.innerHeight)) * 100);\n            props['$scroll_height'] = scrollHeight;\n            props['$scroll_percentage'] = scrollPercentage;\n            if (scrollPercentage > this.lastScrollCheckpoint) {\n                for (var i = 0; i < scrollCheckpoints.length; i++) {\n                    var checkpoint = scrollCheckpoints[i];\n                    if (\n                        scrollPercentage >= checkpoint &&\n                        this.lastScrollCheckpoint < checkpoint\n                    ) {\n                        props['$scroll_checkpoint'] = checkpoint;\n                        this.lastScrollCheckpoint = checkpoint;\n                        shouldTrack = true;\n                    }\n                }\n            }\n        } catch (err) {\n            logger$1.critical('Error while calculating scroll percentage', err);\n        }\n        if (shouldTrack) {\n            this.mp.track(MP_EV_SCROLL, props);\n        }\n    }.bind(this)));\n};\n\nAutocapture.prototype.initSubmitTracking = function() {\n    win.removeEventListener(EV_SUBMIT, this.listenerSubmit);\n\n    if (!this.getConfig(CONFIG_TRACK_SUBMIT)) {\n        return;\n    }\n    logger$1.log('Initializing submit tracking');\n\n    this.listenerSubmit = win.addEventListener(EV_SUBMIT, function(ev) {\n        if (!this.getConfig(CONFIG_TRACK_SUBMIT)) {\n            return;\n        }\n        this.trackDomEvent(ev, MP_EV_SUBMIT);\n    }.bind(this));\n};\n\n// TODO integrate error_reporter from mixpanel instance\nsafewrapClass(Autocapture);\n\nvar fetch = win['fetch'];\nvar logger = console_with_prefix('flags');\n\nvar FLAGS_CONFIG_KEY = 'flags';\n\nvar CONFIG_CONTEXT = 'context';\nvar CONFIG_DEFAULTS = {};\nCONFIG_DEFAULTS[CONFIG_CONTEXT] = {};\n\n/**\n * FeatureFlagManager: support for Mixpanel's feature flagging product\n * @constructor\n */\nvar FeatureFlagManager = function(initOptions) {\n    this.getFullApiRoute = initOptions.getFullApiRoute;\n    this.getMpConfig = initOptions.getConfigFunc;\n    this.setMpConfig = initOptions.setConfigFunc;\n    this.getMpProperty = initOptions.getPropertyFunc;\n    this.track = initOptions.trackingFunc;\n};\n\nFeatureFlagManager.prototype.init = function() {\n    if (!minApisSupported()) {\n        logger.critical('Feature Flags unavailable: missing minimum required APIs');\n        return;\n    }\n\n    this.flags = null;\n    this.fetchFlags();\n\n    this.trackedFeatures = new Set();\n};\n\nFeatureFlagManager.prototype.getFullConfig = function() {\n    var ffConfig = this.getMpConfig(FLAGS_CONFIG_KEY);\n    if (!ffConfig) {\n        // flags are completely off\n        return {};\n    } else if (_.isObject(ffConfig)) {\n        return _.extend({}, CONFIG_DEFAULTS, ffConfig);\n    } else {\n        // config is non-object truthy value, return default\n        return CONFIG_DEFAULTS;\n    }\n};\n\nFeatureFlagManager.prototype.getConfig = function(key) {\n    return this.getFullConfig()[key];\n};\n\nFeatureFlagManager.prototype.isSystemEnabled = function() {\n    return !!this.getMpConfig(FLAGS_CONFIG_KEY);\n};\n\nFeatureFlagManager.prototype.updateContext = function(newContext, options) {\n    if (!this.isSystemEnabled()) {\n        logger.critical('Feature Flags not enabled, cannot update context');\n        return Promise.resolve();\n    }\n\n    var ffConfig = this.getMpConfig(FLAGS_CONFIG_KEY);\n    if (!_.isObject(ffConfig)) {\n        ffConfig = {};\n    }\n    var oldContext = (options && options['replace']) ? {} : this.getConfig(CONFIG_CONTEXT);\n    ffConfig[CONFIG_CONTEXT] = _.extend({}, oldContext, newContext);\n\n    this.setMpConfig(FLAGS_CONFIG_KEY, ffConfig);\n    return this.fetchFlags();\n};\n\nFeatureFlagManager.prototype.areFlagsReady = function() {\n    if (!this.isSystemEnabled()) {\n        logger.error('Feature Flags not enabled');\n    }\n    return !!this.flags;\n};\n\nFeatureFlagManager.prototype.fetchFlags = function() {\n    if (!this.isSystemEnabled()) {\n        return Promise.resolve();\n    }\n\n    var distinctId = this.getMpProperty('distinct_id');\n    var deviceId = this.getMpProperty('$device_id');\n    logger.log('Fetching flags for distinct ID: ' + distinctId);\n    var reqParams = {\n        'context': _.extend({'distinct_id': distinctId, 'device_id': deviceId}, this.getConfig(CONFIG_CONTEXT))\n    };\n    this._fetchInProgressStartTime = Date.now();\n    this.fetchPromise = win['fetch'](this.getFullApiRoute(), {\n        'method': 'POST',\n        'headers': {\n            'Authorization': 'Basic ' + btoa(this.getMpConfig('token') + ':'),\n            'Content-Type': 'application/octet-stream'\n        },\n        'body': JSON.stringify(reqParams)\n    }).then(function(response) {\n        this.markFetchComplete();\n        return response.json().then(function(responseBody) {\n            var responseFlags = responseBody['flags'];\n            if (!responseFlags) {\n                throw new Error('No flags in API response');\n            }\n            var flags = new Map();\n            _.each(responseFlags, function(data, key) {\n                flags.set(key, {\n                    'key': data['variant_key'],\n                    'value': data['variant_value']\n                });\n            });\n            this.flags = flags;\n        }.bind(this)).catch(function(error) {\n            this.markFetchComplete();\n            logger.error(error);\n        }.bind(this));\n    }.bind(this)).catch(function(error) {\n        this.markFetchComplete();\n        logger.error(error);\n    }.bind(this));\n\n    return this.fetchPromise;\n};\n\nFeatureFlagManager.prototype.markFetchComplete = function() {\n    if (!this._fetchInProgressStartTime) {\n        logger.error('Fetch in progress started time not set, cannot mark fetch complete');\n        return;\n    }\n    this._fetchStartTime = this._fetchInProgressStartTime;\n    this._fetchCompleteTime = Date.now();\n    this._fetchLatency = this._fetchCompleteTime - this._fetchStartTime;\n    this._fetchInProgressStartTime = null;\n};\n\nFeatureFlagManager.prototype.getVariant = function(featureName, fallback) {\n    if (!this.fetchPromise) {\n        return new Promise(function(resolve) {\n            logger.critical('Feature Flags not initialized');\n            resolve(fallback);\n        });\n    }\n\n    return this.fetchPromise.then(function() {\n        return this.getVariantSync(featureName, fallback);\n    }.bind(this)).catch(function(error) {\n        logger.error(error);\n        return fallback;\n    });\n};\n\nFeatureFlagManager.prototype.getVariantSync = function(featureName, fallback) {\n    if (!this.areFlagsReady()) {\n        logger.log('Flags not loaded yet');\n        return fallback;\n    }\n    var feature = this.flags.get(featureName);\n    if (!feature) {\n        logger.log('No flag found: \"' + featureName + '\"');\n        return fallback;\n    }\n    this.trackFeatureCheck(featureName, feature);\n    return feature;\n};\n\nFeatureFlagManager.prototype.getVariantValue = function(featureName, fallbackValue) {\n    return this.getVariant(featureName, {'value': fallbackValue}).then(function(feature) {\n        return feature['value'];\n    }).catch(function(error) {\n        logger.error(error);\n        return fallbackValue;\n    });\n};\n\n// TODO remove deprecated method\nFeatureFlagManager.prototype.getFeatureData = function(featureName, fallbackValue) {\n    logger.critical('mixpanel.flags.get_feature_data() is deprecated and will be removed in a future release. Use mixpanel.flags.get_variant_value() instead.');\n    return this.getVariantValue(featureName, fallbackValue);\n};\n\nFeatureFlagManager.prototype.getVariantValueSync = function(featureName, fallbackValue) {\n    return this.getVariantSync(featureName, {'value': fallbackValue})['value'];\n};\n\nFeatureFlagManager.prototype.isEnabled = function(featureName, fallbackValue) {\n    return this.getVariantValue(featureName).then(function() {\n        return this.isEnabledSync(featureName, fallbackValue);\n    }.bind(this)).catch(function(error) {\n        logger.error(error);\n        return fallbackValue;\n    });\n};\n\nFeatureFlagManager.prototype.isEnabledSync = function(featureName, fallbackValue) {\n    fallbackValue = fallbackValue || false;\n    var val = this.getVariantValueSync(featureName, fallbackValue);\n    if (val !== true && val !== false) {\n        logger.error('Feature flag \"' + featureName + '\" value: ' + val + ' is not a boolean; returning fallback value: ' + fallbackValue);\n        val = fallbackValue;\n    }\n    return val;\n};\n\nFeatureFlagManager.prototype.trackFeatureCheck = function(featureName, feature) {\n    if (this.trackedFeatures.has(featureName)) {\n        return;\n    }\n    this.trackedFeatures.add(featureName);\n    this.track('$experiment_started', {\n        'Experiment name': featureName,\n        'Variant name': feature['key'],\n        '$experiment_type': 'feature_flag',\n        'Variant fetch start time': new Date(this._fetchStartTime).toISOString(),\n        'Variant fetch complete time': new Date(this._fetchCompleteTime).toISOString(),\n        'Variant fetch latency (ms)': this._fetchLatency\n    });\n};\n\nfunction minApisSupported() {\n    return !!fetch &&\n      typeof Promise !== 'undefined' &&\n      typeof Map !== 'undefined' &&\n      typeof Set !== 'undefined';\n}\n\nsafewrapClass(FeatureFlagManager);\n\nFeatureFlagManager.prototype['are_flags_ready'] = FeatureFlagManager.prototype.areFlagsReady;\nFeatureFlagManager.prototype['get_variant'] = FeatureFlagManager.prototype.getVariant;\nFeatureFlagManager.prototype['get_variant_sync'] = FeatureFlagManager.prototype.getVariantSync;\nFeatureFlagManager.prototype['get_variant_value'] = FeatureFlagManager.prototype.getVariantValue;\nFeatureFlagManager.prototype['get_variant_value_sync'] = FeatureFlagManager.prototype.getVariantValueSync;\nFeatureFlagManager.prototype['is_enabled'] = FeatureFlagManager.prototype.isEnabled;\nFeatureFlagManager.prototype['is_enabled_sync'] = FeatureFlagManager.prototype.isEnabledSync;\nFeatureFlagManager.prototype['update_context'] = FeatureFlagManager.prototype.updateContext;\n\n// Deprecated method\nFeatureFlagManager.prototype['get_feature_data'] = FeatureFlagManager.prototype.getFeatureData;\n\n/* eslint camelcase: \"off\" */\n\n\n/**\n * DomTracker Object\n * @constructor\n */\nvar DomTracker = function() {};\n\n\n// interface\nDomTracker.prototype.create_properties = function() {};\nDomTracker.prototype.event_handler = function() {};\nDomTracker.prototype.after_track_handler = function() {};\n\nDomTracker.prototype.init = function(mixpanel_instance) {\n    this.mp = mixpanel_instance;\n    return this;\n};\n\n/**\n * @param {Object|string} query\n * @param {string} event_name\n * @param {Object=} properties\n * @param {function=} user_callback\n */\nDomTracker.prototype.track = function(query, event_name, properties, user_callback) {\n    var that = this;\n    var elements = _.dom_query(query);\n\n    if (elements.length === 0) {\n        console$1.error('The DOM query (' + query + ') returned 0 elements');\n        return;\n    }\n\n    _.each(elements, function(element) {\n        _.register_event(element, this.override_event, function(e) {\n            var options = {};\n            var props = that.create_properties(properties, this);\n            var timeout = that.mp.get_config('track_links_timeout');\n\n            that.event_handler(e, this, options);\n\n            // in case the mixpanel servers don't get back to us in time\n            window.setTimeout(that.track_callback(user_callback, props, options, true), timeout);\n\n            // fire the tracking event\n            that.mp.track(event_name, props, that.track_callback(user_callback, props, options));\n        });\n    }, this);\n\n    return true;\n};\n\n/**\n * @param {function} user_callback\n * @param {Object} props\n * @param {boolean=} timeout_occured\n */\nDomTracker.prototype.track_callback = function(user_callback, props, options, timeout_occured) {\n    timeout_occured = timeout_occured || false;\n    var that = this;\n\n    return function() {\n        // options is referenced from both callbacks, so we can have\n        // a 'lock' of sorts to ensure only one fires\n        if (options.callback_fired) { return; }\n        options.callback_fired = true;\n\n        if (user_callback && user_callback(timeout_occured, props) === false) {\n            // user can prevent the default functionality by\n            // returning false from their callback\n            return;\n        }\n\n        that.after_track_handler(props, options, timeout_occured);\n    };\n};\n\nDomTracker.prototype.create_properties = function(properties, element) {\n    var props;\n\n    if (typeof(properties) === 'function') {\n        props = properties(element);\n    } else {\n        props = _.extend({}, properties);\n    }\n\n    return props;\n};\n\n/**\n * LinkTracker Object\n * @constructor\n * @extends DomTracker\n */\nvar LinkTracker = function() {\n    this.override_event = 'click';\n};\n_.inherit(LinkTracker, DomTracker);\n\nLinkTracker.prototype.create_properties = function(properties, element) {\n    var props = LinkTracker.superclass.create_properties.apply(this, arguments);\n\n    if (element.href) { props['url'] = element.href; }\n\n    return props;\n};\n\nLinkTracker.prototype.event_handler = function(evt, element, options) {\n    options.new_tab = (\n        evt.which === 2 ||\n        evt.metaKey ||\n        evt.ctrlKey ||\n        element.target === '_blank'\n    );\n    options.href = element.href;\n\n    if (!options.new_tab) {\n        evt.preventDefault();\n    }\n};\n\nLinkTracker.prototype.after_track_handler = function(props, options) {\n    if (options.new_tab) { return; }\n\n    setTimeout(function() {\n        window.location = options.href;\n    }, 0);\n};\n\n/**\n * FormTracker Object\n * @constructor\n * @extends DomTracker\n */\nvar FormTracker = function() {\n    this.override_event = 'submit';\n};\n_.inherit(FormTracker, DomTracker);\n\nFormTracker.prototype.event_handler = function(evt, element, options) {\n    options.element = element;\n    evt.preventDefault();\n};\n\nFormTracker.prototype.after_track_handler = function(props, options) {\n    setTimeout(function() {\n        options.element.submit();\n    }, 0);\n};\n\n/* eslint camelcase: \"off\" */\n\n\n/** @const */ var SET_ACTION      = '$set';\n/** @const */ var SET_ONCE_ACTION = '$set_once';\n/** @const */ var UNSET_ACTION    = '$unset';\n/** @const */ var ADD_ACTION      = '$add';\n/** @const */ var APPEND_ACTION   = '$append';\n/** @const */ var UNION_ACTION    = '$union';\n/** @const */ var REMOVE_ACTION   = '$remove';\n/** @const */ var DELETE_ACTION   = '$delete';\n\n// Common internal methods for mixpanel.people and mixpanel.group APIs.\n// These methods shouldn't involve network I/O.\nvar apiActions = {\n    set_action: function(prop, to) {\n        var data = {};\n        var $set = {};\n        if (_.isObject(prop)) {\n            _.each(prop, function(v, k) {\n                if (!this._is_reserved_property(k)) {\n                    $set[k] = v;\n                }\n            }, this);\n        } else {\n            $set[prop] = to;\n        }\n\n        data[SET_ACTION] = $set;\n        return data;\n    },\n\n    unset_action: function(prop) {\n        var data = {};\n        var $unset = [];\n        if (!_.isArray(prop)) {\n            prop = [prop];\n        }\n\n        _.each(prop, function(k) {\n            if (!this._is_reserved_property(k)) {\n                $unset.push(k);\n            }\n        }, this);\n\n        data[UNSET_ACTION] = $unset;\n        return data;\n    },\n\n    set_once_action: function(prop, to) {\n        var data = {};\n        var $set_once = {};\n        if (_.isObject(prop)) {\n            _.each(prop, function(v, k) {\n                if (!this._is_reserved_property(k)) {\n                    $set_once[k] = v;\n                }\n            }, this);\n        } else {\n            $set_once[prop] = to;\n        }\n        data[SET_ONCE_ACTION] = $set_once;\n        return data;\n    },\n\n    union_action: function(list_name, values) {\n        var data = {};\n        var $union = {};\n        if (_.isObject(list_name)) {\n            _.each(list_name, function(v, k) {\n                if (!this._is_reserved_property(k)) {\n                    $union[k] = _.isArray(v) ? v : [v];\n                }\n            }, this);\n        } else {\n            $union[list_name] = _.isArray(values) ? values : [values];\n        }\n        data[UNION_ACTION] = $union;\n        return data;\n    },\n\n    append_action: function(list_name, value) {\n        var data = {};\n        var $append = {};\n        if (_.isObject(list_name)) {\n            _.each(list_name, function(v, k) {\n                if (!this._is_reserved_property(k)) {\n                    $append[k] = v;\n                }\n            }, this);\n        } else {\n            $append[list_name] = value;\n        }\n        data[APPEND_ACTION] = $append;\n        return data;\n    },\n\n    remove_action: function(list_name, value) {\n        var data = {};\n        var $remove = {};\n        if (_.isObject(list_name)) {\n            _.each(list_name, function(v, k) {\n                if (!this._is_reserved_property(k)) {\n                    $remove[k] = v;\n                }\n            }, this);\n        } else {\n            $remove[list_name] = value;\n        }\n        data[REMOVE_ACTION] = $remove;\n        return data;\n    },\n\n    delete_action: function() {\n        var data = {};\n        data[DELETE_ACTION] = '';\n        return data;\n    }\n};\n\n/* eslint camelcase: \"off\" */\n\n/**\n * Mixpanel Group Object\n * @constructor\n */\nvar MixpanelGroup = function() {};\n\n_.extend(MixpanelGroup.prototype, apiActions);\n\nMixpanelGroup.prototype._init = function(mixpanel_instance, group_key, group_id) {\n    this._mixpanel = mixpanel_instance;\n    this._group_key = group_key;\n    this._group_id = group_id;\n};\n\n/**\n * Set properties on a group.\n *\n * ### Usage:\n *\n *     mixpanel.get_group('company', 'mixpanel').set('Location', '405 Howard');\n *\n *     // or set multiple properties at once\n *     mixpanel.get_group('company', 'mixpanel').set({\n *          'Location': '405 Howard',\n *          'Founded' : 2009,\n *     });\n *     // properties can be strings, integers, dates, or lists\n *\n * @param {Object|String} prop If a string, this is the name of the property. If an object, this is an associative array of names and values.\n * @param {*} [to] A value to set on the given property name\n * @param {Function} [callback] If provided, the callback will be called after the tracking event\n */\nMixpanelGroup.prototype.set = addOptOutCheckMixpanelGroup(function(prop, to, callback) {\n    var data = this.set_action(prop, to);\n    if (_.isObject(prop)) {\n        callback = to;\n    }\n    return this._send_request(data, callback);\n});\n\n/**\n * Set properties on a group, only if they do not yet exist.\n * This will not overwrite previous group property values, unlike\n * group.set().\n *\n * ### Usage:\n *\n *     mixpanel.get_group('company', 'mixpanel').set_once('Location', '405 Howard');\n *\n *     // or set multiple properties at once\n *     mixpanel.get_group('company', 'mixpanel').set_once({\n *          'Location': '405 Howard',\n *          'Founded' : 2009,\n *     });\n *     // properties can be strings, integers, lists or dates\n *\n * @param {Object|String} prop If a string, this is the name of the property. If an object, this is an associative array of names and values.\n * @param {*} [to] A value to set on the given property name\n * @param {Function} [callback] If provided, the callback will be called after the tracking event\n */\nMixpanelGroup.prototype.set_once = addOptOutCheckMixpanelGroup(function(prop, to, callback) {\n    var data = this.set_once_action(prop, to);\n    if (_.isObject(prop)) {\n        callback = to;\n    }\n    return this._send_request(data, callback);\n});\n\n/**\n * Unset properties on a group permanently.\n *\n * ### Usage:\n *\n *     mixpanel.get_group('company', 'mixpanel').unset('Founded');\n *\n * @param {String} prop The name of the property.\n * @param {Function} [callback] If provided, the callback will be called after the tracking event\n */\nMixpanelGroup.prototype.unset = addOptOutCheckMixpanelGroup(function(prop, callback) {\n    var data = this.unset_action(prop);\n    return this._send_request(data, callback);\n});\n\n/**\n * Merge a given list with a list-valued group property, excluding duplicate values.\n *\n * ### Usage:\n *\n *     // merge a value to a list, creating it if needed\n *     mixpanel.get_group('company', 'mixpanel').union('Location', ['San Francisco', 'London']);\n *\n * @param {String} list_name Name of the property.\n * @param {Array} values Values to merge with the given property\n * @param {Function} [callback] If provided, the callback will be called after the tracking event\n */\nMixpanelGroup.prototype.union = addOptOutCheckMixpanelGroup(function(list_name, values, callback) {\n    if (_.isObject(list_name)) {\n        callback = values;\n    }\n    var data = this.union_action(list_name, values);\n    return this._send_request(data, callback);\n});\n\n/**\n * Permanently delete a group.\n *\n * ### Usage:\n *\n *     mixpanel.get_group('company', 'mixpanel').delete();\n *\n * @param {Function} [callback] If provided, the callback will be called after the tracking event\n */\nMixpanelGroup.prototype['delete'] = addOptOutCheckMixpanelGroup(function(callback) {\n    // bracket notation above prevents a minification error related to reserved words\n    var data = this.delete_action();\n    return this._send_request(data, callback);\n});\n\n/**\n * Remove a property from a group. The value will be ignored if doesn't exist.\n *\n * ### Usage:\n *\n *     mixpanel.get_group('company', 'mixpanel').remove('Location', 'London');\n *\n * @param {String} list_name Name of the property.\n * @param {Object} value Value to remove from the given group property\n * @param {Function} [callback] If provided, the callback will be called after the tracking event\n */\nMixpanelGroup.prototype.remove = addOptOutCheckMixpanelGroup(function(list_name, value, callback) {\n    var data = this.remove_action(list_name, value);\n    return this._send_request(data, callback);\n});\n\nMixpanelGroup.prototype._send_request = function(data, callback) {\n    data['$group_key'] = this._group_key;\n    data['$group_id'] = this._group_id;\n    data['$token'] = this._get_config('token');\n\n    var date_encoded_data = _.encodeDates(data);\n    return this._mixpanel._track_or_batch({\n        type: 'groups',\n        data: date_encoded_data,\n        endpoint: this._mixpanel.get_api_host('groups') + '/' +  this._get_config('api_routes')['groups'],\n        batcher: this._mixpanel.request_batchers.groups\n    }, callback);\n};\n\nMixpanelGroup.prototype._is_reserved_property = function(prop) {\n    return prop === '$group_key' || prop === '$group_id';\n};\n\nMixpanelGroup.prototype._get_config = function(conf) {\n    return this._mixpanel.get_config(conf);\n};\n\nMixpanelGroup.prototype.toString = function() {\n    return this._mixpanel.toString() + '.group.' + this._group_key + '.' + this._group_id;\n};\n\n// MixpanelGroup Exports\nMixpanelGroup.prototype['remove']   = MixpanelGroup.prototype.remove;\nMixpanelGroup.prototype['set']      = MixpanelGroup.prototype.set;\nMixpanelGroup.prototype['set_once'] = MixpanelGroup.prototype.set_once;\nMixpanelGroup.prototype['union']    = MixpanelGroup.prototype.union;\nMixpanelGroup.prototype['unset']    = MixpanelGroup.prototype.unset;\nMixpanelGroup.prototype['toString'] = MixpanelGroup.prototype.toString;\n\n/* eslint camelcase: \"off\" */\n\n/**\n * Mixpanel People Object\n * @constructor\n */\nvar MixpanelPeople = function() {};\n\n_.extend(MixpanelPeople.prototype, apiActions);\n\nMixpanelPeople.prototype._init = function(mixpanel_instance) {\n    this._mixpanel = mixpanel_instance;\n};\n\n/*\n* Set properties on a user record.\n*\n* ### Usage:\n*\n*     mixpanel.people.set('gender', 'm');\n*\n*     // or set multiple properties at once\n*     mixpanel.people.set({\n*         'Company': 'Acme',\n*         'Plan': 'Premium',\n*         'Upgrade date': new Date()\n*     });\n*     // properties can be strings, integers, dates, or lists\n*\n* @param {Object|String} prop If a string, this is the name of the property. If an object, this is an associative array of names and values.\n* @param {*} [to] A value to set on the given property name\n* @param {Function} [callback] If provided, the callback will be called after tracking the event.\n*/\nMixpanelPeople.prototype.set = addOptOutCheckMixpanelPeople(function(prop, to, callback) {\n    var data = this.set_action(prop, to);\n    if (_.isObject(prop)) {\n        callback = to;\n    }\n    // make sure that the referrer info has been updated and saved\n    if (this._get_config('save_referrer')) {\n        this._mixpanel['persistence'].update_referrer_info(document.referrer);\n    }\n\n    // update $set object with default people properties\n    data[SET_ACTION] = _.extend(\n        {},\n        _.info.people_properties(),\n        data[SET_ACTION]\n    );\n    return this._send_request(data, callback);\n});\n\n/*\n* Set properties on a user record, only if they do not yet exist.\n* This will not overwrite previous people property values, unlike\n* people.set().\n*\n* ### Usage:\n*\n*     mixpanel.people.set_once('First Login Date', new Date());\n*\n*     // or set multiple properties at once\n*     mixpanel.people.set_once({\n*         'First Login Date': new Date(),\n*         'Starting Plan': 'Premium'\n*     });\n*\n*     // properties can be strings, integers or dates\n*\n* @param {Object|String} prop If a string, this is the name of the property. If an object, this is an associative array of names and values.\n* @param {*} [to] A value to set on the given property name\n* @param {Function} [callback] If provided, the callback will be called after tracking the event.\n*/\nMixpanelPeople.prototype.set_once = addOptOutCheckMixpanelPeople(function(prop, to, callback) {\n    var data = this.set_once_action(prop, to);\n    if (_.isObject(prop)) {\n        callback = to;\n    }\n    return this._send_request(data, callback);\n});\n\n/*\n* Unset properties on a user record (permanently removes the properties and their values from a profile).\n*\n* ### Usage:\n*\n*     mixpanel.people.unset('gender');\n*\n*     // or unset multiple properties at once\n*     mixpanel.people.unset(['gender', 'Company']);\n*\n* @param {Array|String} prop If a string, this is the name of the property. If an array, this is a list of property names.\n* @param {Function} [callback] If provided, the callback will be called after tracking the event.\n*/\nMixpanelPeople.prototype.unset = addOptOutCheckMixpanelPeople(function(prop, callback) {\n    var data = this.unset_action(prop);\n    return this._send_request(data, callback);\n});\n\n/*\n* Increment/decrement numeric people analytics properties.\n*\n* ### Usage:\n*\n*     mixpanel.people.increment('page_views', 1);\n*\n*     // or, for convenience, if you're just incrementing a counter by\n*     // 1, you can simply do\n*     mixpanel.people.increment('page_views');\n*\n*     // to decrement a counter, pass a negative number\n*     mixpanel.people.increment('credits_left', -1);\n*\n*     // like mixpanel.people.set(), you can increment multiple\n*     // properties at once:\n*     mixpanel.people.increment({\n*         counter1: 1,\n*         counter2: 6\n*     });\n*\n* @param {Object|String} prop If a string, this is the name of the property. If an object, this is an associative array of names and numeric values.\n* @param {Number} [by] An amount to increment the given property\n* @param {Function} [callback] If provided, the callback will be called after tracking the event.\n*/\nMixpanelPeople.prototype.increment = addOptOutCheckMixpanelPeople(function(prop, by, callback) {\n    var data = {};\n    var $add = {};\n    if (_.isObject(prop)) {\n        _.each(prop, function(v, k) {\n            if (!this._is_reserved_property(k)) {\n                if (isNaN(parseFloat(v))) {\n                    console$1.error('Invalid increment value passed to mixpanel.people.increment - must be a number');\n                    return;\n                } else {\n                    $add[k] = v;\n                }\n            }\n        }, this);\n        callback = by;\n    } else {\n        // convenience: mixpanel.people.increment('property'); will\n        // increment 'property' by 1\n        if (_.isUndefined(by)) {\n            by = 1;\n        }\n        $add[prop] = by;\n    }\n    data[ADD_ACTION] = $add;\n\n    return this._send_request(data, callback);\n});\n\n/*\n* Append a value to a list-valued people analytics property.\n*\n* ### Usage:\n*\n*     // append a value to a list, creating it if needed\n*     mixpanel.people.append('pages_visited', 'homepage');\n*\n*     // like mixpanel.people.set(), you can append multiple\n*     // properties at once:\n*     mixpanel.people.append({\n*         list1: 'bob',\n*         list2: 123\n*     });\n*\n* @param {Object|String} list_name If a string, this is the name of the property. If an object, this is an associative array of names and values.\n* @param {*} [value] value An item to append to the list\n* @param {Function} [callback] If provided, the callback will be called after tracking the event.\n*/\nMixpanelPeople.prototype.append = addOptOutCheckMixpanelPeople(function(list_name, value, callback) {\n    if (_.isObject(list_name)) {\n        callback = value;\n    }\n    var data = this.append_action(list_name, value);\n    return this._send_request(data, callback);\n});\n\n/*\n* Remove a value from a list-valued people analytics property.\n*\n* ### Usage:\n*\n*     mixpanel.people.remove('School', 'UCB');\n*\n* @param {Object|String} list_name If a string, this is the name of the property. If an object, this is an associative array of names and values.\n* @param {*} [value] value Item to remove from the list\n* @param {Function} [callback] If provided, the callback will be called after tracking the event.\n*/\nMixpanelPeople.prototype.remove = addOptOutCheckMixpanelPeople(function(list_name, value, callback) {\n    if (_.isObject(list_name)) {\n        callback = value;\n    }\n    var data = this.remove_action(list_name, value);\n    return this._send_request(data, callback);\n});\n\n/*\n* Merge a given list with a list-valued people analytics property,\n* excluding duplicate values.\n*\n* ### Usage:\n*\n*     // merge a value to a list, creating it if needed\n*     mixpanel.people.union('pages_visited', 'homepage');\n*\n*     // like mixpanel.people.set(), you can append multiple\n*     // properties at once:\n*     mixpanel.people.union({\n*         list1: 'bob',\n*         list2: 123\n*     });\n*\n*     // like mixpanel.people.append(), you can append multiple\n*     // values to the same list:\n*     mixpanel.people.union({\n*         list1: ['bob', 'billy']\n*     });\n*\n* @param {Object|String} list_name If a string, this is the name of the property. If an object, this is an associative array of names and values.\n* @param {*} [value] Value / values to merge with the given property\n* @param {Function} [callback] If provided, the callback will be called after tracking the event.\n*/\nMixpanelPeople.prototype.union = addOptOutCheckMixpanelPeople(function(list_name, values, callback) {\n    if (_.isObject(list_name)) {\n        callback = values;\n    }\n    var data = this.union_action(list_name, values);\n    return this._send_request(data, callback);\n});\n\n/*\n * Record that you have charged the current user a certain amount\n * of money. Charges recorded with track_charge() will appear in the\n * Mixpanel revenue report.\n *\n * ### Usage:\n *\n *     // charge a user $50\n *     mixpanel.people.track_charge(50);\n *\n *     // charge a user $30.50 on the 2nd of january\n *     mixpanel.people.track_charge(30.50, {\n *         '$time': new Date('jan 1 2012')\n *     });\n *\n * @param {Number} amount The amount of money charged to the current user\n * @param {Object} [properties] An associative array of properties associated with the charge\n * @param {Function} [callback] If provided, the callback will be called when the server responds\n * @deprecated\n */\nMixpanelPeople.prototype.track_charge = addOptOutCheckMixpanelPeople(function() {\n    console$1.error('mixpanel.people.track_charge() is deprecated and no longer has any effect.');\n});\n\n/*\n * Permanently clear all revenue report transactions from the\n * current user's people analytics profile.\n *\n * ### Usage:\n *\n *     mixpanel.people.clear_charges();\n *\n * @param {Function} [callback] If provided, the callback will be called after tracking the event.\n * @deprecated\n */\nMixpanelPeople.prototype.clear_charges = function(callback) {\n    return this.set('$transactions', [], callback);\n};\n\n/*\n* Permanently deletes the current people analytics profile from\n* Mixpanel (using the current distinct_id).\n*\n* ### Usage:\n*\n*     // remove the all data you have stored about the current user\n*     mixpanel.people.delete_user();\n*\n*/\nMixpanelPeople.prototype.delete_user = function() {\n    if (!this._identify_called()) {\n        console$1.error('mixpanel.people.delete_user() requires you to call identify() first');\n        return;\n    }\n    var data = {'$delete': this._mixpanel.get_distinct_id()};\n    return this._send_request(data);\n};\n\nMixpanelPeople.prototype.toString = function() {\n    return this._mixpanel.toString() + '.people';\n};\n\nMixpanelPeople.prototype._send_request = function(data, callback) {\n    data['$token'] = this._get_config('token');\n    data['$distinct_id'] = this._mixpanel.get_distinct_id();\n    var device_id = this._mixpanel.get_property('$device_id');\n    var user_id = this._mixpanel.get_property('$user_id');\n    var had_persisted_distinct_id = this._mixpanel.get_property('$had_persisted_distinct_id');\n    if (device_id) {\n        data['$device_id'] = device_id;\n    }\n    if (user_id) {\n        data['$user_id'] = user_id;\n    }\n    if (had_persisted_distinct_id) {\n        data['$had_persisted_distinct_id'] = had_persisted_distinct_id;\n    }\n\n    var date_encoded_data = _.encodeDates(data);\n\n    if (!this._identify_called()) {\n        this._enqueue(data);\n        if (!_.isUndefined(callback)) {\n            if (this._get_config('verbose')) {\n                callback({status: -1, error: null});\n            } else {\n                callback(-1);\n            }\n        }\n        return _.truncate(date_encoded_data, 255);\n    }\n\n    return this._mixpanel._track_or_batch({\n        type: 'people',\n        data: date_encoded_data,\n        endpoint: this._mixpanel.get_api_host('people') + '/' +  this._get_config('api_routes')['engage'],\n        batcher: this._mixpanel.request_batchers.people\n    }, callback);\n};\n\nMixpanelPeople.prototype._get_config = function(conf_var) {\n    return this._mixpanel.get_config(conf_var);\n};\n\nMixpanelPeople.prototype._identify_called = function() {\n    return this._mixpanel._flags.identify_called === true;\n};\n\n// Queue up engage operations if identify hasn't been called yet.\nMixpanelPeople.prototype._enqueue = function(data) {\n    if (SET_ACTION in data) {\n        this._mixpanel['persistence']._add_to_people_queue(SET_ACTION, data);\n    } else if (SET_ONCE_ACTION in data) {\n        this._mixpanel['persistence']._add_to_people_queue(SET_ONCE_ACTION, data);\n    } else if (UNSET_ACTION in data) {\n        this._mixpanel['persistence']._add_to_people_queue(UNSET_ACTION, data);\n    } else if (ADD_ACTION in data) {\n        this._mixpanel['persistence']._add_to_people_queue(ADD_ACTION, data);\n    } else if (APPEND_ACTION in data) {\n        this._mixpanel['persistence']._add_to_people_queue(APPEND_ACTION, data);\n    } else if (REMOVE_ACTION in data) {\n        this._mixpanel['persistence']._add_to_people_queue(REMOVE_ACTION, data);\n    } else if (UNION_ACTION in data) {\n        this._mixpanel['persistence']._add_to_people_queue(UNION_ACTION, data);\n    } else {\n        console$1.error('Invalid call to _enqueue():', data);\n    }\n};\n\nMixpanelPeople.prototype._flush_one_queue = function(action, action_method, callback, queue_to_params_fn) {\n    var _this = this;\n    var queued_data = _.extend({}, this._mixpanel['persistence'].load_queue(action));\n    var action_params = queued_data;\n\n    if (!_.isUndefined(queued_data) && _.isObject(queued_data) && !_.isEmptyObject(queued_data)) {\n        _this._mixpanel['persistence']._pop_from_people_queue(action, queued_data);\n        _this._mixpanel['persistence'].save();\n        if (queue_to_params_fn) {\n            action_params = queue_to_params_fn(queued_data);\n        }\n        action_method.call(_this, action_params, function(response, data) {\n            // on bad response, we want to add it back to the queue\n            if (response === 0) {\n                _this._mixpanel['persistence']._add_to_people_queue(action, queued_data);\n            }\n            if (!_.isUndefined(callback)) {\n                callback(response, data);\n            }\n        });\n    }\n};\n\n// Flush queued engage operations - order does not matter,\n// and there are network level race conditions anyway\nMixpanelPeople.prototype._flush = function(\n    _set_callback, _add_callback, _append_callback, _set_once_callback, _union_callback, _unset_callback, _remove_callback\n) {\n    var _this = this;\n\n    this._flush_one_queue(SET_ACTION, this.set, _set_callback);\n    this._flush_one_queue(SET_ONCE_ACTION, this.set_once, _set_once_callback);\n    this._flush_one_queue(UNSET_ACTION, this.unset, _unset_callback, function(queue) { return _.keys(queue); });\n    this._flush_one_queue(ADD_ACTION, this.increment, _add_callback);\n    this._flush_one_queue(UNION_ACTION, this.union, _union_callback);\n\n    // we have to fire off each $append individually since there is\n    // no concat method server side\n    var $append_queue = this._mixpanel['persistence'].load_queue(APPEND_ACTION);\n    if (!_.isUndefined($append_queue) && _.isArray($append_queue) && $append_queue.length) {\n        var $append_item;\n        var append_callback = function(response, data) {\n            if (response === 0) {\n                _this._mixpanel['persistence']._add_to_people_queue(APPEND_ACTION, $append_item);\n            }\n            if (!_.isUndefined(_append_callback)) {\n                _append_callback(response, data);\n            }\n        };\n        for (var i = $append_queue.length - 1; i >= 0; i--) {\n            $append_queue = this._mixpanel['persistence'].load_queue(APPEND_ACTION);\n            $append_item = $append_queue.pop();\n            _this._mixpanel['persistence'].save();\n            if (!_.isEmptyObject($append_item)) {\n                _this.append($append_item, append_callback);\n            }\n        }\n    }\n\n    // same for $remove\n    var $remove_queue = this._mixpanel['persistence'].load_queue(REMOVE_ACTION);\n    if (!_.isUndefined($remove_queue) && _.isArray($remove_queue) && $remove_queue.length) {\n        var $remove_item;\n        var remove_callback = function(response, data) {\n            if (response === 0) {\n                _this._mixpanel['persistence']._add_to_people_queue(REMOVE_ACTION, $remove_item);\n            }\n            if (!_.isUndefined(_remove_callback)) {\n                _remove_callback(response, data);\n            }\n        };\n        for (var j = $remove_queue.length - 1; j >= 0; j--) {\n            $remove_queue = this._mixpanel['persistence'].load_queue(REMOVE_ACTION);\n            $remove_item = $remove_queue.pop();\n            _this._mixpanel['persistence'].save();\n            if (!_.isEmptyObject($remove_item)) {\n                _this.remove($remove_item, remove_callback);\n            }\n        }\n    }\n};\n\nMixpanelPeople.prototype._is_reserved_property = function(prop) {\n    return prop === '$distinct_id' || prop === '$token' || prop === '$device_id' || prop === '$user_id' || prop === '$had_persisted_distinct_id';\n};\n\n// MixpanelPeople Exports\nMixpanelPeople.prototype['set']           = MixpanelPeople.prototype.set;\nMixpanelPeople.prototype['set_once']      = MixpanelPeople.prototype.set_once;\nMixpanelPeople.prototype['unset']         = MixpanelPeople.prototype.unset;\nMixpanelPeople.prototype['increment']     = MixpanelPeople.prototype.increment;\nMixpanelPeople.prototype['append']        = MixpanelPeople.prototype.append;\nMixpanelPeople.prototype['remove']        = MixpanelPeople.prototype.remove;\nMixpanelPeople.prototype['union']         = MixpanelPeople.prototype.union;\nMixpanelPeople.prototype['track_charge']  = MixpanelPeople.prototype.track_charge;\nMixpanelPeople.prototype['clear_charges'] = MixpanelPeople.prototype.clear_charges;\nMixpanelPeople.prototype['delete_user']   = MixpanelPeople.prototype.delete_user;\nMixpanelPeople.prototype['toString']      = MixpanelPeople.prototype.toString;\n\n/* eslint camelcase: \"off\" */\n\n\n/*\n * Constants\n */\n/** @const */ var SET_QUEUE_KEY          = '__mps';\n/** @const */ var SET_ONCE_QUEUE_KEY     = '__mpso';\n/** @const */ var UNSET_QUEUE_KEY        = '__mpus';\n/** @const */ var ADD_QUEUE_KEY          = '__mpa';\n/** @const */ var APPEND_QUEUE_KEY       = '__mpap';\n/** @const */ var REMOVE_QUEUE_KEY       = '__mpr';\n/** @const */ var UNION_QUEUE_KEY        = '__mpu';\n// This key is deprecated, but we want to check for it to see whether aliasing is allowed.\n/** @const */ var PEOPLE_DISTINCT_ID_KEY = '$people_distinct_id';\n/** @const */ var ALIAS_ID_KEY           = '__alias';\n/** @const */ var EVENT_TIMERS_KEY       = '__timers';\n/** @const */ var RESERVED_PROPERTIES = [\n    SET_QUEUE_KEY,\n    SET_ONCE_QUEUE_KEY,\n    UNSET_QUEUE_KEY,\n    ADD_QUEUE_KEY,\n    APPEND_QUEUE_KEY,\n    REMOVE_QUEUE_KEY,\n    UNION_QUEUE_KEY,\n    PEOPLE_DISTINCT_ID_KEY,\n    ALIAS_ID_KEY,\n    EVENT_TIMERS_KEY\n];\n\n/**\n * Mixpanel Persistence Object\n * @constructor\n */\nvar MixpanelPersistence = function(config) {\n    this['props'] = {};\n    this.campaign_params_saved = false;\n\n    if (config['persistence_name']) {\n        this.name = 'mp_' + config['persistence_name'];\n    } else {\n        this.name = 'mp_' + config['token'] + '_mixpanel';\n    }\n\n    var storage_type = config['persistence'];\n    if (storage_type !== 'cookie' && storage_type !== 'localStorage') {\n        console$1.critical('Unknown persistence type ' + storage_type + '; falling back to cookie');\n        storage_type = config['persistence'] = 'cookie';\n    }\n\n    if (storage_type === 'localStorage' && _.localStorage.is_supported()) {\n        this.storage = _.localStorage;\n    } else {\n        this.storage = _.cookie;\n    }\n\n    this.load();\n    this.update_config(config);\n    this.upgrade();\n    this.save();\n};\n\nMixpanelPersistence.prototype.properties = function() {\n    var p = {};\n\n    this.load();\n\n    // Filter out reserved properties\n    _.each(this['props'], function(v, k) {\n        if (!_.include(RESERVED_PROPERTIES, k)) {\n            p[k] = v;\n        }\n    });\n    return p;\n};\n\nMixpanelPersistence.prototype.load = function() {\n    if (this.disabled) { return; }\n\n    var entry = this.storage.parse(this.name);\n\n    if (entry) {\n        this['props'] = _.extend({}, entry);\n    }\n};\n\nMixpanelPersistence.prototype.upgrade = function() {\n    var old_cookie,\n        old_localstorage;\n\n    // if transferring from cookie to localStorage or vice-versa, copy existing\n    // super properties over to new storage mode\n    if (this.storage === _.localStorage) {\n        old_cookie = _.cookie.parse(this.name);\n\n        _.cookie.remove(this.name);\n        _.cookie.remove(this.name, true);\n\n        if (old_cookie) {\n            this.register_once(old_cookie);\n        }\n    } else if (this.storage === _.cookie) {\n        old_localstorage = _.localStorage.parse(this.name);\n\n        _.localStorage.remove(this.name);\n\n        if (old_localstorage) {\n            this.register_once(old_localstorage);\n        }\n    }\n};\n\nMixpanelPersistence.prototype.save = function() {\n    if (this.disabled) { return; }\n\n    this.storage.set(\n        this.name,\n        JSONStringify(this['props']),\n        this.expire_days,\n        this.cross_subdomain,\n        this.secure,\n        this.cross_site,\n        this.cookie_domain\n    );\n};\n\nMixpanelPersistence.prototype.load_prop = function(key) {\n    this.load();\n    return this['props'][key];\n};\n\nMixpanelPersistence.prototype.remove = function() {\n    // remove both domain and subdomain cookies\n    this.storage.remove(this.name, false, this.cookie_domain);\n    this.storage.remove(this.name, true, this.cookie_domain);\n};\n\n// removes the storage entry and deletes all loaded data\n// forced name for tests\nMixpanelPersistence.prototype.clear = function() {\n    this.remove();\n    this['props'] = {};\n};\n\n/**\n* @param {Object} props\n* @param {*=} default_value\n* @param {number=} days\n*/\nMixpanelPersistence.prototype.register_once = function(props, default_value, days) {\n    if (_.isObject(props)) {\n        if (typeof(default_value) === 'undefined') { default_value = 'None'; }\n        this.expire_days = (typeof(days) === 'undefined') ? this.default_expiry : days;\n\n        this.load();\n\n        _.each(props, function(val, prop) {\n            if (!this['props'].hasOwnProperty(prop) || this['props'][prop] === default_value) {\n                this['props'][prop] = val;\n            }\n        }, this);\n\n        this.save();\n\n        return true;\n    }\n    return false;\n};\n\n/**\n* @param {Object} props\n* @param {number=} days\n*/\nMixpanelPersistence.prototype.register = function(props, days) {\n    if (_.isObject(props)) {\n        this.expire_days = (typeof(days) === 'undefined') ? this.default_expiry : days;\n\n        this.load();\n        _.extend(this['props'], props);\n        this.save();\n\n        return true;\n    }\n    return false;\n};\n\nMixpanelPersistence.prototype.unregister = function(prop) {\n    this.load();\n    if (prop in this['props']) {\n        delete this['props'][prop];\n        this.save();\n    }\n};\n\nMixpanelPersistence.prototype.update_search_keyword = function(referrer) {\n    this.register(_.info.searchInfo(referrer));\n};\n\n// EXPORTED METHOD, we test this directly.\nMixpanelPersistence.prototype.update_referrer_info = function(referrer) {\n    // If referrer doesn't exist, we want to note the fact that it was type-in traffic.\n    this.register_once({\n        '$initial_referrer': referrer || '$direct',\n        '$initial_referring_domain': _.info.referringDomain(referrer) || '$direct'\n    }, '');\n};\n\nMixpanelPersistence.prototype.get_referrer_info = function() {\n    return _.strip_empty_properties({\n        '$initial_referrer': this['props']['$initial_referrer'],\n        '$initial_referring_domain': this['props']['$initial_referring_domain']\n    });\n};\n\nMixpanelPersistence.prototype.update_config = function(config) {\n    this.default_expiry = this.expire_days = config['cookie_expiration'];\n    this.set_disabled(config['disable_persistence']);\n    this.set_cookie_domain(config['cookie_domain']);\n    this.set_cross_site(config['cross_site_cookie']);\n    this.set_cross_subdomain(config['cross_subdomain_cookie']);\n    this.set_secure(config['secure_cookie']);\n};\n\nMixpanelPersistence.prototype.set_disabled = function(disabled) {\n    this.disabled = disabled;\n    if (this.disabled) {\n        this.remove();\n    } else {\n        this.save();\n    }\n};\n\nMixpanelPersistence.prototype.set_cookie_domain = function(cookie_domain) {\n    if (cookie_domain !== this.cookie_domain) {\n        this.remove();\n        this.cookie_domain = cookie_domain;\n        this.save();\n    }\n};\n\nMixpanelPersistence.prototype.set_cross_site = function(cross_site) {\n    if (cross_site !== this.cross_site) {\n        this.cross_site = cross_site;\n        this.remove();\n        this.save();\n    }\n};\n\nMixpanelPersistence.prototype.set_cross_subdomain = function(cross_subdomain) {\n    if (cross_subdomain !== this.cross_subdomain) {\n        this.cross_subdomain = cross_subdomain;\n        this.remove();\n        this.save();\n    }\n};\n\nMixpanelPersistence.prototype.get_cross_subdomain = function() {\n    return this.cross_subdomain;\n};\n\nMixpanelPersistence.prototype.set_secure = function(secure) {\n    if (secure !== this.secure) {\n        this.secure = secure ? true : false;\n        this.remove();\n        this.save();\n    }\n};\n\nMixpanelPersistence.prototype._add_to_people_queue = function(queue, data) {\n    var q_key = this._get_queue_key(queue),\n        q_data = data[queue],\n        set_q = this._get_or_create_queue(SET_ACTION),\n        set_once_q = this._get_or_create_queue(SET_ONCE_ACTION),\n        unset_q = this._get_or_create_queue(UNSET_ACTION),\n        add_q = this._get_or_create_queue(ADD_ACTION),\n        union_q = this._get_or_create_queue(UNION_ACTION),\n        remove_q = this._get_or_create_queue(REMOVE_ACTION, []),\n        append_q = this._get_or_create_queue(APPEND_ACTION, []);\n\n    if (q_key === SET_QUEUE_KEY) {\n        // Update the set queue - we can override any existing values\n        _.extend(set_q, q_data);\n        // if there was a pending increment, override it\n        // with the set.\n        this._pop_from_people_queue(ADD_ACTION, q_data);\n        // if there was a pending union, override it\n        // with the set.\n        this._pop_from_people_queue(UNION_ACTION, q_data);\n        this._pop_from_people_queue(UNSET_ACTION, q_data);\n    } else if (q_key === SET_ONCE_QUEUE_KEY) {\n        // only queue the data if there is not already a set_once call for it.\n        _.each(q_data, function(v, k) {\n            if (!(k in set_once_q)) {\n                set_once_q[k] = v;\n            }\n        });\n        this._pop_from_people_queue(UNSET_ACTION, q_data);\n    } else if (q_key === UNSET_QUEUE_KEY) {\n        _.each(q_data, function(prop) {\n\n            // undo previously-queued actions on this key\n            _.each([set_q, set_once_q, add_q, union_q], function(enqueued_obj) {\n                if (prop in enqueued_obj) {\n                    delete enqueued_obj[prop];\n                }\n            });\n            _.each(append_q, function(append_obj) {\n                if (prop in append_obj) {\n                    delete append_obj[prop];\n                }\n            });\n\n            unset_q[prop] = true;\n\n        });\n    } else if (q_key === ADD_QUEUE_KEY) {\n        _.each(q_data, function(v, k) {\n            // If it exists in the set queue, increment\n            // the value\n            if (k in set_q) {\n                set_q[k] += v;\n            } else {\n                // If it doesn't exist, update the add\n                // queue\n                if (!(k in add_q)) {\n                    add_q[k] = 0;\n                }\n                add_q[k] += v;\n            }\n        }, this);\n        this._pop_from_people_queue(UNSET_ACTION, q_data);\n    } else if (q_key === UNION_QUEUE_KEY) {\n        _.each(q_data, function(v, k) {\n            if (_.isArray(v)) {\n                if (!(k in union_q)) {\n                    union_q[k] = [];\n                }\n                // Prevent duplicate values\n                _.each(v, function(item) {\n                    if (!_.include(union_q[k], item)) {\n                        union_q[k].push(item);\n                    }\n                });\n            }\n        });\n        this._pop_from_people_queue(UNSET_ACTION, q_data);\n    } else if (q_key === REMOVE_QUEUE_KEY) {\n        remove_q.push(q_data);\n        this._pop_from_people_queue(APPEND_ACTION, q_data);\n    } else if (q_key === APPEND_QUEUE_KEY) {\n        append_q.push(q_data);\n        this._pop_from_people_queue(UNSET_ACTION, q_data);\n    }\n\n    console$1.log('MIXPANEL PEOPLE REQUEST (QUEUED, PENDING IDENTIFY):');\n    console$1.log(data);\n\n    this.save();\n};\n\nMixpanelPersistence.prototype._pop_from_people_queue = function(queue, data) {\n    var q = this['props'][this._get_queue_key(queue)];\n    if (!_.isUndefined(q)) {\n        _.each(data, function(v, k) {\n            if (queue === APPEND_ACTION || queue === REMOVE_ACTION) {\n                // list actions: only remove if both k+v match\n                // e.g. remove should not override append in a case like\n                // append({foo: 'bar'}); remove({foo: 'qux'})\n                _.each(q, function(queued_action) {\n                    if (queued_action[k] === v) {\n                        delete queued_action[k];\n                    }\n                });\n            } else {\n                delete q[k];\n            }\n        }, this);\n    }\n};\n\nMixpanelPersistence.prototype.load_queue = function(queue) {\n    return this.load_prop(this._get_queue_key(queue));\n};\n\nMixpanelPersistence.prototype._get_queue_key = function(queue) {\n    if (queue === SET_ACTION) {\n        return SET_QUEUE_KEY;\n    } else if (queue === SET_ONCE_ACTION) {\n        return SET_ONCE_QUEUE_KEY;\n    } else if (queue === UNSET_ACTION) {\n        return UNSET_QUEUE_KEY;\n    } else if (queue === ADD_ACTION) {\n        return ADD_QUEUE_KEY;\n    } else if (queue === APPEND_ACTION) {\n        return APPEND_QUEUE_KEY;\n    } else if (queue === REMOVE_ACTION) {\n        return REMOVE_QUEUE_KEY;\n    } else if (queue === UNION_ACTION) {\n        return UNION_QUEUE_KEY;\n    } else {\n        console$1.error('Invalid queue:', queue);\n    }\n};\n\nMixpanelPersistence.prototype._get_or_create_queue = function(queue, default_val) {\n    var key = this._get_queue_key(queue);\n    default_val = _.isUndefined(default_val) ? {} : default_val;\n    return this['props'][key] || (this['props'][key] = default_val);\n};\n\nMixpanelPersistence.prototype.set_event_timer = function(event_name, timestamp) {\n    var timers = this.load_prop(EVENT_TIMERS_KEY) || {};\n    timers[event_name] = timestamp;\n    this['props'][EVENT_TIMERS_KEY] = timers;\n    this.save();\n};\n\nMixpanelPersistence.prototype.remove_event_timer = function(event_name) {\n    var timers = this.load_prop(EVENT_TIMERS_KEY) || {};\n    var timestamp = timers[event_name];\n    if (!_.isUndefined(timestamp)) {\n        delete this['props'][EVENT_TIMERS_KEY][event_name];\n        this.save();\n    }\n    return timestamp;\n};\n\n/* eslint camelcase: \"off\" */\n\n/*\n * Mixpanel JS Library\n *\n * Copyright 2012, Mixpanel, Inc. All Rights Reserved\n * http://mixpanel.com/\n *\n * Includes portions of Underscore.js\n * http://documentcloud.github.com/underscore/\n * (c) 2011 Jeremy Ashkenas, DocumentCloud Inc.\n * Released under the MIT License.\n */\n\n/*\nSIMPLE STYLE GUIDE:\n\nthis.x === public function\nthis._x === internal - only use within this file\nthis.__x === private - only use within the class\n\nGlobals should be all caps\n*/\n\nvar init_type;       // MODULE or SNIPPET loader\n// allow bundlers to specify how extra code (recorder bundle) should be loaded\n// eslint-disable-next-line no-unused-vars\nvar load_extra_bundle = function(src, _onload) {\n    throw new Error(src + ' not available in this build.');\n};\n\nvar mixpanel_master; // main mixpanel instance / object\nvar INIT_MODULE  = 0;\nvar INIT_SNIPPET = 1;\n\nvar IDENTITY_FUNC = function(x) {return x;};\n\n/** @const */ var PRIMARY_INSTANCE_NAME = 'mixpanel';\n/** @const */ var PAYLOAD_TYPE_BASE64   = 'base64';\n/** @const */ var PAYLOAD_TYPE_JSON     = 'json';\n/** @const */ var DEVICE_ID_PREFIX      = '$device:';\n\n\n/*\n * Dynamic... constants? Is that an oxymoron?\n */\n// http://hacks.mozilla.org/2009/07/cross-site-xmlhttprequest-with-cors/\n// https://developer.mozilla.org/en-US/docs/DOM/XMLHttpRequest#withCredentials\nvar USE_XHR = (win.XMLHttpRequest && 'withCredentials' in new XMLHttpRequest());\n\n// IE<10 does not support cross-origin XHR's but script tags\n// with defer won't block window.onload; ENQUEUE_REQUESTS\n// should only be true for Opera<12\nvar ENQUEUE_REQUESTS = !USE_XHR && (userAgent.indexOf('MSIE') === -1) && (userAgent.indexOf('Mozilla') === -1);\n\n// save reference to navigator.sendBeacon so it can be minified\nvar sendBeacon = null;\nif (navigator['sendBeacon']) {\n    sendBeacon = function() {\n        // late reference to navigator.sendBeacon to allow patching/spying\n        return navigator['sendBeacon'].apply(navigator, arguments);\n    };\n}\n\nvar DEFAULT_API_ROUTES = {\n    'track':  'track/',\n    'engage': 'engage/',\n    'groups': 'groups/',\n    'record': 'record/',\n    'flags':  'flags/'\n};\n\n/*\n * Module-level globals\n */\nvar DEFAULT_CONFIG = {\n    'api_host':                          'https://api-js.mixpanel.com',\n    'api_hosts':                         {},\n    'api_routes':                        DEFAULT_API_ROUTES,\n    'api_extra_query_params':            {},\n    'api_method':                        'POST',\n    'api_transport':                     'XHR',\n    'api_payload_format':                PAYLOAD_TYPE_BASE64,\n    'app_host':                          'https://mixpanel.com',\n    'autocapture':                       false,\n    'cdn':                               'https://cdn.mxpnl.com',\n    'cross_site_cookie':                 false,\n    'cross_subdomain_cookie':            true,\n    'error_reporter':                    NOOP_FUNC,\n    'flags':                             false,\n    'persistence':                       'cookie',\n    'persistence_name':                  '',\n    'cookie_domain':                     '',\n    'cookie_name':                       '',\n    'loaded':                            NOOP_FUNC,\n    'mp_loader':                         null,\n    'track_marketing':                   true,\n    'track_pageview':                    false,\n    'skip_first_touch_marketing':        false,\n    'store_google':                      true,\n    'stop_utm_persistence':              false,\n    'save_referrer':                     true,\n    'test':                              false,\n    'verbose':                           false,\n    'img':                               false,\n    'debug':                             false,\n    'track_links_timeout':               300,\n    'cookie_expiration':                 365,\n    'upgrade':                           false,\n    'disable_persistence':               false,\n    'disable_cookie':                    false,\n    'secure_cookie':                     false,\n    'ip':                                true,\n    'opt_out_tracking_by_default':       false,\n    'opt_out_persistence_by_default':    false,\n    'opt_out_tracking_persistence_type': 'localStorage',\n    'opt_out_tracking_cookie_prefix':    null,\n    'property_blacklist':                [],\n    'xhr_headers':                       {}, // { header: value, header2: value }\n    'ignore_dnt':                        false,\n    'batch_requests':                    true,\n    'batch_size':                        50,\n    'batch_flush_interval_ms':           5000,\n    'batch_request_timeout_ms':          90000,\n    'batch_autostart':                   true,\n    'hooks':                             {},\n    'record_block_class':                new RegExp('^(mp-block|fs-exclude|amp-block|rr-block|ph-no-capture)$'),\n    'record_block_selector':             'img, video, audio',\n    'record_canvas':                     false,\n    'record_collect_fonts':              false,\n    'record_heatmap_data':               false,\n    'record_idle_timeout_ms':            30 * 60 * 1000, // 30 minutes\n    'record_mask_text_class':            new RegExp('^(mp-mask|fs-mask|amp-mask|rr-mask|ph-mask)$'),\n    'record_mask_text_selector':         '*',\n    'record_max_ms':                     MAX_RECORDING_MS,\n    'record_min_ms':                     0,\n    'record_sessions_percent':           0,\n    'recorder_src':                      'https://cdn.mxpnl.com/libs/mixpanel-recorder.min.js'\n};\n\nvar DOM_LOADED = false;\n\n/**\n * Mixpanel Library Object\n * @constructor\n */\nvar MixpanelLib = function() {};\n\n\n/**\n * create_mplib(token:string, config:object, name:string)\n *\n * This function is used by the init method of MixpanelLib objects\n * as well as the main initializer at the end of the JSLib (that\n * initializes document.mixpanel as well as any additional instances\n * declared before this file has loaded).\n */\nvar create_mplib = function(token, config, name) {\n    var instance,\n        target = (name === PRIMARY_INSTANCE_NAME) ? mixpanel_master : mixpanel_master[name];\n\n    if (target && init_type === INIT_MODULE) {\n        instance = target;\n    } else {\n        if (target && !_.isArray(target)) {\n            console$1.error('You have already initialized ' + name);\n            return;\n        }\n        instance = new MixpanelLib();\n    }\n\n    instance._cached_groups = {}; // cache groups in a pool\n\n    instance._init(token, config, name);\n\n    instance['people'] = new MixpanelPeople();\n    instance['people']._init(instance);\n\n    if (!instance.get_config('skip_first_touch_marketing')) {\n        // We need null UTM params in the object because\n        // UTM parameters act as a tuple. If any UTM param\n        // is present, then we set all UTM params including\n        // empty ones together\n        var utm_params = _.info.campaignParams(null);\n        var initial_utm_params = {};\n        var has_utm = false;\n        _.each(utm_params, function(utm_value, utm_key) {\n            initial_utm_params['initial_' + utm_key] = utm_value;\n            if (utm_value) {\n                has_utm = true;\n            }\n        });\n        if (has_utm) {\n            instance['people'].set_once(initial_utm_params);\n        }\n    }\n\n    // if any instance on the page has debug = true, we set the\n    // global debug to be true\n    Config.DEBUG = Config.DEBUG || instance.get_config('debug');\n\n    // if target is not defined, we called init after the lib already\n    // loaded, so there won't be an array of things to execute\n    if (!_.isUndefined(target) && _.isArray(target)) {\n        // Crunch through the people queue first - we queue this data up &\n        // flush on identify, so it's better to do all these operations first\n        instance._execute_array.call(instance['people'], target['people']);\n        instance._execute_array(target);\n    }\n\n    return instance;\n};\n\n// Initialization methods\n\n/**\n * This function initializes a new instance of the Mixpanel tracking object.\n * All new instances are added to the main mixpanel object as sub properties (such as\n * mixpanel.library_name) and also returned by this function. To define a\n * second instance on the page, you would call:\n *\n *     mixpanel.init('new token', { your: 'config' }, 'library_name');\n *\n * and use it like so:\n *\n *     mixpanel.library_name.track(...);\n *\n * @param {String} token   Your Mixpanel API token\n * @param {Object} [config]  A dictionary of config options to override. <a href=\"https://github.com/mixpanel/mixpanel-js/blob/v2.46.0/src/mixpanel-core.js#L88-L127\">See a list of default config options</a>.\n * @param {String} [name]    The name for the new mixpanel instance that you want created\n */\nMixpanelLib.prototype.init = function (token, config, name) {\n    if (_.isUndefined(name)) {\n        this.report_error('You must name your new library: init(token, config, name)');\n        return;\n    }\n    if (name === PRIMARY_INSTANCE_NAME) {\n        this.report_error('You must initialize the main mixpanel object right after you include the Mixpanel js snippet');\n        return;\n    }\n\n    var instance = create_mplib(token, config, name);\n    mixpanel_master[name] = instance;\n    instance._loaded();\n\n    return instance;\n};\n\n// mixpanel._init(token:string, config:object, name:string)\n//\n// This function sets up the current instance of the mixpanel\n// library.  The difference between this method and the init(...)\n// method is this one initializes the actual instance, whereas the\n// init(...) method sets up a new library and calls _init on it.\n//\nMixpanelLib.prototype._init = function(token, config, name) {\n    config = config || {};\n\n    this['__loaded'] = true;\n    this['config'] = {};\n\n    var variable_features = {};\n\n    // default to JSON payload for standard mixpanel.com API hosts\n    if (!('api_payload_format' in config)) {\n        var api_host = config['api_host'] || DEFAULT_CONFIG['api_host'];\n        if (api_host.match(/\\.mixpanel\\.com/)) {\n            variable_features['api_payload_format'] = PAYLOAD_TYPE_JSON;\n        }\n    }\n\n    this.set_config(_.extend({}, DEFAULT_CONFIG, variable_features, config, {\n        'name': name,\n        'token': token,\n        'callback_fn': ((name === PRIMARY_INSTANCE_NAME) ? name : PRIMARY_INSTANCE_NAME + '.' + name) + '._jsc'\n    }));\n\n    this['_jsc'] = NOOP_FUNC;\n\n    this.__dom_loaded_queue = [];\n    this.__request_queue = [];\n    this.__disabled_events = [];\n    this._flags = {\n        'disable_all_events': false,\n        'identify_called': false\n    };\n\n    // set up request queueing/batching\n    this.request_batchers = {};\n    this._batch_requests = this.get_config('batch_requests');\n    if (this._batch_requests) {\n        if (!_.localStorage.is_supported(true) || !USE_XHR) {\n            this._batch_requests = false;\n            console$1.log('Turning off Mixpanel request-queueing; needs XHR and localStorage support');\n            _.each(this.get_batcher_configs(), function(batcher_config) {\n                console$1.log('Clearing batch queue ' + batcher_config.queue_key);\n                _.localStorage.remove(batcher_config.queue_key);\n            });\n        } else {\n            this.init_batchers();\n            if (sendBeacon && win.addEventListener) {\n                // Before page closes or hides (user tabs away etc), attempt to flush any events\n                // queued up via navigator.sendBeacon. Since sendBeacon doesn't report success/failure,\n                // events will not be removed from the persistent store; if the site is loaded again,\n                // the events will be flushed again on startup and deduplicated on the Mixpanel server\n                // side.\n                // There is no reliable way to capture only page close events, so we lean on the\n                // visibilitychange and pagehide events as recommended at\n                // https://developer.mozilla.org/en-US/docs/Web/API/Window/unload_event#usage_notes.\n                // These events fire when the user clicks away from the current page/tab, so will occur\n                // more frequently than page unload, but are the only mechanism currently for capturing\n                // this scenario somewhat reliably.\n                var flush_on_unload = _.bind(function() {\n                    if (!this.request_batchers.events.stopped) {\n                        this.request_batchers.events.flush({unloading: true});\n                    }\n                }, this);\n                win.addEventListener('pagehide', function(ev) {\n                    if (ev['persisted']) {\n                        flush_on_unload();\n                    }\n                });\n                win.addEventListener('visibilitychange', function() {\n                    if (document$1['visibilityState'] === 'hidden') {\n                        flush_on_unload();\n                    }\n                });\n            }\n        }\n    }\n\n    this['persistence'] = this['cookie'] = new MixpanelPersistence(this['config']);\n    this.unpersisted_superprops = {};\n    this._gdpr_init();\n\n    var uuid = _.UUID();\n    if (!this.get_distinct_id()) {\n        // There is no need to set the distinct id\n        // or the device id if something was already stored\n        // in the persitence\n        this.register_once({\n            'distinct_id': DEVICE_ID_PREFIX + uuid,\n            '$device_id': uuid\n        }, '');\n    }\n\n    this.flags = new FeatureFlagManager({\n        getFullApiRoute: _.bind(function() {\n            return this.get_api_host('flags') + '/' + this.get_config('api_routes')['flags'];\n        }, this),\n        getConfigFunc: _.bind(this.get_config, this),\n        setConfigFunc: _.bind(this.set_config, this),\n        getPropertyFunc: _.bind(this.get_property, this),\n        trackingFunc: _.bind(this.track, this)\n    });\n    this.flags.init();\n    this['flags'] = this.flags;\n\n    this.autocapture = new Autocapture(this);\n    this.autocapture.init();\n\n    this._init_tab_id();\n    this._check_and_start_session_recording();\n};\n\n/**\n * Assigns a unique UUID to this tab / window by leveraging sessionStorage.\n * This is primarily used for session recording, where data must be isolated to the current tab.\n */\nMixpanelLib.prototype._init_tab_id = function() {\n    if (_.sessionStorage.is_supported()) {\n        try {\n            var key_suffix = this.get_config('name') + '_' + this.get_config('token');\n            var tab_id_key = 'mp_tab_id_' + key_suffix;\n\n            // A flag is used to determine if sessionStorage is copied over and we need to generate a new tab ID.\n            // This enforces a unique ID in the cases like duplicated tab, window.open(...)\n            var should_generate_new_tab_id_key = 'mp_gen_new_tab_id_' + key_suffix;\n            if (_.sessionStorage.get(should_generate_new_tab_id_key) || !_.sessionStorage.get(tab_id_key)) {\n                _.sessionStorage.set(tab_id_key, '$tab-' + _.UUID());\n            }\n\n            _.sessionStorage.set(should_generate_new_tab_id_key, '1');\n            this.tab_id = _.sessionStorage.get(tab_id_key);\n\n            // Remove the flag when the tab is unloaded to indicate the stored tab ID can be reused. This event is not reliable to detect all page unloads,\n            // but reliable in cases where the user remains in the tab e.g. a refresh or href navigation.\n            // If the flag is absent, this indicates to the next SDK instance that we can reuse the stored tab_id.\n            win.addEventListener('beforeunload', function () {\n                _.sessionStorage.remove(should_generate_new_tab_id_key);\n            });\n        } catch(err) {\n            this.report_error('Error initializing tab id', err);\n        }\n    } else {\n        this.report_error('Session storage is not supported, cannot keep track of unique tab ID.');\n    }\n};\n\nMixpanelLib.prototype.get_tab_id = function () {\n    return this.tab_id || null;\n};\n\nMixpanelLib.prototype._should_load_recorder = function () {\n    var recording_registry_idb = new IDBStorageWrapper(RECORDING_REGISTRY_STORE_NAME);\n    var tab_id = this.get_tab_id();\n    return recording_registry_idb.init()\n        .then(function () {\n            return recording_registry_idb.getAll();\n        })\n        .then(function (recordings) {\n            for (var i = 0; i < recordings.length; i++) {\n                // if there are expired recordings in the registry, we should load the recorder to flush them\n                // if there's a recording for this tab id, we should load the recorder to continue the recording\n                if (isRecordingExpired(recordings[i]) || recordings[i]['tabId'] === tab_id) {\n                    return true;\n                }\n            }\n            return false;\n        })\n        .catch(_.bind(function (err) {\n            this.report_error('Error checking recording registry', err);\n        }, this));\n};\n\nMixpanelLib.prototype._check_and_start_session_recording = addOptOutCheckMixpanelLib(function(force_start) {\n    if (!win['MutationObserver']) {\n        console$1.critical('Browser does not support MutationObserver; skipping session recording');\n        return;\n    }\n\n    var loadRecorder = _.bind(function(startNewIfInactive) {\n        var handleLoadedRecorder = _.bind(function() {\n            this._recorder = this._recorder || new win['__mp_recorder'](this);\n            this._recorder['resumeRecording'](startNewIfInactive);\n        }, this);\n\n        if (_.isUndefined(win['__mp_recorder'])) {\n            load_extra_bundle(this.get_config('recorder_src'), handleLoadedRecorder);\n        } else {\n            handleLoadedRecorder();\n        }\n    }, this);\n\n    /**\n     * If the user is sampled or start_session_recording is called, we always load the recorder since it's guaranteed a recording should start.\n     * Otherwise, if the recording registry has any records then it's likely there's a recording in progress or orphaned data that needs to be flushed.\n     */\n    var is_sampled = this.get_config('record_sessions_percent') > 0 && Math.random() * 100 <= this.get_config('record_sessions_percent');\n    if (force_start || is_sampled) {\n        loadRecorder(true);\n    } else {\n        this._should_load_recorder()\n            .then(function (shouldLoad) {\n                if (shouldLoad) {\n                    loadRecorder(false);\n                }\n            });\n    }\n});\n\nMixpanelLib.prototype.start_session_recording = function () {\n    this._check_and_start_session_recording(true);\n};\n\nMixpanelLib.prototype.stop_session_recording = function () {\n    if (this._recorder) {\n        return this._recorder['stopRecording']();\n    }\n    return Promise.resolve();\n};\n\nMixpanelLib.prototype.pause_session_recording = function () {\n    if (this._recorder) {\n        return this._recorder['pauseRecording']();\n    }\n    return Promise.resolve();\n};\n\nMixpanelLib.prototype.resume_session_recording = function () {\n    if (this._recorder) {\n        return this._recorder['resumeRecording']();\n    }\n    return Promise.resolve();\n};\n\nMixpanelLib.prototype.is_recording_heatmap_data = function () {\n    return this._get_session_replay_id() && this.get_config('record_heatmap_data');\n};\n\nMixpanelLib.prototype.get_session_recording_properties = function () {\n    var props = {};\n    var replay_id = this._get_session_replay_id();\n    if (replay_id) {\n        props['$mp_replay_id'] = replay_id;\n    }\n    return props;\n};\n\nMixpanelLib.prototype.get_session_replay_url = function () {\n    var replay_url = null;\n    var replay_id = this._get_session_replay_id();\n    if (replay_id) {\n        var query_params = _.HTTPBuildQuery({\n            'replay_id': replay_id,\n            'distinct_id': this.get_distinct_id(),\n            'token': this.get_config('token')\n        });\n        replay_url = 'https://mixpanel.com/projects/replay-redirect?' + query_params;\n    }\n    return replay_url;\n};\n\nMixpanelLib.prototype._get_session_replay_id = function () {\n    var replay_id = null;\n    if (this._recorder) {\n        replay_id = this._recorder['replayId'];\n    }\n    return replay_id || null;\n};\n\n// \"private\" public method to reach into the recorder in test cases\nMixpanelLib.prototype.__get_recorder = function () {\n    return this._recorder;\n};\n\n// Private methods\n\nMixpanelLib.prototype._loaded = function() {\n    this.get_config('loaded')(this);\n    this._set_default_superprops();\n    this['people'].set_once(this['persistence'].get_referrer_info());\n\n    // `store_google` is now deprecated and previously stored UTM parameters are cleared\n    // from persistence by default.\n    if (this.get_config('store_google') && this.get_config('stop_utm_persistence')) {\n        var utm_params = _.info.campaignParams(null);\n        _.each(utm_params, function(_utm_value, utm_key) {\n            // We need to unregister persisted UTM parameters so old values\n            // are not mixed with the new UTM parameters\n            this.unregister(utm_key);\n        }.bind(this));\n    }\n};\n\n// update persistence with info on referrer, UTM params, etc\nMixpanelLib.prototype._set_default_superprops = function() {\n    this['persistence'].update_search_keyword(document$1.referrer);\n    // Registering super properties for UTM persistence by 'store_google' is deprecated.\n    if (this.get_config('store_google') && !this.get_config('stop_utm_persistence')) {\n        this.register(_.info.campaignParams());\n    }\n    if (this.get_config('save_referrer')) {\n        this['persistence'].update_referrer_info(document$1.referrer);\n    }\n};\n\nMixpanelLib.prototype._dom_loaded = function() {\n    _.each(this.__dom_loaded_queue, function(item) {\n        this._track_dom.apply(this, item);\n    }, this);\n\n    if (!this.has_opted_out_tracking()) {\n        _.each(this.__request_queue, function(item) {\n            this._send_request.apply(this, item);\n        }, this);\n    }\n\n    delete this.__dom_loaded_queue;\n    delete this.__request_queue;\n};\n\nMixpanelLib.prototype._track_dom = function(DomClass, args) {\n    if (this.get_config('img')) {\n        this.report_error('You can\\'t use DOM tracking functions with img = true.');\n        return false;\n    }\n\n    if (!DOM_LOADED) {\n        this.__dom_loaded_queue.push([DomClass, args]);\n        return false;\n    }\n\n    var dt = new DomClass().init(this);\n    return dt.track.apply(dt, args);\n};\n\n/**\n * _prepare_callback() should be called by callers of _send_request for use\n * as the callback argument.\n *\n * If there is no callback, this returns null.\n * If we are going to make XHR/XDR requests, this returns a function.\n * If we are going to use script tags, this returns a string to use as the\n * callback GET param.\n */\nMixpanelLib.prototype._prepare_callback = function(callback, data) {\n    if (_.isUndefined(callback)) {\n        return null;\n    }\n\n    if (USE_XHR) {\n        var callback_function = function(response) {\n            callback(response, data);\n        };\n        return callback_function;\n    } else {\n        // if the user gives us a callback, we store as a random\n        // property on this instances jsc function and update our\n        // callback string to reflect that.\n        var jsc = this['_jsc'];\n        var randomized_cb = '' + Math.floor(Math.random() * 100000000);\n        var callback_string = this.get_config('callback_fn') + '[' + randomized_cb + ']';\n        jsc[randomized_cb] = function(response) {\n            delete jsc[randomized_cb];\n            callback(response, data);\n        };\n        return callback_string;\n    }\n};\n\nMixpanelLib.prototype._send_request = function(url, data, options, callback) {\n    var succeeded = true;\n\n    if (ENQUEUE_REQUESTS) {\n        this.__request_queue.push(arguments);\n        return succeeded;\n    }\n\n    var DEFAULT_OPTIONS = {\n        method: this.get_config('api_method'),\n        transport: this.get_config('api_transport'),\n        verbose: this.get_config('verbose')\n    };\n    var body_data = null;\n\n    if (!callback && (_.isFunction(options) || typeof options === 'string')) {\n        callback = options;\n        options = null;\n    }\n    options = _.extend(DEFAULT_OPTIONS, options || {});\n    if (!USE_XHR) {\n        options.method = 'GET';\n    }\n    var use_post = options.method === 'POST';\n    var use_sendBeacon = sendBeacon && use_post && options.transport.toLowerCase() === 'sendbeacon';\n\n    // needed to correctly format responses\n    var verbose_mode = options.verbose;\n    if (data['verbose']) { verbose_mode = true; }\n\n    if (this.get_config('test')) { data['test'] = 1; }\n    if (verbose_mode) { data['verbose'] = 1; }\n    if (this.get_config('img')) { data['img'] = 1; }\n    if (!USE_XHR) {\n        if (callback) {\n            data['callback'] = callback;\n        } else if (verbose_mode || this.get_config('test')) {\n            // Verbose output (from verbose mode, or an error in test mode) is a json blob,\n            // which by itself is not valid javascript. Without a callback, this verbose output will\n            // cause an error when returned via jsonp, so we force a no-op callback param.\n            // See the ECMA script spec: http://www.ecma-international.org/ecma-262/5.1/#sec-12.4\n            data['callback'] = '(function(){})';\n        }\n    }\n\n    data['ip'] = this.get_config('ip')?1:0;\n    data['_'] = new Date().getTime().toString();\n\n    if (use_post) {\n        body_data = 'data=' + encodeURIComponent(data['data']);\n        delete data['data'];\n    }\n\n    _.extend(data, this.get_config('api_extra_query_params'));\n\n    url += '?' + _.HTTPBuildQuery(data);\n\n    var lib = this;\n    if ('img' in data) {\n        var img = document$1.createElement('img');\n        img.src = url;\n        document$1.body.appendChild(img);\n    } else if (use_sendBeacon) {\n        try {\n            succeeded = sendBeacon(url, body_data);\n        } catch (e) {\n            lib.report_error(e);\n            succeeded = false;\n        }\n        try {\n            if (callback) {\n                callback(succeeded ? 1 : 0);\n            }\n        } catch (e) {\n            lib.report_error(e);\n        }\n    } else if (USE_XHR) {\n        try {\n            var req = new XMLHttpRequest();\n            req.open(options.method, url, true);\n\n            var headers = this.get_config('xhr_headers');\n            if (use_post) {\n                headers['Content-Type'] = 'application/x-www-form-urlencoded';\n            }\n            _.each(headers, function(headerValue, headerName) {\n                req.setRequestHeader(headerName, headerValue);\n            });\n\n            if (options.timeout_ms && typeof req.timeout !== 'undefined') {\n                req.timeout = options.timeout_ms;\n                var start_time = new Date().getTime();\n            }\n\n            // send the mp_optout cookie\n            // withCredentials cannot be modified until after calling .open on Android and Mobile Safari\n            req.withCredentials = true;\n            req.onreadystatechange = function () {\n                if (req.readyState === 4) { // XMLHttpRequest.DONE == 4, except in safari 4\n                    if (req.status === 200) {\n                        if (callback) {\n                            if (verbose_mode) {\n                                var response;\n                                try {\n                                    response = _.JSONDecode(req.responseText);\n                                } catch (e) {\n                                    lib.report_error(e);\n                                    if (options.ignore_json_errors) {\n                                        response = req.responseText;\n                                    } else {\n                                        return;\n                                    }\n                                }\n                                callback(response);\n                            } else {\n                                callback(Number(req.responseText));\n                            }\n                        }\n                    } else {\n                        var error;\n                        if (\n                            req.timeout &&\n                            !req.status &&\n                            new Date().getTime() - start_time >= req.timeout\n                        ) {\n                            error = 'timeout';\n                        } else {\n                            error = 'Bad HTTP status: ' + req.status + ' ' + req.statusText;\n                        }\n                        lib.report_error(error);\n                        if (callback) {\n                            if (verbose_mode) {\n                                var response_headers = req['responseHeaders'] || {};\n                                callback({status: 0, httpStatusCode: req['status'], error: error, retryAfter: response_headers['Retry-After']});\n                            } else {\n                                callback(0);\n                            }\n                        }\n                    }\n                }\n            };\n            req.send(body_data);\n        } catch (e) {\n            lib.report_error(e);\n            succeeded = false;\n        }\n    } else {\n        var script = document$1.createElement('script');\n        script.type = 'text/javascript';\n        script.async = true;\n        script.defer = true;\n        script.src = url;\n        var s = document$1.getElementsByTagName('script')[0];\n        s.parentNode.insertBefore(script, s);\n    }\n\n    return succeeded;\n};\n\n/**\n * _execute_array() deals with processing any mixpanel function\n * calls that were called before the Mixpanel library were loaded\n * (and are thus stored in an array so they can be called later)\n *\n * Note: we fire off all the mixpanel function calls && user defined\n * functions BEFORE we fire off mixpanel tracking calls. This is so\n * identify/register/set_config calls can properly modify early\n * tracking calls.\n *\n * @param {Array} array\n */\nMixpanelLib.prototype._execute_array = function(array) {\n    var fn_name, alias_calls = [], other_calls = [], tracking_calls = [];\n    _.each(array, function(item) {\n        if (item) {\n            fn_name = item[0];\n            if (_.isArray(fn_name)) {\n                tracking_calls.push(item); // chained call e.g. mixpanel.get_group().set()\n            } else if (typeof(item) === 'function') {\n                item.call(this);\n            } else if (_.isArray(item) && fn_name === 'alias') {\n                alias_calls.push(item);\n            } else if (_.isArray(item) && fn_name.indexOf('track') !== -1 && typeof(this[fn_name]) === 'function') {\n                tracking_calls.push(item);\n            } else {\n                other_calls.push(item);\n            }\n        }\n    }, this);\n\n    var execute = function(calls, context) {\n        _.each(calls, function(item) {\n            if (_.isArray(item[0])) {\n                // chained call\n                var caller = context;\n                _.each(item, function(call) {\n                    caller = caller[call[0]].apply(caller, call.slice(1));\n                });\n            } else {\n                this[item[0]].apply(this, item.slice(1));\n            }\n        }, context);\n    };\n\n    execute(alias_calls, this);\n    execute(other_calls, this);\n    execute(tracking_calls, this);\n};\n\n// request queueing utils\n\nMixpanelLib.prototype.are_batchers_initialized = function() {\n    return !!this.request_batchers.events;\n};\n\nMixpanelLib.prototype.get_batcher_configs = function() {\n    var queue_prefix = '__mpq_' + this.get_config('token');\n    this._batcher_configs = this._batcher_configs || {\n        events: {type: 'events', api_name: 'track', queue_key: queue_prefix + '_ev'},\n        people: {type: 'people', api_name: 'engage', queue_key: queue_prefix + '_pp'},\n        groups: {type: 'groups', api_name: 'groups', queue_key: queue_prefix + '_gr'}\n    };\n    return this._batcher_configs;\n};\n\nMixpanelLib.prototype.init_batchers = function() {\n    if (!this.are_batchers_initialized()) {\n        var batcher_for = _.bind(function(attrs) {\n            return new RequestBatcher(\n                attrs.queue_key,\n                {\n                    libConfig: this['config'],\n                    errorReporter: this.get_config('error_reporter'),\n                    sendRequestFunc: _.bind(function(data, options, cb) {\n                        var api_routes = this.get_config('api_routes');\n                        this._send_request(\n                            this.get_api_host(attrs.api_name) + '/' + api_routes[attrs.api_name],\n                            this._encode_data_for_request(data),\n                            options,\n                            this._prepare_callback(cb, data)\n                        );\n                    }, this),\n                    beforeSendHook: _.bind(function(item) {\n                        return this._run_hook('before_send_' + attrs.type, item);\n                    }, this),\n                    stopAllBatchingFunc: _.bind(this.stop_batch_senders, this),\n                    usePersistence: true,\n                }\n            );\n        }, this);\n        var batcher_configs = this.get_batcher_configs();\n        this.request_batchers = {\n            events: batcher_for(batcher_configs.events),\n            people: batcher_for(batcher_configs.people),\n            groups: batcher_for(batcher_configs.groups)\n        };\n    }\n    if (this.get_config('batch_autostart')) {\n        this.start_batch_senders();\n    }\n};\n\nMixpanelLib.prototype.start_batch_senders = function() {\n    this._batchers_were_started = true;\n    if (this.are_batchers_initialized()) {\n        this._batch_requests = true;\n        _.each(this.request_batchers, function(batcher) {\n            batcher.start();\n        });\n    }\n};\n\nMixpanelLib.prototype.stop_batch_senders = function() {\n    this._batch_requests = false;\n    _.each(this.request_batchers, function(batcher) {\n        batcher.stop();\n        batcher.clear();\n    });\n};\n\n/**\n * push() keeps the standard async-array-push\n * behavior around after the lib is loaded.\n * This is only useful for external integrations that\n * do not wish to rely on our convenience methods\n * (created in the snippet).\n *\n * ### Usage:\n *     mixpanel.push(['register', { a: 'b' }]);\n *\n * @param {Array} item A [function_name, args...] array to be executed\n */\nMixpanelLib.prototype.push = function(item) {\n    this._execute_array([item]);\n};\n\n/**\n * Disable events on the Mixpanel object. If passed no arguments,\n * this function disables tracking of any event. If passed an\n * array of event names, those events will be disabled, but other\n * events will continue to be tracked.\n *\n * Note: this function does not stop other mixpanel functions from\n * firing, such as register() or people.set().\n *\n * @param {Array} [events] An array of event names to disable\n */\nMixpanelLib.prototype.disable = function(events) {\n    if (typeof(events) === 'undefined') {\n        this._flags.disable_all_events = true;\n    } else {\n        this.__disabled_events = this.__disabled_events.concat(events);\n    }\n};\n\nMixpanelLib.prototype._encode_data_for_request = function(data) {\n    var encoded_data = JSONStringify(data);\n    if (this.get_config('api_payload_format') === PAYLOAD_TYPE_BASE64) {\n        encoded_data = _.base64Encode(encoded_data);\n    }\n    return {'data': encoded_data};\n};\n\n// internal method for handling track vs batch-enqueue logic\nMixpanelLib.prototype._track_or_batch = function(options, callback) {\n    var truncated_data = _.truncate(options.data, 255);\n    var endpoint = options.endpoint;\n    var batcher = options.batcher;\n    var should_send_immediately = options.should_send_immediately;\n    var send_request_options = options.send_request_options || {};\n    callback = callback || NOOP_FUNC;\n\n    var request_enqueued_or_initiated = true;\n    var send_request_immediately = _.bind(function() {\n        if (!send_request_options.skip_hooks) {\n            truncated_data = this._run_hook('before_send_' + options.type, truncated_data);\n        }\n        if (truncated_data) {\n            console$1.log('MIXPANEL REQUEST:');\n            console$1.log(truncated_data);\n            return this._send_request(\n                endpoint,\n                this._encode_data_for_request(truncated_data),\n                send_request_options,\n                this._prepare_callback(callback, truncated_data)\n            );\n        } else {\n            return null;\n        }\n    }, this);\n\n    if (this._batch_requests && !should_send_immediately) {\n        batcher.enqueue(truncated_data).then(function(succeeded) {\n            if (succeeded) {\n                callback(1, truncated_data);\n            } else {\n                send_request_immediately();\n            }\n        });\n    } else {\n        request_enqueued_or_initiated = send_request_immediately();\n    }\n\n    return request_enqueued_or_initiated && truncated_data;\n};\n\n/**\n * Track an event. This is the most important and\n * frequently used Mixpanel function.\n *\n * ### Usage:\n *\n *     // track an event named 'Registered'\n *     mixpanel.track('Registered', {'Gender': 'Male', 'Age': 21});\n *\n *     // track an event using navigator.sendBeacon\n *     mixpanel.track('Left page', {'duration_seconds': 35}, {transport: 'sendBeacon'});\n *\n * To track link clicks or form submissions, see track_links() or track_forms().\n *\n * @param {String} event_name The name of the event. This can be anything the user does - 'Button Click', 'Sign Up', 'Item Purchased', etc.\n * @param {Object} [properties] A set of properties to include with the event you're sending. These describe the user who did the event or details about the event itself.\n * @param {Object} [options] Optional configuration for this track request.\n * @param {String} [options.transport] Transport method for network request ('xhr' or 'sendBeacon').\n * @param {Boolean} [options.send_immediately] Whether to bypass batching/queueing and send track request immediately.\n * @param {Function} [callback] If provided, the callback function will be called after tracking the event.\n * @returns {Boolean|Object} If the tracking request was successfully initiated/queued, an object\n * with the tracking payload sent to the API server is returned; otherwise false.\n */\nMixpanelLib.prototype.track = addOptOutCheckMixpanelLib(function(event_name, properties, options, callback) {\n    if (!callback && typeof options === 'function') {\n        callback = options;\n        options = null;\n    }\n    options = options || {};\n    var transport = options['transport']; // external API, don't minify 'transport' prop\n    if (transport) {\n        options.transport = transport; // 'transport' prop name can be minified internally\n    }\n    var should_send_immediately = options['send_immediately'];\n    if (typeof callback !== 'function') {\n        callback = NOOP_FUNC;\n    }\n\n    if (_.isUndefined(event_name)) {\n        this.report_error('No event name provided to mixpanel.track');\n        return;\n    }\n\n    if (this._event_is_disabled(event_name)) {\n        callback(0);\n        return;\n    }\n\n    // set defaults\n    properties = _.extend({}, properties);\n    properties['token'] = this.get_config('token');\n\n    // set $duration if time_event was previously called for this event\n    var start_timestamp = this['persistence'].remove_event_timer(event_name);\n    if (!_.isUndefined(start_timestamp)) {\n        var duration_in_ms = new Date().getTime() - start_timestamp;\n        properties['$duration'] = parseFloat((duration_in_ms / 1000).toFixed(3));\n    }\n\n    this._set_default_superprops();\n\n    var marketing_properties = this.get_config('track_marketing')\n        ? _.info.marketingParams()\n        : {};\n\n    // note: extend writes to the first object, so lets make sure we\n    // don't write to the persistence properties object and info\n    // properties object by passing in a new object\n\n    // update properties with pageview info and super-properties\n    properties = _.extend(\n        {},\n        _.info.properties({'mp_loader': this.get_config('mp_loader')}),\n        marketing_properties,\n        this['persistence'].properties(),\n        this.unpersisted_superprops,\n        this.get_session_recording_properties(),\n        properties\n    );\n\n    var property_blacklist = this.get_config('property_blacklist');\n    if (_.isArray(property_blacklist)) {\n        _.each(property_blacklist, function(blacklisted_prop) {\n            delete properties[blacklisted_prop];\n        });\n    } else {\n        this.report_error('Invalid value for property_blacklist config: ' + property_blacklist);\n    }\n\n    var data = {\n        'event': event_name,\n        'properties': properties\n    };\n    var ret = this._track_or_batch({\n        type: 'events',\n        data: data,\n        endpoint: this.get_api_host('events') + '/' + this.get_config('api_routes')['track'],\n        batcher: this.request_batchers.events,\n        should_send_immediately: should_send_immediately,\n        send_request_options: options\n    }, callback);\n\n    return ret;\n});\n\n/**\n * Register the current user into one/many groups.\n *\n * ### Usage:\n *\n *      mixpanel.set_group('company', ['mixpanel', 'google']) // an array of IDs\n *      mixpanel.set_group('company', 'mixpanel')\n *      mixpanel.set_group('company', 128746312)\n *\n * @param {String} group_key Group key\n * @param {Array|String|Number} group_ids An array of group IDs, or a singular group ID\n * @param {Function} [callback] If provided, the callback will be called after tracking the event.\n *\n */\nMixpanelLib.prototype.set_group = addOptOutCheckMixpanelLib(function(group_key, group_ids, callback) {\n    if (!_.isArray(group_ids)) {\n        group_ids = [group_ids];\n    }\n    var prop = {};\n    prop[group_key] = group_ids;\n    this.register(prop);\n    return this['people'].set(group_key, group_ids, callback);\n});\n\n/**\n * Add a new group for this user.\n *\n * ### Usage:\n *\n *      mixpanel.add_group('company', 'mixpanel')\n *\n * @param {String} group_key Group key\n * @param {*} group_id A valid Mixpanel property type\n * @param {Function} [callback] If provided, the callback will be called after tracking the event.\n */\nMixpanelLib.prototype.add_group = addOptOutCheckMixpanelLib(function(group_key, group_id, callback) {\n    var old_values = this.get_property(group_key);\n    var prop = {};\n    if (old_values === undefined) {\n        prop[group_key] = [group_id];\n        this.register(prop);\n    } else {\n        if (old_values.indexOf(group_id) === -1) {\n            old_values.push(group_id);\n            prop[group_key] = old_values;\n            this.register(prop);\n        }\n    }\n    return this['people'].union(group_key, group_id, callback);\n});\n\n/**\n * Remove a group from this user.\n *\n * ### Usage:\n *\n *      mixpanel.remove_group('company', 'mixpanel')\n *\n * @param {String} group_key Group key\n * @param {*} group_id A valid Mixpanel property type\n * @param {Function} [callback] If provided, the callback will be called after tracking the event.\n */\nMixpanelLib.prototype.remove_group = addOptOutCheckMixpanelLib(function(group_key, group_id, callback) {\n    var old_value = this.get_property(group_key);\n    // if the value doesn't exist, the persistent store is unchanged\n    if (old_value !== undefined) {\n        var idx = old_value.indexOf(group_id);\n        if (idx > -1) {\n            old_value.splice(idx, 1);\n            this.register({group_key: old_value});\n        }\n        if (old_value.length === 0) {\n            this.unregister(group_key);\n        }\n    }\n    return this['people'].remove(group_key, group_id, callback);\n});\n\n/**\n * Track an event with specific groups.\n *\n * ### Usage:\n *\n *      mixpanel.track_with_groups('purchase', {'product': 'iphone'}, {'University': ['UCB', 'UCLA']})\n *\n * @param {String} event_name The name of the event (see `mixpanel.track()`)\n * @param {Object=} properties A set of properties to include with the event you're sending (see `mixpanel.track()`)\n * @param {Object=} groups An object mapping group name keys to one or more values\n * @param {Function} [callback] If provided, the callback will be called after tracking the event.\n */\nMixpanelLib.prototype.track_with_groups = addOptOutCheckMixpanelLib(function(event_name, properties, groups, callback) {\n    var tracking_props = _.extend({}, properties || {});\n    _.each(groups, function(v, k) {\n        if (v !== null && v !== undefined) {\n            tracking_props[k] = v;\n        }\n    });\n    return this.track(event_name, tracking_props, callback);\n});\n\nMixpanelLib.prototype._create_map_key = function (group_key, group_id) {\n    return group_key + '_' + JSON.stringify(group_id);\n};\n\nMixpanelLib.prototype._remove_group_from_cache = function (group_key, group_id) {\n    delete this._cached_groups[this._create_map_key(group_key, group_id)];\n};\n\n/**\n * Look up reference to a Mixpanel group\n *\n * ### Usage:\n *\n *       mixpanel.get_group(group_key, group_id)\n *\n * @param {String} group_key Group key\n * @param {Object} group_id A valid Mixpanel property type\n * @returns {Object} A MixpanelGroup identifier\n */\nMixpanelLib.prototype.get_group = function (group_key, group_id) {\n    var map_key = this._create_map_key(group_key, group_id);\n    var group = this._cached_groups[map_key];\n    if (group === undefined || group._group_key !== group_key || group._group_id !== group_id) {\n        group = new MixpanelGroup();\n        group._init(this, group_key, group_id);\n        this._cached_groups[map_key] = group;\n    }\n    return group;\n};\n\n/**\n * Track a default Mixpanel page view event, which includes extra default event properties to\n * improve page view data.\n *\n * ### Usage:\n *\n *     // track a default $mp_web_page_view event\n *     mixpanel.track_pageview();\n *\n *     // track a page view event with additional event properties\n *     mixpanel.track_pageview({'ab_test_variant': 'card-layout-b'});\n *\n *     // example approach to track page views on different page types as event properties\n *     mixpanel.track_pageview({'page': 'pricing'});\n *     mixpanel.track_pageview({'page': 'homepage'});\n *\n *     // UNCOMMON: Tracking a page view event with a custom event_name option. NOT expected to be used for\n *     // individual pages on the same site or product. Use cases for custom event_name may be page\n *     // views on different products or internal applications that are considered completely separate\n *     mixpanel.track_pageview({'page': 'customer-search'}, {'event_name': '[internal] Admin Page View'});\n *\n * ### Notes:\n *\n * The `config.track_pageview` option for <a href=\"#mixpanelinit\">mixpanel.init()</a>\n * may be turned on for tracking page loads automatically.\n *\n *     // track only page loads\n *     mixpanel.init(PROJECT_TOKEN, {track_pageview: true});\n *\n *     // track when the URL changes in any manner\n *     mixpanel.init(PROJECT_TOKEN, {track_pageview: 'full-url'});\n *\n *     // track when the URL changes, ignoring any changes in the hash part\n *     mixpanel.init(PROJECT_TOKEN, {track_pageview: 'url-with-path-and-query-string'});\n *\n *     // track when the path changes, ignoring any query parameter or hash changes\n *     mixpanel.init(PROJECT_TOKEN, {track_pageview: 'url-with-path'});\n *\n * @param {Object} [properties] An optional set of additional properties to send with the page view event\n * @param {Object} [options] Page view tracking options\n * @param {String} [options.event_name] - Alternate name for the tracking event\n * @returns {Boolean|Object} If the tracking request was successfully initiated/queued, an object\n * with the tracking payload sent to the API server is returned; otherwise false.\n */\nMixpanelLib.prototype.track_pageview = addOptOutCheckMixpanelLib(function(properties, options) {\n    if (typeof properties !== 'object') {\n        properties = {};\n    }\n    options = options || {};\n    var event_name = options['event_name'] || '$mp_web_page_view';\n\n    var default_page_properties = _.extend(\n        _.info.mpPageViewProperties(),\n        _.info.campaignParams(),\n        _.info.clickParams()\n    );\n\n    var event_properties = _.extend(\n        {},\n        default_page_properties,\n        properties\n    );\n\n    return this.track(event_name, event_properties);\n});\n\n/**\n * Track clicks on a set of document elements. Selector must be a\n * valid query. Elements must exist on the page at the time track_links is called.\n *\n * ### Usage:\n *\n *     // track click for link id #nav\n *     mixpanel.track_links('#nav', 'Clicked Nav Link');\n *\n * ### Notes:\n *\n * This function will wait up to 300 ms for the Mixpanel\n * servers to respond. If they have not responded by that time\n * it will head to the link without ensuring that your event\n * has been tracked.  To configure this timeout please see the\n * set_config() documentation below.\n *\n * If you pass a function in as the properties argument, the\n * function will receive the DOMElement that triggered the\n * event as an argument.  You are expected to return an object\n * from the function; any properties defined on this object\n * will be sent to mixpanel as event properties.\n *\n * @type {Function}\n * @param {Object|String} query A valid DOM query, element or jQuery-esque list\n * @param {String} event_name The name of the event to track\n * @param {Object|Function} [properties] A properties object or function that returns a dictionary of properties when passed a DOMElement\n */\nMixpanelLib.prototype.track_links = function() {\n    return this._track_dom.call(this, LinkTracker, arguments);\n};\n\n/**\n * Track form submissions. Selector must be a valid query.\n *\n * ### Usage:\n *\n *     // track submission for form id 'register'\n *     mixpanel.track_forms('#register', 'Created Account');\n *\n * ### Notes:\n *\n * This function will wait up to 300 ms for the mixpanel\n * servers to respond, if they have not responded by that time\n * it will head to the link without ensuring that your event\n * has been tracked.  To configure this timeout please see the\n * set_config() documentation below.\n *\n * If you pass a function in as the properties argument, the\n * function will receive the DOMElement that triggered the\n * event as an argument.  You are expected to return an object\n * from the function; any properties defined on this object\n * will be sent to mixpanel as event properties.\n *\n * @type {Function}\n * @param {Object|String} query A valid DOM query, element or jQuery-esque list\n * @param {String} event_name The name of the event to track\n * @param {Object|Function} [properties] This can be a set of properties, or a function that returns a set of properties after being passed a DOMElement\n */\nMixpanelLib.prototype.track_forms = function() {\n    return this._track_dom.call(this, FormTracker, arguments);\n};\n\n/**\n * Time an event by including the time between this call and a\n * later 'track' call for the same event in the properties sent\n * with the event.\n *\n * ### Usage:\n *\n *     // time an event named 'Registered'\n *     mixpanel.time_event('Registered');\n *     mixpanel.track('Registered', {'Gender': 'Male', 'Age': 21});\n *\n * When called for a particular event name, the next track call for that event\n * name will include the elapsed time between the 'time_event' and 'track'\n * calls. This value is stored as seconds in the '$duration' property.\n *\n * @param {String} event_name The name of the event.\n */\nMixpanelLib.prototype.time_event = function(event_name) {\n    if (_.isUndefined(event_name)) {\n        this.report_error('No event name provided to mixpanel.time_event');\n        return;\n    }\n\n    if (this._event_is_disabled(event_name)) {\n        return;\n    }\n\n    this['persistence'].set_event_timer(event_name,  new Date().getTime());\n};\n\nvar REGISTER_DEFAULTS = {\n    'persistent': true\n};\n/**\n * Helper to parse options param for register methods, maintaining\n * legacy support for plain \"days\" param instead of options object\n * @param {Number|Object} [days_or_options] 'days' option (Number), or Options object for register methods\n * @returns {Object} options object\n */\nvar options_for_register = function(days_or_options) {\n    var options;\n    if (_.isObject(days_or_options)) {\n        options = days_or_options;\n    } else if (!_.isUndefined(days_or_options)) {\n        options = {'days': days_or_options};\n    } else {\n        options = {};\n    }\n    return _.extend({}, REGISTER_DEFAULTS, options);\n};\n\n/**\n * Register a set of super properties, which are included with all\n * events. This will overwrite previous super property values.\n *\n * ### Usage:\n *\n *     // register 'Gender' as a super property\n *     mixpanel.register({'Gender': 'Female'});\n *\n *     // register several super properties when a user signs up\n *     mixpanel.register({\n *         'Email': 'jdoe@example.com',\n *         'Account Type': 'Free'\n *     });\n *\n *     // register only for the current pageload\n *     mixpanel.register({'Name': 'Pat'}, {persistent: false});\n *\n * @param {Object} properties An associative array of properties to store about the user\n * @param {Number|Object} [days_or_options] Options object or number of days since the user's last visit to store the super properties (only valid for persisted props)\n * @param {boolean} [days_or_options.days] - number of days since the user's last visit to store the super properties (only valid for persisted props)\n * @param {boolean} [days_or_options.persistent=true] - whether to put in persistent storage (cookie/localStorage)\n */\nMixpanelLib.prototype.register = function(props, days_or_options) {\n    var options = options_for_register(days_or_options);\n    if (options['persistent']) {\n        this['persistence'].register(props, options['days']);\n    } else {\n        _.extend(this.unpersisted_superprops, props);\n    }\n};\n\n/**\n * Register a set of super properties only once. This will not\n * overwrite previous super property values, unlike register().\n *\n * ### Usage:\n *\n *     // register a super property for the first time only\n *     mixpanel.register_once({\n *         'First Login Date': new Date().toISOString()\n *     });\n *\n *     // register once, only for the current pageload\n *     mixpanel.register_once({\n *         'First interaction time': new Date().toISOString()\n *     }, 'None', {persistent: false});\n *\n * ### Notes:\n *\n * If default_value is specified, current super properties\n * with that value will be overwritten.\n *\n * @param {Object} properties An associative array of properties to store about the user\n * @param {*} [default_value] Value to override if already set in super properties (ex: 'False') Default: 'None'\n * @param {Number|Object} [days_or_options] Options object or number of days since the user's last visit to store the super properties (only valid for persisted props)\n * @param {boolean} [days_or_options.days] - number of days since the user's last visit to store the super properties (only valid for persisted props)\n * @param {boolean} [days_or_options.persistent=true] - whether to put in persistent storage (cookie/localStorage)\n */\nMixpanelLib.prototype.register_once = function(props, default_value, days_or_options) {\n    var options = options_for_register(days_or_options);\n    if (options['persistent']) {\n        this['persistence'].register_once(props, default_value, options['days']);\n    } else {\n        if (typeof(default_value) === 'undefined') {\n            default_value = 'None';\n        }\n        _.each(props, function(val, prop) {\n            if (!this.unpersisted_superprops.hasOwnProperty(prop) || this.unpersisted_superprops[prop] === default_value) {\n                this.unpersisted_superprops[prop] = val;\n            }\n        }, this);\n    }\n};\n\n/**\n * Delete a super property stored with the current user.\n *\n * @param {String} property The name of the super property to remove\n * @param {Object} [options]\n * @param {boolean} [options.persistent=true] - whether to look in persistent storage (cookie/localStorage)\n */\nMixpanelLib.prototype.unregister = function(property, options) {\n    options = options_for_register(options);\n    if (options['persistent']) {\n        this['persistence'].unregister(property);\n    } else {\n        delete this.unpersisted_superprops[property];\n    }\n};\n\nMixpanelLib.prototype._register_single = function(prop, value) {\n    var props = {};\n    props[prop] = value;\n    this.register(props);\n};\n\n/**\n * Identify a user with a unique ID to track user activity across\n * devices, tie a user to their events, and create a user profile.\n * If you never call this method, unique visitors are tracked using\n * a UUID generated the first time they visit the site.\n *\n * Call identify when you know the identity of the current user,\n * typically after login or signup. We recommend against using\n * identify for anonymous visitors to your site.\n *\n * ### Notes:\n * If your project has\n * <a href=\"https://help.mixpanel.com/hc/en-us/articles/360039133851\">ID Merge</a>\n * enabled, the identify method will connect pre- and\n * post-authentication events when appropriate.\n *\n * If your project does not have ID Merge enabled, identify will\n * change the user's local distinct_id to the unique ID you pass.\n * Events tracked prior to authentication will not be connected\n * to the same user identity. If ID Merge is disabled, alias can\n * be used to connect pre- and post-registration events.\n *\n * @param {String} [unique_id] A string that uniquely identifies a user. If not provided, the distinct_id currently in the persistent store (cookie or localStorage) will be used.\n */\nMixpanelLib.prototype.identify = function(\n    new_distinct_id, _set_callback, _add_callback, _append_callback, _set_once_callback, _union_callback, _unset_callback, _remove_callback\n) {\n    // Optional Parameters\n    //  _set_callback:function  A callback to be run if and when the People set queue is flushed\n    //  _add_callback:function  A callback to be run if and when the People add queue is flushed\n    //  _append_callback:function  A callback to be run if and when the People append queue is flushed\n    //  _set_once_callback:function  A callback to be run if and when the People set_once queue is flushed\n    //  _union_callback:function  A callback to be run if and when the People union queue is flushed\n    //  _unset_callback:function  A callback to be run if and when the People unset queue is flushed\n\n    var previous_distinct_id = this.get_distinct_id();\n    if (new_distinct_id && previous_distinct_id !== new_distinct_id) {\n        // we allow the following condition if previous distinct_id is same as new_distinct_id\n        // so that you can force flush people updates for anonymous profiles.\n        if (typeof new_distinct_id === 'string' && new_distinct_id.indexOf(DEVICE_ID_PREFIX) === 0) {\n            this.report_error('distinct_id cannot have $device: prefix');\n            return -1;\n        }\n        this.register({'$user_id': new_distinct_id});\n    }\n\n    if (!this.get_property('$device_id')) {\n        // The persisted distinct id might not actually be a device id at all\n        // it might be a distinct id of the user from before\n        var device_id = previous_distinct_id;\n        this.register_once({\n            '$had_persisted_distinct_id': true,\n            '$device_id': device_id\n        }, '');\n    }\n\n    // identify only changes the distinct id if it doesn't match either the existing or the alias;\n    // if it's new, blow away the alias as well.\n    if (new_distinct_id !== previous_distinct_id && new_distinct_id !== this.get_property(ALIAS_ID_KEY)) {\n        this.unregister(ALIAS_ID_KEY);\n        this.register({'distinct_id': new_distinct_id});\n    }\n    this._flags.identify_called = true;\n    // Flush any queued up people requests\n    this['people']._flush(_set_callback, _add_callback, _append_callback, _set_once_callback, _union_callback, _unset_callback, _remove_callback);\n\n    // send an $identify event any time the distinct_id is changing - logic on the server\n    // will determine whether or not to do anything with it.\n    if (new_distinct_id !== previous_distinct_id) {\n        this.track('$identify', {\n            'distinct_id': new_distinct_id,\n            '$anon_distinct_id': previous_distinct_id\n        }, {skip_hooks: true});\n    }\n\n    // check feature flags again if distinct id has changed\n    if (new_distinct_id !== previous_distinct_id) {\n        this.flags.fetchFlags();\n    }\n};\n\n/**\n * Clears super properties and generates a new random distinct_id for this instance.\n * Useful for clearing data when a user logs out.\n */\nMixpanelLib.prototype.reset = function() {\n    this.stop_session_recording();\n    this['persistence'].clear();\n    this._flags.identify_called = false;\n    var uuid = _.UUID();\n    this.register_once({\n        'distinct_id': DEVICE_ID_PREFIX + uuid,\n        '$device_id': uuid\n    }, '');\n    this._check_and_start_session_recording();\n};\n\n/**\n * Returns the current distinct id of the user. This is either the id automatically\n * generated by the library or the id that has been passed by a call to identify().\n *\n * ### Notes:\n *\n * get_distinct_id() can only be called after the Mixpanel library has finished loading.\n * init() has a loaded function available to handle this automatically. For example:\n *\n *     // set distinct_id after the mixpanel library has loaded\n *     mixpanel.init('YOUR PROJECT TOKEN', {\n *         loaded: function(mixpanel) {\n *             distinct_id = mixpanel.get_distinct_id();\n *         }\n *     });\n */\nMixpanelLib.prototype.get_distinct_id = function() {\n    return this.get_property('distinct_id');\n};\n\n/**\n * The alias method creates an alias which Mixpanel will use to\n * remap one id to another. Multiple aliases can point to the\n * same identifier.\n *\n * The following is a valid use of alias:\n *\n *     mixpanel.alias('new_id', 'existing_id');\n *     // You can add multiple id aliases to the existing ID\n *     mixpanel.alias('newer_id', 'existing_id');\n *\n * Aliases can also be chained - the following is a valid example:\n *\n *     mixpanel.alias('new_id', 'existing_id');\n *     // chain newer_id - new_id - existing_id\n *     mixpanel.alias('newer_id', 'new_id');\n *\n * Aliases cannot point to multiple identifiers - the following\n * example will not work:\n *\n *     mixpanel.alias('new_id', 'existing_id');\n *     // this is invalid as 'new_id' already points to 'existing_id'\n *     mixpanel.alias('new_id', 'newer_id');\n *\n * ### Notes:\n *\n * If your project does not have\n * <a href=\"https://help.mixpanel.com/hc/en-us/articles/360039133851\">ID Merge</a>\n * enabled, the best practice is to call alias once when a unique\n * ID is first created for a user (e.g., when a user first registers\n * for an account). Do not use alias multiple times for a single\n * user without ID Merge enabled.\n *\n * @param {String} alias A unique identifier that you want to use for this user in the future.\n * @param {String} [original] The current identifier being used for this user.\n */\nMixpanelLib.prototype.alias = function(alias, original) {\n    // If the $people_distinct_id key exists in persistence, there has been a previous\n    // mixpanel.people.identify() call made for this user. It is VERY BAD to make an alias with\n    // this ID, as it will duplicate users.\n    if (alias === this.get_property(PEOPLE_DISTINCT_ID_KEY)) {\n        this.report_error('Attempting to create alias for existing People user - aborting.');\n        return -2;\n    }\n\n    var _this = this;\n    if (_.isUndefined(original)) {\n        original = this.get_distinct_id();\n    }\n    if (alias !== original) {\n        this._register_single(ALIAS_ID_KEY, alias);\n        return this.track('$create_alias', {\n            'alias': alias,\n            'distinct_id': original\n        }, {\n            skip_hooks: true\n        }, function() {\n            // Flush the people queue\n            _this.identify(alias);\n        });\n    } else {\n        this.report_error('alias matches current distinct_id - skipping api call.');\n        this.identify(alias);\n        return -1;\n    }\n};\n\n/**\n * Provide a string to recognize the user by. The string passed to\n * this method will appear in the Mixpanel Streams product rather\n * than an automatically generated name. Name tags do not have to\n * be unique.\n *\n * This value will only be included in Streams data.\n *\n * @param {String} name_tag A human readable name for the user\n * @deprecated\n */\nMixpanelLib.prototype.name_tag = function(name_tag) {\n    this._register_single('mp_name_tag', name_tag);\n};\n\n/**\n * Update the configuration of a mixpanel library instance.\n *\n * The default config is:\n *\n *     {\n *       // host for requests (customizable for e.g. a local proxy)\n *       api_host: 'https://api-js.mixpanel.com',\n *\n *       // endpoints for different types of requests\n *       api_routes: {\n *         track: 'track/',\n *         engage: 'engage/',\n *         groups: 'groups/',\n *       }\n *\n *       // HTTP method for tracking requests\n *       api_method: 'POST'\n *\n *       // transport for sending requests ('XHR' or 'sendBeacon')\n *       // NB: sendBeacon should only be used for scenarios such as\n *       // page unload where a \"best-effort\" attempt to send is\n *       // acceptable; the sendBeacon API does not support callbacks\n *       // or any way to know the result of the request. Mixpanel\n *       // tracking via sendBeacon will not support any event-\n *       // batching or retry mechanisms.\n *       api_transport: 'XHR'\n *\n *       // request-batching/queueing/retry\n *       batch_requests: true,\n *\n *       // maximum number of events/updates to send in a single\n *       // network request\n *       batch_size: 50,\n *\n *       // milliseconds to wait between sending batch requests\n *       batch_flush_interval_ms: 5000,\n *\n *       // milliseconds to wait for network responses to batch requests\n *       // before they are considered timed-out and retried\n *       batch_request_timeout_ms: 90000,\n *\n *       // override value for cookie domain, only useful for ensuring\n *       // correct cross-subdomain cookies on unusual domains like\n *       // subdomain.mainsite.avocat.fr; NB this cannot be used to\n *       // set cookies on a different domain than the current origin\n *       cookie_domain: ''\n *\n *       // super properties cookie expiration (in days)\n *       cookie_expiration: 365\n *\n *       // if true, cookie will be set with SameSite=None; Secure\n *       // this is only useful in special situations, like embedded\n *       // 3rd-party iframes that set up a Mixpanel instance\n *       cross_site_cookie: false\n *\n *       // super properties span subdomains\n *       cross_subdomain_cookie: true\n *\n *       // debug mode\n *       debug: false\n *\n *       // if this is true, the mixpanel cookie or localStorage entry\n *       // will be deleted, and no user persistence will take place\n *       disable_persistence: false\n *\n *       // if this is true, Mixpanel will automatically determine\n *       // City, Region and Country data using the IP address of\n *       //the client\n *       ip: true\n *\n *       // opt users out of tracking by this Mixpanel instance by default\n *       opt_out_tracking_by_default: false\n *\n *       // opt users out of browser data storage by this Mixpanel instance by default\n *       opt_out_persistence_by_default: false\n *\n *       // persistence mechanism used by opt-in/opt-out methods - cookie\n *       // or localStorage - falls back to cookie if localStorage is unavailable\n *       opt_out_tracking_persistence_type: 'localStorage'\n *\n *       // customize the name of cookie/localStorage set by opt-in/opt-out methods\n *       opt_out_tracking_cookie_prefix: null\n *\n *       // type of persistent store for super properties (cookie/\n *       // localStorage) if set to 'localStorage', any existing\n *       // mixpanel cookie value with the same persistence_name\n *       // will be transferred to localStorage and deleted\n *       persistence: 'cookie'\n *\n *       // name for super properties persistent store\n *       persistence_name: ''\n *\n *       // names of properties/superproperties which should never\n *       // be sent with track() calls\n *       property_blacklist: []\n *\n *       // if this is true, mixpanel cookies will be marked as\n *       // secure, meaning they will only be transmitted over https\n *       secure_cookie: false\n *\n *       // disables enriching user profiles with first touch marketing data\n *       skip_first_touch_marketing: false\n *\n *       // the amount of time track_links will\n *       // wait for Mixpanel's servers to respond\n *       track_links_timeout: 300\n *\n *       // adds any UTM parameters and click IDs present on the page to any events fired\n *       track_marketing: true\n *\n *       // enables automatic page view tracking using default page view events through\n *       // the track_pageview() method\n *       track_pageview: false\n *\n *       // if you set upgrade to be true, the library will check for\n *       // a cookie from our old js library and import super\n *       // properties from it, then the old cookie is deleted\n *       // The upgrade config option only works in the initialization,\n *       // so make sure you set it when you create the library.\n *       upgrade: false\n *\n *       // extra HTTP request headers to set for each API request, in\n *       // the format {'Header-Name': value}\n *       xhr_headers: {}\n *\n *       // whether to ignore or respect the web browser's Do Not Track setting\n *       ignore_dnt: false\n *     }\n *\n *\n * @param {Object} config A dictionary of new configuration values to update\n */\nMixpanelLib.prototype.set_config = function(config) {\n    if (_.isObject(config)) {\n        _.extend(this['config'], config);\n\n        var new_batch_size = config['batch_size'];\n        if (new_batch_size) {\n            _.each(this.request_batchers, function(batcher) {\n                batcher.resetBatchSize();\n            });\n        }\n\n        if (!this.get_config('persistence_name')) {\n            this['config']['persistence_name'] = this['config']['cookie_name'];\n        }\n        if (!this.get_config('disable_persistence')) {\n            this['config']['disable_persistence'] = this['config']['disable_cookie'];\n        }\n\n        if (this['persistence']) {\n            this['persistence'].update_config(this['config']);\n        }\n        Config.DEBUG = Config.DEBUG || this.get_config('debug');\n\n        if (('autocapture' in config || 'record_heatmap_data' in config) && this.autocapture) {\n            this.autocapture.init();\n        }\n    }\n};\n\n/**\n * returns the current config object for the library.\n */\nMixpanelLib.prototype.get_config = function(prop_name) {\n    return this['config'][prop_name];\n};\n\n/**\n * Fetch a hook function from config, with safe default, and run it\n * against the given arguments\n * @param {string} hook_name which hook to retrieve\n * @returns {any|null} return value of user-provided hook, or null if nothing was returned\n */\nMixpanelLib.prototype._run_hook = function(hook_name) {\n    var ret = (this['config']['hooks'][hook_name] || IDENTITY_FUNC).apply(this, slice.call(arguments, 1));\n    if (typeof ret === 'undefined') {\n        this.report_error(hook_name + ' hook did not return a value');\n        ret = null;\n    }\n    return ret;\n};\n\n/**\n * Returns the value of the super property named property_name. If no such\n * property is set, get_property() will return the undefined value.\n *\n * ### Notes:\n *\n * get_property() can only be called after the Mixpanel library has finished loading.\n * init() has a loaded function available to handle this automatically. For example:\n *\n *     // grab value for 'user_id' after the mixpanel library has loaded\n *     mixpanel.init('YOUR PROJECT TOKEN', {\n *         loaded: function(mixpanel) {\n *             user_id = mixpanel.get_property('user_id');\n *         }\n *     });\n *\n * @param {String} property_name The name of the super property you want to retrieve\n */\nMixpanelLib.prototype.get_property = function(property_name) {\n    return this['persistence'].load_prop([property_name]);\n};\n\n/**\n * Get the API host for a specific endpoint type, falling back to the default api_host if not specified\n *\n * @param {String} endpoint_type The type of endpoint (e.g., \"events\", \"people\", \"groups\")\n * @returns {String} The API host to use for this endpoint\n */\nMixpanelLib.prototype.get_api_host = function(endpoint_type) {\n    return this.get_config('api_hosts')[endpoint_type] || this.get_config('api_host');\n};\n\nMixpanelLib.prototype.toString = function() {\n    var name = this.get_config('name');\n    if (name !== PRIMARY_INSTANCE_NAME) {\n        name = PRIMARY_INSTANCE_NAME + '.' + name;\n    }\n    return name;\n};\n\nMixpanelLib.prototype._event_is_disabled = function(event_name) {\n    return _.isBlockedUA(userAgent) ||\n        this._flags.disable_all_events ||\n        _.include(this.__disabled_events, event_name);\n};\n\n// perform some housekeeping around GDPR opt-in/out state\nMixpanelLib.prototype._gdpr_init = function() {\n    var is_localStorage_requested = this.get_config('opt_out_tracking_persistence_type') === 'localStorage';\n\n    // try to convert opt-in/out cookies to localStorage if possible\n    if (is_localStorage_requested && _.localStorage.is_supported()) {\n        if (!this.has_opted_in_tracking() && this.has_opted_in_tracking({'persistence_type': 'cookie'})) {\n            this.opt_in_tracking({'enable_persistence': false});\n        }\n        if (!this.has_opted_out_tracking() && this.has_opted_out_tracking({'persistence_type': 'cookie'})) {\n            this.opt_out_tracking({'clear_persistence': false});\n        }\n        this.clear_opt_in_out_tracking({\n            'persistence_type': 'cookie',\n            'enable_persistence': false\n        });\n    }\n\n    // check whether the user has already opted out - if so, clear & disable persistence\n    if (this.has_opted_out_tracking()) {\n        this._gdpr_update_persistence({'clear_persistence': true});\n\n    // check whether we should opt out by default\n    // note: we don't clear persistence here by default since opt-out default state is often\n    //       used as an initial state while GDPR information is being collected\n    } else if (!this.has_opted_in_tracking() && (\n        this.get_config('opt_out_tracking_by_default') || _.cookie.get('mp_optout')\n    )) {\n        _.cookie.remove('mp_optout');\n        this.opt_out_tracking({\n            'clear_persistence': this.get_config('opt_out_persistence_by_default')\n        });\n    }\n};\n\n/**\n * Enable or disable persistence based on options\n * only enable/disable if persistence is not already in this state\n * @param {boolean} [options.clear_persistence] If true, will delete all data stored by the sdk in persistence and disable it\n * @param {boolean} [options.enable_persistence] If true, will re-enable sdk persistence\n */\nMixpanelLib.prototype._gdpr_update_persistence = function(options) {\n    var disabled;\n    if (options && options['clear_persistence']) {\n        disabled = true;\n    } else if (options && options['enable_persistence']) {\n        disabled = false;\n    } else {\n        return;\n    }\n\n    if (!this.get_config('disable_persistence') && this['persistence'].disabled !== disabled) {\n        this['persistence'].set_disabled(disabled);\n    }\n\n    if (disabled) {\n        this.stop_batch_senders();\n        this.stop_session_recording();\n    } else {\n        // only start batchers after opt-in if they have previously been started\n        // in order to avoid unintentionally starting up batching for the first time\n        if (this._batchers_were_started) {\n            this.start_batch_senders();\n        }\n    }\n};\n\n// call a base gdpr function after constructing the appropriate token and options args\nMixpanelLib.prototype._gdpr_call_func = function(func, options) {\n    options = _.extend({\n        'track': _.bind(this.track, this),\n        'persistence_type': this.get_config('opt_out_tracking_persistence_type'),\n        'cookie_prefix': this.get_config('opt_out_tracking_cookie_prefix'),\n        'cookie_expiration': this.get_config('cookie_expiration'),\n        'cross_site_cookie': this.get_config('cross_site_cookie'),\n        'cross_subdomain_cookie': this.get_config('cross_subdomain_cookie'),\n        'cookie_domain': this.get_config('cookie_domain'),\n        'secure_cookie': this.get_config('secure_cookie'),\n        'ignore_dnt': this.get_config('ignore_dnt')\n    }, options);\n\n    // check if localStorage can be used for recording opt out status, fall back to cookie if not\n    if (!_.localStorage.is_supported()) {\n        options['persistence_type'] = 'cookie';\n    }\n\n    return func(this.get_config('token'), {\n        track: options['track'],\n        trackEventName: options['track_event_name'],\n        trackProperties: options['track_properties'],\n        persistenceType: options['persistence_type'],\n        persistencePrefix: options['cookie_prefix'],\n        cookieDomain: options['cookie_domain'],\n        cookieExpiration: options['cookie_expiration'],\n        crossSiteCookie: options['cross_site_cookie'],\n        crossSubdomainCookie: options['cross_subdomain_cookie'],\n        secureCookie: options['secure_cookie'],\n        ignoreDnt: options['ignore_dnt']\n    });\n};\n\n/**\n * Opt the user in to data tracking and cookies/localstorage for this Mixpanel instance\n *\n * ### Usage:\n *\n *     // opt user in\n *     mixpanel.opt_in_tracking();\n *\n *     // opt user in with specific event name, properties, cookie configuration\n *     mixpanel.opt_in_tracking({\n *         track_event_name: 'User opted in',\n *         track_event_properties: {\n *             'Email': 'jdoe@example.com'\n *         },\n *         cookie_expiration: 30,\n *         secure_cookie: true\n *     });\n *\n * @param {Object} [options] A dictionary of config options to override\n * @param {function} [options.track] Function used for tracking a Mixpanel event to record the opt-in action (default is this Mixpanel instance's track method)\n * @param {string} [options.track_event_name=$opt_in] Event name to be used for tracking the opt-in action\n * @param {Object} [options.track_properties] Set of properties to be tracked along with the opt-in action\n * @param {boolean} [options.enable_persistence=true] If true, will re-enable sdk persistence\n * @param {string} [options.persistence_type=localStorage] Persistence mechanism used - cookie or localStorage - falls back to cookie if localStorage is unavailable\n * @param {string} [options.cookie_prefix=__mp_opt_in_out] Custom prefix to be used in the cookie/localstorage name\n * @param {Number} [options.cookie_expiration] Number of days until the opt-in cookie expires (overrides value specified in this Mixpanel instance's config)\n * @param {string} [options.cookie_domain] Custom cookie domain (overrides value specified in this Mixpanel instance's config)\n * @param {boolean} [options.cross_site_cookie] Whether the opt-in cookie is set as cross-site-enabled (overrides value specified in this Mixpanel instance's config)\n * @param {boolean} [options.cross_subdomain_cookie] Whether the opt-in cookie is set as cross-subdomain or not (overrides value specified in this Mixpanel instance's config)\n * @param {boolean} [options.secure_cookie] Whether the opt-in cookie is set as secure or not (overrides value specified in this Mixpanel instance's config)\n */\nMixpanelLib.prototype.opt_in_tracking = function(options) {\n    options = _.extend({\n        'enable_persistence': true\n    }, options);\n\n    this._gdpr_call_func(optIn, options);\n    this._gdpr_update_persistence(options);\n};\n\n/**\n * Opt the user out of data tracking and cookies/localstorage for this Mixpanel instance\n *\n * ### Usage:\n *\n *     // opt user out\n *     mixpanel.opt_out_tracking();\n *\n *     // opt user out with different cookie configuration from Mixpanel instance\n *     mixpanel.opt_out_tracking({\n *         cookie_expiration: 30,\n *         secure_cookie: true\n *     });\n *\n * @param {Object} [options] A dictionary of config options to override\n * @param {boolean} [options.delete_user=true] If true, will delete the currently identified user's profile and clear all charges after opting the user out\n * @param {boolean} [options.clear_persistence=true] If true, will delete all data stored by the sdk in persistence\n * @param {string} [options.persistence_type=localStorage] Persistence mechanism used - cookie or localStorage - falls back to cookie if localStorage is unavailable\n * @param {string} [options.cookie_prefix=__mp_opt_in_out] Custom prefix to be used in the cookie/localstorage name\n * @param {Number} [options.cookie_expiration] Number of days until the opt-in cookie expires (overrides value specified in this Mixpanel instance's config)\n * @param {string} [options.cookie_domain] Custom cookie domain (overrides value specified in this Mixpanel instance's config)\n * @param {boolean} [options.cross_site_cookie] Whether the opt-in cookie is set as cross-site-enabled (overrides value specified in this Mixpanel instance's config)\n * @param {boolean} [options.cross_subdomain_cookie] Whether the opt-in cookie is set as cross-subdomain or not (overrides value specified in this Mixpanel instance's config)\n * @param {boolean} [options.secure_cookie] Whether the opt-in cookie is set as secure or not (overrides value specified in this Mixpanel instance's config)\n */\nMixpanelLib.prototype.opt_out_tracking = function(options) {\n    options = _.extend({\n        'clear_persistence': true,\n        'delete_user': true\n    }, options);\n\n    // delete user and clear charges since these methods may be disabled by opt-out\n    if (options['delete_user'] && this['people'] && this['people']._identify_called()) {\n        this['people'].delete_user();\n        this['people'].clear_charges();\n    }\n\n    this._gdpr_call_func(optOut, options);\n    this._gdpr_update_persistence(options);\n};\n\n/**\n * Check whether the user has opted in to data tracking and cookies/localstorage for this Mixpanel instance\n *\n * ### Usage:\n *\n *     var has_opted_in = mixpanel.has_opted_in_tracking();\n *     // use has_opted_in value\n *\n * @param {Object} [options] A dictionary of config options to override\n * @param {string} [options.persistence_type=localStorage] Persistence mechanism used - cookie or localStorage - falls back to cookie if localStorage is unavailable\n * @param {string} [options.cookie_prefix=__mp_opt_in_out] Custom prefix to be used in the cookie/localstorage name\n * @returns {boolean} current opt-in status\n */\nMixpanelLib.prototype.has_opted_in_tracking = function(options) {\n    return this._gdpr_call_func(hasOptedIn, options);\n};\n\n/**\n * Check whether the user has opted out of data tracking and cookies/localstorage for this Mixpanel instance\n *\n * ### Usage:\n *\n *     var has_opted_out = mixpanel.has_opted_out_tracking();\n *     // use has_opted_out value\n *\n * @param {Object} [options] A dictionary of config options to override\n * @param {string} [options.persistence_type=localStorage] Persistence mechanism used - cookie or localStorage - falls back to cookie if localStorage is unavailable\n * @param {string} [options.cookie_prefix=__mp_opt_in_out] Custom prefix to be used in the cookie/localstorage name\n * @returns {boolean} current opt-out status\n */\nMixpanelLib.prototype.has_opted_out_tracking = function(options) {\n    return this._gdpr_call_func(hasOptedOut, options);\n};\n\n/**\n * Clear the user's opt in/out status of data tracking and cookies/localstorage for this Mixpanel instance\n *\n * ### Usage:\n *\n *     // clear user's opt-in/out status\n *     mixpanel.clear_opt_in_out_tracking();\n *\n *     // clear user's opt-in/out status with specific cookie configuration - should match\n *     // configuration used when opt_in_tracking/opt_out_tracking methods were called.\n *     mixpanel.clear_opt_in_out_tracking({\n *         cookie_expiration: 30,\n *         secure_cookie: true\n *     });\n *\n * @param {Object} [options] A dictionary of config options to override\n * @param {boolean} [options.enable_persistence=true] If true, will re-enable sdk persistence\n * @param {string} [options.persistence_type=localStorage] Persistence mechanism used - cookie or localStorage - falls back to cookie if localStorage is unavailable\n * @param {string} [options.cookie_prefix=__mp_opt_in_out] Custom prefix to be used in the cookie/localstorage name\n * @param {Number} [options.cookie_expiration] Number of days until the opt-in cookie expires (overrides value specified in this Mixpanel instance's config)\n * @param {string} [options.cookie_domain] Custom cookie domain (overrides value specified in this Mixpanel instance's config)\n * @param {boolean} [options.cross_site_cookie] Whether the opt-in cookie is set as cross-site-enabled (overrides value specified in this Mixpanel instance's config)\n * @param {boolean} [options.cross_subdomain_cookie] Whether the opt-in cookie is set as cross-subdomain or not (overrides value specified in this Mixpanel instance's config)\n * @param {boolean} [options.secure_cookie] Whether the opt-in cookie is set as secure or not (overrides value specified in this Mixpanel instance's config)\n */\nMixpanelLib.prototype.clear_opt_in_out_tracking = function(options) {\n    options = _.extend({\n        'enable_persistence': true\n    }, options);\n\n    this._gdpr_call_func(clearOptInOut, options);\n    this._gdpr_update_persistence(options);\n};\n\nMixpanelLib.prototype.report_error = function(msg, err) {\n    console$1.error.apply(console$1.error, arguments);\n    try {\n        if (!err && !(msg instanceof Error)) {\n            msg = new Error(msg);\n        }\n        this.get_config('error_reporter')(msg, err);\n    } catch(err) {\n        console$1.error(err);\n    }\n};\n\n// EXPORTS (for closure compiler)\n\n// MixpanelLib Exports\nMixpanelLib.prototype['init']                               = MixpanelLib.prototype.init;\nMixpanelLib.prototype['reset']                              = MixpanelLib.prototype.reset;\nMixpanelLib.prototype['disable']                            = MixpanelLib.prototype.disable;\nMixpanelLib.prototype['time_event']                         = MixpanelLib.prototype.time_event;\nMixpanelLib.prototype['track']                              = MixpanelLib.prototype.track;\nMixpanelLib.prototype['track_links']                        = MixpanelLib.prototype.track_links;\nMixpanelLib.prototype['track_forms']                        = MixpanelLib.prototype.track_forms;\nMixpanelLib.prototype['track_pageview']                     = MixpanelLib.prototype.track_pageview;\nMixpanelLib.prototype['register']                           = MixpanelLib.prototype.register;\nMixpanelLib.prototype['register_once']                      = MixpanelLib.prototype.register_once;\nMixpanelLib.prototype['unregister']                         = MixpanelLib.prototype.unregister;\nMixpanelLib.prototype['identify']                           = MixpanelLib.prototype.identify;\nMixpanelLib.prototype['alias']                              = MixpanelLib.prototype.alias;\nMixpanelLib.prototype['name_tag']                           = MixpanelLib.prototype.name_tag;\nMixpanelLib.prototype['set_config']                         = MixpanelLib.prototype.set_config;\nMixpanelLib.prototype['get_config']                         = MixpanelLib.prototype.get_config;\nMixpanelLib.prototype['get_api_host']                       = MixpanelLib.prototype.get_api_host;\nMixpanelLib.prototype['get_property']                       = MixpanelLib.prototype.get_property;\nMixpanelLib.prototype['get_distinct_id']                    = MixpanelLib.prototype.get_distinct_id;\nMixpanelLib.prototype['toString']                           = MixpanelLib.prototype.toString;\nMixpanelLib.prototype['opt_out_tracking']                   = MixpanelLib.prototype.opt_out_tracking;\nMixpanelLib.prototype['opt_in_tracking']                    = MixpanelLib.prototype.opt_in_tracking;\nMixpanelLib.prototype['has_opted_out_tracking']             = MixpanelLib.prototype.has_opted_out_tracking;\nMixpanelLib.prototype['has_opted_in_tracking']              = MixpanelLib.prototype.has_opted_in_tracking;\nMixpanelLib.prototype['clear_opt_in_out_tracking']          = MixpanelLib.prototype.clear_opt_in_out_tracking;\nMixpanelLib.prototype['get_group']                          = MixpanelLib.prototype.get_group;\nMixpanelLib.prototype['set_group']                          = MixpanelLib.prototype.set_group;\nMixpanelLib.prototype['add_group']                          = MixpanelLib.prototype.add_group;\nMixpanelLib.prototype['remove_group']                       = MixpanelLib.prototype.remove_group;\nMixpanelLib.prototype['track_with_groups']                  = MixpanelLib.prototype.track_with_groups;\nMixpanelLib.prototype['start_batch_senders']                = MixpanelLib.prototype.start_batch_senders;\nMixpanelLib.prototype['stop_batch_senders']                 = MixpanelLib.prototype.stop_batch_senders;\nMixpanelLib.prototype['start_session_recording']            = MixpanelLib.prototype.start_session_recording;\nMixpanelLib.prototype['stop_session_recording']             = MixpanelLib.prototype.stop_session_recording;\nMixpanelLib.prototype['pause_session_recording']            = MixpanelLib.prototype.pause_session_recording;\nMixpanelLib.prototype['resume_session_recording']           = MixpanelLib.prototype.resume_session_recording;\nMixpanelLib.prototype['get_session_recording_properties']   = MixpanelLib.prototype.get_session_recording_properties;\nMixpanelLib.prototype['get_session_replay_url']             = MixpanelLib.prototype.get_session_replay_url;\nMixpanelLib.prototype['get_tab_id']                         = MixpanelLib.prototype.get_tab_id;\nMixpanelLib.prototype['DEFAULT_API_ROUTES']                 = DEFAULT_API_ROUTES;\n\n// Exports intended only for testing\nMixpanelLib.prototype['__get_recorder']                     = MixpanelLib.prototype.__get_recorder;\n\n// MixpanelPersistence Exports\nMixpanelPersistence.prototype['properties']            = MixpanelPersistence.prototype.properties;\nMixpanelPersistence.prototype['update_search_keyword'] = MixpanelPersistence.prototype.update_search_keyword;\nMixpanelPersistence.prototype['update_referrer_info']  = MixpanelPersistence.prototype.update_referrer_info;\nMixpanelPersistence.prototype['get_cross_subdomain']   = MixpanelPersistence.prototype.get_cross_subdomain;\nMixpanelPersistence.prototype['clear']                 = MixpanelPersistence.prototype.clear;\n\n\nvar instances = {};\nvar extend_mp = function() {\n    // add all the sub mixpanel instances\n    _.each(instances, function(instance, name) {\n        if (name !== PRIMARY_INSTANCE_NAME) { mixpanel_master[name] = instance; }\n    });\n\n    // add private functions as _\n    mixpanel_master['_'] = _;\n};\n\nvar override_mp_init_func = function() {\n    // we override the snippets init function to handle the case where a\n    // user initializes the mixpanel library after the script loads & runs\n    mixpanel_master['init'] = function(token, config, name) {\n        if (name) {\n            // initialize a sub library\n            if (!mixpanel_master[name]) {\n                mixpanel_master[name] = instances[name] = create_mplib(token, config, name);\n                mixpanel_master[name]._loaded();\n            }\n            return mixpanel_master[name];\n        } else {\n            var instance = mixpanel_master;\n\n            if (instances[PRIMARY_INSTANCE_NAME]) {\n                // main mixpanel lib already initialized\n                instance = instances[PRIMARY_INSTANCE_NAME];\n            } else if (token) {\n                // intialize the main mixpanel lib\n                instance = create_mplib(token, config, PRIMARY_INSTANCE_NAME);\n                instance._loaded();\n                instances[PRIMARY_INSTANCE_NAME] = instance;\n            }\n\n            mixpanel_master = instance;\n            if (init_type === INIT_SNIPPET) {\n                win[PRIMARY_INSTANCE_NAME] = mixpanel_master;\n            }\n            extend_mp();\n        }\n    };\n};\n\nvar add_dom_loaded_handler = function() {\n    // Cross browser DOM Loaded support\n    function dom_loaded_handler() {\n        // function flag since we only want to execute this once\n        if (dom_loaded_handler.done) { return; }\n        dom_loaded_handler.done = true;\n\n        DOM_LOADED = true;\n        ENQUEUE_REQUESTS = false;\n\n        _.each(instances, function(inst) {\n            inst._dom_loaded();\n        });\n    }\n\n    function do_scroll_check() {\n        try {\n            document$1.documentElement.doScroll('left');\n        } catch(e) {\n            setTimeout(do_scroll_check, 1);\n            return;\n        }\n\n        dom_loaded_handler();\n    }\n\n    if (document$1.addEventListener) {\n        if (document$1.readyState === 'complete') {\n            // safari 4 can fire the DOMContentLoaded event before loading all\n            // external JS (including this file). you will see some copypasta\n            // on the internet that checks for 'complete' and 'loaded', but\n            // 'loaded' is an IE thing\n            dom_loaded_handler();\n        } else {\n            document$1.addEventListener('DOMContentLoaded', dom_loaded_handler, false);\n        }\n    } else if (document$1.attachEvent) {\n        // IE\n        document$1.attachEvent('onreadystatechange', dom_loaded_handler);\n\n        // check to make sure we arn't in a frame\n        var toplevel = false;\n        try {\n            toplevel = win.frameElement === null;\n        } catch(e) {\n            // noop\n        }\n\n        if (document$1.documentElement.doScroll && toplevel) {\n            do_scroll_check();\n        }\n    }\n\n    // fallback handler, always will work\n    _.register_event(win, 'load', dom_loaded_handler, true);\n};\n\nfunction init_as_module(bundle_loader) {\n    load_extra_bundle = bundle_loader;\n    init_type = INIT_MODULE;\n    mixpanel_master = new MixpanelLib();\n\n    override_mp_init_func();\n    mixpanel_master['init']();\n    add_dom_loaded_handler();\n\n    return mixpanel_master;\n}\n\n// For loading separate bundles asynchronously via script tag\n// so that we don't load them until they are needed at runtime.\n\n// For builds that have everything in one bundle, no extra work.\nfunction loadNoop (_src, onload) {\n    onload();\n}\n\n/* eslint camelcase: \"off\" */\n\nvar mixpanel = init_as_module(loadNoop);\n\nexport { mixpanel as default };\n","import mixpanel, { Config } from 'mixpanel-browser'\n\nimport { LoggerLinker } from '../logger'\n\ndeclare const process: {\n  env: {\n    NODE_ENV: string\n  }\n}\n\ntype Options = Partial<Config> &\n  Partial<{\n    datetimeFactory?: () => string\n  }>\n\nexport class MixpanelLinker implements LoggerLinker {\n  private _key!: string\n\n  private _onAfterInit?: (\n    mp: typeof mixpanel,\n    instance: MixpanelLinker,\n  ) => Promise<void>\n\n  private _options?: Options\n\n  constructor({\n    key,\n    onAfterInit,\n    options,\n  }: {\n    key: string\n    onAfterInit?: (\n      mp: typeof mixpanel,\n      instance: MixpanelLinker,\n    ) => Promise<void>\n    options?: Options\n  }) {\n    this._key = key\n    this._onAfterInit = onAfterInit\n    this._options = options\n  }\n\n  public async init() {\n    await mixpanel.init(this._key, this._options)\n\n    if (this._onAfterInit) {\n      await this._onAfterInit(mixpanel, this)\n    }\n  }\n\n  public async setUserID(userID: string) {\n    await mixpanel.identify(userID)\n  }\n\n  public async resetUser() {\n    await mixpanel.reset()\n  }\n\n  public async setUserProperty(property: string, value: any) {\n    await mixpanel.people.set(property, value)\n  }\n\n  public async setSuperProperty(property: string, value: any) {\n    await mixpanel.register({ [property]: value })\n  }\n\n  public async log(message: string, params: Record<string, any>) {\n    const datetime = this._options?.datetimeFactory?.()\n\n    await mixpanel.track(message, {\n      ...(datetime && { client_access_time: datetime }),\n      ...params,\n    })\n\n    if (\n      process.env.NODE_ENV !== 'production' ||\n      (window as any).__ZVZO_LOGGER_DEBUG__\n    ) {\n      console.log(`[MIXPANEL] ${message}:`, params)\n    }\n  }\n\n  public async flush() {}\n}\n","import { LoggerLinker } from '../logger'\n\nexport class CompositeLoggerLinker implements LoggerLinker {\n  private _linkers: LoggerLinker[]\n\n  constructor(linkers: LoggerLinker[]) {\n    this._linkers = linkers\n  }\n\n  public async init() {\n    await Promise.all(this._linkers.map((linker) => linker.init()))\n  }\n\n  public async log(message: string, params: Record<string, any>) {\n    await Promise.all(\n      this._linkers.map((linker) => linker.log(message, params))\n    )\n  }\n\n  public async flush() {\n    await Promise.all(this._linkers.map((linker) => linker.flush()))\n  }\n}\n","import { LoggerLinker } from '@zvzo/shared/logger'\n\nconst sendWebView = (message: string, paramerters: any) => {\n  ;(window as any).ReactNativeWebView?.postMessage?.(\n    JSON.stringify({\n      version: 'WEBVIEW_BRIDGE_1.0.0',\n      message: {\n        name: message,\n        payload: paramerters,\n      },\n    }),\n  )\n}\n\nconst logAmplitude = (eventName: string, params: Record<string, any>) => {\n  sendWebView('logAmplitude', {\n    eventName,\n    params: params || {},\n  })\n}\n\nexport class NativeAmplitudeLinker implements LoggerLinker {\n  private _isDev!: boolean\n\n  constructor({\n    isDev = false,\n  }: {\n    isDev?: boolean\n  } = {}) {\n    this._isDev = isDev\n  }\n\n  public async init() {}\n\n  public async log(message: string, params: Record<string, any>) {\n    logAmplitude(message, params)\n\n    if (this._isDev) {\n      console.log(`[AMPLITUDE] ${message}:`, params)\n    }\n  }\n\n  public async flush() {}\n}\n","import { isbot } from 'isbot'\n\nimport {\n  Logger,\n  AmplitudeLinker,\n  DevConsoleLinker,\n  NoneLinker,\n  MixpanelLinker,\n  CompositeLoggerLinker,\n} from '@zvzo/shared/logger'\nimport { NativeAmplitudeLinker } from './native'\n\nconst isBrowser = typeof window !== 'undefined'\n\nconst isApp = isBrowser && !!navigator.userAgent?.match(/ZVZO\\/(iOS|Android)/)\n\nexport const amplitudeLinker = new AmplitudeLinker({\n  key: isApp\n    ? import.meta.env.VITE_APP_APP_AMPLITUDE_KEY!\n    : import.meta.env.VITE_APP_AMPLITUDE_KEY!,\n  options: {\n    defaultTracking: false,\n    identityStorage: 'localStorage',\n  },\n})\n\nexport const nativeAmplitudeLinker = new NativeAmplitudeLinker()\n\nexport const mixpanelLinker = new MixpanelLinker({\n  key: import.meta.env.VITE_APP_MIXPANEL_API_KEY!,\n  options: {\n    save_referrer: true,\n    persistence: 'localStorage',\n    track_pageview: false,\n    debug: process.env.NODE_ENV !== 'production',\n    ignore_dnt: true,\n  },\n})\n\nexport const ensuredAmplitudeLinker =\n  isBrowser && !isbot(navigator.userAgent)\n    ? new CompositeLoggerLinker(\n        isApp ? [nativeAmplitudeLinker] : [mixpanelLinker],\n      )\n    : new NoneLinker()\n\nexport const logger = new Logger({\n  linkers: {\n    default: new DevConsoleLinker(),\n    interaction: ensuredAmplitudeLinker,\n  },\n})\n","export class DebugService {\n  public isDebug() {\n    return (\n      import.meta.env.MODE === 'development' ||\n      !!localStorage.getItem('zvzo-debug')\n    )\n  }\n\n  public toggleDebug() {\n    if (this.isDebug()) {\n      localStorage.removeItem('zvzo-debug')\n    } else {\n      localStorage.setItem('zvzo-debug', 'true')\n    }\n  }\n\n  public log(message: string) {\n    if (!this.isDebug()) {\n      return\n    }\n\n    console.log(`[ZVZO DEBUG] ${message}`)\n  }\n}\n\nexport const debugService = new DebugService()\n","const isObject = value => typeof value === 'object' && value !== null;\n\n// Customized for this use-case\nconst isObjectCustom = value =>\n\tisObject(value)\n\t&& !(value instanceof RegExp)\n\t&& !(value instanceof Error)\n\t&& !(value instanceof Date);\n\nexport const mapObjectSkip = Symbol('mapObjectSkip');\n\nconst _mapObject = (object, mapper, options, isSeen = new WeakMap()) => {\n\toptions = {\n\t\tdeep: false,\n\t\ttarget: {},\n\t\t...options,\n\t};\n\n\tif (isSeen.has(object)) {\n\t\treturn isSeen.get(object);\n\t}\n\n\tisSeen.set(object, options.target);\n\n\tconst {target} = options;\n\tdelete options.target;\n\n\tconst mapArray = array => array.map(element => isObjectCustom(element) ? _mapObject(element, mapper, options, isSeen) : element);\n\tif (Array.isArray(object)) {\n\t\treturn mapArray(object);\n\t}\n\n\tfor (const [key, value] of Object.entries(object)) {\n\t\tconst mapResult = mapper(key, value, object);\n\n\t\tif (mapResult === mapObjectSkip) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tlet [newKey, newValue, {shouldRecurse = true} = {}] = mapResult;\n\n\t\t// Drop `__proto__` keys.\n\t\tif (newKey === '__proto__') {\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (options.deep && shouldRecurse && isObjectCustom(newValue)) {\n\t\t\tnewValue = Array.isArray(newValue)\n\t\t\t\t? mapArray(newValue)\n\t\t\t\t: _mapObject(newValue, mapper, options, isSeen);\n\t\t}\n\n\t\ttarget[newKey] = newValue;\n\t}\n\n\treturn target;\n};\n\nexport default function mapObject(object, mapper, options) {\n\tif (!isObject(object)) {\n\t\tthrow new TypeError(`Expected an object, got \\`${object}\\` (${typeof object})`);\n\t}\n\n\treturn _mapObject(object, mapper, options);\n}\n","const UPPERCASE = /[\\p{Lu}]/u;\nconst LOWERCASE = /[\\p{Ll}]/u;\nconst LEADING_CAPITAL = /^[\\p{Lu}](?![\\p{Lu}])/gu;\nconst IDENTIFIER = /([\\p{Alpha}\\p{N}_]|$)/u;\nconst SEPARATORS = /[_.\\- ]+/;\n\nconst LEADING_SEPARATORS = new RegExp('^' + SEPARATORS.source);\nconst SEPARATORS_AND_IDENTIFIER = new RegExp(SEPARATORS.source + IDENTIFIER.source, 'gu');\nconst NUMBERS_AND_IDENTIFIER = new RegExp('\\\\d+' + IDENTIFIER.source, 'gu');\n\nconst preserveCamelCase = (string, toLowerCase, toUpperCase, preserveConsecutiveUppercase) => {\n\tlet isLastCharLower = false;\n\tlet isLastCharUpper = false;\n\tlet isLastLastCharUpper = false;\n\tlet isLastLastCharPreserved = false;\n\n\tfor (let index = 0; index < string.length; index++) {\n\t\tconst character = string[index];\n\t\tisLastLastCharPreserved = index > 2 ? string[index - 3] === '-' : true;\n\n\t\tif (isLastCharLower && UPPERCASE.test(character)) {\n\t\t\tstring = string.slice(0, index) + '-' + string.slice(index);\n\t\t\tisLastCharLower = false;\n\t\t\tisLastLastCharUpper = isLastCharUpper;\n\t\t\tisLastCharUpper = true;\n\t\t\tindex++;\n\t\t} else if (isLastCharUpper && isLastLastCharUpper && LOWERCASE.test(character) && (!isLastLastCharPreserved || preserveConsecutiveUppercase)) {\n\t\t\tstring = string.slice(0, index - 1) + '-' + string.slice(index - 1);\n\t\t\tisLastLastCharUpper = isLastCharUpper;\n\t\t\tisLastCharUpper = false;\n\t\t\tisLastCharLower = true;\n\t\t} else {\n\t\t\tisLastCharLower = toLowerCase(character) === character && toUpperCase(character) !== character;\n\t\t\tisLastLastCharUpper = isLastCharUpper;\n\t\t\tisLastCharUpper = toUpperCase(character) === character && toLowerCase(character) !== character;\n\t\t}\n\t}\n\n\treturn string;\n};\n\nconst preserveConsecutiveUppercase = (input, toLowerCase) => {\n\tLEADING_CAPITAL.lastIndex = 0;\n\n\treturn input.replaceAll(LEADING_CAPITAL, match => toLowerCase(match));\n};\n\nconst postProcess = (input, toUpperCase) => {\n\tSEPARATORS_AND_IDENTIFIER.lastIndex = 0;\n\tNUMBERS_AND_IDENTIFIER.lastIndex = 0;\n\n\treturn input\n\t\t.replaceAll(NUMBERS_AND_IDENTIFIER, (match, pattern, offset) => ['_', '-'].includes(input.charAt(offset + match.length)) ? match : toUpperCase(match))\n\t\t.replaceAll(SEPARATORS_AND_IDENTIFIER, (_, identifier) => toUpperCase(identifier));\n};\n\nexport default function camelCase(input, options) {\n\tif (!(typeof input === 'string' || Array.isArray(input))) {\n\t\tthrow new TypeError('Expected the input to be `string | string[]`');\n\t}\n\n\toptions = {\n\t\tpascalCase: false,\n\t\tpreserveConsecutiveUppercase: false,\n\t\t...options,\n\t};\n\n\tif (Array.isArray(input)) {\n\t\tinput = input.map(x => x.trim())\n\t\t\t.filter(x => x.length)\n\t\t\t.join('-');\n\t} else {\n\t\tinput = input.trim();\n\t}\n\n\tif (input.length === 0) {\n\t\treturn '';\n\t}\n\n\tconst toLowerCase = options.locale === false\n\t\t? string => string.toLowerCase()\n\t\t: string => string.toLocaleLowerCase(options.locale);\n\n\tconst toUpperCase = options.locale === false\n\t\t? string => string.toUpperCase()\n\t\t: string => string.toLocaleUpperCase(options.locale);\n\n\tif (input.length === 1) {\n\t\tif (SEPARATORS.test(input)) {\n\t\t\treturn '';\n\t\t}\n\n\t\treturn options.pascalCase ? toUpperCase(input) : toLowerCase(input);\n\t}\n\n\tconst hasUpperCase = input !== toLowerCase(input);\n\n\tif (hasUpperCase) {\n\t\tinput = preserveCamelCase(input, toLowerCase, toUpperCase, options.preserveConsecutiveUppercase);\n\t}\n\n\tinput = input.replace(LEADING_SEPARATORS, '');\n\tinput = options.preserveConsecutiveUppercase ? preserveConsecutiveUppercase(input, toLowerCase) : toLowerCase(input);\n\n\tif (options.pascalCase) {\n\t\tinput = toUpperCase(input.charAt(0)) + input.slice(1);\n\t}\n\n\treturn postProcess(input, toUpperCase);\n}\n","export default class QuickLRU extends Map {\n\tconstructor(options = {}) {\n\t\tsuper();\n\n\t\tif (!(options.maxSize && options.maxSize > 0)) {\n\t\t\tthrow new TypeError('`maxSize` must be a number greater than 0');\n\t\t}\n\n\t\tif (typeof options.maxAge === 'number' && options.maxAge === 0) {\n\t\t\tthrow new TypeError('`maxAge` must be a number greater than 0');\n\t\t}\n\n\t\t// TODO: Use private class fields when ESLint supports them.\n\t\tthis.maxSize = options.maxSize;\n\t\tthis.maxAge = options.maxAge || Number.POSITIVE_INFINITY;\n\t\tthis.onEviction = options.onEviction;\n\t\tthis.cache = new Map();\n\t\tthis.oldCache = new Map();\n\t\tthis._size = 0;\n\t}\n\n\t// TODO: Use private class methods when targeting Node.js 16.\n\t_emitEvictions(cache) {\n\t\tif (typeof this.onEviction !== 'function') {\n\t\t\treturn;\n\t\t}\n\n\t\tfor (const [key, item] of cache) {\n\t\t\tthis.onEviction(key, item.value);\n\t\t}\n\t}\n\n\t_deleteIfExpired(key, item) {\n\t\tif (typeof item.expiry === 'number' && item.expiry <= Date.now()) {\n\t\t\tif (typeof this.onEviction === 'function') {\n\t\t\t\tthis.onEviction(key, item.value);\n\t\t\t}\n\n\t\t\treturn this.delete(key);\n\t\t}\n\n\t\treturn false;\n\t}\n\n\t_getOrDeleteIfExpired(key, item) {\n\t\tconst deleted = this._deleteIfExpired(key, item);\n\t\tif (deleted === false) {\n\t\t\treturn item.value;\n\t\t}\n\t}\n\n\t_getItemValue(key, item) {\n\t\treturn item.expiry ? this._getOrDeleteIfExpired(key, item) : item.value;\n\t}\n\n\t_peek(key, cache) {\n\t\tconst item = cache.get(key);\n\n\t\treturn this._getItemValue(key, item);\n\t}\n\n\t_set(key, value) {\n\t\tthis.cache.set(key, value);\n\t\tthis._size++;\n\n\t\tif (this._size >= this.maxSize) {\n\t\t\tthis._size = 0;\n\t\t\tthis._emitEvictions(this.oldCache);\n\t\t\tthis.oldCache = this.cache;\n\t\t\tthis.cache = new Map();\n\t\t}\n\t}\n\n\t_moveToRecent(key, item) {\n\t\tthis.oldCache.delete(key);\n\t\tthis._set(key, item);\n\t}\n\n\t* _entriesAscending() {\n\t\tfor (const item of this.oldCache) {\n\t\t\tconst [key, value] = item;\n\t\t\tif (!this.cache.has(key)) {\n\t\t\t\tconst deleted = this._deleteIfExpired(key, value);\n\t\t\t\tif (deleted === false) {\n\t\t\t\t\tyield item;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tfor (const item of this.cache) {\n\t\t\tconst [key, value] = item;\n\t\t\tconst deleted = this._deleteIfExpired(key, value);\n\t\t\tif (deleted === false) {\n\t\t\t\tyield item;\n\t\t\t}\n\t\t}\n\t}\n\n\tget(key) {\n\t\tif (this.cache.has(key)) {\n\t\t\tconst item = this.cache.get(key);\n\n\t\t\treturn this._getItemValue(key, item);\n\t\t}\n\n\t\tif (this.oldCache.has(key)) {\n\t\t\tconst item = this.oldCache.get(key);\n\t\t\tif (this._deleteIfExpired(key, item) === false) {\n\t\t\t\tthis._moveToRecent(key, item);\n\t\t\t\treturn item.value;\n\t\t\t}\n\t\t}\n\t}\n\n\tset(key, value, {maxAge = this.maxAge} = {}) {\n\t\tconst expiry =\n\t\t\ttypeof maxAge === 'number' && maxAge !== Number.POSITIVE_INFINITY ?\n\t\t\t\tDate.now() + maxAge :\n\t\t\t\tundefined;\n\t\tif (this.cache.has(key)) {\n\t\t\tthis.cache.set(key, {\n\t\t\t\tvalue,\n\t\t\t\texpiry\n\t\t\t});\n\t\t} else {\n\t\t\tthis._set(key, {value, expiry});\n\t\t}\n\n\t\treturn this;\n\t}\n\n\thas(key) {\n\t\tif (this.cache.has(key)) {\n\t\t\treturn !this._deleteIfExpired(key, this.cache.get(key));\n\t\t}\n\n\t\tif (this.oldCache.has(key)) {\n\t\t\treturn !this._deleteIfExpired(key, this.oldCache.get(key));\n\t\t}\n\n\t\treturn false;\n\t}\n\n\tpeek(key) {\n\t\tif (this.cache.has(key)) {\n\t\t\treturn this._peek(key, this.cache);\n\t\t}\n\n\t\tif (this.oldCache.has(key)) {\n\t\t\treturn this._peek(key, this.oldCache);\n\t\t}\n\t}\n\n\tdelete(key) {\n\t\tconst deleted = this.cache.delete(key);\n\t\tif (deleted) {\n\t\t\tthis._size--;\n\t\t}\n\n\t\treturn this.oldCache.delete(key) || deleted;\n\t}\n\n\tclear() {\n\t\tthis.cache.clear();\n\t\tthis.oldCache.clear();\n\t\tthis._size = 0;\n\t}\n\n\tresize(newSize) {\n\t\tif (!(newSize && newSize > 0)) {\n\t\t\tthrow new TypeError('`maxSize` must be a number greater than 0');\n\t\t}\n\n\t\tconst items = [...this._entriesAscending()];\n\t\tconst removeCount = items.length - newSize;\n\t\tif (removeCount < 0) {\n\t\t\tthis.cache = new Map(items);\n\t\t\tthis.oldCache = new Map();\n\t\t\tthis._size = items.length;\n\t\t} else {\n\t\t\tif (removeCount > 0) {\n\t\t\t\tthis._emitEvictions(items.slice(0, removeCount));\n\t\t\t}\n\n\t\t\tthis.oldCache = new Map(items.slice(removeCount));\n\t\t\tthis.cache = new Map();\n\t\t\tthis._size = 0;\n\t\t}\n\n\t\tthis.maxSize = newSize;\n\t}\n\n\t* keys() {\n\t\tfor (const [key] of this) {\n\t\t\tyield key;\n\t\t}\n\t}\n\n\t* values() {\n\t\tfor (const [, value] of this) {\n\t\t\tyield value;\n\t\t}\n\t}\n\n\t* [Symbol.iterator]() {\n\t\tfor (const item of this.cache) {\n\t\t\tconst [key, value] = item;\n\t\t\tconst deleted = this._deleteIfExpired(key, value);\n\t\t\tif (deleted === false) {\n\t\t\t\tyield [key, value.value];\n\t\t\t}\n\t\t}\n\n\t\tfor (const item of this.oldCache) {\n\t\t\tconst [key, value] = item;\n\t\t\tif (!this.cache.has(key)) {\n\t\t\t\tconst deleted = this._deleteIfExpired(key, value);\n\t\t\t\tif (deleted === false) {\n\t\t\t\t\tyield [key, value.value];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t* entriesDescending() {\n\t\tlet items = [...this.cache];\n\t\tfor (let i = items.length - 1; i >= 0; --i) {\n\t\t\tconst item = items[i];\n\t\t\tconst [key, value] = item;\n\t\t\tconst deleted = this._deleteIfExpired(key, value);\n\t\t\tif (deleted === false) {\n\t\t\t\tyield [key, value.value];\n\t\t\t}\n\t\t}\n\n\t\titems = [...this.oldCache];\n\t\tfor (let i = items.length - 1; i >= 0; --i) {\n\t\t\tconst item = items[i];\n\t\t\tconst [key, value] = item;\n\t\t\tif (!this.cache.has(key)) {\n\t\t\t\tconst deleted = this._deleteIfExpired(key, value);\n\t\t\t\tif (deleted === false) {\n\t\t\t\t\tyield [key, value.value];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t* entriesAscending() {\n\t\tfor (const [key, value] of this._entriesAscending()) {\n\t\t\tyield [key, value.value];\n\t\t}\n\t}\n\n\tget size() {\n\t\tif (!this._size) {\n\t\t\treturn this.oldCache.size;\n\t\t}\n\n\t\tlet oldCacheSize = 0;\n\t\tfor (const key of this.oldCache.keys()) {\n\t\t\tif (!this.cache.has(key)) {\n\t\t\t\toldCacheSize++;\n\t\t\t}\n\t\t}\n\n\t\treturn Math.min(this._size + oldCacheSize, this.maxSize);\n\t}\n\n\tentries() {\n\t\treturn this.entriesAscending();\n\t}\n\n\tforEach(callbackFunction, thisArgument = this) {\n\t\tfor (const [key, value] of this.entriesAscending()) {\n\t\t\tcallbackFunction.call(thisArgument, value, key, this);\n\t\t}\n\t}\n\n\tget [Symbol.toStringTag]() {\n\t\treturn JSON.stringify([...this.entriesAscending()]);\n\t}\n}\n","import mapObject from 'map-obj';\nimport camelCase from 'camelcase';\nimport QuickLru from 'quick-lru';\n\nconst has = (array, key) => array.some(element => {\n\tif (typeof element === 'string') {\n\t\treturn element === key;\n\t}\n\n\telement.lastIndex = 0;\n\n\treturn element.test(key);\n});\n\nconst cache = new QuickLru({maxSize: 100_000});\n\n// Reproduces behavior from `map-obj`.\nconst isObject = value =>\n\ttypeof value === 'object'\n\t\t&& value !== null\n\t\t&& !(value instanceof RegExp)\n\t\t&& !(value instanceof Error)\n\t\t&& !(value instanceof Date);\n\nconst transform = (input, options = {}) => {\n\tif (!isObject(input)) {\n\t\treturn input;\n\t}\n\n\tconst {\n\t\texclude,\n\t\tpascalCase = false,\n\t\tstopPaths,\n\t\tdeep = false,\n\t\tpreserveConsecutiveUppercase = false,\n\t} = options;\n\n\tconst stopPathsSet = new Set(stopPaths);\n\n\tconst makeMapper = parentPath => (key, value) => {\n\t\tif (deep && isObject(value)) {\n\t\t\tconst path = parentPath === undefined ? key : `${parentPath}.${key}`;\n\n\t\t\tif (!stopPathsSet.has(path)) {\n\t\t\t\tvalue = mapObject(value, makeMapper(path));\n\t\t\t}\n\t\t}\n\n\t\tif (!(exclude && has(exclude, key))) {\n\t\t\tconst cacheKey = pascalCase ? `${key}_` : key;\n\n\t\t\tif (cache.has(cacheKey)) {\n\t\t\t\tkey = cache.get(cacheKey);\n\t\t\t} else {\n\t\t\t\tconst returnValue = camelCase(key, {pascalCase, locale: false, preserveConsecutiveUppercase});\n\n\t\t\t\tif (key.length < 100) { // Prevent abuse\n\t\t\t\t\tcache.set(cacheKey, returnValue);\n\t\t\t\t}\n\n\t\t\t\tkey = returnValue;\n\t\t\t}\n\t\t}\n\n\t\treturn [key, value];\n\t};\n\n\treturn mapObject(input, makeMapper(undefined));\n};\n\nexport default function camelcaseKeys(input, options) {\n\tif (Array.isArray(input)) {\n\t\treturn Object.keys(input).map(key => transform(input[key], options));\n\t}\n\n\treturn transform(input, options);\n}\n","export class ZVZOError extends Error {\n  constructor(message: string) {\n    super(message)\n\n    this.name = 'ZVZOError'\n  }\n}\n","import { HTTPStatusCode } from '../enum'\n\nimport { ZVZOError } from './zvzo-error'\n\nexport class ServerError extends ZVZOError {\n  public statusCode: HTTPStatusCode\n\n  public message: string\n\n  constructor({\n    message,\n    statusCode,\n  }: {\n    message: string\n    statusCode: HTTPStatusCode\n  }) {\n    super(message)\n\n    this.name = 'ServerError'\n    this.message = message\n    this.statusCode = statusCode\n  }\n}\n","export default(function e(t){function n(e,t,r){var a,o={};if(Array.isArray(e))return e.concat(t);for(a in e)o[r?a.toLowerCase():a]=e[a];for(a in t){var i=r?a.toLowerCase():a,u=t[a];o[i]=i in o&&\"object\"==typeof u?n(o[i],u,\"headers\"==i):u}return o}function r(e,r,a,o,i){var u=\"string\"!=typeof e?(r=e).url:e,c={config:r},s=n(t,r),f={};o=o||s.data,(s.transformRequest||[]).map(function(e){o=e(o,s.headers)||o}),s.auth&&(f.authorization=s.auth),o&&\"object\"==typeof o&&\"function\"!=typeof o.append&&\"function\"!=typeof o.text&&(o=JSON.stringify(o),f[\"content-type\"]=\"application/json\");try{f[s.xsrfHeaderName]=decodeURIComponent(document.cookie.match(RegExp(\"(^|; )\"+s.xsrfCookieName+\"=([^;]*)\"))[2])}catch(e){}return s.baseURL&&(u=u.replace(/^(?!.*\\/\\/)\\/?/,s.baseURL+\"/\")),s.params&&(u+=(~u.indexOf(\"?\")?\"&\":\"?\")+(s.paramsSerializer?s.paramsSerializer(s.params):new URLSearchParams(s.params))),(s.fetch||fetch)(u,{method:(a||s.method||\"get\").toUpperCase(),body:o,headers:n(s.headers,f,!0),credentials:s.withCredentials?\"include\":i}).then(function(e){for(var t in e)\"function\"!=typeof e[t]&&(c[t]=e[t]);return\"stream\"==s.responseType?(c.data=e.body,c):e[s.responseType||\"text\"]().then(function(e){c.data=e,c.data=JSON.parse(e)}).catch(Object).then(function(){return(s.validateStatus?s.validateStatus(e.status):e.ok)?c:Promise.reject(c)})})}return t=t||{},r.request=r,r.get=function(e,t){return r(e,t,\"get\")},r.delete=function(e,t){return r(e,t,\"delete\")},r.head=function(e,t){return r(e,t,\"head\")},r.options=function(e,t){return r(e,t,\"options\")},r.post=function(e,t,n){return r(e,n,\"post\",t)},r.put=function(e,t,n){return r(e,n,\"put\",t)},r.patch=function(e,t,n){return r(e,n,\"patch\",t)},r.all=Promise.all.bind(Promise),r.spread=function(e){return e.apply.bind(e,e)},r.CancelToken=\"function\"==typeof AbortController?AbortController:Object,r.defaults=t,r.create=e,r}());\n//# sourceMappingURL=redaxios.module.js.map\n","export enum HTTPStatusCode {\n  None = 0,\n  Ok = 200,\n  BadRequest = 400,\n  NotAuthorized = 401,\n  Forbidden = 403,\n  NotFound = 404,\n}\n","import redaxios from 'redaxios'\n\nimport { HTTPStatusCode } from '../enum'\nimport { ServerError } from '../errors'\n\nimport {\n  HTTPClient,\n  HTTPRequestData,\n  HTTPRequestMiddleware,\n  HTTPResponseMiddleware,\n} from './http-client'\n\nexport class RedaxiosHTTPClient implements HTTPClient {\n  private _instance: typeof redaxios\n\n  private _requestMiddlewares: Array<HTTPRequestMiddleware> = []\n\n  private _responseMiddlewares: Array<HTTPResponseMiddleware<any>> = []\n\n  constructor(config?: typeof redaxios.defaults) {\n    const instance = redaxios.create({\n      ...config,\n    })\n\n    this._instance = instance\n\n    this.responseMiddleware(async (responseOrError) => {\n      if (responseOrError instanceof Error) {\n        const error = responseOrError as any\n\n        console.log('erdaxios error', error)\n\n        return new ServerError({\n          message: error?.message,\n          statusCode: (error?.status as HTTPStatusCode) || HTTPStatusCode.None,\n        })\n      }\n\n      return responseOrError\n    })\n  }\n\n  private async mapMiddleware(middlewares: any[], params: any) {\n    return middlewares.reduce(async (acc, middleware) => {\n      const params = await acc\n\n      return middleware(params)\n    }, Promise.resolve(params))\n  }\n\n  async request<T = any>(p: HTTPRequestData) {\n    const { data: params, headers } = await this.mapMiddleware(\n      this._requestMiddlewares,\n      {\n        headers: {},\n        data: p,\n      }\n    )\n\n    const response = await this._instance<T>({\n      method: params.requestMethod,\n      url: params.resourceIdentifier,\n      params: params.params,\n      data: params.data,\n      headers,\n    }).catch(async (e) => {\n      const mappedError = await this.mapMiddleware(this._responseMiddlewares, e)\n\n      throw mappedError\n    })\n\n    const mappedResponse = await this.mapMiddleware(this._responseMiddlewares, {\n      statusCode: response.status as HTTPStatusCode,\n      data: response.data,\n    })\n\n    return mappedResponse as { statusCode: HTTPStatusCode; data: T }\n  }\n\n  requestMiddleware(middleware: HTTPRequestMiddleware) {\n    this._requestMiddlewares.push(middleware)\n\n    return this\n  }\n\n  responseMiddleware<T = any>(middleware: HTTPResponseMiddleware<T>) {\n    this._responseMiddlewares.push(middleware)\n\n    return this\n  }\n}\n","class TokenService {\n  private static _STORAGE_KEY = 'zvzo-user-jwt-token'\n\n  public async getToken() {\n    return localStorage.getItem(TokenService._STORAGE_KEY)\n  }\n\n  public async setToken(token: string) {\n    localStorage.setItem(TokenService._STORAGE_KEY, token)\n  }\n\n  public async clear() {\n    localStorage.removeItem(TokenService._STORAGE_KEY)\n  }\n}\n\nexport const tokenService = new TokenService()\n","export const detectShopLanguage = () => {\n  const methods = [\n    () => document.documentElement.lang,\n\n    () =>\n      document.querySelector('meta[name=\"language\"]')?.getAttribute('content'),\n\n    () => navigator.language,\n\n    () => {\n      const pathname = window.location.pathname\n      const langMatch = pathname.match(/\\/(ko|en|ja|zh)\\/|^(ko|en|ja|zh)\\//)\n      return langMatch ? langMatch[1] || langMatch[2] : null\n    },\n\n    () => {\n      const langSelector = document.querySelector('.language-selector')\n      return langSelector?.textContent?.trim()\n    },\n  ]\n\n  for (const method of methods) {\n    const detectedLang = method()\n    if (detectedLang) {\n      const normalizedLang = detectedLang.split('-')[0].toLowerCase()\n      if (['ko', 'en', 'ja', 'zh'].includes(normalizedLang)) {\n        return normalizedLang\n      }\n    }\n  }\n\n  return 'ko'\n}\n","import camelize from 'camelcase-keys'\n\nimport { RedaxiosHTTPClient } from '@zvzo/shared/http'\nimport { tokenService } from './token'\nimport { detectShopLanguage } from './lang'\n\nexport const httpClient = new RedaxiosHTTPClient({\n  baseURL: `${import.meta.env.VITE_APP_API_URI}`,\n})\n  .responseMiddleware(async (responseOrError) => {\n    if (responseOrError instanceof Error) {\n      if (process.env.NODE_ENV === 'development') {\n        console.log(`[RedaxiosHTTPClient] ${responseOrError}`)\n      }\n\n      return responseOrError\n    }\n\n    return {\n      statusCode: responseOrError.statusCode,\n      data:\n        typeof responseOrError.data === 'object'\n          ? camelize(responseOrError.data.data, {\n              deep: true,\n              stopPaths: ['cafe24_response_data'],\n            })\n          : responseOrError.data,\n    }\n  })\n  .requestMiddleware(async (params) => {\n    const lang = detectShopLanguage()\n\n    const token = await tokenService.getToken()\n\n    return {\n      ...params,\n      headers: {\n        ...params.headers,\n        ...(token && {\n          Authorization: `Bearer ${token}`,\n        }),\n        'Accept-Language': lang ?? 'ko',\n      },\n    }\n  })\n\nexport const cafe24HTTPClient = new RedaxiosHTTPClient({\n  baseURL: `${location.origin}`,\n})\n","import { debugService } from './debug'\nimport { httpClient } from './http'\nimport { tokenService } from './token'\n\nclass UserIDService {\n  private static _STORAGE_KEY = 'zvzo-uid'\n\n  private async getOTPByQuery() {\n    const query = window.location.search\n    const params = new URLSearchParams(query)\n\n    return params.get('zvzo_t') || null\n  }\n\n  private async signInByOTP(code: string) {\n    const response = await httpClient.request({\n      requestMethod: 'POST',\n      resourceIdentifier: '/cafe24/otp/login/',\n      data: {\n        t: code,\n      },\n    })\n\n    debugService.log(`OTP 로그인 응답: ${JSON.stringify(response.data)}`)\n\n    return {\n      token: response.data.token,\n      sessionUser: response.data.sessionUser,\n    }\n  }\n\n  public async getUserID() {\n    const hasToken = !!(await tokenService.getToken().catch(() => null))\n\n    const otp = await this.getOTPByQuery()\n    if (otp) {\n      try {\n        const res = await this.signInByOTP(otp)\n\n        await tokenService.setToken(res.token)\n\n        return res.sessionUser.code\n      } catch (e) {\n        debugService.log(`토큰을 사용한 로그인에 실패했어요. ${e}`)\n      }\n    }\n\n    if (hasToken) {\n      const response = await httpClient\n        .request({\n          requestMethod: 'GET',\n          resourceIdentifier: '/cafe24/session_user/',\n        })\n        .catch(() => null)\n\n      if (response?.data?.code) {\n        return response.data.code as string\n      }\n    }\n\n    return null\n  }\n}\n\nexport const userIDService = new UserIDService()\n","import { FunctionComponent } from 'preact'\n\nimport pRetry from 'p-retry'\nimport { suspend } from 'suspend-react'\n\nimport { amplitudeLinker, logger, mixpanelLinker } from '@/shared/logger'\n\nimport { SolutionService } from '../service/cafe24'\nimport { debugService } from '../service/debug'\nimport { userIDService } from '../service/user'\n\nconst Initializers: FunctionComponent<{\n  solutionService: SolutionService\n}> = ({ children, solutionService }) => {\n  suspend(async () => {\n    const userID = await userIDService.getUserID()\n    if (!userID) {\n      debugService.log('ZVZO 유저 아이디를 발견하지 못했어요')\n      // throw new Error('ZVZO 유저 아이디 못 찾음')\n      return;\n    }\n\n    debugService.log(\n      `uid(${userID}) 유저 아이디를 발견했어요. ZVZO 앱을 초기화할게요`,\n    )\n\n    await pRetry(\n      () =>\n        solutionService.initialize({\n          userID,\n        }),\n      {\n        retries: 2,\n      },\n    )\n\n    if (window?.CAFE24API?.MALL_ID) {\n      await logger.init()\n\n      try {\n        await amplitudeLinker\n          .setUserProperty('session user code', userID)\n          .catch(() => { })\n\n        await mixpanelLinker.setUserID(userID)\n        await mixpanelLinker.setUserProperty('zvzo user id', userID)\n        await mixpanelLinker.setUserProperty('building solution', 'cafe24')\n\n        await mixpanelLinker.setUserProperty(\n          'cafe24 mall id',\n          window.CAFE24API.MALL_ID,\n        )\n\n        debugService.log('앰플리튜드 SDK 가 초기화되었어요')\n      } catch {\n        debugService.log(\n          '앰플리튜드 SDK 초기화 중 오류가 발생했어요. ZVZO 앱만 초기화 할게요',\n        )\n      }\n    } else {\n      debugService.log(\n        '카페24 mall id 를 찾지 못해서 앰플리튜드를 초기화하지 않았어요',\n      )\n    }\n\n    debugService.log('ZVZO 앱이 초기화되었어요')\n  }, ['init'])\n\n  if (children) {\n    return <>{children}</>\n  }\n\n  return <></>\n}\n\nexport default Initializers\n","import { Component, ComponentChildren } from 'preact'\n\nclass ErrorBoundary extends Component<{\n  fallbackRender?: () => ComponentChildren\n  children?: ComponentChildren\n}> {\n  state = { error: null }\n\n  static getDerivedStateFromError(error: Error) {\n    return { error: error }\n  }\n\n  componentDidCatch(error: Error) {\n    this.setState({ error: error })\n\n    // Sentry.captureException(error, {\n    //   contexts: {\n    //     react: {\n    //       componentStack: errorInfo.componentStack,\n    //     },\n    //   },\n    // })\n  }\n\n  render() {\n    if (this.state.error) {\n      return this.props.fallbackRender?.()\n    }\n\n    return this.props.children\n  }\n}\n\nexport default ErrorBoundary\n","'use client'\n\nimport { useEffect, useState } from 'react'\n\nimport { Locale } from '../dictionaries/type'\n\nconst dictionaries = {\n  en: () => import('../dictionaries/en.json').then((module) => module.default),\n  ko: () => import('../dictionaries/ko.json').then((module) => module.default),\n}\n\ntype Props = {\n  lang: Locale\n  path?: string\n}\n\nconst useDictionary = ({ lang, path }: Props) => {\n  const url = new URL(window.location.href)\n  const pathname = (path ?? url.pathname)\n    .replace(`/${lang}`, '')\n    .split('/')\n    .filter(Boolean)\n\n  const [loading, setLoading] = useState(true)\n  const [dictionary, setDictionary] = useState<Record<string, object | string>>(\n    {},\n  )\n\n  useEffect(() => {\n    ;(async () => {\n      try {\n        let pageDictionary = (await dictionaries[lang]()) as Record<\n          string,\n          object | string\n        >\n\n        pathname.forEach((path) => {\n          if (\n            pageDictionary &&\n            typeof pageDictionary === 'object' &&\n            path in pageDictionary\n          ) {\n            pageDictionary = pageDictionary[\n              path as keyof typeof pageDictionary\n            ] as Record<string, string>\n          }\n        })\n\n        setDictionary(pageDictionary)\n      } catch (error) {\n        console.error(error)\n      } finally {\n        setLoading(false)\n      }\n    })()\n  }, [lang, pathname])\n\n  return {\n    isLoading: loading,\n    t: (keys: string, asElement: boolean = true): string | React.ReactNode => {\n      const keyList = keys.split('.')\n\n      let copyDictionary = dictionary\n\n      if (keyList.length > 1) {\n        for (const key of keyList) {\n          const content = copyDictionary[key]\n\n          if (typeof content === 'string') {\n            return asElement ? (\n              <span className=\"!whitespace-pre-line\">{content}</span>\n            ) : (\n              content\n            )\n          } else if (typeof content === 'object') {\n            copyDictionary = content as Record<string, string>\n          }\n        }\n      } else return dictionary[keys] as string\n    },\n  }\n}\n\nexport default useDictionary\n","import { Locale } from '@/shared/dictionaries/type'\nimport useDictionary from '@/shared/hooks/useDictionary'\nimport { DiscountInfo } from '@/vo'\nimport { useEffect, useState } from 'preact/hooks'\n\nexport const useProductViewedTime = ({ productID }: { productID: number }) => {\n  const storedValue = window.localStorage.getItem('zvzo-product-viewed-time')\n\n  const [viewedTime, setViewedTime] = useState<{\n    [productID: number]: number\n  }>(storedValue ? JSON.parse(storedValue) : {})\n\n  const viewProduct = () => {\n    const newViewedTime = {\n      ...viewedTime,\n      [productID]: Date.now(),\n    }\n\n    setViewedTime(newViewedTime)\n  }\n\n  useEffect(() => {\n    window.localStorage.setItem(\n      'zvzo-product-viewed-time',\n      JSON.stringify(viewedTime),\n    )\n  }, [viewedTime])\n\n  return [viewedTime[productID] || null, viewProduct] as const\n}\n\nconst DiscountInfoModal = ({\n  productID,\n  discountInfo,\n  alias = 'ZVZO',\n  lang,\n}: {\n  alias?: string\n  productID: number\n  discountInfo: DiscountInfo\n  lang: Locale\n}) => {\n  const { t } = useDictionary({\n    lang,\n    path: '',\n  })\n  const [viewedTime, toggleView] = useProductViewedTime({ productID })\n\n  const canModalOpen =\n    viewedTime === null || Date.now() - viewedTime > 1000 * 60 * 60\n\n  const handleClose = () => toggleView()\n\n  if (!canModalOpen) return <></>\n\n  return (\n    <div\n      style={{\n        position: 'fixed',\n        top: 0,\n        left: 0,\n        right: 0,\n        bottom: 0,\n        background: 'rgba(0, 0, 0, 0.4)',\n        zIndex: 2147483647,\n      }}\n    >\n      <div\n        style={{\n          position: 'absolute',\n          left: '20px',\n          right: '20px',\n          top: '50%',\n          transform: 'translateY(-50%)',\n          borderRadius: '8px',\n          background: 'white',\n        }}\n      >\n        <div\n          style={{\n            display: 'flex',\n            flexDirection: 'column',\n            alignItems: 'center',\n            padding: '32px 20px',\n            paddingBottom: '16px',\n          }}\n        >\n          <p\n            style={{\n              margin: 0,\n              padding: 0,\n              fontSize: '20px',\n              fontWeight: 700,\n              color: '#303033',\n              fontFamily: 'system-ui',\n              lineHeight: '140%',\n              marginBottom: '24px',\n              whiteSpace: 'nowrap',\n              letterSpacing: '-0.6px',\n            }}\n          >\n            {lang === 'ko'\n              ? `지금 '${alias}' 할인 포함 최대 ${Math.round(discountInfo.maxDiscountPercent * 100)}%`\n              : `Enjoy extra ${Math.round(discountInfo.maxDiscountPercent * 100)}% off!`}\n          </p>\n          {lang === 'ko' && (\n            <div\n              style={{\n                backgroundColor: '#F4F4F9',\n                padding: '16px',\n                width: '100%',\n                boxSizing: 'border-box',\n              }}\n            >\n              {discountInfo.items.map((item, IDX) => (\n                <div\n                  style={{\n                    display: 'flex',\n                    flexDirection: 'row',\n                    alignItems: 'center',\n                    ...(IDX !== 0 && {\n                      marginTop: '8px',\n                    }),\n                  }}\n                  key={item.content}\n                >\n                  <div style={{ flex: 1, overflow: 'hidden' }}>\n                    <p\n                      style={{\n                        margin: 0,\n                        padding: 0,\n                        fontSize: '15px',\n                        fontWeight: 400,\n                        color: '#303033',\n                        fontFamily: 'system-ui',\n                        lineHeight: '140%',\n                      }}\n                    >\n                      {item.content}\n                    </p>\n                  </div>\n                  <div style={{ flex: 1, overflow: 'hidden' }}>\n                    <p\n                      style={{\n                        margin: 0,\n                        padding: 0,\n                        fontSize: '15px',\n                        fontWeight: 500,\n                        color: '#FF4800',\n                        fontFamily: 'system-ui',\n                        lineHeight: '140%',\n                        display: 'flex',\n                        justifyContent: 'flex-end',\n                      }}\n                    >\n                      {item.discountPercent && (\n                        <>{Math.round(item.discountPercent * 100)}%</>\n                      )}\n                      {item.discountPrice && (\n                        <>\n                          {lang === 'ko'\n                            ? item.discountPrice.toLocaleString() + '원'\n                            : 'US$' +\n                              item.discountPrice.toFixed(2).toLocaleString()}\n                        </>\n                      )}\n                    </p>\n                  </div>\n                </div>\n              ))}\n            </div>\n          )}\n\n          <div\n            style={{\n              display: 'flex',\n              flexDirection: 'row',\n              alignItems: 'center',\n              justifyContent: 'center',\n              marginTop: '16px',\n            }}\n          >\n            <p\n              style={{\n                margin: 0,\n                padding: 0,\n                fontSize: '12px',\n                fontWeight: 500,\n                color: '#A4A4AF',\n                fontFamily: 'system-ui',\n                lineHeight: '140%',\n                marginRight: '8px',\n                marginTop: '2.5px',\n              }}\n            >\n              {lang === 'ko'\n                ? `${discountInfo.isNeedCoupon ? '쿠폰' : '할인'}`\n                : ''}\n              {t('discount-info-modal.with-discount')} {lang !== 'ko' && <br />}\n            </p>\n            <p\n              style={{\n                margin: 0,\n                padding: 0,\n                fontSize: '16px',\n                fontWeight: 700,\n                color: '#303033',\n                fontFamily: 'system-ui',\n                lineHeight: '140%',\n              }}\n            >\n              {lang === 'ko'\n                ? discountInfo.maxDiscountedPrice.toLocaleString() + '원'\n                : 'US$' +\n                  discountInfo.maxDiscountedPrice.toFixed(2).toLocaleString()}\n            </p>\n          </div>\n        </div>\n        <div style={{ width: '100%', height: '1px', background: '#ECECF1' }} />\n        <div style={{ padding: '12px 20px' }}>\n          <div\n            style={{\n              display: 'flex',\n              flexDirection: 'row',\n              justifyContent: 'center',\n              alignItems: 'center',\n              background: 'black',\n              height: 50,\n              cursor: 'pointer',\n              width: '100%',\n            }}\n            onClick={handleClose}\n          >\n            <p\n              style={{\n                margin: 0,\n                padding: 0,\n                fontSize: '16px',\n                fontWeight: 700,\n                lineHeight: '140%',\n                color: 'white',\n                fontFamily: 'system-ui',\n              }}\n            >\n              {t('discount-info-modal.confirm')}\n            </p>\n          </div>\n        </div>\n      </div>\n    </div>\n  )\n}\n\nexport default DiscountInfoModal\n","export default \"data:image/svg+xml,%3csvg%20viewBox='0%200%2050%2016'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20d='M42.3646%200C46.7711%200%2050%203.26691%2050%207.67345C50%2012.08%2046.8091%2015.3469%2042.4785%2015.3469C38.2619%2015.3469%2034.843%2011.7761%2034.843%207.40754C34.843%203.26691%2038.1859%200%2042.3646%200ZM42.4405%203.72276C40.3892%203.72276%2038.9077%205.35622%2038.9077%207.59748C38.9077%209.99068%2040.3512%2011.6621%2042.4405%2011.6621C44.6058%2011.6621%2046.1253%2010.0667%2046.1253%207.74943C46.1253%205.4322%2044.5678%203.72276%2042.4405%203.72276Z'%20fill='black'/%3e%3cpath%20d='M25.1892%200.645996H36.3954L30.0515%2011.3964H36.2435V14.8153H23.5937L30.1275%204.02687L24.1255%204.10285L25.1892%200.645996Z'%20fill='currentColor'/%3e%3cpath%20d='M11.052%200.645996H15.2307L18.3836%209.42108L21.3086%200.645996H25.3733L19.9031%2014.8153H16.5982L11.052%200.645996Z'%20fill='currentColor'/%3e%3cpath%20d='M1.59547%200.645996H12.8017L6.45786%2011.3964H12.6498V14.8153H0L6.53383%204.02687L0.531823%204.10285L1.59547%200.645996Z'%20fill='currentColor'/%3e%3c/svg%3e\"","export default \"data:image/svg+xml,%3csvg%20viewBox='0%200%2020%2020'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20fill-rule='evenodd'%20clip-rule='evenodd'%20d='M3.69526%203.69526C3.95561%203.43491%204.37772%203.43491%204.63807%203.69526L10%209.05719L15.3619%203.69526C15.6223%203.43491%2016.0444%203.43491%2016.3047%203.69526C16.5651%203.95561%2016.5651%204.37772%2016.3047%204.63807L10.9428%2010L16.3047%2015.3619C16.5651%2015.6223%2016.5651%2016.0444%2016.3047%2016.3047C16.0444%2016.5651%2015.6223%2016.5651%2015.3619%2016.3047L10%2010.9428L4.63807%2016.3047C4.37772%2016.5651%203.95561%2016.5651%203.69526%2016.3047C3.43491%2016.0444%203.43491%2015.6223%203.69526%2015.3619L9.05719%2010L3.69526%204.63807C3.43491%204.37772%203.43491%203.95561%203.69526%203.69526Z'%20fill='%23303033'/%3e%3c/svg%3e\"","\"use client\";\nimport { createContext } from 'react';\n\nconst LayoutGroupContext = createContext({});\n\nexport { LayoutGroupContext };\n","import { useRef } from 'react';\n\n/**\n * Creates a constant value over the lifecycle of a component.\n *\n * Even if `useMemo` is provided an empty array as its final argument, it doesn't offer\n * a guarantee that it won't re-run for performance reasons later on. By using `useConstant`\n * you can ensure that initialisers don't execute twice or more.\n */\nfunction useConstant(init) {\n    const ref = useRef(null);\n    if (ref.current === null) {\n        ref.current = init();\n    }\n    return ref.current;\n}\n\nexport { useConstant };\n","\"use client\";\nimport { createContext } from 'react';\n\n/**\n * @public\n */\nconst PresenceContext = createContext(null);\n\nexport { PresenceContext };\n","\"use client\";\nimport { createContext } from 'react';\n\n/**\n * @public\n */\nconst MotionConfigContext = createContext({\n    transformPagePoint: (p) => p,\n    isStatic: false,\n    reducedMotion: \"never\",\n});\n\nexport { MotionConfigContext };\n","\"use client\";\nimport { jsx } from 'react/jsx-runtime';\nimport * as React from 'react';\nimport { useId, useRef, useContext, useInsertionEffect } from 'react';\nimport { MotionConfigContext } from '../../context/MotionConfigContext.mjs';\n\n/**\n * Measurement functionality has to be within a separate component\n * to leverage snapshot lifecycle.\n */\nclass PopChildMeasure extends React.Component {\n    getSnapshotBeforeUpdate(prevProps) {\n        const element = this.props.childRef.current;\n        if (element && prevProps.isPresent && !this.props.isPresent) {\n            const size = this.props.sizeRef.current;\n            size.height = element.offsetHeight || 0;\n            size.width = element.offsetWidth || 0;\n            size.top = element.offsetTop;\n            size.left = element.offsetLeft;\n        }\n        return null;\n    }\n    /**\n     * Required with getSnapshotBeforeUpdate to stop React complaining.\n     */\n    componentDidUpdate() { }\n    render() {\n        return this.props.children;\n    }\n}\nfunction PopChild({ children, isPresent }) {\n    const id = useId();\n    const ref = useRef(null);\n    const size = useRef({\n        width: 0,\n        height: 0,\n        top: 0,\n        left: 0,\n    });\n    const { nonce } = useContext(MotionConfigContext);\n    /**\n     * We create and inject a style block so we can apply this explicit\n     * sizing in a non-destructive manner by just deleting the style block.\n     *\n     * We can't apply size via render as the measurement happens\n     * in getSnapshotBeforeUpdate (post-render), likewise if we apply the\n     * styles directly on the DOM node, we might be overwriting\n     * styles set via the style prop.\n     */\n    useInsertionEffect(() => {\n        const { width, height, top, left } = size.current;\n        if (isPresent || !ref.current || !width || !height)\n            return;\n        ref.current.dataset.motionPopId = id;\n        const style = document.createElement(\"style\");\n        if (nonce)\n            style.nonce = nonce;\n        document.head.appendChild(style);\n        if (style.sheet) {\n            style.sheet.insertRule(`\n          [data-motion-pop-id=\"${id}\"] {\n            position: absolute !important;\n            width: ${width}px !important;\n            height: ${height}px !important;\n            top: ${top}px !important;\n            left: ${left}px !important;\n          }\n        `);\n        }\n        return () => {\n            document.head.removeChild(style);\n        };\n    }, [isPresent]);\n    return (jsx(PopChildMeasure, { isPresent: isPresent, childRef: ref, sizeRef: size, children: React.cloneElement(children, { ref }) }));\n}\n\nexport { PopChild };\n","\"use client\";\nimport { jsx } from 'react/jsx-runtime';\nimport * as React from 'react';\nimport { useId, useCallback, useMemo } from 'react';\nimport { PresenceContext } from '../../context/PresenceContext.mjs';\nimport { useConstant } from '../../utils/use-constant.mjs';\nimport { PopChild } from './PopChild.mjs';\n\nconst PresenceChild = ({ children, initial, isPresent, onExitComplete, custom, presenceAffectsLayout, mode, }) => {\n    const presenceChildren = useConstant(newChildrenMap);\n    const id = useId();\n    const memoizedOnExitComplete = useCallback((childId) => {\n        presenceChildren.set(childId, true);\n        for (const isComplete of presenceChildren.values()) {\n            if (!isComplete)\n                return; // can stop searching when any is incomplete\n        }\n        onExitComplete && onExitComplete();\n    }, [presenceChildren, onExitComplete]);\n    const context = useMemo(() => ({\n        id,\n        initial,\n        isPresent,\n        custom,\n        onExitComplete: memoizedOnExitComplete,\n        register: (childId) => {\n            presenceChildren.set(childId, false);\n            return () => presenceChildren.delete(childId);\n        },\n    }), \n    /**\n     * If the presence of a child affects the layout of the components around it,\n     * we want to make a new context value to ensure they get re-rendered\n     * so they can detect that layout change.\n     */\n    presenceAffectsLayout\n        ? [Math.random(), memoizedOnExitComplete]\n        : [isPresent, memoizedOnExitComplete]);\n    useMemo(() => {\n        presenceChildren.forEach((_, key) => presenceChildren.set(key, false));\n    }, [isPresent]);\n    /**\n     * If there's no `motion` components to fire exit animations, we want to remove this\n     * component immediately.\n     */\n    React.useEffect(() => {\n        !isPresent &&\n            !presenceChildren.size &&\n            onExitComplete &&\n            onExitComplete();\n    }, [isPresent]);\n    if (mode === \"popLayout\") {\n        children = jsx(PopChild, { isPresent: isPresent, children: children });\n    }\n    return (jsx(PresenceContext.Provider, { value: context, children: children }));\n};\nfunction newChildrenMap() {\n    return new Map();\n}\n\nexport { PresenceChild };\n","import { useContext, useId, useEffect, useCallback } from 'react';\nimport { PresenceContext } from '../../context/PresenceContext.mjs';\n\n/**\n * When a component is the child of `AnimatePresence`, it can use `usePresence`\n * to access information about whether it's still present in the React tree.\n *\n * ```jsx\n * import { usePresence } from \"framer-motion\"\n *\n * export const Component = () => {\n *   const [isPresent, safeToRemove] = usePresence()\n *\n *   useEffect(() => {\n *     !isPresent && setTimeout(safeToRemove, 1000)\n *   }, [isPresent])\n *\n *   return <div />\n * }\n * ```\n *\n * If `isPresent` is `false`, it means that a component has been removed the tree, but\n * `AnimatePresence` won't really remove it until `safeToRemove` has been called.\n *\n * @public\n */\nfunction usePresence(subscribe = true) {\n    const context = useContext(PresenceContext);\n    if (context === null)\n        return [true, null];\n    const { isPresent, onExitComplete, register } = context;\n    // It's safe to call the following hooks conditionally (after an early return) because the context will always\n    // either be null or non-null for the lifespan of the component.\n    const id = useId();\n    useEffect(() => {\n        if (subscribe)\n            register(id);\n    }, [subscribe]);\n    const safeToRemove = useCallback(() => subscribe && onExitComplete && onExitComplete(id), [id, onExitComplete, subscribe]);\n    return !isPresent && onExitComplete ? [false, safeToRemove] : [true];\n}\n/**\n * Similar to `usePresence`, except `useIsPresent` simply returns whether or not the component is present.\n * There is no `safeToRemove` function.\n *\n * ```jsx\n * import { useIsPresent } from \"framer-motion\"\n *\n * export const Component = () => {\n *   const isPresent = useIsPresent()\n *\n *   useEffect(() => {\n *     !isPresent && console.log(\"I've been removed!\")\n *   }, [isPresent])\n *\n *   return <div />\n * }\n * ```\n *\n * @public\n */\nfunction useIsPresent() {\n    return isPresent(useContext(PresenceContext));\n}\nfunction isPresent(context) {\n    return context === null ? true : context.isPresent;\n}\n\nexport { isPresent, useIsPresent, usePresence };\n","import { Children, isValidElement } from 'react';\n\nconst getChildKey = (child) => child.key || \"\";\nfunction onlyElements(children) {\n    const filtered = [];\n    // We use forEach here instead of map as map mutates the component key by preprending `.$`\n    Children.forEach(children, (child) => {\n        if (isValidElement(child))\n            filtered.push(child);\n    });\n    return filtered;\n}\n\nexport { getChildKey, onlyElements };\n","const isBrowser = typeof window !== \"undefined\";\n\nexport { isBrowser };\n","import { useLayoutEffect, useEffect } from 'react';\nimport { isBrowser } from './is-browser.mjs';\n\nconst useIsomorphicLayoutEffect = isBrowser ? useLayoutEffect : useEffect;\n\nexport { useIsomorphicLayoutEffect };\n","\"use client\";\nimport { jsx, Fragment } from 'react/jsx-runtime';\nimport { useMemo, useRef, useState, useContext } from 'react';\nimport { LayoutGroupContext } from '../../context/LayoutGroupContext.mjs';\nimport { useConstant } from '../../utils/use-constant.mjs';\nimport { PresenceChild } from './PresenceChild.mjs';\nimport { usePresence } from './use-presence.mjs';\nimport { onlyElements, getChildKey } from './utils.mjs';\nimport { useIsomorphicLayoutEffect } from '../../utils/use-isomorphic-effect.mjs';\n\n/**\n * `AnimatePresence` enables the animation of components that have been removed from the tree.\n *\n * When adding/removing more than a single child, every child **must** be given a unique `key` prop.\n *\n * Any `motion` components that have an `exit` property defined will animate out when removed from\n * the tree.\n *\n * ```jsx\n * import { motion, AnimatePresence } from 'framer-motion'\n *\n * export const Items = ({ items }) => (\n *   <AnimatePresence>\n *     {items.map(item => (\n *       <motion.div\n *         key={item.id}\n *         initial={{ opacity: 0 }}\n *         animate={{ opacity: 1 }}\n *         exit={{ opacity: 0 }}\n *       />\n *     ))}\n *   </AnimatePresence>\n * )\n * ```\n *\n * You can sequence exit animations throughout a tree using variants.\n *\n * If a child contains multiple `motion` components with `exit` props, it will only unmount the child\n * once all `motion` components have finished animating out. Likewise, any components using\n * `usePresence` all need to call `safeToRemove`.\n *\n * @public\n */\nconst AnimatePresence = ({ children, custom, initial = true, onExitComplete, presenceAffectsLayout = true, mode = \"sync\", propagate = false, }) => {\n    const [isParentPresent, safeToRemove] = usePresence(propagate);\n    /**\n     * Filter any children that aren't ReactElements. We can only track components\n     * between renders with a props.key.\n     */\n    const presentChildren = useMemo(() => onlyElements(children), [children]);\n    /**\n     * Track the keys of the currently rendered children. This is used to\n     * determine which children are exiting.\n     */\n    const presentKeys = propagate && !isParentPresent ? [] : presentChildren.map(getChildKey);\n    /**\n     * If `initial={false}` we only want to pass this to components in the first render.\n     */\n    const isInitialRender = useRef(true);\n    /**\n     * A ref containing the currently present children. When all exit animations\n     * are complete, we use this to re-render the component with the latest children\n     * *committed* rather than the latest children *rendered*.\n     */\n    const pendingPresentChildren = useRef(presentChildren);\n    /**\n     * Track which exiting children have finished animating out.\n     */\n    const exitComplete = useConstant(() => new Map());\n    /**\n     * Save children to render as React state. To ensure this component is concurrent-safe,\n     * we check for exiting children via an effect.\n     */\n    const [diffedChildren, setDiffedChildren] = useState(presentChildren);\n    const [renderedChildren, setRenderedChildren] = useState(presentChildren);\n    useIsomorphicLayoutEffect(() => {\n        isInitialRender.current = false;\n        pendingPresentChildren.current = presentChildren;\n        /**\n         * Update complete status of exiting children.\n         */\n        for (let i = 0; i < renderedChildren.length; i++) {\n            const key = getChildKey(renderedChildren[i]);\n            if (!presentKeys.includes(key)) {\n                if (exitComplete.get(key) !== true) {\n                    exitComplete.set(key, false);\n                }\n            }\n            else {\n                exitComplete.delete(key);\n            }\n        }\n    }, [renderedChildren, presentKeys.length, presentKeys.join(\"-\")]);\n    const exitingChildren = [];\n    if (presentChildren !== diffedChildren) {\n        let nextChildren = [...presentChildren];\n        /**\n         * Loop through all the currently rendered components and decide which\n         * are exiting.\n         */\n        for (let i = 0; i < renderedChildren.length; i++) {\n            const child = renderedChildren[i];\n            const key = getChildKey(child);\n            if (!presentKeys.includes(key)) {\n                nextChildren.splice(i, 0, child);\n                exitingChildren.push(child);\n            }\n        }\n        /**\n         * If we're in \"wait\" mode, and we have exiting children, we want to\n         * only render these until they've all exited.\n         */\n        if (mode === \"wait\" && exitingChildren.length) {\n            nextChildren = exitingChildren;\n        }\n        setRenderedChildren(onlyElements(nextChildren));\n        setDiffedChildren(presentChildren);\n        /**\n         * Early return to ensure once we've set state with the latest diffed\n         * children, we can immediately re-render.\n         */\n        return;\n    }\n    if (process.env.NODE_ENV !== \"production\" &&\n        mode === \"wait\" &&\n        renderedChildren.length > 1) {\n        console.warn(`You're attempting to animate multiple children within AnimatePresence, but its mode is set to \"wait\". This will lead to odd visual behaviour.`);\n    }\n    /**\n     * If we've been provided a forceRender function by the LayoutGroupContext,\n     * we can use it to force a re-render amongst all surrounding components once\n     * all components have finished animating out.\n     */\n    const { forceRender } = useContext(LayoutGroupContext);\n    return (jsx(Fragment, { children: renderedChildren.map((child) => {\n            const key = getChildKey(child);\n            const isPresent = propagate && !isParentPresent\n                ? false\n                : presentChildren === renderedChildren ||\n                    presentKeys.includes(key);\n            const onExit = () => {\n                if (exitComplete.has(key)) {\n                    exitComplete.set(key, true);\n                }\n                else {\n                    return;\n                }\n                let isEveryExitComplete = true;\n                exitComplete.forEach((isExitComplete) => {\n                    if (!isExitComplete)\n                        isEveryExitComplete = false;\n                });\n                if (isEveryExitComplete) {\n                    forceRender === null || forceRender === void 0 ? void 0 : forceRender();\n                    setRenderedChildren(pendingPresentChildren.current);\n                    propagate && (safeToRemove === null || safeToRemove === void 0 ? void 0 : safeToRemove());\n                    onExitComplete && onExitComplete();\n                }\n            };\n            return (jsx(PresenceChild, { isPresent: isPresent, initial: !isInitialRender.current || initial\n                    ? undefined\n                    : false, custom: isPresent ? undefined : custom, presenceAffectsLayout: presenceAffectsLayout, mode: mode, onExitComplete: isPresent ? undefined : onExit, children: child }, key));\n        }) }));\n};\n\nexport { AnimatePresence };\n","/*#__NO_SIDE_EFFECTS__*/\nconst noop = (any) => any;\n\nexport { noop };\n","import { noop } from './noop.mjs';\n\nlet warning = noop;\nlet invariant = noop;\nif (process.env.NODE_ENV !== \"production\") {\n    warning = (check, message) => {\n        if (!check && typeof console !== \"undefined\") {\n            console.warn(message);\n        }\n    };\n    invariant = (check, message) => {\n        if (!check) {\n            throw new Error(message);\n        }\n    };\n}\n\nexport { invariant, warning };\n","/*#__NO_SIDE_EFFECTS__*/\nfunction memo(callback) {\n    let result;\n    return () => {\n        if (result === undefined)\n            result = callback();\n        return result;\n    };\n}\n\nexport { memo };\n","/*\n  Progress within given range\n\n  Given a lower limit and an upper limit, we return the progress\n  (expressed as a number 0-1) represented by the given value, and\n  limit that progress to within 0-1.\n\n  @param [number]: Lower limit\n  @param [number]: Upper limit\n  @param [number]: Value to find progress within given range\n  @return [number]: Progress of value within range as expressed 0-1\n*/\n/*#__NO_SIDE_EFFECTS__*/\nconst progress = (from, to, value) => {\n    const toFromDifference = to - from;\n    return toFromDifference === 0 ? 1 : (value - from) / toFromDifference;\n};\n\nexport { progress };\n","/**\n * Converts seconds to milliseconds\n *\n * @param seconds - Time in seconds.\n * @return milliseconds - Converted time in milliseconds.\n */\n/*#__NO_SIDE_EFFECTS__*/\nconst secondsToMilliseconds = (seconds) => seconds * 1000;\n/*#__NO_SIDE_EFFECTS__*/\nconst millisecondsToSeconds = (milliseconds) => milliseconds / 1000;\n\nexport { millisecondsToSeconds, secondsToMilliseconds };\n","const MotionGlobalConfig = {\n    skipAnimations: false,\n    useManualTiming: false,\n};\n\nexport { MotionGlobalConfig };\n","function createRenderStep(runNextFrame) {\n    /**\n     * We create and reuse two queues, one to queue jobs for the current frame\n     * and one for the next. We reuse to avoid triggering GC after x frames.\n     */\n    let thisFrame = new Set();\n    let nextFrame = new Set();\n    /**\n     * Track whether we're currently processing jobs in this step. This way\n     * we can decide whether to schedule new jobs for this frame or next.\n     */\n    let isProcessing = false;\n    let flushNextFrame = false;\n    /**\n     * A set of processes which were marked keepAlive when scheduled.\n     */\n    const toKeepAlive = new WeakSet();\n    let latestFrameData = {\n        delta: 0.0,\n        timestamp: 0.0,\n        isProcessing: false,\n    };\n    function triggerCallback(callback) {\n        if (toKeepAlive.has(callback)) {\n            step.schedule(callback);\n            runNextFrame();\n        }\n        callback(latestFrameData);\n    }\n    const step = {\n        /**\n         * Schedule a process to run on the next frame.\n         */\n        schedule: (callback, keepAlive = false, immediate = false) => {\n            const addToCurrentFrame = immediate && isProcessing;\n            const queue = addToCurrentFrame ? thisFrame : nextFrame;\n            if (keepAlive)\n                toKeepAlive.add(callback);\n            if (!queue.has(callback))\n                queue.add(callback);\n            return callback;\n        },\n        /**\n         * Cancel the provided callback from running on the next frame.\n         */\n        cancel: (callback) => {\n            nextFrame.delete(callback);\n            toKeepAlive.delete(callback);\n        },\n        /**\n         * Execute all schedule callbacks.\n         */\n        process: (frameData) => {\n            latestFrameData = frameData;\n            /**\n             * If we're already processing we've probably been triggered by a flushSync\n             * inside an existing process. Instead of executing, mark flushNextFrame\n             * as true and ensure we flush the following frame at the end of this one.\n             */\n            if (isProcessing) {\n                flushNextFrame = true;\n                return;\n            }\n            isProcessing = true;\n            [thisFrame, nextFrame] = [nextFrame, thisFrame];\n            // Execute this frame\n            thisFrame.forEach(triggerCallback);\n            // Clear the frame so no callbacks remain. This is to avoid\n            // memory leaks should this render step not run for a while.\n            thisFrame.clear();\n            isProcessing = false;\n            if (flushNextFrame) {\n                flushNextFrame = false;\n                step.process(frameData);\n            }\n        },\n    };\n    return step;\n}\n\nexport { createRenderStep };\n","import { MotionGlobalConfig } from '../utils/GlobalConfig.mjs';\nimport { createRenderStep } from './render-step.mjs';\n\nconst stepsOrder = [\n    \"read\", // Read\n    \"resolveKeyframes\", // Write/Read/Write/Read\n    \"update\", // Compute\n    \"preRender\", // Compute\n    \"render\", // Write\n    \"postRender\", // Compute\n];\nconst maxElapsed = 40;\nfunction createRenderBatcher(scheduleNextBatch, allowKeepAlive) {\n    let runNextFrame = false;\n    let useDefaultElapsed = true;\n    const state = {\n        delta: 0.0,\n        timestamp: 0.0,\n        isProcessing: false,\n    };\n    const flagRunNextFrame = () => (runNextFrame = true);\n    const steps = stepsOrder.reduce((acc, key) => {\n        acc[key] = createRenderStep(flagRunNextFrame);\n        return acc;\n    }, {});\n    const { read, resolveKeyframes, update, preRender, render, postRender } = steps;\n    const processBatch = () => {\n        const timestamp = MotionGlobalConfig.useManualTiming\n            ? state.timestamp\n            : performance.now();\n        runNextFrame = false;\n        state.delta = useDefaultElapsed\n            ? 1000 / 60\n            : Math.max(Math.min(timestamp - state.timestamp, maxElapsed), 1);\n        state.timestamp = timestamp;\n        state.isProcessing = true;\n        // Unrolled render loop for better per-frame performance\n        read.process(state);\n        resolveKeyframes.process(state);\n        update.process(state);\n        preRender.process(state);\n        render.process(state);\n        postRender.process(state);\n        state.isProcessing = false;\n        if (runNextFrame && allowKeepAlive) {\n            useDefaultElapsed = false;\n            scheduleNextBatch(processBatch);\n        }\n    };\n    const wake = () => {\n        runNextFrame = true;\n        useDefaultElapsed = true;\n        if (!state.isProcessing) {\n            scheduleNextBatch(processBatch);\n        }\n    };\n    const schedule = stepsOrder.reduce((acc, key) => {\n        const step = steps[key];\n        acc[key] = (process, keepAlive = false, immediate = false) => {\n            if (!runNextFrame)\n                wake();\n            return step.schedule(process, keepAlive, immediate);\n        };\n        return acc;\n    }, {});\n    const cancel = (process) => {\n        for (let i = 0; i < stepsOrder.length; i++) {\n            steps[stepsOrder[i]].cancel(process);\n        }\n    };\n    return { schedule, cancel, state, steps };\n}\n\nexport { createRenderBatcher, stepsOrder };\n","import { noop } from 'motion-utils';\nimport { createRenderBatcher } from './batcher.mjs';\n\nconst { schedule: frame, cancel: cancelFrame, state: frameData, steps: frameSteps, } = createRenderBatcher(typeof requestAnimationFrame !== \"undefined\" ? requestAnimationFrame : noop, true);\n\nexport { cancelFrame, frame, frameData, frameSteps };\n","\"use client\";\nimport { createContext } from 'react';\n\nconst LazyContext = createContext({ strict: false });\n\nexport { LazyContext };\n","const featureProps = {\n    animation: [\n        \"animate\",\n        \"variants\",\n        \"whileHover\",\n        \"whileTap\",\n        \"exit\",\n        \"whileInView\",\n        \"whileFocus\",\n        \"whileDrag\",\n    ],\n    exit: [\"exit\"],\n    drag: [\"drag\", \"dragControls\"],\n    focus: [\"whileFocus\"],\n    hover: [\"whileHover\", \"onHoverStart\", \"onHoverEnd\"],\n    tap: [\"whileTap\", \"onTap\", \"onTapStart\", \"onTapCancel\"],\n    pan: [\"onPan\", \"onPanStart\", \"onPanSessionStart\", \"onPanEnd\"],\n    inView: [\"whileInView\", \"onViewportEnter\", \"onViewportLeave\"],\n    layout: [\"layout\", \"layoutId\"],\n};\nconst featureDefinitions = {};\nfor (const key in featureProps) {\n    featureDefinitions[key] = {\n        isEnabled: (props) => featureProps[key].some((name) => !!props[name]),\n    };\n}\n\nexport { featureDefinitions };\n","import { featureDefinitions } from './definitions.mjs';\n\nfunction loadFeatures(features) {\n    for (const key in features) {\n        featureDefinitions[key] = {\n            ...featureDefinitions[key],\n            ...features[key],\n        };\n    }\n}\n\nexport { loadFeatures };\n","/**\n * A list of all valid MotionProps.\n *\n * @privateRemarks\n * This doesn't throw if a `MotionProp` name is missing - it should.\n */\nconst validMotionProps = new Set([\n    \"animate\",\n    \"exit\",\n    \"variants\",\n    \"initial\",\n    \"style\",\n    \"values\",\n    \"variants\",\n    \"transition\",\n    \"transformTemplate\",\n    \"custom\",\n    \"inherit\",\n    \"onBeforeLayoutMeasure\",\n    \"onAnimationStart\",\n    \"onAnimationComplete\",\n    \"onUpdate\",\n    \"onDragStart\",\n    \"onDrag\",\n    \"onDragEnd\",\n    \"onMeasureDragConstraints\",\n    \"onDirectionLock\",\n    \"onDragTransitionEnd\",\n    \"_dragX\",\n    \"_dragY\",\n    \"onHoverStart\",\n    \"onHoverEnd\",\n    \"onViewportEnter\",\n    \"onViewportLeave\",\n    \"globalTapTarget\",\n    \"ignoreStrict\",\n    \"viewport\",\n]);\n/**\n * Check whether a prop name is a valid `MotionProp` key.\n *\n * @param key - Name of the property to check\n * @returns `true` is key is a valid `MotionProp`.\n *\n * @public\n */\nfunction isValidMotionProp(key) {\n    return (key.startsWith(\"while\") ||\n        (key.startsWith(\"drag\") && key !== \"draggable\") ||\n        key.startsWith(\"layout\") ||\n        key.startsWith(\"onTap\") ||\n        key.startsWith(\"onPan\") ||\n        key.startsWith(\"onLayout\") ||\n        validMotionProps.has(key));\n}\n\nexport { isValidMotionProp };\n","import { isValidMotionProp } from '../../../motion/utils/valid-prop.mjs';\n\nlet shouldForward = (key) => !isValidMotionProp(key);\nfunction loadExternalIsValidProp(isValidProp) {\n    if (!isValidProp)\n        return;\n    // Explicitly filter our events\n    shouldForward = (key) => key.startsWith(\"on\") ? !isValidMotionProp(key) : isValidProp(key);\n}\n/**\n * Emotion and Styled Components both allow users to pass through arbitrary props to their components\n * to dynamically generate CSS. They both use the `@emotion/is-prop-valid` package to determine which\n * of these should be passed to the underlying DOM node.\n *\n * However, when styling a Motion component `styled(motion.div)`, both packages pass through *all* props\n * as it's seen as an arbitrary component rather than a DOM node. Motion only allows arbitrary props\n * passed through the `custom` prop so it doesn't *need* the payload or computational overhead of\n * `@emotion/is-prop-valid`, however to fix this problem we need to use it.\n *\n * By making it an optionalDependency we can offer this functionality only in the situations where it's\n * actually required.\n */\ntry {\n    /**\n     * We attempt to import this package but require won't be defined in esm environments, in that case\n     * isPropValid will have to be provided via `MotionContext`. In a 6.0.0 this should probably be removed\n     * in favour of explicit injection.\n     */\n    loadExternalIsValidProp(require(\"@emotion/is-prop-valid\").default);\n}\ncatch (_a) {\n    // We don't need to actually do anything here - the fallback is the existing `isPropValid`.\n}\nfunction filterProps(props, isDom, forwardMotionProps) {\n    const filteredProps = {};\n    for (const key in props) {\n        /**\n         * values is considered a valid prop by Emotion, so if it's present\n         * this will be rendered out to the DOM unless explicitly filtered.\n         *\n         * We check the type as it could be used with the `feColorMatrix`\n         * element, which we support.\n         */\n        if (key === \"values\" && typeof props.values === \"object\")\n            continue;\n        if (shouldForward(key) ||\n            (forwardMotionProps === true && isValidMotionProp(key)) ||\n            (!isDom && !isValidMotionProp(key)) ||\n            // If trying to use native HTML drag events, forward drag listeners\n            (props[\"draggable\"] &&\n                key.startsWith(\"onDrag\"))) {\n            filteredProps[key] =\n                props[key];\n        }\n    }\n    return filteredProps;\n}\n\nexport { filterProps, loadExternalIsValidProp };\n","import { warnOnce } from '../../utils/warn-once.mjs';\n\nfunction createDOMMotionComponentProxy(componentFactory) {\n    if (typeof Proxy === \"undefined\") {\n        return componentFactory;\n    }\n    /**\n     * A cache of generated `motion` components, e.g `motion.div`, `motion.input` etc.\n     * Rather than generating them anew every render.\n     */\n    const componentCache = new Map();\n    const deprecatedFactoryFunction = (...args) => {\n        if (process.env.NODE_ENV !== \"production\") {\n            warnOnce(false, \"motion() is deprecated. Use motion.create() instead.\");\n        }\n        return componentFactory(...args);\n    };\n    return new Proxy(deprecatedFactoryFunction, {\n        /**\n         * Called when `motion` is referenced with a prop: `motion.div`, `motion.input` etc.\n         * The prop name is passed through as `key` and we can use that to generate a `motion`\n         * DOM component with that name.\n         */\n        get: (_target, key) => {\n            if (key === \"create\")\n                return componentFactory;\n            /**\n             * If this element doesn't exist in the component cache, create it and cache.\n             */\n            if (!componentCache.has(key)) {\n                componentCache.set(key, componentFactory(key));\n            }\n            return componentCache.get(key);\n        },\n    });\n}\n\nexport { createDOMMotionComponentProxy };\n","\"use client\";\nimport { createContext } from 'react';\n\nconst MotionContext = createContext({});\n\nexport { MotionContext };\n","/**\n * Decides if the supplied variable is variant label\n */\nfunction isVariantLabel(v) {\n    return typeof v === \"string\" || Array.isArray(v);\n}\n\nexport { isVariantLabel };\n","function isAnimationControls(v) {\n    return (v !== null &&\n        typeof v === \"object\" &&\n        typeof v.start === \"function\");\n}\n\nexport { isAnimationControls };\n","const variantPriorityOrder = [\n    \"animate\",\n    \"whileInView\",\n    \"whileFocus\",\n    \"whileHover\",\n    \"whileTap\",\n    \"whileDrag\",\n    \"exit\",\n];\nconst variantProps = [\"initial\", ...variantPriorityOrder];\n\nexport { variantPriorityOrder, variantProps };\n","import { isAnimationControls } from '../../animation/utils/is-animation-controls.mjs';\nimport { isVariantLabel } from './is-variant-label.mjs';\nimport { variantProps } from './variant-props.mjs';\n\nfunction isControllingVariants(props) {\n    return (isAnimationControls(props.animate) ||\n        variantProps.some((name) => isVariantLabel(props[name])));\n}\nfunction isVariantNode(props) {\n    return Boolean(isControllingVariants(props) || props.variants);\n}\n\nexport { isControllingVariants, isVariantNode };\n","import { isVariantLabel } from '../../render/utils/is-variant-label.mjs';\nimport { isControllingVariants } from '../../render/utils/is-controlling-variants.mjs';\n\nfunction getCurrentTreeVariants(props, context) {\n    if (isControllingVariants(props)) {\n        const { initial, animate } = props;\n        return {\n            initial: initial === false || isVariantLabel(initial)\n                ? initial\n                : undefined,\n            animate: isVariantLabel(animate) ? animate : undefined,\n        };\n    }\n    return props.inherit !== false ? context : {};\n}\n\nexport { getCurrentTreeVariants };\n","import { useContext, useMemo } from 'react';\nimport { MotionContext } from './index.mjs';\nimport { getCurrentTreeVariants } from './utils.mjs';\n\nfunction useCreateMotionContext(props) {\n    const { initial, animate } = getCurrentTreeVariants(props, useContext(MotionContext));\n    return useMemo(() => ({ initial, animate }), [variantLabelsAsDependency(initial), variantLabelsAsDependency(animate)]);\n}\nfunction variantLabelsAsDependency(prop) {\n    return Array.isArray(prop) ? prop.join(\" \") : prop;\n}\n\nexport { useCreateMotionContext };\n","const motionComponentSymbol = Symbol.for(\"motionComponentSymbol\");\n\nexport { motionComponentSymbol };\n","function isRefObject(ref) {\n    return (ref &&\n        typeof ref === \"object\" &&\n        Object.prototype.hasOwnProperty.call(ref, \"current\"));\n}\n\nexport { isRefObject };\n","import { useCallback } from 'react';\nimport { isRefObject } from '../../utils/is-ref-object.mjs';\n\n/**\n * Creates a ref function that, when called, hydrates the provided\n * external ref and VisualElement.\n */\nfunction useMotionRef(visualState, visualElement, externalRef) {\n    return useCallback((instance) => {\n        if (instance) {\n            visualState.onMount && visualState.onMount(instance);\n        }\n        if (visualElement) {\n            if (instance) {\n                visualElement.mount(instance);\n            }\n            else {\n                visualElement.unmount();\n            }\n        }\n        if (externalRef) {\n            if (typeof externalRef === \"function\") {\n                externalRef(instance);\n            }\n            else if (isRefObject(externalRef)) {\n                externalRef.current = instance;\n            }\n        }\n    }, \n    /**\n     * Only pass a new ref callback to React if we've received a visual element\n     * factory. Otherwise we'll be mounting/remounting every time externalRef\n     * or other dependencies change.\n     */\n    [visualElement]);\n}\n\nexport { useMotionRef };\n","/**\n * Convert camelCase to dash-case properties.\n */\nconst camelToDash = (str) => str.replace(/([a-z])([A-Z])/gu, \"$1-$2\").toLowerCase();\n\nexport { camelToDash };\n","import { camelToDash } from '../../render/dom/utils/camel-to-dash.mjs';\n\nconst optimizedAppearDataId = \"framerAppearId\";\nconst optimizedAppearDataAttribute = \"data-\" + camelToDash(optimizedAppearDataId);\n\nexport { optimizedAppearDataAttribute, optimizedAppearDataId };\n","import { createRenderBatcher } from './batcher.mjs';\n\nconst { schedule: microtask, cancel: cancelMicrotask } = createRenderBatcher(queueMicrotask, false);\n\nexport { cancelMicrotask, microtask };\n","\"use client\";\nimport { createContext } from 'react';\n\n/**\n * Internal, exported only for usage in Framer\n */\nconst SwitchLayoutGroupContext = createContext({});\n\nexport { SwitchLayoutGroupContext };\n","import { useContext, useRef, useInsertionEffect, useEffect } from 'react';\nimport { PresenceContext } from '../../context/PresenceContext.mjs';\nimport { MotionContext } from '../../context/MotionContext/index.mjs';\nimport { useIsomorphicLayoutEffect } from '../../utils/use-isomorphic-effect.mjs';\nimport { LazyContext } from '../../context/LazyContext.mjs';\nimport { MotionConfigContext } from '../../context/MotionConfigContext.mjs';\nimport { optimizedAppearDataAttribute } from '../../animation/optimized-appear/data-id.mjs';\nimport { microtask } from '../../frameloop/microtask.mjs';\nimport { isRefObject } from '../../utils/is-ref-object.mjs';\nimport { SwitchLayoutGroupContext } from '../../context/SwitchLayoutGroupContext.mjs';\n\nfunction useVisualElement(Component, visualState, props, createVisualElement, ProjectionNodeConstructor) {\n    var _a, _b;\n    const { visualElement: parent } = useContext(MotionContext);\n    const lazyContext = useContext(LazyContext);\n    const presenceContext = useContext(PresenceContext);\n    const reducedMotionConfig = useContext(MotionConfigContext).reducedMotion;\n    const visualElementRef = useRef(null);\n    /**\n     * If we haven't preloaded a renderer, check to see if we have one lazy-loaded\n     */\n    createVisualElement = createVisualElement || lazyContext.renderer;\n    if (!visualElementRef.current && createVisualElement) {\n        visualElementRef.current = createVisualElement(Component, {\n            visualState,\n            parent,\n            props,\n            presenceContext,\n            blockInitialAnimation: presenceContext\n                ? presenceContext.initial === false\n                : false,\n            reducedMotionConfig,\n        });\n    }\n    const visualElement = visualElementRef.current;\n    /**\n     * Load Motion gesture and animation features. These are rendered as renderless\n     * components so each feature can optionally make use of React lifecycle methods.\n     */\n    const initialLayoutGroupConfig = useContext(SwitchLayoutGroupContext);\n    if (visualElement &&\n        !visualElement.projection &&\n        ProjectionNodeConstructor &&\n        (visualElement.type === \"html\" || visualElement.type === \"svg\")) {\n        createProjectionNode(visualElementRef.current, props, ProjectionNodeConstructor, initialLayoutGroupConfig);\n    }\n    const isMounted = useRef(false);\n    useInsertionEffect(() => {\n        /**\n         * Check the component has already mounted before calling\n         * `update` unnecessarily. This ensures we skip the initial update.\n         */\n        if (visualElement && isMounted.current) {\n            visualElement.update(props, presenceContext);\n        }\n    });\n    /**\n     * Cache this value as we want to know whether HandoffAppearAnimations\n     * was present on initial render - it will be deleted after this.\n     */\n    const optimisedAppearId = props[optimizedAppearDataAttribute];\n    const wantsHandoff = useRef(Boolean(optimisedAppearId) &&\n        !((_a = window.MotionHandoffIsComplete) === null || _a === void 0 ? void 0 : _a.call(window, optimisedAppearId)) &&\n        ((_b = window.MotionHasOptimisedAnimation) === null || _b === void 0 ? void 0 : _b.call(window, optimisedAppearId)));\n    useIsomorphicLayoutEffect(() => {\n        if (!visualElement)\n            return;\n        isMounted.current = true;\n        window.MotionIsMounted = true;\n        visualElement.updateFeatures();\n        microtask.render(visualElement.render);\n        /**\n         * Ideally this function would always run in a useEffect.\n         *\n         * However, if we have optimised appear animations to handoff from,\n         * it needs to happen synchronously to ensure there's no flash of\n         * incorrect styles in the event of a hydration error.\n         *\n         * So if we detect a situtation where optimised appear animations\n         * are running, we use useLayoutEffect to trigger animations.\n         */\n        if (wantsHandoff.current && visualElement.animationState) {\n            visualElement.animationState.animateChanges();\n        }\n    });\n    useEffect(() => {\n        if (!visualElement)\n            return;\n        if (!wantsHandoff.current && visualElement.animationState) {\n            visualElement.animationState.animateChanges();\n        }\n        if (wantsHandoff.current) {\n            // This ensures all future calls to animateChanges() in this component will run in useEffect\n            queueMicrotask(() => {\n                var _a;\n                (_a = window.MotionHandoffMarkAsComplete) === null || _a === void 0 ? void 0 : _a.call(window, optimisedAppearId);\n            });\n            wantsHandoff.current = false;\n        }\n    });\n    return visualElement;\n}\nfunction createProjectionNode(visualElement, props, ProjectionNodeConstructor, initialPromotionConfig) {\n    const { layoutId, layout, drag, dragConstraints, layoutScroll, layoutRoot, } = props;\n    visualElement.projection = new ProjectionNodeConstructor(visualElement.latestValues, props[\"data-framer-portal-id\"]\n        ? undefined\n        : getClosestProjectingNode(visualElement.parent));\n    visualElement.projection.setOptions({\n        layoutId,\n        layout,\n        alwaysMeasureLayout: Boolean(drag) || (dragConstraints && isRefObject(dragConstraints)),\n        visualElement,\n        /**\n         * TODO: Update options in an effect. This could be tricky as it'll be too late\n         * to update by the time layout animations run.\n         * We also need to fix this safeToRemove by linking it up to the one returned by usePresence,\n         * ensuring it gets called if there's no potential layout animations.\n         *\n         */\n        animationType: typeof layout === \"string\" ? layout : \"both\",\n        initialPromotionConfig,\n        layoutScroll,\n        layoutRoot,\n    });\n}\nfunction getClosestProjectingNode(visualElement) {\n    if (!visualElement)\n        return undefined;\n    return visualElement.options.allowProjection !== false\n        ? visualElement.projection\n        : getClosestProjectingNode(visualElement.parent);\n}\n\nexport { useVisualElement };\n","\"use client\";\nimport { jsxs, jsx } from 'react/jsx-runtime';\nimport { warning, invariant } from 'motion-utils';\nimport { forwardRef, useContext } from 'react';\nimport { LayoutGroupContext } from '../context/LayoutGroupContext.mjs';\nimport { LazyContext } from '../context/LazyContext.mjs';\nimport { MotionConfigContext } from '../context/MotionConfigContext.mjs';\nimport { MotionContext } from '../context/MotionContext/index.mjs';\nimport { useCreateMotionContext } from '../context/MotionContext/create.mjs';\nimport { isBrowser } from '../utils/is-browser.mjs';\nimport { featureDefinitions } from './features/definitions.mjs';\nimport { loadFeatures } from './features/load-features.mjs';\nimport { motionComponentSymbol } from './utils/symbol.mjs';\nimport { useMotionRef } from './utils/use-motion-ref.mjs';\nimport { useVisualElement } from './utils/use-visual-element.mjs';\n\n/**\n * Create a `motion` component.\n *\n * This function accepts a Component argument, which can be either a string (ie \"div\"\n * for `motion.div`), or an actual React component.\n *\n * Alongside this is a config option which provides a way of rendering the provided\n * component \"offline\", or outside the React render cycle.\n */\nfunction createRendererMotionComponent({ preloadedFeatures, createVisualElement, useRender, useVisualState, Component, }) {\n    var _a, _b;\n    preloadedFeatures && loadFeatures(preloadedFeatures);\n    function MotionComponent(props, externalRef) {\n        /**\n         * If we need to measure the element we load this functionality in a\n         * separate class component in order to gain access to getSnapshotBeforeUpdate.\n         */\n        let MeasureLayout;\n        const configAndProps = {\n            ...useContext(MotionConfigContext),\n            ...props,\n            layoutId: useLayoutId(props),\n        };\n        const { isStatic } = configAndProps;\n        const context = useCreateMotionContext(props);\n        const visualState = useVisualState(props, isStatic);\n        if (!isStatic && isBrowser) {\n            useStrictMode(configAndProps, preloadedFeatures);\n            const layoutProjection = getProjectionFunctionality(configAndProps);\n            MeasureLayout = layoutProjection.MeasureLayout;\n            /**\n             * Create a VisualElement for this component. A VisualElement provides a common\n             * interface to renderer-specific APIs (ie DOM/Three.js etc) as well as\n             * providing a way of rendering to these APIs outside of the React render loop\n             * for more performant animations and interactions\n             */\n            context.visualElement = useVisualElement(Component, visualState, configAndProps, createVisualElement, layoutProjection.ProjectionNode);\n        }\n        /**\n         * The mount order and hierarchy is specific to ensure our element ref\n         * is hydrated by the time features fire their effects.\n         */\n        return (jsxs(MotionContext.Provider, { value: context, children: [MeasureLayout && context.visualElement ? (jsx(MeasureLayout, { visualElement: context.visualElement, ...configAndProps })) : null, useRender(Component, props, useMotionRef(visualState, context.visualElement, externalRef), visualState, isStatic, context.visualElement)] }));\n    }\n    MotionComponent.displayName = `motion.${typeof Component === \"string\"\n        ? Component\n        : `create(${(_b = (_a = Component.displayName) !== null && _a !== void 0 ? _a : Component.name) !== null && _b !== void 0 ? _b : \"\"})`}`;\n    const ForwardRefMotionComponent = forwardRef(MotionComponent);\n    ForwardRefMotionComponent[motionComponentSymbol] = Component;\n    return ForwardRefMotionComponent;\n}\nfunction useLayoutId({ layoutId }) {\n    const layoutGroupId = useContext(LayoutGroupContext).id;\n    return layoutGroupId && layoutId !== undefined\n        ? layoutGroupId + \"-\" + layoutId\n        : layoutId;\n}\nfunction useStrictMode(configAndProps, preloadedFeatures) {\n    const isStrict = useContext(LazyContext).strict;\n    /**\n     * If we're in development mode, check to make sure we're not rendering a motion component\n     * as a child of LazyMotion, as this will break the file-size benefits of using it.\n     */\n    if (process.env.NODE_ENV !== \"production\" &&\n        preloadedFeatures &&\n        isStrict) {\n        const strictMessage = \"You have rendered a `motion` component within a `LazyMotion` component. This will break tree shaking. Import and render a `m` component instead.\";\n        configAndProps.ignoreStrict\n            ? warning(false, strictMessage)\n            : invariant(false, strictMessage);\n    }\n}\nfunction getProjectionFunctionality(props) {\n    const { drag, layout } = featureDefinitions;\n    if (!drag && !layout)\n        return {};\n    const combined = { ...drag, ...layout };\n    return {\n        MeasureLayout: (drag === null || drag === void 0 ? void 0 : drag.isEnabled(props)) || (layout === null || layout === void 0 ? void 0 : layout.isEnabled(props))\n            ? combined.MeasureLayout\n            : undefined,\n        ProjectionNode: combined.ProjectionNode,\n    };\n}\n\nexport { createRendererMotionComponent };\n","/**\n * We keep these listed separately as we use the lowercase tag names as part\n * of the runtime bundle to detect SVG components\n */\nconst lowercaseSVGElements = [\n    \"animate\",\n    \"circle\",\n    \"defs\",\n    \"desc\",\n    \"ellipse\",\n    \"g\",\n    \"image\",\n    \"line\",\n    \"filter\",\n    \"marker\",\n    \"mask\",\n    \"metadata\",\n    \"path\",\n    \"pattern\",\n    \"polygon\",\n    \"polyline\",\n    \"rect\",\n    \"stop\",\n    \"switch\",\n    \"symbol\",\n    \"svg\",\n    \"text\",\n    \"tspan\",\n    \"use\",\n    \"view\",\n];\n\nexport { lowercaseSVGElements };\n","import { lowercaseSVGElements } from '../../svg/lowercase-elements.mjs';\n\nfunction isSVGComponent(Component) {\n    if (\n    /**\n     * If it's not a string, it's a custom React component. Currently we only support\n     * HTML custom React components.\n     */\n    typeof Component !== \"string\" ||\n        /**\n         * If it contains a dash, the element is a custom HTML webcomponent.\n         */\n        Component.includes(\"-\")) {\n        return false;\n    }\n    else if (\n    /**\n     * If it's in our list of lowercase SVG tags, it's an SVG component\n     */\n    lowercaseSVGElements.indexOf(Component) > -1 ||\n        /**\n         * If it contains a capital letter, it's an SVG component\n         */\n        /[A-Z]/u.test(Component)) {\n        return true;\n    }\n    return false;\n}\n\nexport { isSVGComponent };\n","function getValueState(visualElement) {\n    const state = [{}, {}];\n    visualElement === null || visualElement === void 0 ? void 0 : visualElement.values.forEach((value, key) => {\n        state[0][key] = value.get();\n        state[1][key] = value.getVelocity();\n    });\n    return state;\n}\nfunction resolveVariantFromProps(props, definition, custom, visualElement) {\n    /**\n     * If the variant definition is a function, resolve.\n     */\n    if (typeof definition === \"function\") {\n        const [current, velocity] = getValueState(visualElement);\n        definition = definition(custom !== undefined ? custom : props.custom, current, velocity);\n    }\n    /**\n     * If the variant definition is a variant label, or\n     * the function returned a variant label, resolve.\n     */\n    if (typeof definition === \"string\") {\n        definition = props.variants && props.variants[definition];\n    }\n    /**\n     * At this point we've resolved both functions and variant labels,\n     * but the resolved variant label might itself have been a function.\n     * If so, resolve. This can only have returned a valid target object.\n     */\n    if (typeof definition === \"function\") {\n        const [current, velocity] = getValueState(visualElement);\n        definition = definition(custom !== undefined ? custom : props.custom, current, velocity);\n    }\n    return definition;\n}\n\nexport { resolveVariantFromProps };\n","const isKeyframesTarget = (v) => {\n    return Array.isArray(v);\n};\n\nexport { isKeyframesTarget };\n","import { isKeyframesTarget } from '../animation/utils/is-keyframes-target.mjs';\n\nconst isCustomValue = (v) => {\n    return Boolean(v && typeof v === \"object\" && v.mix && v.toValue);\n};\nconst resolveFinalValueInKeyframes = (v) => {\n    // TODO maybe throw if v.length - 1 is placeholder token?\n    return isKeyframesTarget(v) ? v[v.length - 1] || 0 : v;\n};\n\nexport { isCustomValue, resolveFinalValueInKeyframes };\n","const isMotionValue = (value) => Boolean(value && value.getVelocity);\n\nexport { isMotionValue };\n","import { isCustomValue } from '../../utils/resolve-value.mjs';\nimport { isMotionValue } from './is-motion-value.mjs';\n\n/**\n * If the provided value is a MotionValue, this returns the actual value, otherwise just the value itself\n *\n * TODO: Remove and move to library\n */\nfunction resolveMotionValue(value) {\n    const unwrappedValue = isMotionValue(value) ? value.get() : value;\n    return isCustomValue(unwrappedValue)\n        ? unwrappedValue.toValue()\n        : unwrappedValue;\n}\n\nexport { resolveMotionValue };\n","import { useContext } from 'react';\nimport { isAnimationControls } from '../../animation/utils/is-animation-controls.mjs';\nimport { MotionContext } from '../../context/MotionContext/index.mjs';\nimport { PresenceContext } from '../../context/PresenceContext.mjs';\nimport { isControllingVariants, isVariantNode } from '../../render/utils/is-controlling-variants.mjs';\nimport { resolveVariantFromProps } from '../../render/utils/resolve-variants.mjs';\nimport { useConstant } from '../../utils/use-constant.mjs';\nimport { resolveMotionValue } from '../../value/utils/resolve-motion-value.mjs';\n\nfunction makeState({ scrapeMotionValuesFromProps, createRenderState, onUpdate, }, props, context, presenceContext) {\n    const state = {\n        latestValues: makeLatestValues(props, context, presenceContext, scrapeMotionValuesFromProps),\n        renderState: createRenderState(),\n    };\n    if (onUpdate) {\n        /**\n         * onMount works without the VisualElement because it could be\n         * called before the VisualElement payload has been hydrated.\n         * (e.g. if someone is using m components <m.circle />)\n         */\n        state.onMount = (instance) => onUpdate({ props, current: instance, ...state });\n        state.onUpdate = (visualElement) => onUpdate(visualElement);\n    }\n    return state;\n}\nconst makeUseVisualState = (config) => (props, isStatic) => {\n    const context = useContext(MotionContext);\n    const presenceContext = useContext(PresenceContext);\n    const make = () => makeState(config, props, context, presenceContext);\n    return isStatic ? make() : useConstant(make);\n};\nfunction makeLatestValues(props, context, presenceContext, scrapeMotionValues) {\n    const values = {};\n    const motionValues = scrapeMotionValues(props, {});\n    for (const key in motionValues) {\n        values[key] = resolveMotionValue(motionValues[key]);\n    }\n    let { initial, animate } = props;\n    const isControllingVariants$1 = isControllingVariants(props);\n    const isVariantNode$1 = isVariantNode(props);\n    if (context &&\n        isVariantNode$1 &&\n        !isControllingVariants$1 &&\n        props.inherit !== false) {\n        if (initial === undefined)\n            initial = context.initial;\n        if (animate === undefined)\n            animate = context.animate;\n    }\n    let isInitialAnimationBlocked = presenceContext\n        ? presenceContext.initial === false\n        : false;\n    isInitialAnimationBlocked = isInitialAnimationBlocked || initial === false;\n    const variantToSet = isInitialAnimationBlocked ? animate : initial;\n    if (variantToSet &&\n        typeof variantToSet !== \"boolean\" &&\n        !isAnimationControls(variantToSet)) {\n        const list = Array.isArray(variantToSet) ? variantToSet : [variantToSet];\n        for (let i = 0; i < list.length; i++) {\n            const resolved = resolveVariantFromProps(props, list[i]);\n            if (resolved) {\n                const { transitionEnd, transition, ...target } = resolved;\n                for (const key in target) {\n                    let valueTarget = target[key];\n                    if (Array.isArray(valueTarget)) {\n                        /**\n                         * Take final keyframe if the initial animation is blocked because\n                         * we want to initialise at the end of that blocked animation.\n                         */\n                        const index = isInitialAnimationBlocked\n                            ? valueTarget.length - 1\n                            : 0;\n                        valueTarget = valueTarget[index];\n                    }\n                    if (valueTarget !== null) {\n                        values[key] = valueTarget;\n                    }\n                }\n                for (const key in transitionEnd) {\n                    values[key] = transitionEnd[key];\n                }\n            }\n        }\n    }\n    return values;\n}\n\nexport { makeUseVisualState };\n","/**\n * Generate a list of every possible transform key.\n */\nconst transformPropOrder = [\n    \"transformPerspective\",\n    \"x\",\n    \"y\",\n    \"z\",\n    \"translateX\",\n    \"translateY\",\n    \"translateZ\",\n    \"scale\",\n    \"scaleX\",\n    \"scaleY\",\n    \"rotate\",\n    \"rotateX\",\n    \"rotateY\",\n    \"rotateZ\",\n    \"skew\",\n    \"skewX\",\n    \"skewY\",\n];\n/**\n * A quick lookup for transform props.\n */\nconst transformProps = new Set(transformPropOrder);\n\nexport { transformPropOrder, transformProps };\n","const checkStringStartsWith = (token) => (key) => typeof key === \"string\" && key.startsWith(token);\nconst isCSSVariableName = \n/*@__PURE__*/ checkStringStartsWith(\"--\");\nconst startsAsVariableToken = \n/*@__PURE__*/ checkStringStartsWith(\"var(--\");\nconst isCSSVariableToken = (value) => {\n    const startsWithToken = startsAsVariableToken(value);\n    if (!startsWithToken)\n        return false;\n    // Ensure any comments are stripped from the value as this can harm performance of the regex.\n    return singleCssVariableRegex.test(value.split(\"/*\")[0].trim());\n};\nconst singleCssVariableRegex = /var\\(--(?:[\\w-]+\\s*|[\\w-]+\\s*,(?:\\s*[^)(\\s]|\\s*\\((?:[^)(]|\\([^)(]*\\))*\\))+\\s*)\\)$/iu;\n\nexport { isCSSVariableName, isCSSVariableToken };\n","/**\n * Provided a value and a ValueType, returns the value as that value type.\n */\nconst getValueAsType = (value, type) => {\n    return type && typeof value === \"number\"\n        ? type.transform(value)\n        : value;\n};\n\nexport { getValueAsType };\n","const clamp = (min, max, v) => {\n    if (v > max)\n        return max;\n    if (v < min)\n        return min;\n    return v;\n};\n\nexport { clamp };\n","import { clamp } from '../../../utils/clamp.mjs';\n\nconst number = {\n    test: (v) => typeof v === \"number\",\n    parse: parseFloat,\n    transform: (v) => v,\n};\nconst alpha = {\n    ...number,\n    transform: (v) => clamp(0, 1, v),\n};\nconst scale = {\n    ...number,\n    default: 1,\n};\n\nexport { alpha, number, scale };\n","const createUnitType = (unit) => ({\n    test: (v) => typeof v === \"string\" && v.endsWith(unit) && v.split(\" \").length === 1,\n    parse: parseFloat,\n    transform: (v) => `${v}${unit}`,\n});\nconst degrees = /*@__PURE__*/ createUnitType(\"deg\");\nconst percent = /*@__PURE__*/ createUnitType(\"%\");\nconst px = /*@__PURE__*/ createUnitType(\"px\");\nconst vh = /*@__PURE__*/ createUnitType(\"vh\");\nconst vw = /*@__PURE__*/ createUnitType(\"vw\");\nconst progressPercentage = {\n    ...percent,\n    parse: (v) => percent.parse(v) / 100,\n    transform: (v) => percent.transform(v * 100),\n};\n\nexport { degrees, percent, progressPercentage, px, vh, vw };\n","import { px } from '../../../value/types/numbers/units.mjs';\n\nconst browserNumberValueTypes = {\n    // Border props\n    borderWidth: px,\n    borderTopWidth: px,\n    borderRightWidth: px,\n    borderBottomWidth: px,\n    borderLeftWidth: px,\n    borderRadius: px,\n    radius: px,\n    borderTopLeftRadius: px,\n    borderTopRightRadius: px,\n    borderBottomRightRadius: px,\n    borderBottomLeftRadius: px,\n    // Positioning props\n    width: px,\n    maxWidth: px,\n    height: px,\n    maxHeight: px,\n    top: px,\n    right: px,\n    bottom: px,\n    left: px,\n    // Spacing props\n    padding: px,\n    paddingTop: px,\n    paddingRight: px,\n    paddingBottom: px,\n    paddingLeft: px,\n    margin: px,\n    marginTop: px,\n    marginRight: px,\n    marginBottom: px,\n    marginLeft: px,\n    // Misc\n    backgroundPositionX: px,\n    backgroundPositionY: px,\n};\n\nexport { browserNumberValueTypes };\n","import { scale, alpha } from '../../../value/types/numbers/index.mjs';\nimport { degrees, px, progressPercentage } from '../../../value/types/numbers/units.mjs';\n\nconst transformValueTypes = {\n    rotate: degrees,\n    rotateX: degrees,\n    rotateY: degrees,\n    rotateZ: degrees,\n    scale,\n    scaleX: scale,\n    scaleY: scale,\n    scaleZ: scale,\n    skew: degrees,\n    skewX: degrees,\n    skewY: degrees,\n    distance: px,\n    translateX: px,\n    translateY: px,\n    translateZ: px,\n    x: px,\n    y: px,\n    z: px,\n    perspective: px,\n    transformPerspective: px,\n    opacity: alpha,\n    originX: progressPercentage,\n    originY: progressPercentage,\n    originZ: px,\n};\n\nexport { transformValueTypes };\n","import { number } from '../../../value/types/numbers/index.mjs';\n\nconst int = {\n    ...number,\n    transform: Math.round,\n};\n\nexport { int };\n","import { alpha } from '../../../value/types/numbers/index.mjs';\nimport { px } from '../../../value/types/numbers/units.mjs';\nimport { browserNumberValueTypes } from './number-browser.mjs';\nimport { transformValueTypes } from './transform.mjs';\nimport { int } from './type-int.mjs';\n\nconst numberValueTypes = {\n    ...browserNumberValueTypes,\n    ...transformValueTypes,\n    zIndex: int,\n    size: px,\n    // SVG\n    fillOpacity: alpha,\n    strokeOpacity: alpha,\n    numOctaves: int,\n};\n\nexport { numberValueTypes };\n","import { getValueAsType } from '../../dom/value-types/get-as-type.mjs';\nimport { numberValueTypes } from '../../dom/value-types/number.mjs';\nimport { transformPropOrder } from './keys-transform.mjs';\n\nconst translateAlias = {\n    x: \"translateX\",\n    y: \"translateY\",\n    z: \"translateZ\",\n    transformPerspective: \"perspective\",\n};\nconst numTransforms = transformPropOrder.length;\n/**\n * Build a CSS transform style from individual x/y/scale etc properties.\n *\n * This outputs with a default order of transforms/scales/rotations, this can be customised by\n * providing a transformTemplate function.\n */\nfunction buildTransform(latestValues, transform, transformTemplate) {\n    // The transform string we're going to build into.\n    let transformString = \"\";\n    let transformIsDefault = true;\n    /**\n     * Loop over all possible transforms in order, adding the ones that\n     * are present to the transform string.\n     */\n    for (let i = 0; i < numTransforms; i++) {\n        const key = transformPropOrder[i];\n        const value = latestValues[key];\n        if (value === undefined)\n            continue;\n        let valueIsDefault = true;\n        if (typeof value === \"number\") {\n            valueIsDefault = value === (key.startsWith(\"scale\") ? 1 : 0);\n        }\n        else {\n            valueIsDefault = parseFloat(value) === 0;\n        }\n        if (!valueIsDefault || transformTemplate) {\n            const valueAsType = getValueAsType(value, numberValueTypes[key]);\n            if (!valueIsDefault) {\n                transformIsDefault = false;\n                const transformName = translateAlias[key] || key;\n                transformString += `${transformName}(${valueAsType}) `;\n            }\n            if (transformTemplate) {\n                transform[key] = valueAsType;\n            }\n        }\n    }\n    transformString = transformString.trim();\n    // If we have a custom `transform` template, pass our transform values and\n    // generated transformString to that before returning\n    if (transformTemplate) {\n        transformString = transformTemplate(transform, transformIsDefault ? \"\" : transformString);\n    }\n    else if (transformIsDefault) {\n        transformString = \"none\";\n    }\n    return transformString;\n}\n\nexport { buildTransform };\n","import { isCSSVariableName } from '../../dom/utils/is-css-variable.mjs';\nimport { getValueAsType } from '../../dom/value-types/get-as-type.mjs';\nimport { numberValueTypes } from '../../dom/value-types/number.mjs';\nimport { buildTransform } from './build-transform.mjs';\nimport { transformProps } from './keys-transform.mjs';\n\nfunction buildHTMLStyles(state, latestValues, transformTemplate) {\n    const { style, vars, transformOrigin } = state;\n    // Track whether we encounter any transform or transformOrigin values.\n    let hasTransform = false;\n    let hasTransformOrigin = false;\n    /**\n     * Loop over all our latest animated values and decide whether to handle them\n     * as a style or CSS variable.\n     *\n     * Transforms and transform origins are kept separately for further processing.\n     */\n    for (const key in latestValues) {\n        const value = latestValues[key];\n        if (transformProps.has(key)) {\n            // If this is a transform, flag to enable further transform processing\n            hasTransform = true;\n            continue;\n        }\n        else if (isCSSVariableName(key)) {\n            vars[key] = value;\n            continue;\n        }\n        else {\n            // Convert the value to its default value type, ie 0 -> \"0px\"\n            const valueAsType = getValueAsType(value, numberValueTypes[key]);\n            if (key.startsWith(\"origin\")) {\n                // If this is a transform origin, flag and enable further transform-origin processing\n                hasTransformOrigin = true;\n                transformOrigin[key] =\n                    valueAsType;\n            }\n            else {\n                style[key] = valueAsType;\n            }\n        }\n    }\n    if (!latestValues.transform) {\n        if (hasTransform || transformTemplate) {\n            style.transform = buildTransform(latestValues, state.transform, transformTemplate);\n        }\n        else if (style.transform) {\n            /**\n             * If we have previously created a transform but currently don't have any,\n             * reset transform style to none.\n             */\n            style.transform = \"none\";\n        }\n    }\n    /**\n     * Build a transformOrigin style. Uses the same defaults as the browser for\n     * undefined origins.\n     */\n    if (hasTransformOrigin) {\n        const { originX = \"50%\", originY = \"50%\", originZ = 0, } = transformOrigin;\n        style.transformOrigin = `${originX} ${originY} ${originZ}`;\n    }\n}\n\nexport { buildHTMLStyles };\n","import { px } from '../../../value/types/numbers/units.mjs';\n\nconst dashKeys = {\n    offset: \"stroke-dashoffset\",\n    array: \"stroke-dasharray\",\n};\nconst camelKeys = {\n    offset: \"strokeDashoffset\",\n    array: \"strokeDasharray\",\n};\n/**\n * Build SVG path properties. Uses the path's measured length to convert\n * our custom pathLength, pathSpacing and pathOffset into stroke-dashoffset\n * and stroke-dasharray attributes.\n *\n * This function is mutative to reduce per-frame GC.\n */\nfunction buildSVGPath(attrs, length, spacing = 1, offset = 0, useDashCase = true) {\n    // Normalise path length by setting SVG attribute pathLength to 1\n    attrs.pathLength = 1;\n    // We use dash case when setting attributes directly to the DOM node and camel case\n    // when defining props on a React component.\n    const keys = useDashCase ? dashKeys : camelKeys;\n    // Build the dash offset\n    attrs[keys.offset] = px.transform(-offset);\n    // Build the dash array\n    const pathLength = px.transform(length);\n    const pathSpacing = px.transform(spacing);\n    attrs[keys.array] = `${pathLength} ${pathSpacing}`;\n}\n\nexport { buildSVGPath };\n","import { px } from '../../../value/types/numbers/units.mjs';\n\nfunction calcOrigin(origin, offset, size) {\n    return typeof origin === \"string\"\n        ? origin\n        : px.transform(offset + size * origin);\n}\n/**\n * The SVG transform origin defaults are different to CSS and is less intuitive,\n * so we use the measured dimensions of the SVG to reconcile these.\n */\nfunction calcSVGTransformOrigin(dimensions, originX, originY) {\n    const pxOriginX = calcOrigin(originX, dimensions.x, dimensions.width);\n    const pxOriginY = calcOrigin(originY, dimensions.y, dimensions.height);\n    return `${pxOriginX} ${pxOriginY}`;\n}\n\nexport { calcSVGTransformOrigin };\n","import { buildHTMLStyles } from '../../html/utils/build-styles.mjs';\nimport { buildSVGPath } from './path.mjs';\nimport { calcSVGTransformOrigin } from './transform-origin.mjs';\n\n/**\n * Build SVG visual attrbutes, like cx and style.transform\n */\nfunction buildSVGAttrs(state, { attrX, attrY, attrScale, originX, originY, pathLength, pathSpacing = 1, pathOffset = 0, \n// This is object creation, which we try to avoid per-frame.\n...latest }, isSVGTag, transformTemplate) {\n    buildHTMLStyles(state, latest, transformTemplate);\n    /**\n     * For svg tags we just want to make sure viewBox is animatable and treat all the styles\n     * as normal HTML tags.\n     */\n    if (isSVGTag) {\n        if (state.style.viewBox) {\n            state.attrs.viewBox = state.style.viewBox;\n        }\n        return;\n    }\n    state.attrs = state.style;\n    state.style = {};\n    const { attrs, style, dimensions } = state;\n    /**\n     * However, we apply transforms as CSS transforms. So if we detect a transform we take it from attrs\n     * and copy it into style.\n     */\n    if (attrs.transform) {\n        if (dimensions)\n            style.transform = attrs.transform;\n        delete attrs.transform;\n    }\n    // Parse transformOrigin\n    if (dimensions &&\n        (originX !== undefined || originY !== undefined || style.transform)) {\n        style.transformOrigin = calcSVGTransformOrigin(dimensions, originX !== undefined ? originX : 0.5, originY !== undefined ? originY : 0.5);\n    }\n    // Render attrX/attrY/attrScale as attributes\n    if (attrX !== undefined)\n        attrs.x = attrX;\n    if (attrY !== undefined)\n        attrs.y = attrY;\n    if (attrScale !== undefined)\n        attrs.scale = attrScale;\n    // Build SVG path if one has been defined\n    if (pathLength !== undefined) {\n        buildSVGPath(attrs, pathLength, pathSpacing, pathOffset, false);\n    }\n}\n\nexport { buildSVGAttrs };\n","const createHtmlRenderState = () => ({\n    style: {},\n    transform: {},\n    transformOrigin: {},\n    vars: {},\n});\n\nexport { createHtmlRenderState };\n","import { createHtmlRenderState } from '../../html/utils/create-render-state.mjs';\n\nconst createSvgRenderState = () => ({\n    ...createHtmlRenderState(),\n    attrs: {},\n});\n\nexport { createSvgRenderState };\n","const isSVGTag = (tag) => typeof tag === \"string\" && tag.toLowerCase() === \"svg\";\n\nexport { isSVGTag };\n","function renderHTML(element, { style, vars }, styleProp, projection) {\n    Object.assign(element.style, style, projection && projection.getProjectionStyles(styleProp));\n    // Loop over any CSS variables and assign those.\n    for (const key in vars) {\n        element.style.setProperty(key, vars[key]);\n    }\n}\n\nexport { renderHTML };\n","/**\n * A set of attribute names that are always read/written as camel case.\n */\nconst camelCaseAttributes = new Set([\n    \"baseFrequency\",\n    \"diffuseConstant\",\n    \"kernelMatrix\",\n    \"kernelUnitLength\",\n    \"keySplines\",\n    \"keyTimes\",\n    \"limitingConeAngle\",\n    \"markerHeight\",\n    \"markerWidth\",\n    \"numOctaves\",\n    \"targetX\",\n    \"targetY\",\n    \"surfaceScale\",\n    \"specularConstant\",\n    \"specularExponent\",\n    \"stdDeviation\",\n    \"tableValues\",\n    \"viewBox\",\n    \"gradientTransform\",\n    \"pathLength\",\n    \"startOffset\",\n    \"textLength\",\n    \"lengthAdjust\",\n]);\n\nexport { camelCaseAttributes };\n","import { camelToDash } from '../../dom/utils/camel-to-dash.mjs';\nimport { renderHTML } from '../../html/utils/render.mjs';\nimport { camelCaseAttributes } from './camel-case-attrs.mjs';\n\nfunction renderSVG(element, renderState, _styleProp, projection) {\n    renderHTML(element, renderState, undefined, projection);\n    for (const key in renderState.attrs) {\n        element.setAttribute(!camelCaseAttributes.has(key) ? camelToDash(key) : key, renderState.attrs[key]);\n    }\n}\n\nexport { renderSVG };\n","const scaleCorrectors = {};\nfunction addScaleCorrector(correctors) {\n    Object.assign(scaleCorrectors, correctors);\n}\n\nexport { addScaleCorrector, scaleCorrectors };\n","import { scaleCorrectors } from '../../projection/styles/scale-correction.mjs';\nimport { transformProps } from '../../render/html/utils/keys-transform.mjs';\n\nfunction isForcedMotionValue(key, { layout, layoutId }) {\n    return (transformProps.has(key) ||\n        key.startsWith(\"origin\") ||\n        ((layout || layoutId !== undefined) &&\n            (!!scaleCorrectors[key] || key === \"opacity\")));\n}\n\nexport { isForcedMotionValue };\n","import { isForcedMotionValue } from '../../../motion/utils/is-forced-motion-value.mjs';\nimport { isMotionValue } from '../../../value/utils/is-motion-value.mjs';\n\nfunction scrapeMotionValuesFromProps(props, prevProps, visualElement) {\n    var _a;\n    const { style } = props;\n    const newValues = {};\n    for (const key in style) {\n        if (isMotionValue(style[key]) ||\n            (prevProps.style &&\n                isMotionValue(prevProps.style[key])) ||\n            isForcedMotionValue(key, props) ||\n            ((_a = visualElement === null || visualElement === void 0 ? void 0 : visualElement.getValue(key)) === null || _a === void 0 ? void 0 : _a.liveStyle) !== undefined) {\n            newValues[key] = style[key];\n        }\n    }\n    return newValues;\n}\n\nexport { scrapeMotionValuesFromProps };\n","import { isMotionValue } from '../../../value/utils/is-motion-value.mjs';\nimport { transformPropOrder } from '../../html/utils/keys-transform.mjs';\nimport { scrapeMotionValuesFromProps as scrapeMotionValuesFromProps$1 } from '../../html/utils/scrape-motion-values.mjs';\n\nfunction scrapeMotionValuesFromProps(props, prevProps, visualElement) {\n    const newValues = scrapeMotionValuesFromProps$1(props, prevProps, visualElement);\n    for (const key in props) {\n        if (isMotionValue(props[key]) ||\n            isMotionValue(prevProps[key])) {\n            const targetKey = transformPropOrder.indexOf(key) !== -1\n                ? \"attr\" + key.charAt(0).toUpperCase() + key.substring(1)\n                : key;\n            newValues[targetKey] = props[key];\n        }\n    }\n    return newValues;\n}\n\nexport { scrapeMotionValuesFromProps };\n","import { frame } from '../../frameloop/frame.mjs';\nimport { makeUseVisualState } from '../../motion/utils/use-visual-state.mjs';\nimport { transformProps } from '../html/utils/keys-transform.mjs';\nimport { buildSVGAttrs } from './utils/build-attrs.mjs';\nimport { createSvgRenderState } from './utils/create-render-state.mjs';\nimport { isSVGTag } from './utils/is-svg-tag.mjs';\nimport { renderSVG } from './utils/render.mjs';\nimport { scrapeMotionValuesFromProps } from './utils/scrape-motion-values.mjs';\n\nfunction updateSVGDimensions(instance, renderState) {\n    try {\n        renderState.dimensions =\n            typeof instance.getBBox === \"function\"\n                ? instance.getBBox()\n                : instance.getBoundingClientRect();\n    }\n    catch (e) {\n        // Most likely trying to measure an unrendered element under Firefox\n        renderState.dimensions = {\n            x: 0,\n            y: 0,\n            width: 0,\n            height: 0,\n        };\n    }\n}\nconst layoutProps = [\"x\", \"y\", \"width\", \"height\", \"cx\", \"cy\", \"r\"];\nconst svgMotionConfig = {\n    useVisualState: makeUseVisualState({\n        scrapeMotionValuesFromProps: scrapeMotionValuesFromProps,\n        createRenderState: createSvgRenderState,\n        onUpdate: ({ props, prevProps, current, renderState, latestValues, }) => {\n            if (!current)\n                return;\n            let hasTransform = !!props.drag;\n            if (!hasTransform) {\n                for (const key in latestValues) {\n                    if (transformProps.has(key)) {\n                        hasTransform = true;\n                        break;\n                    }\n                }\n            }\n            if (!hasTransform)\n                return;\n            let needsMeasure = !prevProps;\n            if (prevProps) {\n                /**\n                 * Check the layout props for changes, if any are found we need to\n                 * measure the element again.\n                 */\n                for (let i = 0; i < layoutProps.length; i++) {\n                    const key = layoutProps[i];\n                    if (props[key] !==\n                        prevProps[key]) {\n                        needsMeasure = true;\n                    }\n                }\n            }\n            if (!needsMeasure)\n                return;\n            frame.read(() => {\n                updateSVGDimensions(current, renderState);\n                frame.render(() => {\n                    buildSVGAttrs(renderState, latestValues, isSVGTag(current.tagName), props.transformTemplate);\n                    renderSVG(current, renderState);\n                });\n            });\n        },\n    }),\n};\n\nexport { svgMotionConfig };\n","import { makeUseVisualState } from '../../motion/utils/use-visual-state.mjs';\nimport { scrapeMotionValuesFromProps } from './utils/scrape-motion-values.mjs';\nimport { createHtmlRenderState } from './utils/create-render-state.mjs';\n\nconst htmlMotionConfig = {\n    useVisualState: makeUseVisualState({\n        scrapeMotionValuesFromProps,\n        createRenderState: createHtmlRenderState,\n    }),\n};\n\nexport { htmlMotionConfig };\n","import { useMemo } from 'react';\nimport { isForcedMotionValue } from '../../motion/utils/is-forced-motion-value.mjs';\nimport { isMotionValue } from '../../value/utils/is-motion-value.mjs';\nimport { buildHTMLStyles } from './utils/build-styles.mjs';\nimport { createHtmlRenderState } from './utils/create-render-state.mjs';\n\nfunction copyRawValuesOnly(target, source, props) {\n    for (const key in source) {\n        if (!isMotionValue(source[key]) && !isForcedMotionValue(key, props)) {\n            target[key] = source[key];\n        }\n    }\n}\nfunction useInitialMotionValues({ transformTemplate }, visualState) {\n    return useMemo(() => {\n        const state = createHtmlRenderState();\n        buildHTMLStyles(state, visualState, transformTemplate);\n        return Object.assign({}, state.vars, state.style);\n    }, [visualState]);\n}\nfunction useStyle(props, visualState) {\n    const styleProp = props.style || {};\n    const style = {};\n    /**\n     * Copy non-Motion Values straight into style\n     */\n    copyRawValuesOnly(style, styleProp, props);\n    Object.assign(style, useInitialMotionValues(props, visualState));\n    return style;\n}\nfunction useHTMLProps(props, visualState) {\n    // The `any` isn't ideal but it is the type of createElement props argument\n    const htmlProps = {};\n    const style = useStyle(props, visualState);\n    if (props.drag && props.dragListener !== false) {\n        // Disable the ghost element when a user drags\n        htmlProps.draggable = false;\n        // Disable text selection\n        style.userSelect =\n            style.WebkitUserSelect =\n                style.WebkitTouchCallout =\n                    \"none\";\n        // Disable scrolling on the draggable direction\n        style.touchAction =\n            props.drag === true\n                ? \"none\"\n                : `pan-${props.drag === \"x\" ? \"y\" : \"x\"}`;\n    }\n    if (props.tabIndex === undefined &&\n        (props.onTap || props.onTapStart || props.whileTap)) {\n        htmlProps.tabIndex = 0;\n    }\n    htmlProps.style = style;\n    return htmlProps;\n}\n\nexport { copyRawValuesOnly, useHTMLProps };\n","import { useMemo } from 'react';\nimport { copyRawValuesOnly } from '../html/use-props.mjs';\nimport { buildSVGAttrs } from './utils/build-attrs.mjs';\nimport { createSvgRenderState } from './utils/create-render-state.mjs';\nimport { isSVGTag } from './utils/is-svg-tag.mjs';\n\nfunction useSVGProps(props, visualState, _isStatic, Component) {\n    const visualProps = useMemo(() => {\n        const state = createSvgRenderState();\n        buildSVGAttrs(state, visualState, isSVGTag(Component), props.transformTemplate);\n        return {\n            ...state.attrs,\n            style: { ...state.style },\n        };\n    }, [visualState]);\n    if (props.style) {\n        const rawStyles = {};\n        copyRawValuesOnly(rawStyles, props.style, props);\n        visualProps.style = { ...rawStyles, ...visualProps.style };\n    }\n    return visualProps;\n}\n\nexport { useSVGProps };\n","import { Fragment, useMemo, createElement } from 'react';\nimport { useHTMLProps } from '../html/use-props.mjs';\nimport { filterProps } from './utils/filter-props.mjs';\nimport { isSVGComponent } from './utils/is-svg-component.mjs';\nimport { useSVGProps } from '../svg/use-props.mjs';\nimport { isMotionValue } from '../../value/utils/is-motion-value.mjs';\n\nfunction createUseRender(forwardMotionProps = false) {\n    const useRender = (Component, props, ref, { latestValues }, isStatic) => {\n        const useVisualProps = isSVGComponent(Component)\n            ? useSVGProps\n            : useHTMLProps;\n        const visualProps = useVisualProps(props, latestValues, isStatic, Component);\n        const filteredProps = filterProps(props, typeof Component === \"string\", forwardMotionProps);\n        const elementProps = Component !== Fragment\n            ? { ...filteredProps, ...visualProps, ref }\n            : {};\n        /**\n         * If component has been handed a motion value as its child,\n         * memoise its initial value and render that. Subsequent updates\n         * will be handled by the onChange handler\n         */\n        const { children } = props;\n        const renderedChildren = useMemo(() => (isMotionValue(children) ? children.get() : children), [children]);\n        return createElement(Component, {\n            ...elementProps,\n            children: renderedChildren,\n        });\n    };\n    return useRender;\n}\n\nexport { createUseRender };\n","import { createRendererMotionComponent } from '../../motion/index.mjs';\nimport { isSVGComponent } from '../dom/utils/is-svg-component.mjs';\nimport { svgMotionConfig } from '../svg/config-motion.mjs';\nimport { htmlMotionConfig } from '../html/config-motion.mjs';\nimport { createUseRender } from '../dom/use-render.mjs';\n\nfunction createMotionComponentFactory(preloadedFeatures, createVisualElement) {\n    return function createMotionComponent(Component, { forwardMotionProps } = { forwardMotionProps: false }) {\n        const baseConfig = isSVGComponent(Component)\n            ? svgMotionConfig\n            : htmlMotionConfig;\n        const config = {\n            ...baseConfig,\n            preloadedFeatures,\n            useRender: createUseRender(forwardMotionProps),\n            createVisualElement,\n            Component,\n        };\n        return createRendererMotionComponent(config);\n    };\n}\n\nexport { createMotionComponentFactory };\n","function shallowCompare(next, prev) {\n    if (!Array.isArray(prev))\n        return false;\n    const prevLength = prev.length;\n    if (prevLength !== next.length)\n        return false;\n    for (let i = 0; i < prevLength; i++) {\n        if (prev[i] !== next[i])\n            return false;\n    }\n    return true;\n}\n\nexport { shallowCompare };\n","import { resolveVariantFromProps } from './resolve-variants.mjs';\n\nfunction resolveVariant(visualElement, definition, custom) {\n    const props = visualElement.getProps();\n    return resolveVariantFromProps(props, definition, custom !== undefined ? custom : props.custom, visualElement);\n}\n\nexport { resolveVariant };\n","import { memo } from 'motion-utils';\n\nconst supportsScrollTimeline = memo(() => window.ScrollTimeline !== undefined);\n\nexport { supportsScrollTimeline };\n","import { supportsScrollTimeline } from '../../utils/supports/scroll-timeline.mjs';\n\nclass BaseGroupPlaybackControls {\n    constructor(animations) {\n        // Bound to accomodate common `return animation.stop` pattern\n        this.stop = () => this.runAll(\"stop\");\n        this.animations = animations.filter(Boolean);\n    }\n    get finished() {\n        // Support for new finished Promise and legacy thennable API\n        return Promise.all(this.animations.map((animation) => \"finished\" in animation ? animation.finished : animation));\n    }\n    /**\n     * TODO: Filter out cancelled or stopped animations before returning\n     */\n    getAll(propName) {\n        return this.animations[0][propName];\n    }\n    setAll(propName, newValue) {\n        for (let i = 0; i < this.animations.length; i++) {\n            this.animations[i][propName] = newValue;\n        }\n    }\n    attachTimeline(timeline, fallback) {\n        const subscriptions = this.animations.map((animation) => {\n            if (supportsScrollTimeline() && animation.attachTimeline) {\n                return animation.attachTimeline(timeline);\n            }\n            else if (typeof fallback === \"function\") {\n                return fallback(animation);\n            }\n        });\n        return () => {\n            subscriptions.forEach((cancel, i) => {\n                cancel && cancel();\n                this.animations[i].stop();\n            });\n        };\n    }\n    get time() {\n        return this.getAll(\"time\");\n    }\n    set time(time) {\n        this.setAll(\"time\", time);\n    }\n    get speed() {\n        return this.getAll(\"speed\");\n    }\n    set speed(speed) {\n        this.setAll(\"speed\", speed);\n    }\n    get startTime() {\n        return this.getAll(\"startTime\");\n    }\n    get duration() {\n        let max = 0;\n        for (let i = 0; i < this.animations.length; i++) {\n            max = Math.max(max, this.animations[i].duration);\n        }\n        return max;\n    }\n    runAll(methodName) {\n        this.animations.forEach((controls) => controls[methodName]());\n    }\n    flatten() {\n        this.runAll(\"flatten\");\n    }\n    play() {\n        this.runAll(\"play\");\n    }\n    pause() {\n        this.runAll(\"pause\");\n    }\n    cancel() {\n        this.runAll(\"cancel\");\n    }\n    complete() {\n        this.runAll(\"complete\");\n    }\n}\n\nexport { BaseGroupPlaybackControls };\n","import { BaseGroupPlaybackControls } from './BaseGroup.mjs';\n\n/**\n * TODO: This is a temporary class to support the legacy\n * thennable API\n */\nclass GroupPlaybackControls extends BaseGroupPlaybackControls {\n    then(onResolve, onReject) {\n        return Promise.all(this.animations).then(onResolve).catch(onReject);\n    }\n}\n\nexport { GroupPlaybackControls };\n","function getValueTransition(transition, key) {\n    return transition\n        ? transition[key] ||\n            transition[\"default\"] ||\n            transition\n        : undefined;\n}\n\nexport { getValueTransition };\n","/**\n * Implement a practical max duration for keyframe generation\n * to prevent infinite loops\n */\nconst maxGeneratorDuration = 20000;\nfunction calcGeneratorDuration(generator) {\n    let duration = 0;\n    const timeStep = 50;\n    let state = generator.next(duration);\n    while (!state.done && duration < maxGeneratorDuration) {\n        duration += timeStep;\n        state = generator.next(duration);\n    }\n    return duration >= maxGeneratorDuration ? Infinity : duration;\n}\n\nexport { calcGeneratorDuration, maxGeneratorDuration };\n","function isGenerator(type) {\n    return typeof type === \"function\";\n}\n\nexport { isGenerator };\n","function attachTimeline(animation, timeline) {\n    animation.timeline = timeline;\n    animation.onfinish = null;\n}\n\nexport { attachTimeline };\n","const isBezierDefinition = (easing) => Array.isArray(easing) && typeof easing[0] === \"number\";\n\nexport { isBezierDefinition };\n","/**\n * Add the ability for test suites to manually set support flags\n * to better test more environments.\n */\nconst supportsFlags = {\n    linearEasing: undefined,\n};\n\nexport { supportsFlags };\n","import { memo } from 'motion-utils';\nimport { supportsFlags } from './flags.mjs';\n\nfunction memoSupports(callback, supportsFlag) {\n    const memoized = memo(callback);\n    return () => { var _a; return (_a = supportsFlags[supportsFlag]) !== null && _a !== void 0 ? _a : memoized(); };\n}\n\nexport { memoSupports };\n","import { memoSupports } from './memo.mjs';\n\nconst supportsLinearEasing = /*@__PURE__*/ memoSupports(() => {\n    try {\n        document\n            .createElement(\"div\")\n            .animate({ opacity: 0 }, { easing: \"linear(0, 1)\" });\n    }\n    catch (e) {\n        return false;\n    }\n    return true;\n}, \"linearEasing\");\n\nexport { supportsLinearEasing };\n","import { progress } from 'motion-utils';\n\nconst generateLinearEasing = (easing, duration, // as milliseconds\nresolution = 10 // as milliseconds\n) => {\n    let points = \"\";\n    const numPoints = Math.max(Math.round(duration / resolution), 2);\n    for (let i = 0; i < numPoints; i++) {\n        points += easing(progress(0, numPoints - 1, i)) + \", \";\n    }\n    return `linear(${points.substring(0, points.length - 2)})`;\n};\n\nexport { generateLinearEasing };\n","import { isBezierDefinition } from '../../../utils/is-bezier-definition.mjs';\nimport { supportsLinearEasing } from '../../../utils/supports/linear-easing.mjs';\nimport { generateLinearEasing } from './linear.mjs';\n\nfunction isWaapiSupportedEasing(easing) {\n    return Boolean((typeof easing === \"function\" && supportsLinearEasing()) ||\n        !easing ||\n        (typeof easing === \"string\" &&\n            (easing in supportedWaapiEasing || supportsLinearEasing())) ||\n        isBezierDefinition(easing) ||\n        (Array.isArray(easing) && easing.every(isWaapiSupportedEasing)));\n}\nconst cubicBezierAsString = ([a, b, c, d]) => `cubic-bezier(${a}, ${b}, ${c}, ${d})`;\nconst supportedWaapiEasing = {\n    linear: \"linear\",\n    ease: \"ease\",\n    easeIn: \"ease-in\",\n    easeOut: \"ease-out\",\n    easeInOut: \"ease-in-out\",\n    circIn: /*@__PURE__*/ cubicBezierAsString([0, 0.65, 0.55, 1]),\n    circOut: /*@__PURE__*/ cubicBezierAsString([0.55, 0, 1, 0.45]),\n    backIn: /*@__PURE__*/ cubicBezierAsString([0.31, 0.01, 0.66, -0.59]),\n    backOut: /*@__PURE__*/ cubicBezierAsString([0.33, 1.53, 0.69, 0.99]),\n};\nfunction mapEasingToNativeEasing(easing, duration) {\n    if (!easing) {\n        return undefined;\n    }\n    else if (typeof easing === \"function\" && supportsLinearEasing()) {\n        return generateLinearEasing(easing, duration);\n    }\n    else if (isBezierDefinition(easing)) {\n        return cubicBezierAsString(easing);\n    }\n    else if (Array.isArray(easing)) {\n        return easing.map((segmentEasing) => mapEasingToNativeEasing(segmentEasing, duration) ||\n            supportedWaapiEasing.easeOut);\n    }\n    else {\n        return supportedWaapiEasing[easing];\n    }\n}\n\nexport { cubicBezierAsString, isWaapiSupportedEasing, mapEasingToNativeEasing, supportedWaapiEasing };\n","const isDragging = {\n    x: false,\n    y: false,\n};\nfunction isDragActive() {\n    return isDragging.x || isDragging.y;\n}\n\nexport { isDragActive, isDragging };\n","function resolveElements(elementOrSelector, scope, selectorCache) {\n    var _a;\n    if (elementOrSelector instanceof Element) {\n        return [elementOrSelector];\n    }\n    else if (typeof elementOrSelector === \"string\") {\n        let root = document;\n        if (scope) {\n            // TODO: Refactor to utils package\n            // invariant(\n            //     Boolean(scope.current),\n            //     \"Scope provided, but no element detected.\"\n            // )\n            root = scope.current;\n        }\n        const elements = (_a = selectorCache === null || selectorCache === void 0 ? void 0 : selectorCache[elementOrSelector]) !== null && _a !== void 0 ? _a : root.querySelectorAll(elementOrSelector);\n        return elements ? Array.from(elements) : [];\n    }\n    return Array.from(elementOrSelector);\n}\n\nexport { resolveElements };\n","import { resolveElements } from '../../utils/resolve-elements.mjs';\n\nfunction setupGesture(elementOrSelector, options) {\n    const elements = resolveElements(elementOrSelector);\n    const gestureAbortController = new AbortController();\n    const eventOptions = {\n        passive: true,\n        ...options,\n        signal: gestureAbortController.signal,\n    };\n    const cancel = () => gestureAbortController.abort();\n    return [elements, eventOptions, cancel];\n}\n\nexport { setupGesture };\n","import { isDragActive } from './drag/state/is-active.mjs';\nimport { setupGesture } from './utils/setup.mjs';\n\n/**\n * Filter out events that are not pointer events, or are triggering\n * while a Motion gesture is active.\n */\nfunction filterEvents(callback) {\n    return (event) => {\n        if (event.pointerType === \"touch\" || isDragActive())\n            return;\n        callback(event);\n    };\n}\n/**\n * Create a hover gesture. hover() is different to .addEventListener(\"pointerenter\")\n * in that it has an easier syntax, filters out polyfilled touch events, interoperates\n * with drag gestures, and automatically removes the \"pointerennd\" event listener when the hover ends.\n *\n * @public\n */\nfunction hover(elementOrSelector, onHoverStart, options = {}) {\n    const [elements, eventOptions, cancel] = setupGesture(elementOrSelector, options);\n    const onPointerEnter = filterEvents((enterEvent) => {\n        const { target } = enterEvent;\n        const onHoverEnd = onHoverStart(enterEvent);\n        if (typeof onHoverEnd !== \"function\" || !target)\n            return;\n        const onPointerLeave = filterEvents((leaveEvent) => {\n            onHoverEnd(leaveEvent);\n            target.removeEventListener(\"pointerleave\", onPointerLeave);\n        });\n        target.addEventListener(\"pointerleave\", onPointerLeave, eventOptions);\n    });\n    elements.forEach((element) => {\n        element.addEventListener(\"pointerenter\", onPointerEnter, eventOptions);\n    });\n    return cancel;\n}\n\nexport { hover };\n","/**\n * Recursively traverse up the tree to check whether the provided child node\n * is the parent or a descendant of it.\n *\n * @param parent - Element to find\n * @param child - Element to test against parent\n */\nconst isNodeOrChild = (parent, child) => {\n    if (!child) {\n        return false;\n    }\n    else if (parent === child) {\n        return true;\n    }\n    else {\n        return isNodeOrChild(parent, child.parentElement);\n    }\n};\n\nexport { isNodeOrChild };\n","const isPrimaryPointer = (event) => {\n    if (event.pointerType === \"mouse\") {\n        return typeof event.button !== \"number\" || event.button <= 0;\n    }\n    else {\n        /**\n         * isPrimary is true for all mice buttons, whereas every touch point\n         * is regarded as its own input. So subsequent concurrent touch points\n         * will be false.\n         *\n         * Specifically match against false here as incomplete versions of\n         * PointerEvents in very old browser might have it set as undefined.\n         */\n        return event.isPrimary !== false;\n    }\n};\n\nexport { isPrimaryPointer };\n","const focusableElements = new Set([\n    \"BUTTON\",\n    \"INPUT\",\n    \"SELECT\",\n    \"TEXTAREA\",\n    \"A\",\n]);\nfunction isElementKeyboardAccessible(element) {\n    return (focusableElements.has(element.tagName) ||\n        element.tabIndex !== -1);\n}\n\nexport { isElementKeyboardAccessible };\n","const isPressing = new WeakSet();\n\nexport { isPressing };\n","import { isPressing } from './state.mjs';\n\n/**\n * Filter out events that are not \"Enter\" keys.\n */\nfunction filterEvents(callback) {\n    return (event) => {\n        if (event.key !== \"Enter\")\n            return;\n        callback(event);\n    };\n}\nfunction firePointerEvent(target, type) {\n    target.dispatchEvent(new PointerEvent(\"pointer\" + type, { isPrimary: true, bubbles: true }));\n}\nconst enableKeyboardPress = (focusEvent, eventOptions) => {\n    const element = focusEvent.currentTarget;\n    if (!element)\n        return;\n    const handleKeydown = filterEvents(() => {\n        if (isPressing.has(element))\n            return;\n        firePointerEvent(element, \"down\");\n        const handleKeyup = filterEvents(() => {\n            firePointerEvent(element, \"up\");\n        });\n        const handleBlur = () => firePointerEvent(element, \"cancel\");\n        element.addEventListener(\"keyup\", handleKeyup, eventOptions);\n        element.addEventListener(\"blur\", handleBlur, eventOptions);\n    });\n    element.addEventListener(\"keydown\", handleKeydown, eventOptions);\n    /**\n     * Add an event listener that fires on blur to remove the keydown events.\n     */\n    element.addEventListener(\"blur\", () => element.removeEventListener(\"keydown\", handleKeydown), eventOptions);\n};\n\nexport { enableKeyboardPress };\n","import { isDragActive } from '../drag/state/is-active.mjs';\nimport { isNodeOrChild } from '../utils/is-node-or-child.mjs';\nimport { isPrimaryPointer } from '../utils/is-primary-pointer.mjs';\nimport { setupGesture } from '../utils/setup.mjs';\nimport { isElementKeyboardAccessible } from './utils/is-keyboard-accessible.mjs';\nimport { enableKeyboardPress } from './utils/keyboard.mjs';\nimport { isPressing } from './utils/state.mjs';\n\n/**\n * Filter out events that are not primary pointer events, or are triggering\n * while a Motion gesture is active.\n */\nfunction isValidPressEvent(event) {\n    return isPrimaryPointer(event) && !isDragActive();\n}\n/**\n * Create a press gesture.\n *\n * Press is different to `\"pointerdown\"`, `\"pointerup\"` in that it\n * automatically filters out secondary pointer events like right\n * click and multitouch.\n *\n * It also adds accessibility support for keyboards, where\n * an element with a press gesture will receive focus and\n *  trigger on Enter `\"keydown\"` and `\"keyup\"` events.\n *\n * This is different to a browser's `\"click\"` event, which does\n * respond to keyboards but only for the `\"click\"` itself, rather\n * than the press start and end/cancel. The element also needs\n * to be focusable for this to work, whereas a press gesture will\n * make an element focusable by default.\n *\n * @public\n */\nfunction press(elementOrSelector, onPressStart, options = {}) {\n    const [elements, eventOptions, cancelEvents] = setupGesture(elementOrSelector, options);\n    const startPress = (startEvent) => {\n        const element = startEvent.currentTarget;\n        if (!isValidPressEvent(startEvent) || isPressing.has(element))\n            return;\n        isPressing.add(element);\n        const onPressEnd = onPressStart(startEvent);\n        const onPointerEnd = (endEvent, success) => {\n            window.removeEventListener(\"pointerup\", onPointerUp);\n            window.removeEventListener(\"pointercancel\", onPointerCancel);\n            if (!isValidPressEvent(endEvent) || !isPressing.has(element)) {\n                return;\n            }\n            isPressing.delete(element);\n            if (typeof onPressEnd === \"function\") {\n                onPressEnd(endEvent, { success });\n            }\n        };\n        const onPointerUp = (upEvent) => {\n            onPointerEnd(upEvent, options.useGlobalTarget ||\n                isNodeOrChild(element, upEvent.target));\n        };\n        const onPointerCancel = (cancelEvent) => {\n            onPointerEnd(cancelEvent, false);\n        };\n        window.addEventListener(\"pointerup\", onPointerUp, eventOptions);\n        window.addEventListener(\"pointercancel\", onPointerCancel, eventOptions);\n    };\n    elements.forEach((element) => {\n        if (!isElementKeyboardAccessible(element) &&\n            element.getAttribute(\"tabindex\") === null) {\n            element.tabIndex = 0;\n        }\n        const target = options.useGlobalTarget ? window : element;\n        target.addEventListener(\"pointerdown\", startPress, eventOptions);\n        element.addEventListener(\"focus\", (event) => enableKeyboardPress(event, eventOptions), eventOptions);\n    });\n    return cancelEvents;\n}\n\nexport { press };\n","import { isDragging } from './is-active.mjs';\n\nfunction setDragLock(axis) {\n    if (axis === \"x\" || axis === \"y\") {\n        if (isDragging[axis]) {\n            return null;\n        }\n        else {\n            isDragging[axis] = true;\n            return () => {\n                isDragging[axis] = false;\n            };\n        }\n    }\n    else {\n        if (isDragging.x || isDragging.y) {\n            return null;\n        }\n        else {\n            isDragging.x = isDragging.y = true;\n            return () => {\n                isDragging.x = isDragging.y = false;\n            };\n        }\n    }\n}\n\nexport { setDragLock };\n","import { transformPropOrder } from './keys-transform.mjs';\n\nconst positionalKeys = new Set([\n    \"width\",\n    \"height\",\n    \"top\",\n    \"left\",\n    \"right\",\n    \"bottom\",\n    ...transformPropOrder,\n]);\n\nexport { positionalKeys };\n","import { MotionGlobalConfig } from '../utils/GlobalConfig.mjs';\nimport { frameData } from './frame.mjs';\n\nlet now;\nfunction clearTime() {\n    now = undefined;\n}\n/**\n * An eventloop-synchronous alternative to performance.now().\n *\n * Ensures that time measurements remain consistent within a synchronous context.\n * Usually calling performance.now() twice within the same synchronous context\n * will return different values which isn't useful for animations when we're usually\n * trying to sync animations to the same frame.\n */\nconst time = {\n    now: () => {\n        if (now === undefined) {\n            time.set(frameData.isProcessing || MotionGlobalConfig.useManualTiming\n                ? frameData.timestamp\n                : performance.now());\n        }\n        return now;\n    },\n    set: (newTime) => {\n        now = newTime;\n        queueMicrotask(clearTime);\n    },\n};\n\nexport { time };\n","function addUniqueItem(arr, item) {\n    if (arr.indexOf(item) === -1)\n        arr.push(item);\n}\nfunction removeItem(arr, item) {\n    const index = arr.indexOf(item);\n    if (index > -1)\n        arr.splice(index, 1);\n}\n// Adapted from array-move\nfunction moveItem([...arr], fromIndex, toIndex) {\n    const startIndex = fromIndex < 0 ? arr.length + fromIndex : fromIndex;\n    if (startIndex >= 0 && startIndex < arr.length) {\n        const endIndex = toIndex < 0 ? arr.length + toIndex : toIndex;\n        const [item] = arr.splice(fromIndex, 1);\n        arr.splice(endIndex, 0, item);\n    }\n    return arr;\n}\n\nexport { addUniqueItem, moveItem, removeItem };\n","import { addUniqueItem, removeItem } from './array.mjs';\n\nclass SubscriptionManager {\n    constructor() {\n        this.subscriptions = [];\n    }\n    add(handler) {\n        addUniqueItem(this.subscriptions, handler);\n        return () => removeItem(this.subscriptions, handler);\n    }\n    notify(a, b, c) {\n        const numSubscriptions = this.subscriptions.length;\n        if (!numSubscriptions)\n            return;\n        if (numSubscriptions === 1) {\n            /**\n             * If there's only a single handler we can just call it without invoking a loop.\n             */\n            this.subscriptions[0](a, b, c);\n        }\n        else {\n            for (let i = 0; i < numSubscriptions; i++) {\n                /**\n                 * Check whether the handler exists before firing as it's possible\n                 * the subscriptions were modified during this loop running.\n                 */\n                const handler = this.subscriptions[i];\n                handler && handler(a, b, c);\n            }\n        }\n    }\n    getSize() {\n        return this.subscriptions.length;\n    }\n    clear() {\n        this.subscriptions.length = 0;\n    }\n}\n\nexport { SubscriptionManager };\n","/*\n  Convert velocity into velocity per second\n\n  @param [number]: Unit per frame\n  @param [number]: Frame duration in ms\n*/\nfunction velocityPerSecond(velocity, frameDuration) {\n    return frameDuration ? velocity * (1000 / frameDuration) : 0;\n}\n\nexport { velocityPerSecond };\n","import { time } from '../frameloop/sync-time.mjs';\nimport { SubscriptionManager } from '../utils/subscription-manager.mjs';\nimport { velocityPerSecond } from '../utils/velocity-per-second.mjs';\nimport { warnOnce } from '../utils/warn-once.mjs';\nimport { frame } from '../frameloop/frame.mjs';\n\n/**\n * Maximum time between the value of two frames, beyond which we\n * assume the velocity has since been 0.\n */\nconst MAX_VELOCITY_DELTA = 30;\nconst isFloat = (value) => {\n    return !isNaN(parseFloat(value));\n};\nconst collectMotionValues = {\n    current: undefined,\n};\n/**\n * `MotionValue` is used to track the state and velocity of motion values.\n *\n * @public\n */\nclass MotionValue {\n    /**\n     * @param init - The initiating value\n     * @param config - Optional configuration options\n     *\n     * -  `transformer`: A function to transform incoming values with.\n     *\n     * @internal\n     */\n    constructor(init, options = {}) {\n        /**\n         * This will be replaced by the build step with the latest version number.\n         * When MotionValues are provided to motion components, warn if versions are mixed.\n         */\n        this.version = \"11.18.2\";\n        /**\n         * Tracks whether this value can output a velocity. Currently this is only true\n         * if the value is numerical, but we might be able to widen the scope here and support\n         * other value types.\n         *\n         * @internal\n         */\n        this.canTrackVelocity = null;\n        /**\n         * An object containing a SubscriptionManager for each active event.\n         */\n        this.events = {};\n        this.updateAndNotify = (v, render = true) => {\n            const currentTime = time.now();\n            /**\n             * If we're updating the value during another frame or eventloop\n             * than the previous frame, then the we set the previous frame value\n             * to current.\n             */\n            if (this.updatedAt !== currentTime) {\n                this.setPrevFrameValue();\n            }\n            this.prev = this.current;\n            this.setCurrent(v);\n            // Update update subscribers\n            if (this.current !== this.prev && this.events.change) {\n                this.events.change.notify(this.current);\n            }\n            // Update render subscribers\n            if (render && this.events.renderRequest) {\n                this.events.renderRequest.notify(this.current);\n            }\n        };\n        this.hasAnimated = false;\n        this.setCurrent(init);\n        this.owner = options.owner;\n    }\n    setCurrent(current) {\n        this.current = current;\n        this.updatedAt = time.now();\n        if (this.canTrackVelocity === null && current !== undefined) {\n            this.canTrackVelocity = isFloat(this.current);\n        }\n    }\n    setPrevFrameValue(prevFrameValue = this.current) {\n        this.prevFrameValue = prevFrameValue;\n        this.prevUpdatedAt = this.updatedAt;\n    }\n    /**\n     * Adds a function that will be notified when the `MotionValue` is updated.\n     *\n     * It returns a function that, when called, will cancel the subscription.\n     *\n     * When calling `onChange` inside a React component, it should be wrapped with the\n     * `useEffect` hook. As it returns an unsubscribe function, this should be returned\n     * from the `useEffect` function to ensure you don't add duplicate subscribers..\n     *\n     * ```jsx\n     * export const MyComponent = () => {\n     *   const x = useMotionValue(0)\n     *   const y = useMotionValue(0)\n     *   const opacity = useMotionValue(1)\n     *\n     *   useEffect(() => {\n     *     function updateOpacity() {\n     *       const maxXY = Math.max(x.get(), y.get())\n     *       const newOpacity = transform(maxXY, [0, 100], [1, 0])\n     *       opacity.set(newOpacity)\n     *     }\n     *\n     *     const unsubscribeX = x.on(\"change\", updateOpacity)\n     *     const unsubscribeY = y.on(\"change\", updateOpacity)\n     *\n     *     return () => {\n     *       unsubscribeX()\n     *       unsubscribeY()\n     *     }\n     *   }, [])\n     *\n     *   return <motion.div style={{ x }} />\n     * }\n     * ```\n     *\n     * @param subscriber - A function that receives the latest value.\n     * @returns A function that, when called, will cancel this subscription.\n     *\n     * @deprecated\n     */\n    onChange(subscription) {\n        if (process.env.NODE_ENV !== \"production\") {\n            warnOnce(false, `value.onChange(callback) is deprecated. Switch to value.on(\"change\", callback).`);\n        }\n        return this.on(\"change\", subscription);\n    }\n    on(eventName, callback) {\n        if (!this.events[eventName]) {\n            this.events[eventName] = new SubscriptionManager();\n        }\n        const unsubscribe = this.events[eventName].add(callback);\n        if (eventName === \"change\") {\n            return () => {\n                unsubscribe();\n                /**\n                 * If we have no more change listeners by the start\n                 * of the next frame, stop active animations.\n                 */\n                frame.read(() => {\n                    if (!this.events.change.getSize()) {\n                        this.stop();\n                    }\n                });\n            };\n        }\n        return unsubscribe;\n    }\n    clearListeners() {\n        for (const eventManagers in this.events) {\n            this.events[eventManagers].clear();\n        }\n    }\n    /**\n     * Attaches a passive effect to the `MotionValue`.\n     *\n     * @internal\n     */\n    attach(passiveEffect, stopPassiveEffect) {\n        this.passiveEffect = passiveEffect;\n        this.stopPassiveEffect = stopPassiveEffect;\n    }\n    /**\n     * Sets the state of the `MotionValue`.\n     *\n     * @remarks\n     *\n     * ```jsx\n     * const x = useMotionValue(0)\n     * x.set(10)\n     * ```\n     *\n     * @param latest - Latest value to set.\n     * @param render - Whether to notify render subscribers. Defaults to `true`\n     *\n     * @public\n     */\n    set(v, render = true) {\n        if (!render || !this.passiveEffect) {\n            this.updateAndNotify(v, render);\n        }\n        else {\n            this.passiveEffect(v, this.updateAndNotify);\n        }\n    }\n    setWithVelocity(prev, current, delta) {\n        this.set(current);\n        this.prev = undefined;\n        this.prevFrameValue = prev;\n        this.prevUpdatedAt = this.updatedAt - delta;\n    }\n    /**\n     * Set the state of the `MotionValue`, stopping any active animations,\n     * effects, and resets velocity to `0`.\n     */\n    jump(v, endAnimation = true) {\n        this.updateAndNotify(v);\n        this.prev = v;\n        this.prevUpdatedAt = this.prevFrameValue = undefined;\n        endAnimation && this.stop();\n        if (this.stopPassiveEffect)\n            this.stopPassiveEffect();\n    }\n    /**\n     * Returns the latest state of `MotionValue`\n     *\n     * @returns - The latest state of `MotionValue`\n     *\n     * @public\n     */\n    get() {\n        if (collectMotionValues.current) {\n            collectMotionValues.current.push(this);\n        }\n        return this.current;\n    }\n    /**\n     * @public\n     */\n    getPrevious() {\n        return this.prev;\n    }\n    /**\n     * Returns the latest velocity of `MotionValue`\n     *\n     * @returns - The latest velocity of `MotionValue`. Returns `0` if the state is non-numerical.\n     *\n     * @public\n     */\n    getVelocity() {\n        const currentTime = time.now();\n        if (!this.canTrackVelocity ||\n            this.prevFrameValue === undefined ||\n            currentTime - this.updatedAt > MAX_VELOCITY_DELTA) {\n            return 0;\n        }\n        const delta = Math.min(this.updatedAt - this.prevUpdatedAt, MAX_VELOCITY_DELTA);\n        // Casts because of parseFloat's poor typing\n        return velocityPerSecond(parseFloat(this.current) -\n            parseFloat(this.prevFrameValue), delta);\n    }\n    /**\n     * Registers a new animation to control this `MotionValue`. Only one\n     * animation can drive a `MotionValue` at one time.\n     *\n     * ```jsx\n     * value.start()\n     * ```\n     *\n     * @param animation - A function that starts the provided animation\n     *\n     * @internal\n     */\n    start(startAnimation) {\n        this.stop();\n        return new Promise((resolve) => {\n            this.hasAnimated = true;\n            this.animation = startAnimation(resolve);\n            if (this.events.animationStart) {\n                this.events.animationStart.notify();\n            }\n        }).then(() => {\n            if (this.events.animationComplete) {\n                this.events.animationComplete.notify();\n            }\n            this.clearAnimation();\n        });\n    }\n    /**\n     * Stop the currently active animation.\n     *\n     * @public\n     */\n    stop() {\n        if (this.animation) {\n            this.animation.stop();\n            if (this.events.animationCancel) {\n                this.events.animationCancel.notify();\n            }\n        }\n        this.clearAnimation();\n    }\n    /**\n     * Returns `true` if this value is currently animating.\n     *\n     * @public\n     */\n    isAnimating() {\n        return !!this.animation;\n    }\n    clearAnimation() {\n        delete this.animation;\n    }\n    /**\n     * Destroy and clean up subscribers to this `MotionValue`.\n     *\n     * The `MotionValue` hooks like `useMotionValue` and `useTransform` automatically\n     * handle the lifecycle of the returned `MotionValue`, so this method is only necessary if you've manually\n     * created a `MotionValue` via the `motionValue` function.\n     *\n     * @public\n     */\n    destroy() {\n        this.clearListeners();\n        this.stop();\n        if (this.stopPassiveEffect) {\n            this.stopPassiveEffect();\n        }\n    }\n}\nfunction motionValue(init, options) {\n    return new MotionValue(init, options);\n}\n\nexport { MotionValue, collectMotionValues, motionValue };\n","import { resolveFinalValueInKeyframes } from '../../utils/resolve-value.mjs';\nimport { motionValue } from '../../value/index.mjs';\nimport { resolveVariant } from './resolve-dynamic-variants.mjs';\n\n/**\n * Set VisualElement's MotionValue, creating a new MotionValue for it if\n * it doesn't exist.\n */\nfunction setMotionValue(visualElement, key, value) {\n    if (visualElement.hasValue(key)) {\n        visualElement.getValue(key).set(value);\n    }\n    else {\n        visualElement.addValue(key, motionValue(value));\n    }\n}\nfunction setTarget(visualElement, definition) {\n    const resolved = resolveVariant(visualElement, definition);\n    let { transitionEnd = {}, transition = {}, ...target } = resolved || {};\n    target = { ...target, ...transitionEnd };\n    for (const key in target) {\n        const value = resolveFinalValueInKeyframes(target[key]);\n        setMotionValue(visualElement, key, value);\n    }\n}\n\nexport { setTarget };\n","import { isMotionValue } from '../utils/is-motion-value.mjs';\n\nfunction isWillChangeMotionValue(value) {\n    return Boolean(isMotionValue(value) && value.add);\n}\n\nexport { isWillChangeMotionValue };\n","import { isWillChangeMotionValue } from './is.mjs';\n\nfunction addValueToWillChange(visualElement, key) {\n    const willChange = visualElement.getValue(\"willChange\");\n    /**\n     * It could be that a user has set willChange to a regular MotionValue,\n     * in which case we can't add the value to it.\n     */\n    if (isWillChangeMotionValue(willChange)) {\n        return willChange.add(key);\n    }\n}\n\nexport { addValueToWillChange };\n","import { optimizedAppearDataAttribute } from './data-id.mjs';\n\nfunction getOptimisedAppearId(visualElement) {\n    return visualElement.props[optimizedAppearDataAttribute];\n}\n\nexport { getOptimisedAppearId };\n","import { noop } from 'motion-utils';\n\n/*\n  Bezier function generator\n  This has been modified from Gaëtan Renaudeau's BezierEasing\n  https://github.com/gre/bezier-easing/blob/master/src/index.js\n  https://github.com/gre/bezier-easing/blob/master/LICENSE\n  \n  I've removed the newtonRaphsonIterate algo because in benchmarking it\n  wasn't noticiably faster than binarySubdivision, indeed removing it\n  usually improved times, depending on the curve.\n  I also removed the lookup table, as for the added bundle size and loop we're\n  only cutting ~4 or so subdivision iterations. I bumped the max iterations up\n  to 12 to compensate and this still tended to be faster for no perceivable\n  loss in accuracy.\n  Usage\n    const easeOut = cubicBezier(.17,.67,.83,.67);\n    const x = easeOut(0.5); // returns 0.627...\n*/\n// Returns x(t) given t, x1, and x2, or y(t) given t, y1, and y2.\nconst calcBezier = (t, a1, a2) => (((1.0 - 3.0 * a2 + 3.0 * a1) * t + (3.0 * a2 - 6.0 * a1)) * t + 3.0 * a1) *\n    t;\nconst subdivisionPrecision = 0.0000001;\nconst subdivisionMaxIterations = 12;\nfunction binarySubdivide(x, lowerBound, upperBound, mX1, mX2) {\n    let currentX;\n    let currentT;\n    let i = 0;\n    do {\n        currentT = lowerBound + (upperBound - lowerBound) / 2.0;\n        currentX = calcBezier(currentT, mX1, mX2) - x;\n        if (currentX > 0.0) {\n            upperBound = currentT;\n        }\n        else {\n            lowerBound = currentT;\n        }\n    } while (Math.abs(currentX) > subdivisionPrecision &&\n        ++i < subdivisionMaxIterations);\n    return currentT;\n}\nfunction cubicBezier(mX1, mY1, mX2, mY2) {\n    // If this is a linear gradient, return linear easing\n    if (mX1 === mY1 && mX2 === mY2)\n        return noop;\n    const getTForX = (aX) => binarySubdivide(aX, 0, 1, mX1, mX2);\n    // If animation is at start/end, return t without easing\n    return (t) => t === 0 || t === 1 ? t : calcBezier(getTForX(t), mY1, mY2);\n}\n\nexport { cubicBezier };\n","// Accepts an easing function and returns a new one that outputs mirrored values for\n// the second half of the animation. Turns easeIn into easeInOut.\nconst mirrorEasing = (easing) => (p) => p <= 0.5 ? easing(2 * p) / 2 : (2 - easing(2 * (1 - p))) / 2;\n\nexport { mirrorEasing };\n","// Accepts an easing function and returns a new one that outputs reversed values.\n// Turns easeIn into easeOut.\nconst reverseEasing = (easing) => (p) => 1 - easing(1 - p);\n\nexport { reverseEasing };\n","import { cubicBezier } from './cubic-bezier.mjs';\nimport { mirrorEasing } from './modifiers/mirror.mjs';\nimport { reverseEasing } from './modifiers/reverse.mjs';\n\nconst backOut = /*@__PURE__*/ cubicBezier(0.33, 1.53, 0.69, 0.99);\nconst backIn = /*@__PURE__*/ reverseEasing(backOut);\nconst backInOut = /*@__PURE__*/ mirrorEasing(backIn);\n\nexport { backIn, backInOut, backOut };\n","import { backIn } from './back.mjs';\n\nconst anticipate = (p) => (p *= 2) < 1 ? 0.5 * backIn(p) : 0.5 * (2 - Math.pow(2, -10 * (p - 1)));\n\nexport { anticipate };\n","import { mirrorEasing } from './modifiers/mirror.mjs';\nimport { reverseEasing } from './modifiers/reverse.mjs';\n\nconst circIn = (p) => 1 - Math.sin(Math.acos(p));\nconst circOut = reverseEasing(circIn);\nconst circInOut = mirrorEasing(circIn);\n\nexport { circIn, circInOut, circOut };\n","/**\n * Check if the value is a zero value string like \"0px\" or \"0%\"\n */\nconst isZeroValueString = (v) => /^0[^.\\s]+$/u.test(v);\n\nexport { isZeroValueString };\n","import { isZeroValueString } from '../../utils/is-zero-value-string.mjs';\n\nfunction isNone(value) {\n    if (typeof value === \"number\") {\n        return value === 0;\n    }\n    else if (value !== null) {\n        return value === \"none\" || value === \"0\" || isZeroValueString(value);\n    }\n    else {\n        return true;\n    }\n}\n\nexport { isNone };\n","// If this number is a decimal, make it just five decimal places\n// to avoid exponents\nconst sanitize = (v) => Math.round(v * 100000) / 100000;\n\nexport { sanitize };\n","const floatRegex = /-?(?:\\d+(?:\\.\\d+)?|\\.\\d+)/gu;\n\nexport { floatRegex };\n","function isNullish(v) {\n    return v == null;\n}\n\nexport { isNullish };\n","const singleColorRegex = /^(?:#[\\da-f]{3,8}|(?:rgb|hsl)a?\\((?:-?[\\d.]+%?[,\\s]+){2}-?[\\d.]+%?\\s*(?:[,/]\\s*)?(?:\\b\\d+(?:\\.\\d+)?|\\.\\d+)?%?\\))$/iu;\n\nexport { singleColorRegex };\n","import { floatRegex } from '../utils/float-regex.mjs';\nimport { isNullish } from '../utils/is-nullish.mjs';\nimport { singleColorRegex } from '../utils/single-color-regex.mjs';\n\n/**\n * Returns true if the provided string is a color, ie rgba(0,0,0,0) or #000,\n * but false if a number or multiple colors\n */\nconst isColorString = (type, testProp) => (v) => {\n    return Boolean((typeof v === \"string\" &&\n        singleColorRegex.test(v) &&\n        v.startsWith(type)) ||\n        (testProp &&\n            !isNullish(v) &&\n            Object.prototype.hasOwnProperty.call(v, testProp)));\n};\nconst splitColor = (aName, bName, cName) => (v) => {\n    if (typeof v !== \"string\")\n        return v;\n    const [a, b, c, alpha] = v.match(floatRegex);\n    return {\n        [aName]: parseFloat(a),\n        [bName]: parseFloat(b),\n        [cName]: parseFloat(c),\n        alpha: alpha !== undefined ? parseFloat(alpha) : 1,\n    };\n};\n\nexport { isColorString, splitColor };\n","import { clamp } from '../../../utils/clamp.mjs';\nimport { alpha, number } from '../numbers/index.mjs';\nimport { sanitize } from '../utils/sanitize.mjs';\nimport { isColorString, splitColor } from './utils.mjs';\n\nconst clampRgbUnit = (v) => clamp(0, 255, v);\nconst rgbUnit = {\n    ...number,\n    transform: (v) => Math.round(clampRgbUnit(v)),\n};\nconst rgba = {\n    test: /*@__PURE__*/ isColorString(\"rgb\", \"red\"),\n    parse: /*@__PURE__*/ splitColor(\"red\", \"green\", \"blue\"),\n    transform: ({ red, green, blue, alpha: alpha$1 = 1 }) => \"rgba(\" +\n        rgbUnit.transform(red) +\n        \", \" +\n        rgbUnit.transform(green) +\n        \", \" +\n        rgbUnit.transform(blue) +\n        \", \" +\n        sanitize(alpha.transform(alpha$1)) +\n        \")\",\n};\n\nexport { rgbUnit, rgba };\n","import { rgba } from './rgba.mjs';\nimport { isColorString } from './utils.mjs';\n\nfunction parseHex(v) {\n    let r = \"\";\n    let g = \"\";\n    let b = \"\";\n    let a = \"\";\n    // If we have 6 characters, ie #FF0000\n    if (v.length > 5) {\n        r = v.substring(1, 3);\n        g = v.substring(3, 5);\n        b = v.substring(5, 7);\n        a = v.substring(7, 9);\n        // Or we have 3 characters, ie #F00\n    }\n    else {\n        r = v.substring(1, 2);\n        g = v.substring(2, 3);\n        b = v.substring(3, 4);\n        a = v.substring(4, 5);\n        r += r;\n        g += g;\n        b += b;\n        a += a;\n    }\n    return {\n        red: parseInt(r, 16),\n        green: parseInt(g, 16),\n        blue: parseInt(b, 16),\n        alpha: a ? parseInt(a, 16) / 255 : 1,\n    };\n}\nconst hex = {\n    test: /*@__PURE__*/ isColorString(\"#\"),\n    parse: parseHex,\n    transform: rgba.transform,\n};\n\nexport { hex };\n","import { alpha } from '../numbers/index.mjs';\nimport { percent } from '../numbers/units.mjs';\nimport { sanitize } from '../utils/sanitize.mjs';\nimport { isColorString, splitColor } from './utils.mjs';\n\nconst hsla = {\n    test: /*@__PURE__*/ isColorString(\"hsl\", \"hue\"),\n    parse: /*@__PURE__*/ splitColor(\"hue\", \"saturation\", \"lightness\"),\n    transform: ({ hue, saturation, lightness, alpha: alpha$1 = 1 }) => {\n        return (\"hsla(\" +\n            Math.round(hue) +\n            \", \" +\n            percent.transform(sanitize(saturation)) +\n            \", \" +\n            percent.transform(sanitize(lightness)) +\n            \", \" +\n            sanitize(alpha.transform(alpha$1)) +\n            \")\");\n    },\n};\n\nexport { hsla };\n","import { hex } from './hex.mjs';\nimport { hsla } from './hsla.mjs';\nimport { rgba } from './rgba.mjs';\n\nconst color = {\n    test: (v) => rgba.test(v) || hex.test(v) || hsla.test(v),\n    parse: (v) => {\n        if (rgba.test(v)) {\n            return rgba.parse(v);\n        }\n        else if (hsla.test(v)) {\n            return hsla.parse(v);\n        }\n        else {\n            return hex.parse(v);\n        }\n    },\n    transform: (v) => {\n        return typeof v === \"string\"\n            ? v\n            : v.hasOwnProperty(\"red\")\n                ? rgba.transform(v)\n                : hsla.transform(v);\n    },\n};\n\nexport { color };\n","const colorRegex = /(?:#[\\da-f]{3,8}|(?:rgb|hsl)a?\\((?:-?[\\d.]+%?[,\\s]+){2}-?[\\d.]+%?\\s*(?:[,/]\\s*)?(?:\\b\\d+(?:\\.\\d+)?|\\.\\d+)?%?\\))/giu;\n\nexport { colorRegex };\n","import { color } from '../color/index.mjs';\nimport { colorRegex } from '../utils/color-regex.mjs';\nimport { floatRegex } from '../utils/float-regex.mjs';\nimport { sanitize } from '../utils/sanitize.mjs';\n\nfunction test(v) {\n    var _a, _b;\n    return (isNaN(v) &&\n        typeof v === \"string\" &&\n        (((_a = v.match(floatRegex)) === null || _a === void 0 ? void 0 : _a.length) || 0) +\n            (((_b = v.match(colorRegex)) === null || _b === void 0 ? void 0 : _b.length) || 0) >\n            0);\n}\nconst NUMBER_TOKEN = \"number\";\nconst COLOR_TOKEN = \"color\";\nconst VAR_TOKEN = \"var\";\nconst VAR_FUNCTION_TOKEN = \"var(\";\nconst SPLIT_TOKEN = \"${}\";\n// this regex consists of the `singleCssVariableRegex|rgbHSLValueRegex|digitRegex`\nconst complexRegex = /var\\s*\\(\\s*--(?:[\\w-]+\\s*|[\\w-]+\\s*,(?:\\s*[^)(\\s]|\\s*\\((?:[^)(]|\\([^)(]*\\))*\\))+\\s*)\\)|#[\\da-f]{3,8}|(?:rgb|hsl)a?\\((?:-?[\\d.]+%?[,\\s]+){2}-?[\\d.]+%?\\s*(?:[,/]\\s*)?(?:\\b\\d+(?:\\.\\d+)?|\\.\\d+)?%?\\)|-?(?:\\d+(?:\\.\\d+)?|\\.\\d+)/giu;\nfunction analyseComplexValue(value) {\n    const originalValue = value.toString();\n    const values = [];\n    const indexes = {\n        color: [],\n        number: [],\n        var: [],\n    };\n    const types = [];\n    let i = 0;\n    const tokenised = originalValue.replace(complexRegex, (parsedValue) => {\n        if (color.test(parsedValue)) {\n            indexes.color.push(i);\n            types.push(COLOR_TOKEN);\n            values.push(color.parse(parsedValue));\n        }\n        else if (parsedValue.startsWith(VAR_FUNCTION_TOKEN)) {\n            indexes.var.push(i);\n            types.push(VAR_TOKEN);\n            values.push(parsedValue);\n        }\n        else {\n            indexes.number.push(i);\n            types.push(NUMBER_TOKEN);\n            values.push(parseFloat(parsedValue));\n        }\n        ++i;\n        return SPLIT_TOKEN;\n    });\n    const split = tokenised.split(SPLIT_TOKEN);\n    return { values, split, indexes, types };\n}\nfunction parseComplexValue(v) {\n    return analyseComplexValue(v).values;\n}\nfunction createTransformer(source) {\n    const { split, types } = analyseComplexValue(source);\n    const numSections = split.length;\n    return (v) => {\n        let output = \"\";\n        for (let i = 0; i < numSections; i++) {\n            output += split[i];\n            if (v[i] !== undefined) {\n                const type = types[i];\n                if (type === NUMBER_TOKEN) {\n                    output += sanitize(v[i]);\n                }\n                else if (type === COLOR_TOKEN) {\n                    output += color.transform(v[i]);\n                }\n                else {\n                    output += v[i];\n                }\n            }\n        }\n        return output;\n    };\n}\nconst convertNumbersToZero = (v) => typeof v === \"number\" ? 0 : v;\nfunction getAnimatableNone(v) {\n    const parsed = parseComplexValue(v);\n    const transformer = createTransformer(v);\n    return transformer(parsed.map(convertNumbersToZero));\n}\nconst complex = {\n    test,\n    parse: parseComplexValue,\n    createTransformer,\n    getAnimatableNone,\n};\n\nexport { analyseComplexValue, complex };\n","import { complex } from './index.mjs';\nimport { floatRegex } from '../utils/float-regex.mjs';\n\n/**\n * Properties that should default to 1 or 100%\n */\nconst maxDefaults = new Set([\"brightness\", \"contrast\", \"saturate\", \"opacity\"]);\nfunction applyDefaultFilter(v) {\n    const [name, value] = v.slice(0, -1).split(\"(\");\n    if (name === \"drop-shadow\")\n        return v;\n    const [number] = value.match(floatRegex) || [];\n    if (!number)\n        return v;\n    const unit = value.replace(number, \"\");\n    let defaultValue = maxDefaults.has(name) ? 1 : 0;\n    if (number !== value)\n        defaultValue *= 100;\n    return name + \"(\" + defaultValue + unit + \")\";\n}\nconst functionRegex = /\\b([a-z-]*)\\(.*?\\)/gu;\nconst filter = {\n    ...complex,\n    getAnimatableNone: (v) => {\n        const functions = v.match(functionRegex);\n        return functions ? functions.map(applyDefaultFilter).join(\" \") : v;\n    },\n};\n\nexport { filter };\n","import { color } from '../../../value/types/color/index.mjs';\nimport { filter } from '../../../value/types/complex/filter.mjs';\nimport { numberValueTypes } from './number.mjs';\n\n/**\n * A map of default value types for common values\n */\nconst defaultValueTypes = {\n    ...numberValueTypes,\n    // Color props\n    color,\n    backgroundColor: color,\n    outlineColor: color,\n    fill: color,\n    stroke: color,\n    // Border props\n    borderColor: color,\n    borderTopColor: color,\n    borderRightColor: color,\n    borderBottomColor: color,\n    borderLeftColor: color,\n    filter,\n    WebkitFilter: filter,\n};\n/**\n * Gets the default ValueType for the provided value key\n */\nconst getDefaultValueType = (key) => defaultValueTypes[key];\n\nexport { defaultValueTypes, getDefaultValueType };\n","import { complex } from '../../../value/types/complex/index.mjs';\nimport { filter } from '../../../value/types/complex/filter.mjs';\nimport { getDefaultValueType } from './defaults.mjs';\n\nfunction getAnimatableNone(key, value) {\n    let defaultValueType = getDefaultValueType(key);\n    if (defaultValueType !== filter)\n        defaultValueType = complex;\n    // If value is not recognised as animatable, ie \"none\", create an animatable version origin based on the target\n    return defaultValueType.getAnimatableNone\n        ? defaultValueType.getAnimatableNone(value)\n        : undefined;\n}\n\nexport { getAnimatableNone };\n","import { analyseComplexValue } from '../../../value/types/complex/index.mjs';\nimport { getAnimatableNone } from '../../dom/value-types/animatable-none.mjs';\n\n/**\n * If we encounter keyframes like \"none\" or \"0\" and we also have keyframes like\n * \"#fff\" or \"200px 200px\" we want to find a keyframe to serve as a template for\n * the \"none\" keyframes. In this case \"#fff\" or \"200px 200px\" - then these get turned into\n * zero equivalents, i.e. \"#fff0\" or \"0px 0px\".\n */\nconst invalidTemplates = new Set([\"auto\", \"none\", \"0\"]);\nfunction makeNoneKeyframesAnimatable(unresolvedKeyframes, noneKeyframeIndexes, name) {\n    let i = 0;\n    let animatableTemplate = undefined;\n    while (i < unresolvedKeyframes.length && !animatableTemplate) {\n        const keyframe = unresolvedKeyframes[i];\n        if (typeof keyframe === \"string\" &&\n            !invalidTemplates.has(keyframe) &&\n            analyseComplexValue(keyframe).values.length) {\n            animatableTemplate = unresolvedKeyframes[i];\n        }\n        i++;\n    }\n    if (animatableTemplate && name) {\n        for (const noneIndex of noneKeyframeIndexes) {\n            unresolvedKeyframes[noneIndex] = getAnimatableNone(name, animatableTemplate);\n        }\n    }\n}\n\nexport { makeNoneKeyframesAnimatable };\n","import { number } from '../../../value/types/numbers/index.mjs';\nimport { px } from '../../../value/types/numbers/units.mjs';\nimport { transformPropOrder } from '../../html/utils/keys-transform.mjs';\n\nconst isNumOrPxType = (v) => v === number || v === px;\nconst getPosFromMatrix = (matrix, pos) => parseFloat(matrix.split(\", \")[pos]);\nconst getTranslateFromMatrix = (pos2, pos3) => (_bbox, { transform }) => {\n    if (transform === \"none\" || !transform)\n        return 0;\n    const matrix3d = transform.match(/^matrix3d\\((.+)\\)$/u);\n    if (matrix3d) {\n        return getPosFromMatrix(matrix3d[1], pos3);\n    }\n    else {\n        const matrix = transform.match(/^matrix\\((.+)\\)$/u);\n        if (matrix) {\n            return getPosFromMatrix(matrix[1], pos2);\n        }\n        else {\n            return 0;\n        }\n    }\n};\nconst transformKeys = new Set([\"x\", \"y\", \"z\"]);\nconst nonTranslationalTransformKeys = transformPropOrder.filter((key) => !transformKeys.has(key));\nfunction removeNonTranslationalTransform(visualElement) {\n    const removedTransforms = [];\n    nonTranslationalTransformKeys.forEach((key) => {\n        const value = visualElement.getValue(key);\n        if (value !== undefined) {\n            removedTransforms.push([key, value.get()]);\n            value.set(key.startsWith(\"scale\") ? 1 : 0);\n        }\n    });\n    return removedTransforms;\n}\nconst positionalValues = {\n    // Dimensions\n    width: ({ x }, { paddingLeft = \"0\", paddingRight = \"0\" }) => x.max - x.min - parseFloat(paddingLeft) - parseFloat(paddingRight),\n    height: ({ y }, { paddingTop = \"0\", paddingBottom = \"0\" }) => y.max - y.min - parseFloat(paddingTop) - parseFloat(paddingBottom),\n    top: (_bbox, { top }) => parseFloat(top),\n    left: (_bbox, { left }) => parseFloat(left),\n    bottom: ({ y }, { top }) => parseFloat(top) + (y.max - y.min),\n    right: ({ x }, { left }) => parseFloat(left) + (x.max - x.min),\n    // Transform\n    x: getTranslateFromMatrix(4, 13),\n    y: getTranslateFromMatrix(5, 14),\n};\n// Alias translate longform names\npositionalValues.translateX = positionalValues.x;\npositionalValues.translateY = positionalValues.y;\n\nexport { isNumOrPxType, positionalValues, removeNonTranslationalTransform };\n","import { removeNonTranslationalTransform } from '../dom/utils/unit-conversion.mjs';\nimport { frame } from '../../frameloop/frame.mjs';\n\nconst toResolve = new Set();\nlet isScheduled = false;\nlet anyNeedsMeasurement = false;\nfunction measureAllKeyframes() {\n    if (anyNeedsMeasurement) {\n        const resolversToMeasure = Array.from(toResolve).filter((resolver) => resolver.needsMeasurement);\n        const elementsToMeasure = new Set(resolversToMeasure.map((resolver) => resolver.element));\n        const transformsToRestore = new Map();\n        /**\n         * Write pass\n         * If we're measuring elements we want to remove bounding box-changing transforms.\n         */\n        elementsToMeasure.forEach((element) => {\n            const removedTransforms = removeNonTranslationalTransform(element);\n            if (!removedTransforms.length)\n                return;\n            transformsToRestore.set(element, removedTransforms);\n            element.render();\n        });\n        // Read\n        resolversToMeasure.forEach((resolver) => resolver.measureInitialState());\n        // Write\n        elementsToMeasure.forEach((element) => {\n            element.render();\n            const restore = transformsToRestore.get(element);\n            if (restore) {\n                restore.forEach(([key, value]) => {\n                    var _a;\n                    (_a = element.getValue(key)) === null || _a === void 0 ? void 0 : _a.set(value);\n                });\n            }\n        });\n        // Read\n        resolversToMeasure.forEach((resolver) => resolver.measureEndState());\n        // Write\n        resolversToMeasure.forEach((resolver) => {\n            if (resolver.suspendedScrollY !== undefined) {\n                window.scrollTo(0, resolver.suspendedScrollY);\n            }\n        });\n    }\n    anyNeedsMeasurement = false;\n    isScheduled = false;\n    toResolve.forEach((resolver) => resolver.complete());\n    toResolve.clear();\n}\nfunction readAllKeyframes() {\n    toResolve.forEach((resolver) => {\n        resolver.readKeyframes();\n        if (resolver.needsMeasurement) {\n            anyNeedsMeasurement = true;\n        }\n    });\n}\nfunction flushKeyframeResolvers() {\n    readAllKeyframes();\n    measureAllKeyframes();\n}\nclass KeyframeResolver {\n    constructor(unresolvedKeyframes, onComplete, name, motionValue, element, isAsync = false) {\n        /**\n         * Track whether this resolver has completed. Once complete, it never\n         * needs to attempt keyframe resolution again.\n         */\n        this.isComplete = false;\n        /**\n         * Track whether this resolver is async. If it is, it'll be added to the\n         * resolver queue and flushed in the next frame. Resolvers that aren't going\n         * to trigger read/write thrashing don't need to be async.\n         */\n        this.isAsync = false;\n        /**\n         * Track whether this resolver needs to perform a measurement\n         * to resolve its keyframes.\n         */\n        this.needsMeasurement = false;\n        /**\n         * Track whether this resolver is currently scheduled to resolve\n         * to allow it to be cancelled and resumed externally.\n         */\n        this.isScheduled = false;\n        this.unresolvedKeyframes = [...unresolvedKeyframes];\n        this.onComplete = onComplete;\n        this.name = name;\n        this.motionValue = motionValue;\n        this.element = element;\n        this.isAsync = isAsync;\n    }\n    scheduleResolve() {\n        this.isScheduled = true;\n        if (this.isAsync) {\n            toResolve.add(this);\n            if (!isScheduled) {\n                isScheduled = true;\n                frame.read(readAllKeyframes);\n                frame.resolveKeyframes(measureAllKeyframes);\n            }\n        }\n        else {\n            this.readKeyframes();\n            this.complete();\n        }\n    }\n    readKeyframes() {\n        const { unresolvedKeyframes, name, element, motionValue } = this;\n        /**\n         * If a keyframe is null, we hydrate it either by reading it from\n         * the instance, or propagating from previous keyframes.\n         */\n        for (let i = 0; i < unresolvedKeyframes.length; i++) {\n            if (unresolvedKeyframes[i] === null) {\n                /**\n                 * If the first keyframe is null, we need to find its value by sampling the element\n                 */\n                if (i === 0) {\n                    const currentValue = motionValue === null || motionValue === void 0 ? void 0 : motionValue.get();\n                    const finalKeyframe = unresolvedKeyframes[unresolvedKeyframes.length - 1];\n                    if (currentValue !== undefined) {\n                        unresolvedKeyframes[0] = currentValue;\n                    }\n                    else if (element && name) {\n                        const valueAsRead = element.readValue(name, finalKeyframe);\n                        if (valueAsRead !== undefined && valueAsRead !== null) {\n                            unresolvedKeyframes[0] = valueAsRead;\n                        }\n                    }\n                    if (unresolvedKeyframes[0] === undefined) {\n                        unresolvedKeyframes[0] = finalKeyframe;\n                    }\n                    if (motionValue && currentValue === undefined) {\n                        motionValue.set(unresolvedKeyframes[0]);\n                    }\n                }\n                else {\n                    unresolvedKeyframes[i] = unresolvedKeyframes[i - 1];\n                }\n            }\n        }\n    }\n    setFinalKeyframe() { }\n    measureInitialState() { }\n    renderEndStyles() { }\n    measureEndState() { }\n    complete() {\n        this.isComplete = true;\n        this.onComplete(this.unresolvedKeyframes, this.finalKeyframe);\n        toResolve.delete(this);\n    }\n    cancel() {\n        if (!this.isComplete) {\n            this.isScheduled = false;\n            toResolve.delete(this);\n        }\n    }\n    resume() {\n        if (!this.isComplete)\n            this.scheduleResolve();\n    }\n}\n\nexport { KeyframeResolver, flushKeyframeResolvers };\n","/**\n * Check if value is a numerical string, ie a string that is purely a number eg \"100\" or \"-100.1\"\n */\nconst isNumericalString = (v) => /^-?(?:\\d+(?:\\.\\d+)?|\\.\\d+)$/u.test(v);\n\nexport { isNumericalString };\n","import { invariant } from 'motion-utils';\nimport { isNumericalString } from '../../../utils/is-numerical-string.mjs';\nimport { isCSSVariableToken } from './is-css-variable.mjs';\n\n/**\n * Parse Framer's special CSS variable format into a CSS token and a fallback.\n *\n * ```\n * `var(--foo, #fff)` => [`--foo`, '#fff']\n * ```\n *\n * @param current\n */\nconst splitCSSVariableRegex = \n// eslint-disable-next-line redos-detector/no-unsafe-regex -- false positive, as it can match a lot of words\n/^var\\(--(?:([\\w-]+)|([\\w-]+), ?([a-zA-Z\\d ()%#.,-]+))\\)/u;\nfunction parseCSSVariable(current) {\n    const match = splitCSSVariableRegex.exec(current);\n    if (!match)\n        return [,];\n    const [, token1, token2, fallback] = match;\n    return [`--${token1 !== null && token1 !== void 0 ? token1 : token2}`, fallback];\n}\nconst maxDepth = 4;\nfunction getVariableValue(current, element, depth = 1) {\n    invariant(depth <= maxDepth, `Max CSS variable fallback depth detected in property \"${current}\". This may indicate a circular fallback dependency.`);\n    const [token, fallback] = parseCSSVariable(current);\n    // No CSS variable detected\n    if (!token)\n        return;\n    // Attempt to read this CSS variable off the element\n    const resolved = window.getComputedStyle(element).getPropertyValue(token);\n    if (resolved) {\n        const trimmed = resolved.trim();\n        return isNumericalString(trimmed) ? parseFloat(trimmed) : trimmed;\n    }\n    return isCSSVariableToken(fallback)\n        ? getVariableValue(fallback, element, depth + 1)\n        : fallback;\n}\n\nexport { getVariableValue, parseCSSVariable };\n","/**\n * Tests a provided value against a ValueType\n */\nconst testValueType = (v) => (type) => type.test(v);\n\nexport { testValueType };\n","import { number } from '../../../value/types/numbers/index.mjs';\nimport { px, percent, degrees, vw, vh } from '../../../value/types/numbers/units.mjs';\nimport { testValueType } from './test.mjs';\nimport { auto } from './type-auto.mjs';\n\n/**\n * A list of value types commonly used for dimensions\n */\nconst dimensionValueTypes = [number, px, percent, degrees, vw, vh, auto];\n/**\n * Tests a dimensional value against the list of dimension ValueTypes\n */\nconst findDimensionValueType = (v) => dimensionValueTypes.find(testValueType(v));\n\nexport { dimensionValueTypes, findDimensionValueType };\n","/**\n * ValueType for \"auto\"\n */\nconst auto = {\n    test: (v) => v === \"auto\",\n    parse: (v) => v,\n};\n\nexport { auto };\n","import { isNone } from '../../animation/utils/is-none.mjs';\nimport { positionalKeys } from '../html/utils/keys-position.mjs';\nimport { makeNoneKeyframesAnimatable } from '../html/utils/make-none-animatable.mjs';\nimport { KeyframeResolver } from '../utils/KeyframesResolver.mjs';\nimport { getVariableValue } from './utils/css-variables-conversion.mjs';\nimport { isCSSVariableToken } from './utils/is-css-variable.mjs';\nimport { isNumOrPxType, positionalValues } from './utils/unit-conversion.mjs';\nimport { findDimensionValueType } from './value-types/dimensions.mjs';\n\nclass DOMKeyframesResolver extends KeyframeResolver {\n    constructor(unresolvedKeyframes, onComplete, name, motionValue, element) {\n        super(unresolvedKeyframes, onComplete, name, motionValue, element, true);\n    }\n    readKeyframes() {\n        const { unresolvedKeyframes, element, name } = this;\n        if (!element || !element.current)\n            return;\n        super.readKeyframes();\n        /**\n         * If any keyframe is a CSS variable, we need to find its value by sampling the element\n         */\n        for (let i = 0; i < unresolvedKeyframes.length; i++) {\n            let keyframe = unresolvedKeyframes[i];\n            if (typeof keyframe === \"string\") {\n                keyframe = keyframe.trim();\n                if (isCSSVariableToken(keyframe)) {\n                    const resolved = getVariableValue(keyframe, element.current);\n                    if (resolved !== undefined) {\n                        unresolvedKeyframes[i] = resolved;\n                    }\n                    if (i === unresolvedKeyframes.length - 1) {\n                        this.finalKeyframe = keyframe;\n                    }\n                }\n            }\n        }\n        /**\n         * Resolve \"none\" values. We do this potentially twice - once before and once after measuring keyframes.\n         * This could be seen as inefficient but it's a trade-off to avoid measurements in more situations, which\n         * have a far bigger performance impact.\n         */\n        this.resolveNoneKeyframes();\n        /**\n         * Check to see if unit type has changed. If so schedule jobs that will\n         * temporarily set styles to the destination keyframes.\n         * Skip if we have more than two keyframes or this isn't a positional value.\n         * TODO: We can throw if there are multiple keyframes and the value type changes.\n         */\n        if (!positionalKeys.has(name) || unresolvedKeyframes.length !== 2) {\n            return;\n        }\n        const [origin, target] = unresolvedKeyframes;\n        const originType = findDimensionValueType(origin);\n        const targetType = findDimensionValueType(target);\n        /**\n         * Either we don't recognise these value types or we can animate between them.\n         */\n        if (originType === targetType)\n            return;\n        /**\n         * If both values are numbers or pixels, we can animate between them by\n         * converting them to numbers.\n         */\n        if (isNumOrPxType(originType) && isNumOrPxType(targetType)) {\n            for (let i = 0; i < unresolvedKeyframes.length; i++) {\n                const value = unresolvedKeyframes[i];\n                if (typeof value === \"string\") {\n                    unresolvedKeyframes[i] = parseFloat(value);\n                }\n            }\n        }\n        else {\n            /**\n             * Else, the only way to resolve this is by measuring the element.\n             */\n            this.needsMeasurement = true;\n        }\n    }\n    resolveNoneKeyframes() {\n        const { unresolvedKeyframes, name } = this;\n        const noneKeyframeIndexes = [];\n        for (let i = 0; i < unresolvedKeyframes.length; i++) {\n            if (isNone(unresolvedKeyframes[i])) {\n                noneKeyframeIndexes.push(i);\n            }\n        }\n        if (noneKeyframeIndexes.length) {\n            makeNoneKeyframesAnimatable(unresolvedKeyframes, noneKeyframeIndexes, name);\n        }\n    }\n    measureInitialState() {\n        const { element, unresolvedKeyframes, name } = this;\n        if (!element || !element.current)\n            return;\n        if (name === \"height\") {\n            this.suspendedScrollY = window.pageYOffset;\n        }\n        this.measuredOrigin = positionalValues[name](element.measureViewportBox(), window.getComputedStyle(element.current));\n        unresolvedKeyframes[0] = this.measuredOrigin;\n        // Set final key frame to measure after next render\n        const measureKeyframe = unresolvedKeyframes[unresolvedKeyframes.length - 1];\n        if (measureKeyframe !== undefined) {\n            element.getValue(name, measureKeyframe).jump(measureKeyframe, false);\n        }\n    }\n    measureEndState() {\n        var _a;\n        const { element, name, unresolvedKeyframes } = this;\n        if (!element || !element.current)\n            return;\n        const value = element.getValue(name);\n        value && value.jump(this.measuredOrigin, false);\n        const finalKeyframeIndex = unresolvedKeyframes.length - 1;\n        const finalKeyframe = unresolvedKeyframes[finalKeyframeIndex];\n        unresolvedKeyframes[finalKeyframeIndex] = positionalValues[name](element.measureViewportBox(), window.getComputedStyle(element.current));\n        if (finalKeyframe !== null && this.finalKeyframe === undefined) {\n            this.finalKeyframe = finalKeyframe;\n        }\n        // If we removed transform values, reapply them before the next render\n        if ((_a = this.removedTransforms) === null || _a === void 0 ? void 0 : _a.length) {\n            this.removedTransforms.forEach(([unsetTransformName, unsetTransformValue]) => {\n                element\n                    .getValue(unsetTransformName)\n                    .set(unsetTransformValue);\n            });\n        }\n        this.resolveNoneKeyframes();\n    }\n}\n\nexport { DOMKeyframesResolver };\n","import { complex } from '../../value/types/complex/index.mjs';\n\n/**\n * Check if a value is animatable. Examples:\n *\n * ✅: 100, \"100px\", \"#fff\"\n * ❌: \"block\", \"url(2.jpg)\"\n * @param value\n *\n * @internal\n */\nconst isAnimatable = (value, name) => {\n    // If the list of keys tat might be non-animatable grows, replace with Set\n    if (name === \"zIndex\")\n        return false;\n    // If it's a number or a keyframes array, we can animate it. We might at some point\n    // need to do a deep isAnimatable check of keyframes, or let Popmotion handle this,\n    // but for now lets leave it like this for performance reasons\n    if (typeof value === \"number\" || Array.isArray(value))\n        return true;\n    if (typeof value === \"string\" && // It's animatable if we have a string\n        (complex.test(value) || value === \"0\") && // And it contains numbers and/or colors\n        !value.startsWith(\"url(\") // Unless it starts with \"url(\"\n    ) {\n        return true;\n    }\n    return false;\n};\n\nexport { isAnimatable };\n","import { isGenerator } from 'motion-dom';\nimport { warning } from 'motion-utils';\nimport { isAnimatable } from '../../utils/is-animatable.mjs';\n\nfunction hasKeyframesChanged(keyframes) {\n    const current = keyframes[0];\n    if (keyframes.length === 1)\n        return true;\n    for (let i = 0; i < keyframes.length; i++) {\n        if (keyframes[i] !== current)\n            return true;\n    }\n}\nfunction canAnimate(keyframes, name, type, velocity) {\n    /**\n     * Check if we're able to animate between the start and end keyframes,\n     * and throw a warning if we're attempting to animate between one that's\n     * animatable and another that isn't.\n     */\n    const originKeyframe = keyframes[0];\n    if (originKeyframe === null)\n        return false;\n    /**\n     * These aren't traditionally animatable but we do support them.\n     * In future we could look into making this more generic or replacing\n     * this function with mix() === mixImmediate\n     */\n    if (name === \"display\" || name === \"visibility\")\n        return true;\n    const targetKeyframe = keyframes[keyframes.length - 1];\n    const isOriginAnimatable = isAnimatable(originKeyframe, name);\n    const isTargetAnimatable = isAnimatable(targetKeyframe, name);\n    warning(isOriginAnimatable === isTargetAnimatable, `You are trying to animate ${name} from \"${originKeyframe}\" to \"${targetKeyframe}\". ${originKeyframe} is not an animatable value - to enable this animation set ${originKeyframe} to a value animatable to ${targetKeyframe} via the \\`style\\` property.`);\n    // Always skip if any of these are true\n    if (!isOriginAnimatable || !isTargetAnimatable) {\n        return false;\n    }\n    return (hasKeyframesChanged(keyframes) ||\n        ((type === \"spring\" || isGenerator(type)) && velocity));\n}\n\nexport { canAnimate };\n","const isNotNull = (value) => value !== null;\nfunction getFinalKeyframe(keyframes, { repeat, repeatType = \"loop\" }, finalKeyframe) {\n    const resolvedKeyframes = keyframes.filter(isNotNull);\n    const index = repeat && repeatType !== \"loop\" && repeat % 2 === 1\n        ? 0\n        : resolvedKeyframes.length - 1;\n    return !index || finalKeyframe === undefined\n        ? resolvedKeyframes[index]\n        : finalKeyframe;\n}\n\nexport { getFinalKeyframe };\n","import { time } from '../../frameloop/sync-time.mjs';\nimport { flushKeyframeResolvers } from '../../render/utils/KeyframesResolver.mjs';\nimport { instantAnimationState } from '../../utils/use-instant-transition-state.mjs';\nimport { canAnimate } from './utils/can-animate.mjs';\nimport { getFinalKeyframe } from './waapi/utils/get-final-keyframe.mjs';\n\n/**\n * Maximum time allowed between an animation being created and it being\n * resolved for us to use the latter as the start time.\n *\n * This is to ensure that while we prefer to \"start\" an animation as soon\n * as it's triggered, we also want to avoid a visual jump if there's a big delay\n * between these two moments.\n */\nconst MAX_RESOLVE_DELAY = 40;\nclass BaseAnimation {\n    constructor({ autoplay = true, delay = 0, type = \"keyframes\", repeat = 0, repeatDelay = 0, repeatType = \"loop\", ...options }) {\n        // Track whether the animation has been stopped. Stopped animations won't restart.\n        this.isStopped = false;\n        this.hasAttemptedResolve = false;\n        this.createdAt = time.now();\n        this.options = {\n            autoplay,\n            delay,\n            type,\n            repeat,\n            repeatDelay,\n            repeatType,\n            ...options,\n        };\n        this.updateFinishedPromise();\n    }\n    /**\n     * This method uses the createdAt and resolvedAt to calculate the\n     * animation startTime. *Ideally*, we would use the createdAt time as t=0\n     * as the following frame would then be the first frame of the animation in\n     * progress, which would feel snappier.\n     *\n     * However, if there's a delay (main thread work) between the creation of\n     * the animation and the first commited frame, we prefer to use resolvedAt\n     * to avoid a sudden jump into the animation.\n     */\n    calcStartTime() {\n        if (!this.resolvedAt)\n            return this.createdAt;\n        return this.resolvedAt - this.createdAt > MAX_RESOLVE_DELAY\n            ? this.resolvedAt\n            : this.createdAt;\n    }\n    /**\n     * A getter for resolved data. If keyframes are not yet resolved, accessing\n     * this.resolved will synchronously flush all pending keyframe resolvers.\n     * This is a deoptimisation, but at its worst still batches read/writes.\n     */\n    get resolved() {\n        if (!this._resolved && !this.hasAttemptedResolve) {\n            flushKeyframeResolvers();\n        }\n        return this._resolved;\n    }\n    /**\n     * A method to be called when the keyframes resolver completes. This method\n     * will check if its possible to run the animation and, if not, skip it.\n     * Otherwise, it will call initPlayback on the implementing class.\n     */\n    onKeyframesResolved(keyframes, finalKeyframe) {\n        this.resolvedAt = time.now();\n        this.hasAttemptedResolve = true;\n        const { name, type, velocity, delay, onComplete, onUpdate, isGenerator, } = this.options;\n        /**\n         * If we can't animate this value with the resolved keyframes\n         * then we should complete it immediately.\n         */\n        if (!isGenerator && !canAnimate(keyframes, name, type, velocity)) {\n            // Finish immediately\n            if (instantAnimationState.current || !delay) {\n                onUpdate &&\n                    onUpdate(getFinalKeyframe(keyframes, this.options, finalKeyframe));\n                onComplete && onComplete();\n                this.resolveFinishedPromise();\n                return;\n            }\n            // Finish after a delay\n            else {\n                this.options.duration = 0;\n            }\n        }\n        const resolvedAnimation = this.initPlayback(keyframes, finalKeyframe);\n        if (resolvedAnimation === false)\n            return;\n        this._resolved = {\n            keyframes,\n            finalKeyframe,\n            ...resolvedAnimation,\n        };\n        this.onPostResolved();\n    }\n    onPostResolved() { }\n    /**\n     * Allows the returned animation to be awaited or promise-chained. Currently\n     * resolves when the animation finishes at all but in a future update could/should\n     * reject if its cancels.\n     */\n    then(resolve, reject) {\n        return this.currentFinishedPromise.then(resolve, reject);\n    }\n    flatten() {\n        this.options.type = \"keyframes\";\n        this.options.ease = \"linear\";\n    }\n    updateFinishedPromise() {\n        this.currentFinishedPromise = new Promise((resolve) => {\n            this.resolveFinishedPromise = resolve;\n        });\n    }\n}\n\nexport { BaseAnimation };\n","/*\n  Value in range from progress\n\n  Given a lower limit and an upper limit, we return the value within\n  that range as expressed by progress (usually a number from 0 to 1)\n\n  So progress = 0.5 would change\n\n  from -------- to\n\n  to\n\n  from ---- to\n\n  E.g. from = 10, to = 20, progress = 0.5 => 15\n\n  @param [number]: Lower limit of range\n  @param [number]: Upper limit of range\n  @param [number]: The progress between lower and upper limits expressed 0-1\n  @return [number]: Value as calculated from progress within range (not limited within range)\n*/\nconst mixNumber = (from, to, progress) => {\n    return from + (to - from) * progress;\n};\n\nexport { mixNumber };\n","// Adapted from https://gist.github.com/mjackson/5311256\nfunction hueToRgb(p, q, t) {\n    if (t < 0)\n        t += 1;\n    if (t > 1)\n        t -= 1;\n    if (t < 1 / 6)\n        return p + (q - p) * 6 * t;\n    if (t < 1 / 2)\n        return q;\n    if (t < 2 / 3)\n        return p + (q - p) * (2 / 3 - t) * 6;\n    return p;\n}\nfunction hslaToRgba({ hue, saturation, lightness, alpha }) {\n    hue /= 360;\n    saturation /= 100;\n    lightness /= 100;\n    let red = 0;\n    let green = 0;\n    let blue = 0;\n    if (!saturation) {\n        red = green = blue = lightness;\n    }\n    else {\n        const q = lightness < 0.5\n            ? lightness * (1 + saturation)\n            : lightness + saturation - lightness * saturation;\n        const p = 2 * lightness - q;\n        red = hueToRgb(p, q, hue + 1 / 3);\n        green = hueToRgb(p, q, hue);\n        blue = hueToRgb(p, q, hue - 1 / 3);\n    }\n    return {\n        red: Math.round(red * 255),\n        green: Math.round(green * 255),\n        blue: Math.round(blue * 255),\n        alpha,\n    };\n}\n\nexport { hslaToRgba };\n","function mixImmediate(a, b) {\n    return (p) => (p > 0 ? b : a);\n}\n\nexport { mixImmediate };\n","import { mixNumber } from './number.mjs';\nimport { warning } from 'motion-utils';\nimport { hslaToRgba } from '../hsla-to-rgba.mjs';\nimport { hex } from '../../value/types/color/hex.mjs';\nimport { rgba } from '../../value/types/color/rgba.mjs';\nimport { hsla } from '../../value/types/color/hsla.mjs';\nimport { mixImmediate } from './immediate.mjs';\n\n// Linear color space blending\n// Explained https://www.youtube.com/watch?v=LKnqECcg6Gw\n// Demonstrated http://codepen.io/osublake/pen/xGVVaN\nconst mixLinearColor = (from, to, v) => {\n    const fromExpo = from * from;\n    const expo = v * (to * to - fromExpo) + fromExpo;\n    return expo < 0 ? 0 : Math.sqrt(expo);\n};\nconst colorTypes = [hex, rgba, hsla];\nconst getColorType = (v) => colorTypes.find((type) => type.test(v));\nfunction asRGBA(color) {\n    const type = getColorType(color);\n    warning(Boolean(type), `'${color}' is not an animatable color. Use the equivalent color code instead.`);\n    if (!Boolean(type))\n        return false;\n    let model = type.parse(color);\n    if (type === hsla) {\n        // TODO Remove this cast - needed since Motion's stricter typing\n        model = hslaToRgba(model);\n    }\n    return model;\n}\nconst mixColor = (from, to) => {\n    const fromRGBA = asRGBA(from);\n    const toRGBA = asRGBA(to);\n    if (!fromRGBA || !toRGBA) {\n        return mixImmediate(from, to);\n    }\n    const blended = { ...fromRGBA };\n    return (v) => {\n        blended.red = mixLinearColor(fromRGBA.red, toRGBA.red, v);\n        blended.green = mixLinearColor(fromRGBA.green, toRGBA.green, v);\n        blended.blue = mixLinearColor(fromRGBA.blue, toRGBA.blue, v);\n        blended.alpha = mixNumber(fromRGBA.alpha, toRGBA.alpha, v);\n        return rgba.transform(blended);\n    };\n};\n\nexport { mixColor, mixLinearColor };\n","/**\n * Pipe\n * Compose other transformers to run linearily\n * pipe(min(20), max(40))\n * @param  {...functions} transformers\n * @return {function}\n */\nconst combineFunctions = (a, b) => (v) => b(a(v));\nconst pipe = (...transformers) => transformers.reduce(combineFunctions);\n\nexport { pipe };\n","const invisibleValues = new Set([\"none\", \"hidden\"]);\n/**\n * Returns a function that, when provided a progress value between 0 and 1,\n * will return the \"none\" or \"hidden\" string only when the progress is that of\n * the origin or target.\n */\nfunction mixVisibility(origin, target) {\n    if (invisibleValues.has(origin)) {\n        return (p) => (p <= 0 ? origin : target);\n    }\n    else {\n        return (p) => (p >= 1 ? target : origin);\n    }\n}\n\nexport { invisibleValues, mixVisibility };\n","import { mixNumber as mixNumber$1 } from './number.mjs';\nimport { mixColor } from './color.mjs';\nimport { pipe } from '../pipe.mjs';\nimport { warning } from 'motion-utils';\nimport { color } from '../../value/types/color/index.mjs';\nimport { complex, analyseComplexValue } from '../../value/types/complex/index.mjs';\nimport { isCSSVariableToken } from '../../render/dom/utils/is-css-variable.mjs';\nimport { invisibleValues, mixVisibility } from './visibility.mjs';\nimport { mixImmediate } from './immediate.mjs';\n\nfunction mixNumber(a, b) {\n    return (p) => mixNumber$1(a, b, p);\n}\nfunction getMixer(a) {\n    if (typeof a === \"number\") {\n        return mixNumber;\n    }\n    else if (typeof a === \"string\") {\n        return isCSSVariableToken(a)\n            ? mixImmediate\n            : color.test(a)\n                ? mixColor\n                : mixComplex;\n    }\n    else if (Array.isArray(a)) {\n        return mixArray;\n    }\n    else if (typeof a === \"object\") {\n        return color.test(a) ? mixColor : mixObject;\n    }\n    return mixImmediate;\n}\nfunction mixArray(a, b) {\n    const output = [...a];\n    const numValues = output.length;\n    const blendValue = a.map((v, i) => getMixer(v)(v, b[i]));\n    return (p) => {\n        for (let i = 0; i < numValues; i++) {\n            output[i] = blendValue[i](p);\n        }\n        return output;\n    };\n}\nfunction mixObject(a, b) {\n    const output = { ...a, ...b };\n    const blendValue = {};\n    for (const key in output) {\n        if (a[key] !== undefined && b[key] !== undefined) {\n            blendValue[key] = getMixer(a[key])(a[key], b[key]);\n        }\n    }\n    return (v) => {\n        for (const key in blendValue) {\n            output[key] = blendValue[key](v);\n        }\n        return output;\n    };\n}\nfunction matchOrder(origin, target) {\n    var _a;\n    const orderedOrigin = [];\n    const pointers = { color: 0, var: 0, number: 0 };\n    for (let i = 0; i < target.values.length; i++) {\n        const type = target.types[i];\n        const originIndex = origin.indexes[type][pointers[type]];\n        const originValue = (_a = origin.values[originIndex]) !== null && _a !== void 0 ? _a : 0;\n        orderedOrigin[i] = originValue;\n        pointers[type]++;\n    }\n    return orderedOrigin;\n}\nconst mixComplex = (origin, target) => {\n    const template = complex.createTransformer(target);\n    const originStats = analyseComplexValue(origin);\n    const targetStats = analyseComplexValue(target);\n    const canInterpolate = originStats.indexes.var.length === targetStats.indexes.var.length &&\n        originStats.indexes.color.length === targetStats.indexes.color.length &&\n        originStats.indexes.number.length >= targetStats.indexes.number.length;\n    if (canInterpolate) {\n        if ((invisibleValues.has(origin) &&\n            !targetStats.values.length) ||\n            (invisibleValues.has(target) &&\n                !originStats.values.length)) {\n            return mixVisibility(origin, target);\n        }\n        return pipe(mixArray(matchOrder(originStats, targetStats), targetStats.values), template);\n    }\n    else {\n        warning(true, `Complex values '${origin}' and '${target}' too different to mix. Ensure all colors are of the same type, and that each contains the same quantity of number and color values. Falling back to instant transition.`);\n        return mixImmediate(origin, target);\n    }\n};\n\nexport { getMixer, mixArray, mixComplex, mixObject };\n","import { getMixer } from './complex.mjs';\nimport { mixNumber } from './number.mjs';\n\nfunction mix(from, to, p) {\n    if (typeof from === \"number\" &&\n        typeof to === \"number\" &&\n        typeof p === \"number\") {\n        return mixNumber(from, to, p);\n    }\n    const mixer = getMixer(from);\n    return mixer(from, to);\n}\n\nexport { mix };\n","import { velocityPerSecond } from '../../../utils/velocity-per-second.mjs';\n\nconst velocitySampleDuration = 5; // ms\nfunction calcGeneratorVelocity(resolveValue, t, current) {\n    const prevT = Math.max(t - velocitySampleDuration, 0);\n    return velocityPerSecond(current - resolveValue(prevT), t - prevT);\n}\n\nexport { calcGeneratorVelocity };\n","const springDefaults = {\n    // Default spring physics\n    stiffness: 100,\n    damping: 10,\n    mass: 1.0,\n    velocity: 0.0,\n    // Default duration/bounce-based options\n    duration: 800, // in ms\n    bounce: 0.3,\n    visualDuration: 0.3, // in seconds\n    // Rest thresholds\n    restSpeed: {\n        granular: 0.01,\n        default: 2,\n    },\n    restDelta: {\n        granular: 0.005,\n        default: 0.5,\n    },\n    // Limits\n    minDuration: 0.01, // in seconds\n    maxDuration: 10.0, // in seconds\n    minDamping: 0.05,\n    maxDamping: 1,\n};\n\nexport { springDefaults };\n","import { warning, secondsToMilliseconds, millisecondsToSeconds } from 'motion-utils';\nimport { clamp } from '../../../utils/clamp.mjs';\nimport { springDefaults } from './defaults.mjs';\n\nconst safeMin = 0.001;\nfunction findSpring({ duration = springDefaults.duration, bounce = springDefaults.bounce, velocity = springDefaults.velocity, mass = springDefaults.mass, }) {\n    let envelope;\n    let derivative;\n    warning(duration <= secondsToMilliseconds(springDefaults.maxDuration), \"Spring duration must be 10 seconds or less\");\n    let dampingRatio = 1 - bounce;\n    /**\n     * Restrict dampingRatio and duration to within acceptable ranges.\n     */\n    dampingRatio = clamp(springDefaults.minDamping, springDefaults.maxDamping, dampingRatio);\n    duration = clamp(springDefaults.minDuration, springDefaults.maxDuration, millisecondsToSeconds(duration));\n    if (dampingRatio < 1) {\n        /**\n         * Underdamped spring\n         */\n        envelope = (undampedFreq) => {\n            const exponentialDecay = undampedFreq * dampingRatio;\n            const delta = exponentialDecay * duration;\n            const a = exponentialDecay - velocity;\n            const b = calcAngularFreq(undampedFreq, dampingRatio);\n            const c = Math.exp(-delta);\n            return safeMin - (a / b) * c;\n        };\n        derivative = (undampedFreq) => {\n            const exponentialDecay = undampedFreq * dampingRatio;\n            const delta = exponentialDecay * duration;\n            const d = delta * velocity + velocity;\n            const e = Math.pow(dampingRatio, 2) * Math.pow(undampedFreq, 2) * duration;\n            const f = Math.exp(-delta);\n            const g = calcAngularFreq(Math.pow(undampedFreq, 2), dampingRatio);\n            const factor = -envelope(undampedFreq) + safeMin > 0 ? -1 : 1;\n            return (factor * ((d - e) * f)) / g;\n        };\n    }\n    else {\n        /**\n         * Critically-damped spring\n         */\n        envelope = (undampedFreq) => {\n            const a = Math.exp(-undampedFreq * duration);\n            const b = (undampedFreq - velocity) * duration + 1;\n            return -safeMin + a * b;\n        };\n        derivative = (undampedFreq) => {\n            const a = Math.exp(-undampedFreq * duration);\n            const b = (velocity - undampedFreq) * (duration * duration);\n            return a * b;\n        };\n    }\n    const initialGuess = 5 / duration;\n    const undampedFreq = approximateRoot(envelope, derivative, initialGuess);\n    duration = secondsToMilliseconds(duration);\n    if (isNaN(undampedFreq)) {\n        return {\n            stiffness: springDefaults.stiffness,\n            damping: springDefaults.damping,\n            duration,\n        };\n    }\n    else {\n        const stiffness = Math.pow(undampedFreq, 2) * mass;\n        return {\n            stiffness,\n            damping: dampingRatio * 2 * Math.sqrt(mass * stiffness),\n            duration,\n        };\n    }\n}\nconst rootIterations = 12;\nfunction approximateRoot(envelope, derivative, initialGuess) {\n    let result = initialGuess;\n    for (let i = 1; i < rootIterations; i++) {\n        result = result - envelope(result) / derivative(result);\n    }\n    return result;\n}\nfunction calcAngularFreq(undampedFreq, dampingRatio) {\n    return undampedFreq * Math.sqrt(1 - dampingRatio * dampingRatio);\n}\n\nexport { calcAngularFreq, findSpring };\n","import { calcGeneratorDuration, maxGeneratorDuration, generateLinearEasing } from 'motion-dom';\nimport { millisecondsToSeconds, secondsToMilliseconds } from 'motion-utils';\nimport { clamp } from '../../../utils/clamp.mjs';\nimport { calcGeneratorVelocity } from '../utils/velocity.mjs';\nimport { springDefaults } from './defaults.mjs';\nimport { findSpring, calcAngularFreq } from './find.mjs';\n\nconst durationKeys = [\"duration\", \"bounce\"];\nconst physicsKeys = [\"stiffness\", \"damping\", \"mass\"];\nfunction isSpringType(options, keys) {\n    return keys.some((key) => options[key] !== undefined);\n}\nfunction getSpringOptions(options) {\n    let springOptions = {\n        velocity: springDefaults.velocity,\n        stiffness: springDefaults.stiffness,\n        damping: springDefaults.damping,\n        mass: springDefaults.mass,\n        isResolvedFromDuration: false,\n        ...options,\n    };\n    // stiffness/damping/mass overrides duration/bounce\n    if (!isSpringType(options, physicsKeys) &&\n        isSpringType(options, durationKeys)) {\n        if (options.visualDuration) {\n            const visualDuration = options.visualDuration;\n            const root = (2 * Math.PI) / (visualDuration * 1.2);\n            const stiffness = root * root;\n            const damping = 2 *\n                clamp(0.05, 1, 1 - (options.bounce || 0)) *\n                Math.sqrt(stiffness);\n            springOptions = {\n                ...springOptions,\n                mass: springDefaults.mass,\n                stiffness,\n                damping,\n            };\n        }\n        else {\n            const derived = findSpring(options);\n            springOptions = {\n                ...springOptions,\n                ...derived,\n                mass: springDefaults.mass,\n            };\n            springOptions.isResolvedFromDuration = true;\n        }\n    }\n    return springOptions;\n}\nfunction spring(optionsOrVisualDuration = springDefaults.visualDuration, bounce = springDefaults.bounce) {\n    const options = typeof optionsOrVisualDuration !== \"object\"\n        ? {\n            visualDuration: optionsOrVisualDuration,\n            keyframes: [0, 1],\n            bounce,\n        }\n        : optionsOrVisualDuration;\n    let { restSpeed, restDelta } = options;\n    const origin = options.keyframes[0];\n    const target = options.keyframes[options.keyframes.length - 1];\n    /**\n     * This is the Iterator-spec return value. We ensure it's mutable rather than using a generator\n     * to reduce GC during animation.\n     */\n    const state = { done: false, value: origin };\n    const { stiffness, damping, mass, duration, velocity, isResolvedFromDuration, } = getSpringOptions({\n        ...options,\n        velocity: -millisecondsToSeconds(options.velocity || 0),\n    });\n    const initialVelocity = velocity || 0.0;\n    const dampingRatio = damping / (2 * Math.sqrt(stiffness * mass));\n    const initialDelta = target - origin;\n    const undampedAngularFreq = millisecondsToSeconds(Math.sqrt(stiffness / mass));\n    /**\n     * If we're working on a granular scale, use smaller defaults for determining\n     * when the spring is finished.\n     *\n     * These defaults have been selected emprically based on what strikes a good\n     * ratio between feeling good and finishing as soon as changes are imperceptible.\n     */\n    const isGranularScale = Math.abs(initialDelta) < 5;\n    restSpeed || (restSpeed = isGranularScale\n        ? springDefaults.restSpeed.granular\n        : springDefaults.restSpeed.default);\n    restDelta || (restDelta = isGranularScale\n        ? springDefaults.restDelta.granular\n        : springDefaults.restDelta.default);\n    let resolveSpring;\n    if (dampingRatio < 1) {\n        const angularFreq = calcAngularFreq(undampedAngularFreq, dampingRatio);\n        // Underdamped spring\n        resolveSpring = (t) => {\n            const envelope = Math.exp(-dampingRatio * undampedAngularFreq * t);\n            return (target -\n                envelope *\n                    (((initialVelocity +\n                        dampingRatio * undampedAngularFreq * initialDelta) /\n                        angularFreq) *\n                        Math.sin(angularFreq * t) +\n                        initialDelta * Math.cos(angularFreq * t)));\n        };\n    }\n    else if (dampingRatio === 1) {\n        // Critically damped spring\n        resolveSpring = (t) => target -\n            Math.exp(-undampedAngularFreq * t) *\n                (initialDelta +\n                    (initialVelocity + undampedAngularFreq * initialDelta) * t);\n    }\n    else {\n        // Overdamped spring\n        const dampedAngularFreq = undampedAngularFreq * Math.sqrt(dampingRatio * dampingRatio - 1);\n        resolveSpring = (t) => {\n            const envelope = Math.exp(-dampingRatio * undampedAngularFreq * t);\n            // When performing sinh or cosh values can hit Infinity so we cap them here\n            const freqForT = Math.min(dampedAngularFreq * t, 300);\n            return (target -\n                (envelope *\n                    ((initialVelocity +\n                        dampingRatio * undampedAngularFreq * initialDelta) *\n                        Math.sinh(freqForT) +\n                        dampedAngularFreq *\n                            initialDelta *\n                            Math.cosh(freqForT))) /\n                    dampedAngularFreq);\n        };\n    }\n    const generator = {\n        calculatedDuration: isResolvedFromDuration ? duration || null : null,\n        next: (t) => {\n            const current = resolveSpring(t);\n            if (!isResolvedFromDuration) {\n                let currentVelocity = 0.0;\n                /**\n                 * We only need to calculate velocity for under-damped springs\n                 * as over- and critically-damped springs can't overshoot, so\n                 * checking only for displacement is enough.\n                 */\n                if (dampingRatio < 1) {\n                    currentVelocity =\n                        t === 0\n                            ? secondsToMilliseconds(initialVelocity)\n                            : calcGeneratorVelocity(resolveSpring, t, current);\n                }\n                const isBelowVelocityThreshold = Math.abs(currentVelocity) <= restSpeed;\n                const isBelowDisplacementThreshold = Math.abs(target - current) <= restDelta;\n                state.done =\n                    isBelowVelocityThreshold && isBelowDisplacementThreshold;\n            }\n            else {\n                state.done = t >= duration;\n            }\n            state.value = state.done ? target : current;\n            return state;\n        },\n        toString: () => {\n            const calculatedDuration = Math.min(calcGeneratorDuration(generator), maxGeneratorDuration);\n            const easing = generateLinearEasing((progress) => generator.next(calculatedDuration * progress).value, calculatedDuration, 30);\n            return calculatedDuration + \"ms \" + easing;\n        },\n    };\n    return generator;\n}\n\nexport { spring };\n","import { spring } from './spring/index.mjs';\nimport { calcGeneratorVelocity } from './utils/velocity.mjs';\n\nfunction inertia({ keyframes, velocity = 0.0, power = 0.8, timeConstant = 325, bounceDamping = 10, bounceStiffness = 500, modifyTarget, min, max, restDelta = 0.5, restSpeed, }) {\n    const origin = keyframes[0];\n    const state = {\n        done: false,\n        value: origin,\n    };\n    const isOutOfBounds = (v) => (min !== undefined && v < min) || (max !== undefined && v > max);\n    const nearestBoundary = (v) => {\n        if (min === undefined)\n            return max;\n        if (max === undefined)\n            return min;\n        return Math.abs(min - v) < Math.abs(max - v) ? min : max;\n    };\n    let amplitude = power * velocity;\n    const ideal = origin + amplitude;\n    const target = modifyTarget === undefined ? ideal : modifyTarget(ideal);\n    /**\n     * If the target has changed we need to re-calculate the amplitude, otherwise\n     * the animation will start from the wrong position.\n     */\n    if (target !== ideal)\n        amplitude = target - origin;\n    const calcDelta = (t) => -amplitude * Math.exp(-t / timeConstant);\n    const calcLatest = (t) => target + calcDelta(t);\n    const applyFriction = (t) => {\n        const delta = calcDelta(t);\n        const latest = calcLatest(t);\n        state.done = Math.abs(delta) <= restDelta;\n        state.value = state.done ? target : latest;\n    };\n    /**\n     * Ideally this would resolve for t in a stateless way, we could\n     * do that by always precalculating the animation but as we know\n     * this will be done anyway we can assume that spring will\n     * be discovered during that.\n     */\n    let timeReachedBoundary;\n    let spring$1;\n    const checkCatchBoundary = (t) => {\n        if (!isOutOfBounds(state.value))\n            return;\n        timeReachedBoundary = t;\n        spring$1 = spring({\n            keyframes: [state.value, nearestBoundary(state.value)],\n            velocity: calcGeneratorVelocity(calcLatest, t, state.value), // TODO: This should be passing * 1000\n            damping: bounceDamping,\n            stiffness: bounceStiffness,\n            restDelta,\n            restSpeed,\n        });\n    };\n    checkCatchBoundary(0);\n    return {\n        calculatedDuration: null,\n        next: (t) => {\n            /**\n             * We need to resolve the friction to figure out if we need a\n             * spring but we don't want to do this twice per frame. So here\n             * we flag if we updated for this frame and later if we did\n             * we can skip doing it again.\n             */\n            let hasUpdatedFrame = false;\n            if (!spring$1 && timeReachedBoundary === undefined) {\n                hasUpdatedFrame = true;\n                applyFriction(t);\n                checkCatchBoundary(t);\n            }\n            /**\n             * If we have a spring and the provided t is beyond the moment the friction\n             * animation crossed the min/max boundary, use the spring.\n             */\n            if (timeReachedBoundary !== undefined && t >= timeReachedBoundary) {\n                return spring$1.next(t - timeReachedBoundary);\n            }\n            else {\n                !hasUpdatedFrame && applyFriction(t);\n                return state;\n            }\n        },\n    };\n}\n\nexport { inertia };\n","import { cubicBezier } from './cubic-bezier.mjs';\n\nconst easeIn = /*@__PURE__*/ cubicBezier(0.42, 0, 1, 1);\nconst easeOut = /*@__PURE__*/ cubicBezier(0, 0, 0.58, 1);\nconst easeInOut = /*@__PURE__*/ cubicBezier(0.42, 0, 0.58, 1);\n\nexport { easeIn, easeInOut, easeOut };\n","const isEasingArray = (ease) => {\n    return Array.isArray(ease) && typeof ease[0] !== \"number\";\n};\n\nexport { isEasingArray };\n","import { isBezierDefinition } from 'motion-dom';\nimport { invariant, noop } from 'motion-utils';\nimport { anticipate } from '../anticipate.mjs';\nimport { backIn, backInOut, backOut } from '../back.mjs';\nimport { circIn, circInOut, circOut } from '../circ.mjs';\nimport { cubicBezier } from '../cubic-bezier.mjs';\nimport { easeIn, easeInOut, easeOut } from '../ease.mjs';\n\nconst easingLookup = {\n    linear: noop,\n    easeIn,\n    easeInOut,\n    easeOut,\n    circIn,\n    circInOut,\n    circOut,\n    backIn,\n    backInOut,\n    backOut,\n    anticipate,\n};\nconst easingDefinitionToFunction = (definition) => {\n    if (isBezierDefinition(definition)) {\n        // If cubic bezier definition, create bezier curve\n        invariant(definition.length === 4, `Cubic bezier arrays must contain four numerical values.`);\n        const [x1, y1, x2, y2] = definition;\n        return cubicBezier(x1, y1, x2, y2);\n    }\n    else if (typeof definition === \"string\") {\n        // Else lookup from table\n        invariant(easingLookup[definition] !== undefined, `Invalid easing type '${definition}'`);\n        return easingLookup[definition];\n    }\n    return definition;\n};\n\nexport { easingDefinitionToFunction };\n","import { invariant, noop, progress } from 'motion-utils';\nimport { clamp } from './clamp.mjs';\nimport { mix } from './mix/index.mjs';\nimport { pipe } from './pipe.mjs';\n\nfunction createMixers(output, ease, customMixer) {\n    const mixers = [];\n    const mixerFactory = customMixer || mix;\n    const numMixers = output.length - 1;\n    for (let i = 0; i < numMixers; i++) {\n        let mixer = mixerFactory(output[i], output[i + 1]);\n        if (ease) {\n            const easingFunction = Array.isArray(ease) ? ease[i] || noop : ease;\n            mixer = pipe(easingFunction, mixer);\n        }\n        mixers.push(mixer);\n    }\n    return mixers;\n}\n/**\n * Create a function that maps from a numerical input array to a generic output array.\n *\n * Accepts:\n *   - Numbers\n *   - Colors (hex, hsl, hsla, rgb, rgba)\n *   - Complex (combinations of one or more numbers or strings)\n *\n * ```jsx\n * const mixColor = interpolate([0, 1], ['#fff', '#000'])\n *\n * mixColor(0.5) // 'rgba(128, 128, 128, 1)'\n * ```\n *\n * TODO Revist this approach once we've moved to data models for values,\n * probably not needed to pregenerate mixer functions.\n *\n * @public\n */\nfunction interpolate(input, output, { clamp: isClamp = true, ease, mixer } = {}) {\n    const inputLength = input.length;\n    invariant(inputLength === output.length, \"Both input and output ranges must be the same length\");\n    /**\n     * If we're only provided a single input, we can just make a function\n     * that returns the output.\n     */\n    if (inputLength === 1)\n        return () => output[0];\n    if (inputLength === 2 && output[0] === output[1])\n        return () => output[1];\n    const isZeroDeltaRange = input[0] === input[1];\n    // If input runs highest -> lowest, reverse both arrays\n    if (input[0] > input[inputLength - 1]) {\n        input = [...input].reverse();\n        output = [...output].reverse();\n    }\n    const mixers = createMixers(output, ease, mixer);\n    const numMixers = mixers.length;\n    const interpolator = (v) => {\n        if (isZeroDeltaRange && v < input[0])\n            return output[0];\n        let i = 0;\n        if (numMixers > 1) {\n            for (; i < input.length - 2; i++) {\n                if (v < input[i + 1])\n                    break;\n            }\n        }\n        const progressInRange = progress(input[i], input[i + 1], v);\n        return mixers[i](progressInRange);\n    };\n    return isClamp\n        ? (v) => interpolator(clamp(input[0], input[inputLength - 1], v))\n        : interpolator;\n}\n\nexport { interpolate };\n","import { progress } from 'motion-utils';\nimport { mixNumber } from '../mix/number.mjs';\n\nfunction fillOffset(offset, remaining) {\n    const min = offset[offset.length - 1];\n    for (let i = 1; i <= remaining; i++) {\n        const offsetProgress = progress(0, remaining, i);\n        offset.push(mixNumber(min, 1, offsetProgress));\n    }\n}\n\nexport { fillOffset };\n","import { fillOffset } from './fill.mjs';\n\nfunction defaultOffset(arr) {\n    const offset = [0];\n    fillOffset(offset, arr.length - 1);\n    return offset;\n}\n\nexport { defaultOffset };\n","function convertOffsetToTimes(offset, duration) {\n    return offset.map((o) => o * duration);\n}\n\nexport { convertOffsetToTimes };\n","import { easeInOut } from '../../easing/ease.mjs';\nimport { isEasingArray } from '../../easing/utils/is-easing-array.mjs';\nimport { easingDefinitionToFunction } from '../../easing/utils/map.mjs';\nimport { interpolate } from '../../utils/interpolate.mjs';\nimport { defaultOffset } from '../../utils/offsets/default.mjs';\nimport { convertOffsetToTimes } from '../../utils/offsets/time.mjs';\n\nfunction defaultEasing(values, easing) {\n    return values.map(() => easing || easeInOut).splice(0, values.length - 1);\n}\nfunction keyframes({ duration = 300, keyframes: keyframeValues, times, ease = \"easeInOut\", }) {\n    /**\n     * Easing functions can be externally defined as strings. Here we convert them\n     * into actual functions.\n     */\n    const easingFunctions = isEasingArray(ease)\n        ? ease.map(easingDefinitionToFunction)\n        : easingDefinitionToFunction(ease);\n    /**\n     * This is the Iterator-spec return value. We ensure it's mutable rather than using a generator\n     * to reduce GC during animation.\n     */\n    const state = {\n        done: false,\n        value: keyframeValues[0],\n    };\n    /**\n     * Create a times array based on the provided 0-1 offsets\n     */\n    const absoluteTimes = convertOffsetToTimes(\n    // Only use the provided offsets if they're the correct length\n    // TODO Maybe we should warn here if there's a length mismatch\n    times && times.length === keyframeValues.length\n        ? times\n        : defaultOffset(keyframeValues), duration);\n    const mapTimeToKeyframe = interpolate(absoluteTimes, keyframeValues, {\n        ease: Array.isArray(easingFunctions)\n            ? easingFunctions\n            : defaultEasing(keyframeValues, easingFunctions),\n    });\n    return {\n        calculatedDuration: duration,\n        next: (t) => {\n            state.value = mapTimeToKeyframe(t);\n            state.done = t >= duration;\n            return state;\n        },\n    };\n}\n\nexport { defaultEasing, keyframes };\n","import { time } from '../../../frameloop/sync-time.mjs';\nimport { frame, cancelFrame, frameData } from '../../../frameloop/frame.mjs';\n\nconst frameloopDriver = (update) => {\n    const passTimestamp = ({ timestamp }) => update(timestamp);\n    return {\n        start: () => frame.update(passTimestamp, true),\n        stop: () => cancelFrame(passTimestamp),\n        /**\n         * If we're processing this frame we can use the\n         * framelocked timestamp to keep things in sync.\n         */\n        now: () => (frameData.isProcessing ? frameData.timestamp : time.now()),\n    };\n};\n\nexport { frameloopDriver };\n","import { isGenerator, calcGeneratorDuration } from 'motion-dom';\nimport { invariant, millisecondsToSeconds, secondsToMilliseconds } from 'motion-utils';\nimport { KeyframeResolver } from '../../render/utils/KeyframesResolver.mjs';\nimport { clamp } from '../../utils/clamp.mjs';\nimport { mix } from '../../utils/mix/index.mjs';\nimport { pipe } from '../../utils/pipe.mjs';\nimport { inertia } from '../generators/inertia.mjs';\nimport { keyframes } from '../generators/keyframes.mjs';\nimport { spring } from '../generators/spring/index.mjs';\nimport { BaseAnimation } from './BaseAnimation.mjs';\nimport { frameloopDriver } from './drivers/driver-frameloop.mjs';\nimport { getFinalKeyframe } from './waapi/utils/get-final-keyframe.mjs';\n\nconst generators = {\n    decay: inertia,\n    inertia,\n    tween: keyframes,\n    keyframes: keyframes,\n    spring,\n};\nconst percentToProgress = (percent) => percent / 100;\n/**\n * Animation that runs on the main thread. Designed to be WAAPI-spec in the subset of\n * features we expose publically. Mostly the compatibility is to ensure visual identity\n * between both WAAPI and main thread animations.\n */\nclass MainThreadAnimation extends BaseAnimation {\n    constructor(options) {\n        super(options);\n        /**\n         * The time at which the animation was paused.\n         */\n        this.holdTime = null;\n        /**\n         * The time at which the animation was cancelled.\n         */\n        this.cancelTime = null;\n        /**\n         * The current time of the animation.\n         */\n        this.currentTime = 0;\n        /**\n         * Playback speed as a factor. 0 would be stopped, -1 reverse and 2 double speed.\n         */\n        this.playbackSpeed = 1;\n        /**\n         * The state of the animation to apply when the animation is resolved. This\n         * allows calls to the public API to control the animation before it is resolved,\n         * without us having to resolve it first.\n         */\n        this.pendingPlayState = \"running\";\n        /**\n         * The time at which the animation was started.\n         */\n        this.startTime = null;\n        this.state = \"idle\";\n        /**\n         * This method is bound to the instance to fix a pattern where\n         * animation.stop is returned as a reference from a useEffect.\n         */\n        this.stop = () => {\n            this.resolver.cancel();\n            this.isStopped = true;\n            if (this.state === \"idle\")\n                return;\n            this.teardown();\n            const { onStop } = this.options;\n            onStop && onStop();\n        };\n        const { name, motionValue, element, keyframes } = this.options;\n        const KeyframeResolver$1 = (element === null || element === void 0 ? void 0 : element.KeyframeResolver) || KeyframeResolver;\n        const onResolved = (resolvedKeyframes, finalKeyframe) => this.onKeyframesResolved(resolvedKeyframes, finalKeyframe);\n        this.resolver = new KeyframeResolver$1(keyframes, onResolved, name, motionValue, element);\n        this.resolver.scheduleResolve();\n    }\n    flatten() {\n        super.flatten();\n        // If we've already resolved the animation, re-initialise it\n        if (this._resolved) {\n            Object.assign(this._resolved, this.initPlayback(this._resolved.keyframes));\n        }\n    }\n    initPlayback(keyframes$1) {\n        const { type = \"keyframes\", repeat = 0, repeatDelay = 0, repeatType, velocity = 0, } = this.options;\n        const generatorFactory = isGenerator(type)\n            ? type\n            : generators[type] || keyframes;\n        /**\n         * If our generator doesn't support mixing numbers, we need to replace keyframes with\n         * [0, 100] and then make a function that maps that to the actual keyframes.\n         *\n         * 100 is chosen instead of 1 as it works nicer with spring animations.\n         */\n        let mapPercentToKeyframes;\n        let mirroredGenerator;\n        if (generatorFactory !== keyframes &&\n            typeof keyframes$1[0] !== \"number\") {\n            if (process.env.NODE_ENV !== \"production\") {\n                invariant(keyframes$1.length === 2, `Only two keyframes currently supported with spring and inertia animations. Trying to animate ${keyframes$1}`);\n            }\n            mapPercentToKeyframes = pipe(percentToProgress, mix(keyframes$1[0], keyframes$1[1]));\n            keyframes$1 = [0, 100];\n        }\n        const generator = generatorFactory({ ...this.options, keyframes: keyframes$1 });\n        /**\n         * If we have a mirror repeat type we need to create a second generator that outputs the\n         * mirrored (not reversed) animation and later ping pong between the two generators.\n         */\n        if (repeatType === \"mirror\") {\n            mirroredGenerator = generatorFactory({\n                ...this.options,\n                keyframes: [...keyframes$1].reverse(),\n                velocity: -velocity,\n            });\n        }\n        /**\n         * If duration is undefined and we have repeat options,\n         * we need to calculate a duration from the generator.\n         *\n         * We set it to the generator itself to cache the duration.\n         * Any timeline resolver will need to have already precalculated\n         * the duration by this step.\n         */\n        if (generator.calculatedDuration === null) {\n            generator.calculatedDuration = calcGeneratorDuration(generator);\n        }\n        const { calculatedDuration } = generator;\n        const resolvedDuration = calculatedDuration + repeatDelay;\n        const totalDuration = resolvedDuration * (repeat + 1) - repeatDelay;\n        return {\n            generator,\n            mirroredGenerator,\n            mapPercentToKeyframes,\n            calculatedDuration,\n            resolvedDuration,\n            totalDuration,\n        };\n    }\n    onPostResolved() {\n        const { autoplay = true } = this.options;\n        this.play();\n        if (this.pendingPlayState === \"paused\" || !autoplay) {\n            this.pause();\n        }\n        else {\n            this.state = this.pendingPlayState;\n        }\n    }\n    tick(timestamp, sample = false) {\n        const { resolved } = this;\n        // If the animations has failed to resolve, return the final keyframe.\n        if (!resolved) {\n            const { keyframes } = this.options;\n            return { done: true, value: keyframes[keyframes.length - 1] };\n        }\n        const { finalKeyframe, generator, mirroredGenerator, mapPercentToKeyframes, keyframes, calculatedDuration, totalDuration, resolvedDuration, } = resolved;\n        if (this.startTime === null)\n            return generator.next(0);\n        const { delay, repeat, repeatType, repeatDelay, onUpdate } = this.options;\n        /**\n         * requestAnimationFrame timestamps can come through as lower than\n         * the startTime as set by performance.now(). Here we prevent this,\n         * though in the future it could be possible to make setting startTime\n         * a pending operation that gets resolved here.\n         */\n        if (this.speed > 0) {\n            this.startTime = Math.min(this.startTime, timestamp);\n        }\n        else if (this.speed < 0) {\n            this.startTime = Math.min(timestamp - totalDuration / this.speed, this.startTime);\n        }\n        // Update currentTime\n        if (sample) {\n            this.currentTime = timestamp;\n        }\n        else if (this.holdTime !== null) {\n            this.currentTime = this.holdTime;\n        }\n        else {\n            // Rounding the time because floating point arithmetic is not always accurate, e.g. 3000.367 - 1000.367 =\n            // 2000.0000000000002. This is a problem when we are comparing the currentTime with the duration, for\n            // example.\n            this.currentTime =\n                Math.round(timestamp - this.startTime) * this.speed;\n        }\n        // Rebase on delay\n        const timeWithoutDelay = this.currentTime - delay * (this.speed >= 0 ? 1 : -1);\n        const isInDelayPhase = this.speed >= 0\n            ? timeWithoutDelay < 0\n            : timeWithoutDelay > totalDuration;\n        this.currentTime = Math.max(timeWithoutDelay, 0);\n        // If this animation has finished, set the current time  to the total duration.\n        if (this.state === \"finished\" && this.holdTime === null) {\n            this.currentTime = totalDuration;\n        }\n        let elapsed = this.currentTime;\n        let frameGenerator = generator;\n        if (repeat) {\n            /**\n             * Get the current progress (0-1) of the animation. If t is >\n             * than duration we'll get values like 2.5 (midway through the\n             * third iteration)\n             */\n            const progress = Math.min(this.currentTime, totalDuration) / resolvedDuration;\n            /**\n             * Get the current iteration (0 indexed). For instance the floor of\n             * 2.5 is 2.\n             */\n            let currentIteration = Math.floor(progress);\n            /**\n             * Get the current progress of the iteration by taking the remainder\n             * so 2.5 is 0.5 through iteration 2\n             */\n            let iterationProgress = progress % 1.0;\n            /**\n             * If iteration progress is 1 we count that as the end\n             * of the previous iteration.\n             */\n            if (!iterationProgress && progress >= 1) {\n                iterationProgress = 1;\n            }\n            iterationProgress === 1 && currentIteration--;\n            currentIteration = Math.min(currentIteration, repeat + 1);\n            /**\n             * Reverse progress if we're not running in \"normal\" direction\n             */\n            const isOddIteration = Boolean(currentIteration % 2);\n            if (isOddIteration) {\n                if (repeatType === \"reverse\") {\n                    iterationProgress = 1 - iterationProgress;\n                    if (repeatDelay) {\n                        iterationProgress -= repeatDelay / resolvedDuration;\n                    }\n                }\n                else if (repeatType === \"mirror\") {\n                    frameGenerator = mirroredGenerator;\n                }\n            }\n            elapsed = clamp(0, 1, iterationProgress) * resolvedDuration;\n        }\n        /**\n         * If we're in negative time, set state as the initial keyframe.\n         * This prevents delay: x, duration: 0 animations from finishing\n         * instantly.\n         */\n        const state = isInDelayPhase\n            ? { done: false, value: keyframes[0] }\n            : frameGenerator.next(elapsed);\n        if (mapPercentToKeyframes) {\n            state.value = mapPercentToKeyframes(state.value);\n        }\n        let { done } = state;\n        if (!isInDelayPhase && calculatedDuration !== null) {\n            done =\n                this.speed >= 0\n                    ? this.currentTime >= totalDuration\n                    : this.currentTime <= 0;\n        }\n        const isAnimationFinished = this.holdTime === null &&\n            (this.state === \"finished\" || (this.state === \"running\" && done));\n        if (isAnimationFinished && finalKeyframe !== undefined) {\n            state.value = getFinalKeyframe(keyframes, this.options, finalKeyframe);\n        }\n        if (onUpdate) {\n            onUpdate(state.value);\n        }\n        if (isAnimationFinished) {\n            this.finish();\n        }\n        return state;\n    }\n    get duration() {\n        const { resolved } = this;\n        return resolved ? millisecondsToSeconds(resolved.calculatedDuration) : 0;\n    }\n    get time() {\n        return millisecondsToSeconds(this.currentTime);\n    }\n    set time(newTime) {\n        newTime = secondsToMilliseconds(newTime);\n        this.currentTime = newTime;\n        if (this.holdTime !== null || this.speed === 0) {\n            this.holdTime = newTime;\n        }\n        else if (this.driver) {\n            this.startTime = this.driver.now() - newTime / this.speed;\n        }\n    }\n    get speed() {\n        return this.playbackSpeed;\n    }\n    set speed(newSpeed) {\n        const hasChanged = this.playbackSpeed !== newSpeed;\n        this.playbackSpeed = newSpeed;\n        if (hasChanged) {\n            this.time = millisecondsToSeconds(this.currentTime);\n        }\n    }\n    play() {\n        if (!this.resolver.isScheduled) {\n            this.resolver.resume();\n        }\n        if (!this._resolved) {\n            this.pendingPlayState = \"running\";\n            return;\n        }\n        if (this.isStopped)\n            return;\n        const { driver = frameloopDriver, onPlay, startTime } = this.options;\n        if (!this.driver) {\n            this.driver = driver((timestamp) => this.tick(timestamp));\n        }\n        onPlay && onPlay();\n        const now = this.driver.now();\n        if (this.holdTime !== null) {\n            this.startTime = now - this.holdTime;\n        }\n        else if (!this.startTime) {\n            this.startTime = startTime !== null && startTime !== void 0 ? startTime : this.calcStartTime();\n        }\n        else if (this.state === \"finished\") {\n            this.startTime = now;\n        }\n        if (this.state === \"finished\") {\n            this.updateFinishedPromise();\n        }\n        this.cancelTime = this.startTime;\n        this.holdTime = null;\n        /**\n         * Set playState to running only after we've used it in\n         * the previous logic.\n         */\n        this.state = \"running\";\n        this.driver.start();\n    }\n    pause() {\n        var _a;\n        if (!this._resolved) {\n            this.pendingPlayState = \"paused\";\n            return;\n        }\n        this.state = \"paused\";\n        this.holdTime = (_a = this.currentTime) !== null && _a !== void 0 ? _a : 0;\n    }\n    complete() {\n        if (this.state !== \"running\") {\n            this.play();\n        }\n        this.pendingPlayState = this.state = \"finished\";\n        this.holdTime = null;\n    }\n    finish() {\n        this.teardown();\n        this.state = \"finished\";\n        const { onComplete } = this.options;\n        onComplete && onComplete();\n    }\n    cancel() {\n        if (this.cancelTime !== null) {\n            this.tick(this.cancelTime);\n        }\n        this.teardown();\n        this.updateFinishedPromise();\n    }\n    teardown() {\n        this.state = \"idle\";\n        this.stopDriver();\n        this.resolveFinishedPromise();\n        this.updateFinishedPromise();\n        this.startTime = this.cancelTime = null;\n        this.resolver.cancel();\n    }\n    stopDriver() {\n        if (!this.driver)\n            return;\n        this.driver.stop();\n        this.driver = undefined;\n    }\n    sample(time) {\n        this.startTime = 0;\n        return this.tick(time, true);\n    }\n}\n// Legacy interface\nfunction animateValue(options) {\n    return new MainThreadAnimation(options);\n}\n\nexport { MainThreadAnimation, animateValue };\n","/**\n * A list of values that can be hardware-accelerated.\n */\nconst acceleratedValues = new Set([\n    \"opacity\",\n    \"clipPath\",\n    \"filter\",\n    \"transform\",\n    // TODO: Can be accelerated but currently disabled until https://issues.chromium.org/issues/41491098 is resolved\n    // or until we implement support for linear() easing.\n    // \"background-color\"\n]);\n\nexport { acceleratedValues };\n","import { mapEasingToNativeEasing } from 'motion-dom';\n\nfunction startWaapiAnimation(element, valueName, keyframes, { delay = 0, duration = 300, repeat = 0, repeatType = \"loop\", ease = \"easeInOut\", times, } = {}) {\n    const keyframeOptions = { [valueName]: keyframes };\n    if (times)\n        keyframeOptions.offset = times;\n    const easing = mapEasingToNativeEasing(ease, duration);\n    /**\n     * If this is an easing array, apply to keyframes, not animation as a whole\n     */\n    if (Array.isArray(easing))\n        keyframeOptions.easing = easing;\n    return element.animate(keyframeOptions, {\n        delay,\n        duration,\n        easing: !Array.isArray(easing) ? easing : \"linear\",\n        fill: \"both\",\n        iterations: repeat + 1,\n        direction: repeatType === \"reverse\" ? \"alternate\" : \"normal\",\n    });\n}\n\nexport { startWaapiAnimation };\n","import { memo } from 'motion-utils';\n\nconst supportsWaapi = /*@__PURE__*/ memo(() => Object.hasOwnProperty.call(Element.prototype, \"animate\"));\n\nexport { supportsWaapi };\n","import { supportsLinearEasing, attachTimeline, isGenerator, isWaapiSupportedEasing } from 'motion-dom';\nimport { millisecondsToSeconds, secondsToMilliseconds, noop } from 'motion-utils';\nimport { anticipate } from '../../easing/anticipate.mjs';\nimport { backInOut } from '../../easing/back.mjs';\nimport { circInOut } from '../../easing/circ.mjs';\nimport { DOMKeyframesResolver } from '../../render/dom/DOMKeyframesResolver.mjs';\nimport { BaseAnimation } from './BaseAnimation.mjs';\nimport { MainThreadAnimation } from './MainThreadAnimation.mjs';\nimport { acceleratedValues } from './utils/accelerated-values.mjs';\nimport { startWaapiAnimation } from './waapi/index.mjs';\nimport { getFinalKeyframe } from './waapi/utils/get-final-keyframe.mjs';\nimport { supportsWaapi } from './waapi/utils/supports-waapi.mjs';\n\n/**\n * 10ms is chosen here as it strikes a balance between smooth\n * results (more than one keyframe per frame at 60fps) and\n * keyframe quantity.\n */\nconst sampleDelta = 10; //ms\n/**\n * Implement a practical max duration for keyframe generation\n * to prevent infinite loops\n */\nconst maxDuration = 20000;\n/**\n * Check if an animation can run natively via WAAPI or requires pregenerated keyframes.\n * WAAPI doesn't support spring or function easings so we run these as JS animation before\n * handing off.\n */\nfunction requiresPregeneratedKeyframes(options) {\n    return (isGenerator(options.type) ||\n        options.type === \"spring\" ||\n        !isWaapiSupportedEasing(options.ease));\n}\nfunction pregenerateKeyframes(keyframes, options) {\n    /**\n     * Create a main-thread animation to pregenerate keyframes.\n     * We sample this at regular intervals to generate keyframes that we then\n     * linearly interpolate between.\n     */\n    const sampleAnimation = new MainThreadAnimation({\n        ...options,\n        keyframes,\n        repeat: 0,\n        delay: 0,\n        isGenerator: true,\n    });\n    let state = { done: false, value: keyframes[0] };\n    const pregeneratedKeyframes = [];\n    /**\n     * Bail after 20 seconds of pre-generated keyframes as it's likely\n     * we're heading for an infinite loop.\n     */\n    let t = 0;\n    while (!state.done && t < maxDuration) {\n        state = sampleAnimation.sample(t);\n        pregeneratedKeyframes.push(state.value);\n        t += sampleDelta;\n    }\n    return {\n        times: undefined,\n        keyframes: pregeneratedKeyframes,\n        duration: t - sampleDelta,\n        ease: \"linear\",\n    };\n}\nconst unsupportedEasingFunctions = {\n    anticipate,\n    backInOut,\n    circInOut,\n};\nfunction isUnsupportedEase(key) {\n    return key in unsupportedEasingFunctions;\n}\nclass AcceleratedAnimation extends BaseAnimation {\n    constructor(options) {\n        super(options);\n        const { name, motionValue, element, keyframes } = this.options;\n        this.resolver = new DOMKeyframesResolver(keyframes, (resolvedKeyframes, finalKeyframe) => this.onKeyframesResolved(resolvedKeyframes, finalKeyframe), name, motionValue, element);\n        this.resolver.scheduleResolve();\n    }\n    initPlayback(keyframes, finalKeyframe) {\n        let { duration = 300, times, ease, type, motionValue, name, startTime, } = this.options;\n        /**\n         * If element has since been unmounted, return false to indicate\n         * the animation failed to initialised.\n         */\n        if (!motionValue.owner || !motionValue.owner.current) {\n            return false;\n        }\n        /**\n         * If the user has provided an easing function name that isn't supported\n         * by WAAPI (like \"anticipate\"), we need to provide the corressponding\n         * function. This will later get converted to a linear() easing function.\n         */\n        if (typeof ease === \"string\" &&\n            supportsLinearEasing() &&\n            isUnsupportedEase(ease)) {\n            ease = unsupportedEasingFunctions[ease];\n        }\n        /**\n         * If this animation needs pre-generated keyframes then generate.\n         */\n        if (requiresPregeneratedKeyframes(this.options)) {\n            const { onComplete, onUpdate, motionValue, element, ...options } = this.options;\n            const pregeneratedAnimation = pregenerateKeyframes(keyframes, options);\n            keyframes = pregeneratedAnimation.keyframes;\n            // If this is a very short animation, ensure we have\n            // at least two keyframes to animate between as older browsers\n            // can't animate between a single keyframe.\n            if (keyframes.length === 1) {\n                keyframes[1] = keyframes[0];\n            }\n            duration = pregeneratedAnimation.duration;\n            times = pregeneratedAnimation.times;\n            ease = pregeneratedAnimation.ease;\n            type = \"keyframes\";\n        }\n        const animation = startWaapiAnimation(motionValue.owner.current, name, keyframes, { ...this.options, duration, times, ease });\n        // Override the browser calculated startTime with one synchronised to other JS\n        // and WAAPI animations starting this event loop.\n        animation.startTime = startTime !== null && startTime !== void 0 ? startTime : this.calcStartTime();\n        if (this.pendingTimeline) {\n            attachTimeline(animation, this.pendingTimeline);\n            this.pendingTimeline = undefined;\n        }\n        else {\n            /**\n             * Prefer the `onfinish` prop as it's more widely supported than\n             * the `finished` promise.\n             *\n             * Here, we synchronously set the provided MotionValue to the end\n             * keyframe. If we didn't, when the WAAPI animation is finished it would\n             * be removed from the element which would then revert to its old styles.\n             */\n            animation.onfinish = () => {\n                const { onComplete } = this.options;\n                motionValue.set(getFinalKeyframe(keyframes, this.options, finalKeyframe));\n                onComplete && onComplete();\n                this.cancel();\n                this.resolveFinishedPromise();\n            };\n        }\n        return {\n            animation,\n            duration,\n            times,\n            type,\n            ease,\n            keyframes: keyframes,\n        };\n    }\n    get duration() {\n        const { resolved } = this;\n        if (!resolved)\n            return 0;\n        const { duration } = resolved;\n        return millisecondsToSeconds(duration);\n    }\n    get time() {\n        const { resolved } = this;\n        if (!resolved)\n            return 0;\n        const { animation } = resolved;\n        return millisecondsToSeconds(animation.currentTime || 0);\n    }\n    set time(newTime) {\n        const { resolved } = this;\n        if (!resolved)\n            return;\n        const { animation } = resolved;\n        animation.currentTime = secondsToMilliseconds(newTime);\n    }\n    get speed() {\n        const { resolved } = this;\n        if (!resolved)\n            return 1;\n        const { animation } = resolved;\n        return animation.playbackRate;\n    }\n    set speed(newSpeed) {\n        const { resolved } = this;\n        if (!resolved)\n            return;\n        const { animation } = resolved;\n        animation.playbackRate = newSpeed;\n    }\n    get state() {\n        const { resolved } = this;\n        if (!resolved)\n            return \"idle\";\n        const { animation } = resolved;\n        return animation.playState;\n    }\n    get startTime() {\n        const { resolved } = this;\n        if (!resolved)\n            return null;\n        const { animation } = resolved;\n        // Coerce to number as TypeScript incorrectly types this\n        // as CSSNumberish\n        return animation.startTime;\n    }\n    /**\n     * Replace the default DocumentTimeline with another AnimationTimeline.\n     * Currently used for scroll animations.\n     */\n    attachTimeline(timeline) {\n        if (!this._resolved) {\n            this.pendingTimeline = timeline;\n        }\n        else {\n            const { resolved } = this;\n            if (!resolved)\n                return noop;\n            const { animation } = resolved;\n            attachTimeline(animation, timeline);\n        }\n        return noop;\n    }\n    play() {\n        if (this.isStopped)\n            return;\n        const { resolved } = this;\n        if (!resolved)\n            return;\n        const { animation } = resolved;\n        if (animation.playState === \"finished\") {\n            this.updateFinishedPromise();\n        }\n        animation.play();\n    }\n    pause() {\n        const { resolved } = this;\n        if (!resolved)\n            return;\n        const { animation } = resolved;\n        animation.pause();\n    }\n    stop() {\n        this.resolver.cancel();\n        this.isStopped = true;\n        if (this.state === \"idle\")\n            return;\n        this.resolveFinishedPromise();\n        this.updateFinishedPromise();\n        const { resolved } = this;\n        if (!resolved)\n            return;\n        const { animation, keyframes, duration, type, ease, times } = resolved;\n        if (animation.playState === \"idle\" ||\n            animation.playState === \"finished\") {\n            return;\n        }\n        /**\n         * WAAPI doesn't natively have any interruption capabilities.\n         *\n         * Rather than read commited styles back out of the DOM, we can\n         * create a renderless JS animation and sample it twice to calculate\n         * its current value, \"previous\" value, and therefore allow\n         * Motion to calculate velocity for any subsequent animation.\n         */\n        if (this.time) {\n            const { motionValue, onUpdate, onComplete, element, ...options } = this.options;\n            const sampleAnimation = new MainThreadAnimation({\n                ...options,\n                keyframes,\n                duration,\n                type,\n                ease,\n                times,\n                isGenerator: true,\n            });\n            const sampleTime = secondsToMilliseconds(this.time);\n            motionValue.setWithVelocity(sampleAnimation.sample(sampleTime - sampleDelta).value, sampleAnimation.sample(sampleTime).value, sampleDelta);\n        }\n        const { onStop } = this.options;\n        onStop && onStop();\n        this.cancel();\n    }\n    complete() {\n        const { resolved } = this;\n        if (!resolved)\n            return;\n        resolved.animation.finish();\n    }\n    cancel() {\n        const { resolved } = this;\n        if (!resolved)\n            return;\n        resolved.animation.cancel();\n    }\n    static supports(options) {\n        const { motionValue, name, repeatDelay, repeatType, damping, type } = options;\n        if (!motionValue ||\n            !motionValue.owner ||\n            !(motionValue.owner.current instanceof HTMLElement)) {\n            return false;\n        }\n        const { onUpdate, transformTemplate } = motionValue.owner.getProps();\n        return (supportsWaapi() &&\n            name &&\n            acceleratedValues.has(name) &&\n            /**\n             * If we're outputting values to onUpdate then we can't use WAAPI as there's\n             * no way to read the value from WAAPI every frame.\n             */\n            !onUpdate &&\n            !transformTemplate &&\n            !repeatDelay &&\n            repeatType !== \"mirror\" &&\n            damping !== 0 &&\n            type !== \"inertia\");\n    }\n}\n\nexport { AcceleratedAnimation };\n","import { transformProps } from '../../render/html/utils/keys-transform.mjs';\n\nconst underDampedSpring = {\n    type: \"spring\",\n    stiffness: 500,\n    damping: 25,\n    restSpeed: 10,\n};\nconst criticallyDampedSpring = (target) => ({\n    type: \"spring\",\n    stiffness: 550,\n    damping: target === 0 ? 2 * Math.sqrt(550) : 30,\n    restSpeed: 10,\n});\nconst keyframesTransition = {\n    type: \"keyframes\",\n    duration: 0.8,\n};\n/**\n * Default easing curve is a slightly shallower version of\n * the default browser easing curve.\n */\nconst ease = {\n    type: \"keyframes\",\n    ease: [0.25, 0.1, 0.35, 1],\n    duration: 0.3,\n};\nconst getDefaultTransition = (valueKey, { keyframes }) => {\n    if (keyframes.length > 2) {\n        return keyframesTransition;\n    }\n    else if (transformProps.has(valueKey)) {\n        return valueKey.startsWith(\"scale\")\n            ? criticallyDampedSpring(keyframes[1])\n            : underDampedSpring;\n    }\n    return ease;\n};\n\nexport { getDefaultTransition };\n","/**\n * Decide whether a transition is defined on a given Transition.\n * This filters out orchestration options and returns true\n * if any options are left.\n */\nfunction isTransitionDefined({ when, delay: _delay, delayChildren, staggerChildren, staggerDirection, repeat, repeatType, repeatDelay, from, elapsed, ...transition }) {\n    return !!Object.keys(transition).length;\n}\n\nexport { isTransitionDefined };\n","import { getValueTransition, GroupPlaybackControls } from 'motion-dom';\nimport { secondsToMilliseconds } from 'motion-utils';\nimport { frame } from '../../frameloop/frame.mjs';\nimport { MotionGlobalConfig } from '../../utils/GlobalConfig.mjs';\nimport { instantAnimationState } from '../../utils/use-instant-transition-state.mjs';\nimport { AcceleratedAnimation } from '../animators/AcceleratedAnimation.mjs';\nimport { MainThreadAnimation } from '../animators/MainThreadAnimation.mjs';\nimport { getFinalKeyframe } from '../animators/waapi/utils/get-final-keyframe.mjs';\nimport { getDefaultTransition } from '../utils/default-transitions.mjs';\nimport { isTransitionDefined } from '../utils/is-transition-defined.mjs';\n\nconst animateMotionValue = (name, value, target, transition = {}, element, isHandoff) => (onComplete) => {\n    const valueTransition = getValueTransition(transition, name) || {};\n    /**\n     * Most transition values are currently completely overwritten by value-specific\n     * transitions. In the future it'd be nicer to blend these transitions. But for now\n     * delay actually does inherit from the root transition if not value-specific.\n     */\n    const delay = valueTransition.delay || transition.delay || 0;\n    /**\n     * Elapsed isn't a public transition option but can be passed through from\n     * optimized appear effects in milliseconds.\n     */\n    let { elapsed = 0 } = transition;\n    elapsed = elapsed - secondsToMilliseconds(delay);\n    let options = {\n        keyframes: Array.isArray(target) ? target : [null, target],\n        ease: \"easeOut\",\n        velocity: value.getVelocity(),\n        ...valueTransition,\n        delay: -elapsed,\n        onUpdate: (v) => {\n            value.set(v);\n            valueTransition.onUpdate && valueTransition.onUpdate(v);\n        },\n        onComplete: () => {\n            onComplete();\n            valueTransition.onComplete && valueTransition.onComplete();\n        },\n        name,\n        motionValue: value,\n        element: isHandoff ? undefined : element,\n    };\n    /**\n     * If there's no transition defined for this value, we can generate\n     * unqiue transition settings for this value.\n     */\n    if (!isTransitionDefined(valueTransition)) {\n        options = {\n            ...options,\n            ...getDefaultTransition(name, options),\n        };\n    }\n    /**\n     * Both WAAPI and our internal animation functions use durations\n     * as defined by milliseconds, while our external API defines them\n     * as seconds.\n     */\n    if (options.duration) {\n        options.duration = secondsToMilliseconds(options.duration);\n    }\n    if (options.repeatDelay) {\n        options.repeatDelay = secondsToMilliseconds(options.repeatDelay);\n    }\n    if (options.from !== undefined) {\n        options.keyframes[0] = options.from;\n    }\n    let shouldSkip = false;\n    if (options.type === false ||\n        (options.duration === 0 && !options.repeatDelay)) {\n        options.duration = 0;\n        if (options.delay === 0) {\n            shouldSkip = true;\n        }\n    }\n    if (instantAnimationState.current ||\n        MotionGlobalConfig.skipAnimations) {\n        shouldSkip = true;\n        options.duration = 0;\n        options.delay = 0;\n    }\n    /**\n     * If we can or must skip creating the animation, and apply only\n     * the final keyframe, do so. We also check once keyframes are resolved but\n     * this early check prevents the need to create an animation at all.\n     */\n    if (shouldSkip && !isHandoff && value.get() !== undefined) {\n        const finalKeyframe = getFinalKeyframe(options.keyframes, valueTransition);\n        if (finalKeyframe !== undefined) {\n            frame.update(() => {\n                options.onUpdate(finalKeyframe);\n                options.onComplete();\n            });\n            // We still want to return some animation controls here rather\n            // than returning undefined\n            return new GroupPlaybackControls([]);\n        }\n    }\n    /**\n     * Animate via WAAPI if possible. If this is a handoff animation, the optimised animation will be running via\n     * WAAPI. Therefore, this animation must be JS to ensure it runs \"under\" the\n     * optimised animation.\n     */\n    if (!isHandoff && AcceleratedAnimation.supports(options)) {\n        return new AcceleratedAnimation(options);\n    }\n    else {\n        return new MainThreadAnimation(options);\n    }\n};\n\nexport { animateMotionValue };\n","import { getValueTransition } from 'motion-dom';\nimport { positionalKeys } from '../../render/html/utils/keys-position.mjs';\nimport { setTarget } from '../../render/utils/setters.mjs';\nimport { addValueToWillChange } from '../../value/use-will-change/add-will-change.mjs';\nimport { getOptimisedAppearId } from '../optimized-appear/get-appear-id.mjs';\nimport { animateMotionValue } from './motion-value.mjs';\nimport { frame } from '../../frameloop/frame.mjs';\n\n/**\n * Decide whether we should block this animation. Previously, we achieved this\n * just by checking whether the key was listed in protectedKeys, but this\n * posed problems if an animation was triggered by afterChildren and protectedKeys\n * had been set to true in the meantime.\n */\nfunction shouldBlockAnimation({ protectedKeys, needsAnimating }, key) {\n    const shouldBlock = protectedKeys.hasOwnProperty(key) && needsAnimating[key] !== true;\n    needsAnimating[key] = false;\n    return shouldBlock;\n}\nfunction animateTarget(visualElement, targetAndTransition, { delay = 0, transitionOverride, type } = {}) {\n    var _a;\n    let { transition = visualElement.getDefaultTransition(), transitionEnd, ...target } = targetAndTransition;\n    if (transitionOverride)\n        transition = transitionOverride;\n    const animations = [];\n    const animationTypeState = type &&\n        visualElement.animationState &&\n        visualElement.animationState.getState()[type];\n    for (const key in target) {\n        const value = visualElement.getValue(key, (_a = visualElement.latestValues[key]) !== null && _a !== void 0 ? _a : null);\n        const valueTarget = target[key];\n        if (valueTarget === undefined ||\n            (animationTypeState &&\n                shouldBlockAnimation(animationTypeState, key))) {\n            continue;\n        }\n        const valueTransition = {\n            delay,\n            ...getValueTransition(transition || {}, key),\n        };\n        /**\n         * If this is the first time a value is being animated, check\n         * to see if we're handling off from an existing animation.\n         */\n        let isHandoff = false;\n        if (window.MotionHandoffAnimation) {\n            const appearId = getOptimisedAppearId(visualElement);\n            if (appearId) {\n                const startTime = window.MotionHandoffAnimation(appearId, key, frame);\n                if (startTime !== null) {\n                    valueTransition.startTime = startTime;\n                    isHandoff = true;\n                }\n            }\n        }\n        addValueToWillChange(visualElement, key);\n        value.start(animateMotionValue(key, value, valueTarget, visualElement.shouldReduceMotion && positionalKeys.has(key)\n            ? { type: false }\n            : valueTransition, visualElement, isHandoff));\n        const animation = value.animation;\n        if (animation) {\n            animations.push(animation);\n        }\n    }\n    if (transitionEnd) {\n        Promise.all(animations).then(() => {\n            frame.update(() => {\n                transitionEnd && setTarget(visualElement, transitionEnd);\n            });\n        });\n    }\n    return animations;\n}\n\nexport { animateTarget };\n","import { resolveVariant } from '../../render/utils/resolve-dynamic-variants.mjs';\nimport { animateTarget } from './visual-element-target.mjs';\n\nfunction animateVariant(visualElement, variant, options = {}) {\n    var _a;\n    const resolved = resolveVariant(visualElement, variant, options.type === \"exit\"\n        ? (_a = visualElement.presenceContext) === null || _a === void 0 ? void 0 : _a.custom\n        : undefined);\n    let { transition = visualElement.getDefaultTransition() || {} } = resolved || {};\n    if (options.transitionOverride) {\n        transition = options.transitionOverride;\n    }\n    /**\n     * If we have a variant, create a callback that runs it as an animation.\n     * Otherwise, we resolve a Promise immediately for a composable no-op.\n     */\n    const getAnimation = resolved\n        ? () => Promise.all(animateTarget(visualElement, resolved, options))\n        : () => Promise.resolve();\n    /**\n     * If we have children, create a callback that runs all their animations.\n     * Otherwise, we resolve a Promise immediately for a composable no-op.\n     */\n    const getChildAnimations = visualElement.variantChildren && visualElement.variantChildren.size\n        ? (forwardDelay = 0) => {\n            const { delayChildren = 0, staggerChildren, staggerDirection, } = transition;\n            return animateChildren(visualElement, variant, delayChildren + forwardDelay, staggerChildren, staggerDirection, options);\n        }\n        : () => Promise.resolve();\n    /**\n     * If the transition explicitly defines a \"when\" option, we need to resolve either\n     * this animation or all children animations before playing the other.\n     */\n    const { when } = transition;\n    if (when) {\n        const [first, last] = when === \"beforeChildren\"\n            ? [getAnimation, getChildAnimations]\n            : [getChildAnimations, getAnimation];\n        return first().then(() => last());\n    }\n    else {\n        return Promise.all([getAnimation(), getChildAnimations(options.delay)]);\n    }\n}\nfunction animateChildren(visualElement, variant, delayChildren = 0, staggerChildren = 0, staggerDirection = 1, options) {\n    const animations = [];\n    const maxStaggerDuration = (visualElement.variantChildren.size - 1) * staggerChildren;\n    const generateStaggerDuration = staggerDirection === 1\n        ? (i = 0) => i * staggerChildren\n        : (i = 0) => maxStaggerDuration - i * staggerChildren;\n    Array.from(visualElement.variantChildren)\n        .sort(sortByTreeOrder)\n        .forEach((child, i) => {\n        child.notify(\"AnimationStart\", variant);\n        animations.push(animateVariant(child, variant, {\n            ...options,\n            delay: delayChildren + generateStaggerDuration(i),\n        }).then(() => child.notify(\"AnimationComplete\", variant)));\n    });\n    return Promise.all(animations);\n}\nfunction sortByTreeOrder(a, b) {\n    return a.sortNodePosition(b);\n}\n\nexport { animateVariant, sortByTreeOrder };\n","import { resolveVariant } from '../../render/utils/resolve-dynamic-variants.mjs';\nimport { animateTarget } from './visual-element-target.mjs';\nimport { animateVariant } from './visual-element-variant.mjs';\n\nfunction animateVisualElement(visualElement, definition, options = {}) {\n    visualElement.notify(\"AnimationStart\", definition);\n    let animation;\n    if (Array.isArray(definition)) {\n        const animations = definition.map((variant) => animateVariant(visualElement, variant, options));\n        animation = Promise.all(animations);\n    }\n    else if (typeof definition === \"string\") {\n        animation = animateVariant(visualElement, definition, options);\n    }\n    else {\n        const resolvedDefinition = typeof definition === \"function\"\n            ? resolveVariant(visualElement, definition, options.custom)\n            : definition;\n        animation = Promise.all(animateTarget(visualElement, resolvedDefinition, options));\n    }\n    return animation.then(() => {\n        visualElement.notify(\"AnimationComplete\", definition);\n    });\n}\n\nexport { animateVisualElement };\n","import { isVariantLabel } from './is-variant-label.mjs';\nimport { variantProps } from './variant-props.mjs';\n\nconst numVariantProps = variantProps.length;\nfunction getVariantContext(visualElement) {\n    if (!visualElement)\n        return undefined;\n    if (!visualElement.isControllingVariants) {\n        const context = visualElement.parent\n            ? getVariantContext(visualElement.parent) || {}\n            : {};\n        if (visualElement.props.initial !== undefined) {\n            context.initial = visualElement.props.initial;\n        }\n        return context;\n    }\n    const context = {};\n    for (let i = 0; i < numVariantProps; i++) {\n        const name = variantProps[i];\n        const prop = visualElement.props[name];\n        if (isVariantLabel(prop) || prop === false) {\n            context[name] = prop;\n        }\n    }\n    return context;\n}\n\nexport { getVariantContext };\n","import { isAnimationControls } from '../../animation/utils/is-animation-controls.mjs';\nimport { isKeyframesTarget } from '../../animation/utils/is-keyframes-target.mjs';\nimport { shallowCompare } from '../../utils/shallow-compare.mjs';\nimport { isVariantLabel } from './is-variant-label.mjs';\nimport { resolveVariant } from './resolve-dynamic-variants.mjs';\nimport { variantPriorityOrder } from './variant-props.mjs';\nimport { animateVisualElement } from '../../animation/interfaces/visual-element.mjs';\nimport { getVariantContext } from './get-variant-context.mjs';\n\nconst reversePriorityOrder = [...variantPriorityOrder].reverse();\nconst numAnimationTypes = variantPriorityOrder.length;\nfunction animateList(visualElement) {\n    return (animations) => Promise.all(animations.map(({ animation, options }) => animateVisualElement(visualElement, animation, options)));\n}\nfunction createAnimationState(visualElement) {\n    let animate = animateList(visualElement);\n    let state = createState();\n    let isInitialRender = true;\n    /**\n     * This function will be used to reduce the animation definitions for\n     * each active animation type into an object of resolved values for it.\n     */\n    const buildResolvedTypeValues = (type) => (acc, definition) => {\n        var _a;\n        const resolved = resolveVariant(visualElement, definition, type === \"exit\"\n            ? (_a = visualElement.presenceContext) === null || _a === void 0 ? void 0 : _a.custom\n            : undefined);\n        if (resolved) {\n            const { transition, transitionEnd, ...target } = resolved;\n            acc = { ...acc, ...target, ...transitionEnd };\n        }\n        return acc;\n    };\n    /**\n     * This just allows us to inject mocked animation functions\n     * @internal\n     */\n    function setAnimateFunction(makeAnimator) {\n        animate = makeAnimator(visualElement);\n    }\n    /**\n     * When we receive new props, we need to:\n     * 1. Create a list of protected keys for each type. This is a directory of\n     *    value keys that are currently being \"handled\" by types of a higher priority\n     *    so that whenever an animation is played of a given type, these values are\n     *    protected from being animated.\n     * 2. Determine if an animation type needs animating.\n     * 3. Determine if any values have been removed from a type and figure out\n     *    what to animate those to.\n     */\n    function animateChanges(changedActiveType) {\n        const { props } = visualElement;\n        const context = getVariantContext(visualElement.parent) || {};\n        /**\n         * A list of animations that we'll build into as we iterate through the animation\n         * types. This will get executed at the end of the function.\n         */\n        const animations = [];\n        /**\n         * Keep track of which values have been removed. Then, as we hit lower priority\n         * animation types, we can check if they contain removed values and animate to that.\n         */\n        const removedKeys = new Set();\n        /**\n         * A dictionary of all encountered keys. This is an object to let us build into and\n         * copy it without iteration. Each time we hit an animation type we set its protected\n         * keys - the keys its not allowed to animate - to the latest version of this object.\n         */\n        let encounteredKeys = {};\n        /**\n         * If a variant has been removed at a given index, and this component is controlling\n         * variant animations, we want to ensure lower-priority variants are forced to animate.\n         */\n        let removedVariantIndex = Infinity;\n        /**\n         * Iterate through all animation types in reverse priority order. For each, we want to\n         * detect which values it's handling and whether or not they've changed (and therefore\n         * need to be animated). If any values have been removed, we want to detect those in\n         * lower priority props and flag for animation.\n         */\n        for (let i = 0; i < numAnimationTypes; i++) {\n            const type = reversePriorityOrder[i];\n            const typeState = state[type];\n            const prop = props[type] !== undefined\n                ? props[type]\n                : context[type];\n            const propIsVariant = isVariantLabel(prop);\n            /**\n             * If this type has *just* changed isActive status, set activeDelta\n             * to that status. Otherwise set to null.\n             */\n            const activeDelta = type === changedActiveType ? typeState.isActive : null;\n            if (activeDelta === false)\n                removedVariantIndex = i;\n            /**\n             * If this prop is an inherited variant, rather than been set directly on the\n             * component itself, we want to make sure we allow the parent to trigger animations.\n             *\n             * TODO: Can probably change this to a !isControllingVariants check\n             */\n            let isInherited = prop === context[type] &&\n                prop !== props[type] &&\n                propIsVariant;\n            /**\n             *\n             */\n            if (isInherited &&\n                isInitialRender &&\n                visualElement.manuallyAnimateOnMount) {\n                isInherited = false;\n            }\n            /**\n             * Set all encountered keys so far as the protected keys for this type. This will\n             * be any key that has been animated or otherwise handled by active, higher-priortiy types.\n             */\n            typeState.protectedKeys = { ...encounteredKeys };\n            // Check if we can skip analysing this prop early\n            if (\n            // If it isn't active and hasn't *just* been set as inactive\n            (!typeState.isActive && activeDelta === null) ||\n                // If we didn't and don't have any defined prop for this animation type\n                (!prop && !typeState.prevProp) ||\n                // Or if the prop doesn't define an animation\n                isAnimationControls(prop) ||\n                typeof prop === \"boolean\") {\n                continue;\n            }\n            /**\n             * As we go look through the values defined on this type, if we detect\n             * a changed value or a value that was removed in a higher priority, we set\n             * this to true and add this prop to the animation list.\n             */\n            const variantDidChange = checkVariantsDidChange(typeState.prevProp, prop);\n            let shouldAnimateType = variantDidChange ||\n                // If we're making this variant active, we want to always make it active\n                (type === changedActiveType &&\n                    typeState.isActive &&\n                    !isInherited &&\n                    propIsVariant) ||\n                // If we removed a higher-priority variant (i is in reverse order)\n                (i > removedVariantIndex && propIsVariant);\n            let handledRemovedValues = false;\n            /**\n             * As animations can be set as variant lists, variants or target objects, we\n             * coerce everything to an array if it isn't one already\n             */\n            const definitionList = Array.isArray(prop) ? prop : [prop];\n            /**\n             * Build an object of all the resolved values. We'll use this in the subsequent\n             * animateChanges calls to determine whether a value has changed.\n             */\n            let resolvedValues = definitionList.reduce(buildResolvedTypeValues(type), {});\n            if (activeDelta === false)\n                resolvedValues = {};\n            /**\n             * Now we need to loop through all the keys in the prev prop and this prop,\n             * and decide:\n             * 1. If the value has changed, and needs animating\n             * 2. If it has been removed, and needs adding to the removedKeys set\n             * 3. If it has been removed in a higher priority type and needs animating\n             * 4. If it hasn't been removed in a higher priority but hasn't changed, and\n             *    needs adding to the type's protectedKeys list.\n             */\n            const { prevResolvedValues = {} } = typeState;\n            const allKeys = {\n                ...prevResolvedValues,\n                ...resolvedValues,\n            };\n            const markToAnimate = (key) => {\n                shouldAnimateType = true;\n                if (removedKeys.has(key)) {\n                    handledRemovedValues = true;\n                    removedKeys.delete(key);\n                }\n                typeState.needsAnimating[key] = true;\n                const motionValue = visualElement.getValue(key);\n                if (motionValue)\n                    motionValue.liveStyle = false;\n            };\n            for (const key in allKeys) {\n                const next = resolvedValues[key];\n                const prev = prevResolvedValues[key];\n                // If we've already handled this we can just skip ahead\n                if (encounteredKeys.hasOwnProperty(key))\n                    continue;\n                /**\n                 * If the value has changed, we probably want to animate it.\n                 */\n                let valueHasChanged = false;\n                if (isKeyframesTarget(next) && isKeyframesTarget(prev)) {\n                    valueHasChanged = !shallowCompare(next, prev);\n                }\n                else {\n                    valueHasChanged = next !== prev;\n                }\n                if (valueHasChanged) {\n                    if (next !== undefined && next !== null) {\n                        // If next is defined and doesn't equal prev, it needs animating\n                        markToAnimate(key);\n                    }\n                    else {\n                        // If it's undefined, it's been removed.\n                        removedKeys.add(key);\n                    }\n                }\n                else if (next !== undefined && removedKeys.has(key)) {\n                    /**\n                     * If next hasn't changed and it isn't undefined, we want to check if it's\n                     * been removed by a higher priority\n                     */\n                    markToAnimate(key);\n                }\n                else {\n                    /**\n                     * If it hasn't changed, we add it to the list of protected values\n                     * to ensure it doesn't get animated.\n                     */\n                    typeState.protectedKeys[key] = true;\n                }\n            }\n            /**\n             * Update the typeState so next time animateChanges is called we can compare the\n             * latest prop and resolvedValues to these.\n             */\n            typeState.prevProp = prop;\n            typeState.prevResolvedValues = resolvedValues;\n            /**\n             *\n             */\n            if (typeState.isActive) {\n                encounteredKeys = { ...encounteredKeys, ...resolvedValues };\n            }\n            if (isInitialRender && visualElement.blockInitialAnimation) {\n                shouldAnimateType = false;\n            }\n            /**\n             * If this is an inherited prop we want to skip this animation\n             * unless the inherited variants haven't changed on this render.\n             */\n            const willAnimateViaParent = isInherited && variantDidChange;\n            const needsAnimating = !willAnimateViaParent || handledRemovedValues;\n            if (shouldAnimateType && needsAnimating) {\n                animations.push(...definitionList.map((animation) => ({\n                    animation: animation,\n                    options: { type },\n                })));\n            }\n        }\n        /**\n         * If there are some removed value that haven't been dealt with,\n         * we need to create a new animation that falls back either to the value\n         * defined in the style prop, or the last read value.\n         */\n        if (removedKeys.size) {\n            const fallbackAnimation = {};\n            removedKeys.forEach((key) => {\n                const fallbackTarget = visualElement.getBaseTarget(key);\n                const motionValue = visualElement.getValue(key);\n                if (motionValue)\n                    motionValue.liveStyle = true;\n                // @ts-expect-error - @mattgperry to figure if we should do something here\n                fallbackAnimation[key] = fallbackTarget !== null && fallbackTarget !== void 0 ? fallbackTarget : null;\n            });\n            animations.push({ animation: fallbackAnimation });\n        }\n        let shouldAnimate = Boolean(animations.length);\n        if (isInitialRender &&\n            (props.initial === false || props.initial === props.animate) &&\n            !visualElement.manuallyAnimateOnMount) {\n            shouldAnimate = false;\n        }\n        isInitialRender = false;\n        return shouldAnimate ? animate(animations) : Promise.resolve();\n    }\n    /**\n     * Change whether a certain animation type is active.\n     */\n    function setActive(type, isActive) {\n        var _a;\n        // If the active state hasn't changed, we can safely do nothing here\n        if (state[type].isActive === isActive)\n            return Promise.resolve();\n        // Propagate active change to children\n        (_a = visualElement.variantChildren) === null || _a === void 0 ? void 0 : _a.forEach((child) => { var _a; return (_a = child.animationState) === null || _a === void 0 ? void 0 : _a.setActive(type, isActive); });\n        state[type].isActive = isActive;\n        const animations = animateChanges(type);\n        for (const key in state) {\n            state[key].protectedKeys = {};\n        }\n        return animations;\n    }\n    return {\n        animateChanges,\n        setActive,\n        setAnimateFunction,\n        getState: () => state,\n        reset: () => {\n            state = createState();\n            isInitialRender = true;\n        },\n    };\n}\nfunction checkVariantsDidChange(prev, next) {\n    if (typeof next === \"string\") {\n        return next !== prev;\n    }\n    else if (Array.isArray(next)) {\n        return !shallowCompare(next, prev);\n    }\n    return false;\n}\nfunction createTypeState(isActive = false) {\n    return {\n        isActive,\n        protectedKeys: {},\n        needsAnimating: {},\n        prevResolvedValues: {},\n    };\n}\nfunction createState() {\n    return {\n        animate: createTypeState(true),\n        whileInView: createTypeState(),\n        whileHover: createTypeState(),\n        whileTap: createTypeState(),\n        whileDrag: createTypeState(),\n        whileFocus: createTypeState(),\n        exit: createTypeState(),\n    };\n}\n\nexport { checkVariantsDidChange, createAnimationState };\n","class Feature {\n    constructor(node) {\n        this.isMounted = false;\n        this.node = node;\n    }\n    update() { }\n}\n\nexport { Feature };\n","import { isAnimationControls } from '../../../animation/utils/is-animation-controls.mjs';\nimport { createAnimationState } from '../../../render/utils/animation-state.mjs';\nimport { Feature } from '../Feature.mjs';\n\nclass AnimationFeature extends Feature {\n    /**\n     * We dynamically generate the AnimationState manager as it contains a reference\n     * to the underlying animation library. We only want to load that if we load this,\n     * so people can optionally code split it out using the `m` component.\n     */\n    constructor(node) {\n        super(node);\n        node.animationState || (node.animationState = createAnimationState(node));\n    }\n    updateAnimationControlsSubscription() {\n        const { animate } = this.node.getProps();\n        if (isAnimationControls(animate)) {\n            this.unmountControls = animate.subscribe(this.node);\n        }\n    }\n    /**\n     * Subscribe any provided AnimationControls to the component's VisualElement\n     */\n    mount() {\n        this.updateAnimationControlsSubscription();\n    }\n    update() {\n        const { animate } = this.node.getProps();\n        const { animate: prevAnimate } = this.node.prevProps || {};\n        if (animate !== prevAnimate) {\n            this.updateAnimationControlsSubscription();\n        }\n    }\n    unmount() {\n        var _a;\n        this.node.animationState.reset();\n        (_a = this.unmountControls) === null || _a === void 0 ? void 0 : _a.call(this);\n    }\n}\n\nexport { AnimationFeature };\n","import { Feature } from '../Feature.mjs';\n\nlet id = 0;\nclass ExitAnimationFeature extends Feature {\n    constructor() {\n        super(...arguments);\n        this.id = id++;\n    }\n    update() {\n        if (!this.node.presenceContext)\n            return;\n        const { isPresent, onExitComplete } = this.node.presenceContext;\n        const { isPresent: prevIsPresent } = this.node.prevPresenceContext || {};\n        if (!this.node.animationState || isPresent === prevIsPresent) {\n            return;\n        }\n        const exitAnimation = this.node.animationState.setActive(\"exit\", !isPresent);\n        if (onExitComplete && !isPresent) {\n            exitAnimation.then(() => onExitComplete(this.id));\n        }\n    }\n    mount() {\n        const { register } = this.node.presenceContext || {};\n        if (register) {\n            this.unmount = register(this.id);\n        }\n    }\n    unmount() { }\n}\n\nexport { ExitAnimationFeature };\n","import { AnimationFeature } from './animation/index.mjs';\nimport { ExitAnimationFeature } from './animation/exit.mjs';\n\nconst animations = {\n    animation: {\n        Feature: AnimationFeature,\n    },\n    exit: {\n        Feature: ExitAnimationFeature,\n    },\n};\n\nexport { animations };\n","function addDomEvent(target, eventName, handler, options = { passive: true }) {\n    target.addEventListener(eventName, handler, options);\n    return () => target.removeEventListener(eventName, handler);\n}\n\nexport { addDomEvent };\n","import { isPrimaryPointer } from 'motion-dom';\n\nfunction extractEventInfo(event) {\n    return {\n        point: {\n            x: event.pageX,\n            y: event.pageY,\n        },\n    };\n}\nconst addPointerInfo = (handler) => {\n    return (event) => isPrimaryPointer(event) && handler(event, extractEventInfo(event));\n};\n\nexport { addPointerInfo, extractEventInfo };\n","import { addDomEvent } from './add-dom-event.mjs';\nimport { addPointerInfo } from './event-info.mjs';\n\nfunction addPointerEvent(target, eventName, handler, options) {\n    return addDomEvent(target, eventName, addPointerInfo(handler), options);\n}\n\nexport { addPointerEvent };\n","const distance = (a, b) => Math.abs(a - b);\nfunction distance2D(a, b) {\n    // Multi-dimensional\n    const xDelta = distance(a.x, b.x);\n    const yDelta = distance(a.y, b.y);\n    return Math.sqrt(xDelta ** 2 + yDelta ** 2);\n}\n\nexport { distance, distance2D };\n","import { isPrimaryPointer } from 'motion-dom';\nimport { secondsToMilliseconds, millisecondsToSeconds } from 'motion-utils';\nimport { addPointerEvent } from '../../events/add-pointer-event.mjs';\nimport { extractEventInfo } from '../../events/event-info.mjs';\nimport { distance2D } from '../../utils/distance.mjs';\nimport { pipe } from '../../utils/pipe.mjs';\nimport { frame, cancelFrame, frameData } from '../../frameloop/frame.mjs';\n\n/**\n * @internal\n */\nclass PanSession {\n    constructor(event, handlers, { transformPagePoint, contextWindow, dragSnapToOrigin = false, } = {}) {\n        /**\n         * @internal\n         */\n        this.startEvent = null;\n        /**\n         * @internal\n         */\n        this.lastMoveEvent = null;\n        /**\n         * @internal\n         */\n        this.lastMoveEventInfo = null;\n        /**\n         * @internal\n         */\n        this.handlers = {};\n        /**\n         * @internal\n         */\n        this.contextWindow = window;\n        this.updatePoint = () => {\n            if (!(this.lastMoveEvent && this.lastMoveEventInfo))\n                return;\n            const info = getPanInfo(this.lastMoveEventInfo, this.history);\n            const isPanStarted = this.startEvent !== null;\n            // Only start panning if the offset is larger than 3 pixels. If we make it\n            // any larger than this we'll want to reset the pointer history\n            // on the first update to avoid visual snapping to the cursoe.\n            const isDistancePastThreshold = distance2D(info.offset, { x: 0, y: 0 }) >= 3;\n            if (!isPanStarted && !isDistancePastThreshold)\n                return;\n            const { point } = info;\n            const { timestamp } = frameData;\n            this.history.push({ ...point, timestamp });\n            const { onStart, onMove } = this.handlers;\n            if (!isPanStarted) {\n                onStart && onStart(this.lastMoveEvent, info);\n                this.startEvent = this.lastMoveEvent;\n            }\n            onMove && onMove(this.lastMoveEvent, info);\n        };\n        this.handlePointerMove = (event, info) => {\n            this.lastMoveEvent = event;\n            this.lastMoveEventInfo = transformPoint(info, this.transformPagePoint);\n            // Throttle mouse move event to once per frame\n            frame.update(this.updatePoint, true);\n        };\n        this.handlePointerUp = (event, info) => {\n            this.end();\n            const { onEnd, onSessionEnd, resumeAnimation } = this.handlers;\n            if (this.dragSnapToOrigin)\n                resumeAnimation && resumeAnimation();\n            if (!(this.lastMoveEvent && this.lastMoveEventInfo))\n                return;\n            const panInfo = getPanInfo(event.type === \"pointercancel\"\n                ? this.lastMoveEventInfo\n                : transformPoint(info, this.transformPagePoint), this.history);\n            if (this.startEvent && onEnd) {\n                onEnd(event, panInfo);\n            }\n            onSessionEnd && onSessionEnd(event, panInfo);\n        };\n        // If we have more than one touch, don't start detecting this gesture\n        if (!isPrimaryPointer(event))\n            return;\n        this.dragSnapToOrigin = dragSnapToOrigin;\n        this.handlers = handlers;\n        this.transformPagePoint = transformPagePoint;\n        this.contextWindow = contextWindow || window;\n        const info = extractEventInfo(event);\n        const initialInfo = transformPoint(info, this.transformPagePoint);\n        const { point } = initialInfo;\n        const { timestamp } = frameData;\n        this.history = [{ ...point, timestamp }];\n        const { onSessionStart } = handlers;\n        onSessionStart &&\n            onSessionStart(event, getPanInfo(initialInfo, this.history));\n        this.removeListeners = pipe(addPointerEvent(this.contextWindow, \"pointermove\", this.handlePointerMove), addPointerEvent(this.contextWindow, \"pointerup\", this.handlePointerUp), addPointerEvent(this.contextWindow, \"pointercancel\", this.handlePointerUp));\n    }\n    updateHandlers(handlers) {\n        this.handlers = handlers;\n    }\n    end() {\n        this.removeListeners && this.removeListeners();\n        cancelFrame(this.updatePoint);\n    }\n}\nfunction transformPoint(info, transformPagePoint) {\n    return transformPagePoint ? { point: transformPagePoint(info.point) } : info;\n}\nfunction subtractPoint(a, b) {\n    return { x: a.x - b.x, y: a.y - b.y };\n}\nfunction getPanInfo({ point }, history) {\n    return {\n        point,\n        delta: subtractPoint(point, lastDevicePoint(history)),\n        offset: subtractPoint(point, startDevicePoint(history)),\n        velocity: getVelocity(history, 0.1),\n    };\n}\nfunction startDevicePoint(history) {\n    return history[0];\n}\nfunction lastDevicePoint(history) {\n    return history[history.length - 1];\n}\nfunction getVelocity(history, timeDelta) {\n    if (history.length < 2) {\n        return { x: 0, y: 0 };\n    }\n    let i = history.length - 1;\n    let timestampedPoint = null;\n    const lastPoint = lastDevicePoint(history);\n    while (i >= 0) {\n        timestampedPoint = history[i];\n        if (lastPoint.timestamp - timestampedPoint.timestamp >\n            secondsToMilliseconds(timeDelta)) {\n            break;\n        }\n        i--;\n    }\n    if (!timestampedPoint) {\n        return { x: 0, y: 0 };\n    }\n    const time = millisecondsToSeconds(lastPoint.timestamp - timestampedPoint.timestamp);\n    if (time === 0) {\n        return { x: 0, y: 0 };\n    }\n    const currentVelocity = {\n        x: (lastPoint.x - timestampedPoint.x) / time,\n        y: (lastPoint.y - timestampedPoint.y) / time,\n    };\n    if (currentVelocity.x === Infinity) {\n        currentVelocity.x = 0;\n    }\n    if (currentVelocity.y === Infinity) {\n        currentVelocity.y = 0;\n    }\n    return currentVelocity;\n}\n\nexport { PanSession };\n","import { mixNumber } from '../../utils/mix/number.mjs';\n\nconst SCALE_PRECISION = 0.0001;\nconst SCALE_MIN = 1 - SCALE_PRECISION;\nconst SCALE_MAX = 1 + SCALE_PRECISION;\nconst TRANSLATE_PRECISION = 0.01;\nconst TRANSLATE_MIN = 0 - TRANSLATE_PRECISION;\nconst TRANSLATE_MAX = 0 + TRANSLATE_PRECISION;\nfunction calcLength(axis) {\n    return axis.max - axis.min;\n}\nfunction isNear(value, target, maxDistance) {\n    return Math.abs(value - target) <= maxDistance;\n}\nfunction calcAxisDelta(delta, source, target, origin = 0.5) {\n    delta.origin = origin;\n    delta.originPoint = mixNumber(source.min, source.max, delta.origin);\n    delta.scale = calcLength(target) / calcLength(source);\n    delta.translate =\n        mixNumber(target.min, target.max, delta.origin) - delta.originPoint;\n    if ((delta.scale >= SCALE_MIN && delta.scale <= SCALE_MAX) ||\n        isNaN(delta.scale)) {\n        delta.scale = 1.0;\n    }\n    if ((delta.translate >= TRANSLATE_MIN &&\n        delta.translate <= TRANSLATE_MAX) ||\n        isNaN(delta.translate)) {\n        delta.translate = 0.0;\n    }\n}\nfunction calcBoxDelta(delta, source, target, origin) {\n    calcAxisDelta(delta.x, source.x, target.x, origin ? origin.originX : undefined);\n    calcAxisDelta(delta.y, source.y, target.y, origin ? origin.originY : undefined);\n}\nfunction calcRelativeAxis(target, relative, parent) {\n    target.min = parent.min + relative.min;\n    target.max = target.min + calcLength(relative);\n}\nfunction calcRelativeBox(target, relative, parent) {\n    calcRelativeAxis(target.x, relative.x, parent.x);\n    calcRelativeAxis(target.y, relative.y, parent.y);\n}\nfunction calcRelativeAxisPosition(target, layout, parent) {\n    target.min = layout.min - parent.min;\n    target.max = target.min + calcLength(layout);\n}\nfunction calcRelativePosition(target, layout, parent) {\n    calcRelativeAxisPosition(target.x, layout.x, parent.x);\n    calcRelativeAxisPosition(target.y, layout.y, parent.y);\n}\n\nexport { calcAxisDelta, calcBoxDelta, calcLength, calcRelativeAxis, calcRelativeAxisPosition, calcRelativeBox, calcRelativePosition, isNear };\n","import { progress } from 'motion-utils';\nimport { calcLength } from '../../../projection/geometry/delta-calc.mjs';\nimport { clamp } from '../../../utils/clamp.mjs';\nimport { mixNumber } from '../../../utils/mix/number.mjs';\n\n/**\n * Apply constraints to a point. These constraints are both physical along an\n * axis, and an elastic factor that determines how much to constrain the point\n * by if it does lie outside the defined parameters.\n */\nfunction applyConstraints(point, { min, max }, elastic) {\n    if (min !== undefined && point < min) {\n        // If we have a min point defined, and this is outside of that, constrain\n        point = elastic\n            ? mixNumber(min, point, elastic.min)\n            : Math.max(point, min);\n    }\n    else if (max !== undefined && point > max) {\n        // If we have a max point defined, and this is outside of that, constrain\n        point = elastic\n            ? mixNumber(max, point, elastic.max)\n            : Math.min(point, max);\n    }\n    return point;\n}\n/**\n * Calculate constraints in terms of the viewport when defined relatively to the\n * measured axis. This is measured from the nearest edge, so a max constraint of 200\n * on an axis with a max value of 300 would return a constraint of 500 - axis length\n */\nfunction calcRelativeAxisConstraints(axis, min, max) {\n    return {\n        min: min !== undefined ? axis.min + min : undefined,\n        max: max !== undefined\n            ? axis.max + max - (axis.max - axis.min)\n            : undefined,\n    };\n}\n/**\n * Calculate constraints in terms of the viewport when\n * defined relatively to the measured bounding box.\n */\nfunction calcRelativeConstraints(layoutBox, { top, left, bottom, right }) {\n    return {\n        x: calcRelativeAxisConstraints(layoutBox.x, left, right),\n        y: calcRelativeAxisConstraints(layoutBox.y, top, bottom),\n    };\n}\n/**\n * Calculate viewport constraints when defined as another viewport-relative axis\n */\nfunction calcViewportAxisConstraints(layoutAxis, constraintsAxis) {\n    let min = constraintsAxis.min - layoutAxis.min;\n    let max = constraintsAxis.max - layoutAxis.max;\n    // If the constraints axis is actually smaller than the layout axis then we can\n    // flip the constraints\n    if (constraintsAxis.max - constraintsAxis.min <\n        layoutAxis.max - layoutAxis.min) {\n        [min, max] = [max, min];\n    }\n    return { min, max };\n}\n/**\n * Calculate viewport constraints when defined as another viewport-relative box\n */\nfunction calcViewportConstraints(layoutBox, constraintsBox) {\n    return {\n        x: calcViewportAxisConstraints(layoutBox.x, constraintsBox.x),\n        y: calcViewportAxisConstraints(layoutBox.y, constraintsBox.y),\n    };\n}\n/**\n * Calculate a transform origin relative to the source axis, between 0-1, that results\n * in an asthetically pleasing scale/transform needed to project from source to target.\n */\nfunction calcOrigin(source, target) {\n    let origin = 0.5;\n    const sourceLength = calcLength(source);\n    const targetLength = calcLength(target);\n    if (targetLength > sourceLength) {\n        origin = progress(target.min, target.max - sourceLength, source.min);\n    }\n    else if (sourceLength > targetLength) {\n        origin = progress(source.min, source.max - targetLength, target.min);\n    }\n    return clamp(0, 1, origin);\n}\n/**\n * Rebase the calculated viewport constraints relative to the layout.min point.\n */\nfunction rebaseAxisConstraints(layout, constraints) {\n    const relativeConstraints = {};\n    if (constraints.min !== undefined) {\n        relativeConstraints.min = constraints.min - layout.min;\n    }\n    if (constraints.max !== undefined) {\n        relativeConstraints.max = constraints.max - layout.min;\n    }\n    return relativeConstraints;\n}\nconst defaultElastic = 0.35;\n/**\n * Accepts a dragElastic prop and returns resolved elastic values for each axis.\n */\nfunction resolveDragElastic(dragElastic = defaultElastic) {\n    if (dragElastic === false) {\n        dragElastic = 0;\n    }\n    else if (dragElastic === true) {\n        dragElastic = defaultElastic;\n    }\n    return {\n        x: resolveAxisElastic(dragElastic, \"left\", \"right\"),\n        y: resolveAxisElastic(dragElastic, \"top\", \"bottom\"),\n    };\n}\nfunction resolveAxisElastic(dragElastic, minLabel, maxLabel) {\n    return {\n        min: resolvePointElastic(dragElastic, minLabel),\n        max: resolvePointElastic(dragElastic, maxLabel),\n    };\n}\nfunction resolvePointElastic(dragElastic, label) {\n    return typeof dragElastic === \"number\"\n        ? dragElastic\n        : dragElastic[label] || 0;\n}\n\nexport { applyConstraints, calcOrigin, calcRelativeAxisConstraints, calcRelativeConstraints, calcViewportAxisConstraints, calcViewportConstraints, defaultElastic, rebaseAxisConstraints, resolveAxisElastic, resolveDragElastic, resolvePointElastic };\n","const createAxisDelta = () => ({\n    translate: 0,\n    scale: 1,\n    origin: 0,\n    originPoint: 0,\n});\nconst createDelta = () => ({\n    x: createAxisDelta(),\n    y: createAxisDelta(),\n});\nconst createAxis = () => ({ min: 0, max: 0 });\nconst createBox = () => ({\n    x: createAxis(),\n    y: createAxis(),\n});\n\nexport { createAxis, createAxisDelta, createBox, createDelta };\n","function eachAxis(callback) {\n    return [callback(\"x\"), callback(\"y\")];\n}\n\nexport { eachAxis };\n","/**\n * Bounding boxes tend to be defined as top, left, right, bottom. For various operations\n * it's easier to consider each axis individually. This function returns a bounding box\n * as a map of single-axis min/max values.\n */\nfunction convertBoundingBoxToBox({ top, left, right, bottom, }) {\n    return {\n        x: { min: left, max: right },\n        y: { min: top, max: bottom },\n    };\n}\nfunction convertBoxToBoundingBox({ x, y }) {\n    return { top: y.min, right: x.max, bottom: y.max, left: x.min };\n}\n/**\n * Applies a TransformPoint function to a bounding box. TransformPoint is usually a function\n * provided by Framer to allow measured points to be corrected for device scaling. This is used\n * when measuring DOM elements and DOM event points.\n */\nfunction transformBoxPoints(point, transformPoint) {\n    if (!transformPoint)\n        return point;\n    const topLeft = transformPoint({ x: point.left, y: point.top });\n    const bottomRight = transformPoint({ x: point.right, y: point.bottom });\n    return {\n        top: topLeft.y,\n        left: topLeft.x,\n        bottom: bottomRight.y,\n        right: bottomRight.x,\n    };\n}\n\nexport { convertBoundingBoxToBox, convertBoxToBoundingBox, transformBoxPoints };\n","function isIdentityScale(scale) {\n    return scale === undefined || scale === 1;\n}\nfunction hasScale({ scale, scaleX, scaleY }) {\n    return (!isIdentityScale(scale) ||\n        !isIdentityScale(scaleX) ||\n        !isIdentityScale(scaleY));\n}\nfunction hasTransform(values) {\n    return (hasScale(values) ||\n        has2DTranslate(values) ||\n        values.z ||\n        values.rotate ||\n        values.rotateX ||\n        values.rotateY ||\n        values.skewX ||\n        values.skewY);\n}\nfunction has2DTranslate(values) {\n    return is2DTranslate(values.x) || is2DTranslate(values.y);\n}\nfunction is2DTranslate(value) {\n    return value && value !== \"0%\";\n}\n\nexport { has2DTranslate, hasScale, hasTransform };\n","import { mixNumber } from '../../utils/mix/number.mjs';\nimport { hasTransform } from '../utils/has-transform.mjs';\n\n/**\n * Scales a point based on a factor and an originPoint\n */\nfunction scalePoint(point, scale, originPoint) {\n    const distanceFromOrigin = point - originPoint;\n    const scaled = scale * distanceFromOrigin;\n    return originPoint + scaled;\n}\n/**\n * Applies a translate/scale delta to a point\n */\nfunction applyPointDelta(point, translate, scale, originPoint, boxScale) {\n    if (boxScale !== undefined) {\n        point = scalePoint(point, boxScale, originPoint);\n    }\n    return scalePoint(point, scale, originPoint) + translate;\n}\n/**\n * Applies a translate/scale delta to an axis\n */\nfunction applyAxisDelta(axis, translate = 0, scale = 1, originPoint, boxScale) {\n    axis.min = applyPointDelta(axis.min, translate, scale, originPoint, boxScale);\n    axis.max = applyPointDelta(axis.max, translate, scale, originPoint, boxScale);\n}\n/**\n * Applies a translate/scale delta to a box\n */\nfunction applyBoxDelta(box, { x, y }) {\n    applyAxisDelta(box.x, x.translate, x.scale, x.originPoint);\n    applyAxisDelta(box.y, y.translate, y.scale, y.originPoint);\n}\nconst TREE_SCALE_SNAP_MIN = 0.999999999999;\nconst TREE_SCALE_SNAP_MAX = 1.0000000000001;\n/**\n * Apply a tree of deltas to a box. We do this to calculate the effect of all the transforms\n * in a tree upon our box before then calculating how to project it into our desired viewport-relative box\n *\n * This is the final nested loop within updateLayoutDelta for future refactoring\n */\nfunction applyTreeDeltas(box, treeScale, treePath, isSharedTransition = false) {\n    const treeLength = treePath.length;\n    if (!treeLength)\n        return;\n    // Reset the treeScale\n    treeScale.x = treeScale.y = 1;\n    let node;\n    let delta;\n    for (let i = 0; i < treeLength; i++) {\n        node = treePath[i];\n        delta = node.projectionDelta;\n        /**\n         * TODO: Prefer to remove this, but currently we have motion components with\n         * display: contents in Framer.\n         */\n        const { visualElement } = node.options;\n        if (visualElement &&\n            visualElement.props.style &&\n            visualElement.props.style.display === \"contents\") {\n            continue;\n        }\n        if (isSharedTransition &&\n            node.options.layoutScroll &&\n            node.scroll &&\n            node !== node.root) {\n            transformBox(box, {\n                x: -node.scroll.offset.x,\n                y: -node.scroll.offset.y,\n            });\n        }\n        if (delta) {\n            // Incoporate each ancestor's scale into a culmulative treeScale for this component\n            treeScale.x *= delta.x.scale;\n            treeScale.y *= delta.y.scale;\n            // Apply each ancestor's calculated delta into this component's recorded layout box\n            applyBoxDelta(box, delta);\n        }\n        if (isSharedTransition && hasTransform(node.latestValues)) {\n            transformBox(box, node.latestValues);\n        }\n    }\n    /**\n     * Snap tree scale back to 1 if it's within a non-perceivable threshold.\n     * This will help reduce useless scales getting rendered.\n     */\n    if (treeScale.x < TREE_SCALE_SNAP_MAX &&\n        treeScale.x > TREE_SCALE_SNAP_MIN) {\n        treeScale.x = 1.0;\n    }\n    if (treeScale.y < TREE_SCALE_SNAP_MAX &&\n        treeScale.y > TREE_SCALE_SNAP_MIN) {\n        treeScale.y = 1.0;\n    }\n}\nfunction translateAxis(axis, distance) {\n    axis.min = axis.min + distance;\n    axis.max = axis.max + distance;\n}\n/**\n * Apply a transform to an axis from the latest resolved motion values.\n * This function basically acts as a bridge between a flat motion value map\n * and applyAxisDelta\n */\nfunction transformAxis(axis, axisTranslate, axisScale, boxScale, axisOrigin = 0.5) {\n    const originPoint = mixNumber(axis.min, axis.max, axisOrigin);\n    // Apply the axis delta to the final axis\n    applyAxisDelta(axis, axisTranslate, axisScale, originPoint, boxScale);\n}\n/**\n * Apply a transform to a box from the latest resolved motion values.\n */\nfunction transformBox(box, transform) {\n    transformAxis(box.x, transform.x, transform.scaleX, transform.scale, transform.originX);\n    transformAxis(box.y, transform.y, transform.scaleY, transform.scale, transform.originY);\n}\n\nexport { applyAxisDelta, applyBoxDelta, applyPointDelta, applyTreeDeltas, scalePoint, transformAxis, transformBox, translateAxis };\n","import { convertBoundingBoxToBox, transformBoxPoints } from '../geometry/conversion.mjs';\nimport { translateAxis } from '../geometry/delta-apply.mjs';\n\nfunction measureViewportBox(instance, transformPoint) {\n    return convertBoundingBoxToBox(transformBoxPoints(instance.getBoundingClientRect(), transformPoint));\n}\nfunction measurePageBox(element, rootProjectionNode, transformPagePoint) {\n    const viewportBox = measureViewportBox(element, transformPagePoint);\n    const { scroll } = rootProjectionNode;\n    if (scroll) {\n        translateAxis(viewportBox.x, scroll.offset.x);\n        translateAxis(viewportBox.y, scroll.offset.y);\n    }\n    return viewportBox;\n}\n\nexport { measurePageBox, measureViewportBox };\n","// Fixes https://github.com/motiondivision/motion/issues/2270\nconst getContextWindow = ({ current }) => {\n    return current ? current.ownerDocument.defaultView : null;\n};\n\nexport { getContextWindow };\n","import { invariant } from 'motion-utils';\nimport { setDragLock } from 'motion-dom';\nimport { PanSession } from '../pan/PanSession.mjs';\nimport { isRefObject } from '../../utils/is-ref-object.mjs';\nimport { addPointerEvent } from '../../events/add-pointer-event.mjs';\nimport { applyConstraints, calcRelativeConstraints, resolveDragElastic, rebaseAxisConstraints, calcViewportConstraints, calcOrigin, defaultElastic } from './utils/constraints.mjs';\nimport { createBox } from '../../projection/geometry/models.mjs';\nimport { eachAxis } from '../../projection/utils/each-axis.mjs';\nimport { measurePageBox } from '../../projection/utils/measure.mjs';\nimport { extractEventInfo } from '../../events/event-info.mjs';\nimport { convertBoxToBoundingBox, convertBoundingBoxToBox } from '../../projection/geometry/conversion.mjs';\nimport { addDomEvent } from '../../events/add-dom-event.mjs';\nimport { calcLength } from '../../projection/geometry/delta-calc.mjs';\nimport { mixNumber } from '../../utils/mix/number.mjs';\nimport { percent } from '../../value/types/numbers/units.mjs';\nimport { animateMotionValue } from '../../animation/interfaces/motion-value.mjs';\nimport { getContextWindow } from '../../utils/get-context-window.mjs';\nimport { addValueToWillChange } from '../../value/use-will-change/add-will-change.mjs';\nimport { frame } from '../../frameloop/frame.mjs';\n\nconst elementDragControls = new WeakMap();\n/**\n *\n */\n// let latestPointerEvent: PointerEvent\nclass VisualElementDragControls {\n    constructor(visualElement) {\n        this.openDragLock = null;\n        this.isDragging = false;\n        this.currentDirection = null;\n        this.originPoint = { x: 0, y: 0 };\n        /**\n         * The permitted boundaries of travel, in pixels.\n         */\n        this.constraints = false;\n        this.hasMutatedConstraints = false;\n        /**\n         * The per-axis resolved elastic values.\n         */\n        this.elastic = createBox();\n        this.visualElement = visualElement;\n    }\n    start(originEvent, { snapToCursor = false } = {}) {\n        /**\n         * Don't start dragging if this component is exiting\n         */\n        const { presenceContext } = this.visualElement;\n        if (presenceContext && presenceContext.isPresent === false)\n            return;\n        const onSessionStart = (event) => {\n            const { dragSnapToOrigin } = this.getProps();\n            // Stop or pause any animations on both axis values immediately. This allows the user to throw and catch\n            // the component.\n            dragSnapToOrigin ? this.pauseAnimation() : this.stopAnimation();\n            if (snapToCursor) {\n                this.snapToCursor(extractEventInfo(event).point);\n            }\n        };\n        const onStart = (event, info) => {\n            // Attempt to grab the global drag gesture lock - maybe make this part of PanSession\n            const { drag, dragPropagation, onDragStart } = this.getProps();\n            if (drag && !dragPropagation) {\n                if (this.openDragLock)\n                    this.openDragLock();\n                this.openDragLock = setDragLock(drag);\n                // If we don 't have the lock, don't start dragging\n                if (!this.openDragLock)\n                    return;\n            }\n            this.isDragging = true;\n            this.currentDirection = null;\n            this.resolveConstraints();\n            if (this.visualElement.projection) {\n                this.visualElement.projection.isAnimationBlocked = true;\n                this.visualElement.projection.target = undefined;\n            }\n            /**\n             * Record gesture origin\n             */\n            eachAxis((axis) => {\n                let current = this.getAxisMotionValue(axis).get() || 0;\n                /**\n                 * If the MotionValue is a percentage value convert to px\n                 */\n                if (percent.test(current)) {\n                    const { projection } = this.visualElement;\n                    if (projection && projection.layout) {\n                        const measuredAxis = projection.layout.layoutBox[axis];\n                        if (measuredAxis) {\n                            const length = calcLength(measuredAxis);\n                            current = length * (parseFloat(current) / 100);\n                        }\n                    }\n                }\n                this.originPoint[axis] = current;\n            });\n            // Fire onDragStart event\n            if (onDragStart) {\n                frame.postRender(() => onDragStart(event, info));\n            }\n            addValueToWillChange(this.visualElement, \"transform\");\n            const { animationState } = this.visualElement;\n            animationState && animationState.setActive(\"whileDrag\", true);\n        };\n        const onMove = (event, info) => {\n            // latestPointerEvent = event\n            const { dragPropagation, dragDirectionLock, onDirectionLock, onDrag, } = this.getProps();\n            // If we didn't successfully receive the gesture lock, early return.\n            if (!dragPropagation && !this.openDragLock)\n                return;\n            const { offset } = info;\n            // Attempt to detect drag direction if directionLock is true\n            if (dragDirectionLock && this.currentDirection === null) {\n                this.currentDirection = getCurrentDirection(offset);\n                // If we've successfully set a direction, notify listener\n                if (this.currentDirection !== null) {\n                    onDirectionLock && onDirectionLock(this.currentDirection);\n                }\n                return;\n            }\n            // Update each point with the latest position\n            this.updateAxis(\"x\", info.point, offset);\n            this.updateAxis(\"y\", info.point, offset);\n            /**\n             * Ideally we would leave the renderer to fire naturally at the end of\n             * this frame but if the element is about to change layout as the result\n             * of a re-render we want to ensure the browser can read the latest\n             * bounding box to ensure the pointer and element don't fall out of sync.\n             */\n            this.visualElement.render();\n            /**\n             * This must fire after the render call as it might trigger a state\n             * change which itself might trigger a layout update.\n             */\n            onDrag && onDrag(event, info);\n        };\n        const onSessionEnd = (event, info) => this.stop(event, info);\n        const resumeAnimation = () => eachAxis((axis) => {\n            var _a;\n            return this.getAnimationState(axis) === \"paused\" &&\n                ((_a = this.getAxisMotionValue(axis).animation) === null || _a === void 0 ? void 0 : _a.play());\n        });\n        const { dragSnapToOrigin } = this.getProps();\n        this.panSession = new PanSession(originEvent, {\n            onSessionStart,\n            onStart,\n            onMove,\n            onSessionEnd,\n            resumeAnimation,\n        }, {\n            transformPagePoint: this.visualElement.getTransformPagePoint(),\n            dragSnapToOrigin,\n            contextWindow: getContextWindow(this.visualElement),\n        });\n    }\n    stop(event, info) {\n        const isDragging = this.isDragging;\n        this.cancel();\n        if (!isDragging)\n            return;\n        const { velocity } = info;\n        this.startAnimation(velocity);\n        const { onDragEnd } = this.getProps();\n        if (onDragEnd) {\n            frame.postRender(() => onDragEnd(event, info));\n        }\n    }\n    cancel() {\n        this.isDragging = false;\n        const { projection, animationState } = this.visualElement;\n        if (projection) {\n            projection.isAnimationBlocked = false;\n        }\n        this.panSession && this.panSession.end();\n        this.panSession = undefined;\n        const { dragPropagation } = this.getProps();\n        if (!dragPropagation && this.openDragLock) {\n            this.openDragLock();\n            this.openDragLock = null;\n        }\n        animationState && animationState.setActive(\"whileDrag\", false);\n    }\n    updateAxis(axis, _point, offset) {\n        const { drag } = this.getProps();\n        // If we're not dragging this axis, do an early return.\n        if (!offset || !shouldDrag(axis, drag, this.currentDirection))\n            return;\n        const axisValue = this.getAxisMotionValue(axis);\n        let next = this.originPoint[axis] + offset[axis];\n        // Apply constraints\n        if (this.constraints && this.constraints[axis]) {\n            next = applyConstraints(next, this.constraints[axis], this.elastic[axis]);\n        }\n        axisValue.set(next);\n    }\n    resolveConstraints() {\n        var _a;\n        const { dragConstraints, dragElastic } = this.getProps();\n        const layout = this.visualElement.projection &&\n            !this.visualElement.projection.layout\n            ? this.visualElement.projection.measure(false)\n            : (_a = this.visualElement.projection) === null || _a === void 0 ? void 0 : _a.layout;\n        const prevConstraints = this.constraints;\n        if (dragConstraints && isRefObject(dragConstraints)) {\n            if (!this.constraints) {\n                this.constraints = this.resolveRefConstraints();\n            }\n        }\n        else {\n            if (dragConstraints && layout) {\n                this.constraints = calcRelativeConstraints(layout.layoutBox, dragConstraints);\n            }\n            else {\n                this.constraints = false;\n            }\n        }\n        this.elastic = resolveDragElastic(dragElastic);\n        /**\n         * If we're outputting to external MotionValues, we want to rebase the measured constraints\n         * from viewport-relative to component-relative.\n         */\n        if (prevConstraints !== this.constraints &&\n            layout &&\n            this.constraints &&\n            !this.hasMutatedConstraints) {\n            eachAxis((axis) => {\n                if (this.constraints !== false &&\n                    this.getAxisMotionValue(axis)) {\n                    this.constraints[axis] = rebaseAxisConstraints(layout.layoutBox[axis], this.constraints[axis]);\n                }\n            });\n        }\n    }\n    resolveRefConstraints() {\n        const { dragConstraints: constraints, onMeasureDragConstraints } = this.getProps();\n        if (!constraints || !isRefObject(constraints))\n            return false;\n        const constraintsElement = constraints.current;\n        invariant(constraintsElement !== null, \"If `dragConstraints` is set as a React ref, that ref must be passed to another component's `ref` prop.\");\n        const { projection } = this.visualElement;\n        // TODO\n        if (!projection || !projection.layout)\n            return false;\n        const constraintsBox = measurePageBox(constraintsElement, projection.root, this.visualElement.getTransformPagePoint());\n        let measuredConstraints = calcViewportConstraints(projection.layout.layoutBox, constraintsBox);\n        /**\n         * If there's an onMeasureDragConstraints listener we call it and\n         * if different constraints are returned, set constraints to that\n         */\n        if (onMeasureDragConstraints) {\n            const userConstraints = onMeasureDragConstraints(convertBoxToBoundingBox(measuredConstraints));\n            this.hasMutatedConstraints = !!userConstraints;\n            if (userConstraints) {\n                measuredConstraints = convertBoundingBoxToBox(userConstraints);\n            }\n        }\n        return measuredConstraints;\n    }\n    startAnimation(velocity) {\n        const { drag, dragMomentum, dragElastic, dragTransition, dragSnapToOrigin, onDragTransitionEnd, } = this.getProps();\n        const constraints = this.constraints || {};\n        const momentumAnimations = eachAxis((axis) => {\n            if (!shouldDrag(axis, drag, this.currentDirection)) {\n                return;\n            }\n            let transition = (constraints && constraints[axis]) || {};\n            if (dragSnapToOrigin)\n                transition = { min: 0, max: 0 };\n            /**\n             * Overdamp the boundary spring if `dragElastic` is disabled. There's still a frame\n             * of spring animations so we should look into adding a disable spring option to `inertia`.\n             * We could do something here where we affect the `bounceStiffness` and `bounceDamping`\n             * using the value of `dragElastic`.\n             */\n            const bounceStiffness = dragElastic ? 200 : 1000000;\n            const bounceDamping = dragElastic ? 40 : 10000000;\n            const inertia = {\n                type: \"inertia\",\n                velocity: dragMomentum ? velocity[axis] : 0,\n                bounceStiffness,\n                bounceDamping,\n                timeConstant: 750,\n                restDelta: 1,\n                restSpeed: 10,\n                ...dragTransition,\n                ...transition,\n            };\n            // If we're not animating on an externally-provided `MotionValue` we can use the\n            // component's animation controls which will handle interactions with whileHover (etc),\n            // otherwise we just have to animate the `MotionValue` itself.\n            return this.startAxisValueAnimation(axis, inertia);\n        });\n        // Run all animations and then resolve the new drag constraints.\n        return Promise.all(momentumAnimations).then(onDragTransitionEnd);\n    }\n    startAxisValueAnimation(axis, transition) {\n        const axisValue = this.getAxisMotionValue(axis);\n        addValueToWillChange(this.visualElement, axis);\n        return axisValue.start(animateMotionValue(axis, axisValue, 0, transition, this.visualElement, false));\n    }\n    stopAnimation() {\n        eachAxis((axis) => this.getAxisMotionValue(axis).stop());\n    }\n    pauseAnimation() {\n        eachAxis((axis) => { var _a; return (_a = this.getAxisMotionValue(axis).animation) === null || _a === void 0 ? void 0 : _a.pause(); });\n    }\n    getAnimationState(axis) {\n        var _a;\n        return (_a = this.getAxisMotionValue(axis).animation) === null || _a === void 0 ? void 0 : _a.state;\n    }\n    /**\n     * Drag works differently depending on which props are provided.\n     *\n     * - If _dragX and _dragY are provided, we output the gesture delta directly to those motion values.\n     * - Otherwise, we apply the delta to the x/y motion values.\n     */\n    getAxisMotionValue(axis) {\n        const dragKey = `_drag${axis.toUpperCase()}`;\n        const props = this.visualElement.getProps();\n        const externalMotionValue = props[dragKey];\n        return externalMotionValue\n            ? externalMotionValue\n            : this.visualElement.getValue(axis, (props.initial\n                ? props.initial[axis]\n                : undefined) || 0);\n    }\n    snapToCursor(point) {\n        eachAxis((axis) => {\n            const { drag } = this.getProps();\n            // If we're not dragging this axis, do an early return.\n            if (!shouldDrag(axis, drag, this.currentDirection))\n                return;\n            const { projection } = this.visualElement;\n            const axisValue = this.getAxisMotionValue(axis);\n            if (projection && projection.layout) {\n                const { min, max } = projection.layout.layoutBox[axis];\n                axisValue.set(point[axis] - mixNumber(min, max, 0.5));\n            }\n        });\n    }\n    /**\n     * When the viewport resizes we want to check if the measured constraints\n     * have changed and, if so, reposition the element within those new constraints\n     * relative to where it was before the resize.\n     */\n    scalePositionWithinConstraints() {\n        if (!this.visualElement.current)\n            return;\n        const { drag, dragConstraints } = this.getProps();\n        const { projection } = this.visualElement;\n        if (!isRefObject(dragConstraints) || !projection || !this.constraints)\n            return;\n        /**\n         * Stop current animations as there can be visual glitching if we try to do\n         * this mid-animation\n         */\n        this.stopAnimation();\n        /**\n         * Record the relative position of the dragged element relative to the\n         * constraints box and save as a progress value.\n         */\n        const boxProgress = { x: 0, y: 0 };\n        eachAxis((axis) => {\n            const axisValue = this.getAxisMotionValue(axis);\n            if (axisValue && this.constraints !== false) {\n                const latest = axisValue.get();\n                boxProgress[axis] = calcOrigin({ min: latest, max: latest }, this.constraints[axis]);\n            }\n        });\n        /**\n         * Update the layout of this element and resolve the latest drag constraints\n         */\n        const { transformTemplate } = this.visualElement.getProps();\n        this.visualElement.current.style.transform = transformTemplate\n            ? transformTemplate({}, \"\")\n            : \"none\";\n        projection.root && projection.root.updateScroll();\n        projection.updateLayout();\n        this.resolveConstraints();\n        /**\n         * For each axis, calculate the current progress of the layout axis\n         * within the new constraints.\n         */\n        eachAxis((axis) => {\n            if (!shouldDrag(axis, drag, null))\n                return;\n            /**\n             * Calculate a new transform based on the previous box progress\n             */\n            const axisValue = this.getAxisMotionValue(axis);\n            const { min, max } = this.constraints[axis];\n            axisValue.set(mixNumber(min, max, boxProgress[axis]));\n        });\n    }\n    addListeners() {\n        if (!this.visualElement.current)\n            return;\n        elementDragControls.set(this.visualElement, this);\n        const element = this.visualElement.current;\n        /**\n         * Attach a pointerdown event listener on this DOM element to initiate drag tracking.\n         */\n        const stopPointerListener = addPointerEvent(element, \"pointerdown\", (event) => {\n            const { drag, dragListener = true } = this.getProps();\n            drag && dragListener && this.start(event);\n        });\n        const measureDragConstraints = () => {\n            const { dragConstraints } = this.getProps();\n            if (isRefObject(dragConstraints) && dragConstraints.current) {\n                this.constraints = this.resolveRefConstraints();\n            }\n        };\n        const { projection } = this.visualElement;\n        const stopMeasureLayoutListener = projection.addEventListener(\"measure\", measureDragConstraints);\n        if (projection && !projection.layout) {\n            projection.root && projection.root.updateScroll();\n            projection.updateLayout();\n        }\n        frame.read(measureDragConstraints);\n        /**\n         * Attach a window resize listener to scale the draggable target within its defined\n         * constraints as the window resizes.\n         */\n        const stopResizeListener = addDomEvent(window, \"resize\", () => this.scalePositionWithinConstraints());\n        /**\n         * If the element's layout changes, calculate the delta and apply that to\n         * the drag gesture's origin point.\n         */\n        const stopLayoutUpdateListener = projection.addEventListener(\"didUpdate\", (({ delta, hasLayoutChanged }) => {\n            if (this.isDragging && hasLayoutChanged) {\n                eachAxis((axis) => {\n                    const motionValue = this.getAxisMotionValue(axis);\n                    if (!motionValue)\n                        return;\n                    this.originPoint[axis] += delta[axis].translate;\n                    motionValue.set(motionValue.get() + delta[axis].translate);\n                });\n                this.visualElement.render();\n            }\n        }));\n        return () => {\n            stopResizeListener();\n            stopPointerListener();\n            stopMeasureLayoutListener();\n            stopLayoutUpdateListener && stopLayoutUpdateListener();\n        };\n    }\n    getProps() {\n        const props = this.visualElement.getProps();\n        const { drag = false, dragDirectionLock = false, dragPropagation = false, dragConstraints = false, dragElastic = defaultElastic, dragMomentum = true, } = props;\n        return {\n            ...props,\n            drag,\n            dragDirectionLock,\n            dragPropagation,\n            dragConstraints,\n            dragElastic,\n            dragMomentum,\n        };\n    }\n}\nfunction shouldDrag(direction, drag, currentDirection) {\n    return ((drag === true || drag === direction) &&\n        (currentDirection === null || currentDirection === direction));\n}\n/**\n * Based on an x/y offset determine the current drag direction. If both axis' offsets are lower\n * than the provided threshold, return `null`.\n *\n * @param offset - The x/y offset from origin.\n * @param lockThreshold - (Optional) - the minimum absolute offset before we can determine a drag direction.\n */\nfunction getCurrentDirection(offset, lockThreshold = 10) {\n    let direction = null;\n    if (Math.abs(offset.y) > lockThreshold) {\n        direction = \"y\";\n    }\n    else if (Math.abs(offset.x) > lockThreshold) {\n        direction = \"x\";\n    }\n    return direction;\n}\n\nexport { VisualElementDragControls, elementDragControls };\n","import { Feature } from '../../motion/features/Feature.mjs';\nimport { noop } from 'motion-utils';\nimport { VisualElementDragControls } from './VisualElementDragControls.mjs';\n\nclass DragGesture extends Feature {\n    constructor(node) {\n        super(node);\n        this.removeGroupControls = noop;\n        this.removeListeners = noop;\n        this.controls = new VisualElementDragControls(node);\n    }\n    mount() {\n        // If we've been provided a DragControls for manual control over the drag gesture,\n        // subscribe this component to it on mount.\n        const { dragControls } = this.node.getProps();\n        if (dragControls) {\n            this.removeGroupControls = dragControls.subscribe(this.controls);\n        }\n        this.removeListeners = this.controls.addListeners() || noop;\n    }\n    unmount() {\n        this.removeGroupControls();\n        this.removeListeners();\n    }\n}\n\nexport { DragGesture };\n","import { PanSession } from './PanSession.mjs';\nimport { addPointerEvent } from '../../events/add-pointer-event.mjs';\nimport { Feature } from '../../motion/features/Feature.mjs';\nimport { noop } from 'motion-utils';\nimport { getContextWindow } from '../../utils/get-context-window.mjs';\nimport { frame } from '../../frameloop/frame.mjs';\n\nconst asyncHandler = (handler) => (event, info) => {\n    if (handler) {\n        frame.postRender(() => handler(event, info));\n    }\n};\nclass PanGesture extends Feature {\n    constructor() {\n        super(...arguments);\n        this.removePointerDownListener = noop;\n    }\n    onPointerDown(pointerDownEvent) {\n        this.session = new PanSession(pointerDownEvent, this.createPanHandlers(), {\n            transformPagePoint: this.node.getTransformPagePoint(),\n            contextWindow: getContextWindow(this.node),\n        });\n    }\n    createPanHandlers() {\n        const { onPanSessionStart, onPanStart, onPan, onPanEnd } = this.node.getProps();\n        return {\n            onSessionStart: asyncHandler(onPanSessionStart),\n            onStart: asyncHandler(onPanStart),\n            onMove: onPan,\n            onEnd: (event, info) => {\n                delete this.session;\n                if (onPanEnd) {\n                    frame.postRender(() => onPanEnd(event, info));\n                }\n            },\n        };\n    }\n    mount() {\n        this.removePointerDownListener = addPointerEvent(this.node.current, \"pointerdown\", (event) => this.onPointerDown(event));\n    }\n    update() {\n        this.session && this.session.updateHandlers(this.createPanHandlers());\n    }\n    unmount() {\n        this.removePointerDownListener();\n        this.session && this.session.end();\n    }\n}\n\nexport { PanGesture };\n","/**\n * This should only ever be modified on the client otherwise it'll\n * persist through server requests. If we need instanced states we\n * could lazy-init via root.\n */\nconst globalProjectionState = {\n    /**\n     * Global flag as to whether the tree has animated since the last time\n     * we resized the window\n     */\n    hasAnimatedSinceResize: true,\n    /**\n     * We set this to true once, on the first update. Any nodes added to the tree beyond that\n     * update will be given a `data-projection-id` attribute.\n     */\n    hasEverUpdated: false,\n};\n\nexport { globalProjectionState };\n","import { px } from '../../value/types/numbers/units.mjs';\n\nfunction pixelsToPercent(pixels, axis) {\n    if (axis.max === axis.min)\n        return 0;\n    return (pixels / (axis.max - axis.min)) * 100;\n}\n/**\n * We always correct borderRadius as a percentage rather than pixels to reduce paints.\n * For example, if you are projecting a box that is 100px wide with a 10px borderRadius\n * into a box that is 200px wide with a 20px borderRadius, that is actually a 10%\n * borderRadius in both states. If we animate between the two in pixels that will trigger\n * a paint each time. If we animate between the two in percentage we'll avoid a paint.\n */\nconst correctBorderRadius = {\n    correct: (latest, node) => {\n        if (!node.target)\n            return latest;\n        /**\n         * If latest is a string, if it's a percentage we can return immediately as it's\n         * going to be stretched appropriately. Otherwise, if it's a pixel, convert it to a number.\n         */\n        if (typeof latest === \"string\") {\n            if (px.test(latest)) {\n                latest = parseFloat(latest);\n            }\n            else {\n                return latest;\n            }\n        }\n        /**\n         * If latest is a number, it's a pixel value. We use the current viewportBox to calculate that\n         * pixel value as a percentage of each axis\n         */\n        const x = pixelsToPercent(latest, node.target.x);\n        const y = pixelsToPercent(latest, node.target.y);\n        return `${x}% ${y}%`;\n    },\n};\n\nexport { correctBorderRadius, pixelsToPercent };\n","import { mixNumber } from '../../utils/mix/number.mjs';\nimport { complex } from '../../value/types/complex/index.mjs';\n\nconst correctBoxShadow = {\n    correct: (latest, { treeScale, projectionDelta }) => {\n        const original = latest;\n        const shadow = complex.parse(latest);\n        // TODO: Doesn't support multiple shadows\n        if (shadow.length > 5)\n            return original;\n        const template = complex.createTransformer(latest);\n        const offset = typeof shadow[0] !== \"number\" ? 1 : 0;\n        // Calculate the overall context scale\n        const xScale = projectionDelta.x.scale * treeScale.x;\n        const yScale = projectionDelta.y.scale * treeScale.y;\n        shadow[0 + offset] /= xScale;\n        shadow[1 + offset] /= yScale;\n        /**\n         * Ideally we'd correct x and y scales individually, but because blur and\n         * spread apply to both we have to take a scale average and apply that instead.\n         * We could potentially improve the outcome of this by incorporating the ratio between\n         * the two scales.\n         */\n        const averageScale = mixNumber(xScale, yScale, 0.5);\n        // Blur\n        if (typeof shadow[2 + offset] === \"number\")\n            shadow[2 + offset] /= averageScale;\n        // Spread\n        if (typeof shadow[3 + offset] === \"number\")\n            shadow[3 + offset] /= averageScale;\n        return template(shadow);\n    },\n};\n\nexport { correctBoxShadow };\n","\"use client\";\nimport { jsx } from 'react/jsx-runtime';\nimport { useContext, Component } from 'react';\nimport { usePresence } from '../../../components/AnimatePresence/use-presence.mjs';\nimport { LayoutGroupContext } from '../../../context/LayoutGroupContext.mjs';\nimport { SwitchLayoutGroupContext } from '../../../context/SwitchLayoutGroupContext.mjs';\nimport { globalProjectionState } from '../../../projection/node/state.mjs';\nimport { correctBorderRadius } from '../../../projection/styles/scale-border-radius.mjs';\nimport { correctBoxShadow } from '../../../projection/styles/scale-box-shadow.mjs';\nimport { addScaleCorrector } from '../../../projection/styles/scale-correction.mjs';\nimport { microtask } from '../../../frameloop/microtask.mjs';\nimport { frame } from '../../../frameloop/frame.mjs';\n\nclass MeasureLayoutWithContext extends Component {\n    /**\n     * This only mounts projection nodes for components that\n     * need measuring, we might want to do it for all components\n     * in order to incorporate transforms\n     */\n    componentDidMount() {\n        const { visualElement, layoutGroup, switchLayoutGroup, layoutId } = this.props;\n        const { projection } = visualElement;\n        addScaleCorrector(defaultScaleCorrectors);\n        if (projection) {\n            if (layoutGroup.group)\n                layoutGroup.group.add(projection);\n            if (switchLayoutGroup && switchLayoutGroup.register && layoutId) {\n                switchLayoutGroup.register(projection);\n            }\n            projection.root.didUpdate();\n            projection.addEventListener(\"animationComplete\", () => {\n                this.safeToRemove();\n            });\n            projection.setOptions({\n                ...projection.options,\n                onExitComplete: () => this.safeToRemove(),\n            });\n        }\n        globalProjectionState.hasEverUpdated = true;\n    }\n    getSnapshotBeforeUpdate(prevProps) {\n        const { layoutDependency, visualElement, drag, isPresent } = this.props;\n        const projection = visualElement.projection;\n        if (!projection)\n            return null;\n        /**\n         * TODO: We use this data in relegate to determine whether to\n         * promote a previous element. There's no guarantee its presence data\n         * will have updated by this point - if a bug like this arises it will\n         * have to be that we markForRelegation and then find a new lead some other way,\n         * perhaps in didUpdate\n         */\n        projection.isPresent = isPresent;\n        if (drag ||\n            prevProps.layoutDependency !== layoutDependency ||\n            layoutDependency === undefined) {\n            projection.willUpdate();\n        }\n        else {\n            this.safeToRemove();\n        }\n        if (prevProps.isPresent !== isPresent) {\n            if (isPresent) {\n                projection.promote();\n            }\n            else if (!projection.relegate()) {\n                /**\n                 * If there's another stack member taking over from this one,\n                 * it's in charge of the exit animation and therefore should\n                 * be in charge of the safe to remove. Otherwise we call it here.\n                 */\n                frame.postRender(() => {\n                    const stack = projection.getStack();\n                    if (!stack || !stack.members.length) {\n                        this.safeToRemove();\n                    }\n                });\n            }\n        }\n        return null;\n    }\n    componentDidUpdate() {\n        const { projection } = this.props.visualElement;\n        if (projection) {\n            projection.root.didUpdate();\n            microtask.postRender(() => {\n                if (!projection.currentAnimation && projection.isLead()) {\n                    this.safeToRemove();\n                }\n            });\n        }\n    }\n    componentWillUnmount() {\n        const { visualElement, layoutGroup, switchLayoutGroup: promoteContext, } = this.props;\n        const { projection } = visualElement;\n        if (projection) {\n            projection.scheduleCheckAfterUnmount();\n            if (layoutGroup && layoutGroup.group)\n                layoutGroup.group.remove(projection);\n            if (promoteContext && promoteContext.deregister)\n                promoteContext.deregister(projection);\n        }\n    }\n    safeToRemove() {\n        const { safeToRemove } = this.props;\n        safeToRemove && safeToRemove();\n    }\n    render() {\n        return null;\n    }\n}\nfunction MeasureLayout(props) {\n    const [isPresent, safeToRemove] = usePresence();\n    const layoutGroup = useContext(LayoutGroupContext);\n    return (jsx(MeasureLayoutWithContext, { ...props, layoutGroup: layoutGroup, switchLayoutGroup: useContext(SwitchLayoutGroupContext), isPresent: isPresent, safeToRemove: safeToRemove }));\n}\nconst defaultScaleCorrectors = {\n    borderRadius: {\n        ...correctBorderRadius,\n        applyTo: [\n            \"borderTopLeftRadius\",\n            \"borderTopRightRadius\",\n            \"borderBottomLeftRadius\",\n            \"borderBottomRightRadius\",\n        ],\n    },\n    borderTopLeftRadius: correctBorderRadius,\n    borderTopRightRadius: correctBorderRadius,\n    borderBottomLeftRadius: correctBorderRadius,\n    borderBottomRightRadius: correctBorderRadius,\n    boxShadow: correctBoxShadow,\n};\n\nexport { MeasureLayout };\n","import { motionValue } from '../../value/index.mjs';\nimport { isMotionValue } from '../../value/utils/is-motion-value.mjs';\nimport { animateMotionValue } from '../interfaces/motion-value.mjs';\n\nfunction animateSingleValue(value, keyframes, options) {\n    const motionValue$1 = isMotionValue(value) ? value : motionValue(value);\n    motionValue$1.start(animateMotionValue(\"\", motionValue$1, keyframes, options));\n    return motionValue$1.animation;\n}\n\nexport { animateSingleValue };\n","function isSVGElement(element) {\n    return element instanceof SVGElement && element.tagName !== \"svg\";\n}\n\nexport { isSVGElement };\n","const compareByDepth = (a, b) => a.depth - b.depth;\n\nexport { compareByDepth };\n","import { addUniqueItem, removeItem } from '../../utils/array.mjs';\nimport { compareByDepth } from './compare-by-depth.mjs';\n\nclass FlatTree {\n    constructor() {\n        this.children = [];\n        this.isDirty = false;\n    }\n    add(child) {\n        addUniqueItem(this.children, child);\n        this.isDirty = true;\n    }\n    remove(child) {\n        removeItem(this.children, child);\n        this.isDirty = true;\n    }\n    forEach(callback) {\n        this.isDirty && this.children.sort(compareByDepth);\n        this.isDirty = false;\n        this.children.forEach(callback);\n    }\n}\n\nexport { FlatTree };\n","import { secondsToMilliseconds } from 'motion-utils';\nimport { time } from '../frameloop/sync-time.mjs';\nimport { frame, cancelFrame } from '../frameloop/frame.mjs';\n\n/**\n * Timeout defined in ms\n */\nfunction delay(callback, timeout) {\n    const start = time.now();\n    const checkElapsed = ({ timestamp }) => {\n        const elapsed = timestamp - start;\n        if (elapsed >= timeout) {\n            cancelFrame(checkElapsed);\n            callback(elapsed - timeout);\n        }\n    };\n    frame.read(checkElapsed, true);\n    return () => cancelFrame(checkElapsed);\n}\nfunction delayInSeconds(callback, timeout) {\n    return delay(callback, secondsToMilliseconds(timeout));\n}\n\nexport { delay, delayInSeconds };\n","import { progress, noop } from 'motion-utils';\nimport { circOut } from '../../easing/circ.mjs';\nimport { mixNumber } from '../../utils/mix/number.mjs';\nimport { percent, px } from '../../value/types/numbers/units.mjs';\n\nconst borders = [\"TopLeft\", \"TopRight\", \"BottomLeft\", \"BottomRight\"];\nconst numBorders = borders.length;\nconst asNumber = (value) => typeof value === \"string\" ? parseFloat(value) : value;\nconst isPx = (value) => typeof value === \"number\" || px.test(value);\nfunction mixValues(target, follow, lead, progress, shouldCrossfadeOpacity, isOnlyMember) {\n    if (shouldCrossfadeOpacity) {\n        target.opacity = mixNumber(0, \n        // TODO Reinstate this if only child\n        lead.opacity !== undefined ? lead.opacity : 1, easeCrossfadeIn(progress));\n        target.opacityExit = mixNumber(follow.opacity !== undefined ? follow.opacity : 1, 0, easeCrossfadeOut(progress));\n    }\n    else if (isOnlyMember) {\n        target.opacity = mixNumber(follow.opacity !== undefined ? follow.opacity : 1, lead.opacity !== undefined ? lead.opacity : 1, progress);\n    }\n    /**\n     * Mix border radius\n     */\n    for (let i = 0; i < numBorders; i++) {\n        const borderLabel = `border${borders[i]}Radius`;\n        let followRadius = getRadius(follow, borderLabel);\n        let leadRadius = getRadius(lead, borderLabel);\n        if (followRadius === undefined && leadRadius === undefined)\n            continue;\n        followRadius || (followRadius = 0);\n        leadRadius || (leadRadius = 0);\n        const canMix = followRadius === 0 ||\n            leadRadius === 0 ||\n            isPx(followRadius) === isPx(leadRadius);\n        if (canMix) {\n            target[borderLabel] = Math.max(mixNumber(asNumber(followRadius), asNumber(leadRadius), progress), 0);\n            if (percent.test(leadRadius) || percent.test(followRadius)) {\n                target[borderLabel] += \"%\";\n            }\n        }\n        else {\n            target[borderLabel] = leadRadius;\n        }\n    }\n    /**\n     * Mix rotation\n     */\n    if (follow.rotate || lead.rotate) {\n        target.rotate = mixNumber(follow.rotate || 0, lead.rotate || 0, progress);\n    }\n}\nfunction getRadius(values, radiusName) {\n    return values[radiusName] !== undefined\n        ? values[radiusName]\n        : values.borderRadius;\n}\n// /**\n//  * We only want to mix the background color if there's a follow element\n//  * that we're not crossfading opacity between. For instance with switch\n//  * AnimateSharedLayout animations, this helps the illusion of a continuous\n//  * element being animated but also cuts down on the number of paints triggered\n//  * for elements where opacity is doing that work for us.\n//  */\n// if (\n//     !hasFollowElement &&\n//     latestLeadValues.backgroundColor &&\n//     latestFollowValues.backgroundColor\n// ) {\n//     /**\n//      * This isn't ideal performance-wise as mixColor is creating a new function every frame.\n//      * We could probably create a mixer that runs at the start of the animation but\n//      * the idea behind the crossfader is that it runs dynamically between two potentially\n//      * changing targets (ie opacity or borderRadius may be animating independently via variants)\n//      */\n//     leadState.backgroundColor = followState.backgroundColor = mixColor(\n//         latestFollowValues.backgroundColor as string,\n//         latestLeadValues.backgroundColor as string\n//     )(p)\n// }\nconst easeCrossfadeIn = /*@__PURE__*/ compress(0, 0.5, circOut);\nconst easeCrossfadeOut = /*@__PURE__*/ compress(0.5, 0.95, noop);\nfunction compress(min, max, easing) {\n    return (p) => {\n        // Could replace ifs with clamp\n        if (p < min)\n            return 0;\n        if (p > max)\n            return 1;\n        return easing(progress(min, max, p));\n    };\n}\n\nexport { mixValues };\n","/**\n * Reset an axis to the provided origin box.\n *\n * This is a mutative operation.\n */\nfunction copyAxisInto(axis, originAxis) {\n    axis.min = originAxis.min;\n    axis.max = originAxis.max;\n}\n/**\n * Reset a box to the provided origin box.\n *\n * This is a mutative operation.\n */\nfunction copyBoxInto(box, originBox) {\n    copyAxisInto(box.x, originBox.x);\n    copyAxisInto(box.y, originBox.y);\n}\n/**\n * Reset a delta to the provided origin box.\n *\n * This is a mutative operation.\n */\nfunction copyAxisDeltaInto(delta, originDelta) {\n    delta.translate = originDelta.translate;\n    delta.scale = originDelta.scale;\n    delta.originPoint = originDelta.originPoint;\n    delta.origin = originDelta.origin;\n}\n\nexport { copyAxisDeltaInto, copyAxisInto, copyBoxInto };\n","import { mixNumber } from '../../utils/mix/number.mjs';\nimport { percent } from '../../value/types/numbers/units.mjs';\nimport { scalePoint } from './delta-apply.mjs';\n\n/**\n * Remove a delta from a point. This is essentially the steps of applyPointDelta in reverse\n */\nfunction removePointDelta(point, translate, scale, originPoint, boxScale) {\n    point -= translate;\n    point = scalePoint(point, 1 / scale, originPoint);\n    if (boxScale !== undefined) {\n        point = scalePoint(point, 1 / boxScale, originPoint);\n    }\n    return point;\n}\n/**\n * Remove a delta from an axis. This is essentially the steps of applyAxisDelta in reverse\n */\nfunction removeAxisDelta(axis, translate = 0, scale = 1, origin = 0.5, boxScale, originAxis = axis, sourceAxis = axis) {\n    if (percent.test(translate)) {\n        translate = parseFloat(translate);\n        const relativeProgress = mixNumber(sourceAxis.min, sourceAxis.max, translate / 100);\n        translate = relativeProgress - sourceAxis.min;\n    }\n    if (typeof translate !== \"number\")\n        return;\n    let originPoint = mixNumber(originAxis.min, originAxis.max, origin);\n    if (axis === originAxis)\n        originPoint -= translate;\n    axis.min = removePointDelta(axis.min, translate, scale, originPoint, boxScale);\n    axis.max = removePointDelta(axis.max, translate, scale, originPoint, boxScale);\n}\n/**\n * Remove a transforms from an axis. This is essentially the steps of applyAxisTransforms in reverse\n * and acts as a bridge between motion values and removeAxisDelta\n */\nfunction removeAxisTransforms(axis, transforms, [key, scaleKey, originKey], origin, sourceAxis) {\n    removeAxisDelta(axis, transforms[key], transforms[scaleKey], transforms[originKey], transforms.scale, origin, sourceAxis);\n}\n/**\n * The names of the motion values we want to apply as translation, scale and origin.\n */\nconst xKeys = [\"x\", \"scaleX\", \"originX\"];\nconst yKeys = [\"y\", \"scaleY\", \"originY\"];\n/**\n * Remove a transforms from an box. This is essentially the steps of applyAxisBox in reverse\n * and acts as a bridge between motion values and removeAxisDelta\n */\nfunction removeBoxTransforms(box, transforms, originBox, sourceBox) {\n    removeAxisTransforms(box.x, transforms, xKeys, originBox ? originBox.x : undefined, sourceBox ? sourceBox.x : undefined);\n    removeAxisTransforms(box.y, transforms, yKeys, originBox ? originBox.y : undefined, sourceBox ? sourceBox.y : undefined);\n}\n\nexport { removeAxisDelta, removeAxisTransforms, removeBoxTransforms, removePointDelta };\n","import { calcLength } from './delta-calc.mjs';\n\nfunction isAxisDeltaZero(delta) {\n    return delta.translate === 0 && delta.scale === 1;\n}\nfunction isDeltaZero(delta) {\n    return isAxisDeltaZero(delta.x) && isAxisDeltaZero(delta.y);\n}\nfunction axisEquals(a, b) {\n    return a.min === b.min && a.max === b.max;\n}\nfunction boxEquals(a, b) {\n    return axisEquals(a.x, b.x) && axisEquals(a.y, b.y);\n}\nfunction axisEqualsRounded(a, b) {\n    return (Math.round(a.min) === Math.round(b.min) &&\n        Math.round(a.max) === Math.round(b.max));\n}\nfunction boxEqualsRounded(a, b) {\n    return axisEqualsRounded(a.x, b.x) && axisEqualsRounded(a.y, b.y);\n}\nfunction aspectRatio(box) {\n    return calcLength(box.x) / calcLength(box.y);\n}\nfunction axisDeltaEquals(a, b) {\n    return (a.translate === b.translate &&\n        a.scale === b.scale &&\n        a.originPoint === b.originPoint);\n}\n\nexport { aspectRatio, axisDeltaEquals, axisEquals, axisEqualsRounded, boxEquals, boxEqualsRounded, isDeltaZero };\n","import { addUniqueItem, removeItem } from '../../utils/array.mjs';\n\nclass NodeStack {\n    constructor() {\n        this.members = [];\n    }\n    add(node) {\n        addUniqueItem(this.members, node);\n        node.scheduleRender();\n    }\n    remove(node) {\n        removeItem(this.members, node);\n        if (node === this.prevLead) {\n            this.prevLead = undefined;\n        }\n        if (node === this.lead) {\n            const prevLead = this.members[this.members.length - 1];\n            if (prevLead) {\n                this.promote(prevLead);\n            }\n        }\n    }\n    relegate(node) {\n        const indexOfNode = this.members.findIndex((member) => node === member);\n        if (indexOfNode === 0)\n            return false;\n        /**\n         * Find the next projection node that is present\n         */\n        let prevLead;\n        for (let i = indexOfNode; i >= 0; i--) {\n            const member = this.members[i];\n            if (member.isPresent !== false) {\n                prevLead = member;\n                break;\n            }\n        }\n        if (prevLead) {\n            this.promote(prevLead);\n            return true;\n        }\n        else {\n            return false;\n        }\n    }\n    promote(node, preserveFollowOpacity) {\n        const prevLead = this.lead;\n        if (node === prevLead)\n            return;\n        this.prevLead = prevLead;\n        this.lead = node;\n        node.show();\n        if (prevLead) {\n            prevLead.instance && prevLead.scheduleRender();\n            node.scheduleRender();\n            node.resumeFrom = prevLead;\n            if (preserveFollowOpacity) {\n                node.resumeFrom.preserveOpacity = true;\n            }\n            if (prevLead.snapshot) {\n                node.snapshot = prevLead.snapshot;\n                node.snapshot.latestValues =\n                    prevLead.animationValues || prevLead.latestValues;\n            }\n            if (node.root && node.root.isUpdating) {\n                node.isLayoutDirty = true;\n            }\n            const { crossfade } = node.options;\n            if (crossfade === false) {\n                prevLead.hide();\n            }\n            /**\n             * TODO:\n             *   - Test border radius when previous node was deleted\n             *   - boxShadow mixing\n             *   - Shared between element A in scrolled container and element B (scroll stays the same or changes)\n             *   - Shared between element A in transformed container and element B (transform stays the same or changes)\n             *   - Shared between element A in scrolled page and element B (scroll stays the same or changes)\n             * ---\n             *   - Crossfade opacity of root nodes\n             *   - layoutId changes after animation\n             *   - layoutId changes mid animation\n             */\n        }\n    }\n    exitAnimationComplete() {\n        this.members.forEach((node) => {\n            const { options, resumingFrom } = node;\n            options.onExitComplete && options.onExitComplete();\n            if (resumingFrom) {\n                resumingFrom.options.onExitComplete &&\n                    resumingFrom.options.onExitComplete();\n            }\n        });\n    }\n    scheduleRender() {\n        this.members.forEach((node) => {\n            node.instance && node.scheduleRender(false);\n        });\n    }\n    /**\n     * Clear any leads that have been removed this render to prevent them from being\n     * used in future animations and to prevent memory leaks\n     */\n    removeLeadSnapshot() {\n        if (this.lead && this.lead.snapshot) {\n            this.lead.snapshot = undefined;\n        }\n    }\n}\n\nexport { NodeStack };\n","function buildProjectionTransform(delta, treeScale, latestTransform) {\n    let transform = \"\";\n    /**\n     * The translations we use to calculate are always relative to the viewport coordinate space.\n     * But when we apply scales, we also scale the coordinate space of an element and its children.\n     * For instance if we have a treeScale (the culmination of all parent scales) of 0.5 and we need\n     * to move an element 100 pixels, we actually need to move it 200 in within that scaled space.\n     */\n    const xTranslate = delta.x.translate / treeScale.x;\n    const yTranslate = delta.y.translate / treeScale.y;\n    const zTranslate = (latestTransform === null || latestTransform === void 0 ? void 0 : latestTransform.z) || 0;\n    if (xTranslate || yTranslate || zTranslate) {\n        transform = `translate3d(${xTranslate}px, ${yTranslate}px, ${zTranslate}px) `;\n    }\n    /**\n     * Apply scale correction for the tree transform.\n     * This will apply scale to the screen-orientated axes.\n     */\n    if (treeScale.x !== 1 || treeScale.y !== 1) {\n        transform += `scale(${1 / treeScale.x}, ${1 / treeScale.y}) `;\n    }\n    if (latestTransform) {\n        const { transformPerspective, rotate, rotateX, rotateY, skewX, skewY } = latestTransform;\n        if (transformPerspective)\n            transform = `perspective(${transformPerspective}px) ${transform}`;\n        if (rotate)\n            transform += `rotate(${rotate}deg) `;\n        if (rotateX)\n            transform += `rotateX(${rotateX}deg) `;\n        if (rotateY)\n            transform += `rotateY(${rotateY}deg) `;\n        if (skewX)\n            transform += `skewX(${skewX}deg) `;\n        if (skewY)\n            transform += `skewY(${skewY}deg) `;\n    }\n    /**\n     * Apply scale to match the size of the element to the size we want it.\n     * This will apply scale to the element-orientated axes.\n     */\n    const elementScaleX = delta.x.scale * treeScale.x;\n    const elementScaleY = delta.y.scale * treeScale.y;\n    if (elementScaleX !== 1 || elementScaleY !== 1) {\n        transform += `scale(${elementScaleX}, ${elementScaleY})`;\n    }\n    return transform || \"none\";\n}\n\nexport { buildProjectionTransform };\n","import { getValueTransition } from 'motion-dom';\nimport { noop } from 'motion-utils';\nimport { animateSingleValue } from '../../animation/animate/single-value.mjs';\nimport { getOptimisedAppearId } from '../../animation/optimized-appear/get-appear-id.mjs';\nimport { cancelFrame, frameData, frameSteps, frame } from '../../frameloop/frame.mjs';\nimport { microtask } from '../../frameloop/microtask.mjs';\nimport { time } from '../../frameloop/sync-time.mjs';\nimport { isSVGElement } from '../../render/dom/utils/is-svg-element.mjs';\nimport { FlatTree } from '../../render/utils/flat-tree.mjs';\nimport { clamp } from '../../utils/clamp.mjs';\nimport { delay } from '../../utils/delay.mjs';\nimport { mixNumber } from '../../utils/mix/number.mjs';\nimport { SubscriptionManager } from '../../utils/subscription-manager.mjs';\nimport { resolveMotionValue } from '../../value/utils/resolve-motion-value.mjs';\nimport { mixValues } from '../animation/mix-values.mjs';\nimport { copyBoxInto, copyAxisDeltaInto } from '../geometry/copy.mjs';\nimport { translateAxis, transformBox, applyBoxDelta, applyTreeDeltas } from '../geometry/delta-apply.mjs';\nimport { calcRelativePosition, calcRelativeBox, calcBoxDelta, calcLength, isNear } from '../geometry/delta-calc.mjs';\nimport { removeBoxTransforms } from '../geometry/delta-remove.mjs';\nimport { createBox, createDelta } from '../geometry/models.mjs';\nimport { boxEqualsRounded, isDeltaZero, axisDeltaEquals, aspectRatio, boxEquals } from '../geometry/utils.mjs';\nimport { NodeStack } from '../shared/stack.mjs';\nimport { scaleCorrectors } from '../styles/scale-correction.mjs';\nimport { buildProjectionTransform } from '../styles/transform.mjs';\nimport { eachAxis } from '../utils/each-axis.mjs';\nimport { hasTransform, hasScale, has2DTranslate } from '../utils/has-transform.mjs';\nimport { globalProjectionState } from './state.mjs';\n\nconst metrics = {\n    type: \"projectionFrame\",\n    totalNodes: 0,\n    resolvedTargetDeltas: 0,\n    recalculatedProjection: 0,\n};\nconst isDebug = typeof window !== \"undefined\" && window.MotionDebug !== undefined;\nconst transformAxes = [\"\", \"X\", \"Y\", \"Z\"];\nconst hiddenVisibility = { visibility: \"hidden\" };\n/**\n * We use 1000 as the animation target as 0-1000 maps better to pixels than 0-1\n * which has a noticeable difference in spring animations\n */\nconst animationTarget = 1000;\nlet id = 0;\nfunction resetDistortingTransform(key, visualElement, values, sharedAnimationValues) {\n    const { latestValues } = visualElement;\n    // Record the distorting transform and then temporarily set it to 0\n    if (latestValues[key]) {\n        values[key] = latestValues[key];\n        visualElement.setStaticValue(key, 0);\n        if (sharedAnimationValues) {\n            sharedAnimationValues[key] = 0;\n        }\n    }\n}\nfunction cancelTreeOptimisedTransformAnimations(projectionNode) {\n    projectionNode.hasCheckedOptimisedAppear = true;\n    if (projectionNode.root === projectionNode)\n        return;\n    const { visualElement } = projectionNode.options;\n    if (!visualElement)\n        return;\n    const appearId = getOptimisedAppearId(visualElement);\n    if (window.MotionHasOptimisedAnimation(appearId, \"transform\")) {\n        const { layout, layoutId } = projectionNode.options;\n        window.MotionCancelOptimisedAnimation(appearId, \"transform\", frame, !(layout || layoutId));\n    }\n    const { parent } = projectionNode;\n    if (parent && !parent.hasCheckedOptimisedAppear) {\n        cancelTreeOptimisedTransformAnimations(parent);\n    }\n}\nfunction createProjectionNode({ attachResizeListener, defaultParent, measureScroll, checkIsScrollRoot, resetTransform, }) {\n    return class ProjectionNode {\n        constructor(latestValues = {}, parent = defaultParent === null || defaultParent === void 0 ? void 0 : defaultParent()) {\n            /**\n             * A unique ID generated for every projection node.\n             */\n            this.id = id++;\n            /**\n             * An id that represents a unique session instigated by startUpdate.\n             */\n            this.animationId = 0;\n            /**\n             * A Set containing all this component's children. This is used to iterate\n             * through the children.\n             *\n             * TODO: This could be faster to iterate as a flat array stored on the root node.\n             */\n            this.children = new Set();\n            /**\n             * Options for the node. We use this to configure what kind of layout animations\n             * we should perform (if any).\n             */\n            this.options = {};\n            /**\n             * We use this to detect when its safe to shut down part of a projection tree.\n             * We have to keep projecting children for scale correction and relative projection\n             * until all their parents stop performing layout animations.\n             */\n            this.isTreeAnimating = false;\n            this.isAnimationBlocked = false;\n            /**\n             * Flag to true if we think this layout has been changed. We can't always know this,\n             * currently we set it to true every time a component renders, or if it has a layoutDependency\n             * if that has changed between renders. Additionally, components can be grouped by LayoutGroup\n             * and if one node is dirtied, they all are.\n             */\n            this.isLayoutDirty = false;\n            /**\n             * Flag to true if we think the projection calculations for this node needs\n             * recalculating as a result of an updated transform or layout animation.\n             */\n            this.isProjectionDirty = false;\n            /**\n             * Flag to true if the layout *or* transform has changed. This then gets propagated\n             * throughout the projection tree, forcing any element below to recalculate on the next frame.\n             */\n            this.isSharedProjectionDirty = false;\n            /**\n             * Flag transform dirty. This gets propagated throughout the whole tree but is only\n             * respected by shared nodes.\n             */\n            this.isTransformDirty = false;\n            /**\n             * Block layout updates for instant layout transitions throughout the tree.\n             */\n            this.updateManuallyBlocked = false;\n            this.updateBlockedByResize = false;\n            /**\n             * Set to true between the start of the first `willUpdate` call and the end of the `didUpdate`\n             * call.\n             */\n            this.isUpdating = false;\n            /**\n             * If this is an SVG element we currently disable projection transforms\n             */\n            this.isSVG = false;\n            /**\n             * Flag to true (during promotion) if a node doing an instant layout transition needs to reset\n             * its projection styles.\n             */\n            this.needsReset = false;\n            /**\n             * Flags whether this node should have its transform reset prior to measuring.\n             */\n            this.shouldResetTransform = false;\n            /**\n             * Store whether this node has been checked for optimised appear animations. As\n             * effects fire bottom-up, and we want to look up the tree for appear animations,\n             * this makes sure we only check each path once, stopping at nodes that\n             * have already been checked.\n             */\n            this.hasCheckedOptimisedAppear = false;\n            /**\n             * An object representing the calculated contextual/accumulated/tree scale.\n             * This will be used to scale calculcated projection transforms, as these are\n             * calculated in screen-space but need to be scaled for elements to layoutly\n             * make it to their calculated destinations.\n             *\n             * TODO: Lazy-init\n             */\n            this.treeScale = { x: 1, y: 1 };\n            /**\n             *\n             */\n            this.eventHandlers = new Map();\n            this.hasTreeAnimated = false;\n            // Note: Currently only running on root node\n            this.updateScheduled = false;\n            this.scheduleUpdate = () => this.update();\n            this.projectionUpdateScheduled = false;\n            this.checkUpdateFailed = () => {\n                if (this.isUpdating) {\n                    this.isUpdating = false;\n                    this.clearAllSnapshots();\n                }\n            };\n            /**\n             * This is a multi-step process as shared nodes might be of different depths. Nodes\n             * are sorted by depth order, so we need to resolve the entire tree before moving to\n             * the next step.\n             */\n            this.updateProjection = () => {\n                this.projectionUpdateScheduled = false;\n                /**\n                 * Reset debug counts. Manually resetting rather than creating a new\n                 * object each frame.\n                 */\n                if (isDebug) {\n                    metrics.totalNodes =\n                        metrics.resolvedTargetDeltas =\n                            metrics.recalculatedProjection =\n                                0;\n                }\n                this.nodes.forEach(propagateDirtyNodes);\n                this.nodes.forEach(resolveTargetDelta);\n                this.nodes.forEach(calcProjection);\n                this.nodes.forEach(cleanDirtyNodes);\n                if (isDebug) {\n                    window.MotionDebug.record(metrics);\n                }\n            };\n            /**\n             * Frame calculations\n             */\n            this.resolvedRelativeTargetAt = 0.0;\n            this.hasProjected = false;\n            this.isVisible = true;\n            this.animationProgress = 0;\n            /**\n             * Shared layout\n             */\n            // TODO Only running on root node\n            this.sharedNodes = new Map();\n            this.latestValues = latestValues;\n            this.root = parent ? parent.root || parent : this;\n            this.path = parent ? [...parent.path, parent] : [];\n            this.parent = parent;\n            this.depth = parent ? parent.depth + 1 : 0;\n            for (let i = 0; i < this.path.length; i++) {\n                this.path[i].shouldResetTransform = true;\n            }\n            if (this.root === this)\n                this.nodes = new FlatTree();\n        }\n        addEventListener(name, handler) {\n            if (!this.eventHandlers.has(name)) {\n                this.eventHandlers.set(name, new SubscriptionManager());\n            }\n            return this.eventHandlers.get(name).add(handler);\n        }\n        notifyListeners(name, ...args) {\n            const subscriptionManager = this.eventHandlers.get(name);\n            subscriptionManager && subscriptionManager.notify(...args);\n        }\n        hasListeners(name) {\n            return this.eventHandlers.has(name);\n        }\n        /**\n         * Lifecycles\n         */\n        mount(instance, isLayoutDirty = this.root.hasTreeAnimated) {\n            if (this.instance)\n                return;\n            this.isSVG = isSVGElement(instance);\n            this.instance = instance;\n            const { layoutId, layout, visualElement } = this.options;\n            if (visualElement && !visualElement.current) {\n                visualElement.mount(instance);\n            }\n            this.root.nodes.add(this);\n            this.parent && this.parent.children.add(this);\n            if (isLayoutDirty && (layout || layoutId)) {\n                this.isLayoutDirty = true;\n            }\n            if (attachResizeListener) {\n                let cancelDelay;\n                const resizeUnblockUpdate = () => (this.root.updateBlockedByResize = false);\n                attachResizeListener(instance, () => {\n                    this.root.updateBlockedByResize = true;\n                    cancelDelay && cancelDelay();\n                    cancelDelay = delay(resizeUnblockUpdate, 250);\n                    if (globalProjectionState.hasAnimatedSinceResize) {\n                        globalProjectionState.hasAnimatedSinceResize = false;\n                        this.nodes.forEach(finishAnimation);\n                    }\n                });\n            }\n            if (layoutId) {\n                this.root.registerSharedNode(layoutId, this);\n            }\n            // Only register the handler if it requires layout animation\n            if (this.options.animate !== false &&\n                visualElement &&\n                (layoutId || layout)) {\n                this.addEventListener(\"didUpdate\", ({ delta, hasLayoutChanged, hasRelativeTargetChanged, layout: newLayout, }) => {\n                    if (this.isTreeAnimationBlocked()) {\n                        this.target = undefined;\n                        this.relativeTarget = undefined;\n                        return;\n                    }\n                    // TODO: Check here if an animation exists\n                    const layoutTransition = this.options.transition ||\n                        visualElement.getDefaultTransition() ||\n                        defaultLayoutTransition;\n                    const { onLayoutAnimationStart, onLayoutAnimationComplete, } = visualElement.getProps();\n                    /**\n                     * The target layout of the element might stay the same,\n                     * but its position relative to its parent has changed.\n                     */\n                    const targetChanged = !this.targetLayout ||\n                        !boxEqualsRounded(this.targetLayout, newLayout) ||\n                        hasRelativeTargetChanged;\n                    /**\n                     * If the layout hasn't seemed to have changed, it might be that the\n                     * element is visually in the same place in the document but its position\n                     * relative to its parent has indeed changed. So here we check for that.\n                     */\n                    const hasOnlyRelativeTargetChanged = !hasLayoutChanged && hasRelativeTargetChanged;\n                    if (this.options.layoutRoot ||\n                        (this.resumeFrom && this.resumeFrom.instance) ||\n                        hasOnlyRelativeTargetChanged ||\n                        (hasLayoutChanged &&\n                            (targetChanged || !this.currentAnimation))) {\n                        if (this.resumeFrom) {\n                            this.resumingFrom = this.resumeFrom;\n                            this.resumingFrom.resumingFrom = undefined;\n                        }\n                        this.setAnimationOrigin(delta, hasOnlyRelativeTargetChanged);\n                        const animationOptions = {\n                            ...getValueTransition(layoutTransition, \"layout\"),\n                            onPlay: onLayoutAnimationStart,\n                            onComplete: onLayoutAnimationComplete,\n                        };\n                        if (visualElement.shouldReduceMotion ||\n                            this.options.layoutRoot) {\n                            animationOptions.delay = 0;\n                            animationOptions.type = false;\n                        }\n                        this.startAnimation(animationOptions);\n                    }\n                    else {\n                        /**\n                         * If the layout hasn't changed and we have an animation that hasn't started yet,\n                         * finish it immediately. Otherwise it will be animating from a location\n                         * that was probably never commited to screen and look like a jumpy box.\n                         */\n                        if (!hasLayoutChanged) {\n                            finishAnimation(this);\n                        }\n                        if (this.isLead() && this.options.onExitComplete) {\n                            this.options.onExitComplete();\n                        }\n                    }\n                    this.targetLayout = newLayout;\n                });\n            }\n        }\n        unmount() {\n            this.options.layoutId && this.willUpdate();\n            this.root.nodes.remove(this);\n            const stack = this.getStack();\n            stack && stack.remove(this);\n            this.parent && this.parent.children.delete(this);\n            this.instance = undefined;\n            cancelFrame(this.updateProjection);\n        }\n        // only on the root\n        blockUpdate() {\n            this.updateManuallyBlocked = true;\n        }\n        unblockUpdate() {\n            this.updateManuallyBlocked = false;\n        }\n        isUpdateBlocked() {\n            return this.updateManuallyBlocked || this.updateBlockedByResize;\n        }\n        isTreeAnimationBlocked() {\n            return (this.isAnimationBlocked ||\n                (this.parent && this.parent.isTreeAnimationBlocked()) ||\n                false);\n        }\n        // Note: currently only running on root node\n        startUpdate() {\n            if (this.isUpdateBlocked())\n                return;\n            this.isUpdating = true;\n            this.nodes && this.nodes.forEach(resetSkewAndRotation);\n            this.animationId++;\n        }\n        getTransformTemplate() {\n            const { visualElement } = this.options;\n            return visualElement && visualElement.getProps().transformTemplate;\n        }\n        willUpdate(shouldNotifyListeners = true) {\n            this.root.hasTreeAnimated = true;\n            if (this.root.isUpdateBlocked()) {\n                this.options.onExitComplete && this.options.onExitComplete();\n                return;\n            }\n            /**\n             * If we're running optimised appear animations then these must be\n             * cancelled before measuring the DOM. This is so we can measure\n             * the true layout of the element rather than the WAAPI animation\n             * which will be unaffected by the resetSkewAndRotate step.\n             *\n             * Note: This is a DOM write. Worst case scenario is this is sandwiched\n             * between other snapshot reads which will cause unnecessary style recalculations.\n             * This has to happen here though, as we don't yet know which nodes will need\n             * snapshots in startUpdate(), but we only want to cancel optimised animations\n             * if a layout animation measurement is actually going to be affected by them.\n             */\n            if (window.MotionCancelOptimisedAnimation &&\n                !this.hasCheckedOptimisedAppear) {\n                cancelTreeOptimisedTransformAnimations(this);\n            }\n            !this.root.isUpdating && this.root.startUpdate();\n            if (this.isLayoutDirty)\n                return;\n            this.isLayoutDirty = true;\n            for (let i = 0; i < this.path.length; i++) {\n                const node = this.path[i];\n                node.shouldResetTransform = true;\n                node.updateScroll(\"snapshot\");\n                if (node.options.layoutRoot) {\n                    node.willUpdate(false);\n                }\n            }\n            const { layoutId, layout } = this.options;\n            if (layoutId === undefined && !layout)\n                return;\n            const transformTemplate = this.getTransformTemplate();\n            this.prevTransformTemplateValue = transformTemplate\n                ? transformTemplate(this.latestValues, \"\")\n                : undefined;\n            this.updateSnapshot();\n            shouldNotifyListeners && this.notifyListeners(\"willUpdate\");\n        }\n        update() {\n            this.updateScheduled = false;\n            const updateWasBlocked = this.isUpdateBlocked();\n            // When doing an instant transition, we skip the layout update,\n            // but should still clean up the measurements so that the next\n            // snapshot could be taken correctly.\n            if (updateWasBlocked) {\n                this.unblockUpdate();\n                this.clearAllSnapshots();\n                this.nodes.forEach(clearMeasurements);\n                return;\n            }\n            if (!this.isUpdating) {\n                this.nodes.forEach(clearIsLayoutDirty);\n            }\n            this.isUpdating = false;\n            /**\n             * Write\n             */\n            this.nodes.forEach(resetTransformStyle);\n            /**\n             * Read ==================\n             */\n            // Update layout measurements of updated children\n            this.nodes.forEach(updateLayout);\n            /**\n             * Write\n             */\n            // Notify listeners that the layout is updated\n            this.nodes.forEach(notifyLayoutUpdate);\n            this.clearAllSnapshots();\n            /**\n             * Manually flush any pending updates. Ideally\n             * we could leave this to the following requestAnimationFrame but this seems\n             * to leave a flash of incorrectly styled content.\n             */\n            const now = time.now();\n            frameData.delta = clamp(0, 1000 / 60, now - frameData.timestamp);\n            frameData.timestamp = now;\n            frameData.isProcessing = true;\n            frameSteps.update.process(frameData);\n            frameSteps.preRender.process(frameData);\n            frameSteps.render.process(frameData);\n            frameData.isProcessing = false;\n        }\n        didUpdate() {\n            if (!this.updateScheduled) {\n                this.updateScheduled = true;\n                microtask.read(this.scheduleUpdate);\n            }\n        }\n        clearAllSnapshots() {\n            this.nodes.forEach(clearSnapshot);\n            this.sharedNodes.forEach(removeLeadSnapshots);\n        }\n        scheduleUpdateProjection() {\n            if (!this.projectionUpdateScheduled) {\n                this.projectionUpdateScheduled = true;\n                frame.preRender(this.updateProjection, false, true);\n            }\n        }\n        scheduleCheckAfterUnmount() {\n            /**\n             * If the unmounting node is in a layoutGroup and did trigger a willUpdate,\n             * we manually call didUpdate to give a chance to the siblings to animate.\n             * Otherwise, cleanup all snapshots to prevents future nodes from reusing them.\n             */\n            frame.postRender(() => {\n                if (this.isLayoutDirty) {\n                    this.root.didUpdate();\n                }\n                else {\n                    this.root.checkUpdateFailed();\n                }\n            });\n        }\n        /**\n         * Update measurements\n         */\n        updateSnapshot() {\n            if (this.snapshot || !this.instance)\n                return;\n            this.snapshot = this.measure();\n        }\n        updateLayout() {\n            if (!this.instance)\n                return;\n            // TODO: Incorporate into a forwarded scroll offset\n            this.updateScroll();\n            if (!(this.options.alwaysMeasureLayout && this.isLead()) &&\n                !this.isLayoutDirty) {\n                return;\n            }\n            /**\n             * When a node is mounted, it simply resumes from the prevLead's\n             * snapshot instead of taking a new one, but the ancestors scroll\n             * might have updated while the prevLead is unmounted. We need to\n             * update the scroll again to make sure the layout we measure is\n             * up to date.\n             */\n            if (this.resumeFrom && !this.resumeFrom.instance) {\n                for (let i = 0; i < this.path.length; i++) {\n                    const node = this.path[i];\n                    node.updateScroll();\n                }\n            }\n            const prevLayout = this.layout;\n            this.layout = this.measure(false);\n            this.layoutCorrected = createBox();\n            this.isLayoutDirty = false;\n            this.projectionDelta = undefined;\n            this.notifyListeners(\"measure\", this.layout.layoutBox);\n            const { visualElement } = this.options;\n            visualElement &&\n                visualElement.notify(\"LayoutMeasure\", this.layout.layoutBox, prevLayout ? prevLayout.layoutBox : undefined);\n        }\n        updateScroll(phase = \"measure\") {\n            let needsMeasurement = Boolean(this.options.layoutScroll && this.instance);\n            if (this.scroll &&\n                this.scroll.animationId === this.root.animationId &&\n                this.scroll.phase === phase) {\n                needsMeasurement = false;\n            }\n            if (needsMeasurement) {\n                const isRoot = checkIsScrollRoot(this.instance);\n                this.scroll = {\n                    animationId: this.root.animationId,\n                    phase,\n                    isRoot,\n                    offset: measureScroll(this.instance),\n                    wasRoot: this.scroll ? this.scroll.isRoot : isRoot,\n                };\n            }\n        }\n        resetTransform() {\n            if (!resetTransform)\n                return;\n            const isResetRequested = this.isLayoutDirty ||\n                this.shouldResetTransform ||\n                this.options.alwaysMeasureLayout;\n            const hasProjection = this.projectionDelta && !isDeltaZero(this.projectionDelta);\n            const transformTemplate = this.getTransformTemplate();\n            const transformTemplateValue = transformTemplate\n                ? transformTemplate(this.latestValues, \"\")\n                : undefined;\n            const transformTemplateHasChanged = transformTemplateValue !== this.prevTransformTemplateValue;\n            if (isResetRequested &&\n                (hasProjection ||\n                    hasTransform(this.latestValues) ||\n                    transformTemplateHasChanged)) {\n                resetTransform(this.instance, transformTemplateValue);\n                this.shouldResetTransform = false;\n                this.scheduleRender();\n            }\n        }\n        measure(removeTransform = true) {\n            const pageBox = this.measurePageBox();\n            let layoutBox = this.removeElementScroll(pageBox);\n            /**\n             * Measurements taken during the pre-render stage\n             * still have transforms applied so we remove them\n             * via calculation.\n             */\n            if (removeTransform) {\n                layoutBox = this.removeTransform(layoutBox);\n            }\n            roundBox(layoutBox);\n            return {\n                animationId: this.root.animationId,\n                measuredBox: pageBox,\n                layoutBox,\n                latestValues: {},\n                source: this.id,\n            };\n        }\n        measurePageBox() {\n            var _a;\n            const { visualElement } = this.options;\n            if (!visualElement)\n                return createBox();\n            const box = visualElement.measureViewportBox();\n            const wasInScrollRoot = ((_a = this.scroll) === null || _a === void 0 ? void 0 : _a.wasRoot) || this.path.some(checkNodeWasScrollRoot);\n            if (!wasInScrollRoot) {\n                // Remove viewport scroll to give page-relative coordinates\n                const { scroll } = this.root;\n                if (scroll) {\n                    translateAxis(box.x, scroll.offset.x);\n                    translateAxis(box.y, scroll.offset.y);\n                }\n            }\n            return box;\n        }\n        removeElementScroll(box) {\n            var _a;\n            const boxWithoutScroll = createBox();\n            copyBoxInto(boxWithoutScroll, box);\n            if ((_a = this.scroll) === null || _a === void 0 ? void 0 : _a.wasRoot) {\n                return boxWithoutScroll;\n            }\n            /**\n             * Performance TODO: Keep a cumulative scroll offset down the tree\n             * rather than loop back up the path.\n             */\n            for (let i = 0; i < this.path.length; i++) {\n                const node = this.path[i];\n                const { scroll, options } = node;\n                if (node !== this.root && scroll && options.layoutScroll) {\n                    /**\n                     * If this is a new scroll root, we want to remove all previous scrolls\n                     * from the viewport box.\n                     */\n                    if (scroll.wasRoot) {\n                        copyBoxInto(boxWithoutScroll, box);\n                    }\n                    translateAxis(boxWithoutScroll.x, scroll.offset.x);\n                    translateAxis(boxWithoutScroll.y, scroll.offset.y);\n                }\n            }\n            return boxWithoutScroll;\n        }\n        applyTransform(box, transformOnly = false) {\n            const withTransforms = createBox();\n            copyBoxInto(withTransforms, box);\n            for (let i = 0; i < this.path.length; i++) {\n                const node = this.path[i];\n                if (!transformOnly &&\n                    node.options.layoutScroll &&\n                    node.scroll &&\n                    node !== node.root) {\n                    transformBox(withTransforms, {\n                        x: -node.scroll.offset.x,\n                        y: -node.scroll.offset.y,\n                    });\n                }\n                if (!hasTransform(node.latestValues))\n                    continue;\n                transformBox(withTransforms, node.latestValues);\n            }\n            if (hasTransform(this.latestValues)) {\n                transformBox(withTransforms, this.latestValues);\n            }\n            return withTransforms;\n        }\n        removeTransform(box) {\n            const boxWithoutTransform = createBox();\n            copyBoxInto(boxWithoutTransform, box);\n            for (let i = 0; i < this.path.length; i++) {\n                const node = this.path[i];\n                if (!node.instance)\n                    continue;\n                if (!hasTransform(node.latestValues))\n                    continue;\n                hasScale(node.latestValues) && node.updateSnapshot();\n                const sourceBox = createBox();\n                const nodeBox = node.measurePageBox();\n                copyBoxInto(sourceBox, nodeBox);\n                removeBoxTransforms(boxWithoutTransform, node.latestValues, node.snapshot ? node.snapshot.layoutBox : undefined, sourceBox);\n            }\n            if (hasTransform(this.latestValues)) {\n                removeBoxTransforms(boxWithoutTransform, this.latestValues);\n            }\n            return boxWithoutTransform;\n        }\n        setTargetDelta(delta) {\n            this.targetDelta = delta;\n            this.root.scheduleUpdateProjection();\n            this.isProjectionDirty = true;\n        }\n        setOptions(options) {\n            this.options = {\n                ...this.options,\n                ...options,\n                crossfade: options.crossfade !== undefined ? options.crossfade : true,\n            };\n        }\n        clearMeasurements() {\n            this.scroll = undefined;\n            this.layout = undefined;\n            this.snapshot = undefined;\n            this.prevTransformTemplateValue = undefined;\n            this.targetDelta = undefined;\n            this.target = undefined;\n            this.isLayoutDirty = false;\n        }\n        forceRelativeParentToResolveTarget() {\n            if (!this.relativeParent)\n                return;\n            /**\n             * If the parent target isn't up-to-date, force it to update.\n             * This is an unfortunate de-optimisation as it means any updating relative\n             * projection will cause all the relative parents to recalculate back\n             * up the tree.\n             */\n            if (this.relativeParent.resolvedRelativeTargetAt !==\n                frameData.timestamp) {\n                this.relativeParent.resolveTargetDelta(true);\n            }\n        }\n        resolveTargetDelta(forceRecalculation = false) {\n            var _a;\n            /**\n             * Once the dirty status of nodes has been spread through the tree, we also\n             * need to check if we have a shared node of a different depth that has itself\n             * been dirtied.\n             */\n            const lead = this.getLead();\n            this.isProjectionDirty || (this.isProjectionDirty = lead.isProjectionDirty);\n            this.isTransformDirty || (this.isTransformDirty = lead.isTransformDirty);\n            this.isSharedProjectionDirty || (this.isSharedProjectionDirty = lead.isSharedProjectionDirty);\n            const isShared = Boolean(this.resumingFrom) || this !== lead;\n            /**\n             * We don't use transform for this step of processing so we don't\n             * need to check whether any nodes have changed transform.\n             */\n            const canSkip = !(forceRecalculation ||\n                (isShared && this.isSharedProjectionDirty) ||\n                this.isProjectionDirty ||\n                ((_a = this.parent) === null || _a === void 0 ? void 0 : _a.isProjectionDirty) ||\n                this.attemptToResolveRelativeTarget ||\n                this.root.updateBlockedByResize);\n            if (canSkip)\n                return;\n            const { layout, layoutId } = this.options;\n            /**\n             * If we have no layout, we can't perform projection, so early return\n             */\n            if (!this.layout || !(layout || layoutId))\n                return;\n            this.resolvedRelativeTargetAt = frameData.timestamp;\n            /**\n             * If we don't have a targetDelta but do have a layout, we can attempt to resolve\n             * a relativeParent. This will allow a component to perform scale correction\n             * even if no animation has started.\n             */\n            if (!this.targetDelta && !this.relativeTarget) {\n                const relativeParent = this.getClosestProjectingParent();\n                if (relativeParent &&\n                    relativeParent.layout &&\n                    this.animationProgress !== 1) {\n                    this.relativeParent = relativeParent;\n                    this.forceRelativeParentToResolveTarget();\n                    this.relativeTarget = createBox();\n                    this.relativeTargetOrigin = createBox();\n                    calcRelativePosition(this.relativeTargetOrigin, this.layout.layoutBox, relativeParent.layout.layoutBox);\n                    copyBoxInto(this.relativeTarget, this.relativeTargetOrigin);\n                }\n                else {\n                    this.relativeParent = this.relativeTarget = undefined;\n                }\n            }\n            /**\n             * If we have no relative target or no target delta our target isn't valid\n             * for this frame.\n             */\n            if (!this.relativeTarget && !this.targetDelta)\n                return;\n            /**\n             * Lazy-init target data structure\n             */\n            if (!this.target) {\n                this.target = createBox();\n                this.targetWithTransforms = createBox();\n            }\n            /**\n             * If we've got a relative box for this component, resolve it into a target relative to the parent.\n             */\n            if (this.relativeTarget &&\n                this.relativeTargetOrigin &&\n                this.relativeParent &&\n                this.relativeParent.target) {\n                this.forceRelativeParentToResolveTarget();\n                calcRelativeBox(this.target, this.relativeTarget, this.relativeParent.target);\n                /**\n                 * If we've only got a targetDelta, resolve it into a target\n                 */\n            }\n            else if (this.targetDelta) {\n                if (Boolean(this.resumingFrom)) {\n                    // TODO: This is creating a new object every frame\n                    this.target = this.applyTransform(this.layout.layoutBox);\n                }\n                else {\n                    copyBoxInto(this.target, this.layout.layoutBox);\n                }\n                applyBoxDelta(this.target, this.targetDelta);\n            }\n            else {\n                /**\n                 * If no target, use own layout as target\n                 */\n                copyBoxInto(this.target, this.layout.layoutBox);\n            }\n            /**\n             * If we've been told to attempt to resolve a relative target, do so.\n             */\n            if (this.attemptToResolveRelativeTarget) {\n                this.attemptToResolveRelativeTarget = false;\n                const relativeParent = this.getClosestProjectingParent();\n                if (relativeParent &&\n                    Boolean(relativeParent.resumingFrom) ===\n                        Boolean(this.resumingFrom) &&\n                    !relativeParent.options.layoutScroll &&\n                    relativeParent.target &&\n                    this.animationProgress !== 1) {\n                    this.relativeParent = relativeParent;\n                    this.forceRelativeParentToResolveTarget();\n                    this.relativeTarget = createBox();\n                    this.relativeTargetOrigin = createBox();\n                    calcRelativePosition(this.relativeTargetOrigin, this.target, relativeParent.target);\n                    copyBoxInto(this.relativeTarget, this.relativeTargetOrigin);\n                }\n                else {\n                    this.relativeParent = this.relativeTarget = undefined;\n                }\n            }\n            /**\n             * Increase debug counter for resolved target deltas\n             */\n            if (isDebug) {\n                metrics.resolvedTargetDeltas++;\n            }\n        }\n        getClosestProjectingParent() {\n            if (!this.parent ||\n                hasScale(this.parent.latestValues) ||\n                has2DTranslate(this.parent.latestValues)) {\n                return undefined;\n            }\n            if (this.parent.isProjecting()) {\n                return this.parent;\n            }\n            else {\n                return this.parent.getClosestProjectingParent();\n            }\n        }\n        isProjecting() {\n            return Boolean((this.relativeTarget ||\n                this.targetDelta ||\n                this.options.layoutRoot) &&\n                this.layout);\n        }\n        calcProjection() {\n            var _a;\n            const lead = this.getLead();\n            const isShared = Boolean(this.resumingFrom) || this !== lead;\n            let canSkip = true;\n            /**\n             * If this is a normal layout animation and neither this node nor its nearest projecting\n             * is dirty then we can't skip.\n             */\n            if (this.isProjectionDirty || ((_a = this.parent) === null || _a === void 0 ? void 0 : _a.isProjectionDirty)) {\n                canSkip = false;\n            }\n            /**\n             * If this is a shared layout animation and this node's shared projection is dirty then\n             * we can't skip.\n             */\n            if (isShared &&\n                (this.isSharedProjectionDirty || this.isTransformDirty)) {\n                canSkip = false;\n            }\n            /**\n             * If we have resolved the target this frame we must recalculate the\n             * projection to ensure it visually represents the internal calculations.\n             */\n            if (this.resolvedRelativeTargetAt === frameData.timestamp) {\n                canSkip = false;\n            }\n            if (canSkip)\n                return;\n            const { layout, layoutId } = this.options;\n            /**\n             * If this section of the tree isn't animating we can\n             * delete our target sources for the following frame.\n             */\n            this.isTreeAnimating = Boolean((this.parent && this.parent.isTreeAnimating) ||\n                this.currentAnimation ||\n                this.pendingAnimation);\n            if (!this.isTreeAnimating) {\n                this.targetDelta = this.relativeTarget = undefined;\n            }\n            if (!this.layout || !(layout || layoutId))\n                return;\n            /**\n             * Reset the corrected box with the latest values from box, as we're then going\n             * to perform mutative operations on it.\n             */\n            copyBoxInto(this.layoutCorrected, this.layout.layoutBox);\n            /**\n             * Record previous tree scales before updating.\n             */\n            const prevTreeScaleX = this.treeScale.x;\n            const prevTreeScaleY = this.treeScale.y;\n            /**\n             * Apply all the parent deltas to this box to produce the corrected box. This\n             * is the layout box, as it will appear on screen as a result of the transforms of its parents.\n             */\n            applyTreeDeltas(this.layoutCorrected, this.treeScale, this.path, isShared);\n            /**\n             * If this layer needs to perform scale correction but doesn't have a target,\n             * use the layout as the target.\n             */\n            if (lead.layout &&\n                !lead.target &&\n                (this.treeScale.x !== 1 || this.treeScale.y !== 1)) {\n                lead.target = lead.layout.layoutBox;\n                lead.targetWithTransforms = createBox();\n            }\n            const { target } = lead;\n            if (!target) {\n                /**\n                 * If we don't have a target to project into, but we were previously\n                 * projecting, we want to remove the stored transform and schedule\n                 * a render to ensure the elements reflect the removed transform.\n                 */\n                if (this.prevProjectionDelta) {\n                    this.createProjectionDeltas();\n                    this.scheduleRender();\n                }\n                return;\n            }\n            if (!this.projectionDelta || !this.prevProjectionDelta) {\n                this.createProjectionDeltas();\n            }\n            else {\n                copyAxisDeltaInto(this.prevProjectionDelta.x, this.projectionDelta.x);\n                copyAxisDeltaInto(this.prevProjectionDelta.y, this.projectionDelta.y);\n            }\n            /**\n             * Update the delta between the corrected box and the target box before user-set transforms were applied.\n             * This will allow us to calculate the corrected borderRadius and boxShadow to compensate\n             * for our layout reprojection, but still allow them to be scaled correctly by the user.\n             * It might be that to simplify this we may want to accept that user-set scale is also corrected\n             * and we wouldn't have to keep and calc both deltas, OR we could support a user setting\n             * to allow people to choose whether these styles are corrected based on just the\n             * layout reprojection or the final bounding box.\n             */\n            calcBoxDelta(this.projectionDelta, this.layoutCorrected, target, this.latestValues);\n            if (this.treeScale.x !== prevTreeScaleX ||\n                this.treeScale.y !== prevTreeScaleY ||\n                !axisDeltaEquals(this.projectionDelta.x, this.prevProjectionDelta.x) ||\n                !axisDeltaEquals(this.projectionDelta.y, this.prevProjectionDelta.y)) {\n                this.hasProjected = true;\n                this.scheduleRender();\n                this.notifyListeners(\"projectionUpdate\", target);\n            }\n            /**\n             * Increase debug counter for recalculated projections\n             */\n            if (isDebug) {\n                metrics.recalculatedProjection++;\n            }\n        }\n        hide() {\n            this.isVisible = false;\n            // TODO: Schedule render\n        }\n        show() {\n            this.isVisible = true;\n            // TODO: Schedule render\n        }\n        scheduleRender(notifyAll = true) {\n            var _a;\n            (_a = this.options.visualElement) === null || _a === void 0 ? void 0 : _a.scheduleRender();\n            if (notifyAll) {\n                const stack = this.getStack();\n                stack && stack.scheduleRender();\n            }\n            if (this.resumingFrom && !this.resumingFrom.instance) {\n                this.resumingFrom = undefined;\n            }\n        }\n        createProjectionDeltas() {\n            this.prevProjectionDelta = createDelta();\n            this.projectionDelta = createDelta();\n            this.projectionDeltaWithTransform = createDelta();\n        }\n        setAnimationOrigin(delta, hasOnlyRelativeTargetChanged = false) {\n            const snapshot = this.snapshot;\n            const snapshotLatestValues = snapshot\n                ? snapshot.latestValues\n                : {};\n            const mixedValues = { ...this.latestValues };\n            const targetDelta = createDelta();\n            if (!this.relativeParent ||\n                !this.relativeParent.options.layoutRoot) {\n                this.relativeTarget = this.relativeTargetOrigin = undefined;\n            }\n            this.attemptToResolveRelativeTarget = !hasOnlyRelativeTargetChanged;\n            const relativeLayout = createBox();\n            const snapshotSource = snapshot ? snapshot.source : undefined;\n            const layoutSource = this.layout ? this.layout.source : undefined;\n            const isSharedLayoutAnimation = snapshotSource !== layoutSource;\n            const stack = this.getStack();\n            const isOnlyMember = !stack || stack.members.length <= 1;\n            const shouldCrossfadeOpacity = Boolean(isSharedLayoutAnimation &&\n                !isOnlyMember &&\n                this.options.crossfade === true &&\n                !this.path.some(hasOpacityCrossfade));\n            this.animationProgress = 0;\n            let prevRelativeTarget;\n            this.mixTargetDelta = (latest) => {\n                const progress = latest / 1000;\n                mixAxisDelta(targetDelta.x, delta.x, progress);\n                mixAxisDelta(targetDelta.y, delta.y, progress);\n                this.setTargetDelta(targetDelta);\n                if (this.relativeTarget &&\n                    this.relativeTargetOrigin &&\n                    this.layout &&\n                    this.relativeParent &&\n                    this.relativeParent.layout) {\n                    calcRelativePosition(relativeLayout, this.layout.layoutBox, this.relativeParent.layout.layoutBox);\n                    mixBox(this.relativeTarget, this.relativeTargetOrigin, relativeLayout, progress);\n                    /**\n                     * If this is an unchanged relative target we can consider the\n                     * projection not dirty.\n                     */\n                    if (prevRelativeTarget &&\n                        boxEquals(this.relativeTarget, prevRelativeTarget)) {\n                        this.isProjectionDirty = false;\n                    }\n                    if (!prevRelativeTarget)\n                        prevRelativeTarget = createBox();\n                    copyBoxInto(prevRelativeTarget, this.relativeTarget);\n                }\n                if (isSharedLayoutAnimation) {\n                    this.animationValues = mixedValues;\n                    mixValues(mixedValues, snapshotLatestValues, this.latestValues, progress, shouldCrossfadeOpacity, isOnlyMember);\n                }\n                this.root.scheduleUpdateProjection();\n                this.scheduleRender();\n                this.animationProgress = progress;\n            };\n            this.mixTargetDelta(this.options.layoutRoot ? 1000 : 0);\n        }\n        startAnimation(options) {\n            this.notifyListeners(\"animationStart\");\n            this.currentAnimation && this.currentAnimation.stop();\n            if (this.resumingFrom && this.resumingFrom.currentAnimation) {\n                this.resumingFrom.currentAnimation.stop();\n            }\n            if (this.pendingAnimation) {\n                cancelFrame(this.pendingAnimation);\n                this.pendingAnimation = undefined;\n            }\n            /**\n             * Start the animation in the next frame to have a frame with progress 0,\n             * where the target is the same as when the animation started, so we can\n             * calculate the relative positions correctly for instant transitions.\n             */\n            this.pendingAnimation = frame.update(() => {\n                globalProjectionState.hasAnimatedSinceResize = true;\n                this.currentAnimation = animateSingleValue(0, animationTarget, {\n                    ...options,\n                    onUpdate: (latest) => {\n                        this.mixTargetDelta(latest);\n                        options.onUpdate && options.onUpdate(latest);\n                    },\n                    onComplete: () => {\n                        options.onComplete && options.onComplete();\n                        this.completeAnimation();\n                    },\n                });\n                if (this.resumingFrom) {\n                    this.resumingFrom.currentAnimation = this.currentAnimation;\n                }\n                this.pendingAnimation = undefined;\n            });\n        }\n        completeAnimation() {\n            if (this.resumingFrom) {\n                this.resumingFrom.currentAnimation = undefined;\n                this.resumingFrom.preserveOpacity = undefined;\n            }\n            const stack = this.getStack();\n            stack && stack.exitAnimationComplete();\n            this.resumingFrom =\n                this.currentAnimation =\n                    this.animationValues =\n                        undefined;\n            this.notifyListeners(\"animationComplete\");\n        }\n        finishAnimation() {\n            if (this.currentAnimation) {\n                this.mixTargetDelta && this.mixTargetDelta(animationTarget);\n                this.currentAnimation.stop();\n            }\n            this.completeAnimation();\n        }\n        applyTransformsToTarget() {\n            const lead = this.getLead();\n            let { targetWithTransforms, target, layout, latestValues } = lead;\n            if (!targetWithTransforms || !target || !layout)\n                return;\n            /**\n             * If we're only animating position, and this element isn't the lead element,\n             * then instead of projecting into the lead box we instead want to calculate\n             * a new target that aligns the two boxes but maintains the layout shape.\n             */\n            if (this !== lead &&\n                this.layout &&\n                layout &&\n                shouldAnimatePositionOnly(this.options.animationType, this.layout.layoutBox, layout.layoutBox)) {\n                target = this.target || createBox();\n                const xLength = calcLength(this.layout.layoutBox.x);\n                target.x.min = lead.target.x.min;\n                target.x.max = target.x.min + xLength;\n                const yLength = calcLength(this.layout.layoutBox.y);\n                target.y.min = lead.target.y.min;\n                target.y.max = target.y.min + yLength;\n            }\n            copyBoxInto(targetWithTransforms, target);\n            /**\n             * Apply the latest user-set transforms to the targetBox to produce the targetBoxFinal.\n             * This is the final box that we will then project into by calculating a transform delta and\n             * applying it to the corrected box.\n             */\n            transformBox(targetWithTransforms, latestValues);\n            /**\n             * Update the delta between the corrected box and the final target box, after\n             * user-set transforms are applied to it. This will be used by the renderer to\n             * create a transform style that will reproject the element from its layout layout\n             * into the desired bounding box.\n             */\n            calcBoxDelta(this.projectionDeltaWithTransform, this.layoutCorrected, targetWithTransforms, latestValues);\n        }\n        registerSharedNode(layoutId, node) {\n            if (!this.sharedNodes.has(layoutId)) {\n                this.sharedNodes.set(layoutId, new NodeStack());\n            }\n            const stack = this.sharedNodes.get(layoutId);\n            stack.add(node);\n            const config = node.options.initialPromotionConfig;\n            node.promote({\n                transition: config ? config.transition : undefined,\n                preserveFollowOpacity: config && config.shouldPreserveFollowOpacity\n                    ? config.shouldPreserveFollowOpacity(node)\n                    : undefined,\n            });\n        }\n        isLead() {\n            const stack = this.getStack();\n            return stack ? stack.lead === this : true;\n        }\n        getLead() {\n            var _a;\n            const { layoutId } = this.options;\n            return layoutId ? ((_a = this.getStack()) === null || _a === void 0 ? void 0 : _a.lead) || this : this;\n        }\n        getPrevLead() {\n            var _a;\n            const { layoutId } = this.options;\n            return layoutId ? (_a = this.getStack()) === null || _a === void 0 ? void 0 : _a.prevLead : undefined;\n        }\n        getStack() {\n            const { layoutId } = this.options;\n            if (layoutId)\n                return this.root.sharedNodes.get(layoutId);\n        }\n        promote({ needsReset, transition, preserveFollowOpacity, } = {}) {\n            const stack = this.getStack();\n            if (stack)\n                stack.promote(this, preserveFollowOpacity);\n            if (needsReset) {\n                this.projectionDelta = undefined;\n                this.needsReset = true;\n            }\n            if (transition)\n                this.setOptions({ transition });\n        }\n        relegate() {\n            const stack = this.getStack();\n            if (stack) {\n                return stack.relegate(this);\n            }\n            else {\n                return false;\n            }\n        }\n        resetSkewAndRotation() {\n            const { visualElement } = this.options;\n            if (!visualElement)\n                return;\n            // If there's no detected skew or rotation values, we can early return without a forced render.\n            let hasDistortingTransform = false;\n            /**\n             * An unrolled check for rotation values. Most elements don't have any rotation and\n             * skipping the nested loop and new object creation is 50% faster.\n             */\n            const { latestValues } = visualElement;\n            if (latestValues.z ||\n                latestValues.rotate ||\n                latestValues.rotateX ||\n                latestValues.rotateY ||\n                latestValues.rotateZ ||\n                latestValues.skewX ||\n                latestValues.skewY) {\n                hasDistortingTransform = true;\n            }\n            // If there's no distorting values, we don't need to do any more.\n            if (!hasDistortingTransform)\n                return;\n            const resetValues = {};\n            if (latestValues.z) {\n                resetDistortingTransform(\"z\", visualElement, resetValues, this.animationValues);\n            }\n            // Check the skew and rotate value of all axes and reset to 0\n            for (let i = 0; i < transformAxes.length; i++) {\n                resetDistortingTransform(`rotate${transformAxes[i]}`, visualElement, resetValues, this.animationValues);\n                resetDistortingTransform(`skew${transformAxes[i]}`, visualElement, resetValues, this.animationValues);\n            }\n            // Force a render of this element to apply the transform with all skews and rotations\n            // set to 0.\n            visualElement.render();\n            // Put back all the values we reset\n            for (const key in resetValues) {\n                visualElement.setStaticValue(key, resetValues[key]);\n                if (this.animationValues) {\n                    this.animationValues[key] = resetValues[key];\n                }\n            }\n            // Schedule a render for the next frame. This ensures we won't visually\n            // see the element with the reset rotate value applied.\n            visualElement.scheduleRender();\n        }\n        getProjectionStyles(styleProp) {\n            var _a, _b;\n            if (!this.instance || this.isSVG)\n                return undefined;\n            if (!this.isVisible) {\n                return hiddenVisibility;\n            }\n            const styles = {\n                visibility: \"\",\n            };\n            const transformTemplate = this.getTransformTemplate();\n            if (this.needsReset) {\n                this.needsReset = false;\n                styles.opacity = \"\";\n                styles.pointerEvents =\n                    resolveMotionValue(styleProp === null || styleProp === void 0 ? void 0 : styleProp.pointerEvents) || \"\";\n                styles.transform = transformTemplate\n                    ? transformTemplate(this.latestValues, \"\")\n                    : \"none\";\n                return styles;\n            }\n            const lead = this.getLead();\n            if (!this.projectionDelta || !this.layout || !lead.target) {\n                const emptyStyles = {};\n                if (this.options.layoutId) {\n                    emptyStyles.opacity =\n                        this.latestValues.opacity !== undefined\n                            ? this.latestValues.opacity\n                            : 1;\n                    emptyStyles.pointerEvents =\n                        resolveMotionValue(styleProp === null || styleProp === void 0 ? void 0 : styleProp.pointerEvents) || \"\";\n                }\n                if (this.hasProjected && !hasTransform(this.latestValues)) {\n                    emptyStyles.transform = transformTemplate\n                        ? transformTemplate({}, \"\")\n                        : \"none\";\n                    this.hasProjected = false;\n                }\n                return emptyStyles;\n            }\n            const valuesToRender = lead.animationValues || lead.latestValues;\n            this.applyTransformsToTarget();\n            styles.transform = buildProjectionTransform(this.projectionDeltaWithTransform, this.treeScale, valuesToRender);\n            if (transformTemplate) {\n                styles.transform = transformTemplate(valuesToRender, styles.transform);\n            }\n            const { x, y } = this.projectionDelta;\n            styles.transformOrigin = `${x.origin * 100}% ${y.origin * 100}% 0`;\n            if (lead.animationValues) {\n                /**\n                 * If the lead component is animating, assign this either the entering/leaving\n                 * opacity\n                 */\n                styles.opacity =\n                    lead === this\n                        ? (_b = (_a = valuesToRender.opacity) !== null && _a !== void 0 ? _a : this.latestValues.opacity) !== null && _b !== void 0 ? _b : 1\n                        : this.preserveOpacity\n                            ? this.latestValues.opacity\n                            : valuesToRender.opacityExit;\n            }\n            else {\n                /**\n                 * Or we're not animating at all, set the lead component to its layout\n                 * opacity and other components to hidden.\n                 */\n                styles.opacity =\n                    lead === this\n                        ? valuesToRender.opacity !== undefined\n                            ? valuesToRender.opacity\n                            : \"\"\n                        : valuesToRender.opacityExit !== undefined\n                            ? valuesToRender.opacityExit\n                            : 0;\n            }\n            /**\n             * Apply scale correction\n             */\n            for (const key in scaleCorrectors) {\n                if (valuesToRender[key] === undefined)\n                    continue;\n                const { correct, applyTo } = scaleCorrectors[key];\n                /**\n                 * Only apply scale correction to the value if we have an\n                 * active projection transform. Otherwise these values become\n                 * vulnerable to distortion if the element changes size without\n                 * a corresponding layout animation.\n                 */\n                const corrected = styles.transform === \"none\"\n                    ? valuesToRender[key]\n                    : correct(valuesToRender[key], lead);\n                if (applyTo) {\n                    const num = applyTo.length;\n                    for (let i = 0; i < num; i++) {\n                        styles[applyTo[i]] = corrected;\n                    }\n                }\n                else {\n                    styles[key] = corrected;\n                }\n            }\n            /**\n             * Disable pointer events on follow components. This is to ensure\n             * that if a follow component covers a lead component it doesn't block\n             * pointer events on the lead.\n             */\n            if (this.options.layoutId) {\n                styles.pointerEvents =\n                    lead === this\n                        ? resolveMotionValue(styleProp === null || styleProp === void 0 ? void 0 : styleProp.pointerEvents) || \"\"\n                        : \"none\";\n            }\n            return styles;\n        }\n        clearSnapshot() {\n            this.resumeFrom = this.snapshot = undefined;\n        }\n        // Only run on root\n        resetTree() {\n            this.root.nodes.forEach((node) => { var _a; return (_a = node.currentAnimation) === null || _a === void 0 ? void 0 : _a.stop(); });\n            this.root.nodes.forEach(clearMeasurements);\n            this.root.sharedNodes.clear();\n        }\n    };\n}\nfunction updateLayout(node) {\n    node.updateLayout();\n}\nfunction notifyLayoutUpdate(node) {\n    var _a;\n    const snapshot = ((_a = node.resumeFrom) === null || _a === void 0 ? void 0 : _a.snapshot) || node.snapshot;\n    if (node.isLead() &&\n        node.layout &&\n        snapshot &&\n        node.hasListeners(\"didUpdate\")) {\n        const { layoutBox: layout, measuredBox: measuredLayout } = node.layout;\n        const { animationType } = node.options;\n        const isShared = snapshot.source !== node.layout.source;\n        // TODO Maybe we want to also resize the layout snapshot so we don't trigger\n        // animations for instance if layout=\"size\" and an element has only changed position\n        if (animationType === \"size\") {\n            eachAxis((axis) => {\n                const axisSnapshot = isShared\n                    ? snapshot.measuredBox[axis]\n                    : snapshot.layoutBox[axis];\n                const length = calcLength(axisSnapshot);\n                axisSnapshot.min = layout[axis].min;\n                axisSnapshot.max = axisSnapshot.min + length;\n            });\n        }\n        else if (shouldAnimatePositionOnly(animationType, snapshot.layoutBox, layout)) {\n            eachAxis((axis) => {\n                const axisSnapshot = isShared\n                    ? snapshot.measuredBox[axis]\n                    : snapshot.layoutBox[axis];\n                const length = calcLength(layout[axis]);\n                axisSnapshot.max = axisSnapshot.min + length;\n                /**\n                 * Ensure relative target gets resized and rerendererd\n                 */\n                if (node.relativeTarget && !node.currentAnimation) {\n                    node.isProjectionDirty = true;\n                    node.relativeTarget[axis].max =\n                        node.relativeTarget[axis].min + length;\n                }\n            });\n        }\n        const layoutDelta = createDelta();\n        calcBoxDelta(layoutDelta, layout, snapshot.layoutBox);\n        const visualDelta = createDelta();\n        if (isShared) {\n            calcBoxDelta(visualDelta, node.applyTransform(measuredLayout, true), snapshot.measuredBox);\n        }\n        else {\n            calcBoxDelta(visualDelta, layout, snapshot.layoutBox);\n        }\n        const hasLayoutChanged = !isDeltaZero(layoutDelta);\n        let hasRelativeTargetChanged = false;\n        if (!node.resumeFrom) {\n            const relativeParent = node.getClosestProjectingParent();\n            /**\n             * If the relativeParent is itself resuming from a different element then\n             * the relative snapshot is not relavent\n             */\n            if (relativeParent && !relativeParent.resumeFrom) {\n                const { snapshot: parentSnapshot, layout: parentLayout } = relativeParent;\n                if (parentSnapshot && parentLayout) {\n                    const relativeSnapshot = createBox();\n                    calcRelativePosition(relativeSnapshot, snapshot.layoutBox, parentSnapshot.layoutBox);\n                    const relativeLayout = createBox();\n                    calcRelativePosition(relativeLayout, layout, parentLayout.layoutBox);\n                    if (!boxEqualsRounded(relativeSnapshot, relativeLayout)) {\n                        hasRelativeTargetChanged = true;\n                    }\n                    if (relativeParent.options.layoutRoot) {\n                        node.relativeTarget = relativeLayout;\n                        node.relativeTargetOrigin = relativeSnapshot;\n                        node.relativeParent = relativeParent;\n                    }\n                }\n            }\n        }\n        node.notifyListeners(\"didUpdate\", {\n            layout,\n            snapshot,\n            delta: visualDelta,\n            layoutDelta,\n            hasLayoutChanged,\n            hasRelativeTargetChanged,\n        });\n    }\n    else if (node.isLead()) {\n        const { onExitComplete } = node.options;\n        onExitComplete && onExitComplete();\n    }\n    /**\n     * Clearing transition\n     * TODO: Investigate why this transition is being passed in as {type: false } from Framer\n     * and why we need it at all\n     */\n    node.options.transition = undefined;\n}\nfunction propagateDirtyNodes(node) {\n    /**\n     * Increase debug counter for nodes encountered this frame\n     */\n    if (isDebug) {\n        metrics.totalNodes++;\n    }\n    if (!node.parent)\n        return;\n    /**\n     * If this node isn't projecting, propagate isProjectionDirty. It will have\n     * no performance impact but it will allow the next child that *is* projecting\n     * but *isn't* dirty to just check its parent to see if *any* ancestor needs\n     * correcting.\n     */\n    if (!node.isProjecting()) {\n        node.isProjectionDirty = node.parent.isProjectionDirty;\n    }\n    /**\n     * Propagate isSharedProjectionDirty and isTransformDirty\n     * throughout the whole tree. A future revision can take another look at\n     * this but for safety we still recalcualte shared nodes.\n     */\n    node.isSharedProjectionDirty || (node.isSharedProjectionDirty = Boolean(node.isProjectionDirty ||\n        node.parent.isProjectionDirty ||\n        node.parent.isSharedProjectionDirty));\n    node.isTransformDirty || (node.isTransformDirty = node.parent.isTransformDirty);\n}\nfunction cleanDirtyNodes(node) {\n    node.isProjectionDirty =\n        node.isSharedProjectionDirty =\n            node.isTransformDirty =\n                false;\n}\nfunction clearSnapshot(node) {\n    node.clearSnapshot();\n}\nfunction clearMeasurements(node) {\n    node.clearMeasurements();\n}\nfunction clearIsLayoutDirty(node) {\n    node.isLayoutDirty = false;\n}\nfunction resetTransformStyle(node) {\n    const { visualElement } = node.options;\n    if (visualElement && visualElement.getProps().onBeforeLayoutMeasure) {\n        visualElement.notify(\"BeforeLayoutMeasure\");\n    }\n    node.resetTransform();\n}\nfunction finishAnimation(node) {\n    node.finishAnimation();\n    node.targetDelta = node.relativeTarget = node.target = undefined;\n    node.isProjectionDirty = true;\n}\nfunction resolveTargetDelta(node) {\n    node.resolveTargetDelta();\n}\nfunction calcProjection(node) {\n    node.calcProjection();\n}\nfunction resetSkewAndRotation(node) {\n    node.resetSkewAndRotation();\n}\nfunction removeLeadSnapshots(stack) {\n    stack.removeLeadSnapshot();\n}\nfunction mixAxisDelta(output, delta, p) {\n    output.translate = mixNumber(delta.translate, 0, p);\n    output.scale = mixNumber(delta.scale, 1, p);\n    output.origin = delta.origin;\n    output.originPoint = delta.originPoint;\n}\nfunction mixAxis(output, from, to, p) {\n    output.min = mixNumber(from.min, to.min, p);\n    output.max = mixNumber(from.max, to.max, p);\n}\nfunction mixBox(output, from, to, p) {\n    mixAxis(output.x, from.x, to.x, p);\n    mixAxis(output.y, from.y, to.y, p);\n}\nfunction hasOpacityCrossfade(node) {\n    return (node.animationValues && node.animationValues.opacityExit !== undefined);\n}\nconst defaultLayoutTransition = {\n    duration: 0.45,\n    ease: [0.4, 0, 0.1, 1],\n};\nconst userAgentContains = (string) => typeof navigator !== \"undefined\" &&\n    navigator.userAgent &&\n    navigator.userAgent.toLowerCase().includes(string);\n/**\n * Measured bounding boxes must be rounded in Safari and\n * left untouched in Chrome, otherwise non-integer layouts within scaled-up elements\n * can appear to jump.\n */\nconst roundPoint = userAgentContains(\"applewebkit/\") && !userAgentContains(\"chrome/\")\n    ? Math.round\n    : noop;\nfunction roundAxis(axis) {\n    // Round to the nearest .5 pixels to support subpixel layouts\n    axis.min = roundPoint(axis.min);\n    axis.max = roundPoint(axis.max);\n}\nfunction roundBox(box) {\n    roundAxis(box.x);\n    roundAxis(box.y);\n}\nfunction shouldAnimatePositionOnly(animationType, snapshot, layout) {\n    return (animationType === \"position\" ||\n        (animationType === \"preserve-aspect\" &&\n            !isNear(aspectRatio(snapshot), aspectRatio(layout), 0.2)));\n}\nfunction checkNodeWasScrollRoot(node) {\n    var _a;\n    return node !== node.root && ((_a = node.scroll) === null || _a === void 0 ? void 0 : _a.wasRoot);\n}\n\nexport { cleanDirtyNodes, createProjectionNode, mixAxis, mixAxisDelta, mixBox, propagateDirtyNodes };\n","import { createProjectionNode } from './create-projection-node.mjs';\nimport { addDomEvent } from '../../events/add-dom-event.mjs';\n\nconst DocumentProjectionNode = createProjectionNode({\n    attachResizeListener: (ref, notify) => addDomEvent(ref, \"resize\", notify),\n    measureScroll: () => ({\n        x: document.documentElement.scrollLeft || document.body.scrollLeft,\n        y: document.documentElement.scrollTop || document.body.scrollTop,\n    }),\n    checkIsScrollRoot: () => true,\n});\n\nexport { DocumentProjectionNode };\n","import { createProjectionNode } from './create-projection-node.mjs';\nimport { DocumentProjectionNode } from './DocumentProjectionNode.mjs';\n\nconst rootProjectionNode = {\n    current: undefined,\n};\nconst HTMLProjectionNode = createProjectionNode({\n    measureScroll: (instance) => ({\n        x: instance.scrollLeft,\n        y: instance.scrollTop,\n    }),\n    defaultParent: () => {\n        if (!rootProjectionNode.current) {\n            const documentNode = new DocumentProjectionNode({});\n            documentNode.mount(window);\n            documentNode.setOptions({ layoutScroll: true });\n            rootProjectionNode.current = documentNode;\n        }\n        return rootProjectionNode.current;\n    },\n    resetTransform: (instance, value) => {\n        instance.style.transform = value !== undefined ? value : \"none\";\n    },\n    checkIsScrollRoot: (instance) => Boolean(window.getComputedStyle(instance).position === \"fixed\"),\n});\n\nexport { HTMLProjectionNode, rootProjectionNode };\n","import { DragGesture } from '../../gestures/drag/index.mjs';\nimport { PanGesture } from '../../gestures/pan/index.mjs';\nimport { MeasureLayout } from './layout/MeasureLayout.mjs';\nimport { HTMLProjectionNode } from '../../projection/node/HTMLProjectionNode.mjs';\n\nconst drag = {\n    pan: {\n        Feature: PanGesture,\n    },\n    drag: {\n        Feature: DragGesture,\n        ProjectionNode: HTMLProjectionNode,\n        MeasureLayout,\n    },\n};\n\nexport { drag };\n","import { Feature } from '../motion/features/Feature.mjs';\nimport { hover } from 'motion-dom';\nimport { extractEventInfo } from '../events/event-info.mjs';\nimport { frame } from '../frameloop/frame.mjs';\n\nfunction handleHoverEvent(node, event, lifecycle) {\n    const { props } = node;\n    if (node.animationState && props.whileHover) {\n        node.animationState.setActive(\"whileHover\", lifecycle === \"Start\");\n    }\n    const eventName = (\"onHover\" + lifecycle);\n    const callback = props[eventName];\n    if (callback) {\n        frame.postRender(() => callback(event, extractEventInfo(event)));\n    }\n}\nclass HoverGesture extends Feature {\n    mount() {\n        const { current } = this.node;\n        if (!current)\n            return;\n        this.unmount = hover(current, (startEvent) => {\n            handleHoverEvent(this.node, startEvent, \"Start\");\n            return (endEvent) => handleHoverEvent(this.node, endEvent, \"End\");\n        });\n    }\n    unmount() { }\n}\n\nexport { HoverGesture };\n","import { addDomEvent } from '../events/add-dom-event.mjs';\nimport { Feature } from '../motion/features/Feature.mjs';\nimport { pipe } from '../utils/pipe.mjs';\n\nclass FocusGesture extends Feature {\n    constructor() {\n        super(...arguments);\n        this.isActive = false;\n    }\n    onFocus() {\n        let isFocusVisible = false;\n        /**\n         * If this element doesn't match focus-visible then don't\n         * apply whileHover. But, if matches throws that focus-visible\n         * is not a valid selector then in that browser outline styles will be applied\n         * to the element by default and we want to match that behaviour with whileFocus.\n         */\n        try {\n            isFocusVisible = this.node.current.matches(\":focus-visible\");\n        }\n        catch (e) {\n            isFocusVisible = true;\n        }\n        if (!isFocusVisible || !this.node.animationState)\n            return;\n        this.node.animationState.setActive(\"whileFocus\", true);\n        this.isActive = true;\n    }\n    onBlur() {\n        if (!this.isActive || !this.node.animationState)\n            return;\n        this.node.animationState.setActive(\"whileFocus\", false);\n        this.isActive = false;\n    }\n    mount() {\n        this.unmount = pipe(addDomEvent(this.node.current, \"focus\", () => this.onFocus()), addDomEvent(this.node.current, \"blur\", () => this.onBlur()));\n    }\n    unmount() { }\n}\n\nexport { FocusGesture };\n","import { Feature } from '../motion/features/Feature.mjs';\nimport { press } from 'motion-dom';\nimport { extractEventInfo } from '../events/event-info.mjs';\nimport { frame } from '../frameloop/frame.mjs';\n\nfunction handlePressEvent(node, event, lifecycle) {\n    const { props } = node;\n    if (node.animationState && props.whileTap) {\n        node.animationState.setActive(\"whileTap\", lifecycle === \"Start\");\n    }\n    const eventName = (\"onTap\" + (lifecycle === \"End\" ? \"\" : lifecycle));\n    const callback = props[eventName];\n    if (callback) {\n        frame.postRender(() => callback(event, extractEventInfo(event)));\n    }\n}\nclass PressGesture extends Feature {\n    mount() {\n        const { current } = this.node;\n        if (!current)\n            return;\n        this.unmount = press(current, (startEvent) => {\n            handlePressEvent(this.node, startEvent, \"Start\");\n            return (endEvent, { success }) => handlePressEvent(this.node, endEvent, success ? \"End\" : \"Cancel\");\n        }, { useGlobalTarget: this.node.props.globalTapTarget });\n    }\n    unmount() { }\n}\n\nexport { PressGesture };\n","/**\n * Map an IntersectionHandler callback to an element. We only ever make one handler for one\n * element, so even though these handlers might all be triggered by different\n * observers, we can keep them in the same map.\n */\nconst observerCallbacks = new WeakMap();\n/**\n * Multiple observers can be created for multiple element/document roots. Each with\n * different settings. So here we store dictionaries of observers to each root,\n * using serialised settings (threshold/margin) as lookup keys.\n */\nconst observers = new WeakMap();\nconst fireObserverCallback = (entry) => {\n    const callback = observerCallbacks.get(entry.target);\n    callback && callback(entry);\n};\nconst fireAllObserverCallbacks = (entries) => {\n    entries.forEach(fireObserverCallback);\n};\nfunction initIntersectionObserver({ root, ...options }) {\n    const lookupRoot = root || document;\n    /**\n     * If we don't have an observer lookup map for this root, create one.\n     */\n    if (!observers.has(lookupRoot)) {\n        observers.set(lookupRoot, {});\n    }\n    const rootObservers = observers.get(lookupRoot);\n    const key = JSON.stringify(options);\n    /**\n     * If we don't have an observer for this combination of root and settings,\n     * create one.\n     */\n    if (!rootObservers[key]) {\n        rootObservers[key] = new IntersectionObserver(fireAllObserverCallbacks, { root, ...options });\n    }\n    return rootObservers[key];\n}\nfunction observeIntersection(element, options, callback) {\n    const rootInteresectionObserver = initIntersectionObserver(options);\n    observerCallbacks.set(element, callback);\n    rootInteresectionObserver.observe(element);\n    return () => {\n        observerCallbacks.delete(element);\n        rootInteresectionObserver.unobserve(element);\n    };\n}\n\nexport { observeIntersection };\n","import { Feature } from '../Feature.mjs';\nimport { observeIntersection } from './observers.mjs';\n\nconst thresholdNames = {\n    some: 0,\n    all: 1,\n};\nclass InViewFeature extends Feature {\n    constructor() {\n        super(...arguments);\n        this.hasEnteredView = false;\n        this.isInView = false;\n    }\n    startObserver() {\n        this.unmount();\n        const { viewport = {} } = this.node.getProps();\n        const { root, margin: rootMargin, amount = \"some\", once } = viewport;\n        const options = {\n            root: root ? root.current : undefined,\n            rootMargin,\n            threshold: typeof amount === \"number\" ? amount : thresholdNames[amount],\n        };\n        const onIntersectionUpdate = (entry) => {\n            const { isIntersecting } = entry;\n            /**\n             * If there's been no change in the viewport state, early return.\n             */\n            if (this.isInView === isIntersecting)\n                return;\n            this.isInView = isIntersecting;\n            /**\n             * Handle hasEnteredView. If this is only meant to run once, and\n             * element isn't visible, early return. Otherwise set hasEnteredView to true.\n             */\n            if (once && !isIntersecting && this.hasEnteredView) {\n                return;\n            }\n            else if (isIntersecting) {\n                this.hasEnteredView = true;\n            }\n            if (this.node.animationState) {\n                this.node.animationState.setActive(\"whileInView\", isIntersecting);\n            }\n            /**\n             * Use the latest committed props rather than the ones in scope\n             * when this observer is created\n             */\n            const { onViewportEnter, onViewportLeave } = this.node.getProps();\n            const callback = isIntersecting ? onViewportEnter : onViewportLeave;\n            callback && callback(entry);\n        };\n        return observeIntersection(this.node.current, options, onIntersectionUpdate);\n    }\n    mount() {\n        this.startObserver();\n    }\n    update() {\n        if (typeof IntersectionObserver === \"undefined\")\n            return;\n        const { props, prevProps } = this.node;\n        const hasOptionsChanged = [\"amount\", \"margin\", \"root\"].some(hasViewportOptionChanged(props, prevProps));\n        if (hasOptionsChanged) {\n            this.startObserver();\n        }\n    }\n    unmount() { }\n}\nfunction hasViewportOptionChanged({ viewport = {} }, { viewport: prevViewport = {} } = {}) {\n    return (name) => viewport[name] !== prevViewport[name];\n}\n\nexport { InViewFeature };\n","import { HoverGesture } from '../../gestures/hover.mjs';\nimport { FocusGesture } from '../../gestures/focus.mjs';\nimport { PressGesture } from '../../gestures/press.mjs';\nimport { InViewFeature } from './viewport/index.mjs';\n\nconst gestureAnimations = {\n    inView: {\n        Feature: InViewFeature,\n    },\n    tap: {\n        Feature: PressGesture,\n    },\n    focus: {\n        Feature: FocusGesture,\n    },\n    hover: {\n        Feature: HoverGesture,\n    },\n};\n\nexport { gestureAnimations };\n","import { HTMLProjectionNode } from '../../projection/node/HTMLProjectionNode.mjs';\nimport { MeasureLayout } from './layout/MeasureLayout.mjs';\n\nconst layout = {\n    layout: {\n        ProjectionNode: HTMLProjectionNode,\n        MeasureLayout,\n    },\n};\n\nexport { layout };\n","// Does this device prefer reduced motion? Returns `null` server-side.\nconst prefersReducedMotion = { current: null };\nconst hasReducedMotionListener = { current: false };\n\nexport { hasReducedMotionListener, prefersReducedMotion };\n","import { isBrowser } from '../is-browser.mjs';\nimport { hasReducedMotionListener, prefersReducedMotion } from './state.mjs';\n\nfunction initPrefersReducedMotion() {\n    hasReducedMotionListener.current = true;\n    if (!isBrowser)\n        return;\n    if (window.matchMedia) {\n        const motionMediaQuery = window.matchMedia(\"(prefers-reduced-motion)\");\n        const setReducedMotionPreferences = () => (prefersReducedMotion.current = motionMediaQuery.matches);\n        motionMediaQuery.addListener(setReducedMotionPreferences);\n        setReducedMotionPreferences();\n    }\n    else {\n        prefersReducedMotion.current = false;\n    }\n}\n\nexport { initPrefersReducedMotion };\n","import { color } from '../../../value/types/color/index.mjs';\nimport { complex } from '../../../value/types/complex/index.mjs';\nimport { dimensionValueTypes } from './dimensions.mjs';\nimport { testValueType } from './test.mjs';\n\n/**\n * A list of all ValueTypes\n */\nconst valueTypes = [...dimensionValueTypes, color, complex];\n/**\n * Tests a value against the list of ValueTypes\n */\nconst findValueType = (v) => valueTypes.find(testValueType(v));\n\nexport { findValueType };\n","const visualElementStore = new WeakMap();\n\nexport { visualElementStore };\n","import { warnOnce } from '../../utils/warn-once.mjs';\nimport { motionValue } from '../../value/index.mjs';\nimport { isMotionValue } from '../../value/utils/is-motion-value.mjs';\n\nfunction updateMotionValuesFromProps(element, next, prev) {\n    for (const key in next) {\n        const nextValue = next[key];\n        const prevValue = prev[key];\n        if (isMotionValue(nextValue)) {\n            /**\n             * If this is a motion value found in props or style, we want to add it\n             * to our visual element's motion value map.\n             */\n            element.addValue(key, nextValue);\n            /**\n             * Check the version of the incoming motion value with this version\n             * and warn against mismatches.\n             */\n            if (process.env.NODE_ENV === \"development\") {\n                warnOnce(nextValue.version === \"11.18.2\", `Attempting to mix Motion versions ${nextValue.version} with 11.18.2 may not work as expected.`);\n            }\n        }\n        else if (isMotionValue(prevValue)) {\n            /**\n             * If we're swapping from a motion value to a static value,\n             * create a new motion value from that\n             */\n            element.addValue(key, motionValue(nextValue, { owner: element }));\n        }\n        else if (prevValue !== nextValue) {\n            /**\n             * If this is a flat value that has changed, update the motion value\n             * or create one if it doesn't exist. We only want to do this if we're\n             * not handling the value with our animation state.\n             */\n            if (element.hasValue(key)) {\n                const existingValue = element.getValue(key);\n                if (existingValue.liveStyle === true) {\n                    existingValue.jump(nextValue);\n                }\n                else if (!existingValue.hasAnimated) {\n                    existingValue.set(nextValue);\n                }\n            }\n            else {\n                const latestValue = element.getStaticValue(key);\n                element.addValue(key, motionValue(latestValue !== undefined ? latestValue : nextValue, { owner: element }));\n            }\n        }\n    }\n    // Handle removed values\n    for (const key in prev) {\n        if (next[key] === undefined)\n            element.removeValue(key);\n    }\n    return next;\n}\n\nexport { updateMotionValuesFromProps };\n","import { time } from '../frameloop/sync-time.mjs';\nimport { featureDefinitions } from '../motion/features/definitions.mjs';\nimport { createBox } from '../projection/geometry/models.mjs';\nimport { isNumericalString } from '../utils/is-numerical-string.mjs';\nimport { isZeroValueString } from '../utils/is-zero-value-string.mjs';\nimport { initPrefersReducedMotion } from '../utils/reduced-motion/index.mjs';\nimport { hasReducedMotionListener, prefersReducedMotion } from '../utils/reduced-motion/state.mjs';\nimport { SubscriptionManager } from '../utils/subscription-manager.mjs';\nimport { warnOnce } from '../utils/warn-once.mjs';\nimport { motionValue } from '../value/index.mjs';\nimport { complex } from '../value/types/complex/index.mjs';\nimport { isMotionValue } from '../value/utils/is-motion-value.mjs';\nimport { getAnimatableNone } from './dom/value-types/animatable-none.mjs';\nimport { findValueType } from './dom/value-types/find.mjs';\nimport { transformProps } from './html/utils/keys-transform.mjs';\nimport { visualElementStore } from './store.mjs';\nimport { isControllingVariants, isVariantNode } from './utils/is-controlling-variants.mjs';\nimport { KeyframeResolver } from './utils/KeyframesResolver.mjs';\nimport { updateMotionValuesFromProps } from './utils/motion-values.mjs';\nimport { resolveVariantFromProps } from './utils/resolve-variants.mjs';\nimport { frame, cancelFrame } from '../frameloop/frame.mjs';\n\nconst propEventHandlers = [\n    \"AnimationStart\",\n    \"AnimationComplete\",\n    \"Update\",\n    \"BeforeLayoutMeasure\",\n    \"LayoutMeasure\",\n    \"LayoutAnimationStart\",\n    \"LayoutAnimationComplete\",\n];\n/**\n * A VisualElement is an imperative abstraction around UI elements such as\n * HTMLElement, SVGElement, Three.Object3D etc.\n */\nclass VisualElement {\n    /**\n     * This method takes React props and returns found MotionValues. For example, HTML\n     * MotionValues will be found within the style prop, whereas for Three.js within attribute arrays.\n     *\n     * This isn't an abstract method as it needs calling in the constructor, but it is\n     * intended to be one.\n     */\n    scrapeMotionValuesFromProps(_props, _prevProps, _visualElement) {\n        return {};\n    }\n    constructor({ parent, props, presenceContext, reducedMotionConfig, blockInitialAnimation, visualState, }, options = {}) {\n        /**\n         * A reference to the current underlying Instance, e.g. a HTMLElement\n         * or Three.Mesh etc.\n         */\n        this.current = null;\n        /**\n         * A set containing references to this VisualElement's children.\n         */\n        this.children = new Set();\n        /**\n         * Determine what role this visual element should take in the variant tree.\n         */\n        this.isVariantNode = false;\n        this.isControllingVariants = false;\n        /**\n         * Decides whether this VisualElement should animate in reduced motion\n         * mode.\n         *\n         * TODO: This is currently set on every individual VisualElement but feels\n         * like it could be set globally.\n         */\n        this.shouldReduceMotion = null;\n        /**\n         * A map of all motion values attached to this visual element. Motion\n         * values are source of truth for any given animated value. A motion\n         * value might be provided externally by the component via props.\n         */\n        this.values = new Map();\n        this.KeyframeResolver = KeyframeResolver;\n        /**\n         * Cleanup functions for active features (hover/tap/exit etc)\n         */\n        this.features = {};\n        /**\n         * A map of every subscription that binds the provided or generated\n         * motion values onChange listeners to this visual element.\n         */\n        this.valueSubscriptions = new Map();\n        /**\n         * A reference to the previously-provided motion values as returned\n         * from scrapeMotionValuesFromProps. We use the keys in here to determine\n         * if any motion values need to be removed after props are updated.\n         */\n        this.prevMotionValues = {};\n        /**\n         * An object containing a SubscriptionManager for each active event.\n         */\n        this.events = {};\n        /**\n         * An object containing an unsubscribe function for each prop event subscription.\n         * For example, every \"Update\" event can have multiple subscribers via\n         * VisualElement.on(), but only one of those can be defined via the onUpdate prop.\n         */\n        this.propEventSubscriptions = {};\n        this.notifyUpdate = () => this.notify(\"Update\", this.latestValues);\n        this.render = () => {\n            if (!this.current)\n                return;\n            this.triggerBuild();\n            this.renderInstance(this.current, this.renderState, this.props.style, this.projection);\n        };\n        this.renderScheduledAt = 0.0;\n        this.scheduleRender = () => {\n            const now = time.now();\n            if (this.renderScheduledAt < now) {\n                this.renderScheduledAt = now;\n                frame.render(this.render, false, true);\n            }\n        };\n        const { latestValues, renderState, onUpdate } = visualState;\n        this.onUpdate = onUpdate;\n        this.latestValues = latestValues;\n        this.baseTarget = { ...latestValues };\n        this.initialValues = props.initial ? { ...latestValues } : {};\n        this.renderState = renderState;\n        this.parent = parent;\n        this.props = props;\n        this.presenceContext = presenceContext;\n        this.depth = parent ? parent.depth + 1 : 0;\n        this.reducedMotionConfig = reducedMotionConfig;\n        this.options = options;\n        this.blockInitialAnimation = Boolean(blockInitialAnimation);\n        this.isControllingVariants = isControllingVariants(props);\n        this.isVariantNode = isVariantNode(props);\n        if (this.isVariantNode) {\n            this.variantChildren = new Set();\n        }\n        this.manuallyAnimateOnMount = Boolean(parent && parent.current);\n        /**\n         * Any motion values that are provided to the element when created\n         * aren't yet bound to the element, as this would technically be impure.\n         * However, we iterate through the motion values and set them to the\n         * initial values for this component.\n         *\n         * TODO: This is impure and we should look at changing this to run on mount.\n         * Doing so will break some tests but this isn't necessarily a breaking change,\n         * more a reflection of the test.\n         */\n        const { willChange, ...initialMotionValues } = this.scrapeMotionValuesFromProps(props, {}, this);\n        for (const key in initialMotionValues) {\n            const value = initialMotionValues[key];\n            if (latestValues[key] !== undefined && isMotionValue(value)) {\n                value.set(latestValues[key], false);\n            }\n        }\n    }\n    mount(instance) {\n        this.current = instance;\n        visualElementStore.set(instance, this);\n        if (this.projection && !this.projection.instance) {\n            this.projection.mount(instance);\n        }\n        if (this.parent && this.isVariantNode && !this.isControllingVariants) {\n            this.removeFromVariantTree = this.parent.addVariantChild(this);\n        }\n        this.values.forEach((value, key) => this.bindToMotionValue(key, value));\n        if (!hasReducedMotionListener.current) {\n            initPrefersReducedMotion();\n        }\n        this.shouldReduceMotion =\n            this.reducedMotionConfig === \"never\"\n                ? false\n                : this.reducedMotionConfig === \"always\"\n                    ? true\n                    : prefersReducedMotion.current;\n        if (process.env.NODE_ENV !== \"production\") {\n            warnOnce(this.shouldReduceMotion !== true, \"You have Reduced Motion enabled on your device. Animations may not appear as expected.\");\n        }\n        if (this.parent)\n            this.parent.children.add(this);\n        this.update(this.props, this.presenceContext);\n    }\n    unmount() {\n        visualElementStore.delete(this.current);\n        this.projection && this.projection.unmount();\n        cancelFrame(this.notifyUpdate);\n        cancelFrame(this.render);\n        this.valueSubscriptions.forEach((remove) => remove());\n        this.valueSubscriptions.clear();\n        this.removeFromVariantTree && this.removeFromVariantTree();\n        this.parent && this.parent.children.delete(this);\n        for (const key in this.events) {\n            this.events[key].clear();\n        }\n        for (const key in this.features) {\n            const feature = this.features[key];\n            if (feature) {\n                feature.unmount();\n                feature.isMounted = false;\n            }\n        }\n        this.current = null;\n    }\n    bindToMotionValue(key, value) {\n        if (this.valueSubscriptions.has(key)) {\n            this.valueSubscriptions.get(key)();\n        }\n        const valueIsTransform = transformProps.has(key);\n        const removeOnChange = value.on(\"change\", (latestValue) => {\n            this.latestValues[key] = latestValue;\n            this.props.onUpdate && frame.preRender(this.notifyUpdate);\n            if (valueIsTransform && this.projection) {\n                this.projection.isTransformDirty = true;\n            }\n        });\n        const removeOnRenderRequest = value.on(\"renderRequest\", this.scheduleRender);\n        let removeSyncCheck;\n        if (window.MotionCheckAppearSync) {\n            removeSyncCheck = window.MotionCheckAppearSync(this, key, value);\n        }\n        this.valueSubscriptions.set(key, () => {\n            removeOnChange();\n            removeOnRenderRequest();\n            if (removeSyncCheck)\n                removeSyncCheck();\n            if (value.owner)\n                value.stop();\n        });\n    }\n    sortNodePosition(other) {\n        /**\n         * If these nodes aren't even of the same type we can't compare their depth.\n         */\n        if (!this.current ||\n            !this.sortInstanceNodePosition ||\n            this.type !== other.type) {\n            return 0;\n        }\n        return this.sortInstanceNodePosition(this.current, other.current);\n    }\n    updateFeatures() {\n        let key = \"animation\";\n        for (key in featureDefinitions) {\n            const featureDefinition = featureDefinitions[key];\n            if (!featureDefinition)\n                continue;\n            const { isEnabled, Feature: FeatureConstructor } = featureDefinition;\n            /**\n             * If this feature is enabled but not active, make a new instance.\n             */\n            if (!this.features[key] &&\n                FeatureConstructor &&\n                isEnabled(this.props)) {\n                this.features[key] = new FeatureConstructor(this);\n            }\n            /**\n             * If we have a feature, mount or update it.\n             */\n            if (this.features[key]) {\n                const feature = this.features[key];\n                if (feature.isMounted) {\n                    feature.update();\n                }\n                else {\n                    feature.mount();\n                    feature.isMounted = true;\n                }\n            }\n        }\n    }\n    triggerBuild() {\n        this.build(this.renderState, this.latestValues, this.props);\n    }\n    /**\n     * Measure the current viewport box with or without transforms.\n     * Only measures axis-aligned boxes, rotate and skew must be manually\n     * removed with a re-render to work.\n     */\n    measureViewportBox() {\n        return this.current\n            ? this.measureInstanceViewportBox(this.current, this.props)\n            : createBox();\n    }\n    getStaticValue(key) {\n        return this.latestValues[key];\n    }\n    setStaticValue(key, value) {\n        this.latestValues[key] = value;\n    }\n    /**\n     * Update the provided props. Ensure any newly-added motion values are\n     * added to our map, old ones removed, and listeners updated.\n     */\n    update(props, presenceContext) {\n        if (props.transformTemplate || this.props.transformTemplate) {\n            this.scheduleRender();\n        }\n        this.prevProps = this.props;\n        this.props = props;\n        this.prevPresenceContext = this.presenceContext;\n        this.presenceContext = presenceContext;\n        /**\n         * Update prop event handlers ie onAnimationStart, onAnimationComplete\n         */\n        for (let i = 0; i < propEventHandlers.length; i++) {\n            const key = propEventHandlers[i];\n            if (this.propEventSubscriptions[key]) {\n                this.propEventSubscriptions[key]();\n                delete this.propEventSubscriptions[key];\n            }\n            const listenerName = (\"on\" + key);\n            const listener = props[listenerName];\n            if (listener) {\n                this.propEventSubscriptions[key] = this.on(key, listener);\n            }\n        }\n        this.prevMotionValues = updateMotionValuesFromProps(this, this.scrapeMotionValuesFromProps(props, this.prevProps, this), this.prevMotionValues);\n        if (this.handleChildMotionValue) {\n            this.handleChildMotionValue();\n        }\n        this.onUpdate && this.onUpdate(this);\n    }\n    getProps() {\n        return this.props;\n    }\n    /**\n     * Returns the variant definition with a given name.\n     */\n    getVariant(name) {\n        return this.props.variants ? this.props.variants[name] : undefined;\n    }\n    /**\n     * Returns the defined default transition on this component.\n     */\n    getDefaultTransition() {\n        return this.props.transition;\n    }\n    getTransformPagePoint() {\n        return this.props.transformPagePoint;\n    }\n    getClosestVariantNode() {\n        return this.isVariantNode\n            ? this\n            : this.parent\n                ? this.parent.getClosestVariantNode()\n                : undefined;\n    }\n    /**\n     * Add a child visual element to our set of children.\n     */\n    addVariantChild(child) {\n        const closestVariantNode = this.getClosestVariantNode();\n        if (closestVariantNode) {\n            closestVariantNode.variantChildren &&\n                closestVariantNode.variantChildren.add(child);\n            return () => closestVariantNode.variantChildren.delete(child);\n        }\n    }\n    /**\n     * Add a motion value and bind it to this visual element.\n     */\n    addValue(key, value) {\n        // Remove existing value if it exists\n        const existingValue = this.values.get(key);\n        if (value !== existingValue) {\n            if (existingValue)\n                this.removeValue(key);\n            this.bindToMotionValue(key, value);\n            this.values.set(key, value);\n            this.latestValues[key] = value.get();\n        }\n    }\n    /**\n     * Remove a motion value and unbind any active subscriptions.\n     */\n    removeValue(key) {\n        this.values.delete(key);\n        const unsubscribe = this.valueSubscriptions.get(key);\n        if (unsubscribe) {\n            unsubscribe();\n            this.valueSubscriptions.delete(key);\n        }\n        delete this.latestValues[key];\n        this.removeValueFromRenderState(key, this.renderState);\n    }\n    /**\n     * Check whether we have a motion value for this key\n     */\n    hasValue(key) {\n        return this.values.has(key);\n    }\n    getValue(key, defaultValue) {\n        if (this.props.values && this.props.values[key]) {\n            return this.props.values[key];\n        }\n        let value = this.values.get(key);\n        if (value === undefined && defaultValue !== undefined) {\n            value = motionValue(defaultValue === null ? undefined : defaultValue, { owner: this });\n            this.addValue(key, value);\n        }\n        return value;\n    }\n    /**\n     * If we're trying to animate to a previously unencountered value,\n     * we need to check for it in our state and as a last resort read it\n     * directly from the instance (which might have performance implications).\n     */\n    readValue(key, target) {\n        var _a;\n        let value = this.latestValues[key] !== undefined || !this.current\n            ? this.latestValues[key]\n            : (_a = this.getBaseTargetFromProps(this.props, key)) !== null && _a !== void 0 ? _a : this.readValueFromInstance(this.current, key, this.options);\n        if (value !== undefined && value !== null) {\n            if (typeof value === \"string\" &&\n                (isNumericalString(value) || isZeroValueString(value))) {\n                // If this is a number read as a string, ie \"0\" or \"200\", convert it to a number\n                value = parseFloat(value);\n            }\n            else if (!findValueType(value) && complex.test(target)) {\n                value = getAnimatableNone(key, target);\n            }\n            this.setBaseTarget(key, isMotionValue(value) ? value.get() : value);\n        }\n        return isMotionValue(value) ? value.get() : value;\n    }\n    /**\n     * Set the base target to later animate back to. This is currently\n     * only hydrated on creation and when we first read a value.\n     */\n    setBaseTarget(key, value) {\n        this.baseTarget[key] = value;\n    }\n    /**\n     * Find the base target for a value thats been removed from all animation\n     * props.\n     */\n    getBaseTarget(key) {\n        var _a;\n        const { initial } = this.props;\n        let valueFromInitial;\n        if (typeof initial === \"string\" || typeof initial === \"object\") {\n            const variant = resolveVariantFromProps(this.props, initial, (_a = this.presenceContext) === null || _a === void 0 ? void 0 : _a.custom);\n            if (variant) {\n                valueFromInitial = variant[key];\n            }\n        }\n        /**\n         * If this value still exists in the current initial variant, read that.\n         */\n        if (initial && valueFromInitial !== undefined) {\n            return valueFromInitial;\n        }\n        /**\n         * Alternatively, if this VisualElement config has defined a getBaseTarget\n         * so we can read the value from an alternative source, try that.\n         */\n        const target = this.getBaseTargetFromProps(this.props, key);\n        if (target !== undefined && !isMotionValue(target))\n            return target;\n        /**\n         * If the value was initially defined on initial, but it doesn't any more,\n         * return undefined. Otherwise return the value as initially read from the DOM.\n         */\n        return this.initialValues[key] !== undefined &&\n            valueFromInitial === undefined\n            ? undefined\n            : this.baseTarget[key];\n    }\n    on(eventName, callback) {\n        if (!this.events[eventName]) {\n            this.events[eventName] = new SubscriptionManager();\n        }\n        return this.events[eventName].add(callback);\n    }\n    notify(eventName, ...args) {\n        if (this.events[eventName]) {\n            this.events[eventName].notify(...args);\n        }\n    }\n}\n\nexport { VisualElement };\n","import { VisualElement } from '../VisualElement.mjs';\nimport { DOMKeyframesResolver } from './DOMKeyframesResolver.mjs';\nimport { isMotionValue } from '../../value/utils/is-motion-value.mjs';\n\nclass DOMVisualElement extends VisualElement {\n    constructor() {\n        super(...arguments);\n        this.KeyframeResolver = DOMKeyframesResolver;\n    }\n    sortInstanceNodePosition(a, b) {\n        /**\n         * compareDocumentPosition returns a bitmask, by using the bitwise &\n         * we're returning true if 2 in that bitmask is set to true. 2 is set\n         * to true if b preceeds a.\n         */\n        return a.compareDocumentPosition(b) & 2 ? 1 : -1;\n    }\n    getBaseTargetFromProps(props, key) {\n        return props.style\n            ? props.style[key]\n            : undefined;\n    }\n    removeValueFromRenderState(key, { vars, style }) {\n        delete vars[key];\n        delete style[key];\n    }\n    handleChildMotionValue() {\n        if (this.childSubscription) {\n            this.childSubscription();\n            delete this.childSubscription;\n        }\n        const { children } = this.props;\n        if (isMotionValue(children)) {\n            this.childSubscription = children.on(\"change\", (latest) => {\n                if (this.current) {\n                    this.current.textContent = `${latest}`;\n                }\n            });\n        }\n    }\n}\n\nexport { DOMVisualElement };\n","import { measureViewportBox } from '../../projection/utils/measure.mjs';\nimport { DOMVisualElement } from '../dom/DOMVisualElement.mjs';\nimport { isCSSVariableName } from '../dom/utils/is-css-variable.mjs';\nimport { getDefaultValueType } from '../dom/value-types/defaults.mjs';\nimport { buildHTMLStyles } from './utils/build-styles.mjs';\nimport { transformProps } from './utils/keys-transform.mjs';\nimport { renderHTML } from './utils/render.mjs';\nimport { scrapeMotionValuesFromProps } from './utils/scrape-motion-values.mjs';\n\nfunction getComputedStyle(element) {\n    return window.getComputedStyle(element);\n}\nclass HTMLVisualElement extends DOMVisualElement {\n    constructor() {\n        super(...arguments);\n        this.type = \"html\";\n        this.renderInstance = renderHTML;\n    }\n    readValueFromInstance(instance, key) {\n        if (transformProps.has(key)) {\n            const defaultType = getDefaultValueType(key);\n            return defaultType ? defaultType.default || 0 : 0;\n        }\n        else {\n            const computedStyle = getComputedStyle(instance);\n            const value = (isCSSVariableName(key)\n                ? computedStyle.getPropertyValue(key)\n                : computedStyle[key]) || 0;\n            return typeof value === \"string\" ? value.trim() : value;\n        }\n    }\n    measureInstanceViewportBox(instance, { transformPagePoint }) {\n        return measureViewportBox(instance, transformPagePoint);\n    }\n    build(renderState, latestValues, props) {\n        buildHTMLStyles(renderState, latestValues, props.transformTemplate);\n    }\n    scrapeMotionValuesFromProps(props, prevProps, visualElement) {\n        return scrapeMotionValuesFromProps(props, prevProps, visualElement);\n    }\n}\n\nexport { HTMLVisualElement, getComputedStyle };\n","import { createBox } from '../../projection/geometry/models.mjs';\nimport { DOMVisualElement } from '../dom/DOMVisualElement.mjs';\nimport { camelToDash } from '../dom/utils/camel-to-dash.mjs';\nimport { getDefaultValueType } from '../dom/value-types/defaults.mjs';\nimport { transformProps } from '../html/utils/keys-transform.mjs';\nimport { buildSVGAttrs } from './utils/build-attrs.mjs';\nimport { camelCaseAttributes } from './utils/camel-case-attrs.mjs';\nimport { isSVGTag } from './utils/is-svg-tag.mjs';\nimport { renderSVG } from './utils/render.mjs';\nimport { scrapeMotionValuesFromProps } from './utils/scrape-motion-values.mjs';\n\nclass SVGVisualElement extends DOMVisualElement {\n    constructor() {\n        super(...arguments);\n        this.type = \"svg\";\n        this.isSVGTag = false;\n        this.measureInstanceViewportBox = createBox;\n    }\n    getBaseTargetFromProps(props, key) {\n        return props[key];\n    }\n    readValueFromInstance(instance, key) {\n        if (transformProps.has(key)) {\n            const defaultType = getDefaultValueType(key);\n            return defaultType ? defaultType.default || 0 : 0;\n        }\n        key = !camelCaseAttributes.has(key) ? camelToDash(key) : key;\n        return instance.getAttribute(key);\n    }\n    scrapeMotionValuesFromProps(props, prevProps, visualElement) {\n        return scrapeMotionValuesFromProps(props, prevProps, visualElement);\n    }\n    build(renderState, latestValues, props) {\n        buildSVGAttrs(renderState, latestValues, this.isSVGTag, props.transformTemplate);\n    }\n    renderInstance(instance, renderState, styleProp, projection) {\n        renderSVG(instance, renderState, styleProp, projection);\n    }\n    mount(instance) {\n        this.isSVGTag = isSVGTag(instance.tagName);\n        super.mount(instance);\n    }\n}\n\nexport { SVGVisualElement };\n","import { Fragment } from 'react';\nimport { HTMLVisualElement } from '../html/HTMLVisualElement.mjs';\nimport { SVGVisualElement } from '../svg/SVGVisualElement.mjs';\nimport { isSVGComponent } from './utils/is-svg-component.mjs';\n\nconst createDomVisualElement = (Component, options) => {\n    return isSVGComponent(Component)\n        ? new SVGVisualElement(options)\n        : new HTMLVisualElement(options, {\n            allowProjection: Component !== Fragment,\n        });\n};\n\nexport { createDomVisualElement };\n","import { animations } from '../../../motion/features/animations.mjs';\nimport { drag } from '../../../motion/features/drag.mjs';\nimport { gestureAnimations } from '../../../motion/features/gestures.mjs';\nimport { layout } from '../../../motion/features/layout.mjs';\nimport { createMotionComponentFactory } from '../create-factory.mjs';\nimport { createDomVisualElement } from '../../dom/create-visual-element.mjs';\n\nconst createMotionComponent = /*@__PURE__*/ createMotionComponentFactory({\n    ...animations,\n    ...gestureAnimations,\n    ...drag,\n    ...layout,\n}, createDomVisualElement);\n\nexport { createMotionComponent };\n","import { createDOMMotionComponentProxy } from '../create-proxy.mjs';\nimport { createMotionComponent } from './create.mjs';\n\nconst motion = /*@__PURE__*/ createDOMMotionComponentProxy(createMotionComponent);\n\nexport { motion };\n","import ZVZO from '@/zvzo.svg'\nimport Close from '@/icon_close.svg'\nimport { motion } from 'framer-motion'\nimport { useState } from 'preact/hooks'\nimport { DiscountInfo } from '@/vo'\nimport { Locale } from '@/shared/dictionaries/type'\nimport useDictionary from '@/shared/hooks/useDictionary'\n\nconst FloatingDiscounInfoNotifier = ({\n  lang,\n  discountInfo,\n  alias = 'ZVZO',\n  showsDownloadCoupon,\n  onDownloadCoupon,\n}: {\n  lang: Locale\n  alias?: string\n  discountInfo: DiscountInfo\n  showsDownloadCoupon?: boolean\n  onDownloadCoupon?: () => void\n}) => {\n  const { t } = useDictionary({\n    lang,\n    path: '',\n  })\n  const [placement, setPlacement] = useState<'left' | 'right'>('right')\n\n  const [y, setY] = useState(Math.floor(window.innerHeight * 0.15) || 0)\n\n  const [tagStartPos, setTagStartPos] = useState<{ x: number; y: number }>({\n    x: 0,\n    y: 0,\n  })\n\n  const [dragging, setDragging] = useState(false)\n\n  const [isOpen, setIsOpen] = useState(true)\n\n  return (\n    <motion.div\n      style={{\n        position: 'fixed',\n        top: `${y}px`,\n        backgroundColor: 'rgba(255,255,255,0.8)',\n        backdropFilter: 'blur(20px)',\n        '-webkit-backdrop-filter': 'blur(20px)',\n        boxShadow: '0px 2px 8px rgba(0,0,0,0.2)',\n        padding: '14px',\n        touchAction: 'none',\n        userSelect: 'none',\n        display: 'flex',\n        zIndex: 2147483647,\n        borderRadius: '0px',\n        flexDirection: 'column',\n        ...(placement === 'left' && {\n          right: 'unset',\n          left: '-0px',\n          borderRadius: '0px 8px 8px 0px',\n        }),\n        ...(placement === 'right' && {\n          right: '-0px',\n          left: 'unset',\n          translateX: '0%',\n          borderRadius: '8px 0px 0px 8px',\n        }),\n        ...(isOpen && {\n          left: '20px',\n          right: '20px',\n          borderRadius: '8px',\n        }),\n        ...(dragging && {\n          borderRadius: '8px',\n        }),\n      }}\n      drag\n      dragMomentum={false}\n      dragSnapToOrigin\n      layout=\"position\"\n      initial={{\n        opacity: 0,\n      }}\n      animate={{\n        opacity: 1,\n      }}\n      exit={{\n        opacity: 0,\n      }}\n      transition={{\n        type: 'spring',\n        stiffness: 400,\n        damping: 40,\n      }}\n      onDragEnd={(_, info) => {\n        setDragging(false)\n\n        if (info.offset.x < -100 && placement === 'right') {\n          setPlacement('left')\n        }\n\n        if (info.offset.x > 100 && placement === 'left') {\n          setPlacement('right')\n        }\n\n        setY((prevY) =>\n          Math.min(\n            Math.max(prevY + info.offset.y, 50),\n            window.innerHeight - 200,\n          ),\n        )\n      }}\n      onTapStart={(_, info) => {\n        setTagStartPos({\n          x: info.point.x,\n          y: info.point.y,\n        })\n      }}\n      onTap={(_, info) => {\n        const isDrag =\n          Math.abs(info.point.x - tagStartPos.x) > 10 ||\n          Math.abs(info.point.y - tagStartPos.y) > 10\n\n        if (isDrag) {\n          return\n        }\n\n        setIsOpen(!isOpen)\n      }}\n      onDragStart={() => setDragging(true)}\n      whileDrag={{\n        scale: 1.1,\n      }}\n    >\n      {!isOpen && (\n        <>\n          <img\n            alt=\"ZVZO 로고\"\n            src={ZVZO}\n            width={42}\n            style={{\n              marginBottom: '4px',\n              width: '42px',\n            }}\n          />\n          <div\n            style={{\n              display: 'flex',\n              flexDirection: 'column',\n              marginBottom: '2px',\n            }}\n          >\n            {!!discountInfo.maxDiscountPercent && (\n              <p\n                style={{\n                  margin: 0,\n                  padding: 0,\n                  fontSize: '13px',\n                  fontStyle: 'normal',\n                  fontWeight: 500,\n                  lineHeight: '140%',\n                  color: '#757582',\n                  fontFamily: 'system-ui',\n                }}\n              >\n                {lang === 'ko'\n                  ? `최대 ${Math.round(discountInfo.maxDiscountPercent * 100)}% 할인`\n                  : `${Math.round(discountInfo.maxDiscountPercent * 100)}% off`}\n              </p>\n            )}\n            <p\n              style={{\n                margin: 0,\n                padding: 0,\n                fontSize: '13px',\n                fontStyle: 'normal',\n                fontWeight: 500,\n                lineHeight: '140%',\n                color: '#757582',\n                fontFamily: 'system-ui',\n              }}\n            >\n              ↳\n              {lang === 'ko'\n                ? `${discountInfo.maxDiscountedPrice.toLocaleString()}원}`\n                : `$${discountInfo.maxDiscountedPrice.toFixed(2).toLocaleString()}`}\n            </p>\n          </div>\n          <p\n            style={{\n              margin: 0,\n              padding: 0,\n              fontSize: '11px',\n              fontStyle: 'normal',\n              fontWeight: 400,\n              lineHeight: '140%',\n              color: '#A4A4AF',\n              fontFamily: 'system-ui',\n            }}\n          >\n            (\n            {lang === 'ko'\n              ? `${discountInfo.isNeedCoupon ? '쿠폰' : '할인'} 적용 시}`\n              : 'with a discount'}\n            )\n          </p>\n        </>\n      )}\n\n      {isOpen && !!discountInfo.maxDiscountPercent && (\n        <div\n          style={{\n            width: '100%',\n            display: 'flex',\n            flexDirection: 'column',\n            alignItems: 'start',\n            padding: '0px 6px',\n          }}\n        >\n          <p\n            style={{\n              margin: 0,\n              padding: 0,\n              fontSize: '15px',\n              fontStyle: 'normal',\n              fontWeight: 700,\n              lineHeight: '140%',\n              marginBottom: '8px',\n              color: '#000',\n              fontFamily: 'system-ui',\n            }}\n          >\n            {lang === 'ko'\n              ? `${alias} 님이 드리는 추가 할인 적용중`\n              : `Enjoy extra ${Math.round(discountInfo.maxDiscountPercent * 100)}% off!`}\n          </p>\n          <div\n            style={{\n              display: 'flex',\n              flexDirection: 'row',\n              alignItems: 'center',\n            }}\n          >\n            <p\n              style={{\n                margin: 0,\n                padding: 0,\n                fontSize: '14px',\n                fontStyle: 'normal',\n                fontWeight: 700,\n                lineHeight: '140%',\n                marginRight: '4px',\n                color: '#FF4800',\n                fontFamily: 'system-ui',\n              }}\n            >\n              {lang === 'ko'\n                ? `최대 ${Math.round(discountInfo.maxDiscountPercent * 100)}%`\n                : `${Math.round(discountInfo.maxDiscountPercent * 100)}% off`}\n            </p>\n            <p\n              style={{\n                margin: 0,\n                padding: 0,\n                fontSize: '16px',\n                fontStyle: 'normal',\n                fontWeight: 700,\n                lineHeight: '140%',\n                marginRight: '4px',\n                color: '#303033',\n                fontFamily: 'system-ui',\n              }}\n            >\n              {lang === 'ko'\n                ? `${discountInfo.maxDiscountedPrice.toLocaleString()}원`\n                : `$${discountInfo.maxDiscountedPrice.toFixed(2).toLocaleString()}`}\n            </p>\n            <p\n              style={{\n                margin: 0,\n                padding: 0,\n                fontSize: '11px',\n                fontStyle: 'normal',\n                fontWeight: 400,\n                lineHeight: '140%',\n                color: '#A4A4AF',\n                fontFamily: 'system-ui',\n              }}\n            >\n              (\n              {lang === 'ko'\n                ? `${discountInfo.isNeedCoupon ? '쿠폰' : '할인'} 적용 시}`\n                : 'with a discount'}\n              )\n            </p>\n          </div>\n\n          <p\n            style={{\n              margin: 0,\n              padding: 0,\n              fontSize: '13px',\n              fontStyle: 'normal',\n              fontWeight: 500,\n              lineHeight: '140%',\n              color: '#A4A4AF',\n              textDecoration: 'line-through',\n              fontFamily: 'system-ui',\n            }}\n          >\n            {lang === 'ko'\n              ? `${discountInfo.originalPrice.toLocaleString()}원`\n              : `$${discountInfo.originalPrice.toFixed(2).toLocaleString()}`}\n          </p>\n\n          {showsDownloadCoupon && (\n            <div\n              style={{\n                marginTop: '8px',\n                boxSizing: 'border-box',\n                padding: '8px 10px',\n                backgroundColor: '#000',\n                display: 'flex',\n                flexDirection: 'row',\n                alignItems: 'center',\n                cursor: 'pointer',\n                pointerEvents: 'auto',\n                touchAction: 'auto',\n                userSelect: 'auto',\n              }}\n              onPointerDown={(e) => {\n                e.stopImmediatePropagation()\n                e.preventDefault()\n\n                onDownloadCoupon?.()\n              }}\n            >\n              <p\n                style={{\n                  margin: 0,\n                  padding: 0,\n                  fontSize: '10px',\n                  fontStyle: 'normal',\n                  fontWeight: 500,\n                  lineHeight: '140%',\n                  color: '#FFF',\n                  fontFamily: 'system-ui',\n                }}\n              >\n                {lang === 'ko' ? '쿠폰 받기' : 'coupon'}\n              </p>\n\n              <div\n                style={{\n                  color: '#FFF',\n                  width: '14px',\n                  height: '14px',\n                  marginLeft: '2px',\n                }}\n              >\n                <svg\n                  viewBox=\"0 0 14 14\"\n                  fill=\"none\"\n                  xmlns=\"http://www.w3.org/2000/svg\"\n                >\n                  <g id=\"ic-download\">\n                    <path\n                      id=\"Vector (Stroke)\"\n                      fillRule=\"evenodd\"\n                      clipRule=\"evenodd\"\n                      d=\"M7 1.3125C7.24162 1.3125 7.4375 1.50838 7.4375 1.75L7.4375 8.86045L9.60731 6.69064C9.77816 6.51979 10.0552 6.51979 10.226 6.69064C10.3969 6.86149 10.3969 7.1385 10.226 7.30936L7.30936 10.226C7.22731 10.3081 7.11603 10.3542 7 10.3542C6.88397 10.3542 6.77269 10.3081 6.69064 10.226L3.77397 7.30936C3.60312 7.1385 3.60312 6.86149 3.77397 6.69064C3.94483 6.51979 4.22184 6.51979 4.39269 6.69064L6.5625 8.86045L6.5625 1.75C6.5625 1.50838 6.75838 1.3125 7 1.3125ZM3.0625 12.25C3.0625 12.0084 3.25838 11.8125 3.5 11.8125H10.5C10.7416 11.8125 10.9375 12.0084 10.9375 12.25C10.9375 12.4916 10.7416 12.6875 10.5 12.6875H3.5C3.25838 12.6875 3.0625 12.4916 3.0625 12.25Z\"\n                      fill=\"currentColor\"\n                    />\n                  </g>\n                </svg>\n              </div>\n            </div>\n          )}\n\n          <img\n            alt=\"닫기\"\n            src={Close}\n            width={20}\n            height={20}\n            style={{\n              position: 'absolute',\n              top: '12px',\n              right: '16px',\n              width: '20px',\n              height: '20px',\n            }}\n          />\n        </div>\n      )}\n    </motion.div>\n  )\n}\n\nexport default FloatingDiscounInfoNotifier\n","export const isFolnua = () => {\n  return window?.CAFE24API?.MALL_ID === 'folnua1'\n}\n","import { SolutionService } from '@/service/cafe24'\nimport { debugService } from '@/service/debug'\nimport { useEffect } from 'preact/hooks'\nimport { suspend } from 'suspend-react'\nimport DiscountInfoModal from './DiscountInfoModal'\nimport FloatingDiscounInfoNotifier from './FloatingDiscounInfoNotifier'\nimport { isFolnua } from '@/shared/folnua'\nimport { Locale } from '@/shared/dictionaries/type'\n\nconst ProductDetailDiscountNotifier = ({\n  solutionService,\n  lang,\n}: {\n  solutionService: SolutionService\n  lang: Locale\n}) => {\n  const discountInfo = suspend(\n    () => solutionService.getProductDiscountInfo(),\n    ['product-discount-info'],\n  )\n\n  if (!discountInfo) {\n    return null\n  }\n\n  const handleCouponDownload = () => {\n    if (!discountInfo.discountInfo.couponDownloadURI) {\n      return\n    }\n\n    if (isFolnua()) {\n      location.href = `/exec/front/newcoupon/IssueDownload?coupon_no=6078747263000000122&opener_url=${encodeURIComponent(\n        window.location.href,\n      )}`\n      return\n    }\n\n    if (discountInfo.discountInfo.couponDownloadURI.includes('?')) {\n      location.href = `${\n        discountInfo.discountInfo.couponDownloadURI\n      }&returnUrl=${encodeURIComponent(window.location.href)}`\n    } else {\n      location.href = `${\n        discountInfo.discountInfo.couponDownloadURI\n      }?returnUrl=${encodeURIComponent(window.location.href)}`\n    }\n  }\n\n  useEffect(() => {\n    debugService.log('할인 정보를 발견했어요, 할인 앱을 불러올게요')\n  }, [])\n\n  return (\n    <>\n      <FloatingDiscounInfoNotifier\n        lang={lang}\n        discountInfo={discountInfo.discountInfo}\n        alias={discountInfo.creatorAlias!}\n        showsDownloadCoupon={\n          isFolnua() || discountInfo.discountInfo.isNeedCoupon\n        }\n        onDownloadCoupon={handleCouponDownload}\n      />\n\n      <DiscountInfoModal\n        productID={discountInfo.productID}\n        discountInfo={discountInfo.discountInfo}\n        alias={discountInfo.creatorAlias!}\n        lang={lang}\n      />\n    </>\n  )\n}\n\nexport default ProductDetailDiscountNotifier\n","import { ComponentType, ReactNode, Suspense } from 'preact/compat'\n\nexport function withSuspense<Props extends object>(\n  WrappedComponent: ComponentType<Props>,\n  suspenseProps: {\n    fallback?: ReactNode\n  }\n): ComponentType<Props> {\n  const Wrapped = (props: Props) => {\n    return (\n      <Suspense fallback={suspenseProps.fallback}>\n        <WrappedComponent {...props} />\n      </Suspense>\n    )\n  }\n\n  const name =\n    WrappedComponent.displayName || WrappedComponent.name || 'Unknown'\n  Wrapped.displayName = `withSuspense(${name})`\n\n  return Wrapped\n}\n","const TextInput = ({\n  required,\n  label,\n  placeholder,\n  onChange,\n  inputMode,\n  value,\n}: {\n  required: boolean\n  label: string\n  inputMode?:\n    | 'text'\n    | 'none'\n    | 'tel'\n    | 'url'\n    | 'email'\n    | 'numeric'\n    | 'decimal'\n    | 'search'\n  placeholder?: string\n  value?: string\n  onChange?: (text: string) => void\n}) => {\n  return (\n    <div\n      style={{\n        display: 'flex',\n        width: '100%',\n        flexDirection: 'column',\n      }}\n    >\n      <div\n        style={{\n          display: 'flex',\n          flexDirection: 'row',\n          alignItems: 'center',\n          marginBottom: '4px',\n        }}\n      >\n        <p\n          style={{\n            margin: 0,\n            padding: 0,\n            fontSize: '14px',\n            fontWeight: 400,\n            lineHeight: '140%',\n            color: '#303033',\n            fontFamily: 'system-ui',\n          }}\n        >\n          {label}\n        </p>\n        {required && (\n          <p\n            style={{\n              margin: 0,\n              padding: 0,\n              fontSize: '14px',\n              fontWeight: 400,\n              lineHeight: '140%',\n              color: '#FF4800',\n              fontFamily: 'system-ui',\n              marginLeft: '4px',\n            }}\n          >\n            *\n          </p>\n        )}\n      </div>\n      <input\n        inputMode={inputMode}\n        style={{\n          width: '100%',\n          boxSizing: 'border-box',\n          height: '46px',\n          border: '1px solid #D8D8DD',\n          borderRadius: '4px',\n          padding: '13px 16px',\n          outline: 'none',\n          fontSize: '14px',\n          fontWeight: 400,\n          color: '#303033',\n        }}\n        onChange={(e) => onChange?.((e.target as any)!.value!)}\n        value={value}\n        placeholder={placeholder}\n      />\n    </div>\n  )\n}\n\nexport default TextInput\n","import { SolutionService } from '@/service/cafe24'\nimport { debugService } from '@/service/debug'\nimport { useState } from 'preact/hooks'\nimport TextInput from './TextInput'\n\nconst PhoneBottomSheet = ({\n  onDone,\n  onExit,\n  solutionService,\n}: {\n  onDone?: () => void\n  onExit?: () => void\n  solutionService: SolutionService\n}) => {\n  const [phone, setPhone] = useState('' as string)\n\n  const [pending, setPending] = useState(false)\n\n  const handleSubmit = async () => {\n    if (pending) {\n      return\n    }\n\n    setPending(true)\n\n    if (!phone?.trim()) {\n      alert('휴대폰 번호를 입력해 주세요')\n      return\n    }\n\n    try {\n      await solutionService.signIn({\n        phone: phone.replace(/[^0-9]/g, ''),\n      })\n    } catch {\n      debugService.log('가입에 실패헀어요')\n    } finally {\n      onDone?.()\n\n      setPending(false)\n    }\n  }\n\n  return (\n    <div\n      style={{\n        position: 'fixed',\n        top: 0,\n        left: 0,\n        right: 0,\n        bottom: 0,\n        background: 'rgba(0, 0, 0, 0.4)',\n        zIndex: 2147483647,\n      }}\n    >\n      <div\n        style={{\n          position: 'absolute',\n          left: '0px',\n          right: '0px',\n          bottom: '0px',\n          borderRadius: '20px 20px 0px 0px',\n          background: 'white',\n          boxShadow: '0px -1px 8px rgba(0,0,0,0.1)',\n          paddingTop: '24px',\n          display: 'flex',\n          flexDirection: 'column',\n        }}\n      >\n        <div\n          style={{\n            width: '100%',\n            height: '48px',\n            display: 'flex',\n            justifyContent: 'center',\n            alignItems: 'center',\n            position: 'relative',\n          }}\n        >\n          <p\n            style={{\n              margin: 0,\n              padding: 0,\n              fontSize: '20px',\n              fontWeight: 800,\n              lineHeight: '140%',\n              color: '#303033',\n              fontFamily: 'system-ui',\n            }}\n          >\n            ZVZO 첫 구매 • 3초 본인인증\n          </p>\n          <div\n            style={{\n              position: 'absolute',\n              top: '0px',\n              right: '0px',\n              bottom: '0px',\n              padding: '0px 20px',\n              display: 'flex',\n              justifyContent: 'center',\n              alignItems: 'center',\n              cursor: 'pointer',\n            }}\n            onClick={onExit}\n          >\n            <div\n              style={{\n                width: '20px',\n                height: '20px',\n                color: '#A4A4AF',\n                marginBottom: '4px',\n              }}\n            >\n              <svg\n                viewBox=\"0 0 24 24\"\n                fill=\"none\"\n                xmlns=\"http://www.w3.org/2000/svg\"\n              >\n                <g id=\"weight=regular, fill=false\">\n                  <path\n                    id=\"vector\"\n                    fill-rule=\"evenodd\"\n                    clip-rule=\"evenodd\"\n                    d=\"M4.43433 4.43432C4.74675 4.1219 5.25328 4.1219 5.5657 4.43432L12 10.8686L18.4343 4.43432C18.7467 4.1219 19.2533 4.1219 19.5657 4.43432C19.8781 4.74673 19.8781 5.25327 19.5657 5.56569L13.1314 12L19.5657 18.4343C19.8781 18.7467 19.8781 19.2533 19.5657 19.5657C19.2533 19.8781 18.7467 19.8781 18.4343 19.5657L12 13.1314L5.5657 19.5657C5.25328 19.8781 4.74675 19.8781 4.43433 19.5657C4.12191 19.2533 4.12191 18.7467 4.43433 18.4343L10.8686 12L4.43433 5.56569C4.12191 5.25327 4.12191 4.74673 4.43433 4.43432Z\"\n                    fill=\"currentColor\"\n                  />\n                </g>\n              </svg>\n            </div>\n          </div>\n        </div>\n\n        <div\n          style={{\n            paddingTop: '20px',\n            paddingLeft: '20px',\n            paddingRight: '20px',\n            paddingBottom: '40px',\n            display: 'flex',\n            justifyContent: 'center',\n            alignItems: 'center',\n          }}\n        >\n          <TextInput\n            label=\"휴대폰 번호\"\n            placeholder=\"- 를 제외한 휴대폰 번호를 입력해 주세요\"\n            inputMode=\"tel\"\n            value={phone}\n            onChange={(text) => setPhone(text)}\n            required\n          />\n        </div>\n\n        <div\n          style={{\n            padding: '12px 20px 24px 20px',\n            borderTop: '1px solid #ECECF1',\n          }}\n        >\n          <div\n            style={{\n              width: '100%',\n              height: 52,\n              display: 'flex',\n              justifyContent: 'center',\n              alignItems: 'center',\n              background: '#000000',\n            }}\n            onClick={handleSubmit}\n          >\n            <p\n              style={{\n                margin: 0,\n                padding: 0,\n                fontSize: '16px',\n                fontWeight: 700,\n                lineHeight: '140%',\n                color: 'white',\n                fontFamily: 'system-ui',\n              }}\n            >\n              네이버 ID로 3초만에 인증\n            </p>\n          </div>\n        </div>\n      </div>\n    </div>\n  )\n}\n\nexport default PhoneBottomSheet\n","import { SolutionService } from '@/service/cafe24'\nimport { debugService } from '@/service/debug'\nimport { useOverlay } from '@toss/use-overlay'\nimport { useEffect, useState } from 'preact/hooks'\nimport { withSuspense } from '../shared/suspense'\nimport PhoneBottomSheet from './PhoneBottomSheet'\nimport { suspend } from 'suspend-react'\nimport { logger } from '@/shared/logger'\nimport pRetry from 'p-retry'\nimport { Locale } from '@/shared/dictionaries/type'\n\nconst Cafe24ExternalPaymentBlocker = ({\n  solutionService,\n  lang,\n}: {\n  solutionService: SolutionService\n  lang: Locale\n}) => {\n  const [tempCount, setTempCount] = useState(0)\n\n  const refetch = () => setTempCount((prev) => prev + 1)\n\n  const isAuthorized = suspend(async () => {\n    return await solutionService.isAuthorizedUser()\n  }, ['payment-blocker', tempCount])\n\n  const overlay = useOverlay()\n\n  useEffect(() => {\n    async function attachBlocker() {\n      const buttons = await solutionService.getPayButton().catch(() => null)\n      if (!buttons || buttons.length === 0) {\n        debugService.log('간편 결제 버튼을 찾지 못 했어요')\n        return\n      }\n\n      // https://nonmute.co/ 에 한하여 네이버페이 블락커 제거\n      if (typeof location !== 'undefined' && location.host === 'nonmute.co') {\n        return\n      }\n\n      debugService.log('간편 결제 버튼을 제어할게요')\n\n      const discountInfo = await solutionService\n        .getProductDiscountInfo()\n        .catch(() => null)\n\n      buttons.forEach(async (button) => {\n        const run = async () => {\n          const container = document.querySelector?.(\n            button.container,\n          ) as HTMLElement\n\n          if (!container) {\n            throw new Error('컨테이너 못 찾음')\n          }\n\n          const canParent = ['absolute', 'fixed'].includes(\n            window.getComputedStyle(container).getPropertyValue('position'),\n          )\n\n          if (!canParent) {\n            container.style.position = 'relative'\n          }\n\n          const blocker = document.createElement('div')\n          blocker.style.setProperty('position', 'absolute', 'important')\n          blocker.style.setProperty('inset', '0px', 'important')\n          blocker.style.cursor = 'pointer'\n\n          container.appendChild(blocker)\n\n          const clickableButton = button.button\n            ? (container.querySelector(button.button) as HTMLElement)\n            : container\n\n          blocker.addEventListener('click', async (e) => {\n            e.preventDefault()\n            e.stopImmediatePropagation()\n\n            // TOOD: 분리해야 함\n            logger.log(\n              'click pay button',\n              {},\n              {\n                type: 'interaction',\n              },\n            )\n\n            if (\n              discountInfo &&\n              !confirm(\n                '\"비회원 구매(간편 결제)\" 로 결제 시 ZVZO 단독 할인 적용이 되지 않습니다.\\n결제를 계속 진행하시겠습니까?',\n              )\n            ) {\n              return\n            }\n\n            if (isAuthorized) {\n              clickableButton?.click()\n              return\n            }\n\n            overlay.open(({ exit }) => {\n              const handleExit = () => {\n                exit()\n              }\n\n              const handleDone = () => {\n                clickableButton?.click()\n\n                refetch()\n\n                handleExit()\n              }\n\n              return (\n                <PhoneBottomSheet\n                  solutionService={solutionService}\n                  onDone={handleDone}\n                  onExit={handleExit}\n                />\n              )\n            })\n          })\n        }\n\n        await pRetry(run, {\n          retries: 5,\n          minTimeout: 2000,\n          maxRetryTime: 2000,\n          onFailedAttempt: () => {},\n        }).catch(() => {})\n      })\n    }\n\n    attachBlocker()\n  }, [])\n\n  return <></>\n}\n\nexport default withSuspense(Cafe24ExternalPaymentBlocker, {\n  fallback: <></>,\n})\n","'use strict';\n\n/** @type {import('./type')} */\nmodule.exports = TypeError;\n","export default {}","var hasMap = typeof Map === 'function' && Map.prototype;\nvar mapSizeDescriptor = Object.getOwnPropertyDescriptor && hasMap ? Object.getOwnPropertyDescriptor(Map.prototype, 'size') : null;\nvar mapSize = hasMap && mapSizeDescriptor && typeof mapSizeDescriptor.get === 'function' ? mapSizeDescriptor.get : null;\nvar mapForEach = hasMap && Map.prototype.forEach;\nvar hasSet = typeof Set === 'function' && Set.prototype;\nvar setSizeDescriptor = Object.getOwnPropertyDescriptor && hasSet ? Object.getOwnPropertyDescriptor(Set.prototype, 'size') : null;\nvar setSize = hasSet && setSizeDescriptor && typeof setSizeDescriptor.get === 'function' ? setSizeDescriptor.get : null;\nvar setForEach = hasSet && Set.prototype.forEach;\nvar hasWeakMap = typeof WeakMap === 'function' && WeakMap.prototype;\nvar weakMapHas = hasWeakMap ? WeakMap.prototype.has : null;\nvar hasWeakSet = typeof WeakSet === 'function' && WeakSet.prototype;\nvar weakSetHas = hasWeakSet ? WeakSet.prototype.has : null;\nvar hasWeakRef = typeof WeakRef === 'function' && WeakRef.prototype;\nvar weakRefDeref = hasWeakRef ? WeakRef.prototype.deref : null;\nvar booleanValueOf = Boolean.prototype.valueOf;\nvar objectToString = Object.prototype.toString;\nvar functionToString = Function.prototype.toString;\nvar $match = String.prototype.match;\nvar $slice = String.prototype.slice;\nvar $replace = String.prototype.replace;\nvar $toUpperCase = String.prototype.toUpperCase;\nvar $toLowerCase = String.prototype.toLowerCase;\nvar $test = RegExp.prototype.test;\nvar $concat = Array.prototype.concat;\nvar $join = Array.prototype.join;\nvar $arrSlice = Array.prototype.slice;\nvar $floor = Math.floor;\nvar bigIntValueOf = typeof BigInt === 'function' ? BigInt.prototype.valueOf : null;\nvar gOPS = Object.getOwnPropertySymbols;\nvar symToString = typeof Symbol === 'function' && typeof Symbol.iterator === 'symbol' ? Symbol.prototype.toString : null;\nvar hasShammedSymbols = typeof Symbol === 'function' && typeof Symbol.iterator === 'object';\n// ie, `has-tostringtag/shams\nvar toStringTag = typeof Symbol === 'function' && Symbol.toStringTag && (typeof Symbol.toStringTag === hasShammedSymbols ? 'object' : 'symbol')\n    ? Symbol.toStringTag\n    : null;\nvar isEnumerable = Object.prototype.propertyIsEnumerable;\n\nvar gPO = (typeof Reflect === 'function' ? Reflect.getPrototypeOf : Object.getPrototypeOf) || (\n    [].__proto__ === Array.prototype // eslint-disable-line no-proto\n        ? function (O) {\n            return O.__proto__; // eslint-disable-line no-proto\n        }\n        : null\n);\n\nfunction addNumericSeparator(num, str) {\n    if (\n        num === Infinity\n        || num === -Infinity\n        || num !== num\n        || (num && num > -1000 && num < 1000)\n        || $test.call(/e/, str)\n    ) {\n        return str;\n    }\n    var sepRegex = /[0-9](?=(?:[0-9]{3})+(?![0-9]))/g;\n    if (typeof num === 'number') {\n        var int = num < 0 ? -$floor(-num) : $floor(num); // trunc(num)\n        if (int !== num) {\n            var intStr = String(int);\n            var dec = $slice.call(str, intStr.length + 1);\n            return $replace.call(intStr, sepRegex, '$&_') + '.' + $replace.call($replace.call(dec, /([0-9]{3})/g, '$&_'), /_$/, '');\n        }\n    }\n    return $replace.call(str, sepRegex, '$&_');\n}\n\nvar utilInspect = require('./util.inspect');\nvar inspectCustom = utilInspect.custom;\nvar inspectSymbol = isSymbol(inspectCustom) ? inspectCustom : null;\n\nvar quotes = {\n    __proto__: null,\n    'double': '\"',\n    single: \"'\"\n};\nvar quoteREs = {\n    __proto__: null,\n    'double': /([\"\\\\])/g,\n    single: /(['\\\\])/g\n};\n\nmodule.exports = function inspect_(obj, options, depth, seen) {\n    var opts = options || {};\n\n    if (has(opts, 'quoteStyle') && !has(quotes, opts.quoteStyle)) {\n        throw new TypeError('option \"quoteStyle\" must be \"single\" or \"double\"');\n    }\n    if (\n        has(opts, 'maxStringLength') && (typeof opts.maxStringLength === 'number'\n            ? opts.maxStringLength < 0 && opts.maxStringLength !== Infinity\n            : opts.maxStringLength !== null\n        )\n    ) {\n        throw new TypeError('option \"maxStringLength\", if provided, must be a positive integer, Infinity, or `null`');\n    }\n    var customInspect = has(opts, 'customInspect') ? opts.customInspect : true;\n    if (typeof customInspect !== 'boolean' && customInspect !== 'symbol') {\n        throw new TypeError('option \"customInspect\", if provided, must be `true`, `false`, or `\\'symbol\\'`');\n    }\n\n    if (\n        has(opts, 'indent')\n        && opts.indent !== null\n        && opts.indent !== '\\t'\n        && !(parseInt(opts.indent, 10) === opts.indent && opts.indent > 0)\n    ) {\n        throw new TypeError('option \"indent\" must be \"\\\\t\", an integer > 0, or `null`');\n    }\n    if (has(opts, 'numericSeparator') && typeof opts.numericSeparator !== 'boolean') {\n        throw new TypeError('option \"numericSeparator\", if provided, must be `true` or `false`');\n    }\n    var numericSeparator = opts.numericSeparator;\n\n    if (typeof obj === 'undefined') {\n        return 'undefined';\n    }\n    if (obj === null) {\n        return 'null';\n    }\n    if (typeof obj === 'boolean') {\n        return obj ? 'true' : 'false';\n    }\n\n    if (typeof obj === 'string') {\n        return inspectString(obj, opts);\n    }\n    if (typeof obj === 'number') {\n        if (obj === 0) {\n            return Infinity / obj > 0 ? '0' : '-0';\n        }\n        var str = String(obj);\n        return numericSeparator ? addNumericSeparator(obj, str) : str;\n    }\n    if (typeof obj === 'bigint') {\n        var bigIntStr = String(obj) + 'n';\n        return numericSeparator ? addNumericSeparator(obj, bigIntStr) : bigIntStr;\n    }\n\n    var maxDepth = typeof opts.depth === 'undefined' ? 5 : opts.depth;\n    if (typeof depth === 'undefined') { depth = 0; }\n    if (depth >= maxDepth && maxDepth > 0 && typeof obj === 'object') {\n        return isArray(obj) ? '[Array]' : '[Object]';\n    }\n\n    var indent = getIndent(opts, depth);\n\n    if (typeof seen === 'undefined') {\n        seen = [];\n    } else if (indexOf(seen, obj) >= 0) {\n        return '[Circular]';\n    }\n\n    function inspect(value, from, noIndent) {\n        if (from) {\n            seen = $arrSlice.call(seen);\n            seen.push(from);\n        }\n        if (noIndent) {\n            var newOpts = {\n                depth: opts.depth\n            };\n            if (has(opts, 'quoteStyle')) {\n                newOpts.quoteStyle = opts.quoteStyle;\n            }\n            return inspect_(value, newOpts, depth + 1, seen);\n        }\n        return inspect_(value, opts, depth + 1, seen);\n    }\n\n    if (typeof obj === 'function' && !isRegExp(obj)) { // in older engines, regexes are callable\n        var name = nameOf(obj);\n        var keys = arrObjKeys(obj, inspect);\n        return '[Function' + (name ? ': ' + name : ' (anonymous)') + ']' + (keys.length > 0 ? ' { ' + $join.call(keys, ', ') + ' }' : '');\n    }\n    if (isSymbol(obj)) {\n        var symString = hasShammedSymbols ? $replace.call(String(obj), /^(Symbol\\(.*\\))_[^)]*$/, '$1') : symToString.call(obj);\n        return typeof obj === 'object' && !hasShammedSymbols ? markBoxed(symString) : symString;\n    }\n    if (isElement(obj)) {\n        var s = '<' + $toLowerCase.call(String(obj.nodeName));\n        var attrs = obj.attributes || [];\n        for (var i = 0; i < attrs.length; i++) {\n            s += ' ' + attrs[i].name + '=' + wrapQuotes(quote(attrs[i].value), 'double', opts);\n        }\n        s += '>';\n        if (obj.childNodes && obj.childNodes.length) { s += '...'; }\n        s += '</' + $toLowerCase.call(String(obj.nodeName)) + '>';\n        return s;\n    }\n    if (isArray(obj)) {\n        if (obj.length === 0) { return '[]'; }\n        var xs = arrObjKeys(obj, inspect);\n        if (indent && !singleLineValues(xs)) {\n            return '[' + indentedJoin(xs, indent) + ']';\n        }\n        return '[ ' + $join.call(xs, ', ') + ' ]';\n    }\n    if (isError(obj)) {\n        var parts = arrObjKeys(obj, inspect);\n        if (!('cause' in Error.prototype) && 'cause' in obj && !isEnumerable.call(obj, 'cause')) {\n            return '{ [' + String(obj) + '] ' + $join.call($concat.call('[cause]: ' + inspect(obj.cause), parts), ', ') + ' }';\n        }\n        if (parts.length === 0) { return '[' + String(obj) + ']'; }\n        return '{ [' + String(obj) + '] ' + $join.call(parts, ', ') + ' }';\n    }\n    if (typeof obj === 'object' && customInspect) {\n        if (inspectSymbol && typeof obj[inspectSymbol] === 'function' && utilInspect) {\n            return utilInspect(obj, { depth: maxDepth - depth });\n        } else if (customInspect !== 'symbol' && typeof obj.inspect === 'function') {\n            return obj.inspect();\n        }\n    }\n    if (isMap(obj)) {\n        var mapParts = [];\n        if (mapForEach) {\n            mapForEach.call(obj, function (value, key) {\n                mapParts.push(inspect(key, obj, true) + ' => ' + inspect(value, obj));\n            });\n        }\n        return collectionOf('Map', mapSize.call(obj), mapParts, indent);\n    }\n    if (isSet(obj)) {\n        var setParts = [];\n        if (setForEach) {\n            setForEach.call(obj, function (value) {\n                setParts.push(inspect(value, obj));\n            });\n        }\n        return collectionOf('Set', setSize.call(obj), setParts, indent);\n    }\n    if (isWeakMap(obj)) {\n        return weakCollectionOf('WeakMap');\n    }\n    if (isWeakSet(obj)) {\n        return weakCollectionOf('WeakSet');\n    }\n    if (isWeakRef(obj)) {\n        return weakCollectionOf('WeakRef');\n    }\n    if (isNumber(obj)) {\n        return markBoxed(inspect(Number(obj)));\n    }\n    if (isBigInt(obj)) {\n        return markBoxed(inspect(bigIntValueOf.call(obj)));\n    }\n    if (isBoolean(obj)) {\n        return markBoxed(booleanValueOf.call(obj));\n    }\n    if (isString(obj)) {\n        return markBoxed(inspect(String(obj)));\n    }\n    // note: in IE 8, sometimes `global !== window` but both are the prototypes of each other\n    /* eslint-env browser */\n    if (typeof window !== 'undefined' && obj === window) {\n        return '{ [object Window] }';\n    }\n    if (\n        (typeof globalThis !== 'undefined' && obj === globalThis)\n        || (typeof global !== 'undefined' && obj === global)\n    ) {\n        return '{ [object globalThis] }';\n    }\n    if (!isDate(obj) && !isRegExp(obj)) {\n        var ys = arrObjKeys(obj, inspect);\n        var isPlainObject = gPO ? gPO(obj) === Object.prototype : obj instanceof Object || obj.constructor === Object;\n        var protoTag = obj instanceof Object ? '' : 'null prototype';\n        var stringTag = !isPlainObject && toStringTag && Object(obj) === obj && toStringTag in obj ? $slice.call(toStr(obj), 8, -1) : protoTag ? 'Object' : '';\n        var constructorTag = isPlainObject || typeof obj.constructor !== 'function' ? '' : obj.constructor.name ? obj.constructor.name + ' ' : '';\n        var tag = constructorTag + (stringTag || protoTag ? '[' + $join.call($concat.call([], stringTag || [], protoTag || []), ': ') + '] ' : '');\n        if (ys.length === 0) { return tag + '{}'; }\n        if (indent) {\n            return tag + '{' + indentedJoin(ys, indent) + '}';\n        }\n        return tag + '{ ' + $join.call(ys, ', ') + ' }';\n    }\n    return String(obj);\n};\n\nfunction wrapQuotes(s, defaultStyle, opts) {\n    var style = opts.quoteStyle || defaultStyle;\n    var quoteChar = quotes[style];\n    return quoteChar + s + quoteChar;\n}\n\nfunction quote(s) {\n    return $replace.call(String(s), /\"/g, '&quot;');\n}\n\nfunction canTrustToString(obj) {\n    return !toStringTag || !(typeof obj === 'object' && (toStringTag in obj || typeof obj[toStringTag] !== 'undefined'));\n}\nfunction isArray(obj) { return toStr(obj) === '[object Array]' && canTrustToString(obj); }\nfunction isDate(obj) { return toStr(obj) === '[object Date]' && canTrustToString(obj); }\nfunction isRegExp(obj) { return toStr(obj) === '[object RegExp]' && canTrustToString(obj); }\nfunction isError(obj) { return toStr(obj) === '[object Error]' && canTrustToString(obj); }\nfunction isString(obj) { return toStr(obj) === '[object String]' && canTrustToString(obj); }\nfunction isNumber(obj) { return toStr(obj) === '[object Number]' && canTrustToString(obj); }\nfunction isBoolean(obj) { return toStr(obj) === '[object Boolean]' && canTrustToString(obj); }\n\n// Symbol and BigInt do have Symbol.toStringTag by spec, so that can't be used to eliminate false positives\nfunction isSymbol(obj) {\n    if (hasShammedSymbols) {\n        return obj && typeof obj === 'object' && obj instanceof Symbol;\n    }\n    if (typeof obj === 'symbol') {\n        return true;\n    }\n    if (!obj || typeof obj !== 'object' || !symToString) {\n        return false;\n    }\n    try {\n        symToString.call(obj);\n        return true;\n    } catch (e) {}\n    return false;\n}\n\nfunction isBigInt(obj) {\n    if (!obj || typeof obj !== 'object' || !bigIntValueOf) {\n        return false;\n    }\n    try {\n        bigIntValueOf.call(obj);\n        return true;\n    } catch (e) {}\n    return false;\n}\n\nvar hasOwn = Object.prototype.hasOwnProperty || function (key) { return key in this; };\nfunction has(obj, key) {\n    return hasOwn.call(obj, key);\n}\n\nfunction toStr(obj) {\n    return objectToString.call(obj);\n}\n\nfunction nameOf(f) {\n    if (f.name) { return f.name; }\n    var m = $match.call(functionToString.call(f), /^function\\s*([\\w$]+)/);\n    if (m) { return m[1]; }\n    return null;\n}\n\nfunction indexOf(xs, x) {\n    if (xs.indexOf) { return xs.indexOf(x); }\n    for (var i = 0, l = xs.length; i < l; i++) {\n        if (xs[i] === x) { return i; }\n    }\n    return -1;\n}\n\nfunction isMap(x) {\n    if (!mapSize || !x || typeof x !== 'object') {\n        return false;\n    }\n    try {\n        mapSize.call(x);\n        try {\n            setSize.call(x);\n        } catch (s) {\n            return true;\n        }\n        return x instanceof Map; // core-js workaround, pre-v2.5.0\n    } catch (e) {}\n    return false;\n}\n\nfunction isWeakMap(x) {\n    if (!weakMapHas || !x || typeof x !== 'object') {\n        return false;\n    }\n    try {\n        weakMapHas.call(x, weakMapHas);\n        try {\n            weakSetHas.call(x, weakSetHas);\n        } catch (s) {\n            return true;\n        }\n        return x instanceof WeakMap; // core-js workaround, pre-v2.5.0\n    } catch (e) {}\n    return false;\n}\n\nfunction isWeakRef(x) {\n    if (!weakRefDeref || !x || typeof x !== 'object') {\n        return false;\n    }\n    try {\n        weakRefDeref.call(x);\n        return true;\n    } catch (e) {}\n    return false;\n}\n\nfunction isSet(x) {\n    if (!setSize || !x || typeof x !== 'object') {\n        return false;\n    }\n    try {\n        setSize.call(x);\n        try {\n            mapSize.call(x);\n        } catch (m) {\n            return true;\n        }\n        return x instanceof Set; // core-js workaround, pre-v2.5.0\n    } catch (e) {}\n    return false;\n}\n\nfunction isWeakSet(x) {\n    if (!weakSetHas || !x || typeof x !== 'object') {\n        return false;\n    }\n    try {\n        weakSetHas.call(x, weakSetHas);\n        try {\n            weakMapHas.call(x, weakMapHas);\n        } catch (s) {\n            return true;\n        }\n        return x instanceof WeakSet; // core-js workaround, pre-v2.5.0\n    } catch (e) {}\n    return false;\n}\n\nfunction isElement(x) {\n    if (!x || typeof x !== 'object') { return false; }\n    if (typeof HTMLElement !== 'undefined' && x instanceof HTMLElement) {\n        return true;\n    }\n    return typeof x.nodeName === 'string' && typeof x.getAttribute === 'function';\n}\n\nfunction inspectString(str, opts) {\n    if (str.length > opts.maxStringLength) {\n        var remaining = str.length - opts.maxStringLength;\n        var trailer = '... ' + remaining + ' more character' + (remaining > 1 ? 's' : '');\n        return inspectString($slice.call(str, 0, opts.maxStringLength), opts) + trailer;\n    }\n    var quoteRE = quoteREs[opts.quoteStyle || 'single'];\n    quoteRE.lastIndex = 0;\n    // eslint-disable-next-line no-control-regex\n    var s = $replace.call($replace.call(str, quoteRE, '\\\\$1'), /[\\x00-\\x1f]/g, lowbyte);\n    return wrapQuotes(s, 'single', opts);\n}\n\nfunction lowbyte(c) {\n    var n = c.charCodeAt(0);\n    var x = {\n        8: 'b',\n        9: 't',\n        10: 'n',\n        12: 'f',\n        13: 'r'\n    }[n];\n    if (x) { return '\\\\' + x; }\n    return '\\\\x' + (n < 0x10 ? '0' : '') + $toUpperCase.call(n.toString(16));\n}\n\nfunction markBoxed(str) {\n    return 'Object(' + str + ')';\n}\n\nfunction weakCollectionOf(type) {\n    return type + ' { ? }';\n}\n\nfunction collectionOf(type, size, entries, indent) {\n    var joinedEntries = indent ? indentedJoin(entries, indent) : $join.call(entries, ', ');\n    return type + ' (' + size + ') {' + joinedEntries + '}';\n}\n\nfunction singleLineValues(xs) {\n    for (var i = 0; i < xs.length; i++) {\n        if (indexOf(xs[i], '\\n') >= 0) {\n            return false;\n        }\n    }\n    return true;\n}\n\nfunction getIndent(opts, depth) {\n    var baseIndent;\n    if (opts.indent === '\\t') {\n        baseIndent = '\\t';\n    } else if (typeof opts.indent === 'number' && opts.indent > 0) {\n        baseIndent = $join.call(Array(opts.indent + 1), ' ');\n    } else {\n        return null;\n    }\n    return {\n        base: baseIndent,\n        prev: $join.call(Array(depth + 1), baseIndent)\n    };\n}\n\nfunction indentedJoin(xs, indent) {\n    if (xs.length === 0) { return ''; }\n    var lineJoiner = '\\n' + indent.prev + indent.base;\n    return lineJoiner + $join.call(xs, ',' + lineJoiner) + '\\n' + indent.prev;\n}\n\nfunction arrObjKeys(obj, inspect) {\n    var isArr = isArray(obj);\n    var xs = [];\n    if (isArr) {\n        xs.length = obj.length;\n        for (var i = 0; i < obj.length; i++) {\n            xs[i] = has(obj, i) ? inspect(obj[i], obj) : '';\n        }\n    }\n    var syms = typeof gOPS === 'function' ? gOPS(obj) : [];\n    var symMap;\n    if (hasShammedSymbols) {\n        symMap = {};\n        for (var k = 0; k < syms.length; k++) {\n            symMap['$' + syms[k]] = syms[k];\n        }\n    }\n\n    for (var key in obj) { // eslint-disable-line no-restricted-syntax\n        if (!has(obj, key)) { continue; } // eslint-disable-line no-restricted-syntax, no-continue\n        if (isArr && String(Number(key)) === key && key < obj.length) { continue; } // eslint-disable-line no-restricted-syntax, no-continue\n        if (hasShammedSymbols && symMap['$' + key] instanceof Symbol) {\n            // this is to prevent shammed Symbols, which are stored as strings, from being included in the string key section\n            continue; // eslint-disable-line no-restricted-syntax, no-continue\n        } else if ($test.call(/[^\\w$]/, key)) {\n            xs.push(inspect(key, obj) + ': ' + inspect(obj[key], obj));\n        } else {\n            xs.push(key + ': ' + inspect(obj[key], obj));\n        }\n    }\n    if (typeof gOPS === 'function') {\n        for (var j = 0; j < syms.length; j++) {\n            if (isEnumerable.call(obj, syms[j])) {\n                xs.push('[' + inspect(syms[j]) + ']: ' + inspect(obj[syms[j]], obj));\n            }\n        }\n    }\n    return xs;\n}\n","'use strict';\n\nvar inspect = require('object-inspect');\n\nvar $TypeError = require('es-errors/type');\n\n/*\n* This function traverses the list returning the node corresponding to the given key.\n*\n* That node is also moved to the head of the list, so that if it's accessed again we don't need to traverse the whole list.\n* By doing so, all the recently used nodes can be accessed relatively quickly.\n*/\n/** @type {import('./list.d.ts').listGetNode} */\n// eslint-disable-next-line consistent-return\nvar listGetNode = function (list, key, isDelete) {\n\t/** @type {typeof list | NonNullable<(typeof list)['next']>} */\n\tvar prev = list;\n\t/** @type {(typeof list)['next']} */\n\tvar curr;\n\t// eslint-disable-next-line eqeqeq\n\tfor (; (curr = prev.next) != null; prev = curr) {\n\t\tif (curr.key === key) {\n\t\t\tprev.next = curr.next;\n\t\t\tif (!isDelete) {\n\t\t\t\t// eslint-disable-next-line no-extra-parens\n\t\t\t\tcurr.next = /** @type {NonNullable<typeof list.next>} */ (list.next);\n\t\t\t\tlist.next = curr; // eslint-disable-line no-param-reassign\n\t\t\t}\n\t\t\treturn curr;\n\t\t}\n\t}\n};\n\n/** @type {import('./list.d.ts').listGet} */\nvar listGet = function (objects, key) {\n\tif (!objects) {\n\t\treturn void undefined;\n\t}\n\tvar node = listGetNode(objects, key);\n\treturn node && node.value;\n};\n/** @type {import('./list.d.ts').listSet} */\nvar listSet = function (objects, key, value) {\n\tvar node = listGetNode(objects, key);\n\tif (node) {\n\t\tnode.value = value;\n\t} else {\n\t\t// Prepend the new node to the beginning of the list\n\t\tobjects.next = /** @type {import('./list.d.ts').ListNode<typeof value, typeof key>} */ ({ // eslint-disable-line no-param-reassign, no-extra-parens\n\t\t\tkey: key,\n\t\t\tnext: objects.next,\n\t\t\tvalue: value\n\t\t});\n\t}\n};\n/** @type {import('./list.d.ts').listHas} */\nvar listHas = function (objects, key) {\n\tif (!objects) {\n\t\treturn false;\n\t}\n\treturn !!listGetNode(objects, key);\n};\n/** @type {import('./list.d.ts').listDelete} */\n// eslint-disable-next-line consistent-return\nvar listDelete = function (objects, key) {\n\tif (objects) {\n\t\treturn listGetNode(objects, key, true);\n\t}\n};\n\n/** @type {import('.')} */\nmodule.exports = function getSideChannelList() {\n\t/** @typedef {ReturnType<typeof getSideChannelList>} Channel */\n\t/** @typedef {Parameters<Channel['get']>[0]} K */\n\t/** @typedef {Parameters<Channel['set']>[1]} V */\n\n\t/** @type {import('./list.d.ts').RootNode<V, K> | undefined} */ var $o;\n\n\t/** @type {Channel} */\n\tvar channel = {\n\t\tassert: function (key) {\n\t\t\tif (!channel.has(key)) {\n\t\t\t\tthrow new $TypeError('Side channel does not contain ' + inspect(key));\n\t\t\t}\n\t\t},\n\t\t'delete': function (key) {\n\t\t\tvar root = $o && $o.next;\n\t\t\tvar deletedNode = listDelete($o, key);\n\t\t\tif (deletedNode && root && root === deletedNode) {\n\t\t\t\t$o = void undefined;\n\t\t\t}\n\t\t\treturn !!deletedNode;\n\t\t},\n\t\tget: function (key) {\n\t\t\treturn listGet($o, key);\n\t\t},\n\t\thas: function (key) {\n\t\t\treturn listHas($o, key);\n\t\t},\n\t\tset: function (key, value) {\n\t\t\tif (!$o) {\n\t\t\t\t// Initialize the linked list as an empty node, so that we don't have to special-case handling of the first node: we can always refer to it as (previous node).next, instead of something like (list).head\n\t\t\t\t$o = {\n\t\t\t\t\tnext: void undefined\n\t\t\t\t};\n\t\t\t}\n\t\t\t// eslint-disable-next-line no-extra-parens\n\t\t\tlistSet(/** @type {NonNullable<typeof $o>} */ ($o), key, value);\n\t\t}\n\t};\n\t// @ts-expect-error TODO: figure out why this is erroring\n\treturn channel;\n};\n","'use strict';\n\n/** @type {import('.')} */\nmodule.exports = Object;\n","'use strict';\n\n/** @type {import('.')} */\nmodule.exports = Error;\n","'use strict';\n\n/** @type {import('./eval')} */\nmodule.exports = EvalError;\n","'use strict';\n\n/** @type {import('./range')} */\nmodule.exports = RangeError;\n","'use strict';\n\n/** @type {import('./ref')} */\nmodule.exports = ReferenceError;\n","'use strict';\n\n/** @type {import('./syntax')} */\nmodule.exports = SyntaxError;\n","'use strict';\n\n/** @type {import('./uri')} */\nmodule.exports = URIError;\n","'use strict';\n\n/** @type {import('./abs')} */\nmodule.exports = Math.abs;\n","'use strict';\n\n/** @type {import('./floor')} */\nmodule.exports = Math.floor;\n","'use strict';\n\n/** @type {import('./max')} */\nmodule.exports = Math.max;\n","'use strict';\n\n/** @type {import('./min')} */\nmodule.exports = Math.min;\n","'use strict';\n\n/** @type {import('./pow')} */\nmodule.exports = Math.pow;\n","'use strict';\n\n/** @type {import('./round')} */\nmodule.exports = Math.round;\n","'use strict';\n\n/** @type {import('./isNaN')} */\nmodule.exports = Number.isNaN || function isNaN(a) {\n\treturn a !== a;\n};\n","'use strict';\n\nvar $isNaN = require('./isNaN');\n\n/** @type {import('./sign')} */\nmodule.exports = function sign(number) {\n\tif ($isNaN(number) || number === 0) {\n\t\treturn number;\n\t}\n\treturn number < 0 ? -1 : +1;\n};\n","'use strict';\n\n/** @type {import('./gOPD')} */\nmodule.exports = Object.getOwnPropertyDescriptor;\n","'use strict';\n\n/** @type {import('.')} */\nvar $gOPD = require('./gOPD');\n\nif ($gOPD) {\n\ttry {\n\t\t$gOPD([], 'length');\n\t} catch (e) {\n\t\t// IE 8 has a broken gOPD\n\t\t$gOPD = null;\n\t}\n}\n\nmodule.exports = $gOPD;\n","'use strict';\n\n/** @type {import('.')} */\nvar $defineProperty = Object.defineProperty || false;\nif ($defineProperty) {\n\ttry {\n\t\t$defineProperty({}, 'a', { value: 1 });\n\t} catch (e) {\n\t\t// IE 8 has a broken defineProperty\n\t\t$defineProperty = false;\n\t}\n}\n\nmodule.exports = $defineProperty;\n","'use strict';\n\n/** @type {import('./shams')} */\n/* eslint complexity: [2, 18], max-statements: [2, 33] */\nmodule.exports = function hasSymbols() {\n\tif (typeof Symbol !== 'function' || typeof Object.getOwnPropertySymbols !== 'function') { return false; }\n\tif (typeof Symbol.iterator === 'symbol') { return true; }\n\n\t/** @type {{ [k in symbol]?: unknown }} */\n\tvar obj = {};\n\tvar sym = Symbol('test');\n\tvar symObj = Object(sym);\n\tif (typeof sym === 'string') { return false; }\n\n\tif (Object.prototype.toString.call(sym) !== '[object Symbol]') { return false; }\n\tif (Object.prototype.toString.call(symObj) !== '[object Symbol]') { return false; }\n\n\t// temp disabled per https://github.com/ljharb/object.assign/issues/17\n\t// if (sym instanceof Symbol) { return false; }\n\t// temp disabled per https://github.com/WebReflection/get-own-property-symbols/issues/4\n\t// if (!(symObj instanceof Symbol)) { return false; }\n\n\t// if (typeof Symbol.prototype.toString !== 'function') { return false; }\n\t// if (String(sym) !== Symbol.prototype.toString.call(sym)) { return false; }\n\n\tvar symVal = 42;\n\tobj[sym] = symVal;\n\tfor (var _ in obj) { return false; } // eslint-disable-line no-restricted-syntax, no-unreachable-loop\n\tif (typeof Object.keys === 'function' && Object.keys(obj).length !== 0) { return false; }\n\n\tif (typeof Object.getOwnPropertyNames === 'function' && Object.getOwnPropertyNames(obj).length !== 0) { return false; }\n\n\tvar syms = Object.getOwnPropertySymbols(obj);\n\tif (syms.length !== 1 || syms[0] !== sym) { return false; }\n\n\tif (!Object.prototype.propertyIsEnumerable.call(obj, sym)) { return false; }\n\n\tif (typeof Object.getOwnPropertyDescriptor === 'function') {\n\t\t// eslint-disable-next-line no-extra-parens\n\t\tvar descriptor = /** @type {PropertyDescriptor} */ (Object.getOwnPropertyDescriptor(obj, sym));\n\t\tif (descriptor.value !== symVal || descriptor.enumerable !== true) { return false; }\n\t}\n\n\treturn true;\n};\n","'use strict';\n\nvar origSymbol = typeof Symbol !== 'undefined' && Symbol;\nvar hasSymbolSham = require('./shams');\n\n/** @type {import('.')} */\nmodule.exports = function hasNativeSymbols() {\n\tif (typeof origSymbol !== 'function') { return false; }\n\tif (typeof Symbol !== 'function') { return false; }\n\tif (typeof origSymbol('foo') !== 'symbol') { return false; }\n\tif (typeof Symbol('bar') !== 'symbol') { return false; }\n\n\treturn hasSymbolSham();\n};\n","'use strict';\n\n/** @type {import('./Reflect.getPrototypeOf')} */\nmodule.exports = (typeof Reflect !== 'undefined' && Reflect.getPrototypeOf) || null;\n","'use strict';\n\nvar $Object = require('es-object-atoms');\n\n/** @type {import('./Object.getPrototypeOf')} */\nmodule.exports = $Object.getPrototypeOf || null;\n","'use strict';\n\n/* eslint no-invalid-this: 1 */\n\nvar ERROR_MESSAGE = 'Function.prototype.bind called on incompatible ';\nvar toStr = Object.prototype.toString;\nvar max = Math.max;\nvar funcType = '[object Function]';\n\nvar concatty = function concatty(a, b) {\n    var arr = [];\n\n    for (var i = 0; i < a.length; i += 1) {\n        arr[i] = a[i];\n    }\n    for (var j = 0; j < b.length; j += 1) {\n        arr[j + a.length] = b[j];\n    }\n\n    return arr;\n};\n\nvar slicy = function slicy(arrLike, offset) {\n    var arr = [];\n    for (var i = offset || 0, j = 0; i < arrLike.length; i += 1, j += 1) {\n        arr[j] = arrLike[i];\n    }\n    return arr;\n};\n\nvar joiny = function (arr, joiner) {\n    var str = '';\n    for (var i = 0; i < arr.length; i += 1) {\n        str += arr[i];\n        if (i + 1 < arr.length) {\n            str += joiner;\n        }\n    }\n    return str;\n};\n\nmodule.exports = function bind(that) {\n    var target = this;\n    if (typeof target !== 'function' || toStr.apply(target) !== funcType) {\n        throw new TypeError(ERROR_MESSAGE + target);\n    }\n    var args = slicy(arguments, 1);\n\n    var bound;\n    var binder = function () {\n        if (this instanceof bound) {\n            var result = target.apply(\n                this,\n                concatty(args, arguments)\n            );\n            if (Object(result) === result) {\n                return result;\n            }\n            return this;\n        }\n        return target.apply(\n            that,\n            concatty(args, arguments)\n        );\n\n    };\n\n    var boundLength = max(0, target.length - args.length);\n    var boundArgs = [];\n    for (var i = 0; i < boundLength; i++) {\n        boundArgs[i] = '$' + i;\n    }\n\n    bound = Function('binder', 'return function (' + joiny(boundArgs, ',') + '){ return binder.apply(this,arguments); }')(binder);\n\n    if (target.prototype) {\n        var Empty = function Empty() {};\n        Empty.prototype = target.prototype;\n        bound.prototype = new Empty();\n        Empty.prototype = null;\n    }\n\n    return bound;\n};\n","'use strict';\n\nvar implementation = require('./implementation');\n\nmodule.exports = Function.prototype.bind || implementation;\n","'use strict';\n\n/** @type {import('./functionCall')} */\nmodule.exports = Function.prototype.call;\n","'use strict';\n\n/** @type {import('./functionApply')} */\nmodule.exports = Function.prototype.apply;\n","'use strict';\n\n/** @type {import('./reflectApply')} */\nmodule.exports = typeof Reflect !== 'undefined' && Reflect && Reflect.apply;\n","'use strict';\n\nvar bind = require('function-bind');\n\nvar $apply = require('./functionApply');\nvar $call = require('./functionCall');\nvar $reflectApply = require('./reflectApply');\n\n/** @type {import('./actualApply')} */\nmodule.exports = $reflectApply || bind.call($call, $apply);\n","'use strict';\n\nvar bind = require('function-bind');\nvar $TypeError = require('es-errors/type');\n\nvar $call = require('./functionCall');\nvar $actualApply = require('./actualApply');\n\n/** @type {(args: [Function, thisArg?: unknown, ...args: unknown[]]) => Function} TODO FIXME, find a way to use import('.') */\nmodule.exports = function callBindBasic(args) {\n\tif (args.length < 1 || typeof args[0] !== 'function') {\n\t\tthrow new $TypeError('a function is required');\n\t}\n\treturn $actualApply(bind, $call, args);\n};\n","'use strict';\n\nvar callBind = require('call-bind-apply-helpers');\nvar gOPD = require('gopd');\n\nvar hasProtoAccessor;\ntry {\n\t// eslint-disable-next-line no-extra-parens, no-proto\n\thasProtoAccessor = /** @type {{ __proto__?: typeof Array.prototype }} */ ([]).__proto__ === Array.prototype;\n} catch (e) {\n\tif (!e || typeof e !== 'object' || !('code' in e) || e.code !== 'ERR_PROTO_ACCESS') {\n\t\tthrow e;\n\t}\n}\n\n// eslint-disable-next-line no-extra-parens\nvar desc = !!hasProtoAccessor && gOPD && gOPD(Object.prototype, /** @type {keyof typeof Object.prototype} */ ('__proto__'));\n\nvar $Object = Object;\nvar $getPrototypeOf = $Object.getPrototypeOf;\n\n/** @type {import('./get')} */\nmodule.exports = desc && typeof desc.get === 'function'\n\t? callBind([desc.get])\n\t: typeof $getPrototypeOf === 'function'\n\t\t? /** @type {import('./get')} */ function getDunder(value) {\n\t\t\t// eslint-disable-next-line eqeqeq\n\t\t\treturn $getPrototypeOf(value == null ? value : $Object(value));\n\t\t}\n\t\t: false;\n","'use strict';\n\nvar reflectGetProto = require('./Reflect.getPrototypeOf');\nvar originalGetProto = require('./Object.getPrototypeOf');\n\nvar getDunderProto = require('dunder-proto/get');\n\n/** @type {import('.')} */\nmodule.exports = reflectGetProto\n\t? function getProto(O) {\n\t\t// @ts-expect-error TS can't narrow inside a closure, for some reason\n\t\treturn reflectGetProto(O);\n\t}\n\t: originalGetProto\n\t\t? function getProto(O) {\n\t\t\tif (!O || (typeof O !== 'object' && typeof O !== 'function')) {\n\t\t\t\tthrow new TypeError('getProto: not an object');\n\t\t\t}\n\t\t\t// @ts-expect-error TS can't narrow inside a closure, for some reason\n\t\t\treturn originalGetProto(O);\n\t\t}\n\t\t: getDunderProto\n\t\t\t? function getProto(O) {\n\t\t\t\t// @ts-expect-error TS can't narrow inside a closure, for some reason\n\t\t\t\treturn getDunderProto(O);\n\t\t\t}\n\t\t\t: null;\n","'use strict';\n\nvar call = Function.prototype.call;\nvar $hasOwn = Object.prototype.hasOwnProperty;\nvar bind = require('function-bind');\n\n/** @type {import('.')} */\nmodule.exports = bind.call(call, $hasOwn);\n","'use strict';\n\nvar undefined;\n\nvar $Object = require('es-object-atoms');\n\nvar $Error = require('es-errors');\nvar $EvalError = require('es-errors/eval');\nvar $RangeError = require('es-errors/range');\nvar $ReferenceError = require('es-errors/ref');\nvar $SyntaxError = require('es-errors/syntax');\nvar $TypeError = require('es-errors/type');\nvar $URIError = require('es-errors/uri');\n\nvar abs = require('math-intrinsics/abs');\nvar floor = require('math-intrinsics/floor');\nvar max = require('math-intrinsics/max');\nvar min = require('math-intrinsics/min');\nvar pow = require('math-intrinsics/pow');\nvar round = require('math-intrinsics/round');\nvar sign = require('math-intrinsics/sign');\n\nvar $Function = Function;\n\n// eslint-disable-next-line consistent-return\nvar getEvalledConstructor = function (expressionSyntax) {\n\ttry {\n\t\treturn $Function('\"use strict\"; return (' + expressionSyntax + ').constructor;')();\n\t} catch (e) {}\n};\n\nvar $gOPD = require('gopd');\nvar $defineProperty = require('es-define-property');\n\nvar throwTypeError = function () {\n\tthrow new $TypeError();\n};\nvar ThrowTypeError = $gOPD\n\t? (function () {\n\t\ttry {\n\t\t\t// eslint-disable-next-line no-unused-expressions, no-caller, no-restricted-properties\n\t\t\targuments.callee; // IE 8 does not throw here\n\t\t\treturn throwTypeError;\n\t\t} catch (calleeThrows) {\n\t\t\ttry {\n\t\t\t\t// IE 8 throws on Object.getOwnPropertyDescriptor(arguments, '')\n\t\t\t\treturn $gOPD(arguments, 'callee').get;\n\t\t\t} catch (gOPDthrows) {\n\t\t\t\treturn throwTypeError;\n\t\t\t}\n\t\t}\n\t}())\n\t: throwTypeError;\n\nvar hasSymbols = require('has-symbols')();\n\nvar getProto = require('get-proto');\nvar $ObjectGPO = require('get-proto/Object.getPrototypeOf');\nvar $ReflectGPO = require('get-proto/Reflect.getPrototypeOf');\n\nvar $apply = require('call-bind-apply-helpers/functionApply');\nvar $call = require('call-bind-apply-helpers/functionCall');\n\nvar needsEval = {};\n\nvar TypedArray = typeof Uint8Array === 'undefined' || !getProto ? undefined : getProto(Uint8Array);\n\nvar INTRINSICS = {\n\t__proto__: null,\n\t'%AggregateError%': typeof AggregateError === 'undefined' ? undefined : AggregateError,\n\t'%Array%': Array,\n\t'%ArrayBuffer%': typeof ArrayBuffer === 'undefined' ? undefined : ArrayBuffer,\n\t'%ArrayIteratorPrototype%': hasSymbols && getProto ? getProto([][Symbol.iterator]()) : undefined,\n\t'%AsyncFromSyncIteratorPrototype%': undefined,\n\t'%AsyncFunction%': needsEval,\n\t'%AsyncGenerator%': needsEval,\n\t'%AsyncGeneratorFunction%': needsEval,\n\t'%AsyncIteratorPrototype%': needsEval,\n\t'%Atomics%': typeof Atomics === 'undefined' ? undefined : Atomics,\n\t'%BigInt%': typeof BigInt === 'undefined' ? undefined : BigInt,\n\t'%BigInt64Array%': typeof BigInt64Array === 'undefined' ? undefined : BigInt64Array,\n\t'%BigUint64Array%': typeof BigUint64Array === 'undefined' ? undefined : BigUint64Array,\n\t'%Boolean%': Boolean,\n\t'%DataView%': typeof DataView === 'undefined' ? undefined : DataView,\n\t'%Date%': Date,\n\t'%decodeURI%': decodeURI,\n\t'%decodeURIComponent%': decodeURIComponent,\n\t'%encodeURI%': encodeURI,\n\t'%encodeURIComponent%': encodeURIComponent,\n\t'%Error%': $Error,\n\t'%eval%': eval, // eslint-disable-line no-eval\n\t'%EvalError%': $EvalError,\n\t'%Float16Array%': typeof Float16Array === 'undefined' ? undefined : Float16Array,\n\t'%Float32Array%': typeof Float32Array === 'undefined' ? undefined : Float32Array,\n\t'%Float64Array%': typeof Float64Array === 'undefined' ? undefined : Float64Array,\n\t'%FinalizationRegistry%': typeof FinalizationRegistry === 'undefined' ? undefined : FinalizationRegistry,\n\t'%Function%': $Function,\n\t'%GeneratorFunction%': needsEval,\n\t'%Int8Array%': typeof Int8Array === 'undefined' ? undefined : Int8Array,\n\t'%Int16Array%': typeof Int16Array === 'undefined' ? undefined : Int16Array,\n\t'%Int32Array%': typeof Int32Array === 'undefined' ? undefined : Int32Array,\n\t'%isFinite%': isFinite,\n\t'%isNaN%': isNaN,\n\t'%IteratorPrototype%': hasSymbols && getProto ? getProto(getProto([][Symbol.iterator]())) : undefined,\n\t'%JSON%': typeof JSON === 'object' ? JSON : undefined,\n\t'%Map%': typeof Map === 'undefined' ? undefined : Map,\n\t'%MapIteratorPrototype%': typeof Map === 'undefined' || !hasSymbols || !getProto ? undefined : getProto(new Map()[Symbol.iterator]()),\n\t'%Math%': Math,\n\t'%Number%': Number,\n\t'%Object%': $Object,\n\t'%Object.getOwnPropertyDescriptor%': $gOPD,\n\t'%parseFloat%': parseFloat,\n\t'%parseInt%': parseInt,\n\t'%Promise%': typeof Promise === 'undefined' ? undefined : Promise,\n\t'%Proxy%': typeof Proxy === 'undefined' ? undefined : Proxy,\n\t'%RangeError%': $RangeError,\n\t'%ReferenceError%': $ReferenceError,\n\t'%Reflect%': typeof Reflect === 'undefined' ? undefined : Reflect,\n\t'%RegExp%': RegExp,\n\t'%Set%': typeof Set === 'undefined' ? undefined : Set,\n\t'%SetIteratorPrototype%': typeof Set === 'undefined' || !hasSymbols || !getProto ? undefined : getProto(new Set()[Symbol.iterator]()),\n\t'%SharedArrayBuffer%': typeof SharedArrayBuffer === 'undefined' ? undefined : SharedArrayBuffer,\n\t'%String%': String,\n\t'%StringIteratorPrototype%': hasSymbols && getProto ? getProto(''[Symbol.iterator]()) : undefined,\n\t'%Symbol%': hasSymbols ? Symbol : undefined,\n\t'%SyntaxError%': $SyntaxError,\n\t'%ThrowTypeError%': ThrowTypeError,\n\t'%TypedArray%': TypedArray,\n\t'%TypeError%': $TypeError,\n\t'%Uint8Array%': typeof Uint8Array === 'undefined' ? undefined : Uint8Array,\n\t'%Uint8ClampedArray%': typeof Uint8ClampedArray === 'undefined' ? undefined : Uint8ClampedArray,\n\t'%Uint16Array%': typeof Uint16Array === 'undefined' ? undefined : Uint16Array,\n\t'%Uint32Array%': typeof Uint32Array === 'undefined' ? undefined : Uint32Array,\n\t'%URIError%': $URIError,\n\t'%WeakMap%': typeof WeakMap === 'undefined' ? undefined : WeakMap,\n\t'%WeakRef%': typeof WeakRef === 'undefined' ? undefined : WeakRef,\n\t'%WeakSet%': typeof WeakSet === 'undefined' ? undefined : WeakSet,\n\n\t'%Function.prototype.call%': $call,\n\t'%Function.prototype.apply%': $apply,\n\t'%Object.defineProperty%': $defineProperty,\n\t'%Object.getPrototypeOf%': $ObjectGPO,\n\t'%Math.abs%': abs,\n\t'%Math.floor%': floor,\n\t'%Math.max%': max,\n\t'%Math.min%': min,\n\t'%Math.pow%': pow,\n\t'%Math.round%': round,\n\t'%Math.sign%': sign,\n\t'%Reflect.getPrototypeOf%': $ReflectGPO\n};\n\nif (getProto) {\n\ttry {\n\t\tnull.error; // eslint-disable-line no-unused-expressions\n\t} catch (e) {\n\t\t// https://github.com/tc39/proposal-shadowrealm/pull/384#issuecomment-1364264229\n\t\tvar errorProto = getProto(getProto(e));\n\t\tINTRINSICS['%Error.prototype%'] = errorProto;\n\t}\n}\n\nvar doEval = function doEval(name) {\n\tvar value;\n\tif (name === '%AsyncFunction%') {\n\t\tvalue = getEvalledConstructor('async function () {}');\n\t} else if (name === '%GeneratorFunction%') {\n\t\tvalue = getEvalledConstructor('function* () {}');\n\t} else if (name === '%AsyncGeneratorFunction%') {\n\t\tvalue = getEvalledConstructor('async function* () {}');\n\t} else if (name === '%AsyncGenerator%') {\n\t\tvar fn = doEval('%AsyncGeneratorFunction%');\n\t\tif (fn) {\n\t\t\tvalue = fn.prototype;\n\t\t}\n\t} else if (name === '%AsyncIteratorPrototype%') {\n\t\tvar gen = doEval('%AsyncGenerator%');\n\t\tif (gen && getProto) {\n\t\t\tvalue = getProto(gen.prototype);\n\t\t}\n\t}\n\n\tINTRINSICS[name] = value;\n\n\treturn value;\n};\n\nvar LEGACY_ALIASES = {\n\t__proto__: null,\n\t'%ArrayBufferPrototype%': ['ArrayBuffer', 'prototype'],\n\t'%ArrayPrototype%': ['Array', 'prototype'],\n\t'%ArrayProto_entries%': ['Array', 'prototype', 'entries'],\n\t'%ArrayProto_forEach%': ['Array', 'prototype', 'forEach'],\n\t'%ArrayProto_keys%': ['Array', 'prototype', 'keys'],\n\t'%ArrayProto_values%': ['Array', 'prototype', 'values'],\n\t'%AsyncFunctionPrototype%': ['AsyncFunction', 'prototype'],\n\t'%AsyncGenerator%': ['AsyncGeneratorFunction', 'prototype'],\n\t'%AsyncGeneratorPrototype%': ['AsyncGeneratorFunction', 'prototype', 'prototype'],\n\t'%BooleanPrototype%': ['Boolean', 'prototype'],\n\t'%DataViewPrototype%': ['DataView', 'prototype'],\n\t'%DatePrototype%': ['Date', 'prototype'],\n\t'%ErrorPrototype%': ['Error', 'prototype'],\n\t'%EvalErrorPrototype%': ['EvalError', 'prototype'],\n\t'%Float32ArrayPrototype%': ['Float32Array', 'prototype'],\n\t'%Float64ArrayPrototype%': ['Float64Array', 'prototype'],\n\t'%FunctionPrototype%': ['Function', 'prototype'],\n\t'%Generator%': ['GeneratorFunction', 'prototype'],\n\t'%GeneratorPrototype%': ['GeneratorFunction', 'prototype', 'prototype'],\n\t'%Int8ArrayPrototype%': ['Int8Array', 'prototype'],\n\t'%Int16ArrayPrototype%': ['Int16Array', 'prototype'],\n\t'%Int32ArrayPrototype%': ['Int32Array', 'prototype'],\n\t'%JSONParse%': ['JSON', 'parse'],\n\t'%JSONStringify%': ['JSON', 'stringify'],\n\t'%MapPrototype%': ['Map', 'prototype'],\n\t'%NumberPrototype%': ['Number', 'prototype'],\n\t'%ObjectPrototype%': ['Object', 'prototype'],\n\t'%ObjProto_toString%': ['Object', 'prototype', 'toString'],\n\t'%ObjProto_valueOf%': ['Object', 'prototype', 'valueOf'],\n\t'%PromisePrototype%': ['Promise', 'prototype'],\n\t'%PromiseProto_then%': ['Promise', 'prototype', 'then'],\n\t'%Promise_all%': ['Promise', 'all'],\n\t'%Promise_reject%': ['Promise', 'reject'],\n\t'%Promise_resolve%': ['Promise', 'resolve'],\n\t'%RangeErrorPrototype%': ['RangeError', 'prototype'],\n\t'%ReferenceErrorPrototype%': ['ReferenceError', 'prototype'],\n\t'%RegExpPrototype%': ['RegExp', 'prototype'],\n\t'%SetPrototype%': ['Set', 'prototype'],\n\t'%SharedArrayBufferPrototype%': ['SharedArrayBuffer', 'prototype'],\n\t'%StringPrototype%': ['String', 'prototype'],\n\t'%SymbolPrototype%': ['Symbol', 'prototype'],\n\t'%SyntaxErrorPrototype%': ['SyntaxError', 'prototype'],\n\t'%TypedArrayPrototype%': ['TypedArray', 'prototype'],\n\t'%TypeErrorPrototype%': ['TypeError', 'prototype'],\n\t'%Uint8ArrayPrototype%': ['Uint8Array', 'prototype'],\n\t'%Uint8ClampedArrayPrototype%': ['Uint8ClampedArray', 'prototype'],\n\t'%Uint16ArrayPrototype%': ['Uint16Array', 'prototype'],\n\t'%Uint32ArrayPrototype%': ['Uint32Array', 'prototype'],\n\t'%URIErrorPrototype%': ['URIError', 'prototype'],\n\t'%WeakMapPrototype%': ['WeakMap', 'prototype'],\n\t'%WeakSetPrototype%': ['WeakSet', 'prototype']\n};\n\nvar bind = require('function-bind');\nvar hasOwn = require('hasown');\nvar $concat = bind.call($call, Array.prototype.concat);\nvar $spliceApply = bind.call($apply, Array.prototype.splice);\nvar $replace = bind.call($call, String.prototype.replace);\nvar $strSlice = bind.call($call, String.prototype.slice);\nvar $exec = bind.call($call, RegExp.prototype.exec);\n\n/* adapted from https://github.com/lodash/lodash/blob/4.17.15/dist/lodash.js#L6735-L6744 */\nvar rePropName = /[^%.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|%$))/g;\nvar reEscapeChar = /\\\\(\\\\)?/g; /** Used to match backslashes in property paths. */\nvar stringToPath = function stringToPath(string) {\n\tvar first = $strSlice(string, 0, 1);\n\tvar last = $strSlice(string, -1);\n\tif (first === '%' && last !== '%') {\n\t\tthrow new $SyntaxError('invalid intrinsic syntax, expected closing `%`');\n\t} else if (last === '%' && first !== '%') {\n\t\tthrow new $SyntaxError('invalid intrinsic syntax, expected opening `%`');\n\t}\n\tvar result = [];\n\t$replace(string, rePropName, function (match, number, quote, subString) {\n\t\tresult[result.length] = quote ? $replace(subString, reEscapeChar, '$1') : number || match;\n\t});\n\treturn result;\n};\n/* end adaptation */\n\nvar getBaseIntrinsic = function getBaseIntrinsic(name, allowMissing) {\n\tvar intrinsicName = name;\n\tvar alias;\n\tif (hasOwn(LEGACY_ALIASES, intrinsicName)) {\n\t\talias = LEGACY_ALIASES[intrinsicName];\n\t\tintrinsicName = '%' + alias[0] + '%';\n\t}\n\n\tif (hasOwn(INTRINSICS, intrinsicName)) {\n\t\tvar value = INTRINSICS[intrinsicName];\n\t\tif (value === needsEval) {\n\t\t\tvalue = doEval(intrinsicName);\n\t\t}\n\t\tif (typeof value === 'undefined' && !allowMissing) {\n\t\t\tthrow new $TypeError('intrinsic ' + name + ' exists, but is not available. Please file an issue!');\n\t\t}\n\n\t\treturn {\n\t\t\talias: alias,\n\t\t\tname: intrinsicName,\n\t\t\tvalue: value\n\t\t};\n\t}\n\n\tthrow new $SyntaxError('intrinsic ' + name + ' does not exist!');\n};\n\nmodule.exports = function GetIntrinsic(name, allowMissing) {\n\tif (typeof name !== 'string' || name.length === 0) {\n\t\tthrow new $TypeError('intrinsic name must be a non-empty string');\n\t}\n\tif (arguments.length > 1 && typeof allowMissing !== 'boolean') {\n\t\tthrow new $TypeError('\"allowMissing\" argument must be a boolean');\n\t}\n\n\tif ($exec(/^%?[^%]*%?$/, name) === null) {\n\t\tthrow new $SyntaxError('`%` may not be present anywhere but at the beginning and end of the intrinsic name');\n\t}\n\tvar parts = stringToPath(name);\n\tvar intrinsicBaseName = parts.length > 0 ? parts[0] : '';\n\n\tvar intrinsic = getBaseIntrinsic('%' + intrinsicBaseName + '%', allowMissing);\n\tvar intrinsicRealName = intrinsic.name;\n\tvar value = intrinsic.value;\n\tvar skipFurtherCaching = false;\n\n\tvar alias = intrinsic.alias;\n\tif (alias) {\n\t\tintrinsicBaseName = alias[0];\n\t\t$spliceApply(parts, $concat([0, 1], alias));\n\t}\n\n\tfor (var i = 1, isOwn = true; i < parts.length; i += 1) {\n\t\tvar part = parts[i];\n\t\tvar first = $strSlice(part, 0, 1);\n\t\tvar last = $strSlice(part, -1);\n\t\tif (\n\t\t\t(\n\t\t\t\t(first === '\"' || first === \"'\" || first === '`')\n\t\t\t\t|| (last === '\"' || last === \"'\" || last === '`')\n\t\t\t)\n\t\t\t&& first !== last\n\t\t) {\n\t\t\tthrow new $SyntaxError('property names with quotes must have matching quotes');\n\t\t}\n\t\tif (part === 'constructor' || !isOwn) {\n\t\t\tskipFurtherCaching = true;\n\t\t}\n\n\t\tintrinsicBaseName += '.' + part;\n\t\tintrinsicRealName = '%' + intrinsicBaseName + '%';\n\n\t\tif (hasOwn(INTRINSICS, intrinsicRealName)) {\n\t\t\tvalue = INTRINSICS[intrinsicRealName];\n\t\t} else if (value != null) {\n\t\t\tif (!(part in value)) {\n\t\t\t\tif (!allowMissing) {\n\t\t\t\t\tthrow new $TypeError('base intrinsic for ' + name + ' exists, but the property is not available.');\n\t\t\t\t}\n\t\t\t\treturn void undefined;\n\t\t\t}\n\t\t\tif ($gOPD && (i + 1) >= parts.length) {\n\t\t\t\tvar desc = $gOPD(value, part);\n\t\t\t\tisOwn = !!desc;\n\n\t\t\t\t// By convention, when a data property is converted to an accessor\n\t\t\t\t// property to emulate a data property that does not suffer from\n\t\t\t\t// the override mistake, that accessor's getter is marked with\n\t\t\t\t// an `originalValue` property. Here, when we detect this, we\n\t\t\t\t// uphold the illusion by pretending to see that original data\n\t\t\t\t// property, i.e., returning the value rather than the getter\n\t\t\t\t// itself.\n\t\t\t\tif (isOwn && 'get' in desc && !('originalValue' in desc.get)) {\n\t\t\t\t\tvalue = desc.get;\n\t\t\t\t} else {\n\t\t\t\t\tvalue = value[part];\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tisOwn = hasOwn(value, part);\n\t\t\t\tvalue = value[part];\n\t\t\t}\n\n\t\t\tif (isOwn && !skipFurtherCaching) {\n\t\t\t\tINTRINSICS[intrinsicRealName] = value;\n\t\t\t}\n\t\t}\n\t}\n\treturn value;\n};\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\n\nvar callBindBasic = require('call-bind-apply-helpers');\n\n/** @type {(thisArg: string, searchString: string, position?: number) => number} */\nvar $indexOf = callBindBasic([GetIntrinsic('%String.prototype.indexOf%')]);\n\n/** @type {import('.')} */\nmodule.exports = function callBoundIntrinsic(name, allowMissing) {\n\t/* eslint no-extra-parens: 0 */\n\n\tvar intrinsic = /** @type {(this: unknown, ...args: unknown[]) => unknown} */ (GetIntrinsic(name, !!allowMissing));\n\tif (typeof intrinsic === 'function' && $indexOf(name, '.prototype.') > -1) {\n\t\treturn callBindBasic(/** @type {const} */ ([intrinsic]));\n\t}\n\treturn intrinsic;\n};\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\nvar callBound = require('call-bound');\nvar inspect = require('object-inspect');\n\nvar $TypeError = require('es-errors/type');\nvar $Map = GetIntrinsic('%Map%', true);\n\n/** @type {<K, V>(thisArg: Map<K, V>, key: K) => V} */\nvar $mapGet = callBound('Map.prototype.get', true);\n/** @type {<K, V>(thisArg: Map<K, V>, key: K, value: V) => void} */\nvar $mapSet = callBound('Map.prototype.set', true);\n/** @type {<K, V>(thisArg: Map<K, V>, key: K) => boolean} */\nvar $mapHas = callBound('Map.prototype.has', true);\n/** @type {<K, V>(thisArg: Map<K, V>, key: K) => boolean} */\nvar $mapDelete = callBound('Map.prototype.delete', true);\n/** @type {<K, V>(thisArg: Map<K, V>) => number} */\nvar $mapSize = callBound('Map.prototype.size', true);\n\n/** @type {import('.')} */\nmodule.exports = !!$Map && /** @type {Exclude<import('.'), false>} */ function getSideChannelMap() {\n\t/** @typedef {ReturnType<typeof getSideChannelMap>} Channel */\n\t/** @typedef {Parameters<Channel['get']>[0]} K */\n\t/** @typedef {Parameters<Channel['set']>[1]} V */\n\n\t/** @type {Map<K, V> | undefined} */ var $m;\n\n\t/** @type {Channel} */\n\tvar channel = {\n\t\tassert: function (key) {\n\t\t\tif (!channel.has(key)) {\n\t\t\t\tthrow new $TypeError('Side channel does not contain ' + inspect(key));\n\t\t\t}\n\t\t},\n\t\t'delete': function (key) {\n\t\t\tif ($m) {\n\t\t\t\tvar result = $mapDelete($m, key);\n\t\t\t\tif ($mapSize($m) === 0) {\n\t\t\t\t\t$m = void undefined;\n\t\t\t\t}\n\t\t\t\treturn result;\n\t\t\t}\n\t\t\treturn false;\n\t\t},\n\t\tget: function (key) { // eslint-disable-line consistent-return\n\t\t\tif ($m) {\n\t\t\t\treturn $mapGet($m, key);\n\t\t\t}\n\t\t},\n\t\thas: function (key) {\n\t\t\tif ($m) {\n\t\t\t\treturn $mapHas($m, key);\n\t\t\t}\n\t\t\treturn false;\n\t\t},\n\t\tset: function (key, value) {\n\t\t\tif (!$m) {\n\t\t\t\t// @ts-expect-error TS can't handle narrowing a variable inside a closure\n\t\t\t\t$m = new $Map();\n\t\t\t}\n\t\t\t$mapSet($m, key, value);\n\t\t}\n\t};\n\n\t// @ts-expect-error TODO: figure out why TS is erroring here\n\treturn channel;\n};\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\nvar callBound = require('call-bound');\nvar inspect = require('object-inspect');\nvar getSideChannelMap = require('side-channel-map');\n\nvar $TypeError = require('es-errors/type');\nvar $WeakMap = GetIntrinsic('%WeakMap%', true);\n\n/** @type {<K extends object, V>(thisArg: WeakMap<K, V>, key: K) => V} */\nvar $weakMapGet = callBound('WeakMap.prototype.get', true);\n/** @type {<K extends object, V>(thisArg: WeakMap<K, V>, key: K, value: V) => void} */\nvar $weakMapSet = callBound('WeakMap.prototype.set', true);\n/** @type {<K extends object, V>(thisArg: WeakMap<K, V>, key: K) => boolean} */\nvar $weakMapHas = callBound('WeakMap.prototype.has', true);\n/** @type {<K extends object, V>(thisArg: WeakMap<K, V>, key: K) => boolean} */\nvar $weakMapDelete = callBound('WeakMap.prototype.delete', true);\n\n/** @type {import('.')} */\nmodule.exports = $WeakMap\n\t? /** @type {Exclude<import('.'), false>} */ function getSideChannelWeakMap() {\n\t\t/** @typedef {ReturnType<typeof getSideChannelWeakMap>} Channel */\n\t\t/** @typedef {Parameters<Channel['get']>[0]} K */\n\t\t/** @typedef {Parameters<Channel['set']>[1]} V */\n\n\t\t/** @type {WeakMap<K & object, V> | undefined} */ var $wm;\n\t\t/** @type {Channel | undefined} */ var $m;\n\n\t\t/** @type {Channel} */\n\t\tvar channel = {\n\t\t\tassert: function (key) {\n\t\t\t\tif (!channel.has(key)) {\n\t\t\t\t\tthrow new $TypeError('Side channel does not contain ' + inspect(key));\n\t\t\t\t}\n\t\t\t},\n\t\t\t'delete': function (key) {\n\t\t\t\tif ($WeakMap && key && (typeof key === 'object' || typeof key === 'function')) {\n\t\t\t\t\tif ($wm) {\n\t\t\t\t\t\treturn $weakMapDelete($wm, key);\n\t\t\t\t\t}\n\t\t\t\t} else if (getSideChannelMap) {\n\t\t\t\t\tif ($m) {\n\t\t\t\t\t\treturn $m['delete'](key);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn false;\n\t\t\t},\n\t\t\tget: function (key) {\n\t\t\t\tif ($WeakMap && key && (typeof key === 'object' || typeof key === 'function')) {\n\t\t\t\t\tif ($wm) {\n\t\t\t\t\t\treturn $weakMapGet($wm, key);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn $m && $m.get(key);\n\t\t\t},\n\t\t\thas: function (key) {\n\t\t\t\tif ($WeakMap && key && (typeof key === 'object' || typeof key === 'function')) {\n\t\t\t\t\tif ($wm) {\n\t\t\t\t\t\treturn $weakMapHas($wm, key);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn !!$m && $m.has(key);\n\t\t\t},\n\t\t\tset: function (key, value) {\n\t\t\t\tif ($WeakMap && key && (typeof key === 'object' || typeof key === 'function')) {\n\t\t\t\t\tif (!$wm) {\n\t\t\t\t\t\t$wm = new $WeakMap();\n\t\t\t\t\t}\n\t\t\t\t\t$weakMapSet($wm, key, value);\n\t\t\t\t} else if (getSideChannelMap) {\n\t\t\t\t\tif (!$m) {\n\t\t\t\t\t\t$m = getSideChannelMap();\n\t\t\t\t\t}\n\t\t\t\t\t// eslint-disable-next-line no-extra-parens\n\t\t\t\t\t/** @type {NonNullable<typeof $m>} */ ($m).set(key, value);\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\t// @ts-expect-error TODO: figure out why this is erroring\n\t\treturn channel;\n\t}\n\t: getSideChannelMap;\n","'use strict';\n\nvar $TypeError = require('es-errors/type');\nvar inspect = require('object-inspect');\nvar getSideChannelList = require('side-channel-list');\nvar getSideChannelMap = require('side-channel-map');\nvar getSideChannelWeakMap = require('side-channel-weakmap');\n\nvar makeChannel = getSideChannelWeakMap || getSideChannelMap || getSideChannelList;\n\n/** @type {import('.')} */\nmodule.exports = function getSideChannel() {\n\t/** @typedef {ReturnType<typeof getSideChannel>} Channel */\n\n\t/** @type {Channel | undefined} */ var $channelData;\n\n\t/** @type {Channel} */\n\tvar channel = {\n\t\tassert: function (key) {\n\t\t\tif (!channel.has(key)) {\n\t\t\t\tthrow new $TypeError('Side channel does not contain ' + inspect(key));\n\t\t\t}\n\t\t},\n\t\t'delete': function (key) {\n\t\t\treturn !!$channelData && $channelData['delete'](key);\n\t\t},\n\t\tget: function (key) {\n\t\t\treturn $channelData && $channelData.get(key);\n\t\t},\n\t\thas: function (key) {\n\t\t\treturn !!$channelData && $channelData.has(key);\n\t\t},\n\t\tset: function (key, value) {\n\t\t\tif (!$channelData) {\n\t\t\t\t$channelData = makeChannel();\n\t\t\t}\n\n\t\t\t$channelData.set(key, value);\n\t\t}\n\t};\n\t// @ts-expect-error TODO: figure out why this is erroring\n\treturn channel;\n};\n","'use strict';\n\nvar replace = String.prototype.replace;\nvar percentTwenties = /%20/g;\n\nvar Format = {\n    RFC1738: 'RFC1738',\n    RFC3986: 'RFC3986'\n};\n\nmodule.exports = {\n    'default': Format.RFC3986,\n    formatters: {\n        RFC1738: function (value) {\n            return replace.call(value, percentTwenties, '+');\n        },\n        RFC3986: function (value) {\n            return String(value);\n        }\n    },\n    RFC1738: Format.RFC1738,\n    RFC3986: Format.RFC3986\n};\n","'use strict';\n\nvar formats = require('./formats');\n\nvar has = Object.prototype.hasOwnProperty;\nvar isArray = Array.isArray;\n\nvar hexTable = (function () {\n    var array = [];\n    for (var i = 0; i < 256; ++i) {\n        array.push('%' + ((i < 16 ? '0' : '') + i.toString(16)).toUpperCase());\n    }\n\n    return array;\n}());\n\nvar compactQueue = function compactQueue(queue) {\n    while (queue.length > 1) {\n        var item = queue.pop();\n        var obj = item.obj[item.prop];\n\n        if (isArray(obj)) {\n            var compacted = [];\n\n            for (var j = 0; j < obj.length; ++j) {\n                if (typeof obj[j] !== 'undefined') {\n                    compacted.push(obj[j]);\n                }\n            }\n\n            item.obj[item.prop] = compacted;\n        }\n    }\n};\n\nvar arrayToObject = function arrayToObject(source, options) {\n    var obj = options && options.plainObjects ? { __proto__: null } : {};\n    for (var i = 0; i < source.length; ++i) {\n        if (typeof source[i] !== 'undefined') {\n            obj[i] = source[i];\n        }\n    }\n\n    return obj;\n};\n\nvar merge = function merge(target, source, options) {\n    /* eslint no-param-reassign: 0 */\n    if (!source) {\n        return target;\n    }\n\n    if (typeof source !== 'object' && typeof source !== 'function') {\n        if (isArray(target)) {\n            target.push(source);\n        } else if (target && typeof target === 'object') {\n            if (\n                (options && (options.plainObjects || options.allowPrototypes))\n                || !has.call(Object.prototype, source)\n            ) {\n                target[source] = true;\n            }\n        } else {\n            return [target, source];\n        }\n\n        return target;\n    }\n\n    if (!target || typeof target !== 'object') {\n        return [target].concat(source);\n    }\n\n    var mergeTarget = target;\n    if (isArray(target) && !isArray(source)) {\n        mergeTarget = arrayToObject(target, options);\n    }\n\n    if (isArray(target) && isArray(source)) {\n        source.forEach(function (item, i) {\n            if (has.call(target, i)) {\n                var targetItem = target[i];\n                if (targetItem && typeof targetItem === 'object' && item && typeof item === 'object') {\n                    target[i] = merge(targetItem, item, options);\n                } else {\n                    target.push(item);\n                }\n            } else {\n                target[i] = item;\n            }\n        });\n        return target;\n    }\n\n    return Object.keys(source).reduce(function (acc, key) {\n        var value = source[key];\n\n        if (has.call(acc, key)) {\n            acc[key] = merge(acc[key], value, options);\n        } else {\n            acc[key] = value;\n        }\n        return acc;\n    }, mergeTarget);\n};\n\nvar assign = function assignSingleSource(target, source) {\n    return Object.keys(source).reduce(function (acc, key) {\n        acc[key] = source[key];\n        return acc;\n    }, target);\n};\n\nvar decode = function (str, defaultDecoder, charset) {\n    var strWithoutPlus = str.replace(/\\+/g, ' ');\n    if (charset === 'iso-8859-1') {\n        // unescape never throws, no try...catch needed:\n        return strWithoutPlus.replace(/%[0-9a-f]{2}/gi, unescape);\n    }\n    // utf-8\n    try {\n        return decodeURIComponent(strWithoutPlus);\n    } catch (e) {\n        return strWithoutPlus;\n    }\n};\n\nvar limit = 1024;\n\n/* eslint operator-linebreak: [2, \"before\"] */\n\nvar encode = function encode(str, defaultEncoder, charset, kind, format) {\n    // This code was originally written by Brian White (mscdex) for the io.js core querystring library.\n    // It has been adapted here for stricter adherence to RFC 3986\n    if (str.length === 0) {\n        return str;\n    }\n\n    var string = str;\n    if (typeof str === 'symbol') {\n        string = Symbol.prototype.toString.call(str);\n    } else if (typeof str !== 'string') {\n        string = String(str);\n    }\n\n    if (charset === 'iso-8859-1') {\n        return escape(string).replace(/%u[0-9a-f]{4}/gi, function ($0) {\n            return '%26%23' + parseInt($0.slice(2), 16) + '%3B';\n        });\n    }\n\n    var out = '';\n    for (var j = 0; j < string.length; j += limit) {\n        var segment = string.length >= limit ? string.slice(j, j + limit) : string;\n        var arr = [];\n\n        for (var i = 0; i < segment.length; ++i) {\n            var c = segment.charCodeAt(i);\n            if (\n                c === 0x2D // -\n                || c === 0x2E // .\n                || c === 0x5F // _\n                || c === 0x7E // ~\n                || (c >= 0x30 && c <= 0x39) // 0-9\n                || (c >= 0x41 && c <= 0x5A) // a-z\n                || (c >= 0x61 && c <= 0x7A) // A-Z\n                || (format === formats.RFC1738 && (c === 0x28 || c === 0x29)) // ( )\n            ) {\n                arr[arr.length] = segment.charAt(i);\n                continue;\n            }\n\n            if (c < 0x80) {\n                arr[arr.length] = hexTable[c];\n                continue;\n            }\n\n            if (c < 0x800) {\n                arr[arr.length] = hexTable[0xC0 | (c >> 6)]\n                    + hexTable[0x80 | (c & 0x3F)];\n                continue;\n            }\n\n            if (c < 0xD800 || c >= 0xE000) {\n                arr[arr.length] = hexTable[0xE0 | (c >> 12)]\n                    + hexTable[0x80 | ((c >> 6) & 0x3F)]\n                    + hexTable[0x80 | (c & 0x3F)];\n                continue;\n            }\n\n            i += 1;\n            c = 0x10000 + (((c & 0x3FF) << 10) | (segment.charCodeAt(i) & 0x3FF));\n\n            arr[arr.length] = hexTable[0xF0 | (c >> 18)]\n                + hexTable[0x80 | ((c >> 12) & 0x3F)]\n                + hexTable[0x80 | ((c >> 6) & 0x3F)]\n                + hexTable[0x80 | (c & 0x3F)];\n        }\n\n        out += arr.join('');\n    }\n\n    return out;\n};\n\nvar compact = function compact(value) {\n    var queue = [{ obj: { o: value }, prop: 'o' }];\n    var refs = [];\n\n    for (var i = 0; i < queue.length; ++i) {\n        var item = queue[i];\n        var obj = item.obj[item.prop];\n\n        var keys = Object.keys(obj);\n        for (var j = 0; j < keys.length; ++j) {\n            var key = keys[j];\n            var val = obj[key];\n            if (typeof val === 'object' && val !== null && refs.indexOf(val) === -1) {\n                queue.push({ obj: obj, prop: key });\n                refs.push(val);\n            }\n        }\n    }\n\n    compactQueue(queue);\n\n    return value;\n};\n\nvar isRegExp = function isRegExp(obj) {\n    return Object.prototype.toString.call(obj) === '[object RegExp]';\n};\n\nvar isBuffer = function isBuffer(obj) {\n    if (!obj || typeof obj !== 'object') {\n        return false;\n    }\n\n    return !!(obj.constructor && obj.constructor.isBuffer && obj.constructor.isBuffer(obj));\n};\n\nvar combine = function combine(a, b) {\n    return [].concat(a, b);\n};\n\nvar maybeMap = function maybeMap(val, fn) {\n    if (isArray(val)) {\n        var mapped = [];\n        for (var i = 0; i < val.length; i += 1) {\n            mapped.push(fn(val[i]));\n        }\n        return mapped;\n    }\n    return fn(val);\n};\n\nmodule.exports = {\n    arrayToObject: arrayToObject,\n    assign: assign,\n    combine: combine,\n    compact: compact,\n    decode: decode,\n    encode: encode,\n    isBuffer: isBuffer,\n    isRegExp: isRegExp,\n    maybeMap: maybeMap,\n    merge: merge\n};\n","'use strict';\n\nvar getSideChannel = require('side-channel');\nvar utils = require('./utils');\nvar formats = require('./formats');\nvar has = Object.prototype.hasOwnProperty;\n\nvar arrayPrefixGenerators = {\n    brackets: function brackets(prefix) {\n        return prefix + '[]';\n    },\n    comma: 'comma',\n    indices: function indices(prefix, key) {\n        return prefix + '[' + key + ']';\n    },\n    repeat: function repeat(prefix) {\n        return prefix;\n    }\n};\n\nvar isArray = Array.isArray;\nvar push = Array.prototype.push;\nvar pushToArray = function (arr, valueOrArray) {\n    push.apply(arr, isArray(valueOrArray) ? valueOrArray : [valueOrArray]);\n};\n\nvar toISO = Date.prototype.toISOString;\n\nvar defaultFormat = formats['default'];\nvar defaults = {\n    addQueryPrefix: false,\n    allowDots: false,\n    allowEmptyArrays: false,\n    arrayFormat: 'indices',\n    charset: 'utf-8',\n    charsetSentinel: false,\n    commaRoundTrip: false,\n    delimiter: '&',\n    encode: true,\n    encodeDotInKeys: false,\n    encoder: utils.encode,\n    encodeValuesOnly: false,\n    filter: void undefined,\n    format: defaultFormat,\n    formatter: formats.formatters[defaultFormat],\n    // deprecated\n    indices: false,\n    serializeDate: function serializeDate(date) {\n        return toISO.call(date);\n    },\n    skipNulls: false,\n    strictNullHandling: false\n};\n\nvar isNonNullishPrimitive = function isNonNullishPrimitive(v) {\n    return typeof v === 'string'\n        || typeof v === 'number'\n        || typeof v === 'boolean'\n        || typeof v === 'symbol'\n        || typeof v === 'bigint';\n};\n\nvar sentinel = {};\n\nvar stringify = function stringify(\n    object,\n    prefix,\n    generateArrayPrefix,\n    commaRoundTrip,\n    allowEmptyArrays,\n    strictNullHandling,\n    skipNulls,\n    encodeDotInKeys,\n    encoder,\n    filter,\n    sort,\n    allowDots,\n    serializeDate,\n    format,\n    formatter,\n    encodeValuesOnly,\n    charset,\n    sideChannel\n) {\n    var obj = object;\n\n    var tmpSc = sideChannel;\n    var step = 0;\n    var findFlag = false;\n    while ((tmpSc = tmpSc.get(sentinel)) !== void undefined && !findFlag) {\n        // Where object last appeared in the ref tree\n        var pos = tmpSc.get(object);\n        step += 1;\n        if (typeof pos !== 'undefined') {\n            if (pos === step) {\n                throw new RangeError('Cyclic object value');\n            } else {\n                findFlag = true; // Break while\n            }\n        }\n        if (typeof tmpSc.get(sentinel) === 'undefined') {\n            step = 0;\n        }\n    }\n\n    if (typeof filter === 'function') {\n        obj = filter(prefix, obj);\n    } else if (obj instanceof Date) {\n        obj = serializeDate(obj);\n    } else if (generateArrayPrefix === 'comma' && isArray(obj)) {\n        obj = utils.maybeMap(obj, function (value) {\n            if (value instanceof Date) {\n                return serializeDate(value);\n            }\n            return value;\n        });\n    }\n\n    if (obj === null) {\n        if (strictNullHandling) {\n            return encoder && !encodeValuesOnly ? encoder(prefix, defaults.encoder, charset, 'key', format) : prefix;\n        }\n\n        obj = '';\n    }\n\n    if (isNonNullishPrimitive(obj) || utils.isBuffer(obj)) {\n        if (encoder) {\n            var keyValue = encodeValuesOnly ? prefix : encoder(prefix, defaults.encoder, charset, 'key', format);\n            return [formatter(keyValue) + '=' + formatter(encoder(obj, defaults.encoder, charset, 'value', format))];\n        }\n        return [formatter(prefix) + '=' + formatter(String(obj))];\n    }\n\n    var values = [];\n\n    if (typeof obj === 'undefined') {\n        return values;\n    }\n\n    var objKeys;\n    if (generateArrayPrefix === 'comma' && isArray(obj)) {\n        // we need to join elements in\n        if (encodeValuesOnly && encoder) {\n            obj = utils.maybeMap(obj, encoder);\n        }\n        objKeys = [{ value: obj.length > 0 ? obj.join(',') || null : void undefined }];\n    } else if (isArray(filter)) {\n        objKeys = filter;\n    } else {\n        var keys = Object.keys(obj);\n        objKeys = sort ? keys.sort(sort) : keys;\n    }\n\n    var encodedPrefix = encodeDotInKeys ? String(prefix).replace(/\\./g, '%2E') : String(prefix);\n\n    var adjustedPrefix = commaRoundTrip && isArray(obj) && obj.length === 1 ? encodedPrefix + '[]' : encodedPrefix;\n\n    if (allowEmptyArrays && isArray(obj) && obj.length === 0) {\n        return adjustedPrefix + '[]';\n    }\n\n    for (var j = 0; j < objKeys.length; ++j) {\n        var key = objKeys[j];\n        var value = typeof key === 'object' && key && typeof key.value !== 'undefined'\n            ? key.value\n            : obj[key];\n\n        if (skipNulls && value === null) {\n            continue;\n        }\n\n        var encodedKey = allowDots && encodeDotInKeys ? String(key).replace(/\\./g, '%2E') : String(key);\n        var keyPrefix = isArray(obj)\n            ? typeof generateArrayPrefix === 'function' ? generateArrayPrefix(adjustedPrefix, encodedKey) : adjustedPrefix\n            : adjustedPrefix + (allowDots ? '.' + encodedKey : '[' + encodedKey + ']');\n\n        sideChannel.set(object, step);\n        var valueSideChannel = getSideChannel();\n        valueSideChannel.set(sentinel, sideChannel);\n        pushToArray(values, stringify(\n            value,\n            keyPrefix,\n            generateArrayPrefix,\n            commaRoundTrip,\n            allowEmptyArrays,\n            strictNullHandling,\n            skipNulls,\n            encodeDotInKeys,\n            generateArrayPrefix === 'comma' && encodeValuesOnly && isArray(obj) ? null : encoder,\n            filter,\n            sort,\n            allowDots,\n            serializeDate,\n            format,\n            formatter,\n            encodeValuesOnly,\n            charset,\n            valueSideChannel\n        ));\n    }\n\n    return values;\n};\n\nvar normalizeStringifyOptions = function normalizeStringifyOptions(opts) {\n    if (!opts) {\n        return defaults;\n    }\n\n    if (typeof opts.allowEmptyArrays !== 'undefined' && typeof opts.allowEmptyArrays !== 'boolean') {\n        throw new TypeError('`allowEmptyArrays` option can only be `true` or `false`, when provided');\n    }\n\n    if (typeof opts.encodeDotInKeys !== 'undefined' && typeof opts.encodeDotInKeys !== 'boolean') {\n        throw new TypeError('`encodeDotInKeys` option can only be `true` or `false`, when provided');\n    }\n\n    if (opts.encoder !== null && typeof opts.encoder !== 'undefined' && typeof opts.encoder !== 'function') {\n        throw new TypeError('Encoder has to be a function.');\n    }\n\n    var charset = opts.charset || defaults.charset;\n    if (typeof opts.charset !== 'undefined' && opts.charset !== 'utf-8' && opts.charset !== 'iso-8859-1') {\n        throw new TypeError('The charset option must be either utf-8, iso-8859-1, or undefined');\n    }\n\n    var format = formats['default'];\n    if (typeof opts.format !== 'undefined') {\n        if (!has.call(formats.formatters, opts.format)) {\n            throw new TypeError('Unknown format option provided.');\n        }\n        format = opts.format;\n    }\n    var formatter = formats.formatters[format];\n\n    var filter = defaults.filter;\n    if (typeof opts.filter === 'function' || isArray(opts.filter)) {\n        filter = opts.filter;\n    }\n\n    var arrayFormat;\n    if (opts.arrayFormat in arrayPrefixGenerators) {\n        arrayFormat = opts.arrayFormat;\n    } else if ('indices' in opts) {\n        arrayFormat = opts.indices ? 'indices' : 'repeat';\n    } else {\n        arrayFormat = defaults.arrayFormat;\n    }\n\n    if ('commaRoundTrip' in opts && typeof opts.commaRoundTrip !== 'boolean') {\n        throw new TypeError('`commaRoundTrip` must be a boolean, or absent');\n    }\n\n    var allowDots = typeof opts.allowDots === 'undefined' ? opts.encodeDotInKeys === true ? true : defaults.allowDots : !!opts.allowDots;\n\n    return {\n        addQueryPrefix: typeof opts.addQueryPrefix === 'boolean' ? opts.addQueryPrefix : defaults.addQueryPrefix,\n        allowDots: allowDots,\n        allowEmptyArrays: typeof opts.allowEmptyArrays === 'boolean' ? !!opts.allowEmptyArrays : defaults.allowEmptyArrays,\n        arrayFormat: arrayFormat,\n        charset: charset,\n        charsetSentinel: typeof opts.charsetSentinel === 'boolean' ? opts.charsetSentinel : defaults.charsetSentinel,\n        commaRoundTrip: !!opts.commaRoundTrip,\n        delimiter: typeof opts.delimiter === 'undefined' ? defaults.delimiter : opts.delimiter,\n        encode: typeof opts.encode === 'boolean' ? opts.encode : defaults.encode,\n        encodeDotInKeys: typeof opts.encodeDotInKeys === 'boolean' ? opts.encodeDotInKeys : defaults.encodeDotInKeys,\n        encoder: typeof opts.encoder === 'function' ? opts.encoder : defaults.encoder,\n        encodeValuesOnly: typeof opts.encodeValuesOnly === 'boolean' ? opts.encodeValuesOnly : defaults.encodeValuesOnly,\n        filter: filter,\n        format: format,\n        formatter: formatter,\n        serializeDate: typeof opts.serializeDate === 'function' ? opts.serializeDate : defaults.serializeDate,\n        skipNulls: typeof opts.skipNulls === 'boolean' ? opts.skipNulls : defaults.skipNulls,\n        sort: typeof opts.sort === 'function' ? opts.sort : null,\n        strictNullHandling: typeof opts.strictNullHandling === 'boolean' ? opts.strictNullHandling : defaults.strictNullHandling\n    };\n};\n\nmodule.exports = function (object, opts) {\n    var obj = object;\n    var options = normalizeStringifyOptions(opts);\n\n    var objKeys;\n    var filter;\n\n    if (typeof options.filter === 'function') {\n        filter = options.filter;\n        obj = filter('', obj);\n    } else if (isArray(options.filter)) {\n        filter = options.filter;\n        objKeys = filter;\n    }\n\n    var keys = [];\n\n    if (typeof obj !== 'object' || obj === null) {\n        return '';\n    }\n\n    var generateArrayPrefix = arrayPrefixGenerators[options.arrayFormat];\n    var commaRoundTrip = generateArrayPrefix === 'comma' && options.commaRoundTrip;\n\n    if (!objKeys) {\n        objKeys = Object.keys(obj);\n    }\n\n    if (options.sort) {\n        objKeys.sort(options.sort);\n    }\n\n    var sideChannel = getSideChannel();\n    for (var i = 0; i < objKeys.length; ++i) {\n        var key = objKeys[i];\n        var value = obj[key];\n\n        if (options.skipNulls && value === null) {\n            continue;\n        }\n        pushToArray(keys, stringify(\n            value,\n            key,\n            generateArrayPrefix,\n            commaRoundTrip,\n            options.allowEmptyArrays,\n            options.strictNullHandling,\n            options.skipNulls,\n            options.encodeDotInKeys,\n            options.encode ? options.encoder : null,\n            options.filter,\n            options.sort,\n            options.allowDots,\n            options.serializeDate,\n            options.format,\n            options.formatter,\n            options.encodeValuesOnly,\n            options.charset,\n            sideChannel\n        ));\n    }\n\n    var joined = keys.join(options.delimiter);\n    var prefix = options.addQueryPrefix === true ? '?' : '';\n\n    if (options.charsetSentinel) {\n        if (options.charset === 'iso-8859-1') {\n            // encodeURIComponent('&#10003;'), the \"numeric entity\" representation of a checkmark\n            prefix += 'utf8=%26%2310003%3B&';\n        } else {\n            // encodeURIComponent('✓')\n            prefix += 'utf8=%E2%9C%93&';\n        }\n    }\n\n    return joined.length > 0 ? prefix + joined : '';\n};\n","'use strict';\n\nvar utils = require('./utils');\n\nvar has = Object.prototype.hasOwnProperty;\nvar isArray = Array.isArray;\n\nvar defaults = {\n    allowDots: false,\n    allowEmptyArrays: false,\n    allowPrototypes: false,\n    allowSparse: false,\n    arrayLimit: 20,\n    charset: 'utf-8',\n    charsetSentinel: false,\n    comma: false,\n    decodeDotInKeys: false,\n    decoder: utils.decode,\n    delimiter: '&',\n    depth: 5,\n    duplicates: 'combine',\n    ignoreQueryPrefix: false,\n    interpretNumericEntities: false,\n    parameterLimit: 1000,\n    parseArrays: true,\n    plainObjects: false,\n    strictDepth: false,\n    strictNullHandling: false,\n    throwOnLimitExceeded: false\n};\n\nvar interpretNumericEntities = function (str) {\n    return str.replace(/&#(\\d+);/g, function ($0, numberStr) {\n        return String.fromCharCode(parseInt(numberStr, 10));\n    });\n};\n\nvar parseArrayValue = function (val, options, currentArrayLength) {\n    if (val && typeof val === 'string' && options.comma && val.indexOf(',') > -1) {\n        return val.split(',');\n    }\n\n    if (options.throwOnLimitExceeded && currentArrayLength >= options.arrayLimit) {\n        throw new RangeError('Array limit exceeded. Only ' + options.arrayLimit + ' element' + (options.arrayLimit === 1 ? '' : 's') + ' allowed in an array.');\n    }\n\n    return val;\n};\n\n// This is what browsers will submit when the ✓ character occurs in an\n// application/x-www-form-urlencoded body and the encoding of the page containing\n// the form is iso-8859-1, or when the submitted form has an accept-charset\n// attribute of iso-8859-1. Presumably also with other charsets that do not contain\n// the ✓ character, such as us-ascii.\nvar isoSentinel = 'utf8=%26%2310003%3B'; // encodeURIComponent('&#10003;')\n\n// These are the percent-encoded utf-8 octets representing a checkmark, indicating that the request actually is utf-8 encoded.\nvar charsetSentinel = 'utf8=%E2%9C%93'; // encodeURIComponent('✓')\n\nvar parseValues = function parseQueryStringValues(str, options) {\n    var obj = { __proto__: null };\n\n    var cleanStr = options.ignoreQueryPrefix ? str.replace(/^\\?/, '') : str;\n    cleanStr = cleanStr.replace(/%5B/gi, '[').replace(/%5D/gi, ']');\n\n    var limit = options.parameterLimit === Infinity ? undefined : options.parameterLimit;\n    var parts = cleanStr.split(\n        options.delimiter,\n        options.throwOnLimitExceeded ? limit + 1 : limit\n    );\n\n    if (options.throwOnLimitExceeded && parts.length > limit) {\n        throw new RangeError('Parameter limit exceeded. Only ' + limit + ' parameter' + (limit === 1 ? '' : 's') + ' allowed.');\n    }\n\n    var skipIndex = -1; // Keep track of where the utf8 sentinel was found\n    var i;\n\n    var charset = options.charset;\n    if (options.charsetSentinel) {\n        for (i = 0; i < parts.length; ++i) {\n            if (parts[i].indexOf('utf8=') === 0) {\n                if (parts[i] === charsetSentinel) {\n                    charset = 'utf-8';\n                } else if (parts[i] === isoSentinel) {\n                    charset = 'iso-8859-1';\n                }\n                skipIndex = i;\n                i = parts.length; // The eslint settings do not allow break;\n            }\n        }\n    }\n\n    for (i = 0; i < parts.length; ++i) {\n        if (i === skipIndex) {\n            continue;\n        }\n        var part = parts[i];\n\n        var bracketEqualsPos = part.indexOf(']=');\n        var pos = bracketEqualsPos === -1 ? part.indexOf('=') : bracketEqualsPos + 1;\n\n        var key;\n        var val;\n        if (pos === -1) {\n            key = options.decoder(part, defaults.decoder, charset, 'key');\n            val = options.strictNullHandling ? null : '';\n        } else {\n            key = options.decoder(part.slice(0, pos), defaults.decoder, charset, 'key');\n\n            val = utils.maybeMap(\n                parseArrayValue(\n                    part.slice(pos + 1),\n                    options,\n                    isArray(obj[key]) ? obj[key].length : 0\n                ),\n                function (encodedVal) {\n                    return options.decoder(encodedVal, defaults.decoder, charset, 'value');\n                }\n            );\n        }\n\n        if (val && options.interpretNumericEntities && charset === 'iso-8859-1') {\n            val = interpretNumericEntities(String(val));\n        }\n\n        if (part.indexOf('[]=') > -1) {\n            val = isArray(val) ? [val] : val;\n        }\n\n        var existing = has.call(obj, key);\n        if (existing && options.duplicates === 'combine') {\n            obj[key] = utils.combine(obj[key], val);\n        } else if (!existing || options.duplicates === 'last') {\n            obj[key] = val;\n        }\n    }\n\n    return obj;\n};\n\nvar parseObject = function (chain, val, options, valuesParsed) {\n    var currentArrayLength = 0;\n    if (chain.length > 0 && chain[chain.length - 1] === '[]') {\n        var parentKey = chain.slice(0, -1).join('');\n        currentArrayLength = Array.isArray(val) && val[parentKey] ? val[parentKey].length : 0;\n    }\n\n    var leaf = valuesParsed ? val : parseArrayValue(val, options, currentArrayLength);\n\n    for (var i = chain.length - 1; i >= 0; --i) {\n        var obj;\n        var root = chain[i];\n\n        if (root === '[]' && options.parseArrays) {\n            obj = options.allowEmptyArrays && (leaf === '' || (options.strictNullHandling && leaf === null))\n                ? []\n                : utils.combine([], leaf);\n        } else {\n            obj = options.plainObjects ? { __proto__: null } : {};\n            var cleanRoot = root.charAt(0) === '[' && root.charAt(root.length - 1) === ']' ? root.slice(1, -1) : root;\n            var decodedRoot = options.decodeDotInKeys ? cleanRoot.replace(/%2E/g, '.') : cleanRoot;\n            var index = parseInt(decodedRoot, 10);\n            if (!options.parseArrays && decodedRoot === '') {\n                obj = { 0: leaf };\n            } else if (\n                !isNaN(index)\n                && root !== decodedRoot\n                && String(index) === decodedRoot\n                && index >= 0\n                && (options.parseArrays && index <= options.arrayLimit)\n            ) {\n                obj = [];\n                obj[index] = leaf;\n            } else if (decodedRoot !== '__proto__') {\n                obj[decodedRoot] = leaf;\n            }\n        }\n\n        leaf = obj;\n    }\n\n    return leaf;\n};\n\nvar parseKeys = function parseQueryStringKeys(givenKey, val, options, valuesParsed) {\n    if (!givenKey) {\n        return;\n    }\n\n    // Transform dot notation to bracket notation\n    var key = options.allowDots ? givenKey.replace(/\\.([^.[]+)/g, '[$1]') : givenKey;\n\n    // The regex chunks\n\n    var brackets = /(\\[[^[\\]]*])/;\n    var child = /(\\[[^[\\]]*])/g;\n\n    // Get the parent\n\n    var segment = options.depth > 0 && brackets.exec(key);\n    var parent = segment ? key.slice(0, segment.index) : key;\n\n    // Stash the parent if it exists\n\n    var keys = [];\n    if (parent) {\n        // If we aren't using plain objects, optionally prefix keys that would overwrite object prototype properties\n        if (!options.plainObjects && has.call(Object.prototype, parent)) {\n            if (!options.allowPrototypes) {\n                return;\n            }\n        }\n\n        keys.push(parent);\n    }\n\n    // Loop through children appending to the array until we hit depth\n\n    var i = 0;\n    while (options.depth > 0 && (segment = child.exec(key)) !== null && i < options.depth) {\n        i += 1;\n        if (!options.plainObjects && has.call(Object.prototype, segment[1].slice(1, -1))) {\n            if (!options.allowPrototypes) {\n                return;\n            }\n        }\n        keys.push(segment[1]);\n    }\n\n    // If there's a remainder, check strictDepth option for throw, else just add whatever is left\n\n    if (segment) {\n        if (options.strictDepth === true) {\n            throw new RangeError('Input depth exceeded depth option of ' + options.depth + ' and strictDepth is true');\n        }\n        keys.push('[' + key.slice(segment.index) + ']');\n    }\n\n    return parseObject(keys, val, options, valuesParsed);\n};\n\nvar normalizeParseOptions = function normalizeParseOptions(opts) {\n    if (!opts) {\n        return defaults;\n    }\n\n    if (typeof opts.allowEmptyArrays !== 'undefined' && typeof opts.allowEmptyArrays !== 'boolean') {\n        throw new TypeError('`allowEmptyArrays` option can only be `true` or `false`, when provided');\n    }\n\n    if (typeof opts.decodeDotInKeys !== 'undefined' && typeof opts.decodeDotInKeys !== 'boolean') {\n        throw new TypeError('`decodeDotInKeys` option can only be `true` or `false`, when provided');\n    }\n\n    if (opts.decoder !== null && typeof opts.decoder !== 'undefined' && typeof opts.decoder !== 'function') {\n        throw new TypeError('Decoder has to be a function.');\n    }\n\n    if (typeof opts.charset !== 'undefined' && opts.charset !== 'utf-8' && opts.charset !== 'iso-8859-1') {\n        throw new TypeError('The charset option must be either utf-8, iso-8859-1, or undefined');\n    }\n\n    if (typeof opts.throwOnLimitExceeded !== 'undefined' && typeof opts.throwOnLimitExceeded !== 'boolean') {\n        throw new TypeError('`throwOnLimitExceeded` option must be a boolean');\n    }\n\n    var charset = typeof opts.charset === 'undefined' ? defaults.charset : opts.charset;\n\n    var duplicates = typeof opts.duplicates === 'undefined' ? defaults.duplicates : opts.duplicates;\n\n    if (duplicates !== 'combine' && duplicates !== 'first' && duplicates !== 'last') {\n        throw new TypeError('The duplicates option must be either combine, first, or last');\n    }\n\n    var allowDots = typeof opts.allowDots === 'undefined' ? opts.decodeDotInKeys === true ? true : defaults.allowDots : !!opts.allowDots;\n\n    return {\n        allowDots: allowDots,\n        allowEmptyArrays: typeof opts.allowEmptyArrays === 'boolean' ? !!opts.allowEmptyArrays : defaults.allowEmptyArrays,\n        allowPrototypes: typeof opts.allowPrototypes === 'boolean' ? opts.allowPrototypes : defaults.allowPrototypes,\n        allowSparse: typeof opts.allowSparse === 'boolean' ? opts.allowSparse : defaults.allowSparse,\n        arrayLimit: typeof opts.arrayLimit === 'number' ? opts.arrayLimit : defaults.arrayLimit,\n        charset: charset,\n        charsetSentinel: typeof opts.charsetSentinel === 'boolean' ? opts.charsetSentinel : defaults.charsetSentinel,\n        comma: typeof opts.comma === 'boolean' ? opts.comma : defaults.comma,\n        decodeDotInKeys: typeof opts.decodeDotInKeys === 'boolean' ? opts.decodeDotInKeys : defaults.decodeDotInKeys,\n        decoder: typeof opts.decoder === 'function' ? opts.decoder : defaults.decoder,\n        delimiter: typeof opts.delimiter === 'string' || utils.isRegExp(opts.delimiter) ? opts.delimiter : defaults.delimiter,\n        // eslint-disable-next-line no-implicit-coercion, no-extra-parens\n        depth: (typeof opts.depth === 'number' || opts.depth === false) ? +opts.depth : defaults.depth,\n        duplicates: duplicates,\n        ignoreQueryPrefix: opts.ignoreQueryPrefix === true,\n        interpretNumericEntities: typeof opts.interpretNumericEntities === 'boolean' ? opts.interpretNumericEntities : defaults.interpretNumericEntities,\n        parameterLimit: typeof opts.parameterLimit === 'number' ? opts.parameterLimit : defaults.parameterLimit,\n        parseArrays: opts.parseArrays !== false,\n        plainObjects: typeof opts.plainObjects === 'boolean' ? opts.plainObjects : defaults.plainObjects,\n        strictDepth: typeof opts.strictDepth === 'boolean' ? !!opts.strictDepth : defaults.strictDepth,\n        strictNullHandling: typeof opts.strictNullHandling === 'boolean' ? opts.strictNullHandling : defaults.strictNullHandling,\n        throwOnLimitExceeded: typeof opts.throwOnLimitExceeded === 'boolean' ? opts.throwOnLimitExceeded : false\n    };\n};\n\nmodule.exports = function (str, opts) {\n    var options = normalizeParseOptions(opts);\n\n    if (str === '' || str === null || typeof str === 'undefined') {\n        return options.plainObjects ? { __proto__: null } : {};\n    }\n\n    var tempObj = typeof str === 'string' ? parseValues(str, options) : str;\n    var obj = options.plainObjects ? { __proto__: null } : {};\n\n    // Iterate over the keys and setup the new object\n\n    var keys = Object.keys(tempObj);\n    for (var i = 0; i < keys.length; ++i) {\n        var key = keys[i];\n        var newObj = parseKeys(key, tempObj[key], options, typeof str === 'string');\n        obj = utils.merge(obj, newObj, options);\n    }\n\n    if (options.allowSparse === true) {\n        return obj;\n    }\n\n    return utils.compact(obj);\n};\n","'use strict';\n\nvar stringify = require('./stringify');\nvar parse = require('./parse');\nvar formats = require('./formats');\n\nmodule.exports = {\n    formats: formats,\n    parse: parse,\n    stringify: stringify\n};\n","var e=\"colors\",t=\"sizes\",r=\"space\",n={gap:r,gridGap:r,columnGap:r,gridColumnGap:r,rowGap:r,gridRowGap:r,inset:r,insetBlock:r,insetBlockEnd:r,insetBlockStart:r,insetInline:r,insetInlineEnd:r,insetInlineStart:r,margin:r,marginTop:r,marginRight:r,marginBottom:r,marginLeft:r,marginBlock:r,marginBlockEnd:r,marginBlockStart:r,marginInline:r,marginInlineEnd:r,marginInlineStart:r,padding:r,paddingTop:r,paddingRight:r,paddingBottom:r,paddingLeft:r,paddingBlock:r,paddingBlockEnd:r,paddingBlockStart:r,paddingInline:r,paddingInlineEnd:r,paddingInlineStart:r,top:r,right:r,bottom:r,left:r,scrollMargin:r,scrollMarginTop:r,scrollMarginRight:r,scrollMarginBottom:r,scrollMarginLeft:r,scrollMarginX:r,scrollMarginY:r,scrollMarginBlock:r,scrollMarginBlockEnd:r,scrollMarginBlockStart:r,scrollMarginInline:r,scrollMarginInlineEnd:r,scrollMarginInlineStart:r,scrollPadding:r,scrollPaddingTop:r,scrollPaddingRight:r,scrollPaddingBottom:r,scrollPaddingLeft:r,scrollPaddingX:r,scrollPaddingY:r,scrollPaddingBlock:r,scrollPaddingBlockEnd:r,scrollPaddingBlockStart:r,scrollPaddingInline:r,scrollPaddingInlineEnd:r,scrollPaddingInlineStart:r,fontSize:\"fontSizes\",background:e,backgroundColor:e,backgroundImage:e,borderImage:e,border:e,borderBlock:e,borderBlockEnd:e,borderBlockStart:e,borderBottom:e,borderBottomColor:e,borderColor:e,borderInline:e,borderInlineEnd:e,borderInlineStart:e,borderLeft:e,borderLeftColor:e,borderRight:e,borderRightColor:e,borderTop:e,borderTopColor:e,caretColor:e,color:e,columnRuleColor:e,fill:e,outline:e,outlineColor:e,stroke:e,textDecorationColor:e,fontFamily:\"fonts\",fontWeight:\"fontWeights\",lineHeight:\"lineHeights\",letterSpacing:\"letterSpacings\",blockSize:t,minBlockSize:t,maxBlockSize:t,inlineSize:t,minInlineSize:t,maxInlineSize:t,width:t,minWidth:t,maxWidth:t,height:t,minHeight:t,maxHeight:t,flexBasis:t,gridTemplateColumns:t,gridTemplateRows:t,borderWidth:\"borderWidths\",borderTopWidth:\"borderWidths\",borderRightWidth:\"borderWidths\",borderBottomWidth:\"borderWidths\",borderLeftWidth:\"borderWidths\",borderStyle:\"borderStyles\",borderTopStyle:\"borderStyles\",borderRightStyle:\"borderStyles\",borderBottomStyle:\"borderStyles\",borderLeftStyle:\"borderStyles\",borderRadius:\"radii\",borderTopLeftRadius:\"radii\",borderTopRightRadius:\"radii\",borderBottomRightRadius:\"radii\",borderBottomLeftRadius:\"radii\",boxShadow:\"shadows\",textShadow:\"shadows\",transition:\"transitions\",zIndex:\"zIndices\"},i=(e,t)=>\"function\"==typeof t?{\"()\":Function.prototype.toString.call(t)}:t,o=()=>{const e=Object.create(null);return(t,r,...n)=>{const o=(e=>JSON.stringify(e,i))(t);return o in e?e[o]:e[o]=r(t,...n)}},l=Symbol.for(\"sxs.internal\"),s=(e,t)=>Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)),a=e=>{for(const t in e)return!0;return!1},{hasOwnProperty:c}=Object.prototype,d=e=>e.includes(\"-\")?e:e.replace(/[A-Z]/g,(e=>\"-\"+e.toLowerCase())),g=/\\s+(?![^()]*\\))/,p=e=>t=>e(...\"string\"==typeof t?String(t).split(g):[t]),u={appearance:e=>({WebkitAppearance:e,appearance:e}),backfaceVisibility:e=>({WebkitBackfaceVisibility:e,backfaceVisibility:e}),backdropFilter:e=>({WebkitBackdropFilter:e,backdropFilter:e}),backgroundClip:e=>({WebkitBackgroundClip:e,backgroundClip:e}),boxDecorationBreak:e=>({WebkitBoxDecorationBreak:e,boxDecorationBreak:e}),clipPath:e=>({WebkitClipPath:e,clipPath:e}),content:e=>({content:e.includes('\"')||e.includes(\"'\")||/^([A-Za-z]+\\([^]*|[^]*-quote|inherit|initial|none|normal|revert|unset)$/.test(e)?e:`\"${e}\"`}),hyphens:e=>({WebkitHyphens:e,hyphens:e}),maskImage:e=>({WebkitMaskImage:e,maskImage:e}),maskSize:e=>({WebkitMaskSize:e,maskSize:e}),tabSize:e=>({MozTabSize:e,tabSize:e}),textSizeAdjust:e=>({WebkitTextSizeAdjust:e,textSizeAdjust:e}),userSelect:e=>({WebkitUserSelect:e,userSelect:e}),marginBlock:p(((e,t)=>({marginBlockStart:e,marginBlockEnd:t||e}))),marginInline:p(((e,t)=>({marginInlineStart:e,marginInlineEnd:t||e}))),maxSize:p(((e,t)=>({maxBlockSize:e,maxInlineSize:t||e}))),minSize:p(((e,t)=>({minBlockSize:e,minInlineSize:t||e}))),paddingBlock:p(((e,t)=>({paddingBlockStart:e,paddingBlockEnd:t||e}))),paddingInline:p(((e,t)=>({paddingInlineStart:e,paddingInlineEnd:t||e})))},h=/([\\d.]+)([^]*)/,f=(e,t)=>e.length?e.reduce(((e,r)=>(e.push(...t.map((e=>e.includes(\"&\")?e.replace(/&/g,/[ +>|~]/.test(r)&&/&.*&/.test(e)?`:is(${r})`:r):r+\" \"+e))),e)),[]):t,m=(e,t)=>e in b&&\"string\"==typeof t?t.replace(/^((?:[^]*[^\\w-])?)(fit-content|stretch)((?:[^\\w-][^]*)?)$/,((t,r,n,i)=>r+(\"stretch\"===n?`-moz-available${i};${d(e)}:${r}-webkit-fill-available`:`-moz-fit-content${i};${d(e)}:${r}fit-content`)+i)):String(t),b={blockSize:1,height:1,inlineSize:1,maxBlockSize:1,maxHeight:1,maxInlineSize:1,maxWidth:1,minBlockSize:1,minHeight:1,minInlineSize:1,minWidth:1,width:1},S=e=>e?e+\"-\":\"\",k=(e,t,r)=>e.replace(/([+-])?((?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:[Ee][+-]?\\d+)?)?(\\$|--)([$\\w-]+)/g,((e,n,i,o,l)=>\"$\"==o==!!i?e:(n||\"--\"==o?\"calc(\":\"\")+\"var(--\"+(\"$\"===o?S(t)+(l.includes(\"$\")?\"\":S(r))+l.replace(/\\$/g,\"-\"):l)+\")\"+(n||\"--\"==o?\"*\"+(n||\"\")+(i||\"1\")+\")\":\"\"))),y=/\\s*,\\s*(?![^()]*\\))/,B=Object.prototype.toString,$=(e,t,r,n,i)=>{let o,l,s;const a=(e,t,r)=>{let c,g;const p=e=>{for(c in e){const R=64===c.charCodeAt(0),z=R&&Array.isArray(e[c])?e[c]:[e[c]];for(g of z){const e=/[A-Z]/.test($=c)?$:$.replace(/-[^]/g,(e=>e[1].toUpperCase())),z=\"object\"==typeof g&&g&&g.toString===B&&(!n.utils[e]||!t.length);if(e in n.utils&&!z){const t=n.utils[e];if(t!==l){l=t,p(t(g)),l=null;continue}}else if(e in u){const t=u[e];if(t!==s){s=t,p(t(g)),s=null;continue}}if(R&&(b=c.slice(1)in n.media?\"@media \"+n.media[c.slice(1)]:c,c=b.replace(/\\(\\s*([\\w-]+)\\s*(=|<|<=|>|>=)\\s*([\\w-]+)\\s*(?:(<|<=|>|>=)\\s*([\\w-]+)\\s*)?\\)/g,((e,t,r,n,i,o)=>{const l=h.test(t),s=.0625*(l?-1:1),[a,c]=l?[n,t]:[t,n];return\"(\"+(\"=\"===r[0]?\"\":\">\"===r[0]===l?\"max-\":\"min-\")+a+\":\"+(\"=\"!==r[0]&&1===r.length?c.replace(h,((e,t,n)=>Number(t)+s*(\">\"===r?1:-1)+n)):c)+(i?\") and (\"+(\">\"===i[0]?\"min-\":\"max-\")+a+\":\"+(1===i.length?o.replace(h,((e,t,r)=>Number(t)+s*(\">\"===i?-1:1)+r)):o):\"\")+\")\"}))),z){const e=R?r.concat(c):[...r],n=R?[...t]:f(t,c.split(y));void 0!==o&&i(x(...o)),o=void 0,a(g,n,e)}else void 0===o&&(o=[[],t,r]),c=R||36!==c.charCodeAt(0)?c:`--${S(n.prefix)}${c.slice(1).replace(/\\$/g,\"-\")}`,g=z?g:\"number\"==typeof g?g&&e in I?String(g)+\"px\":String(g):k(m(e,null==g?\"\":g),n.prefix,n.themeMap[e]),o[0].push(`${R?`${c} `:`${d(c)}:`}${g}`)}}var b,$};p(e),void 0!==o&&i(x(...o)),o=void 0};a(e,t,r)},x=(e,t,r)=>`${r.map((e=>`${e}{`)).join(\"\")}${t.length?`${t.join(\",\")}{`:\"\"}${e.join(\";\")}${t.length?\"}\":\"\"}${Array(r.length?r.length+1:0).join(\"}\")}`,I={animationDelay:1,animationDuration:1,backgroundSize:1,blockSize:1,border:1,borderBlock:1,borderBlockEnd:1,borderBlockEndWidth:1,borderBlockStart:1,borderBlockStartWidth:1,borderBlockWidth:1,borderBottom:1,borderBottomLeftRadius:1,borderBottomRightRadius:1,borderBottomWidth:1,borderEndEndRadius:1,borderEndStartRadius:1,borderInlineEnd:1,borderInlineEndWidth:1,borderInlineStart:1,borderInlineStartWidth:1,borderInlineWidth:1,borderLeft:1,borderLeftWidth:1,borderRadius:1,borderRight:1,borderRightWidth:1,borderSpacing:1,borderStartEndRadius:1,borderStartStartRadius:1,borderTop:1,borderTopLeftRadius:1,borderTopRightRadius:1,borderTopWidth:1,borderWidth:1,bottom:1,columnGap:1,columnRule:1,columnRuleWidth:1,columnWidth:1,containIntrinsicSize:1,flexBasis:1,fontSize:1,gap:1,gridAutoColumns:1,gridAutoRows:1,gridTemplateColumns:1,gridTemplateRows:1,height:1,inlineSize:1,inset:1,insetBlock:1,insetBlockEnd:1,insetBlockStart:1,insetInline:1,insetInlineEnd:1,insetInlineStart:1,left:1,letterSpacing:1,margin:1,marginBlock:1,marginBlockEnd:1,marginBlockStart:1,marginBottom:1,marginInline:1,marginInlineEnd:1,marginInlineStart:1,marginLeft:1,marginRight:1,marginTop:1,maxBlockSize:1,maxHeight:1,maxInlineSize:1,maxWidth:1,minBlockSize:1,minHeight:1,minInlineSize:1,minWidth:1,offsetDistance:1,offsetRotate:1,outline:1,outlineOffset:1,outlineWidth:1,overflowClipMargin:1,padding:1,paddingBlock:1,paddingBlockEnd:1,paddingBlockStart:1,paddingBottom:1,paddingInline:1,paddingInlineEnd:1,paddingInlineStart:1,paddingLeft:1,paddingRight:1,paddingTop:1,perspective:1,right:1,rowGap:1,scrollMargin:1,scrollMarginBlock:1,scrollMarginBlockEnd:1,scrollMarginBlockStart:1,scrollMarginBottom:1,scrollMarginInline:1,scrollMarginInlineEnd:1,scrollMarginInlineStart:1,scrollMarginLeft:1,scrollMarginRight:1,scrollMarginTop:1,scrollPadding:1,scrollPaddingBlock:1,scrollPaddingBlockEnd:1,scrollPaddingBlockStart:1,scrollPaddingBottom:1,scrollPaddingInline:1,scrollPaddingInlineEnd:1,scrollPaddingInlineStart:1,scrollPaddingLeft:1,scrollPaddingRight:1,scrollPaddingTop:1,shapeMargin:1,textDecoration:1,textDecorationThickness:1,textIndent:1,textUnderlineOffset:1,top:1,transitionDelay:1,transitionDuration:1,verticalAlign:1,width:1,wordSpacing:1},R=e=>String.fromCharCode(e+(e>25?39:97)),z=e=>(e=>{let t,r=\"\";for(t=Math.abs(e);t>52;t=t/52|0)r=R(t%52)+r;return R(t%52)+r})(((e,t)=>{let r=t.length;for(;r;)e=33*e^t.charCodeAt(--r);return e})(5381,JSON.stringify(e))>>>0),W=[\"themed\",\"global\",\"styled\",\"onevar\",\"resonevar\",\"allvar\",\"inline\"],j=e=>{if(e.href&&!e.href.startsWith(location.origin))return!1;try{return!!e.cssRules}catch(e){return!1}},E=e=>{let t;const r=()=>{const{cssRules:e}=t.sheet;return[].map.call(e,((r,n)=>{const{cssText:i}=r;let o=\"\";if(i.startsWith(\"--sxs\"))return\"\";if(e[n-1]&&(o=e[n-1].cssText).startsWith(\"--sxs\")){if(!r.cssRules.length)return\"\";for(const e in t.rules)if(t.rules[e].group===r)return`--sxs{--sxs:${[...t.rules[e].cache].join(\" \")}}${i}`;return r.cssRules.length?`${o}${i}`:\"\"}return i})).join(\"\")},n=()=>{if(t){const{rules:e,sheet:r}=t;if(!r.deleteRule){for(;3===Object(Object(r.cssRules)[0]).type;)r.cssRules.splice(0,1);r.cssRules=[]}for(const t in e)delete e[t]}const i=Object(e).styleSheets||[];for(const e of i)if(j(e)){for(let i=0,o=e.cssRules;o[i];++i){const l=Object(o[i]);if(1!==l.type)continue;const s=Object(o[i+1]);if(4!==s.type)continue;++i;const{cssText:a}=l;if(!a.startsWith(\"--sxs\"))continue;const c=a.slice(14,-3).trim().split(/\\s+/),d=W[c[0]];d&&(t||(t={sheet:e,reset:n,rules:{},toString:r}),t.rules[d]={group:s,index:i,cache:new Set(c)})}if(t)break}if(!t){const i=(e,t)=>({type:t,cssRules:[],insertRule(e,t){this.cssRules.splice(t,0,i(e,{import:3,undefined:1}[(e.toLowerCase().match(/^@([a-z]+)/)||[])[1]]||4))},get cssText(){return\"@media{}\"===e?`@media{${[].map.call(this.cssRules,(e=>e.cssText)).join(\"\")}}`:e}});t={sheet:e?(e.head||e).appendChild(document.createElement(\"style\")).sheet:i(\"\",\"text/css\"),rules:{},reset:n,toString:r}}const{sheet:o,rules:l}=t;for(let e=W.length-1;e>=0;--e){const t=W[e];if(!l[t]){const r=W[e+1],n=l[r]?l[r].index:o.cssRules.length;o.insertRule(\"@media{}\",n),o.insertRule(`--sxs{--sxs:${e}}`,n),l[t]={group:o.cssRules[n+1],index:n,cache:new Set([e])}}v(l[t])}};return n(),t},v=e=>{const t=e.group;let r=t.cssRules.length;e.apply=e=>{try{t.insertRule(e,r),++r}catch(e){}}},T=Symbol(),w=o(),M=(e,t)=>w(e,(()=>(...r)=>{let n={type:null,composers:new Set};for(const t of r)if(null!=t)if(t[l]){null==n.type&&(n.type=t[l].type);for(const e of t[l].composers)n.composers.add(e)}else t.constructor!==Object||t.$$typeof?null==n.type&&(n.type=t):n.composers.add(C(t,e));return null==n.type&&(n.type=\"span\"),n.composers.size||n.composers.add([\"PJLV\",{},[],[],{},[]]),P(e,n,t)})),C=({variants:e,compoundVariants:t,defaultVariants:r,...n},i)=>{const o=`${S(i.prefix)}c-${z(n)}`,l=[],s=[],d=Object.create(null),g=[];for(const e in r)d[e]=String(r[e]);if(\"object\"==typeof e&&e)for(const t in e){p=d,u=t,c.call(p,u)||(d[t]=\"undefined\");const r=e[t];for(const e in r){const n={[t]:String(e)};\"undefined\"===String(e)&&g.push(t);const i=r[e],o=[n,i,!a(i)];l.push(o)}}var p,u;if(\"object\"==typeof t&&t)for(const e of t){let{css:t,...r}=e;t=\"object\"==typeof t&&t||{};for(const e in r)r[e]=String(r[e]);const n=[r,t,!a(t)];s.push(n)}return[o,n,l,s,d,g]},P=(e,t,r)=>{const[n,i,o,a]=L(t.composers),c=\"function\"==typeof t.type||t.type.$$typeof?(e=>{function t(){for(let r=0;r<t[T].length;r++){const[n,i]=t[T][r];e.rules[n].apply(i)}return t[T]=[],null}return t[T]=[],t.rules={},W.forEach((e=>t.rules[e]={apply:r=>t[T].push([e,r])})),t})(r):null,d=(c||r).rules,g=`.${n}${i.length>1?`:where(.${i.slice(1).join(\".\")})`:\"\"}`,p=l=>{l=\"object\"==typeof l&&l||A;const{css:s,...p}=l,u={};for(const e in o)if(delete p[e],e in l){let t=l[e];\"object\"==typeof t&&t?u[e]={\"@initial\":o[e],...t}:(t=String(t),u[e]=\"undefined\"!==t||a.has(e)?t:o[e])}else u[e]=o[e];const h=new Set([...i]);for(const[n,i,o,l]of t.composers){r.rules.styled.cache.has(n)||(r.rules.styled.cache.add(n),$(i,[`.${n}`],[],e,(e=>{d.styled.apply(e)})));const t=O(o,u,e.media),s=O(l,u,e.media,!0);for(const i of t)if(void 0!==i)for(const[t,o,l]of i){const i=`${n}-${z(o)}-${t}`;h.add(i);const s=(l?r.rules.resonevar:r.rules.onevar).cache,a=l?d.resonevar:d.onevar;s.has(i)||(s.add(i),$(o,[`.${i}`],[],e,(e=>{a.apply(e)})))}for(const t of s)if(void 0!==t)for(const[i,o]of t){const t=`${n}-${z(o)}-${i}`;h.add(t),r.rules.allvar.cache.has(t)||(r.rules.allvar.cache.add(t),$(o,[`.${t}`],[],e,(e=>{d.allvar.apply(e)})))}}if(\"object\"==typeof s&&s){const t=`${n}-i${z(s)}-css`;h.add(t),r.rules.inline.cache.has(t)||(r.rules.inline.cache.add(t),$(s,[`.${t}`],[],e,(e=>{d.inline.apply(e)})))}for(const e of String(l.className||\"\").trim().split(/\\s+/))e&&h.add(e);const f=p.className=[...h].join(\" \");return{type:t.type,className:f,selector:g,props:p,toString:()=>f,deferredInjector:c}};return s(p,{className:n,selector:g,[l]:t,toString:()=>(r.rules.styled.cache.has(n)||p(),n)})},L=e=>{let t=\"\";const r=[],n={},i=[];for(const[o,,,,l,s]of e){\"\"===t&&(t=o),r.push(o),i.push(...s);for(const e in l){const t=l[e];(void 0===n[e]||\"undefined\"!==t||s.includes(t))&&(n[e]=t)}}return[t,r,n,new Set(i)]},O=(e,t,r,n)=>{const i=[];e:for(let[o,l,s]of e){if(s)continue;let e,a=0,c=!1;for(e in o){const n=o[e];let i=t[e];if(i!==n){if(\"object\"!=typeof i||!i)continue e;{let e,t,o=0;for(const l in i){if(n===String(i[l])){if(\"@initial\"!==l){const e=l.slice(1);(t=t||[]).push(e in r?r[e]:l.replace(/^@media ?/,\"\")),c=!0}a+=o,e=!0}++o}if(t&&t.length&&(l={[\"@media \"+t.join(\", \")]:l}),!e)continue e}}}(i[a]=i[a]||[]).push([n?\"cv\":`${e}-${o[e]}`,l,c])}return i},A={},N=o(),D=(e,t)=>N(e,(()=>(...r)=>{const n=()=>{for(let n of r){n=\"object\"==typeof n&&n||{};let r=z(n);if(!t.rules.global.cache.has(r)){if(t.rules.global.cache.add(r),\"@import\"in n){let e=[].indexOf.call(t.sheet.cssRules,t.rules.themed.group)-1;for(let r of[].concat(n[\"@import\"]))r=r.includes('\"')||r.includes(\"'\")?r:`\"${r}\"`,t.sheet.insertRule(`@import ${r};`,e++);delete n[\"@import\"]}$(n,[],[],e,(e=>{t.rules.global.apply(e)}))}}return\"\"};return s(n,{toString:n})})),H=o(),V=(e,t)=>H(e,(()=>r=>{const n=`${S(e.prefix)}k-${z(r)}`,i=()=>{if(!t.rules.global.cache.has(n)){t.rules.global.cache.add(n);const i=[];$(r,[],[],e,(e=>i.push(e)));const o=`@keyframes ${n}{${i.join(\"\")}}`;t.rules.global.apply(o)}return n};return s(i,{get name(){return i()},toString:i})})),G=class{constructor(e,t,r,n){this.token=null==e?\"\":String(e),this.value=null==t?\"\":String(t),this.scale=null==r?\"\":String(r),this.prefix=null==n?\"\":String(n)}get computedValue(){return\"var(\"+this.variable+\")\"}get variable(){return\"--\"+S(this.prefix)+S(this.scale)+this.token}toString(){return this.computedValue}},F=o(),J=(e,t)=>F(e,(()=>(r,n)=>{n=\"object\"==typeof r&&r||Object(n);const i=`.${r=(r=\"string\"==typeof r?r:\"\")||`${S(e.prefix)}t-${z(n)}`}`,o={},l=[];for(const t in n){o[t]={};for(const r in n[t]){const i=`--${S(e.prefix)}${t}-${r}`,s=k(String(n[t][r]),e.prefix,t);o[t][r]=new G(r,s,t,e.prefix),l.push(`${i}:${s}`)}}const s=()=>{if(l.length&&!t.rules.themed.cache.has(r)){t.rules.themed.cache.add(r);const i=`${n===e.theme?\":root,\":\"\"}.${r}{${l.join(\";\")}}`;t.rules.themed.apply(i)}return r};return{...o,get className(){return s()},selector:i,toString:s}})),U=o();import Z from\"react\";var X,Y=o(),q=e=>{const t=(e=>{let t=!1;const r=U(e,(e=>{t=!0;const r=\"prefix\"in(e=\"object\"==typeof e&&e||{})?String(e.prefix):\"\",i=\"object\"==typeof e.media&&e.media||{},o=\"object\"==typeof e.root?e.root||null:globalThis.document||null,l=\"object\"==typeof e.theme&&e.theme||{},s={prefix:r,media:i,theme:l,themeMap:\"object\"==typeof e.themeMap&&e.themeMap||{...n},utils:\"object\"==typeof e.utils&&e.utils||{}},a=E(o),c={css:M(s,a),globalCss:D(s,a),keyframes:V(s,a),createTheme:J(s,a),reset(){a.reset(),c.theme.toString()},theme:{},sheet:a,config:s,prefix:r,getCssText:a.toString,toString:a.toString};return String(c.theme=c.createTheme(l)),c}));return t||r.reset(),r})(e);return t.styled=(({config:e,sheet:t})=>Y(e,(()=>{const r=M(e,t);return(...e)=>{const t=r(...e),n=t[l].type,i=Z.forwardRef(((e,r)=>{const i=e&&e.as||n,{props:o,deferredInjector:l}=t(e);return delete o.as,o.ref=r,l?Z.createElement(Z.Fragment,null,Z.createElement(i,o),Z.createElement(l,null)):Z.createElement(i,o)}));return i.className=t.className,i.displayName=`Styled.${n.displayName||n.name||n}`,i.selector=t.selector,i.toString=()=>t.selector,i[l]=t[l],i}})))(t),t},K=()=>X||(X=q()),Q=(...e)=>K().createTheme(...e),_=(...e)=>K().globalCss(...e),ee=(...e)=>K().keyframes(...e),te=(...e)=>K().css(...e),re=(...e)=>K().styled(...e);export{q as createStitches,Q as createTheme,te as css,n as defaultThemeMap,_ as globalCss,ee as keyframes,re as styled};\n//# sourceMappingUrl=index.map","import { styled } from '@stitches/react'\nimport { useEffect, useRef } from 'preact/hooks'\n\nconst StyledText = styled('p', {\n  margin: 0,\n  padding: 0,\n  lineHeight: '140%',\n  fontFamily: 'system-ui',\n})\n\nconst ZVZOText = ({\n  size,\n  weight,\n  children,\n  style,\n  className,\n  color,\n}: {\n  size: number\n  weight: number\n  style?: React.CSSProperties\n  className?: string\n  color: string\n  children: React.ReactNode\n}) => {\n  const textRef = useRef<HTMLParagraphElement>(null)\n\n  useEffect(() => {\n    if (textRef.current) {\n      textRef.current.style.setProperty('color', color, 'important')\n    }\n  }, [color])\n\n  return (\n    <StyledText\n      ref={textRef}\n      style={{\n        fontSize: `${size}px`,\n        fontWeight: weight,\n        color: color,\n        ...style,\n      }}\n      className={className}\n    >\n      {children}\n    </StyledText>\n  )\n}\n\nexport default ZVZOText\n","export const Colors = {\n  gray00: '#FFFFFF',\n  gray100: '#F9FAFB',\n  gray200: '#F2F4F6',\n  gray250: '#EBEEF1',\n  gray300: '#E5E8EB',\n  gray400: '#DEE0E5',\n  gray500: '#D8D8DD',\n  gray600: '#A4A4AF',\n  gray700: '#757582',\n  blue100: '#F3F5FF',\n  blue200: '#DDE4FF',\n  blue300: '#ADBEFF',\n  blue400: '#375FFF',\n  blue500: '#014CE1',\n  blue600: '#0A31CC',\n  blue700: '#010474',\n  blue800: '#000033',\n  red100: '#FFF3F0',\n  red200: '#FFBFAA',\n  red300: '#FF916C',\n  red400: '#FF6933',\n  red500: '#FF4800',\n  red600: '#823107',\n  red700: '#2E1608',\n  green100: '#EEFEE6',\n  green200: '#C2EEB2',\n  green300: '#81DC71',\n  green400: '#3FCB3C',\n  green500: '#12BA23',\n  green600: '#139E14',\n  green700: '#1E8215',\n  purple500: '#4A5DEB',\n}\n","export default \"data:image/png;base64,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\"","import { styled } from '@stitches/react'\nimport ZVZOText from './components/ZVZOText'\nimport { Colors } from './shared/colors'\n\nimport Logo from './logo.png'\nimport React from 'preact/compat'\n\nconst ZVZOIndicator = ({ description }: { description?: React.ReactNode }) => {\n  return (\n    <Container>\n      <img\n        src={Logo}\n        alt=\"로고\"\n        style={{\n          width: '140px',\n          marginBottom: 28,\n        }}\n      />\n      <ZVZOText\n        size={16}\n        weight={500}\n        color={Colors.gray600}\n        style={{\n          textAlign: 'center',\n        }}\n      >\n        {description || (\n          <>\n            안전하고 편리한 결제를 위한 준비가 필요합니다\n            <br />\n            잠시만 기다려 주세요\n          </>\n        )}\n      </ZVZOText>\n    </Container>\n  )\n}\n\nconst Container = styled('div', {\n  position: 'fixed',\n  top: 0,\n  left: 0,\n  width: '100%',\n  height: '100%',\n  display: 'flex',\n  alignItems: 'center',\n  flexDirection: 'column',\n  justifyContent: 'center',\n  backgroundColor: 'white',\n  zIndex: 2147483647,\n})\n\nexport default ZVZOIndicator\n","import { createElement, render } from 'preact'\n\nimport qs from 'qs'\n\nimport { debugService } from './service/debug'\nimport { cafe24HTTPClient, httpClient } from './service/http'\nimport ZVZOIndicator from './ZVZOIndicator'\n\nexport enum SSOStep {\n  Initial = 'initial',\n}\n\nexport enum OAuthType {\n  Kakao = 'kakao',\n  None = 'none',\n}\n\nconst searchParams = qs.parse(window.location.search, {\n  ignoreQueryPrefix: true,\n})\n\nconst isZVZOIFrame = searchParams['zvzo_iframe'] === 'true'\n\nconst downloadCoupon = async () => {\n  const response = await httpClient.request<{\n    couponNoList: string[]\n  }>({\n    requestMethod: 'GET',\n    resourceIdentifier: `/cafe24/sso/${window.CAFE24API.MALL_ID}/fetch_downloadable_coupon_list/`,\n    params: {\n      mall_id: window.CAFE24API.MALL_ID,\n      shop_no: window.CAFE24API.SHOP_NO,\n      product_no: Number(searchParams['zvzo_vendor_product_no']),\n    },\n  })\n\n  debugService.log(\n    `다운로드 할 수 있는 쿠폰 목록: ${response.data.couponNoList}`,\n  )\n\n  await Promise.allSettled(\n    response.data.couponNoList.map((couponNo) => {\n      return fetch(`/exec/front/newcoupon/IssueDownload?coupon_no=${couponNo}`)\n    }),\n  )\n}\n\nconst transferOrder = (canMoveOrder = false): Promise<void> => {\n  const productNo = Number(searchParams['zvzo_vendor_product_no'])\n  const variantsCode = searchParams['zvzo_variants_code']\n  const quantity = Number(searchParams['zvzo_quantity'])\n  const products = searchParams['zvzo_products'] as any as Array<{\n    vendorCode: number\n    vendorOptionCode: string\n    storeURI: string\n    quantity: number\n    SSONo: number\n  }>\n\n  if (!products && (!productNo || !variantsCode || !quantity)) {\n    return Promise.reject()\n  }\n\n  debugService.log('장바구니에 상품을 추가할게요')\n\n  return new Promise(async (resolve, reject) => {\n    await downloadCoupon().catch(() => { })\n\n    try {\n      ; (window as any).CAFE24API.emptyCart('A', () => { })\n    } catch { }\n\n    if (products) {\n      debugService.log(`여러 상품을 발견했어요 ${JSON.stringify(products)}`)\n        ; (window as any).CAFE24API.addCart(\n          'A0000',\n          'P',\n          products.map((p) => ({\n            product_no: Number(p.vendorCode),\n            variants_code: p.vendorOptionCode,\n            quantity: Number(p.quantity),\n          })),\n          async (err: any) => {\n            if (err) {\n              debugService.log(`장바구니에 상품을 추가하지 못했어요. ${err}`)\n              reject()\n              return\n            }\n\n            debugService.log('장바구니에 상품을 추가했어요')\n\n            await new Promise((resolve) => setTimeout(resolve, 1000))\n\n            if (canMoveOrder) {\n              if (isZVZOIFrame) {\n                window.parent?.postMessage(\n                  { isZVZO: true, type: 'zvzo-sign-in-complete' },\n                  '*',\n                )\n\n                window.postMessage(\n                  { isZVZO: true, type: 'zvzo-sign-in-complete' },\n                  '*',\n                )\n\n                window.location.replace(\n                  '/order/orderform.html?basket_type=A0000&delvtype=A',\n                )\n              } else {\n                window.location.replace(\n                  '/order/orderform.html?basket_type=A0000&delvtype=A',\n                )\n              }\n            }\n\n            resolve(undefined)\n          },\n        )\n    } else {\n      ; (window as any).CAFE24API.addCart(\n        'A0000',\n        'P',\n        [\n          {\n            product_no: productNo,\n            variants_code: variantsCode,\n            quantity,\n          },\n        ],\n        async (err: any) => {\n          if (err) {\n            debugService.log('장바구니에 상품을 추가했어요')\n            reject()\n            return\n          }\n\n          debugService.log('장바구니에 상품을 추가했어요')\n\n          await new Promise((resolve) => setTimeout(resolve, 1000))\n\n          if (canMoveOrder) {\n            if (isZVZOIFrame) {\n              window.parent?.postMessage(\n                { isZVZO: true, type: 'zvzo-sign-in-complete' },\n                '*',\n              )\n\n              window.postMessage(\n                { isZVZO: true, type: 'zvzo-sign-in-complete' },\n                '*',\n              )\n\n              window.location.replace(\n                '/order/orderform.html?basket_type=A0000&delvtype=A',\n              )\n            } else {\n              window.location.replace(\n                '/order/orderform.html?basket_type=A0000&delvtype=A',\n              )\n            }\n          }\n\n          resolve(undefined)\n        },\n      )\n    }\n  })\n}\n\nclass KakaoSSOProcessor {\n  private _host: HTMLDivElement = document.createElement('div')\n\n  private renderIndicator(description?: string) {\n    document.body.appendChild(this._host)\n\n    render(\n      createElement(ZVZOIndicator, {\n        description,\n      }),\n      this._host,\n    )\n  }\n\n  public async initial() {\n    debugService.log('카카오 SSO 과정을 시작할게요')\n\n    const ssoNo = searchParams['zvzo_sso_no']\n\n    const ssoURI = ssoNo === '0' ? 'sso' : `sso${ssoNo}`\n\n    // TODO: 서버에서 받아오기\n    const response = await cafe24HTTPClient.request<{\n      one_time_token: string\n      code: string\n      url: string\n    }>({\n      requestMethod: 'GET',\n      resourceIdentifier: `/api/member/Oauth2ClientLogin/${ssoURI}`,\n    })\n\n    await httpClient.request({\n      requestMethod: 'GET',\n      resourceIdentifier: `/cafe24/sso/${window.CAFE24API.MALL_ID}/connect/`,\n      params: {\n        one_time_token: response.data.one_time_token,\n        mall_id: window.CAFE24API.MALL_ID,\n        shop_no: window.CAFE24API.SHOP_NO,\n      },\n    })\n\n    await cafe24HTTPClient.request({\n      resourceIdentifier: response.data.url,\n      requestMethod: 'GET',\n    })\n\n    await httpClient\n      .request({\n        requestMethod: 'GET',\n        resourceIdentifier: `/cafe24/sso/${window.CAFE24API.MALL_ID}/fetch_shipping_address/`,\n        params: {\n          one_time_token: response.data.one_time_token,\n          mall_id: window.CAFE24API.MALL_ID,\n          shop_no: window.CAFE24API.SHOP_NO,\n        },\n      })\n      .catch(() => { })\n  }\n\n  public getCurrentStep(): SSOStep | null {\n    const step = searchParams['zvzo_sso_step']\n    if (!step) {\n      return null\n    }\n\n    return step as SSOStep\n  }\n\n  public async run(isMember = false) {\n    const step = this.getCurrentStep()\n    if (!step) {\n      return\n    }\n\n    debugService.log('SSO 인증 플로우를 시작할게요')\n\n    if (step === SSOStep.Initial) {\n      const redirectURL = (searchParams['zvzo_redirect_url'] || '') as string\n\n      this.renderIndicator(\n        redirectURL ? '잠시 후 자동으로 이동합니다' : undefined,\n      )\n\n      if (!isMember) {\n        await this.initial()\n          .then(async () => {\n            debugService.log('로그인에 성공했어요')\n\n            if (redirectURL) {\n              location.replace(decodeURIComponent(redirectURL))\n            } else {\n              await transferOrder(true).catch(() => {\n                document.body.removeChild(this._host)\n              })\n            }\n          })\n          .catch(() => {\n            document.body.removeChild(this._host)\n\n            debugService.log('로그인을 실패 했어요')\n          })\n      } else {\n        debugService.log('이미 로그인되어 있어요')\n\n        if (redirectURL) {\n          location.replace(decodeURIComponent(redirectURL))\n        } else {\n          await transferOrder(true).catch(() => {\n            document.body.removeChild(this._host)\n          })\n        }\n      }\n    }\n  }\n}\n\nclass NoneSSOProcessor {\n  public run(isMember = false) {\n    transferOrder(isMember).catch(() => { })\n  }\n}\n\nexport const getSSOProcessor = () => {\n  const oauthType = searchParams['zvzo_oauth_type'] as OAuthType | null\n  if (!oauthType) {\n    return null\n  }\n\n  if (oauthType === OAuthType.None) {\n    return new NoneSSOProcessor()\n  }\n\n  return new KakaoSSOProcessor()\n}\n","import { SolutionService } from '@/service/cafe24'\nimport { debugService } from '@/service/debug'\nimport { getSSOProcessor } from '@/sso-processor'\nimport { useEffect } from 'preact/hooks'\nimport { suspend } from 'suspend-react'\n\nconst SSOProcessor = () => {\n  useEffect(() => {\n    window.CAFE24API?.getMemberID((memberID) => {\n      const ssoProcessor = getSSOProcessor()\n      if (!ssoProcessor) {\n        return\n      }\n\n      ssoProcessor.run(!!memberID)\n    })\n  }, [])\n\n  return null\n}\n\nexport default SSOProcessor\n","/**\n * This serves as a build time flag that will be true by default, but false in non-debug builds or if users replace `__SENTRY_DEBUG__` in their generated code.\n *\n * ATTENTION: This constant must never cross package boundaries (i.e. be exported) to guarantee that it can be used for tree shaking.\n */\nconst DEBUG_BUILD = (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__);\n\nexport { DEBUG_BUILD };\n//# sourceMappingURL=debug-build.js.map\n","/** Internal global with common properties and Sentry extensions  */\n\n/** Get's the global object for the current JavaScript runtime */\nconst GLOBAL_OBJ = globalThis ;\n\nexport { GLOBAL_OBJ };\n//# sourceMappingURL=worldwide.js.map\n","// This is a magic string replaced by rollup\n\nconst SDK_VERSION = \"10.10.0\" ;\n\nexport { SDK_VERSION };\n//# sourceMappingURL=version.js.map\n","import { SDK_VERSION } from './utils/version.js';\nimport { GLOBAL_OBJ } from './utils/worldwide.js';\n\n/**\n * An object that contains globally accessible properties and maintains a scope stack.\n * @hidden\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 **/\nfunction getMainCarrier() {\n  // This ensures a Sentry carrier exists\n  getSentryCarrier(GLOBAL_OBJ);\n  return GLOBAL_OBJ;\n}\n\n/** Will either get the existing sentry carrier, or create a new one. */\nfunction getSentryCarrier(carrier) {\n  const __SENTRY__ = (carrier.__SENTRY__ = carrier.__SENTRY__ || {});\n\n  // For now: First SDK that sets the .version property wins\n  __SENTRY__.version = __SENTRY__.version || SDK_VERSION;\n\n  // Intentionally populating and returning the version of \"this\" SDK instance\n  // rather than what's set in .version so that \"this\" SDK always gets its carrier\n  return (__SENTRY__[SDK_VERSION] = __SENTRY__[SDK_VERSION] || {});\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 */\nfunction getGlobalSingleton(\n  name,\n  creator,\n  obj = GLOBAL_OBJ,\n) {\n  const __SENTRY__ = (obj.__SENTRY__ = obj.__SENTRY__ || {});\n  const carrier = (__SENTRY__[SDK_VERSION] = __SENTRY__[SDK_VERSION] || {});\n  // Note: We do not want to set `carrier.version` here, as this may be called before any `init` is called, e.g. for the default scopes\n  return carrier[name] || (carrier[name] = creator());\n}\n\nexport { getGlobalSingleton, getMainCarrier, getSentryCarrier };\n//# sourceMappingURL=carrier.js.map\n","import { getGlobalSingleton } from '../carrier.js';\nimport { DEBUG_BUILD } from '../debug-build.js';\nimport { GLOBAL_OBJ } from './worldwide.js';\n\nconst CONSOLE_LEVELS = [\n  'debug',\n  'info',\n  'warn',\n  'error',\n  'log',\n  'assert',\n  'trace',\n] ;\n\n/** Prefix for logging strings */\nconst PREFIX = 'Sentry Logger ';\n\n/** This may be mutated by the console instrumentation. */\nconst originalConsoleMethods\n\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 */\nfunction consoleSandbox(callback) {\n  if (!('console' in GLOBAL_OBJ)) {\n    return callback();\n  }\n\n  const console = GLOBAL_OBJ.console ;\n  const wrappedFuncs = {};\n\n  const wrappedLevels = Object.keys(originalConsoleMethods) ;\n\n  // Restore all wrapped console methods\n  wrappedLevels.forEach(level => {\n    const originalConsoleMethod = originalConsoleMethods[level];\n    wrappedFuncs[level] = console[level] ;\n    console[level] = originalConsoleMethod ;\n  });\n\n  try {\n    return callback();\n  } finally {\n    // Revert restoration to wrapped state\n    wrappedLevels.forEach(level => {\n      console[level] = wrappedFuncs[level] ;\n    });\n  }\n}\n\nfunction enable() {\n  _getLoggerSettings().enabled = true;\n}\n\nfunction disable() {\n  _getLoggerSettings().enabled = false;\n}\n\nfunction isEnabled() {\n  return _getLoggerSettings().enabled;\n}\n\nfunction log(...args) {\n  _maybeLog('log', ...args);\n}\n\nfunction warn(...args) {\n  _maybeLog('warn', ...args);\n}\n\nfunction error(...args) {\n  _maybeLog('error', ...args);\n}\n\nfunction _maybeLog(level, ...args) {\n  if (!DEBUG_BUILD) {\n    return;\n  }\n\n  if (isEnabled()) {\n    consoleSandbox(() => {\n      GLOBAL_OBJ.console[level](`${PREFIX}[${level}]:`, ...args);\n    });\n  }\n}\n\nfunction _getLoggerSettings() {\n  if (!DEBUG_BUILD) {\n    return { enabled: false };\n  }\n\n  return getGlobalSingleton('loggerSettings', () => ({ enabled: false }));\n}\n\n/**\n * This is a logger singleton which either logs things or no-ops if logging is not enabled.\n */\nconst debug = {\n  /** Enable logging. */\n  enable,\n  /** Disable logging. */\n  disable,\n  /** Check if logging is enabled. */\n  isEnabled,\n  /** Log a message. */\n  log,\n  /** Log a warning. */\n  warn,\n  /** Log an error. */\n  error,\n} ;\n\nexport { CONSOLE_LEVELS, consoleSandbox, debug, originalConsoleMethods };\n//# sourceMappingURL=debug-logger.js.map\n","const STACKTRACE_FRAME_LIMIT = 50;\nconst UNKNOWN_FUNCTION = '?';\n// Used to sanitize webpack (error: *) wrapped stack errors\nconst WEBPACK_ERROR_REGEXP = /\\(error: (.*)\\)/;\nconst STRIP_FRAME_REGEXP = /captureMessage|captureException/;\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 */\nfunction createStackParser(...parsers) {\n  const sortedParsers = parsers.sort((a, b) => a[0] - b[0]).map(p => p[1]);\n\n  return (stack, skipFirstLines = 0, framesToPop = 0) => {\n    const frames = [];\n    const lines = stack.split('\\n');\n\n    for (let i = skipFirstLines; i < lines.length; i++) {\n      let line = lines[i] ;\n      // Truncate lines over 1kb because many of the regular expressions use\n      // backtracking which results in run time that increases exponentially\n      // with input size. Huge strings can result in hangs/Denial of Service:\n      // https://github.com/getsentry/sentry-javascript/issues/2286\n      if (line.length > 1024) {\n        line = line.slice(0, 1024);\n      }\n\n      // https://github.com/getsentry/sentry-javascript/issues/5459\n      // Remove webpack (error: *) wrappers\n      const cleanedLine = WEBPACK_ERROR_REGEXP.test(line) ? line.replace(WEBPACK_ERROR_REGEXP, '$1') : line;\n\n      // https://github.com/getsentry/sentry-javascript/issues/7813\n      // Skip Error: lines\n      if (cleanedLine.match(/\\S*Error: /)) {\n        continue;\n      }\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      if (frames.length >= STACKTRACE_FRAME_LIMIT + framesToPop) {\n        break;\n      }\n    }\n\n    return stripSentryFramesAndReverse(frames.slice(framesToPop));\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 */\nfunction stackParserFromStackParserOptions(stackParser) {\n  if (Array.isArray(stackParser)) {\n    return createStackParser(...stackParser);\n  }\n  return stackParser;\n}\n\n/**\n * Removes Sentry frames from the top and bottom of the stack if present and enforces a limit of max number of frames.\n * Assumes stack input is ordered from top to bottom and returns the reverse representation so call site of the\n * function that caused the crash is the last frame in the array.\n * @hidden\n */\nfunction stripSentryFramesAndReverse(stack) {\n  if (!stack.length) {\n    return [];\n  }\n\n  const localStack = Array.from(stack);\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 (/sentryWrapped/.test(getLastStackFrame(localStack).function || '')) {\n    localStack.pop();\n  }\n\n  // Reversing in the middle of the procedure allows us to just pop the values off the stack\n  localStack.reverse();\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 (STRIP_FRAME_REGEXP.test(getLastStackFrame(localStack).function || '')) {\n    localStack.pop();\n\n    // When using synthetic events, we will have a 2 levels deep stack, as `new Error('Sentry syntheticException')`\n    // is produced within the scope itself, making it:\n    //\n    //   Sentry.captureException()\n    //   scope.captureException()\n    //\n    // instead of just the top `Sentry` call itself.\n    // This forces us to possibly strip an additional frame in the exact same was as above.\n    if (STRIP_FRAME_REGEXP.test(getLastStackFrame(localStack).function || '')) {\n      localStack.pop();\n    }\n  }\n\n  return localStack.slice(0, STACKTRACE_FRAME_LIMIT).map(frame => ({\n    ...frame,\n    filename: frame.filename || getLastStackFrame(localStack).filename,\n    function: frame.function || UNKNOWN_FUNCTION,\n  }));\n}\n\nfunction getLastStackFrame(arr) {\n  return arr[arr.length - 1] || {};\n}\n\nconst defaultFunctionName = '<anonymous>';\n\n/**\n * Safely extract function name from itself\n */\nfunction getFunctionName(fn) {\n  try {\n    if (!fn || typeof fn !== 'function') {\n      return defaultFunctionName;\n    }\n    return fn.name || defaultFunctionName;\n  } catch {\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\n/**\n * Get's stack frames from an event without needing to check for undefined properties.\n */\nfunction getFramesFromEvent(event) {\n  const exception = event.exception;\n\n  if (exception) {\n    const frames = [];\n    try {\n      // @ts-expect-error Object could be undefined\n      exception.values.forEach(value => {\n        // @ts-expect-error Value could be undefined\n        if (value.stacktrace.frames) {\n          // @ts-expect-error Value could be undefined\n          frames.push(...value.stacktrace.frames);\n        }\n      });\n      return frames;\n    } catch {\n      return undefined;\n    }\n  }\n  return undefined;\n}\n\nexport { UNKNOWN_FUNCTION, createStackParser, getFramesFromEvent, getFunctionName, stackParserFromStackParserOptions, stripSentryFramesAndReverse };\n//# sourceMappingURL=stacktrace.js.map\n","import { DEBUG_BUILD } from '../debug-build.js';\nimport { debug } from '../utils/debug-logger.js';\nimport { getFunctionName } from '../utils/stacktrace.js';\n\n// We keep the handlers globally\nconst handlers = {};\nconst instrumented = {};\n\n/** Add a handler function. */\nfunction addHandler(type, handler) {\n  handlers[type] = handlers[type] || [];\n  (handlers[type] ).push(handler);\n}\n\n/**\n * Reset all instrumentation handlers.\n * This can be used by tests to ensure we have a clean slate of instrumentation handlers.\n */\nfunction resetInstrumentationHandlers() {\n  Object.keys(handlers).forEach(key => {\n    handlers[key ] = undefined;\n  });\n}\n\n/** Maybe run an instrumentation function, unless it was already called. */\nfunction maybeInstrument(type, instrumentFn) {\n  if (!instrumented[type]) {\n    instrumented[type] = true;\n    try {\n      instrumentFn();\n    } catch (e) {\n      DEBUG_BUILD && debug.error(`Error while instrumenting ${type}`, e);\n    }\n  }\n}\n\n/** Trigger handlers for a given instrumentation type. */\nfunction triggerHandlers(type, data) {\n  const typeHandlers = type && handlers[type];\n  if (!typeHandlers) {\n    return;\n  }\n\n  for (const handler of typeHandlers) {\n    try {\n      handler(data);\n    } catch (e) {\n      DEBUG_BUILD &&\n        debug.error(\n          `Error while triggering instrumentation handler.\\nType: ${type}\\nName: ${getFunctionName(handler)}\\nError:`,\n          e,\n        );\n    }\n  }\n}\n\nexport { addHandler, maybeInstrument, resetInstrumentationHandlers, triggerHandlers };\n//# sourceMappingURL=handlers.js.map\n","import { GLOBAL_OBJ } from '../utils/worldwide.js';\nimport { addHandler, maybeInstrument, triggerHandlers } from './handlers.js';\n\nlet _oldOnErrorHandler = null;\n\n/**\n * Add an instrumentation handler for when an error is captured by the global error handler.\n *\n * Use at your own risk, this might break without changelog notice, only used internally.\n * @hidden\n */\nfunction addGlobalErrorInstrumentationHandler(handler) {\n  const type = 'error';\n  addHandler(type, handler);\n  maybeInstrument(type, instrumentError);\n}\n\nfunction instrumentError() {\n  _oldOnErrorHandler = GLOBAL_OBJ.onerror;\n\n  // Note: The reason we are doing window.onerror instead of window.addEventListener('error')\n  // is that we are using this handler in the Loader Script, to handle buffered errors consistently\n  GLOBAL_OBJ.onerror = function (\n    msg,\n    url,\n    line,\n    column,\n    error,\n  ) {\n    const handlerData = {\n      column,\n      error,\n      line,\n      msg,\n      url,\n    };\n    triggerHandlers('error', handlerData);\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  GLOBAL_OBJ.onerror.__SENTRY_INSTRUMENTED__ = true;\n}\n\nexport { addGlobalErrorInstrumentationHandler };\n//# sourceMappingURL=globalError.js.map\n","import { GLOBAL_OBJ } from '../utils/worldwide.js';\nimport { addHandler, maybeInstrument, triggerHandlers } from './handlers.js';\n\nlet _oldOnUnhandledRejectionHandler = null;\n\n/**\n * Add an instrumentation handler for when an unhandled promise rejection is captured.\n *\n * Use at your own risk, this might break without changelog notice, only used internally.\n * @hidden\n */\nfunction addGlobalUnhandledRejectionInstrumentationHandler(\n  handler,\n) {\n  const type = 'unhandledrejection';\n  addHandler(type, handler);\n  maybeInstrument(type, instrumentUnhandledRejection);\n}\n\nfunction instrumentUnhandledRejection() {\n  _oldOnUnhandledRejectionHandler = GLOBAL_OBJ.onunhandledrejection;\n\n  // Note: The reason we are doing window.onunhandledrejection instead of window.addEventListener('unhandledrejection')\n  // is that we are using this handler in the Loader Script, to handle buffered rejections consistently\n  GLOBAL_OBJ.onunhandledrejection = function (e) {\n    const handlerData = e;\n    triggerHandlers('unhandledrejection', handlerData);\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  GLOBAL_OBJ.onunhandledrejection.__SENTRY_INSTRUMENTED__ = true;\n}\n\nexport { addGlobalUnhandledRejectionInstrumentationHandler };\n//# sourceMappingURL=globalUnhandledRejection.js.map\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 */\nfunction isError(wat) {\n  switch (objectToString.call(wat)) {\n    case '[object Error]':\n    case '[object Exception]':\n    case '[object DOMException]':\n    case '[object WebAssembly.Exception]':\n      return true;\n    default:\n      return isInstanceOf(wat, Error);\n  }\n}\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, className) {\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 */\nfunction isErrorEvent(wat) {\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 */\nfunction isDOMError(wat) {\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 */\nfunction isDOMException(wat) {\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 */\nfunction isString(wat) {\n  return isBuiltin(wat, 'String');\n}\n\n/**\n * Checks whether given string is parameterized\n * {@link isParameterizedString}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nfunction isParameterizedString(wat) {\n  return (\n    typeof wat === 'object' &&\n    wat !== null &&\n    '__sentry_template_string__' in wat &&\n    '__sentry_template_values__' in wat\n  );\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 */\nfunction isPrimitive(wat) {\n  return wat === null || isParameterizedString(wat) || (typeof wat !== 'object' && typeof wat !== 'function');\n}\n\n/**\n * Checks whether given value's type is an object literal, or a class instance.\n * {@link isPlainObject}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nfunction isPlainObject(wat) {\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 */\nfunction isEvent(wat) {\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 */\nfunction isElement(wat) {\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 */\nfunction isRegExp(wat) {\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 */\nfunction isThenable(wat) {\n  // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n  return Boolean(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 */\nfunction isSyntheticEvent(wat) {\n  return isPlainObject(wat) && 'nativeEvent' in wat && 'preventDefault' in wat && 'stopPropagation' in 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 */\nfunction isInstanceOf(wat, base) {\n  try {\n    return wat instanceof base;\n  } catch {\n    return false;\n  }\n}\n\n/**\n * Checks whether given value's type is a Vue ViewModel.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nfunction isVueViewModel(wat) {\n  // Not using Object.prototype.toString because in Vue 3 it would read the instance's Symbol(Symbol.toStringTag) property.\n  return !!(typeof wat === 'object' && wat !== null && ((wat ).__isVue || (wat )._isVue));\n}\n\n/**\n * Checks whether the given parameter is a Standard Web API Request instance.\n *\n * Returns false if Request is not available in the current runtime.\n */\nfunction isRequest(request) {\n  return typeof Request !== 'undefined' && isInstanceOf(request, Request);\n}\n\nexport { isDOMError, isDOMException, isElement, isError, isErrorEvent, isEvent, isInstanceOf, isParameterizedString, isPlainObject, isPrimitive, isRegExp, isRequest, isString, isSyntheticEvent, isThenable, isVueViewModel };\n//# sourceMappingURL=is.js.map\n","import { isString } from './is.js';\nimport { GLOBAL_OBJ } from './worldwide.js';\n\nconst WINDOW = GLOBAL_OBJ ;\n\nconst DEFAULT_MAX_STRING_LENGTH = 80;\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 */\nfunction htmlTreeAsString(\n  elem,\n  options = {},\n) {\n  if (!elem) {\n    return '<unknown>';\n  }\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 ;\n    const MAX_TRAVERSE_HEIGHT = 5;\n    const out = [];\n    let height = 0;\n    let len = 0;\n    const separator = ' > ';\n    const sepLength = separator.length;\n    let nextStr;\n    const keyAttrs = Array.isArray(options) ? options : options.keyAttrs;\n    const maxStringLength = (!Array.isArray(options) && options.maxStringLength) || DEFAULT_MAX_STRING_LENGTH;\n\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 maxStringLength\n      //   (ignore this limit if we are on the first iteration)\n      if (nextStr === 'html' || (height > 1 && len + out.length * sepLength + nextStr.length >= maxStringLength)) {\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 {\n    return '<unknown>';\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, keyAttrs) {\n  const elem = el\n\n;\n\n  const out = [];\n\n  if (!elem?.tagName) {\n    return '';\n  }\n\n  // @ts-expect-error WINDOW has HTMLElement\n  if (WINDOW.HTMLElement) {\n    // If using the component name annotation plugin, this value may be available on the DOM node\n    if (elem instanceof HTMLElement && elem.dataset) {\n      if (elem.dataset['sentryComponent']) {\n        return elem.dataset['sentryComponent'];\n      }\n      if (elem.dataset['sentryElement']) {\n        return elem.dataset['sentryElement'];\n      }\n    }\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 = keyAttrs?.length\n    ? keyAttrs.filter(keyAttr => elem.getAttribute(keyAttr)).map(keyAttr => [keyAttr, elem.getAttribute(keyAttr)])\n    : null;\n\n  if (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    const className = elem.className;\n    if (className && isString(className)) {\n      const classes = className.split(/\\s+/);\n      for (const c of classes) {\n        out.push(`.${c}`);\n      }\n    }\n  }\n  const allowedAttrs = ['aria-label', 'type', 'name', 'title', 'alt'];\n  for (const k of allowedAttrs) {\n    const attr = elem.getAttribute(k);\n    if (attr) {\n      out.push(`[${k}=\"${attr}\"]`);\n    }\n  }\n\n  return out.join('');\n}\n\n/**\n * A safe form of location.href\n */\nfunction getLocationHref() {\n  try {\n    return WINDOW.document.location.href;\n  } catch {\n    return '';\n  }\n}\n\n/**\n * Given a DOM element, traverses up the tree until it finds the first ancestor node\n * that has the `data-sentry-component` or `data-sentry-element` attribute with `data-sentry-component` taking\n * precedence. This attribute is added at build-time by projects that have the component name annotation plugin installed.\n *\n * @returns a string representation of the component for the provided DOM element, or `null` if not found\n */\nfunction getComponentName(elem) {\n  // @ts-expect-error WINDOW has HTMLElement\n  if (!WINDOW.HTMLElement) {\n    return null;\n  }\n\n  let currentElem = elem ;\n  const MAX_TRAVERSE_HEIGHT = 5;\n  for (let i = 0; i < MAX_TRAVERSE_HEIGHT; i++) {\n    if (!currentElem) {\n      return null;\n    }\n\n    if (currentElem instanceof HTMLElement) {\n      if (currentElem.dataset['sentryComponent']) {\n        return currentElem.dataset['sentryComponent'];\n      }\n      if (currentElem.dataset['sentryElement']) {\n        return currentElem.dataset['sentryElement'];\n      }\n    }\n\n    currentElem = currentElem.parentNode;\n  }\n\n  return null;\n}\n\nexport { getComponentName, getLocationHref, htmlTreeAsString };\n//# sourceMappingURL=browser.js.map\n","import { isString, isRegExp, isVueViewModel } from './is.js';\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 */\nfunction truncate(str, max = 0) {\n  if (typeof str !== 'string' || max === 0) {\n    return str;\n  }\n  return str.length <= max ? str : `${str.slice(0, max)}...`;\n}\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 */\nfunction snipLine(line, colno) {\n  let newLine = line;\n  const lineLength = newLine.length;\n  if (lineLength <= 150) {\n    return newLine;\n  }\n  if (colno > lineLength) {\n    // 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 */\nfunction safeJoin(input, delimiter) {\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      // 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/8981\n      if (isVueViewModel(value)) {\n        output.push('[VueViewModel]');\n      } else {\n        output.push(String(value));\n      }\n    } catch {\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 */\nfunction isMatchingPattern(\n  value,\n  pattern,\n  requireExactStringMatch = false,\n) {\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 */\nfunction stringMatchesSomePattern(\n  testString,\n  patterns = [],\n  requireExactStringMatch = false,\n) {\n  return patterns.some(pattern => isMatchingPattern(testString, pattern, requireExactStringMatch));\n}\n\nexport { isMatchingPattern, safeJoin, snipLine, stringMatchesSomePattern, truncate };\n//# sourceMappingURL=string.js.map\n","import { DEBUG_BUILD } from '../debug-build.js';\nimport { htmlTreeAsString } from './browser.js';\nimport { debug } from './debug-logger.js';\nimport { isError, isEvent, isInstanceOf, isPrimitive, isElement } from './is.js';\nimport { truncate } from './string.js';\n\n/* eslint-disable @typescript-eslint/no-explicit-any */\n\n/**\n * Replace a method in an object with a wrapped version of itself.\n *\n * If the method on the passed object is not a function, the wrapper will not be applied.\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, <other\n * args>)` or `origMethod.apply(this, [<other args>])` (rather than being called directly), again to preserve `this`.\n * @returns void\n */\nfunction fill(source, name, replacementFactory) {\n  if (!(name in source)) {\n    return;\n  }\n\n  // explicitly casting to unknown because we don't know the type of the method initially at all\n  const original = source[name] ;\n\n  if (typeof original !== 'function') {\n    return;\n  }\n\n  const wrapped = replacementFactory(original) ;\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    markFunctionWrapped(wrapped, original);\n  }\n\n  try {\n    source[name] = wrapped;\n  } catch {\n    DEBUG_BUILD && debug.log(`Failed to replace method \"${name}\" in object`, source);\n  }\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 */\nfunction addNonEnumerableProperty(obj, name, value) {\n  try {\n    Object.defineProperty(obj, name, {\n      // enumerable: false, // the default, so we can save on bundle size by not explicitly setting it\n      value: value,\n      writable: true,\n      configurable: true,\n    });\n  } catch {\n    DEBUG_BUILD && debug.log(`Failed to add non-enumerable property \"${name}\" to object`, obj);\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 */\nfunction markFunctionWrapped(wrapped, original) {\n  try {\n    const proto = original.prototype || {};\n    wrapped.prototype = original.prototype = proto;\n    addNonEnumerableProperty(wrapped, '__sentry_original__', original);\n  } catch {} // eslint-disable-line no-empty\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 */\n// eslint-disable-next-line @typescript-eslint/ban-types\nfunction getOriginalFunction(func) {\n  return func.__sentry_original__;\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 argument itself, when value is neither an Event nor\n *  an Error.\n */\nfunction convertToPlainObject(value)\n\n {\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\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) {\n  try {\n    return isElement(target) ? htmlTreeAsString(target) : Object.prototype.toString.call(target);\n  } catch {\n    return '<unknown>';\n  }\n}\n\n/** Filters out all but an object's own properties */\nfunction getOwnProperties(obj) {\n  if (typeof obj === 'object' && obj !== null) {\n    const extractedProps = {};\n    for (const property in obj) {\n      if (Object.prototype.hasOwnProperty.call(obj, property)) {\n        extractedProps[property] = (obj )[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 */\nfunction extractExceptionKeysForMessage(exception, maxLength = 40) {\n  const keys = Object.keys(convertToPlainObject(exception));\n  keys.sort();\n\n  const firstKey = keys[0];\n\n  if (!firstKey) {\n    return '[object has no keys]';\n  }\n\n  if (firstKey.length >= maxLength) {\n    return truncate(firstKey, 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 *\n * @deprecated This function is no longer used by the SDK and will be removed in a future major version.\n */\nfunction dropUndefinedKeys(inputValue) {\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, memoizationMap) {\n  // Early return for primitive values\n  if (inputValue === null || typeof inputValue !== 'object') {\n    return inputValue;\n  }\n\n  // Check memo map first for all object types\n  const memoVal = memoizationMap.get(inputValue);\n  if (memoVal !== undefined) {\n    return memoVal ;\n  }\n\n  // handle arrays\n  if (Array.isArray(inputValue)) {\n    const returnValue = [];\n    // Store mapping to handle circular references\n    memoizationMap.set(inputValue, returnValue);\n\n    inputValue.forEach(value => {\n      returnValue.push(_dropUndefinedKeys(value, memoizationMap));\n    });\n\n    return returnValue ;\n  }\n\n  if (isPojo(inputValue)) {\n    const returnValue = {};\n    // Store mapping to handle circular references\n    memoizationMap.set(inputValue, returnValue);\n\n    const keys = Object.keys(inputValue);\n\n    keys.forEach(key => {\n      const val = inputValue[key];\n      if (val !== undefined) {\n        returnValue[key] = _dropUndefinedKeys(val, memoizationMap);\n      }\n    });\n\n    return returnValue ;\n  }\n\n  // For other object types, return as is\n  return inputValue;\n}\n\nfunction isPojo(input) {\n  // Plain objects have Object as constructor or no constructor\n  const constructor = (input ).constructor;\n  return constructor === Object || constructor === undefined;\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 */\nfunction objectify(wat) {\n  let objectified;\n  switch (true) {\n    // this will catch both undefined and null\n    case wat == undefined:\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 ).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\nexport { addNonEnumerableProperty, convertToPlainObject, dropUndefinedKeys, extractExceptionKeysForMessage, fill, getOriginalFunction, markFunctionWrapped, objectify };\n//# sourceMappingURL=object.js.map\n","import { addNonEnumerableProperty } from './object.js';\nimport { snipLine } from './string.js';\nimport { GLOBAL_OBJ } from './worldwide.js';\n\nfunction getCrypto() {\n  const gbl = GLOBAL_OBJ ;\n  return gbl.crypto || gbl.msCrypto;\n}\n\n/**\n * UUID4 generator\n * @param crypto Object that provides the crypto API.\n * @returns string Generated UUID4.\n */\nfunction uuid4(crypto = getCrypto()) {\n  let getRandomByte = () => Math.random() * 16;\n  try {\n    if (crypto?.randomUUID) {\n      return crypto.randomUUID().replace(/-/g, '');\n    }\n    if (crypto?.getRandomValues) {\n      getRandomByte = () => {\n        // crypto.getRandomValues might return undefined instead of the typed array\n        // in old Chromium versions (e.g. 23.0.1235.0 (151422))\n        // However, `typedArray` is still filled in-place.\n        // @see https://developer.mozilla.org/en-US/docs/Web/API/Crypto/getRandomValues#typedarray\n        const typedArray = new Uint8Array(1);\n        crypto.getRandomValues(typedArray);\n        // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n        return typedArray[0];\n      };\n    }\n  } catch {\n    // some runtimes can crash invoking crypto\n    // https://github.com/getsentry/sentry-javascript/issues/8935\n  }\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] ) + 1e3 + 4e3 + 8e3 + 1e11).replace(/[018]/g, c =>\n    // eslint-disable-next-line no-bitwise\n    ((c ) ^ ((getRandomByte() & 15) >> ((c ) / 4))).toString(16),\n  );\n}\n\nfunction getFirstException(event) {\n  return event.exception?.values?.[0];\n}\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 */\nfunction getEventDescription(event) {\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 || '<unknown>';\n  }\n  return eventId || '<unknown>';\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 */\nfunction addExceptionTypeValue(event, value, type) {\n  const exception = (event.exception = event.exception || {});\n  const values = (exception.values = exception.values || []);\n  const firstException = (values[0] = values[0] || {});\n  if (!firstException.value) {\n    firstException.value = value || '';\n  }\n  if (!firstException.type) {\n    firstException.type = type || 'Error';\n  }\n}\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 */\nfunction addExceptionMechanism(event, newMechanism) {\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?.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 */\n\nfunction _parseInt(input) {\n  return parseInt(input || '', 10);\n}\n\n/**\n * Parses input into a SemVer interface\n * @param input string representation of a semver version\n */\nfunction parseSemver(input) {\n  const match = input.match(SEMVER_REGEXP) || [];\n  const major = _parseInt(match[1]);\n  const minor = _parseInt(match[2]);\n  const patch = _parseInt(match[3]);\n  return {\n    buildmetadata: match[5],\n    major: isNaN(major) ? 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 */\nfunction addContextToFrame(lines, frame, linesOfContext = 5) {\n  // When there is no line number in the frame, attaching context is nonsensical and will even break grouping\n  if (frame.lineno === undefined) {\n    return;\n  }\n\n  const maxLines = lines.length;\n  const sourceLine = Math.max(Math.min(maxLines - 1, frame.lineno - 1), 0);\n\n  frame.pre_context = lines\n    .slice(Math.max(0, sourceLine - linesOfContext), sourceLine)\n    .map((line) => snipLine(line, 0));\n\n  // We guard here to ensure this is not larger than the existing number of lines\n  const lineIndex = Math.min(maxLines - 1, sourceLine);\n\n  // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n  frame.context_line = snipLine(lines[lineIndex], frame.colno || 0);\n\n  frame.post_context = lines\n    .slice(Math.min(sourceLine + 1, maxLines), sourceLine + 1 + linesOfContext)\n    .map((line) => 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 */\nfunction checkOrSetAlreadyCaught(exception) {\n  if (isAlreadyCaptured(exception)) {\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 , '__sentry_captured__', true);\n  } catch {\n    // `exception` is a primitive, so we can't mark it seen\n  }\n\n  return false;\n}\n\nfunction isAlreadyCaptured(exception) {\n  try {\n    return (exception ).__sentry_captured__;\n  } catch {} // eslint-disable-line no-empty\n}\n\nexport { addContextToFrame, addExceptionMechanism, addExceptionTypeValue, checkOrSetAlreadyCaught, getEventDescription, parseSemver, uuid4 };\n//# sourceMappingURL=misc.js.map\n","import { GLOBAL_OBJ } from './worldwide.js';\n\nconst ONE_SECOND_IN_MS = 1000;\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 */\n\n/**\n * Returns a timestamp in seconds since the UNIX epoch using the Date API.\n */\nfunction dateTimestampInSeconds() {\n  return Date.now() / ONE_SECOND_IN_MS;\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 createUnixTimestampInSecondsFunc() {\n  const { performance } = GLOBAL_OBJ ;\n  // Some browser and environments don't have a performance or timeOrigin, so we fallback to\n  // using Date.now() to compute the starting time.\n  if (!performance?.now || !performance.timeOrigin) {\n    return dateTimestampInSeconds;\n  }\n\n  const timeOrigin = performance.timeOrigin;\n\n  // performance.now() is a monotonic clock, which means it starts at 0 when the process begins. To get the current\n  // wall clock time (actual UNIX timestamp), we need to add the starting time origin and the current time elapsed.\n  //\n  // TODO: This does not account for the case where the monotonic clock that powers performance.now() drifts from the\n  // wall clock time, which causes the returned timestamp to be inaccurate. We should investigate how to detect and\n  // correct for this.\n  // See: https://github.com/getsentry/sentry-javascript/issues/2590\n  // See: https://github.com/mdn/content/issues/4713\n  // See: https://dev.to/noamr/when-a-millisecond-is-not-a-millisecond-3h6\n  return () => {\n    return (timeOrigin + performance.now()) / ONE_SECOND_IN_MS;\n  };\n}\n\nlet _cachedTimestampInSeconds;\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 * 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 */\nfunction timestampInSeconds() {\n  // We store this in a closure so that we don't have to create a new function every time this is called.\n  const func = _cachedTimestampInSeconds ?? (_cachedTimestampInSeconds = createUnixTimestampInSecondsFunc());\n  return func();\n}\n\n/**\n * Cached result of getBrowserTimeOrigin.\n */\nlet cachedTimeOrigin;\n\n/**\n * Gets the time origin and the mode used to determine it.\n */\nfunction getBrowserTimeOrigin() {\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 } = GLOBAL_OBJ ;\n  if (!performance?.now) {\n    return [undefined, 'none'];\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?.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      return [performance.timeOrigin, 'timeOrigin'];\n    } else {\n      return [navigationStart, 'navigationStart'];\n    }\n  }\n\n  // Either both timeOrigin and navigationStart are skewed or neither is available, fallback to Date.\n  return [dateNow, 'dateNow'];\n}\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 */\nfunction browserPerformanceTimeOrigin() {\n  if (!cachedTimeOrigin) {\n    cachedTimeOrigin = getBrowserTimeOrigin();\n  }\n\n  return cachedTimeOrigin[0];\n}\n\nexport { browserPerformanceTimeOrigin, dateTimestampInSeconds, timestampInSeconds };\n//# sourceMappingURL=time.js.map\n","import { uuid4 } from './utils/misc.js';\nimport { timestampInSeconds } from './utils/time.js';\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 */\nfunction makeSession(context) {\n  // Both timestamp and started are in seconds since the UNIX epoch.\n  const startingTime = timestampInSeconds();\n\n  const session = {\n    sid: uuid4(),\n    init: true,\n    timestamp: startingTime,\n    started: startingTime,\n    duration: 0,\n    status: 'ok',\n    errors: 0,\n    ignoreDuration: false,\n    toJSON: () => sessionToJSON(session),\n  };\n\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 Client.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\nfunction updateSession(session, context = {}) {\n  if (context.user) {\n    if (!session.ipAddress && context.user.ip_address) {\n      session.ipAddress = context.user.ip_address;\n    }\n\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.abnormal_mechanism) {\n    session.abnormal_mechanism = context.abnormal_mechanism;\n  }\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 */\nfunction closeSession(session, status) {\n  let context = {};\n  if (status) {\n    context = { status };\n  } else if (session.status === 'ok') {\n    context = { status: 'exited' };\n  }\n\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) {\n  return {\n    sid: `${session.sid}`,\n    init: session.init,\n    // Make sure that sec is converted to ms for date constructor\n    started: new Date(session.started * 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    abnormal_mechanism: session.abnormal_mechanism,\n    attrs: {\n      release: session.release,\n      environment: session.environment,\n      ip_address: session.ipAddress,\n      user_agent: session.userAgent,\n    },\n  };\n}\n\nexport { closeSession, makeSession, updateSession };\n//# sourceMappingURL=session.js.map\n","/**\n * Shallow merge two objects.\n * Does not mutate the passed in objects.\n * Undefined/empty values in the merge object will overwrite existing values.\n *\n * By default, this merges 2 levels deep.\n */\nfunction merge(initialObj, mergeObj, levels = 2) {\n  // If the merge value is not an object, or we have no merge levels left,\n  // we just set the value to the merge value\n  if (!mergeObj || typeof mergeObj !== 'object' || levels <= 0) {\n    return mergeObj;\n  }\n\n  // If the merge object is an empty object, and the initial object is not undefined, we return the initial object\n  if (initialObj && Object.keys(mergeObj).length === 0) {\n    return initialObj;\n  }\n\n  // Clone object\n  const output = { ...initialObj };\n\n  // Merge values into output, resursively\n  for (const key in mergeObj) {\n    if (Object.prototype.hasOwnProperty.call(mergeObj, key)) {\n      output[key] = merge(output[key], mergeObj[key], levels - 1);\n    }\n  }\n\n  return output;\n}\n\nexport { merge };\n//# sourceMappingURL=merge.js.map\n","import { uuid4 } from './misc.js';\n\n/**\n * Generate a random, valid trace ID.\n */\nfunction generateTraceId() {\n  return uuid4();\n}\n\n/**\n * Generate a random, valid span ID.\n */\nfunction generateSpanId() {\n  return uuid4().substring(16);\n}\n\nexport { generateSpanId, generateTraceId };\n//# sourceMappingURL=propagationContext.js.map\n","import { addNonEnumerableProperty } from './object.js';\n\nconst SCOPE_SPAN_FIELD = '_sentrySpan';\n\n/**\n * Set the active span for a given scope.\n * NOTE: This should NOT be used directly, but is only used internally by the trace methods.\n */\nfunction _setSpanForScope(scope, span) {\n  if (span) {\n    addNonEnumerableProperty(scope , SCOPE_SPAN_FIELD, span);\n  } else {\n    // eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n    delete (scope )[SCOPE_SPAN_FIELD];\n  }\n}\n\n/**\n * Get the active span for a given scope.\n * NOTE: This should NOT be used directly, but is only used internally by the trace methods.\n */\nfunction _getSpanForScope(scope) {\n  return scope[SCOPE_SPAN_FIELD];\n}\n\nexport { _getSpanForScope, _setSpanForScope };\n//# sourceMappingURL=spanOnScope.js.map\n","import { DEBUG_BUILD } from './debug-build.js';\nimport { updateSession } from './session.js';\nimport { debug } from './utils/debug-logger.js';\nimport { isPlainObject } from './utils/is.js';\nimport { merge } from './utils/merge.js';\nimport { uuid4 } from './utils/misc.js';\nimport { generateTraceId } from './utils/propagationContext.js';\nimport { _setSpanForScope, _getSpanForScope } from './utils/spanOnScope.js';\nimport { truncate } from './utils/string.js';\nimport { dateTimestampInSeconds } from './utils/time.js';\n\n/**\n * Default value for maximum number of breadcrumbs added to an event.\n */\nconst DEFAULT_MAX_BREADCRUMBS = 100;\n\n/**\n * A context to be used for capturing an event.\n * This can either be a Scope, or a partial ScopeContext,\n * or a callback that receives the current scope and returns a new scope to use.\n */\n\n/**\n * Holds additional event information.\n */\nclass Scope {\n  /** Flag if notifying is happening. */\n\n  /** Callback for client to receive scope changes. */\n\n  /** Callback list that will be called during event processing. */\n\n  /** Array of breadcrumbs. */\n\n  /** User */\n\n  /** Tags */\n\n  /** Extra */\n\n  /** Contexts */\n\n  /** Attachments */\n\n  /** Propagation Context for distributed tracing */\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\n  /** Fingerprint */\n\n  /** Severity */\n\n  /**\n   * Transaction Name\n   *\n   * IMPORTANT: The transaction name on the scope has nothing to do with root spans/transaction objects.\n   * It's purpose is to assign a transaction to the scope that's added to non-transaction events.\n   */\n\n  /** Session */\n\n  /** The client on this scope */\n\n  /** Contains the last event id of a captured event.  */\n\n  // NOTE: Any field which gets added here should get added not only to the constructor but also to the `clone` method.\n\n   constructor() {\n    this._notifyingListeners = false;\n    this._scopeListeners = [];\n    this._eventProcessors = [];\n    this._breadcrumbs = [];\n    this._attachments = [];\n    this._user = {};\n    this._tags = {};\n    this._extra = {};\n    this._contexts = {};\n    this._sdkProcessingMetadata = {};\n    this._propagationContext = {\n      traceId: generateTraceId(),\n      sampleRand: Math.random(),\n    };\n  }\n\n  /**\n   * Clone all data from this scope into a new scope.\n   */\n   clone() {\n    const newScope = new Scope();\n    newScope._breadcrumbs = [...this._breadcrumbs];\n    newScope._tags = { ...this._tags };\n    newScope._extra = { ...this._extra };\n    newScope._contexts = { ...this._contexts };\n    if (this._contexts.flags) {\n      // We need to copy the `values` array so insertions on a cloned scope\n      // won't affect the original array.\n      newScope._contexts.flags = {\n        values: [...this._contexts.flags.values],\n      };\n    }\n\n    newScope._user = this._user;\n    newScope._level = this._level;\n    newScope._session = this._session;\n    newScope._transactionName = this._transactionName;\n    newScope._fingerprint = this._fingerprint;\n    newScope._eventProcessors = [...this._eventProcessors];\n    newScope._attachments = [...this._attachments];\n    newScope._sdkProcessingMetadata = { ...this._sdkProcessingMetadata };\n    newScope._propagationContext = { ...this._propagationContext };\n    newScope._client = this._client;\n    newScope._lastEventId = this._lastEventId;\n\n    _setSpanForScope(newScope, _getSpanForScope(this));\n\n    return newScope;\n  }\n\n  /**\n   * Update the client assigned to this scope.\n   * Note that not every scope will have a client assigned - isolation scopes & the global scope will generally not have a client,\n   * as well as manually created scopes.\n   */\n   setClient(client) {\n    this._client = client;\n  }\n\n  /**\n   * Set the ID of the last captured error event.\n   * This is generally only captured on the isolation scope.\n   */\n   setLastEventId(lastEventId) {\n    this._lastEventId = lastEventId;\n  }\n\n  /**\n   * Get the client assigned to this scope.\n   */\n   getClient() {\n    return this._client ;\n  }\n\n  /**\n   * Get the ID of the last captured error event.\n   * This is generally only available on the isolation scope.\n   */\n   lastEventId() {\n    return this._lastEventId;\n  }\n\n  /**\n   * @inheritDoc\n   */\n   addScopeListener(callback) {\n    this._scopeListeners.push(callback);\n  }\n\n  /**\n   * Add an event processor that will be called before an event is sent.\n   */\n   addEventProcessor(callback) {\n    this._eventProcessors.push(callback);\n    return this;\n  }\n\n  /**\n   * Set the user for this scope.\n   * Set to `null` to unset the user.\n   */\n   setUser(user) {\n    // If null is passed we want to unset everything, but still define keys,\n    // so that later down in the pipeline any existing values are cleared.\n    this._user = user || {\n      email: undefined,\n      id: undefined,\n      ip_address: undefined,\n      username: undefined,\n    };\n\n    if (this._session) {\n      updateSession(this._session, { user });\n    }\n\n    this._notifyScopeListeners();\n    return this;\n  }\n\n  /**\n   * Get the user from this scope.\n   */\n   getUser() {\n    return this._user;\n  }\n\n  /**\n   * Set an object that will be merged into existing tags on the scope,\n   * and will be sent as tags data with the event.\n   */\n   setTags(tags) {\n    this._tags = {\n      ...this._tags,\n      ...tags,\n    };\n    this._notifyScopeListeners();\n    return this;\n  }\n\n  /**\n   * Set a single tag that will be sent as tags data with the event.\n   */\n   setTag(key, value) {\n    this._tags = { ...this._tags, [key]: value };\n    this._notifyScopeListeners();\n    return this;\n  }\n\n  /**\n   * Set an object that will be merged into existing extra on the scope,\n   * and will be sent as extra data with the event.\n   */\n   setExtras(extras) {\n    this._extra = {\n      ...this._extra,\n      ...extras,\n    };\n    this._notifyScopeListeners();\n    return this;\n  }\n\n  /**\n   * Set a single key:value extra entry that will be sent as extra data with the event.\n   */\n   setExtra(key, extra) {\n    this._extra = { ...this._extra, [key]: extra };\n    this._notifyScopeListeners();\n    return this;\n  }\n\n  /**\n   * Sets the fingerprint on the scope to send with the events.\n   * @param {string[]} fingerprint Fingerprint to group events in Sentry.\n   */\n   setFingerprint(fingerprint) {\n    this._fingerprint = fingerprint;\n    this._notifyScopeListeners();\n    return this;\n  }\n\n  /**\n   * Sets the level on the scope for future events.\n   */\n   setLevel(level) {\n    this._level = level;\n    this._notifyScopeListeners();\n    return this;\n  }\n\n  /**\n   * Sets the transaction name on the scope so that the name of e.g. taken server route or\n   * the page location is attached to future events.\n   *\n   * IMPORTANT: Calling this function does NOT change the name of the currently active\n   * root span. If you want to change the name of the active root span, use\n   * `Sentry.updateSpanName(rootSpan, 'new name')` instead.\n   *\n   * By default, the SDK updates the scope's transaction name automatically on sensible\n   * occasions, such as a page navigation or when handling a new request on the server.\n   */\n   setTransactionName(name) {\n    this._transactionName = name;\n    this._notifyScopeListeners();\n    return this;\n  }\n\n  /**\n   * Sets context data with the given name.\n   * Data passed as context will be normalized. You can also pass `null` to unset the context.\n   * Note that context data will not be merged - calling `setContext` will overwrite an existing context with the same key.\n   */\n   setContext(key, context) {\n    if (context === null) {\n      // 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   * Set the session for the scope.\n   */\n   setSession(session) {\n    if (!session) {\n      delete this._session;\n    } else {\n      this._session = session;\n    }\n    this._notifyScopeListeners();\n    return this;\n  }\n\n  /**\n   * Get the session from the scope.\n   */\n   getSession() {\n    return this._session;\n  }\n\n  /**\n   * Updates the scope with provided data. Can work in three variations:\n   * - plain object containing updatable attributes\n   * - Scope instance that'll extract the attributes from\n   * - callback function that'll receive the current scope as an argument and allow for modifications\n   */\n   update(captureContext) {\n    if (!captureContext) {\n      return this;\n    }\n\n    const scopeToMerge = typeof captureContext === 'function' ? captureContext(this) : captureContext;\n\n    const scopeInstance =\n      scopeToMerge instanceof Scope\n        ? scopeToMerge.getScopeData()\n        : isPlainObject(scopeToMerge)\n          ? (captureContext )\n          : undefined;\n\n    const { tags, extra, user, contexts, level, fingerprint = [], propagationContext } = scopeInstance || {};\n\n    this._tags = { ...this._tags, ...tags };\n    this._extra = { ...this._extra, ...extra };\n    this._contexts = { ...this._contexts, ...contexts };\n\n    if (user && Object.keys(user).length) {\n      this._user = user;\n    }\n\n    if (level) {\n      this._level = level;\n    }\n\n    if (fingerprint.length) {\n      this._fingerprint = fingerprint;\n    }\n\n    if (propagationContext) {\n      this._propagationContext = propagationContext;\n    }\n\n    return this;\n  }\n\n  /**\n   * Clears the current scope and resets its properties.\n   * Note: The client will not be cleared.\n   */\n   clear() {\n    // client is not cleared here on purpose!\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._session = undefined;\n    _setSpanForScope(this, undefined);\n    this._attachments = [];\n    this.setPropagationContext({ traceId: generateTraceId(), sampleRand: Math.random() });\n\n    this._notifyScopeListeners();\n    return this;\n  }\n\n  /**\n   * Adds a breadcrumb to the scope.\n   * By default, the last 100 breadcrumbs are kept.\n   */\n   addBreadcrumb(breadcrumb, maxBreadcrumbs) {\n    const maxCrumbs = typeof maxBreadcrumbs === 'number' ? maxBreadcrumbs : DEFAULT_MAX_BREADCRUMBS;\n\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      // Breadcrumb messages can theoretically be infinitely large and they're held in memory so we truncate them not to leak (too much) memory\n      message: breadcrumb.message ? truncate(breadcrumb.message, 2048) : breadcrumb.message,\n    };\n\n    this._breadcrumbs.push(mergedBreadcrumb);\n    if (this._breadcrumbs.length > maxCrumbs) {\n      this._breadcrumbs = this._breadcrumbs.slice(-maxCrumbs);\n      this._client?.recordDroppedEvent('buffer_overflow', 'log_item');\n    }\n\n    this._notifyScopeListeners();\n\n    return this;\n  }\n\n  /**\n   * Get the last breadcrumb of the scope.\n   */\n   getLastBreadcrumb() {\n    return this._breadcrumbs[this._breadcrumbs.length - 1];\n  }\n\n  /**\n   * Clear all breadcrumbs from the scope.\n   */\n   clearBreadcrumbs() {\n    this._breadcrumbs = [];\n    this._notifyScopeListeners();\n    return this;\n  }\n\n  /**\n   * Add an attachment to the scope.\n   */\n   addAttachment(attachment) {\n    this._attachments.push(attachment);\n    return this;\n  }\n\n  /**\n   * Clear all attachments from the scope.\n   */\n   clearAttachments() {\n    this._attachments = [];\n    return this;\n  }\n\n  /**\n   * Get the data of this scope, which should be applied to an event during processing.\n   */\n   getScopeData() {\n    return {\n      breadcrumbs: this._breadcrumbs,\n      attachments: this._attachments,\n      contexts: this._contexts,\n      tags: this._tags,\n      extra: this._extra,\n      user: this._user,\n      level: this._level,\n      fingerprint: this._fingerprint || [],\n      eventProcessors: this._eventProcessors,\n      propagationContext: this._propagationContext,\n      sdkProcessingMetadata: this._sdkProcessingMetadata,\n      transactionName: this._transactionName,\n      span: _getSpanForScope(this),\n    };\n  }\n\n  /**\n   * Add data which will be accessible during event processing but won't get sent to Sentry.\n   */\n   setSDKProcessingMetadata(newData) {\n    this._sdkProcessingMetadata = merge(this._sdkProcessingMetadata, newData, 2);\n    return this;\n  }\n\n  /**\n   * Add propagation context to the scope, used for distributed tracing\n   */\n   setPropagationContext(context) {\n    this._propagationContext = context;\n    return this;\n  }\n\n  /**\n   * Get propagation context from the scope, used for distributed tracing\n   */\n   getPropagationContext() {\n    return this._propagationContext;\n  }\n\n  /**\n   * Capture an exception for this scope.\n   *\n   * @returns {string} The id of the captured Sentry event.\n   */\n   captureException(exception, hint) {\n    const eventId = hint?.event_id || uuid4();\n\n    if (!this._client) {\n      DEBUG_BUILD && debug.warn('No client configured on scope - will not capture exception!');\n      return eventId;\n    }\n\n    const syntheticException = new Error('Sentry syntheticException');\n\n    this._client.captureException(\n      exception,\n      {\n        originalException: exception,\n        syntheticException,\n        ...hint,\n        event_id: eventId,\n      },\n      this,\n    );\n\n    return eventId;\n  }\n\n  /**\n   * Capture a message for this scope.\n   *\n   * @returns {string} The id of the captured message.\n   */\n   captureMessage(message, level, hint) {\n    const eventId = hint?.event_id || uuid4();\n\n    if (!this._client) {\n      DEBUG_BUILD && debug.warn('No client configured on scope - will not capture message!');\n      return eventId;\n    }\n\n    const syntheticException = new Error(message);\n\n    this._client.captureMessage(\n      message,\n      level,\n      {\n        originalException: message,\n        syntheticException,\n        ...hint,\n        event_id: eventId,\n      },\n      this,\n    );\n\n    return eventId;\n  }\n\n  /**\n   * Capture a Sentry event for this scope.\n   *\n   * @returns {string} The id of the captured event.\n   */\n   captureEvent(event, hint) {\n    const eventId = hint?.event_id || uuid4();\n\n    if (!this._client) {\n      DEBUG_BUILD && debug.warn('No client configured on scope - will not capture event!');\n      return eventId;\n    }\n\n    this._client.captureEvent(event, { ...hint, event_id: eventId }, this);\n\n    return eventId;\n  }\n\n  /**\n   * This will be called on every set call.\n   */\n   _notifyScopeListeners() {\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\nexport { Scope };\n//# sourceMappingURL=scope.js.map\n","import { getGlobalSingleton } from './carrier.js';\nimport { Scope } from './scope.js';\n\n/** Get the default current scope. */\nfunction getDefaultCurrentScope() {\n  return getGlobalSingleton('defaultCurrentScope', () => new Scope());\n}\n\n/** Get the default isolation scope. */\nfunction getDefaultIsolationScope() {\n  return getGlobalSingleton('defaultIsolationScope', () => new Scope());\n}\n\nexport { getDefaultCurrentScope, getDefaultIsolationScope };\n//# sourceMappingURL=defaultScopes.js.map\n","import { getDefaultCurrentScope, getDefaultIsolationScope } from '../defaultScopes.js';\nimport { Scope } from '../scope.js';\nimport { isThenable } from '../utils/is.js';\nimport { getMainCarrier, getSentryCarrier } from '../carrier.js';\n\n/**\n * This is an object that holds a stack of scopes.\n */\nclass AsyncContextStack {\n\n   constructor(scope, isolationScope) {\n    let assignedScope;\n    if (!scope) {\n      assignedScope = new Scope();\n    } else {\n      assignedScope = scope;\n    }\n\n    let assignedIsolationScope;\n    if (!isolationScope) {\n      assignedIsolationScope = new Scope();\n    } else {\n      assignedIsolationScope = isolationScope;\n    }\n\n    // scope stack for domains or the process\n    this._stack = [{ scope: assignedScope }];\n    this._isolationScope = assignedIsolationScope;\n  }\n\n  /**\n   * Fork a scope for the stack.\n   */\n   withScope(callback) {\n    const scope = this._pushScope();\n\n    let maybePromiseResult;\n    try {\n      maybePromiseResult = callback(scope);\n    } catch (e) {\n      this._popScope();\n      throw e;\n    }\n\n    if (isThenable(maybePromiseResult)) {\n      // @ts-expect-error - isThenable returns the wrong type\n      return maybePromiseResult.then(\n        res => {\n          this._popScope();\n          return res;\n        },\n        e => {\n          this._popScope();\n          throw e;\n        },\n      );\n    }\n\n    this._popScope();\n    return maybePromiseResult;\n  }\n\n  /**\n   * Get the client of the stack.\n   */\n   getClient() {\n    return this.getStackTop().client ;\n  }\n\n  /**\n   * Returns the scope of the top stack.\n   */\n   getScope() {\n    return this.getStackTop().scope;\n  }\n\n  /**\n   * Get the isolation scope for the stack.\n   */\n   getIsolationScope() {\n    return this._isolationScope;\n  }\n\n  /**\n   * Returns the topmost scope layer in the order domain > local > process.\n   */\n   getStackTop() {\n    return this._stack[this._stack.length - 1] ;\n  }\n\n  /**\n   * Push a scope to the stack.\n   */\n   _pushScope() {\n    // We want to clone the content of prev scope\n    const scope = this.getScope().clone();\n    this._stack.push({\n      client: this.getClient(),\n      scope,\n    });\n    return scope;\n  }\n\n  /**\n   * Pop a scope from the stack.\n   */\n   _popScope() {\n    if (this._stack.length <= 1) return false;\n    return !!this._stack.pop();\n  }\n}\n\n/**\n * Get the global async context stack.\n * This will be removed during the v8 cycle and is only here to make migration easier.\n */\nfunction getAsyncContextStack() {\n  const registry = getMainCarrier();\n  const sentry = getSentryCarrier(registry);\n\n  return (sentry.stack = sentry.stack || new AsyncContextStack(getDefaultCurrentScope(), getDefaultIsolationScope()));\n}\n\nfunction withScope(callback) {\n  return getAsyncContextStack().withScope(callback);\n}\n\nfunction withSetScope(scope, callback) {\n  const stack = getAsyncContextStack() ;\n  return stack.withScope(() => {\n    stack.getStackTop().scope = scope;\n    return callback(scope);\n  });\n}\n\nfunction withIsolationScope(callback) {\n  return getAsyncContextStack().withScope(() => {\n    return callback(getAsyncContextStack().getIsolationScope());\n  });\n}\n\n/**\n * Get the stack-based async context strategy.\n */\nfunction getStackAsyncContextStrategy() {\n  return {\n    withIsolationScope,\n    withScope,\n    withSetScope,\n    withSetIsolationScope: (_isolationScope, callback) => {\n      return withIsolationScope(callback);\n    },\n    getCurrentScope: () => getAsyncContextStack().getScope(),\n    getIsolationScope: () => getAsyncContextStack().getIsolationScope(),\n  };\n}\n\nexport { AsyncContextStack, getStackAsyncContextStrategy };\n//# sourceMappingURL=stackStrategy.js.map\n","import { getMainCarrier, getSentryCarrier } from '../carrier.js';\nimport { getStackAsyncContextStrategy } from './stackStrategy.js';\n\n/**\n * @private Private API with no semver guarantees!\n *\n * Sets the global async context strategy\n */\nfunction setAsyncContextStrategy(strategy) {\n  // Get main carrier (global for every environment)\n  const registry = getMainCarrier();\n  const sentry = getSentryCarrier(registry);\n  sentry.acs = strategy;\n}\n\n/**\n * Get the current async context strategy.\n * If none has been setup, the default will be used.\n */\nfunction getAsyncContextStrategy(carrier) {\n  const sentry = getSentryCarrier(carrier);\n\n  if (sentry.acs) {\n    return sentry.acs;\n  }\n\n  // Otherwise, use the default one (stack)\n  return getStackAsyncContextStrategy();\n}\n\nexport { getAsyncContextStrategy, setAsyncContextStrategy };\n//# sourceMappingURL=index.js.map\n","import { getAsyncContextStrategy } from './asyncContext/index.js';\nimport { getMainCarrier, getGlobalSingleton } from './carrier.js';\nimport { Scope } from './scope.js';\nimport { generateSpanId } from './utils/propagationContext.js';\n\n/**\n * Get the currently active scope.\n */\nfunction getCurrentScope() {\n  const carrier = getMainCarrier();\n  const acs = getAsyncContextStrategy(carrier);\n  return acs.getCurrentScope();\n}\n\n/**\n * Get the currently active isolation scope.\n * The isolation scope is active for the current execution context.\n */\nfunction getIsolationScope() {\n  const carrier = getMainCarrier();\n  const acs = getAsyncContextStrategy(carrier);\n  return acs.getIsolationScope();\n}\n\n/**\n * Get the global scope.\n * This scope is applied to _all_ events.\n */\nfunction getGlobalScope() {\n  return getGlobalSingleton('globalScope', () => new Scope());\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\n/**\n * Either creates a new active scope, or sets the given scope as active scope in the given callback.\n */\nfunction withScope(\n  ...rest\n) {\n  const carrier = getMainCarrier();\n  const acs = getAsyncContextStrategy(carrier);\n\n  // If a scope is defined, we want to make this the active scope instead of the default one\n  if (rest.length === 2) {\n    const [scope, callback] = rest;\n\n    if (!scope) {\n      return acs.withScope(callback);\n    }\n\n    return acs.withSetScope(scope, callback);\n  }\n\n  return acs.withScope(rest[0]);\n}\n\n/**\n * Attempts to fork the current isolation scope and the current scope based on the current async context strategy. If no\n * async context strategy is set, the isolation scope and the current scope will not be forked (this is currently the\n * case, for example, in the browser).\n *\n * Usage of this function in environments without async context strategy is discouraged and may lead to unexpected behaviour.\n *\n * This function is intended for Sentry SDK and SDK integration development. It is not recommended to be used in \"normal\"\n * applications directly because it comes with pitfalls. Use at your own risk!\n */\n\n/**\n * Either creates a new active isolation scope, or sets the given isolation scope as active scope in the given callback.\n */\nfunction withIsolationScope(\n  ...rest\n\n) {\n  const carrier = getMainCarrier();\n  const acs = getAsyncContextStrategy(carrier);\n\n  // If a scope is defined, we want to make this the active scope instead of the default one\n  if (rest.length === 2) {\n    const [isolationScope, callback] = rest;\n\n    if (!isolationScope) {\n      return acs.withIsolationScope(callback);\n    }\n\n    return acs.withSetIsolationScope(isolationScope, callback);\n  }\n\n  return acs.withIsolationScope(rest[0]);\n}\n\n/**\n * Get the currently active client.\n */\nfunction getClient() {\n  return getCurrentScope().getClient();\n}\n\n/**\n * Get a trace context for the given scope.\n */\nfunction getTraceContextFromScope(scope) {\n  const propagationContext = scope.getPropagationContext();\n\n  const { traceId, parentSpanId, propagationSpanId } = propagationContext;\n\n  const traceContext = {\n    trace_id: traceId,\n    span_id: propagationSpanId || generateSpanId(),\n  };\n\n  if (parentSpanId) {\n    traceContext.parent_span_id = parentSpanId;\n  }\n\n  return traceContext;\n}\n\nexport { getClient, getCurrentScope, getGlobalScope, getIsolationScope, getTraceContextFromScope, withIsolationScope, withScope };\n//# sourceMappingURL=currentScopes.js.map\n","/**\n * Use this attribute to represent the source of a span.\n * Should be one of: custom, url, route, view, component, task, unknown\n *\n */\nconst SEMANTIC_ATTRIBUTE_SENTRY_SOURCE = 'sentry.source';\n\n/**\n * Attributes that holds the sample rate that was locally applied to a span.\n * If this attribute is not defined, it means that the span inherited a sampling decision.\n *\n * NOTE: Is only defined on root spans.\n */\nconst SEMANTIC_ATTRIBUTE_SENTRY_SAMPLE_RATE = 'sentry.sample_rate';\n\n/**\n * Attribute holding the sample rate of the previous trace.\n * This is used to sample consistently across subsequent traces in the browser SDK.\n *\n * Note: Only defined on root spans, if opted into consistent sampling\n */\nconst SEMANTIC_ATTRIBUTE_SENTRY_PREVIOUS_TRACE_SAMPLE_RATE = 'sentry.previous_trace_sample_rate';\n\n/**\n * Use this attribute to represent the operation of a span.\n */\nconst SEMANTIC_ATTRIBUTE_SENTRY_OP = 'sentry.op';\n\n/**\n * Use this attribute to represent the origin of a span.\n */\nconst SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN = 'sentry.origin';\n\n/** The reason why an idle span finished. */\nconst SEMANTIC_ATTRIBUTE_SENTRY_IDLE_SPAN_FINISH_REASON = 'sentry.idle_span_finish_reason';\n\n/** The unit of a measurement, which may be stored as a TimedEvent. */\nconst SEMANTIC_ATTRIBUTE_SENTRY_MEASUREMENT_UNIT = 'sentry.measurement_unit';\n\n/** The value of a measurement, which may be stored as a TimedEvent. */\nconst SEMANTIC_ATTRIBUTE_SENTRY_MEASUREMENT_VALUE = 'sentry.measurement_value';\n\n/**\n * A custom span name set by users guaranteed to be taken over any automatically\n * inferred name. This attribute is removed before the span is sent.\n *\n * @internal only meant for internal SDK usage\n * @hidden\n */\nconst SEMANTIC_ATTRIBUTE_SENTRY_CUSTOM_SPAN_NAME = 'sentry.custom_span_name';\n\n/**\n * The id of the profile that this span occurred in.\n */\nconst SEMANTIC_ATTRIBUTE_PROFILE_ID = 'sentry.profile_id';\n\nconst SEMANTIC_ATTRIBUTE_EXCLUSIVE_TIME = 'sentry.exclusive_time';\n\nconst SEMANTIC_ATTRIBUTE_CACHE_HIT = 'cache.hit';\n\nconst SEMANTIC_ATTRIBUTE_CACHE_KEY = 'cache.key';\n\nconst SEMANTIC_ATTRIBUTE_CACHE_ITEM_SIZE = 'cache.item_size';\n\n/** TODO: Remove these once we update to latest semantic conventions */\nconst SEMANTIC_ATTRIBUTE_HTTP_REQUEST_METHOD = 'http.request.method';\nconst SEMANTIC_ATTRIBUTE_URL_FULL = 'url.full';\n\n/**\n * A span link attribute to mark the link as a special span link.\n *\n * Known values:\n * - `previous_trace`: The span links to the frontend root span of the previous trace.\n * - `next_trace`: The span links to the frontend root span of the next trace. (Not set by the SDK)\n *\n * Other values may be set as appropriate.\n * @see https://develop.sentry.dev/sdk/telemetry/traces/span-links/#link-types\n */\nconst SEMANTIC_LINK_ATTRIBUTE_LINK_TYPE = 'sentry.link.type';\n\nexport { SEMANTIC_ATTRIBUTE_CACHE_HIT, SEMANTIC_ATTRIBUTE_CACHE_ITEM_SIZE, SEMANTIC_ATTRIBUTE_CACHE_KEY, SEMANTIC_ATTRIBUTE_EXCLUSIVE_TIME, SEMANTIC_ATTRIBUTE_HTTP_REQUEST_METHOD, SEMANTIC_ATTRIBUTE_PROFILE_ID, SEMANTIC_ATTRIBUTE_SENTRY_CUSTOM_SPAN_NAME, SEMANTIC_ATTRIBUTE_SENTRY_IDLE_SPAN_FINISH_REASON, SEMANTIC_ATTRIBUTE_SENTRY_MEASUREMENT_UNIT, SEMANTIC_ATTRIBUTE_SENTRY_MEASUREMENT_VALUE, SEMANTIC_ATTRIBUTE_SENTRY_OP, SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN, SEMANTIC_ATTRIBUTE_SENTRY_PREVIOUS_TRACE_SAMPLE_RATE, SEMANTIC_ATTRIBUTE_SENTRY_SAMPLE_RATE, SEMANTIC_ATTRIBUTE_SENTRY_SOURCE, SEMANTIC_ATTRIBUTE_URL_FULL, SEMANTIC_LINK_ATTRIBUTE_LINK_TYPE };\n//# sourceMappingURL=semanticAttributes.js.map\n","const SPAN_STATUS_UNSET = 0;\nconst SPAN_STATUS_OK = 1;\nconst SPAN_STATUS_ERROR = 2;\n\n/**\n * Converts a HTTP status code into a sentry status with a message.\n *\n * @param httpStatus The HTTP response status code.\n * @returns The span status or unknown_error.\n */\n// https://develop.sentry.dev/sdk/event-payloads/span/\nfunction getSpanStatusFromHttpCode(httpStatus) {\n  if (httpStatus < 400 && httpStatus >= 100) {\n    return { code: SPAN_STATUS_OK };\n  }\n\n  if (httpStatus >= 400 && httpStatus < 500) {\n    switch (httpStatus) {\n      case 401:\n        return { code: SPAN_STATUS_ERROR, message: 'unauthenticated' };\n      case 403:\n        return { code: SPAN_STATUS_ERROR, message: 'permission_denied' };\n      case 404:\n        return { code: SPAN_STATUS_ERROR, message: 'not_found' };\n      case 409:\n        return { code: SPAN_STATUS_ERROR, message: 'already_exists' };\n      case 413:\n        return { code: SPAN_STATUS_ERROR, message: 'failed_precondition' };\n      case 429:\n        return { code: SPAN_STATUS_ERROR, message: 'resource_exhausted' };\n      case 499:\n        return { code: SPAN_STATUS_ERROR, message: 'cancelled' };\n      default:\n        return { code: SPAN_STATUS_ERROR, message: 'invalid_argument' };\n    }\n  }\n\n  if (httpStatus >= 500 && httpStatus < 600) {\n    switch (httpStatus) {\n      case 501:\n        return { code: SPAN_STATUS_ERROR, message: 'unimplemented' };\n      case 503:\n        return { code: SPAN_STATUS_ERROR, message: 'unavailable' };\n      case 504:\n        return { code: SPAN_STATUS_ERROR, message: 'deadline_exceeded' };\n      default:\n        return { code: SPAN_STATUS_ERROR, message: 'internal_error' };\n    }\n  }\n\n  return { code: SPAN_STATUS_ERROR, message: 'unknown_error' };\n}\n\n/**\n * Sets the Http status attributes on the current span based on the http code.\n * Additionally, the span's status is updated, depending on the http code.\n */\nfunction setHttpStatus(span, httpStatus) {\n  span.setAttribute('http.response.status_code', httpStatus);\n\n  const spanStatus = getSpanStatusFromHttpCode(httpStatus);\n  if (spanStatus.message !== 'unknown_error') {\n    span.setStatus(spanStatus);\n  }\n}\n\nexport { SPAN_STATUS_ERROR, SPAN_STATUS_OK, SPAN_STATUS_UNSET, getSpanStatusFromHttpCode, setHttpStatus };\n//# sourceMappingURL=spanstatus.js.map\n","import { addNonEnumerableProperty } from '../utils/object.js';\n\nconst SCOPE_ON_START_SPAN_FIELD = '_sentryScope';\nconst ISOLATION_SCOPE_ON_START_SPAN_FIELD = '_sentryIsolationScope';\n\n/** Store the scope & isolation scope for a span, which can the be used when it is finished. */\nfunction setCapturedScopesOnSpan(span, scope, isolationScope) {\n  if (span) {\n    addNonEnumerableProperty(span, ISOLATION_SCOPE_ON_START_SPAN_FIELD, isolationScope);\n    addNonEnumerableProperty(span, SCOPE_ON_START_SPAN_FIELD, scope);\n  }\n}\n\n/**\n * Grabs the scope and isolation scope off a span that were active when the span was started.\n */\nfunction getCapturedScopesOnSpan(span) {\n  return {\n    scope: (span )[SCOPE_ON_START_SPAN_FIELD],\n    isolationScope: (span )[ISOLATION_SCOPE_ON_START_SPAN_FIELD],\n  };\n}\n\nexport { getCapturedScopesOnSpan, setCapturedScopesOnSpan };\n//# sourceMappingURL=utils.js.map\n","import { DEBUG_BUILD } from '../debug-build.js';\nimport { debug } from './debug-logger.js';\nimport { isString } from './is.js';\n\nconst SENTRY_BAGGAGE_KEY_PREFIX = 'sentry-';\n\nconst 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 */\nconst 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 */\nfunction baggageHeaderToDynamicSamplingContext(\n  // Very liberal definition of what any incoming header might look like\n  baggageHeader,\n) {\n  const baggageObject = parseBaggageHeader(baggageHeader);\n\n  if (!baggageObject) {\n    return undefined;\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 ;\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 */\nfunction dynamicSamplingContextToSentryBaggageHeader(\n  // this also takes undefined for convenience and bundle size in other places\n  dynamicSamplingContext,\n) {\n  if (!dynamicSamplingContext) {\n    return undefined;\n  }\n\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 * Take a baggage header and parse it into an object.\n */\nfunction parseBaggageHeader(\n  baggageHeader,\n) {\n  if (!baggageHeader || (!isString(baggageHeader) && !Array.isArray(baggageHeader))) {\n    return undefined;\n  }\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    return baggageHeader.reduce((acc, curr) => {\n      const currBaggageObject = baggageHeaderToObject(curr);\n      Object.entries(currBaggageObject).forEach(([key, value]) => {\n        acc[key] = value;\n      });\n      return acc;\n    }, {});\n  }\n\n  return baggageHeaderToObject(baggageHeader);\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) {\n  return baggageHeader\n    .split(',')\n    .map(baggageEntry =>\n      baggageEntry.split('=').map(keyOrValue => {\n        try {\n          return decodeURIComponent(keyOrValue.trim());\n        } catch {\n          // We ignore errors here, e.g. if the value cannot be URL decoded.\n          // This will then be skipped in the next step\n          return;\n        }\n      }),\n    )\n    .reduce((acc, [key, value]) => {\n      if (key && value) {\n        acc[key] = value;\n      }\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) {\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        debug.warn(\n          `Not adding key: ${objectKey} with val: ${objectValue} to baggage header due to exceeding baggage size limits.`,\n        );\n      return baggageHeader;\n    } else {\n      return newBaggageHeader;\n    }\n  }, '');\n}\n\nexport { MAX_BAGGAGE_STRING_LENGTH, SENTRY_BAGGAGE_KEY_PREFIX, SENTRY_BAGGAGE_KEY_PREFIX_REGEX, baggageHeaderToDynamicSamplingContext, dynamicSamplingContextToSentryBaggageHeader, objectToBaggageHeader, parseBaggageHeader };\n//# sourceMappingURL=baggage.js.map\n","import { DEBUG_BUILD } from '../debug-build.js';\nimport { consoleSandbox, debug } from './debug-logger.js';\n\n/** Regular expression used to extract org ID from a DSN host. */\nconst ORG_ID_REGEX = /^o(\\d+)\\./;\n\n/** Regular expression used to parse a Dsn. */\nconst DSN_REGEX = /^(?:(\\w+):)\\/\\/(?:(\\w+)(?::(\\w+)?)?@)([\\w.-]+)(?::(\\d+))?\\/(.+)/;\n\nfunction isValidProtocol(protocol) {\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 */\nfunction dsnToString(dsn, withPassword = false) {\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 or undefined if @param str is not a valid DSN string\n */\nfunction dsnFromString(str) {\n  const match = DSN_REGEX.exec(str);\n\n  if (!match) {\n    // This should be logged to the console\n    consoleSandbox(() => {\n      // eslint-disable-next-line no-console\n      console.error(`Invalid Sentry Dsn: ${str}`);\n    });\n    return undefined;\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() ;\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 , publicKey });\n}\n\nfunction dsnFromComponents(components) {\n  return {\n    protocol: components.protocol,\n    publicKey: components.publicKey || '',\n    pass: components.pass || '',\n    host: components.host,\n    port: components.port || '',\n    path: components.path || '',\n    projectId: components.projectId,\n  };\n}\n\nfunction validateDsn(dsn) {\n  if (!DEBUG_BUILD) {\n    return true;\n  }\n\n  const { port, projectId, protocol } = dsn;\n\n  const requiredComponents = ['protocol', 'publicKey', 'host', 'projectId'];\n  const hasMissingRequiredComponent = requiredComponents.find(component => {\n    if (!dsn[component]) {\n      debug.error(`Invalid Sentry Dsn: ${component} missing`);\n      return true;\n    }\n    return false;\n  });\n\n  if (hasMissingRequiredComponent) {\n    return false;\n  }\n\n  if (!projectId.match(/^\\d+$/)) {\n    debug.error(`Invalid Sentry Dsn: Invalid projectId ${projectId}`);\n    return false;\n  }\n\n  if (!isValidProtocol(protocol)) {\n    debug.error(`Invalid Sentry Dsn: Invalid protocol ${protocol}`);\n    return false;\n  }\n\n  if (port && isNaN(parseInt(port, 10))) {\n    debug.error(`Invalid Sentry Dsn: Invalid port ${port}`);\n    return false;\n  }\n\n  return true;\n}\n\n/**\n * Extract the org ID from a DSN host.\n *\n * @param host The host from a DSN\n * @returns The org ID if found, undefined otherwise\n */\nfunction extractOrgIdFromDsnHost(host) {\n  const match = host.match(ORG_ID_REGEX);\n\n  return match?.[1];\n}\n\n/**\n *  Returns the organization ID of the client.\n *\n *  The organization ID is extracted from the DSN. If the client options include a `orgId`, this will always take precedence.\n */\nfunction extractOrgIdFromClient(client) {\n  const options = client.getOptions();\n\n  const { host } = client.getDsn() || {};\n\n  let org_id;\n\n  if (options.orgId) {\n    org_id = String(options.orgId);\n  } else if (host) {\n    org_id = extractOrgIdFromDsnHost(host);\n  }\n\n  return org_id;\n}\n\n/**\n * Creates a valid Sentry Dsn object, identifying a Sentry instance and project.\n * @returns a valid DsnComponents object or `undefined` if @param from is an invalid DSN source\n */\nfunction makeDsn(from) {\n  const components = typeof from === 'string' ? dsnFromString(from) : dsnFromComponents(from);\n  if (!components || !validateDsn(components)) {\n    return undefined;\n  }\n  return components;\n}\n\nexport { dsnFromString, dsnToString, extractOrgIdFromClient, extractOrgIdFromDsnHost, makeDsn };\n//# sourceMappingURL=dsn.js.map\n","/**\n * Parse a sample rate from a given value.\n * This will either return a boolean or number sample rate, if the sample rate is valid (between 0 and 1).\n * If a string is passed, we try to convert it to a number.\n *\n * Any invalid sample rate will return `undefined`.\n */\nfunction parseSampleRate(sampleRate) {\n  if (typeof sampleRate === 'boolean') {\n    return Number(sampleRate);\n  }\n\n  const rate = typeof sampleRate === 'string' ? parseFloat(sampleRate) : sampleRate;\n  if (typeof rate !== 'number' || isNaN(rate) || rate < 0 || rate > 1) {\n    return undefined;\n  }\n\n  return rate;\n}\n\nexport { parseSampleRate };\n//# sourceMappingURL=parseSampleRate.js.map\n","import { getAsyncContextStrategy } from '../asyncContext/index.js';\nimport { getMainCarrier } from '../carrier.js';\nimport { getCurrentScope } from '../currentScopes.js';\nimport { SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN, SEMANTIC_ATTRIBUTE_SENTRY_OP, SEMANTIC_ATTRIBUTE_SENTRY_CUSTOM_SPAN_NAME, SEMANTIC_ATTRIBUTE_SENTRY_SOURCE } from '../semanticAttributes.js';\nimport { SPAN_STATUS_UNSET, SPAN_STATUS_OK } from '../tracing/spanstatus.js';\nimport { getCapturedScopesOnSpan } from '../tracing/utils.js';\nimport { addNonEnumerableProperty } from './object.js';\nimport { generateSpanId } from './propagationContext.js';\nimport { timestampInSeconds } from './time.js';\nimport { generateSentryTraceHeader } from './tracing.js';\nimport { consoleSandbox } from './debug-logger.js';\nimport { _getSpanForScope } from './spanOnScope.js';\n\n// These are aligned with OpenTelemetry trace flags\nconst TRACE_FLAG_NONE = 0x0;\nconst TRACE_FLAG_SAMPLED = 0x1;\n\nlet hasShownSpanDropWarning = false;\n\n/**\n * Convert a span to a trace context, which can be sent as the `trace` context in an event.\n * By default, this will only include trace_id, span_id & parent_span_id.\n * If `includeAllData` is true, it will also include data, op, status & origin.\n */\nfunction spanToTransactionTraceContext(span) {\n  const { spanId: span_id, traceId: trace_id } = span.spanContext();\n  const { data, op, parent_span_id, status, origin, links } = spanToJSON(span);\n\n  return {\n    parent_span_id,\n    span_id,\n    trace_id,\n    data,\n    op,\n    status,\n    origin,\n    links,\n  };\n}\n\n/**\n * Convert a span to a trace context, which can be sent as the `trace` context in a non-transaction event.\n */\nfunction spanToTraceContext(span) {\n  const { spanId, traceId: trace_id, isRemote } = span.spanContext();\n\n  // If the span is remote, we use a random/virtual span as span_id to the trace context,\n  // and the remote span as parent_span_id\n  const parent_span_id = isRemote ? spanId : spanToJSON(span).parent_span_id;\n  const scope = getCapturedScopesOnSpan(span).scope;\n\n  const span_id = isRemote ? scope?.getPropagationContext().propagationSpanId || generateSpanId() : spanId;\n\n  return {\n    parent_span_id,\n    span_id,\n    trace_id,\n  };\n}\n\n/**\n * Convert a Span to a Sentry trace header.\n */\nfunction spanToTraceHeader(span) {\n  const { traceId, spanId } = span.spanContext();\n  const sampled = spanIsSampled(span);\n  return generateSentryTraceHeader(traceId, spanId, sampled);\n}\n\n/**\n *  Converts the span links array to a flattened version to be sent within an envelope.\n *\n *  If the links array is empty, it returns `undefined` so the empty value can be dropped before it's sent.\n */\nfunction convertSpanLinksForEnvelope(links) {\n  if (links && links.length > 0) {\n    return links.map(({ context: { spanId, traceId, traceFlags, ...restContext }, attributes }) => ({\n      span_id: spanId,\n      trace_id: traceId,\n      sampled: traceFlags === TRACE_FLAG_SAMPLED,\n      attributes,\n      ...restContext,\n    }));\n  } else {\n    return undefined;\n  }\n}\n\n/**\n * Convert a span time input into a timestamp in seconds.\n */\nfunction spanTimeInputToSeconds(input) {\n  if (typeof input === 'number') {\n    return ensureTimestampInSeconds(input);\n  }\n\n  if (Array.isArray(input)) {\n    // See {@link HrTime} for the array-based time format\n    return input[0] + input[1] / 1e9;\n  }\n\n  if (input instanceof Date) {\n    return ensureTimestampInSeconds(input.getTime());\n  }\n\n  return timestampInSeconds();\n}\n\n/**\n * Converts a timestamp to second, if it was in milliseconds, or keeps it as second.\n */\nfunction ensureTimestampInSeconds(timestamp) {\n  const isMs = timestamp > 9999999999;\n  return isMs ? timestamp / 1000 : timestamp;\n}\n\n/**\n * Convert a span to a JSON representation.\n */\n// Note: Because of this, we currently have a circular type dependency (which we opted out of in package.json).\n// This is not avoidable as we need `spanToJSON` in `spanUtils.ts`, which in turn is needed by `span.ts` for backwards compatibility.\n// And `spanToJSON` needs the Span class from `span.ts` to check here.\nfunction spanToJSON(span) {\n  if (spanIsSentrySpan(span)) {\n    return span.getSpanJSON();\n  }\n\n  const { spanId: span_id, traceId: trace_id } = span.spanContext();\n\n  // Handle a span from @opentelemetry/sdk-base-trace's `Span` class\n  if (spanIsOpenTelemetrySdkTraceBaseSpan(span)) {\n    const { attributes, startTime, name, endTime, status, links } = span;\n\n    // In preparation for the next major of OpenTelemetry, we want to support\n    // looking up the parent span id according to the new API\n    // In OTel v1, the parent span id is accessed as `parentSpanId`\n    // In OTel v2, the parent span id is accessed as `spanId` on the `parentSpanContext`\n    const parentSpanId =\n      'parentSpanId' in span\n        ? span.parentSpanId\n        : 'parentSpanContext' in span\n          ? (span.parentSpanContext )?.spanId\n          : undefined;\n\n    return {\n      span_id,\n      trace_id,\n      data: attributes,\n      description: name,\n      parent_span_id: parentSpanId,\n      start_timestamp: spanTimeInputToSeconds(startTime),\n      // This is [0,0] by default in OTEL, in which case we want to interpret this as no end time\n      timestamp: spanTimeInputToSeconds(endTime) || undefined,\n      status: getStatusMessage(status),\n      op: attributes[SEMANTIC_ATTRIBUTE_SENTRY_OP],\n      origin: attributes[SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN] ,\n      links: convertSpanLinksForEnvelope(links),\n    };\n  }\n\n  // Finally, at least we have `spanContext()`....\n  // This should not actually happen in reality, but we need to handle it for type safety.\n  return {\n    span_id,\n    trace_id,\n    start_timestamp: 0,\n    data: {},\n  };\n}\n\nfunction spanIsOpenTelemetrySdkTraceBaseSpan(span) {\n  const castSpan = span ;\n  return !!castSpan.attributes && !!castSpan.startTime && !!castSpan.name && !!castSpan.endTime && !!castSpan.status;\n}\n\n/** Exported only for tests. */\n\n/**\n * Sadly, due to circular dependency checks we cannot actually import the Span class here and check for instanceof.\n * :( So instead we approximate this by checking if it has the `getSpanJSON` method.\n */\nfunction spanIsSentrySpan(span) {\n  return typeof (span ).getSpanJSON === 'function';\n}\n\n/**\n * Returns true if a span is sampled.\n * In most cases, you should just use `span.isRecording()` instead.\n * However, this has a slightly different semantic, as it also returns false if the span is finished.\n * So in the case where this distinction is important, use this method.\n */\nfunction spanIsSampled(span) {\n  // We align our trace flags with the ones OpenTelemetry use\n  // So we also check for sampled the same way they do.\n  const { traceFlags } = span.spanContext();\n  return traceFlags === TRACE_FLAG_SAMPLED;\n}\n\n/** Get the status message to use for a JSON representation of a span. */\nfunction getStatusMessage(status) {\n  if (!status || status.code === SPAN_STATUS_UNSET) {\n    return undefined;\n  }\n\n  if (status.code === SPAN_STATUS_OK) {\n    return 'ok';\n  }\n\n  return status.message || 'unknown_error';\n}\n\nconst CHILD_SPANS_FIELD = '_sentryChildSpans';\nconst ROOT_SPAN_FIELD = '_sentryRootSpan';\n\n/**\n * Adds an opaque child span reference to a span.\n */\nfunction addChildSpanToSpan(span, childSpan) {\n  // We store the root span reference on the child span\n  // We need this for `getRootSpan()` to work\n  const rootSpan = span[ROOT_SPAN_FIELD] || span;\n  addNonEnumerableProperty(childSpan , ROOT_SPAN_FIELD, rootSpan);\n\n  // We store a list of child spans on the parent span\n  // We need this for `getSpanDescendants()` to work\n  if (span[CHILD_SPANS_FIELD]) {\n    span[CHILD_SPANS_FIELD].add(childSpan);\n  } else {\n    addNonEnumerableProperty(span, CHILD_SPANS_FIELD, new Set([childSpan]));\n  }\n}\n\n/** This is only used internally by Idle Spans. */\nfunction removeChildSpanFromSpan(span, childSpan) {\n  if (span[CHILD_SPANS_FIELD]) {\n    span[CHILD_SPANS_FIELD].delete(childSpan);\n  }\n}\n\n/**\n * Returns an array of the given span and all of its descendants.\n */\nfunction getSpanDescendants(span) {\n  const resultSet = new Set();\n\n  function addSpanChildren(span) {\n    // This exit condition is required to not infinitely loop in case of a circular dependency.\n    if (resultSet.has(span)) {\n      return;\n      // We want to ignore unsampled spans (e.g. non recording spans)\n    } else if (spanIsSampled(span)) {\n      resultSet.add(span);\n      const childSpans = span[CHILD_SPANS_FIELD] ? Array.from(span[CHILD_SPANS_FIELD]) : [];\n      for (const childSpan of childSpans) {\n        addSpanChildren(childSpan);\n      }\n    }\n  }\n\n  addSpanChildren(span);\n\n  return Array.from(resultSet);\n}\n\n/**\n * Returns the root span of a given span.\n */\nfunction getRootSpan(span) {\n  return span[ROOT_SPAN_FIELD] || span;\n}\n\n/**\n * Returns the currently active span.\n */\nfunction getActiveSpan() {\n  const carrier = getMainCarrier();\n  const acs = getAsyncContextStrategy(carrier);\n  if (acs.getActiveSpan) {\n    return acs.getActiveSpan();\n  }\n\n  return _getSpanForScope(getCurrentScope());\n}\n\n/**\n * Logs a warning once if `beforeSendSpan` is used to drop spans.\n */\nfunction showSpanDropWarning() {\n  if (!hasShownSpanDropWarning) {\n    consoleSandbox(() => {\n      // eslint-disable-next-line no-console\n      console.warn(\n        '[Sentry] Returning null from `beforeSendSpan` is disallowed. To drop certain spans, configure the respective integrations directly.',\n      );\n    });\n    hasShownSpanDropWarning = true;\n  }\n}\n\n/**\n * Updates the name of the given span and ensures that the span name is not\n * overwritten by the Sentry SDK.\n *\n * Use this function instead of `span.updateName()` if you want to make sure that\n * your name is kept. For some spans, for example root `http.server` spans the\n * Sentry SDK would otherwise overwrite the span name with a high-quality name\n * it infers when the span ends.\n *\n * Use this function in server code or when your span is started on the server\n * and on the client (browser). If you only update a span name on the client,\n * you can also use `span.updateName()` the SDK does not overwrite the name.\n *\n * @param span - The span to update the name of.\n * @param name - The name to set on the span.\n */\nfunction updateSpanName(span, name) {\n  span.updateName(name);\n  span.setAttributes({\n    [SEMANTIC_ATTRIBUTE_SENTRY_SOURCE]: 'custom',\n    [SEMANTIC_ATTRIBUTE_SENTRY_CUSTOM_SPAN_NAME]: name,\n  });\n}\n\nexport { TRACE_FLAG_NONE, TRACE_FLAG_SAMPLED, addChildSpanToSpan, convertSpanLinksForEnvelope, getActiveSpan, getRootSpan, getSpanDescendants, getStatusMessage, removeChildSpanFromSpan, showSpanDropWarning, spanIsSampled, spanTimeInputToSeconds, spanToJSON, spanToTraceContext, spanToTraceHeader, spanToTransactionTraceContext, updateSpanName };\n//# sourceMappingURL=spanUtils.js.map\n","import { getClient } from '../currentScopes.js';\n\n// Treeshakable guard to remove all code related to tracing\n\n/**\n * Determines if span recording is currently enabled.\n *\n * Spans are recorded when at least one of `tracesSampleRate` and `tracesSampler`\n * is defined in the SDK config. This function does not make any assumption about\n * sampling decisions, it only checks if the SDK is configured to record spans.\n *\n * Important: This function only determines if span recording is enabled. Trace\n * continuation and propagation is separately controlled and not covered by this function.\n * If this function returns `false`, traces can still be propagated (which is what\n * we refer to by \"Tracing without Performance\")\n * @see https://develop.sentry.dev/sdk/telemetry/traces/tracing-without-performance/\n *\n * @param maybeOptions An SDK options object to be passed to this function.\n * If this option is not provided, the function will use the current client's options.\n */\nfunction hasSpansEnabled(\n  maybeOptions,\n) {\n  if (typeof __SENTRY_TRACING__ === 'boolean' && !__SENTRY_TRACING__) {\n    return false;\n  }\n\n  const options = maybeOptions || getClient()?.getOptions();\n  return (\n    !!options &&\n    // Note: This check is `!= null`, meaning \"nullish\". `0` is not \"nullish\", `undefined` and `null` are. (This comment was brought to you by 15 minutes of questioning life)\n    (options.tracesSampleRate != null || !!options.tracesSampler)\n  );\n}\n\nexport { hasSpansEnabled };\n//# sourceMappingURL=hasSpansEnabled.js.map\n","const DEFAULT_ENVIRONMENT = 'production';\n\nexport { DEFAULT_ENVIRONMENT };\n//# sourceMappingURL=constants.js.map\n","import { DEFAULT_ENVIRONMENT } from '../constants.js';\nimport { getClient } from '../currentScopes.js';\nimport { SEMANTIC_ATTRIBUTE_SENTRY_SAMPLE_RATE, SEMANTIC_ATTRIBUTE_SENTRY_PREVIOUS_TRACE_SAMPLE_RATE, SEMANTIC_ATTRIBUTE_SENTRY_SOURCE } from '../semanticAttributes.js';\nimport { baggageHeaderToDynamicSamplingContext, dynamicSamplingContextToSentryBaggageHeader } from '../utils/baggage.js';\nimport { extractOrgIdFromClient } from '../utils/dsn.js';\nimport { hasSpansEnabled } from '../utils/hasSpansEnabled.js';\nimport { addNonEnumerableProperty } from '../utils/object.js';\nimport { getRootSpan, spanToJSON, spanIsSampled } from '../utils/spanUtils.js';\nimport { getCapturedScopesOnSpan } from './utils.js';\n\n/**\n * If you change this value, also update the terser plugin config to\n * avoid minification of the object property!\n */\nconst FROZEN_DSC_FIELD = '_frozenDsc';\n\n/**\n * Freeze the given DSC on the given span.\n */\nfunction freezeDscOnSpan(span, dsc) {\n  const spanWithMaybeDsc = span ;\n  addNonEnumerableProperty(spanWithMaybeDsc, FROZEN_DSC_FIELD, dsc);\n}\n\n/**\n * Creates a dynamic sampling context from a client.\n *\n * Dispatches the `createDsc` lifecycle hook as a side effect.\n */\nfunction getDynamicSamplingContextFromClient(trace_id, client) {\n  const options = client.getOptions();\n\n  const { publicKey: public_key } = client.getDsn() || {};\n\n  // Instead of conditionally adding non-undefined values, we add them and then remove them if needed\n  // otherwise, the order of baggage entries changes, which \"breaks\" a bunch of tests etc.\n  const dsc = {\n    environment: options.environment || DEFAULT_ENVIRONMENT,\n    release: options.release,\n    public_key,\n    trace_id,\n    org_id: extractOrgIdFromClient(client),\n  };\n\n  client.emit('createDsc', dsc);\n\n  return dsc;\n}\n\n/**\n * Get the dynamic sampling context for the currently active scopes.\n */\nfunction getDynamicSamplingContextFromScope(client, scope) {\n  const propagationContext = scope.getPropagationContext();\n  return propagationContext.dsc || getDynamicSamplingContextFromClient(propagationContext.traceId, client);\n}\n\n/**\n * Creates a dynamic sampling context from a span (and client and scope)\n *\n * @param span the span from which a few values like the root span name and sample rate are extracted.\n *\n * @returns a dynamic sampling context\n */\nfunction getDynamicSamplingContextFromSpan(span) {\n  const client = getClient();\n  if (!client) {\n    return {};\n  }\n\n  const rootSpan = getRootSpan(span);\n  const rootSpanJson = spanToJSON(rootSpan);\n  const rootSpanAttributes = rootSpanJson.data;\n  const traceState = rootSpan.spanContext().traceState;\n\n  // The span sample rate that was locally applied to the root span should also always be applied to the DSC, even if the DSC is frozen.\n  // This is so that the downstream traces/services can use parentSampleRate in their `tracesSampler` to make consistent sampling decisions across the entire trace.\n  const rootSpanSampleRate =\n    traceState?.get('sentry.sample_rate') ??\n    rootSpanAttributes[SEMANTIC_ATTRIBUTE_SENTRY_SAMPLE_RATE] ??\n    rootSpanAttributes[SEMANTIC_ATTRIBUTE_SENTRY_PREVIOUS_TRACE_SAMPLE_RATE];\n\n  function applyLocalSampleRateToDsc(dsc) {\n    if (typeof rootSpanSampleRate === 'number' || typeof rootSpanSampleRate === 'string') {\n      dsc.sample_rate = `${rootSpanSampleRate}`;\n    }\n    return dsc;\n  }\n\n  // For core implementation, we freeze the DSC onto the span as a non-enumerable property\n  const frozenDsc = (rootSpan )[FROZEN_DSC_FIELD];\n  if (frozenDsc) {\n    return applyLocalSampleRateToDsc(frozenDsc);\n  }\n\n  // For OpenTelemetry, we freeze the DSC on the trace state\n  const traceStateDsc = traceState?.get('sentry.dsc');\n\n  // If the span has a DSC, we want it to take precedence\n  const dscOnTraceState = traceStateDsc && baggageHeaderToDynamicSamplingContext(traceStateDsc);\n\n  if (dscOnTraceState) {\n    return applyLocalSampleRateToDsc(dscOnTraceState);\n  }\n\n  // Else, we generate it from the span\n  const dsc = getDynamicSamplingContextFromClient(span.spanContext().traceId, client);\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 source = rootSpanAttributes[SEMANTIC_ATTRIBUTE_SENTRY_SOURCE];\n\n  // after JSON conversion, txn.name becomes jsonSpan.description\n  const name = rootSpanJson.description;\n  if (source !== 'url' && name) {\n    dsc.transaction = name;\n  }\n\n  // How can we even land here with hasSpansEnabled() returning false?\n  // Otel creates a Non-recording span in Tracing Without Performance mode when handling incoming requests\n  // So we end up with an active span that is not sampled (neither positively nor negatively)\n  if (hasSpansEnabled()) {\n    dsc.sampled = String(spanIsSampled(rootSpan));\n    dsc.sample_rand =\n      // In OTEL we store the sample rand on the trace state because we cannot access scopes for NonRecordingSpans\n      // The Sentry OTEL SpanSampler takes care of writing the sample rand on the root span\n      traceState?.get('sentry.sample_rand') ??\n      // On all other platforms we can actually get the scopes from a root span (we use this as a fallback)\n      getCapturedScopesOnSpan(rootSpan).scope?.getPropagationContext().sampleRand.toString();\n  }\n\n  applyLocalSampleRateToDsc(dsc);\n\n  client.emit('createDsc', dsc, rootSpan);\n\n  return dsc;\n}\n\n/**\n * Convert a Span to a baggage header.\n */\nfunction spanToBaggageHeader(span) {\n  const dsc = getDynamicSamplingContextFromSpan(span);\n  return dynamicSamplingContextToSentryBaggageHeader(dsc);\n}\n\nexport { freezeDscOnSpan, getDynamicSamplingContextFromClient, getDynamicSamplingContextFromScope, getDynamicSamplingContextFromSpan, spanToBaggageHeader };\n//# sourceMappingURL=dynamicSamplingContext.js.map\n","import { isVueViewModel, isSyntheticEvent } from './is.js';\nimport { convertToPlainObject } from './object.js';\nimport { getFunctionName } from './stacktrace.js';\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 normalized 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\nfunction normalize(input, depth = 100, maxProperties = +Infinity) {\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 */\nfunction normalizeToSize(\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  object,\n  // Default Node.js REPL depth\n  depth = 3,\n  // 100kB, as 200kB is max payload size, so half sounds reasonable\n  maxSize = 100 * 1024,\n) {\n  const normalized = normalize(object, depth);\n\n  if (jsonSize(normalized) > maxSize) {\n    return normalizeToSize(object, depth - 1, maxSize);\n  }\n\n  return normalized ;\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,\n  value,\n  depth = +Infinity,\n  maxProperties = +Infinity,\n  memo = memoBuilder(),\n) {\n  const [memoize, unmemoize] = memo;\n\n  // Get the simple cases out of the way first\n  if (\n    value == null || // this matches null and undefined -> eqeq not eqeqeq\n    ['boolean', 'string'].includes(typeof value) ||\n    (typeof value === 'number' && Number.isFinite(value))\n  ) {\n    return value ;\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 )['__sentry_skip_normalization__']) {\n    return value ;\n  }\n\n  // We can set `__sentry_override_normalization_depth__` on an object to ensure that from there\n  // We keep a certain amount of depth.\n  // This should be used sparingly, e.g. we use it for the redux integration to ensure we get a certain amount of state.\n  const remainingDepth =\n    typeof (value )['__sentry_override_normalization_depth__'] === 'number'\n      ? ((value )['__sentry_override_normalization_depth__'] )\n      : depth;\n\n  // We're also done if we've reached the max depth\n  if (remainingDepth === 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 ;\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, remainingDepth - 1, maxProperties, memo);\n    } catch {\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) ? [] : {}) ;\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 );\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, remainingDepth - 1, maxProperties, memo);\n\n    numAdded++;\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/* eslint-disable complexity */\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,\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,\n) {\n  try {\n    if (key === 'domain' && value && typeof value === 'object' && (value )._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    if (isVueViewModel(value)) {\n      return '[VueViewModel]';\n    }\n\n    // React's SyntheticEvent thingy\n    if (isSyntheticEvent(value)) {\n      return '[SyntheticEvent]';\n    }\n\n    if (typeof value === 'number' && !Number.isFinite(value)) {\n      return `[${value}]`;\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    const objName = getConstructorName(value);\n\n    // Handle HTML Elements\n    if (/^HTML(\\w*)Element$/.test(objName)) {\n      return `[HTMLElement: ${objName}]`;\n    }\n\n    return `[object ${objName}]`;\n  } catch (err) {\n    return `**non-serializable** (${err})`;\n  }\n}\n/* eslint-enable complexity */\n\nfunction getConstructorName(value) {\n  const prototype = Object.getPrototypeOf(value);\n\n  return prototype?.constructor ? prototype.constructor.name : 'null prototype';\n}\n\n/** Calculates bytes size of input string */\nfunction utf8Length(value) {\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) {\n  return utf8Length(JSON.stringify(value));\n}\n\n/**\n * Normalizes URLs in exceptions and stacktraces to a base path so Sentry can fingerprint\n * across platforms and working directory.\n *\n * @param url The URL to be normalized.\n * @param basePath The application base path.\n * @returns The normalized URL.\n */\nfunction normalizeUrlToBase(url, basePath) {\n  const escapedBase = basePath\n    // Backslash to forward\n    .replace(/\\\\/g, '/')\n    // Escape RegExp special characters\n    .replace(/[|\\\\{}()[\\]^$+*?.]/g, '\\\\$&');\n\n  let newUrl = url;\n  try {\n    newUrl = decodeURI(url);\n  } catch {\n    // Sometime this breaks\n  }\n  return (\n    newUrl\n      .replace(/\\\\/g, '/')\n      .replace(/webpack:\\/?/g, '') // Remove intermediate base path\n      // eslint-disable-next-line @sentry-internal/sdk/no-regexp-constructor\n      .replace(new RegExp(`(file://)?/*${escapedBase}/*`, 'ig'), 'app:///')\n  );\n}\n\n/**\n * Helper to decycle json objects\n */\nfunction memoBuilder() {\n  const inner = new WeakSet();\n  function memoize(obj) {\n    if (inner.has(obj)) {\n      return true;\n    }\n    inner.add(obj);\n    return false;\n  }\n\n  function unmemoize(obj) {\n    inner.delete(obj);\n  }\n  return [memoize, unmemoize];\n}\n\nexport { normalize, normalizeToSize, normalizeUrlToBase };\n//# sourceMappingURL=normalize.js.map\n","import { getSentryCarrier } from '../carrier.js';\nimport { dsnToString } from './dsn.js';\nimport { normalize } from './normalize.js';\nimport { GLOBAL_OBJ } from './worldwide.js';\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 */\nfunction createEnvelope(headers, items = []) {\n  return [headers, items] ;\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 */\nfunction addItemToEnvelope(envelope, newItem) {\n  const [headers, items] = envelope;\n  return [headers, [...items, newItem]] ;\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 *\n * If the callback returns true, the rest of the items will be skipped.\n */\nfunction forEachEnvelopeItem(\n  envelope,\n  callback,\n) {\n  const envelopeItems = envelope[1];\n\n  for (const envelopeItem of envelopeItems) {\n    const envelopeItemType = envelopeItem[0].type;\n    const result = callback(envelopeItem, envelopeItemType);\n\n    if (result) {\n      return true;\n    }\n  }\n\n  return false;\n}\n\n/**\n * Returns true if the envelope contains any of the given envelope item types\n */\nfunction envelopeContainsItemType(envelope, types) {\n  return forEachEnvelopeItem(envelope, (_, type) => types.includes(type));\n}\n\n/**\n * Encode a string to UTF8 array.\n */\nfunction encodeUTF8(input) {\n  const carrier = getSentryCarrier(GLOBAL_OBJ);\n  return carrier.encodePolyfill ? carrier.encodePolyfill(input) : new TextEncoder().encode(input);\n}\n\n/**\n * Decode a UTF8 array to string.\n */\nfunction decodeUTF8(input) {\n  const carrier = getSentryCarrier(GLOBAL_OBJ);\n  return carrier.decodePolyfill ? carrier.decodePolyfill(input) : new TextDecoder().decode(input);\n}\n\n/**\n * Serializes an envelope.\n */\nfunction serializeEnvelope(envelope) {\n  const [envHeaders, items] = envelope;\n  // Initially we construct our envelope as a string and only convert to binary chunks if we encounter binary data\n  let parts = JSON.stringify(envHeaders);\n\n  function append(next) {\n    if (typeof parts === 'string') {\n      parts = typeof next === 'string' ? parts + next : [encodeUTF8(parts), next];\n    } else {\n      parts.push(typeof next === 'string' ? encodeUTF8(next) : next);\n    }\n  }\n\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;\n      try {\n        stringifiedPayload = JSON.stringify(payload);\n      } catch {\n        // In case, despite all our efforts to keep `payload` circular-dependency-free, `JSON.stringify()` 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) {\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 * Parses an envelope\n */\nfunction parseEnvelope(env) {\n  let buffer = typeof env === 'string' ? encodeUTF8(env) : env;\n\n  function readBinary(length) {\n    const bin = buffer.subarray(0, length);\n    // Replace the buffer with the remaining data excluding trailing newline\n    buffer = buffer.subarray(length + 1);\n    return bin;\n  }\n\n  function readJson() {\n    let i = buffer.indexOf(0xa);\n    // If we couldn't find a newline, we must have found the end of the buffer\n    if (i < 0) {\n      i = buffer.length;\n    }\n\n    return JSON.parse(decodeUTF8(readBinary(i))) ;\n  }\n\n  const envelopeHeader = readJson();\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  const items = [];\n\n  while (buffer.length) {\n    const itemHeader = readJson();\n    const binaryLength = typeof itemHeader.length === 'number' ? itemHeader.length : undefined;\n\n    items.push([itemHeader, binaryLength ? readBinary(binaryLength) : readJson()]);\n  }\n\n  return [envelopeHeader, items];\n}\n\n/**\n * Creates envelope item for a single span\n */\nfunction createSpanEnvelopeItem(spanJson) {\n  const spanHeaders = {\n    type: 'span',\n  };\n\n  return [spanHeaders, spanJson];\n}\n\n/**\n * Creates attachment envelope items\n */\nfunction createAttachmentEnvelopeItem(attachment) {\n  const buffer = typeof attachment.data === 'string' ? encodeUTF8(attachment.data) : attachment.data;\n\n  return [\n    {\n      type: 'attachment',\n      length: buffer.length,\n      filename: attachment.filename,\n      content_type: attachment.contentType,\n      attachment_type: attachment.attachmentType,\n    },\n    buffer,\n  ];\n}\n\nconst ITEM_TYPE_TO_DATA_CATEGORY_MAP = {\n  session: 'session',\n  sessions: 'session',\n  attachment: 'attachment',\n  transaction: 'transaction',\n  event: 'error',\n  client_report: 'internal',\n  user_report: 'default',\n  profile: 'profile',\n  profile_chunk: 'profile',\n  replay_event: 'replay',\n  replay_recording: 'replay',\n  check_in: 'monitor',\n  feedback: 'feedback',\n  span: 'span',\n  raw_security: 'security',\n  log: 'log_item',\n};\n\n/**\n * Maps the type of an envelope item to a data category.\n */\nfunction envelopeItemTypeToDataCategory(type) {\n  return ITEM_TYPE_TO_DATA_CATEGORY_MAP[type];\n}\n\n/** Extracts the minimal SDK info from the metadata or an events */\nfunction getSdkMetadataForEnvelopeHeader(metadataOrEvent) {\n  if (!metadataOrEvent?.sdk) {\n    return;\n  }\n  const { name, version } = metadataOrEvent.sdk;\n  return { name, version };\n}\n\n/**\n * Creates event envelope headers, based on event, sdk info and tunnel\n * Note: This function was extracted from the core package to make it available in Replay\n */\nfunction createEventEnvelopeHeaders(\n  event,\n  sdkInfo,\n  tunnel,\n  dsn,\n) {\n  const dynamicSamplingContext = event.sdkProcessingMetadata?.dynamicSamplingContext;\n  return {\n    event_id: event.event_id ,\n    sent_at: new Date().toISOString(),\n    ...(sdkInfo && { sdk: sdkInfo }),\n    ...(!!tunnel && dsn && { dsn: dsnToString(dsn) }),\n    ...(dynamicSamplingContext && {\n      trace: dynamicSamplingContext,\n    }),\n  };\n}\n\nexport { addItemToEnvelope, createAttachmentEnvelopeItem, createEnvelope, createEventEnvelopeHeaders, createSpanEnvelopeItem, envelopeContainsItemType, envelopeItemTypeToDataCategory, forEachEnvelopeItem, getSdkMetadataForEnvelopeHeader, parseEnvelope, serializeEnvelope };\n//# sourceMappingURL=envelope.js.map\n","import { isMatchingPattern } from './string.js';\n\n/**\n * Check if a span should be ignored based on the ignoreSpans configuration.\n */\nfunction shouldIgnoreSpan(\n  span,\n  ignoreSpans,\n) {\n  if (!ignoreSpans?.length || !span.description) {\n    return false;\n  }\n\n  for (const pattern of ignoreSpans) {\n    if (isStringOrRegExp(pattern)) {\n      if (isMatchingPattern(span.description, pattern)) {\n        return true;\n      }\n      continue;\n    }\n\n    if (!pattern.name && !pattern.op) {\n      continue;\n    }\n\n    const nameMatches = pattern.name ? isMatchingPattern(span.description, pattern.name) : true;\n    const opMatches = pattern.op ? span.op && isMatchingPattern(span.op, pattern.op) : true;\n\n    // This check here is only correct because we can guarantee that we ran `isMatchingPattern`\n    // for at least one of `nameMatches` and `opMatches`. So in contrary to how this looks,\n    // not both op and name actually have to match. This is the most efficient way to check\n    // for all combinations of name and op patterns.\n    if (nameMatches && opMatches) {\n      return true;\n    }\n  }\n\n  return false;\n}\n\n/**\n * Takes a list of spans, and a span that was dropped, and re-parents the child spans of the dropped span to the parent of the dropped span, if possible.\n * This mutates the spans array in place!\n */\nfunction reparentChildSpans(spans, dropSpan) {\n  const droppedSpanParentId = dropSpan.parent_span_id;\n  const droppedSpanId = dropSpan.span_id;\n\n  // This should generally not happen, as we do not apply this on root spans\n  // but to be safe, we just bail in this case\n  if (!droppedSpanParentId) {\n    return;\n  }\n\n  for (const span of spans) {\n    if (span.parent_span_id === droppedSpanId) {\n      span.parent_span_id = droppedSpanParentId;\n    }\n  }\n}\n\nfunction isStringOrRegExp(value) {\n  return typeof value === 'string' || value instanceof RegExp;\n}\n\nexport { reparentChildSpans, shouldIgnoreSpan };\n//# sourceMappingURL=should-ignore-span.js.map\n","import { getDynamicSamplingContextFromSpan } from './tracing/dynamicSamplingContext.js';\nimport { dsnToString } from './utils/dsn.js';\nimport { getSdkMetadataForEnvelopeHeader, createEventEnvelopeHeaders, createEnvelope, createSpanEnvelopeItem } from './utils/envelope.js';\nimport { shouldIgnoreSpan } from './utils/should-ignore-span.js';\nimport { spanToJSON, showSpanDropWarning } from './utils/spanUtils.js';\n\n/**\n * Apply SdkInfo (name, version, packages, integrations) to the corresponding event key.\n * Merge with existing data if any.\n *\n * @internal, exported only for testing\n **/\nfunction _enhanceEventWithSdkInfo(event, newSdkInfo) {\n  if (!newSdkInfo) {\n    return event;\n  }\n\n  const eventSdkInfo = event.sdk || {};\n\n  event.sdk = {\n    ...eventSdkInfo,\n    name: eventSdkInfo.name || newSdkInfo.name,\n    version: eventSdkInfo.version || newSdkInfo.version,\n    integrations: [...(event.sdk?.integrations || []), ...(newSdkInfo.integrations || [])],\n    packages: [...(event.sdk?.packages || []), ...(newSdkInfo.packages || [])],\n    settings:\n      event.sdk?.settings || newSdkInfo.settings\n        ? {\n            ...event.sdk?.settings,\n            ...newSdkInfo.settings,\n          }\n        : undefined,\n  };\n\n  return event;\n}\n\n/** Creates an envelope from a Session */\nfunction createSessionEnvelope(\n  session,\n  dsn,\n  metadata,\n  tunnel,\n) {\n  const sdkInfo = getSdkMetadataForEnvelopeHeader(metadata);\n  const envelopeHeaders = {\n    sent_at: new Date().toISOString(),\n    ...(sdkInfo && { sdk: sdkInfo }),\n    ...(!!tunnel && dsn && { dsn: dsnToString(dsn) }),\n  };\n\n  const envelopeItem =\n    'aggregates' in session ? [{ type: 'sessions' }, session] : [{ type: 'session' }, session.toJSON()];\n\n  return createEnvelope(envelopeHeaders, [envelopeItem]);\n}\n\n/**\n * Create an Envelope from an event.\n */\nfunction createEventEnvelope(\n  event,\n  dsn,\n  metadata,\n  tunnel,\n) {\n  const sdkInfo = getSdkMetadataForEnvelopeHeader(metadata);\n\n  /*\n    Note: Due to TS, event.type may be `replay_event`, theoretically.\n    In practice, we never call `createEventEnvelope` with `replay_event` type,\n    and we'd have to adjust a looot of types to make this work properly.\n    We want to avoid casting this around, as that could lead to bugs (e.g. when we add another type)\n    So the safe choice is to really guard against the replay_event type here.\n  */\n  const eventType = event.type && event.type !== 'replay_event' ? event.type : 'event';\n\n  _enhanceEventWithSdkInfo(event, metadata?.sdk);\n\n  const envelopeHeaders = createEventEnvelopeHeaders(event, sdkInfo, tunnel, dsn);\n\n  // Prevent this data (which, if it exists, was used in earlier steps in the processing pipeline) from being sent to\n  // sentry. (Note: Our use of this property comes and goes with whatever we might be debugging, whatever hacks we may\n  // have temporarily added, etc. Even if we don't happen to be using it at some point in the future, let's not get rid\n  // of this `delete`, lest we miss putting it back in the next time the property is in use.)\n  delete event.sdkProcessingMetadata;\n\n  const eventItem = [{ type: eventType }, event];\n  return createEnvelope(envelopeHeaders, [eventItem]);\n}\n\n/**\n * Create envelope from Span item.\n *\n * Takes an optional client and runs spans through `beforeSendSpan` if available.\n */\nfunction createSpanEnvelope(spans, client) {\n  function dscHasRequiredProps(dsc) {\n    return !!dsc.trace_id && !!dsc.public_key;\n  }\n\n  // For the moment we'll obtain the DSC from the first span in the array\n  // This might need to be changed if we permit sending multiple spans from\n  // different segments in one envelope\n  const dsc = getDynamicSamplingContextFromSpan(spans[0]);\n\n  const dsn = client?.getDsn();\n  const tunnel = client?.getOptions().tunnel;\n\n  const headers = {\n    sent_at: new Date().toISOString(),\n    ...(dscHasRequiredProps(dsc) && { trace: dsc }),\n    ...(!!tunnel && dsn && { dsn: dsnToString(dsn) }),\n  };\n\n  const { beforeSendSpan, ignoreSpans } = client?.getOptions() || {};\n\n  const filteredSpans = ignoreSpans?.length\n    ? spans.filter(span => !shouldIgnoreSpan(spanToJSON(span), ignoreSpans))\n    : spans;\n  const droppedSpans = spans.length - filteredSpans.length;\n\n  if (droppedSpans) {\n    client?.recordDroppedEvent('before_send', 'span', droppedSpans);\n  }\n\n  const convertToSpanJSON = beforeSendSpan\n    ? (span) => {\n        const spanJson = spanToJSON(span);\n        const processedSpan = beforeSendSpan(spanJson);\n\n        if (!processedSpan) {\n          showSpanDropWarning();\n          return spanJson;\n        }\n\n        return processedSpan;\n      }\n    : spanToJSON;\n\n  const items = [];\n  for (const span of filteredSpans) {\n    const spanJson = convertToSpanJSON(span);\n    if (spanJson) {\n      items.push(createSpanEnvelopeItem(spanJson));\n    }\n  }\n\n  return createEnvelope(headers, items);\n}\n\nexport { _enhanceEventWithSdkInfo, createEventEnvelope, createSessionEnvelope, createSpanEnvelope };\n//# sourceMappingURL=envelope.js.map\n","import { isThenable } from './is.js';\n\n/* eslint-disable @typescript-eslint/no-explicit-any */\n\n/** SyncPromise internal states */\nconst STATE_PENDING = 0;\nconst STATE_RESOLVED = 1;\nconst STATE_REJECTED = 2;\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 */\nfunction resolvedSyncPromise(value) {\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 */\nfunction rejectedSyncPromise(reason) {\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 {\n\n   constructor(executor) {\n    this._state = STATE_PENDING;\n    this._handlers = [];\n\n    this._runExecutor(executor);\n  }\n\n  /** @inheritdoc */\n   then(\n    onfulfilled,\n    onrejected,\n  ) {\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 );\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  /** @inheritdoc */\n   catch(\n    onrejected,\n  ) {\n    return this.then(val => val, onrejected);\n  }\n\n  /** @inheritdoc */\n   finally(onfinally) {\n    return new SyncPromise((resolve, reject) => {\n      let val;\n      let isRejected;\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 );\n      });\n    });\n  }\n\n  /** Excute the resolve/reject handlers. */\n   _executeHandlers() {\n    if (this._state === STATE_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 === STATE_RESOLVED) {\n        handler[1](this._value );\n      }\n\n      if (this._state === STATE_REJECTED) {\n        handler[2](this._value);\n      }\n\n      handler[0] = true;\n    });\n  }\n\n  /** Run the executor for the SyncPromise. */\n   _runExecutor(executor) {\n    const setResult = (state, value) => {\n      if (this._state !== STATE_PENDING) {\n        return;\n      }\n\n      if (isThenable(value)) {\n        void (value ).then(resolve, reject);\n        return;\n      }\n\n      this._state = state;\n      this._value = value;\n\n      this._executeHandlers();\n    };\n\n    const resolve = (value) => {\n      setResult(STATE_RESOLVED, value);\n    };\n\n    const reject = (reason) => {\n      setResult(STATE_REJECTED, reason);\n    };\n\n    try {\n      executor(resolve, reject);\n    } catch (e) {\n      reject(e);\n    }\n  }\n}\n\nexport { SyncPromise, rejectedSyncPromise, resolvedSyncPromise };\n//# sourceMappingURL=syncpromise.js.map\n","import { DEBUG_BUILD } from './debug-build.js';\nimport { debug } from './utils/debug-logger.js';\nimport { isThenable } from './utils/is.js';\nimport { SyncPromise } from './utils/syncpromise.js';\n\n/**\n * Process an array of event processors, returning the processed event (or `null` if the event was dropped).\n */\nfunction notifyEventProcessors(\n  processors,\n  event,\n  hint,\n  index = 0,\n) {\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) ;\n\n      DEBUG_BUILD && processor.id && result === null && debug.log(`Event processor \"${processor.id}\" dropped event`);\n\n      if (isThenable(result)) {\n        void result\n          .then(final => notifyEventProcessors(processors, final, hint, index + 1).then(resolve))\n          .then(null, reject);\n      } else {\n        void notifyEventProcessors(processors, result, hint, index + 1)\n          .then(resolve)\n          .then(null, reject);\n      }\n    }\n  });\n}\n\nexport { notifyEventProcessors };\n//# sourceMappingURL=eventProcessors.js.map\n","import { getDynamicSamplingContextFromSpan } from '../tracing/dynamicSamplingContext.js';\nimport { merge } from './merge.js';\nimport { spanToTraceContext, getRootSpan, spanToJSON } from './spanUtils.js';\n\n/**\n * Applies data from the scope to the event and runs all event processors on it.\n */\nfunction applyScopeDataToEvent(event, data) {\n  const { fingerprint, span, breadcrumbs, sdkProcessingMetadata } = data;\n\n  // Apply general data\n  applyDataToEvent(event, data);\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 (span) {\n    applySpanToEvent(event, span);\n  }\n\n  applyFingerprintToEvent(event, fingerprint);\n  applyBreadcrumbsToEvent(event, breadcrumbs);\n  applySdkMetadataToEvent(event, sdkProcessingMetadata);\n}\n\n/** Merge data of two scopes together. */\nfunction mergeScopeData(data, mergeData) {\n  const {\n    extra,\n    tags,\n    user,\n    contexts,\n    level,\n    sdkProcessingMetadata,\n    breadcrumbs,\n    fingerprint,\n    eventProcessors,\n    attachments,\n    propagationContext,\n    transactionName,\n    span,\n  } = mergeData;\n\n  mergeAndOverwriteScopeData(data, 'extra', extra);\n  mergeAndOverwriteScopeData(data, 'tags', tags);\n  mergeAndOverwriteScopeData(data, 'user', user);\n  mergeAndOverwriteScopeData(data, 'contexts', contexts);\n\n  data.sdkProcessingMetadata = merge(data.sdkProcessingMetadata, sdkProcessingMetadata, 2);\n\n  if (level) {\n    data.level = level;\n  }\n\n  if (transactionName) {\n    data.transactionName = transactionName;\n  }\n\n  if (span) {\n    data.span = span;\n  }\n\n  if (breadcrumbs.length) {\n    data.breadcrumbs = [...data.breadcrumbs, ...breadcrumbs];\n  }\n\n  if (fingerprint.length) {\n    data.fingerprint = [...data.fingerprint, ...fingerprint];\n  }\n\n  if (eventProcessors.length) {\n    data.eventProcessors = [...data.eventProcessors, ...eventProcessors];\n  }\n\n  if (attachments.length) {\n    data.attachments = [...data.attachments, ...attachments];\n  }\n\n  data.propagationContext = { ...data.propagationContext, ...propagationContext };\n}\n\n/**\n * Merges certain scope data. Undefined values will overwrite any existing values.\n * Exported only for tests.\n */\nfunction mergeAndOverwriteScopeData\n\n(data, prop, mergeVal) {\n  data[prop] = merge(data[prop], mergeVal, 1);\n}\n\nfunction applyDataToEvent(event, data) {\n  const { extra, tags, user, contexts, level, transactionName } = data;\n\n  if (Object.keys(extra).length) {\n    event.extra = { ...extra, ...event.extra };\n  }\n\n  if (Object.keys(tags).length) {\n    event.tags = { ...tags, ...event.tags };\n  }\n\n  if (Object.keys(user).length) {\n    event.user = { ...user, ...event.user };\n  }\n\n  if (Object.keys(contexts).length) {\n    event.contexts = { ...contexts, ...event.contexts };\n  }\n\n  if (level) {\n    event.level = level;\n  }\n\n  // transaction events get their `transaction` from the root span name\n  if (transactionName && event.type !== 'transaction') {\n    event.transaction = transactionName;\n  }\n}\n\nfunction applyBreadcrumbsToEvent(event, breadcrumbs) {\n  const mergedBreadcrumbs = [...(event.breadcrumbs || []), ...breadcrumbs];\n  event.breadcrumbs = mergedBreadcrumbs.length ? mergedBreadcrumbs : undefined;\n}\n\nfunction applySdkMetadataToEvent(event, sdkProcessingMetadata) {\n  event.sdkProcessingMetadata = {\n    ...event.sdkProcessingMetadata,\n    ...sdkProcessingMetadata,\n  };\n}\n\nfunction applySpanToEvent(event, span) {\n  event.contexts = {\n    trace: spanToTraceContext(span),\n    ...event.contexts,\n  };\n\n  event.sdkProcessingMetadata = {\n    dynamicSamplingContext: getDynamicSamplingContextFromSpan(span),\n    ...event.sdkProcessingMetadata,\n  };\n\n  const rootSpan = getRootSpan(span);\n  const transactionName = spanToJSON(rootSpan).description;\n  if (transactionName && !event.transaction && event.type === 'transaction') {\n    event.transaction = transactionName;\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 */\nfunction applyFingerprintToEvent(event, fingerprint) {\n  // Make sure it's an array first and we actually have something in place\n  event.fingerprint = event.fingerprint\n    ? Array.isArray(event.fingerprint)\n      ? event.fingerprint\n      : [event.fingerprint]\n    : [];\n\n  // If we have something on the scope, then merge it with event\n  if (fingerprint) {\n    event.fingerprint = event.fingerprint.concat(fingerprint);\n  }\n\n  // If we have no data at all, remove empty array default\n  if (!event.fingerprint.length) {\n    delete event.fingerprint;\n  }\n}\n\nexport { applyScopeDataToEvent, mergeAndOverwriteScopeData, mergeScopeData };\n//# sourceMappingURL=applyScopeDataToEvent.js.map\n","import { GLOBAL_OBJ } from './worldwide.js';\n\nlet parsedStackResults;\nlet lastKeysCount;\nlet cachedFilenameDebugIds;\n\n/**\n * Returns a map of filenames to debug identifiers.\n */\nfunction getFilenameToDebugIdMap(stackParser) {\n  const debugIdMap = GLOBAL_OBJ._sentryDebugIds;\n  if (!debugIdMap) {\n    return {};\n  }\n\n  const debugIdKeys = Object.keys(debugIdMap);\n\n  // If the count of registered globals hasn't changed since the last call, we\n  // can just return the cached result.\n  if (cachedFilenameDebugIds && debugIdKeys.length === lastKeysCount) {\n    return cachedFilenameDebugIds;\n  }\n\n  lastKeysCount = debugIdKeys.length;\n\n  // Build a map of filename -> debug_id.\n  cachedFilenameDebugIds = debugIdKeys.reduce((acc, stackKey) => {\n    if (!parsedStackResults) {\n      parsedStackResults = {};\n    }\n\n    const result = parsedStackResults[stackKey];\n\n    if (result) {\n      acc[result[0]] = result[1];\n    } else {\n      const parsedStack = stackParser(stackKey);\n\n      for (let i = parsedStack.length - 1; i >= 0; i--) {\n        const stackFrame = parsedStack[i];\n        const filename = stackFrame?.filename;\n        const debugId = debugIdMap[stackKey];\n\n        if (filename && debugId) {\n          acc[filename] = debugId;\n          parsedStackResults[stackKey] = [filename, debugId];\n          break;\n        }\n      }\n    }\n\n    return acc;\n  }, {});\n\n  return cachedFilenameDebugIds;\n}\n\n/**\n * Returns a list of debug images for the given resources.\n */\nfunction getDebugImagesForResources(\n  stackParser,\n  resource_paths,\n) {\n  const filenameDebugIdMap = getFilenameToDebugIdMap(stackParser);\n\n  if (!filenameDebugIdMap) {\n    return [];\n  }\n\n  const images = [];\n  for (const path of resource_paths) {\n    if (path && filenameDebugIdMap[path]) {\n      images.push({\n        type: 'sourcemap',\n        code_file: path,\n        debug_id: filenameDebugIdMap[path] ,\n      });\n    }\n  }\n\n  return images;\n}\n\nexport { getDebugImagesForResources, getFilenameToDebugIdMap };\n//# sourceMappingURL=debug-ids.js.map\n","import { DEFAULT_ENVIRONMENT } from '../constants.js';\nimport { getGlobalScope } from '../currentScopes.js';\nimport { notifyEventProcessors } from '../eventProcessors.js';\nimport { Scope } from '../scope.js';\nimport { mergeScopeData, applyScopeDataToEvent } from './applyScopeDataToEvent.js';\nimport { getFilenameToDebugIdMap } from './debug-ids.js';\nimport { uuid4, addExceptionMechanism } from './misc.js';\nimport { normalize } from './normalize.js';\nimport { truncate } from './string.js';\nimport { dateTimestampInSeconds } from './time.js';\n\n/**\n * This type makes sure that we get either a CaptureContext, OR an EventHint.\n * It does not allow mixing them, which could lead to unexpected outcomes, e.g. this is disallowed:\n * { user: { id: '123' }, mechanism: { handled: false } }\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 * @hidden\n */\nfunction prepareEvent(\n  options,\n  event,\n  hint,\n  scope,\n  client,\n  isolationScope,\n) {\n  const { normalizeDepth = 3, normalizeMaxBreadth = 1000 } = options;\n  const prepared = {\n    ...event,\n    event_id: event.event_id || hint.event_id || uuid4(),\n    timestamp: event.timestamp || dateTimestampInSeconds(),\n  };\n  const integrations = hint.integrations || options.integrations.map(i => i.name);\n\n  applyClientOptions(prepared, options);\n  applyIntegrationsMetadata(prepared, integrations);\n\n  if (client) {\n    client.emit('applyFrameMetadata', event);\n  }\n\n  // Only put debug IDs onto frames for error events.\n  if (event.type === undefined) {\n    applyDebugIds(prepared, options.stackParser);\n  }\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  const finalScope = getFinalScope(scope, hint.captureContext);\n\n  if (hint.mechanism) {\n    addExceptionMechanism(prepared, hint.mechanism);\n  }\n\n  const clientEventProcessors = client ? client.getEventProcessors() : [];\n\n  // This should be the last thing called, since we want that\n  // {@link Scope.addEventProcessor} gets the finished prepared event.\n  // Merge scope data together\n  const data = getGlobalScope().getScopeData();\n\n  if (isolationScope) {\n    const isolationData = isolationScope.getScopeData();\n    mergeScopeData(data, isolationData);\n  }\n\n  if (finalScope) {\n    const finalScopeData = finalScope.getScopeData();\n    mergeScopeData(data, finalScopeData);\n  }\n\n  const attachments = [...(hint.attachments || []), ...data.attachments];\n  if (attachments.length) {\n    hint.attachments = attachments;\n  }\n\n  applyScopeDataToEvent(prepared, data);\n\n  const eventProcessors = [\n    ...clientEventProcessors,\n    // Run scope event processors _after_ all other processors\n    ...data.eventProcessors,\n  ];\n\n  const result = notifyEventProcessors(eventProcessors, prepared, hint);\n\n  return result.then(evt => {\n    if (evt) {\n      // We apply the debug_meta field only after all event processors have ran, so that if any event processors modified\n      // file names (e.g.the RewriteFrames integration) the filename -> debug ID relationship isn't destroyed.\n      // This should not cause any PII issues, since we're only moving data that is already on the event and not adding\n      // any new data\n      applyDebugMeta(evt);\n    }\n\n    if (typeof normalizeDepth === 'number' && normalizeDepth > 0) {\n      return normalizeEvent(evt, normalizeDepth, normalizeMaxBreadth);\n    }\n    return evt;\n  });\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 *\n * Only exported for tests.\n *\n * @param event event instance to be enhanced\n */\nfunction applyClientOptions(event, options) {\n  const { environment, release, dist, maxValueLength = 250 } = options;\n\n  // empty strings do not make sense for environment, release, and dist\n  // so we handle them the same as if they were not provided\n  event.environment = event.environment || environment || DEFAULT_ENVIRONMENT;\n\n  if (!event.release && release) {\n    event.release = release;\n  }\n\n  if (!event.dist && dist) {\n    event.dist = dist;\n  }\n\n  const request = event.request;\n  if (request?.url) {\n    request.url = truncate(request.url, maxValueLength);\n  }\n}\n\n/**\n * Puts debug IDs into the stack frames of an error event.\n */\nfunction applyDebugIds(event, stackParser) {\n  // Build a map of filename -> debug_id\n  const filenameDebugIdMap = getFilenameToDebugIdMap(stackParser);\n\n  event.exception?.values?.forEach(exception => {\n    exception.stacktrace?.frames?.forEach(frame => {\n      if (frame.filename) {\n        frame.debug_id = filenameDebugIdMap[frame.filename];\n      }\n    });\n  });\n}\n\n/**\n * Moves debug IDs from the stack frames of an error event into the debug_meta field.\n */\nfunction applyDebugMeta(event) {\n  // Extract debug IDs and filenames from the stack frames on the event.\n  const filenameDebugIdMap = {};\n  event.exception?.values?.forEach(exception => {\n    exception.stacktrace?.frames?.forEach(frame => {\n      if (frame.debug_id) {\n        if (frame.abs_path) {\n          filenameDebugIdMap[frame.abs_path] = frame.debug_id;\n        } else if (frame.filename) {\n          filenameDebugIdMap[frame.filename] = frame.debug_id;\n        }\n        delete frame.debug_id;\n      }\n    });\n  });\n\n  if (Object.keys(filenameDebugIdMap).length === 0) {\n    return;\n  }\n\n  // Fill debug_meta information\n  event.debug_meta = event.debug_meta || {};\n  event.debug_meta.images = event.debug_meta.images || [];\n  const images = event.debug_meta.images;\n  Object.entries(filenameDebugIdMap).forEach(([filename, debug_id]) => {\n    images.push({\n      type: 'sourcemap',\n      code_file: filename,\n      debug_id,\n    });\n  });\n}\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 */\nfunction applyIntegrationsMetadata(event, integrationNames) {\n  if (integrationNames.length > 0) {\n    event.sdk = event.sdk || {};\n    event.sdk.integrations = [...(event.sdk.integrations || []), ...integrationNames];\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 */\nfunction normalizeEvent(event, depth, maxBreadth) {\n  if (!event) {\n    return null;\n  }\n\n  const normalized = {\n    ...event,\n    ...(event.breadcrumbs && {\n      breadcrumbs: event.breadcrumbs.map(b => ({\n        ...b,\n        ...(b.data && {\n          data: normalize(b.data, depth, maxBreadth),\n        }),\n      })),\n    }),\n    ...(event.user && {\n      user: normalize(event.user, depth, maxBreadth),\n    }),\n    ...(event.contexts && {\n      contexts: normalize(event.contexts, depth, maxBreadth),\n    }),\n    ...(event.extra && {\n      extra: normalize(event.extra, depth, maxBreadth),\n    }),\n  };\n\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?.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      return {\n        ...span,\n        ...(span.data && {\n          data: normalize(span.data, depth, maxBreadth),\n        }),\n      };\n    });\n  }\n\n  // event.contexts.flags (FeatureFlagContext) stores context for our feature\n  // flag integrations. It has a greater nesting depth than our other typed\n  // Contexts, so we re-normalize with a fixed depth of 3 here. We do not want\n  // to skip this in case of conflicting, user-provided context.\n  if (event.contexts?.flags && normalized.contexts) {\n    normalized.contexts.flags = normalize(event.contexts.flags, 3, maxBreadth);\n  }\n\n  return normalized;\n}\n\nfunction getFinalScope(scope, captureContext) {\n  if (!captureContext) {\n    return scope;\n  }\n\n  const finalScope = scope ? scope.clone() : new Scope();\n  finalScope.update(captureContext);\n  return finalScope;\n}\n\n/**\n * Parse either an `EventHint` directly, or convert a `CaptureContext` to an `EventHint`.\n * This is used to allow to update method signatures that used to accept a `CaptureContext` but should now accept an `EventHint`.\n */\nfunction parseEventHintOrCaptureContext(\n  hint,\n) {\n  if (!hint) {\n    return undefined;\n  }\n\n  // If you pass a Scope or `() => Scope` as CaptureContext, we just return this as captureContext\n  if (hintIsScopeOrFunction(hint)) {\n    return { captureContext: hint };\n  }\n\n  if (hintIsScopeContext(hint)) {\n    return {\n      captureContext: hint,\n    };\n  }\n\n  return hint;\n}\n\nfunction hintIsScopeOrFunction(hint) {\n  return hint instanceof Scope || typeof hint === 'function';\n}\n\nconst captureContextKeys = [\n  'user',\n  'level',\n  'extra',\n  'contexts',\n  'tags',\n  'fingerprint',\n  'propagationContext',\n] ;\n\nfunction hintIsScopeContext(hint) {\n  return Object.keys(hint).some(key => captureContextKeys.includes(key ));\n}\n\nexport { applyClientOptions, applyDebugIds, applyDebugMeta, parseEventHintOrCaptureContext, prepareEvent };\n//# sourceMappingURL=prepareEvent.js.map\n","import { getCurrentScope, getClient, withIsolationScope, getIsolationScope } from './currentScopes.js';\nimport { DEBUG_BUILD } from './debug-build.js';\nimport { makeSession, updateSession, closeSession } from './session.js';\nimport { debug } from './utils/debug-logger.js';\nimport { isThenable } from './utils/is.js';\nimport { uuid4 } from './utils/misc.js';\nimport { parseEventHintOrCaptureContext } from './utils/prepareEvent.js';\nimport { timestampInSeconds } from './utils/time.js';\nimport { GLOBAL_OBJ } from './utils/worldwide.js';\n\n/**\n * Captures an exception event and sends it to Sentry.\n *\n * @param exception The exception to capture.\n * @param hint Optional additional data to attach to the Sentry event.\n * @returns the id of the captured Sentry event.\n */\nfunction captureException(exception, hint) {\n  return getCurrentScope().captureException(exception, parseEventHintOrCaptureContext(hint));\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 captureContext Define the level of the message or pass in additional data to attach to the message.\n * @returns the id of the captured message.\n */\nfunction captureMessage(message, captureContext) {\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 getCurrentScope().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 * @param hint Optional additional data to attach to the Sentry event.\n * @returns the id of the captured event.\n */\nfunction captureEvent(event, hint) {\n  return getCurrentScope().captureEvent(event, hint);\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 */\nfunction setContext(name, context) {\n  getIsolationScope().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 */\nfunction setExtras(extras) {\n  getIsolationScope().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 */\nfunction setExtra(key, extra) {\n  getIsolationScope().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 */\nfunction setTags(tags) {\n  getIsolationScope().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 */\nfunction setTag(key, value) {\n  getIsolationScope().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 */\nfunction setUser(user) {\n  getIsolationScope().setUser(user);\n}\n\n/**\n * The last error event id of the isolation scope.\n *\n * Warning: This function really returns the last recorded error event id on the current\n * isolation scope. If you call this function after handling a certain error and another error\n * is captured in between, the last one is returned instead of the one you might expect.\n * Also, ids of events that were never sent to Sentry (for example because\n * they were dropped in `beforeSend`) could be returned.\n *\n * @returns The last event id of the isolation scope.\n */\nfunction lastEventId() {\n  return getIsolationScope().lastEventId();\n}\n\n/**\n * Create a cron monitor check in and send it to Sentry.\n *\n * @param checkIn An object that describes a check in.\n * @param upsertMonitorConfig An optional object that describes a monitor config. Use this if you want\n * to create a monitor automatically when sending a check in.\n */\nfunction captureCheckIn(checkIn, upsertMonitorConfig) {\n  const scope = getCurrentScope();\n  const client = getClient();\n  if (!client) {\n    DEBUG_BUILD && debug.warn('Cannot capture check-in. No client defined.');\n  } else if (!client.captureCheckIn) {\n    DEBUG_BUILD && debug.warn('Cannot capture check-in. Client does not support sending check-ins.');\n  } else {\n    return client.captureCheckIn(checkIn, upsertMonitorConfig, scope);\n  }\n\n  return uuid4();\n}\n\n/**\n * Wraps a callback with a cron monitor check in. The check in will be sent to Sentry when the callback finishes.\n *\n * @param monitorSlug The distinct slug of the monitor.\n * @param callback Callback to be monitored\n * @param upsertMonitorConfig An optional object that describes a monitor config. Use this if you want\n * to create a monitor automatically when sending a check in.\n */\nfunction withMonitor(\n  monitorSlug,\n  callback,\n  upsertMonitorConfig,\n) {\n  const checkInId = captureCheckIn({ monitorSlug, status: 'in_progress' }, upsertMonitorConfig);\n  const now = timestampInSeconds();\n\n  function finishCheckIn(status) {\n    captureCheckIn({ monitorSlug, status, checkInId, duration: timestampInSeconds() - now });\n  }\n\n  return withIsolationScope(() => {\n    let maybePromiseResult;\n    try {\n      maybePromiseResult = callback();\n    } catch (e) {\n      finishCheckIn('error');\n      throw e;\n    }\n\n    if (isThenable(maybePromiseResult)) {\n      return maybePromiseResult.then(\n        r => {\n          finishCheckIn('ok');\n          return r;\n        },\n        e => {\n          finishCheckIn('error');\n          throw e;\n        },\n      ) ;\n    }\n    finishCheckIn('ok');\n\n    return maybePromiseResult;\n  });\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 */\nasync function flush(timeout) {\n  const client = getClient();\n  if (client) {\n    return client.flush(timeout);\n  }\n  DEBUG_BUILD && debug.warn('Cannot flush events. No client defined.');\n  return Promise.resolve(false);\n}\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 */\nasync function close(timeout) {\n  const client = getClient();\n  if (client) {\n    return client.close(timeout);\n  }\n  DEBUG_BUILD && debug.warn('Cannot flush events and disable SDK. No client defined.');\n  return Promise.resolve(false);\n}\n\n/**\n * Returns true if Sentry has been properly initialized.\n */\nfunction isInitialized() {\n  return !!getClient();\n}\n\n/** If the SDK is initialized & enabled. */\nfunction isEnabled() {\n  const client = getClient();\n  return client?.getOptions().enabled !== false && !!client?.getTransport();\n}\n\n/**\n * Add an event processor.\n * This will be added to the current isolation scope, ensuring any event that is processed in the current execution\n * context will have the processor applied.\n */\nfunction addEventProcessor(callback) {\n  getIsolationScope().addEventProcessor(callback);\n}\n\n/**\n * Start a session on the current isolation scope.\n *\n * @param context (optional) additional properties to be applied to the returned session object\n *\n * @returns the new active session\n */\nfunction startSession(context) {\n  const isolationScope = getIsolationScope();\n  const currentScope = getCurrentScope();\n\n  // Will fetch userAgent if called from browser sdk\n  const { userAgent } = GLOBAL_OBJ.navigator || {};\n\n  const session = makeSession({\n    user: currentScope.getUser() || isolationScope.getUser(),\n    ...(userAgent && { userAgent }),\n    ...context,\n  });\n\n  // End existing session if there's one\n  const currentSession = isolationScope.getSession();\n  if (currentSession?.status === 'ok') {\n    updateSession(currentSession, { status: 'exited' });\n  }\n\n  endSession();\n\n  // Afterwards we set the new session on the scope\n  isolationScope.setSession(session);\n\n  return session;\n}\n\n/**\n * End the session on the current isolation scope.\n */\nfunction endSession() {\n  const isolationScope = getIsolationScope();\n  const currentScope = getCurrentScope();\n\n  const session = currentScope.getSession() || isolationScope.getSession();\n  if (session) {\n    closeSession(session);\n  }\n  _sendSessionUpdate();\n\n  // the session is over; take it off of the scope\n  isolationScope.setSession();\n}\n\n/**\n * Sends the current Session on the scope\n */\nfunction _sendSessionUpdate() {\n  const isolationScope = getIsolationScope();\n  const client = getClient();\n  const session = isolationScope.getSession();\n  if (session && client) {\n    client.captureSession(session);\n  }\n}\n\n/**\n * Sends the current session on the scope to Sentry\n *\n * @param end If set the session will be marked as exited and removed from the scope.\n *            Defaults to `false`.\n */\nfunction captureSession(end = false) {\n  // both send the update and pull the session from the scope\n  if (end) {\n    endSession();\n    return;\n  }\n\n  // only send the update\n  _sendSessionUpdate();\n}\n\nexport { addEventProcessor, captureCheckIn, captureEvent, captureException, captureMessage, captureSession, close, endSession, flush, isEnabled, isInitialized, lastEventId, setContext, setExtra, setExtras, setTag, setTags, setUser, startSession, withMonitor };\n//# sourceMappingURL=exports.js.map\n","import { makeDsn, dsnToString } from './utils/dsn.js';\n\nconst SENTRY_API_VERSION = '7';\n\n/** Returns the prefix to construct Sentry ingestion API endpoints. */\nfunction getBaseApiEndpoint(dsn) {\n  const protocol = dsn.protocol ? `${dsn.protocol}:` : '';\n  const port = dsn.port ? `:${dsn.port}` : '';\n  return `${protocol}//${dsn.host}${port}${dsn.path ? `/${dsn.path}` : ''}/api/`;\n}\n\n/** Returns the ingest API endpoint for target. */\nfunction _getIngestEndpoint(dsn) {\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, sdkInfo) {\n  const params = {\n    sentry_version: SENTRY_API_VERSION,\n  };\n\n  if (dsn.publicKey) {\n    // We send only the minimum set of required information. See\n    // https://github.com/getsentry/sentry-javascript/issues/2572.\n    params.sentry_key = dsn.publicKey;\n  }\n\n  if (sdkInfo) {\n    params.sentry_client = `${sdkInfo.name}/${sdkInfo.version}`;\n  }\n\n  return new URLSearchParams(params).toString();\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 */\nfunction getEnvelopeEndpointWithUrlEncodedAuth(dsn, tunnel, sdkInfo) {\n  return tunnel ? tunnel : `${_getIngestEndpoint(dsn)}?${_encodedAuth(dsn, sdkInfo)}`;\n}\n\n/** Returns the url to the report dialog endpoint. */\nfunction getReportDialogEndpoint(dsnLike, dialogOptions) {\n  const dsn = makeDsn(dsnLike);\n  if (!dsn) {\n    return '';\n  }\n\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 === 'onClose') {\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] )}`;\n    }\n  }\n\n  return `${endpoint}?${encodedOptions}`;\n}\n\nexport { getEnvelopeEndpointWithUrlEncodedAuth, getReportDialogEndpoint };\n//# sourceMappingURL=api.js.map\n","import { getClient } from './currentScopes.js';\nimport { DEBUG_BUILD } from './debug-build.js';\nimport { debug } from './utils/debug-logger.js';\n\nconst installedIntegrations = [];\n\n/** Map of integrations assigned to a client */\n\n/**\n * Remove duplicates from the given array, preferring the last instance of any duplicate. Not guaranteed to\n * preserve the order of integrations in the array.\n *\n * @private\n */\nfunction filterDuplicates(integrations) {\n  const integrationsByName = {};\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 */\nfunction getIntegrationsToSetup(\n  options,\n) {\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;\n\n  if (Array.isArray(userIntegrations)) {\n    integrations = [...defaultIntegrations, ...userIntegrations];\n  } else if (typeof userIntegrations === 'function') {\n    const resolvedUserIntegrations = userIntegrations(defaultIntegrations);\n    integrations = Array.isArray(resolvedUserIntegrations) ? resolvedUserIntegrations : [resolvedUserIntegrations];\n  } else {\n    integrations = defaultIntegrations;\n  }\n\n  return filterDuplicates(integrations);\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 */\nfunction setupIntegrations(client, integrations) {\n  const integrationIndex = {};\n\n  integrations.forEach((integration) => {\n    // guard against empty provided integrations\n    if (integration) {\n      setupIntegration(client, integration, integrationIndex);\n    }\n  });\n\n  return integrationIndex;\n}\n\n/**\n * Execute the `afterAllSetup` hooks of the given integrations.\n */\nfunction afterSetupIntegrations(client, integrations) {\n  for (const integration of integrations) {\n    // guard against empty provided integrations\n    if (integration?.afterAllSetup) {\n      integration.afterAllSetup(client);\n    }\n  }\n}\n\n/** Setup a single integration.  */\nfunction setupIntegration(client, integration, integrationIndex) {\n  if (integrationIndex[integration.name]) {\n    DEBUG_BUILD && debug.log(`Integration skipped because it was already installed: ${integration.name}`);\n    return;\n  }\n  integrationIndex[integration.name] = integration;\n\n  // `setupOnce` is only called the first time\n  if (installedIntegrations.indexOf(integration.name) === -1 && typeof integration.setupOnce === 'function') {\n    integration.setupOnce();\n    installedIntegrations.push(integration.name);\n  }\n\n  // `setup` is run for each client\n  if (integration.setup && typeof integration.setup === 'function') {\n    integration.setup(client);\n  }\n\n  if (typeof integration.preprocessEvent === 'function') {\n    const callback = integration.preprocessEvent.bind(integration) ;\n    client.on('preprocessEvent', (event, hint) => callback(event, hint, client));\n  }\n\n  if (typeof integration.processEvent === 'function') {\n    const callback = integration.processEvent.bind(integration) ;\n\n    const processor = Object.assign((event, hint) => callback(event, hint, client), {\n      id: integration.name,\n    });\n\n    client.addEventProcessor(processor);\n  }\n\n  DEBUG_BUILD && debug.log(`Integration installed: ${integration.name}`);\n}\n\n/** Add an integration to the current scope's client. */\nfunction addIntegration(integration) {\n  const client = getClient();\n\n  if (!client) {\n    DEBUG_BUILD && debug.warn(`Cannot add integration \"${integration.name}\" because no SDK Client is available.`);\n    return;\n  }\n\n  client.addIntegration(integration);\n}\n\n/**\n * Define an integration function that can be used to create an integration instance.\n * Note that this by design hides the implementation details of the integration, as they are considered internal.\n */\nfunction defineIntegration(fn) {\n  return fn;\n}\n\nexport { addIntegration, afterSetupIntegrations, defineIntegration, getIntegrationsToSetup, installedIntegrations, setupIntegration, setupIntegrations };\n//# sourceMappingURL=integration.js.map\n","import { createEnvelope } from './envelope.js';\nimport { dateTimestampInSeconds } from './time.js';\n\n/**\n * Creates client report envelope\n * @param discarded_events An array of discard events\n * @param dsn A DSN that can be set on the header. Optional.\n */\nfunction createClientReportEnvelope(\n  discarded_events,\n  dsn,\n  timestamp,\n) {\n  const clientReportItem = [\n    { type: 'client_report' },\n    {\n      timestamp: timestamp || dateTimestampInSeconds(),\n      discarded_events,\n    },\n  ];\n  return createEnvelope(dsn ? { dsn } : {}, [clientReportItem]);\n}\n\nexport { createClientReportEnvelope };\n//# sourceMappingURL=clientreport.js.map\n","/**\n * Get a list of possible event messages from a Sentry event.\n */\nfunction getPossibleEventMessages(event) {\n  const possibleMessages = [];\n\n  if (event.message) {\n    possibleMessages.push(event.message);\n  }\n\n  try {\n    // @ts-expect-error Try catching to save bundle size\n    const lastException = event.exception.values[event.exception.values.length - 1];\n    if (lastException?.value) {\n      possibleMessages.push(lastException.value);\n      if (lastException.type) {\n        possibleMessages.push(`${lastException.type}: ${lastException.value}`);\n      }\n    }\n  } catch {\n    // ignore errors here\n  }\n\n  return possibleMessages;\n}\n\nexport { getPossibleEventMessages };\n//# sourceMappingURL=eventUtils.js.map\n","import { SEMANTIC_ATTRIBUTE_EXCLUSIVE_TIME, SEMANTIC_ATTRIBUTE_PROFILE_ID } from '../semanticAttributes.js';\n\n/**\n * Converts a transaction event to a span JSON object.\n */\nfunction convertTransactionEventToSpanJson(event) {\n  const { trace_id, parent_span_id, span_id, status, origin, data, op } = event.contexts?.trace ?? {};\n\n  return {\n    data: data ?? {},\n    description: event.transaction,\n    op,\n    parent_span_id,\n    span_id: span_id ?? '',\n    start_timestamp: event.start_timestamp ?? 0,\n    status,\n    timestamp: event.timestamp,\n    trace_id: trace_id ?? '',\n    origin,\n    profile_id: data?.[SEMANTIC_ATTRIBUTE_PROFILE_ID] ,\n    exclusive_time: data?.[SEMANTIC_ATTRIBUTE_EXCLUSIVE_TIME] ,\n    measurements: event.measurements,\n    is_segment: true,\n  };\n}\n\n/**\n * Converts a span JSON object to a transaction event.\n */\nfunction convertSpanJsonToTransactionEvent(span) {\n  return {\n    type: 'transaction',\n    timestamp: span.timestamp,\n    start_timestamp: span.start_timestamp,\n    transaction: span.description,\n    contexts: {\n      trace: {\n        trace_id: span.trace_id,\n        span_id: span.span_id,\n        parent_span_id: span.parent_span_id,\n        op: span.op,\n        status: span.status,\n        origin: span.origin,\n        data: {\n          ...span.data,\n          ...(span.profile_id && { [SEMANTIC_ATTRIBUTE_PROFILE_ID]: span.profile_id }),\n          ...(span.exclusive_time && { [SEMANTIC_ATTRIBUTE_EXCLUSIVE_TIME]: span.exclusive_time }),\n        },\n      },\n    },\n    measurements: span.measurements,\n  };\n}\n\nexport { convertSpanJsonToTransactionEvent, convertTransactionEventToSpanJson };\n//# sourceMappingURL=transactionEvent.js.map\n","import { getEnvelopeEndpointWithUrlEncodedAuth } from './api.js';\nimport { DEFAULT_ENVIRONMENT } from './constants.js';\nimport { getTraceContextFromScope, getCurrentScope, getIsolationScope, withScope } from './currentScopes.js';\nimport { DEBUG_BUILD } from './debug-build.js';\nimport { createEventEnvelope, createSessionEnvelope } from './envelope.js';\nimport { setupIntegration, afterSetupIntegrations, setupIntegrations } from './integration.js';\nimport { updateSession } from './session.js';\nimport { getDynamicSamplingContextFromScope, getDynamicSamplingContextFromSpan } from './tracing/dynamicSamplingContext.js';\nimport { createClientReportEnvelope } from './utils/clientreport.js';\nimport { debug } from './utils/debug-logger.js';\nimport { makeDsn, dsnToString } from './utils/dsn.js';\nimport { addItemToEnvelope, createAttachmentEnvelopeItem } from './utils/envelope.js';\nimport { getPossibleEventMessages } from './utils/eventUtils.js';\nimport { isPrimitive, isParameterizedString, isThenable, isPlainObject } from './utils/is.js';\nimport { merge } from './utils/merge.js';\nimport { uuid4, checkOrSetAlreadyCaught } from './utils/misc.js';\nimport { parseSampleRate } from './utils/parseSampleRate.js';\nimport { prepareEvent } from './utils/prepareEvent.js';\nimport { shouldIgnoreSpan, reparentChildSpans } from './utils/should-ignore-span.js';\nimport { showSpanDropWarning, getActiveSpan, spanToTraceContext } from './utils/spanUtils.js';\nimport { resolvedSyncPromise, SyncPromise, rejectedSyncPromise } from './utils/syncpromise.js';\nimport { convertTransactionEventToSpanJson, convertSpanJsonToTransactionEvent } from './utils/transactionEvent.js';\n\n/* eslint-disable max-lines */\n\nconst ALREADY_SEEN_ERROR = \"Not capturing exception because it's already been captured.\";\nconst MISSING_RELEASE_FOR_SESSION_ERROR = 'Discarded session because of missing or non-string release';\n\nconst INTERNAL_ERROR_SYMBOL = Symbol.for('SentryInternalError');\nconst DO_NOT_SEND_EVENT_SYMBOL = Symbol.for('SentryDoNotSendEventError');\n\nfunction _makeInternalError(message) {\n  return {\n    message,\n    [INTERNAL_ERROR_SYMBOL]: true,\n  };\n}\n\nfunction _makeDoNotSendEventError(message) {\n  return {\n    message,\n    [DO_NOT_SEND_EVENT_SYMBOL]: true,\n  };\n}\n\nfunction _isInternalError(error) {\n  return !!error && typeof error === 'object' && INTERNAL_ERROR_SYMBOL in error;\n}\n\nfunction _isDoNotSendEventError(error) {\n  return !!error && typeof error === 'object' && DO_NOT_SEND_EVENT_SYMBOL in error;\n}\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 Client._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 Client<NodeOptions> {\n *   public constructor(options: NodeOptions) {\n *     super(options);\n *   }\n *\n *   // ...\n * }\n */\nclass Client {\n  /** Options passed to the SDK. */\n\n  /** The client Dsn, if specified in options. Without this Dsn, the SDK will be disabled. */\n\n  /** Array of set up integrations. */\n\n  /** Number of calls being processed */\n\n  /** Holds flushable  */\n\n  // eslint-disable-next-line @typescript-eslint/ban-types\n\n  /**\n   * Initializes this client instance.\n   *\n   * @param options Options for the client.\n   */\n   constructor(options) {\n    this._options = options;\n    this._integrations = {};\n    this._numProcessing = 0;\n    this._outcomes = {};\n    this._hooks = {};\n    this._eventProcessors = [];\n\n    if (options.dsn) {\n      this._dsn = makeDsn(options.dsn);\n    } else {\n      DEBUG_BUILD && debug.warn('No DSN provided, client will not send events.');\n    }\n\n    if (this._dsn) {\n      const url = getEnvelopeEndpointWithUrlEncodedAuth(\n        this._dsn,\n        options.tunnel,\n        options._metadata ? options._metadata.sdk : undefined,\n      );\n      this._transport = options.transport({\n        tunnel: this._options.tunnel,\n        recordDroppedEvent: this.recordDroppedEvent.bind(this),\n        ...options.transportOptions,\n        url,\n      });\n    }\n  }\n\n  /**\n   * Captures an exception event and sends it to Sentry.\n   *\n   * Unlike `captureException` exported from every SDK, this method requires that you pass it the current scope.\n   */\n   captureException(exception, hint, scope) {\n    const eventId = uuid4();\n\n    // ensure we haven't captured this very object before\n    if (checkOrSetAlreadyCaught(exception)) {\n      DEBUG_BUILD && debug.log(ALREADY_SEEN_ERROR);\n      return eventId;\n    }\n\n    const hintWithEventId = {\n      event_id: eventId,\n      ...hint,\n    };\n\n    this._process(\n      this.eventFromException(exception, hintWithEventId).then(event =>\n        this._captureEvent(event, hintWithEventId, scope),\n      ),\n    );\n\n    return hintWithEventId.event_id;\n  }\n\n  /**\n   * Captures a message event and sends it to Sentry.\n   *\n   * Unlike `captureMessage` exported from every SDK, this method requires that you pass it the current scope.\n   */\n   captureMessage(\n    message,\n    level,\n    hint,\n    currentScope,\n  ) {\n    const hintWithEventId = {\n      event_id: uuid4(),\n      ...hint,\n    };\n\n    const eventMessage = isParameterizedString(message) ? message : String(message);\n\n    const promisedEvent = isPrimitive(message)\n      ? this.eventFromMessage(eventMessage, level, hintWithEventId)\n      : this.eventFromException(message, hintWithEventId);\n\n    this._process(promisedEvent.then(event => this._captureEvent(event, hintWithEventId, currentScope)));\n\n    return hintWithEventId.event_id;\n  }\n\n  /**\n   * Captures a manually created event and sends it to Sentry.\n   *\n   * Unlike `captureEvent` exported from every SDK, this method requires that you pass it the current scope.\n   */\n   captureEvent(event, hint, currentScope) {\n    const eventId = uuid4();\n\n    // ensure we haven't captured this very object before\n    if (hint?.originalException && checkOrSetAlreadyCaught(hint.originalException)) {\n      DEBUG_BUILD && debug.log(ALREADY_SEEN_ERROR);\n      return eventId;\n    }\n\n    const hintWithEventId = {\n      event_id: eventId,\n      ...hint,\n    };\n\n    const sdkProcessingMetadata = event.sdkProcessingMetadata || {};\n    const capturedSpanScope = sdkProcessingMetadata.capturedSpanScope;\n    const capturedSpanIsolationScope = sdkProcessingMetadata.capturedSpanIsolationScope;\n\n    this._process(\n      this._captureEvent(event, hintWithEventId, capturedSpanScope || currentScope, capturedSpanIsolationScope),\n    );\n\n    return hintWithEventId.event_id;\n  }\n\n  /**\n   * Captures a session.\n   */\n   captureSession(session) {\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   * Create a cron monitor check in and send it to Sentry. This method is not available on all clients.\n   *\n   * @param checkIn An object that describes a check in.\n   * @param upsertMonitorConfig An optional object that describes a monitor config. Use this if you want\n   * to create a monitor automatically when sending a check in.\n   * @param scope An optional scope containing event metadata.\n   * @returns A string representing the id of the check in.\n   */\n\n  /**\n   * Get the current Dsn.\n   */\n   getDsn() {\n    return this._dsn;\n  }\n\n  /**\n   * Get the current options.\n   */\n   getOptions() {\n    return this._options;\n  }\n\n  /**\n   * Get the SDK metadata.\n   * @see SdkMetadata\n   */\n   getSdkMetadata() {\n    return this._options._metadata;\n  }\n\n  /**\n   * Returns the transport that is used by the client.\n   * Please note that the transport gets lazy initialized so it will only be there once the first event has been sent.\n   */\n   getTransport() {\n    return this._transport;\n  }\n\n  /**\n   * Wait for all events to be sent or the timeout to expire, whichever comes first.\n   *\n   * @param timeout Maximum time in ms the client should wait for events to be flushed. Omitting this parameter will\n   *   cause the client to wait until all events are sent before resolving the promise.\n   * @returns A promise that will resolve with `true` if all events are sent before the timeout, or `false` if there are\n   * still events in the queue when the timeout is reached.\n   */\n   flush(timeout) {\n    const transport = this._transport;\n    if (transport) {\n      this.emit('flush');\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   * Flush the event queue and set the client to `enabled = false`. See {@link Client.flush}.\n   *\n   * @param {number} timeout Maximum time in ms the client should wait before shutting down. Omitting this parameter will cause\n   *   the client to wait until all events are sent before disabling itself.\n   * @returns {Promise<boolean>} A promise which resolves to `true` if the flush completes successfully before the timeout, or `false` if\n   * it doesn't.\n   */\n   close(timeout) {\n    return this.flush(timeout).then(result => {\n      this.getOptions().enabled = false;\n      this.emit('close');\n      return result;\n    });\n  }\n\n  /**\n   * Get all installed event processors.\n   */\n   getEventProcessors() {\n    return this._eventProcessors;\n  }\n\n  /**\n   * Adds an event processor that applies to any event processed by this client.\n   */\n   addEventProcessor(eventProcessor) {\n    this._eventProcessors.push(eventProcessor);\n  }\n\n  /**\n   * Initialize this client.\n   * Call this after the client was set on a scope.\n   */\n   init() {\n    if (\n      this._isEnabled() ||\n      // Force integrations to be setup even if no DSN was set when we have\n      // Spotlight enabled. This is particularly important for browser as we\n      // don't support the `spotlight` option there and rely on the users\n      // adding the `spotlightBrowserIntegration()` to their integrations which\n      // wouldn't get initialized with the check below when there's no DSN set.\n      this._options.integrations.some(({ name }) => name.startsWith('Spotlight'))\n    ) {\n      this._setupIntegrations();\n    }\n  }\n\n  /**\n   * Gets an installed integration by its name.\n   *\n   * @returns {Integration|undefined} The installed integration or `undefined` if no integration with that `name` was installed.\n   */\n   getIntegrationByName(integrationName) {\n    return this._integrations[integrationName] ;\n  }\n\n  /**\n   * Add an integration to the client.\n   * This can be used to e.g. lazy load integrations.\n   * In most cases, this should not be necessary,\n   * and you're better off just passing the integrations via `integrations: []` at initialization time.\n   * However, if you find the need to conditionally load & add an integration, you can use `addIntegration` to do so.\n   */\n   addIntegration(integration) {\n    const isAlreadyInstalled = this._integrations[integration.name];\n\n    // This hook takes care of only installing if not already installed\n    setupIntegration(this, integration, this._integrations);\n    // Here we need to check manually to make sure to not run this multiple times\n    if (!isAlreadyInstalled) {\n      afterSetupIntegrations(this, [integration]);\n    }\n  }\n\n  /**\n   * Send a fully prepared event to Sentry.\n   */\n   sendEvent(event, hint = {}) {\n    this.emit('beforeSendEvent', event, hint);\n\n    let env = createEventEnvelope(event, this._dsn, this._options._metadata, this._options.tunnel);\n\n    for (const attachment of hint.attachments || []) {\n      env = addItemToEnvelope(env, createAttachmentEnvelopeItem(attachment));\n    }\n\n    const promise = this.sendEnvelope(env);\n    if (promise) {\n      promise.then(sendResponse => this.emit('afterSendEvent', event, sendResponse), null);\n    }\n  }\n\n  /**\n   * Send a session or session aggregrates to Sentry.\n   */\n   sendSession(session) {\n    // Backfill release and environment on session\n    const { release: clientReleaseOption, environment: clientEnvironmentOption = DEFAULT_ENVIRONMENT } = this._options;\n    if ('aggregates' in session) {\n      const sessionAttrs = session.attrs || {};\n      if (!sessionAttrs.release && !clientReleaseOption) {\n        DEBUG_BUILD && debug.warn(MISSING_RELEASE_FOR_SESSION_ERROR);\n        return;\n      }\n      sessionAttrs.release = sessionAttrs.release || clientReleaseOption;\n      sessionAttrs.environment = sessionAttrs.environment || clientEnvironmentOption;\n      session.attrs = sessionAttrs;\n    } else {\n      if (!session.release && !clientReleaseOption) {\n        DEBUG_BUILD && debug.warn(MISSING_RELEASE_FOR_SESSION_ERROR);\n        return;\n      }\n      session.release = session.release || clientReleaseOption;\n      session.environment = session.environment || clientEnvironmentOption;\n    }\n\n    this.emit('beforeSendSession', session);\n\n    const env = createSessionEnvelope(session, this._dsn, this._options._metadata, this._options.tunnel);\n\n    // sendEnvelope should not throw\n    // eslint-disable-next-line @typescript-eslint/no-floating-promises\n    this.sendEnvelope(env);\n  }\n\n  /**\n   * Record on the client that an event got dropped (ie, an event that will not be sent to Sentry).\n   */\n   recordDroppedEvent(reason, category, count = 1) {\n    if (this._options.sendClientReports) {\n      // We want to track each category (error, transaction, session, replay_event) 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<Record<SentryRequestType, Partial<Record<Outcome, number>>>>`\n      // With typescript 4.1 we could even use template literal types\n      const key = `${reason}:${category}`;\n      DEBUG_BUILD && debug.log(`Recording outcome: \"${key}\"${count > 1 ? ` (${count} times)` : ''}`);\n      this._outcomes[key] = (this._outcomes[key] || 0) + count;\n    }\n  }\n\n  /* eslint-disable @typescript-eslint/unified-signatures */\n  /**\n   * Register a callback for whenever a span is started.\n   * Receives the span as argument.\n   * @returns {() => void} A function that, when executed, removes the registered callback.\n   */\n\n  /**\n   * Register a hook on this client.\n   */\n   on(hook, callback) {\n    const hooks = (this._hooks[hook] = this._hooks[hook] || []);\n\n    // @ts-expect-error We assume the types are correct\n    hooks.push(callback);\n\n    // This function returns a callback execution handler that, when invoked,\n    // deregisters a callback. This is crucial for managing instances where callbacks\n    // need to be unregistered to prevent self-referencing in callback closures,\n    // ensuring proper garbage collection.\n    return () => {\n      // @ts-expect-error We assume the types are correct\n      const cbIndex = hooks.indexOf(callback);\n      if (cbIndex > -1) {\n        hooks.splice(cbIndex, 1);\n      }\n    };\n  }\n\n  /** Fire a hook whenever a span starts. */\n\n  /**\n   * Emit a hook that was previously registered via `on()`.\n   */\n   emit(hook, ...rest) {\n    const callbacks = this._hooks[hook];\n    if (callbacks) {\n      callbacks.forEach(callback => callback(...rest));\n    }\n  }\n\n  /**\n   * Send an envelope to Sentry.\n   */\n   sendEnvelope(envelope) {\n    this.emit('beforeEnvelope', envelope);\n\n    if (this._isEnabled() && this._transport) {\n      return this._transport.send(envelope).then(null, reason => {\n        DEBUG_BUILD && debug.error('Error while sending envelope:', reason);\n        return reason;\n      });\n    }\n\n    DEBUG_BUILD && debug.error('Transport disabled');\n\n    return resolvedSyncPromise({});\n  }\n\n  /* eslint-enable @typescript-eslint/unified-signatures */\n\n  /** Setup integrations for this client. */\n   _setupIntegrations() {\n    const { integrations } = this._options;\n    this._integrations = setupIntegrations(this, integrations);\n    afterSetupIntegrations(this, integrations);\n  }\n\n  /** Updates existing session based on the provided event */\n   _updateSessionFromEvent(session, event) {\n    let crashed = event.level === 'fatal';\n    let errored = false;\n    const exceptions = 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?.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   _isClientDoneProcessing(timeout) {\n    return new SyncPromise(resolve => {\n      let ticked = 0;\n      const tick = 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 transport is present. */\n   _isEnabled() {\n    return this.getOptions().enabled !== false && this._transport !== 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 currentScope A scope containing event metadata.\n   * @returns A new event with more information.\n   */\n   _prepareEvent(\n    event,\n    hint,\n    currentScope,\n    isolationScope,\n  ) {\n    const options = this.getOptions();\n    const integrations = Object.keys(this._integrations);\n    if (!hint.integrations && integrations?.length) {\n      hint.integrations = integrations;\n    }\n\n    this.emit('preprocessEvent', event, hint);\n\n    if (!event.type) {\n      isolationScope.setLastEventId(event.event_id || hint.event_id);\n    }\n\n    return prepareEvent(options, event, hint, currentScope, this, isolationScope).then(evt => {\n      if (evt === null) {\n        return evt;\n      }\n\n      this.emit('postprocessEvent', evt, hint);\n\n      evt.contexts = {\n        trace: getTraceContextFromScope(currentScope),\n        ...evt.contexts,\n      };\n\n      const dynamicSamplingContext = getDynamicSamplingContextFromScope(this, currentScope);\n\n      evt.sdkProcessingMetadata = {\n        dynamicSamplingContext,\n        ...evt.sdkProcessingMetadata,\n      };\n\n      return evt;\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   _captureEvent(\n    event,\n    hint = {},\n    currentScope = getCurrentScope(),\n    isolationScope = getIsolationScope(),\n  ) {\n    if (DEBUG_BUILD && isErrorEvent(event)) {\n      debug.log(`Captured error event \\`${getPossibleEventMessages(event)[0] || '<unknown>'}\\``);\n    }\n\n    return this._processEvent(event, hint, currentScope, isolationScope).then(\n      finalEvent => {\n        return finalEvent.event_id;\n      },\n      reason => {\n        if (DEBUG_BUILD) {\n          if (_isDoNotSendEventError(reason)) {\n            debug.log(reason.message);\n          } else if (_isInternalError(reason)) {\n            debug.warn(reason.message);\n          } else {\n            debug.warn(reason);\n          }\n        }\n        return 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 currentScope A scope containing event metadata.\n   * @returns A SyncPromise that resolves with the event or rejects in case event was/will not be send.\n   */\n   _processEvent(\n    event,\n    hint,\n    currentScope,\n    isolationScope,\n  ) {\n    const options = this.getOptions();\n    const { sampleRate } = options;\n\n    const isTransaction = isTransactionEvent(event);\n    const isError = isErrorEvent(event);\n    const eventType = event.type || 'error';\n    const beforeSendLabel = `before send for type \\`${eventType}\\``;\n\n    // 1.0 === 100% events are sent\n    // 0.0 === 0% events are sent\n    // Sampling for transaction happens somewhere else\n    const parsedSampleRate = typeof sampleRate === 'undefined' ? undefined : parseSampleRate(sampleRate);\n    if (isError && typeof parsedSampleRate === 'number' && Math.random() > parsedSampleRate) {\n      this.recordDroppedEvent('sample_rate', 'error');\n      return rejectedSyncPromise(\n        _makeDoNotSendEventError(\n          `Discarding event because it's not included in the random sample (sampling rate = ${sampleRate})`,\n        ),\n      );\n    }\n\n    const dataCategory = (eventType === 'replay_event' ? 'replay' : eventType) ;\n\n    return this._prepareEvent(event, hint, currentScope, isolationScope)\n      .then(prepared => {\n        if (prepared === null) {\n          this.recordDroppedEvent('event_processor', dataCategory);\n          throw _makeDoNotSendEventError('An event processor returned `null`, will not send event.');\n        }\n\n        const isInternalException = hint.data && (hint.data ).__sentry__ === true;\n        if (isInternalException) {\n          return prepared;\n        }\n\n        const result = processBeforeSend(this, options, prepared, hint);\n        return _validateBeforeSendResult(result, beforeSendLabel);\n      })\n      .then(processedEvent => {\n        if (processedEvent === null) {\n          this.recordDroppedEvent('before_send', dataCategory);\n          if (isTransaction) {\n            const spans = event.spans || [];\n            // the transaction itself counts as one span, plus all the child spans that are added\n            const spanCount = 1 + spans.length;\n            this.recordDroppedEvent('before_send', 'span', spanCount);\n          }\n          throw _makeDoNotSendEventError(`${beforeSendLabel} returned \\`null\\`, will not send event.`);\n        }\n\n        const session = currentScope.getSession() || isolationScope.getSession();\n        if (isError && session) {\n          this._updateSessionFromEvent(session, processedEvent);\n        }\n\n        if (isTransaction) {\n          const spanCountBefore = processedEvent.sdkProcessingMetadata?.spanCountBeforeProcessing || 0;\n          const spanCountAfter = processedEvent.spans ? processedEvent.spans.length : 0;\n\n          const droppedSpanCount = spanCountBefore - spanCountAfter;\n          if (droppedSpanCount > 0) {\n            this.recordDroppedEvent('before_send', 'span', droppedSpanCount);\n          }\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          };\n        }\n\n        this.sendEvent(processedEvent, hint);\n        return processedEvent;\n      })\n      .then(null, reason => {\n        if (_isDoNotSendEventError(reason) || _isInternalError(reason)) {\n          throw reason;\n        }\n\n        this.captureException(reason, {\n          mechanism: {\n            handled: false,\n            type: 'internal',\n          },\n          data: {\n            __sentry__: true,\n          },\n          originalException: reason,\n        });\n        throw _makeInternalError(\n          `Event processing pipeline threw an error, original event will not be sent. Details have been sent as a new event.\\nReason: ${reason}`,\n        );\n      });\n  }\n\n  /**\n   * Occupies the client with processing and event\n   */\n   _process(promise) {\n    this._numProcessing++;\n    void promise.then(\n      value => {\n        this._numProcessing--;\n        return value;\n      },\n      reason => {\n        this._numProcessing--;\n        return reason;\n      },\n    );\n  }\n\n  /**\n   * Clears outcomes on this client and returns them.\n   */\n   _clearOutcomes() {\n    const outcomes = this._outcomes;\n    this._outcomes = {};\n    return Object.entries(outcomes).map(([key, quantity]) => {\n      const [reason, category] = key.split(':') ;\n      return {\n        reason,\n        category,\n        quantity,\n      };\n    });\n  }\n\n  /**\n   * Sends client reports as an envelope.\n   */\n   _flushOutcomes() {\n    DEBUG_BUILD && debug.log('Flushing outcomes...');\n\n    const outcomes = this._clearOutcomes();\n\n    if (outcomes.length === 0) {\n      DEBUG_BUILD && debug.log('No outcomes to send');\n      return;\n    }\n\n    // This is really the only place where we want to check for a DSN and only send outcomes then\n    if (!this._dsn) {\n      DEBUG_BUILD && debug.log('No dsn provided, will not send outcomes');\n      return;\n    }\n\n    DEBUG_BUILD && debug.log('Sending outcomes:', outcomes);\n\n    const envelope = createClientReportEnvelope(outcomes, this._options.tunnel && dsnToString(this._dsn));\n\n    // sendEnvelope should not throw\n    // eslint-disable-next-line @typescript-eslint/no-floating-promises\n    this.sendEnvelope(envelope);\n  }\n\n  /**\n   * Creates an {@link Event} from all inputs to `captureException` and non-primitive inputs to `captureMessage`.\n   */\n\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,\n  beforeSendLabel,\n) {\n  const invalidValueError = `${beforeSendLabel} 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 _makeInternalError(invalidValueError);\n        }\n        return event;\n      },\n      e => {\n        throw _makeInternalError(`${beforeSendLabel} rejected with ${e}`);\n      },\n    );\n  } else if (!isPlainObject(beforeSendResult) && beforeSendResult !== null) {\n    throw _makeInternalError(invalidValueError);\n  }\n  return beforeSendResult;\n}\n\n/**\n * Process the matching `beforeSendXXX` callback.\n */\nfunction processBeforeSend(\n  client,\n  options,\n  event,\n  hint,\n) {\n  const { beforeSend, beforeSendTransaction, beforeSendSpan, ignoreSpans } = options;\n  let processedEvent = event;\n\n  if (isErrorEvent(processedEvent) && beforeSend) {\n    return beforeSend(processedEvent, hint);\n  }\n\n  if (isTransactionEvent(processedEvent)) {\n    // Avoid processing if we don't have to\n    if (beforeSendSpan || ignoreSpans) {\n      // 1. Process root span\n      const rootSpanJson = convertTransactionEventToSpanJson(processedEvent);\n\n      // 1.1 If the root span should be ignored, drop the whole transaction\n      if (ignoreSpans?.length && shouldIgnoreSpan(rootSpanJson, ignoreSpans)) {\n        // dropping the whole transaction!\n        return null;\n      }\n\n      // 1.2 If a `beforeSendSpan` callback is defined, process the root span\n      if (beforeSendSpan) {\n        const processedRootSpanJson = beforeSendSpan(rootSpanJson);\n        if (!processedRootSpanJson) {\n          showSpanDropWarning();\n        } else {\n          // update event with processed root span values\n          processedEvent = merge(event, convertSpanJsonToTransactionEvent(processedRootSpanJson));\n        }\n      }\n\n      // 2. Process child spans\n      if (processedEvent.spans) {\n        const processedSpans = [];\n\n        const initialSpans = processedEvent.spans;\n\n        for (const span of initialSpans) {\n          // 2.a If the child span should be ignored, reparent it to the root span\n          if (ignoreSpans?.length && shouldIgnoreSpan(span, ignoreSpans)) {\n            reparentChildSpans(initialSpans, span);\n            continue;\n          }\n\n          // 2.b If a `beforeSendSpan` callback is defined, process the child span\n          if (beforeSendSpan) {\n            const processedSpan = beforeSendSpan(span);\n            if (!processedSpan) {\n              showSpanDropWarning();\n              processedSpans.push(span);\n            } else {\n              processedSpans.push(processedSpan);\n            }\n          } else {\n            processedSpans.push(span);\n          }\n        }\n\n        const droppedSpans = processedEvent.spans.length - processedSpans.length;\n        if (droppedSpans) {\n          client.recordDroppedEvent('before_send', 'span', droppedSpans);\n        }\n        processedEvent.spans = processedSpans;\n      }\n    }\n\n    if (beforeSendTransaction) {\n      if (processedEvent.spans) {\n        // We store the # of spans before processing in SDK metadata,\n        // so we can compare it afterwards to determine how many spans were dropped\n        const spanCountBefore = processedEvent.spans.length;\n        processedEvent.sdkProcessingMetadata = {\n          ...event.sdkProcessingMetadata,\n          spanCountBeforeProcessing: spanCountBefore,\n        };\n      }\n      return beforeSendTransaction(processedEvent , hint);\n    }\n  }\n\n  return processedEvent;\n}\n\nfunction isErrorEvent(event) {\n  return event.type === undefined;\n}\n\nfunction isTransactionEvent(event) {\n  return event.type === 'transaction';\n}\n\n/** Extract trace information from scope */\nfunction _getTraceInfoFromScope(\n  client,\n  scope,\n) {\n  if (!scope) {\n    return [undefined, undefined];\n  }\n\n  return withScope(scope, () => {\n    const span = getActiveSpan();\n    const traceContext = span ? spanToTraceContext(span) : getTraceContextFromScope(scope);\n    const dynamicSamplingContext = span\n      ? getDynamicSamplingContextFromSpan(span)\n      : getDynamicSamplingContextFromScope(client, scope);\n    return [dynamicSamplingContext, traceContext];\n  });\n}\n\nexport { Client, _getTraceInfoFromScope };\n//# sourceMappingURL=client.js.map\n","import { dsnToString } from '../utils/dsn.js';\nimport { createEnvelope } from '../utils/envelope.js';\n\n/**\n * Creates a log container envelope item for a list of logs.\n *\n * @param items - The logs to include in the envelope.\n * @returns The created log container envelope item.\n */\nfunction createLogContainerEnvelopeItem(items) {\n  return [\n    {\n      type: 'log',\n      item_count: items.length,\n      content_type: 'application/vnd.sentry.items.log+json',\n    },\n    {\n      items,\n    },\n  ];\n}\n\n/**\n * Creates an envelope for a list of logs.\n *\n * Logs from multiple traces can be included in the same envelope.\n *\n * @param logs - The logs to include in the envelope.\n * @param metadata - The metadata to include in the envelope.\n * @param tunnel - The tunnel to include in the envelope.\n * @param dsn - The DSN to include in the envelope.\n * @returns The created envelope.\n */\nfunction createLogEnvelope(\n  logs,\n  metadata,\n  tunnel,\n  dsn,\n) {\n  const headers = {};\n\n  if (metadata?.sdk) {\n    headers.sdk = {\n      name: metadata.sdk.name,\n      version: metadata.sdk.version,\n    };\n  }\n\n  if (!!tunnel && !!dsn) {\n    headers.dsn = dsnToString(dsn);\n  }\n\n  return createEnvelope(headers, [createLogContainerEnvelopeItem(logs)]);\n}\n\nexport { createLogContainerEnvelopeItem, createLogEnvelope };\n//# sourceMappingURL=envelope.js.map\n","import { getGlobalSingleton } from '../carrier.js';\nimport { _getTraceInfoFromScope } from '../client.js';\nimport { getClient, getCurrentScope, getGlobalScope, getIsolationScope } from '../currentScopes.js';\nimport { DEBUG_BUILD } from '../debug-build.js';\nimport { mergeScopeData } from '../utils/applyScopeDataToEvent.js';\nimport { debug, consoleSandbox } from '../utils/debug-logger.js';\nimport { isParameterizedString } from '../utils/is.js';\nimport { _getSpanForScope } from '../utils/spanOnScope.js';\nimport { timestampInSeconds } from '../utils/time.js';\nimport { SEVERITY_TEXT_TO_SEVERITY_NUMBER } from './constants.js';\nimport { createLogEnvelope } from './envelope.js';\n\nconst MAX_LOG_BUFFER_SIZE = 100;\n\n/**\n * Converts a log attribute to a serialized log attribute.\n *\n * @param key - The key of the log attribute.\n * @param value - The value of the log attribute.\n * @returns The serialized log attribute.\n */\nfunction logAttributeToSerializedLogAttribute(value) {\n  switch (typeof value) {\n    case 'number':\n      if (Number.isInteger(value)) {\n        return {\n          value,\n          type: 'integer',\n        };\n      }\n      return {\n        value,\n        type: 'double',\n      };\n    case 'boolean':\n      return {\n        value,\n        type: 'boolean',\n      };\n    case 'string':\n      return {\n        value,\n        type: 'string',\n      };\n    default: {\n      let stringValue = '';\n      try {\n        stringValue = JSON.stringify(value) ?? '';\n      } catch {\n        // Do nothing\n      }\n      return {\n        value: stringValue,\n        type: 'string',\n      };\n    }\n  }\n}\n\n/**\n * Sets a log attribute if the value exists and the attribute key is not already present.\n *\n * @param logAttributes - The log attributes object to modify.\n * @param key - The attribute key to set.\n * @param value - The value to set (only sets if truthy and key not present).\n * @param setEvenIfPresent - Whether to set the attribute if it is present. Defaults to true.\n */\nfunction setLogAttribute(\n  logAttributes,\n  key,\n  value,\n  setEvenIfPresent = true,\n) {\n  if (value && (!logAttributes[key] || setEvenIfPresent)) {\n    logAttributes[key] = value;\n  }\n}\n\n/**\n * Captures a serialized log event and adds it to the log buffer for the given client.\n *\n * @param client - A client. Uses the current client if not provided.\n * @param serializedLog - The serialized log event to capture.\n *\n * @experimental This method will experience breaking changes. This is not yet part of\n * the stable Sentry SDK API and can be changed or removed without warning.\n */\nfunction _INTERNAL_captureSerializedLog(client, serializedLog) {\n  const bufferMap = _getBufferMap();\n\n  const logBuffer = _INTERNAL_getLogBuffer(client);\n  if (logBuffer === undefined) {\n    bufferMap.set(client, [serializedLog]);\n  } else {\n    bufferMap.set(client, [...logBuffer, serializedLog]);\n    if (logBuffer.length >= MAX_LOG_BUFFER_SIZE) {\n      _INTERNAL_flushLogsBuffer(client, logBuffer);\n    }\n  }\n}\n\n/**\n * Captures a log event and sends it to Sentry.\n *\n * @param log - The log event to capture.\n * @param scope - A scope. Uses the current scope if not provided.\n * @param client - A client. Uses the current client if not provided.\n * @param captureSerializedLog - A function to capture the serialized log.\n *\n * @experimental This method will experience breaking changes. This is not yet part of\n * the stable Sentry SDK API and can be changed or removed without warning.\n */\nfunction _INTERNAL_captureLog(\n  beforeLog,\n  client = getClient(),\n  currentScope = getCurrentScope(),\n  captureSerializedLog = _INTERNAL_captureSerializedLog,\n) {\n  if (!client) {\n    DEBUG_BUILD && debug.warn('No client available to capture log.');\n    return;\n  }\n\n  const { release, environment, enableLogs = false, beforeSendLog } = client.getOptions();\n  if (!enableLogs) {\n    DEBUG_BUILD && debug.warn('logging option not enabled, log will not be captured.');\n    return;\n  }\n\n  const [, traceContext] = _getTraceInfoFromScope(client, currentScope);\n\n  const processedLogAttributes = {\n    ...beforeLog.attributes,\n  };\n\n  const {\n    user: { id, email, username },\n  } = getMergedScopeData(currentScope);\n  setLogAttribute(processedLogAttributes, 'user.id', id, false);\n  setLogAttribute(processedLogAttributes, 'user.email', email, false);\n  setLogAttribute(processedLogAttributes, 'user.name', username, false);\n\n  setLogAttribute(processedLogAttributes, 'sentry.release', release);\n  setLogAttribute(processedLogAttributes, 'sentry.environment', environment);\n\n  const { name, version } = client.getSdkMetadata()?.sdk ?? {};\n  setLogAttribute(processedLogAttributes, 'sentry.sdk.name', name);\n  setLogAttribute(processedLogAttributes, 'sentry.sdk.version', version);\n\n  const beforeLogMessage = beforeLog.message;\n  if (isParameterizedString(beforeLogMessage)) {\n    const { __sentry_template_string__, __sentry_template_values__ = [] } = beforeLogMessage;\n    if (__sentry_template_values__?.length) {\n      processedLogAttributes['sentry.message.template'] = __sentry_template_string__;\n    }\n    __sentry_template_values__.forEach((param, index) => {\n      processedLogAttributes[`sentry.message.parameter.${index}`] = param;\n    });\n  }\n\n  const span = _getSpanForScope(currentScope);\n  // Add the parent span ID to the log attributes for trace context\n  setLogAttribute(processedLogAttributes, 'sentry.trace.parent_span_id', span?.spanContext().spanId);\n\n  const processedLog = { ...beforeLog, attributes: processedLogAttributes };\n\n  client.emit('beforeCaptureLog', processedLog);\n\n  // We need to wrap this in `consoleSandbox` to avoid recursive calls to `beforeSendLog`\n  const log = beforeSendLog ? consoleSandbox(() => beforeSendLog(processedLog)) : processedLog;\n  if (!log) {\n    client.recordDroppedEvent('before_send', 'log_item', 1);\n    DEBUG_BUILD && debug.warn('beforeSendLog returned null, log will not be captured.');\n    return;\n  }\n\n  const { level, message, attributes = {}, severityNumber } = log;\n\n  const serializedLog = {\n    timestamp: timestampInSeconds(),\n    level,\n    body: message,\n    trace_id: traceContext?.trace_id,\n    severity_number: severityNumber ?? SEVERITY_TEXT_TO_SEVERITY_NUMBER[level],\n    attributes: Object.keys(attributes).reduce(\n      (acc, key) => {\n        acc[key] = logAttributeToSerializedLogAttribute(attributes[key]);\n        return acc;\n      },\n      {} ,\n    ),\n  };\n\n  captureSerializedLog(client, serializedLog);\n\n  client.emit('afterCaptureLog', log);\n}\n\n/**\n * Flushes the logs buffer to Sentry.\n *\n * @param client - A client.\n * @param maybeLogBuffer - A log buffer. Uses the log buffer for the given client if not provided.\n *\n * @experimental This method will experience breaking changes. This is not yet part of\n * the stable Sentry SDK API and can be changed or removed without warning.\n */\nfunction _INTERNAL_flushLogsBuffer(client, maybeLogBuffer) {\n  const logBuffer = maybeLogBuffer ?? _INTERNAL_getLogBuffer(client) ?? [];\n  if (logBuffer.length === 0) {\n    return;\n  }\n\n  const clientOptions = client.getOptions();\n  const envelope = createLogEnvelope(logBuffer, clientOptions._metadata, clientOptions.tunnel, client.getDsn());\n\n  // Clear the log buffer after envelopes have been constructed.\n  _getBufferMap().set(client, []);\n\n  client.emit('flushLogs');\n\n  // sendEnvelope should not throw\n  // eslint-disable-next-line @typescript-eslint/no-floating-promises\n  client.sendEnvelope(envelope);\n}\n\n/**\n * Returns the log buffer for a given client.\n *\n * Exported for testing purposes.\n *\n * @param client - The client to get the log buffer for.\n * @returns The log buffer for the given client.\n */\nfunction _INTERNAL_getLogBuffer(client) {\n  return _getBufferMap().get(client);\n}\n\n/**\n * Get the scope data for the current scope after merging with the\n * global scope and isolation scope.\n *\n * @param currentScope - The current scope.\n * @returns The scope data.\n */\nfunction getMergedScopeData(currentScope) {\n  const scopeData = getGlobalScope().getScopeData();\n  mergeScopeData(scopeData, getIsolationScope().getScopeData());\n  mergeScopeData(scopeData, currentScope.getScopeData());\n  return scopeData;\n}\n\nfunction _getBufferMap() {\n  // The reference to the Client <> LogBuffer map is stored on the carrier to ensure it's always the same\n  return getGlobalSingleton('clientToLogBufferMap', () => new WeakMap());\n}\n\nexport { _INTERNAL_captureLog, _INTERNAL_captureSerializedLog, _INTERNAL_flushLogsBuffer, _INTERNAL_getLogBuffer, logAttributeToSerializedLogAttribute };\n//# sourceMappingURL=exports.js.map\n","import { getCurrentScope } from './currentScopes.js';\nimport { DEBUG_BUILD } from './debug-build.js';\nimport { debug, consoleSandbox } from './utils/debug-logger.js';\n\n/** A class object that can instantiate Client objects. */\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 */\nfunction initAndBind(\n  clientClass,\n  options,\n) {\n  if (options.debug === true) {\n    if (DEBUG_BUILD) {\n      debug.enable();\n    } else {\n      // use `console.warn` rather than `debug.warn` since by non-debug bundles have all `debug.x` statements stripped\n      consoleSandbox(() => {\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  }\n  const scope = getCurrentScope();\n  scope.update(options.initialScope);\n\n  const client = new clientClass(options);\n  setCurrentClient(client);\n  client.init();\n  return client;\n}\n\n/**\n * Make the given client the current client.\n */\nfunction setCurrentClient(client) {\n  getCurrentScope().setClient(client);\n}\n\nexport { initAndBind, setCurrentClient };\n//# sourceMappingURL=sdk.js.map\n","import { SyncPromise, resolvedSyncPromise, rejectedSyncPromise } from './syncpromise.js';\n\nconst SENTRY_BUFFER_FULL_ERROR = Symbol.for('SentryBufferFullError');\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 */\nfunction makePromiseBuffer(limit) {\n  const buffer = [];\n\n  function isReady() {\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<T>\n   * @returns Removed promise.\n   */\n  function remove(task) {\n    return buffer.splice(buffer.indexOf(task), 1)[0] || Promise.resolve(undefined);\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<T>; In previous versions this used to be `task:\n   *        PromiseLike<T>`, 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) {\n    if (!isReady()) {\n      return rejectedSyncPromise(SENTRY_BUFFER_FULL_ERROR);\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) {\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          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\nexport { SENTRY_BUFFER_FULL_ERROR, makePromiseBuffer };\n//# sourceMappingURL=promisebuffer.js.map\n","// Intentionally keeping the key broad, as we don't know for sure what rate limit headers get returned from backend\n\nconst 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 */\nfunction parseRetryAfterHeader(header, now = Date.now()) {\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 the given category is disabled until for rate limiting.\n * In case no category-specific limit is set but a general rate limit across all categories is active,\n * that time is returned.\n *\n * @return the time in ms that the category is disabled until or 0 if there's no active rate limit.\n */\nfunction disabledUntil(limits, dataCategory) {\n  return limits[dataCategory] || limits.all || 0;\n}\n\n/**\n * Checks if a category is rate limited\n */\nfunction isRateLimited(limits, dataCategory, now = Date.now()) {\n  return disabledUntil(limits, dataCategory) > now;\n}\n\n/**\n * Update ratelimits from incoming headers.\n *\n * @return the updated RateLimits object.\n */\nfunction updateRateLimits(\n  limits,\n  { statusCode, headers },\n  now = Date.now(),\n) {\n  const updatedRateLimits = {\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?.['x-sentry-rate-limits'];\n  const retryAfterHeader = headers?.['retry-after'];\n\n  if (rateLimitHeader) {\n    /**\n     * rate limit headers are of the form\n     *     <header>,<header>,..\n     * where each <header> is of the form\n     *     <retry_after>: <categories>: <scope>: <reason_code>: <namespaces>\n     * where\n     *     <retry_after> is a delay in seconds\n     *     <categories> is the event type(s) (error, transaction, etc) being rate limited and is of the form\n     *         <category>;<category>;...\n     *     <scope> is what's being limited (org, project, or key) - ignored by SDK\n     *     <reason_code> is an arbitrary string like \"org_quota\" - ignored by SDK\n     *     <namespaces> Semicolon-separated list of metric namespace identifiers. Defines which namespace(s) will be affected.\n     *         Only present if rate limit applies to the metric_bucket data category.\n     */\n    for (const limit of rateLimitHeader.trim().split(',')) {\n      const [retryAfter, categories, , , namespaces] = limit.split(':', 5) ;\n      const headerDelay = parseInt(retryAfter, 10);\n      const delay = (!isNaN(headerDelay) ? headerDelay : 60) * 1000; // 60sec default\n      if (!categories) {\n        updatedRateLimits.all = now + delay;\n      } else {\n        for (const category of categories.split(';')) {\n          if (category === 'metric_bucket') {\n            // namespaces will be present when category === 'metric_bucket'\n            if (!namespaces || namespaces.split(';').includes('custom')) {\n              updatedRateLimits[category] = now + delay;\n            }\n          } else {\n            updatedRateLimits[category] = now + delay;\n          }\n        }\n      }\n    }\n  } else if (retryAfterHeader) {\n    updatedRateLimits.all = now + parseRetryAfterHeader(retryAfterHeader, now);\n  } else if (statusCode === 429) {\n    updatedRateLimits.all = now + 60 * 1000;\n  }\n\n  return updatedRateLimits;\n}\n\nexport { DEFAULT_RETRY_AFTER, disabledUntil, isRateLimited, parseRetryAfterHeader, updateRateLimits };\n//# sourceMappingURL=ratelimit.js.map\n","import { DEBUG_BUILD } from '../debug-build.js';\nimport { debug } from '../utils/debug-logger.js';\nimport { forEachEnvelopeItem, envelopeItemTypeToDataCategory, createEnvelope, serializeEnvelope } from '../utils/envelope.js';\nimport { makePromiseBuffer, SENTRY_BUFFER_FULL_ERROR } from '../utils/promisebuffer.js';\nimport { isRateLimited, updateRateLimits } from '../utils/ratelimit.js';\nimport { resolvedSyncPromise } from '../utils/syncpromise.js';\n\nconst DEFAULT_TRANSPORT_BUFFER_SIZE = 64;\n\n/**\n * Creates an instance of a Sentry `Transport`\n *\n * @param options\n * @param makeRequest\n */\nfunction createTransport(\n  options,\n  makeRequest,\n  buffer = makePromiseBuffer(\n    options.bufferSize || DEFAULT_TRANSPORT_BUFFER_SIZE,\n  ),\n) {\n  let rateLimits = {};\n  const flush = (timeout) => buffer.drain(timeout);\n\n  function send(envelope) {\n    const filteredEnvelopeItems = [];\n\n    // Drop rate limited items from envelope\n    forEachEnvelopeItem(envelope, (item, type) => {\n      const dataCategory = envelopeItemTypeToDataCategory(type);\n      if (isRateLimited(rateLimits, dataCategory)) {\n        options.recordDroppedEvent('ratelimit_backoff', dataCategory);\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    const filteredEnvelope = createEnvelope(envelope[0], filteredEnvelopeItems );\n\n    // Creates client report for each item in an envelope\n    const recordEnvelopeLoss = (reason) => {\n      forEachEnvelopeItem(filteredEnvelope, (item, type) => {\n        options.recordDroppedEvent(reason, envelopeItemTypeToDataCategory(type));\n      });\n    };\n\n    const requestTask = () =>\n      makeRequest({ body: serializeEnvelope(filteredEnvelope) }).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 && debug.warn(`Sentry responded with status code ${response.statusCode} to sent event.`);\n          }\n\n          rateLimits = updateRateLimits(rateLimits, response);\n          return response;\n        },\n        error => {\n          recordEnvelopeLoss('network_error');\n          DEBUG_BUILD && debug.error('Encountered error running transport request:', error);\n          throw error;\n        },\n      );\n\n    return buffer.add(requestTask).then(\n      result => result,\n      error => {\n        if (error === SENTRY_BUFFER_FULL_ERROR) {\n          DEBUG_BUILD && debug.error('Skipped sending event because buffer is full.');\n          recordEnvelopeLoss('queue_overflow');\n          return resolvedSyncPromise({});\n        } else {\n          throw error;\n        }\n      },\n    );\n  }\n\n  return {\n    send,\n    flush,\n  };\n}\n\nexport { DEFAULT_TRANSPORT_BUFFER_SIZE, createTransport };\n//# sourceMappingURL=base.js.map\n","import { SEMANTIC_ATTRIBUTE_SENTRY_SOURCE, SEMANTIC_ATTRIBUTE_HTTP_REQUEST_METHOD, SEMANTIC_ATTRIBUTE_URL_FULL, SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN } from '../semanticAttributes.js';\n\n// Curious about `thismessage:/`? See: https://www.rfc-editor.org/rfc/rfc2557.html\n//  > When the methods above do not yield an absolute URI, a base URL\n//  > of \"thismessage:/\" MUST be employed. This base URL has been\n//  > defined for the sole purpose of resolving relative references\n//  > within a multipart/related structure when no other base URI is\n//  > specified.\n//\n// We need to provide a base URL to `parseStringToURLObject` because the fetch API gives us a\n// relative URL sometimes.\n//\n// This is the only case where we need to provide a base URL to `parseStringToURLObject`\n// because the relative URL is not valid on its own.\nconst DEFAULT_BASE_URL = 'thismessage:/';\n\n/**\n * Checks if the URL object is relative\n *\n * @param url - The URL object to check\n * @returns True if the URL object is relative, false otherwise\n */\nfunction isURLObjectRelative(url) {\n  return 'isRelative' in url;\n}\n\n/**\n * Parses string to a URL object\n *\n * @param url - The URL to parse\n * @returns The parsed URL object or undefined if the URL is invalid\n */\nfunction parseStringToURLObject(url, urlBase) {\n  const isRelative = url.indexOf('://') <= 0 && url.indexOf('//') !== 0;\n  const base = urlBase ?? (isRelative ? DEFAULT_BASE_URL : undefined);\n  try {\n    // Use `canParse` to short-circuit the URL constructor if it's not a valid URL\n    // This is faster than trying to construct the URL and catching the error\n    // Node 20+, Chrome 120+, Firefox 115+, Safari 17+\n    if ('canParse' in URL && !(URL ).canParse(url, base)) {\n      return undefined;\n    }\n\n    const fullUrlObject = new URL(url, base);\n    if (isRelative) {\n      // Because we used a fake base URL, we need to return a relative URL object.\n      // We cannot return anything about the origin, host, etc. because it will refer to the fake base URL.\n      return {\n        isRelative,\n        pathname: fullUrlObject.pathname,\n        search: fullUrlObject.search,\n        hash: fullUrlObject.hash,\n      };\n    }\n    return fullUrlObject;\n  } catch {\n    // empty body\n  }\n\n  return undefined;\n}\n\n/**\n * Takes a URL object and returns a sanitized string which is safe to use as span name\n * see: https://develop.sentry.dev/sdk/data-handling/#structuring-data\n */\nfunction getSanitizedUrlStringFromUrlObject(url) {\n  if (isURLObjectRelative(url)) {\n    return url.pathname;\n  }\n\n  const newUrl = new URL(url);\n  newUrl.search = '';\n  newUrl.hash = '';\n  if (['80', '443'].includes(newUrl.port)) {\n    newUrl.port = '';\n  }\n  if (newUrl.password) {\n    newUrl.password = '%filtered%';\n  }\n  if (newUrl.username) {\n    newUrl.username = '%filtered%';\n  }\n\n  return newUrl.toString();\n}\n\nfunction getHttpSpanNameFromUrlObject(\n  urlObject,\n  kind,\n  request,\n  routeName,\n) {\n  const method = request?.method?.toUpperCase() ?? 'GET';\n  const route = routeName\n    ? routeName\n    : urlObject\n      ? kind === 'client'\n        ? getSanitizedUrlStringFromUrlObject(urlObject)\n        : urlObject.pathname\n      : '/';\n\n  return `${method} ${route}`;\n}\n\n/**\n * Takes a parsed URL object and returns a set of attributes for the span\n * that represents the HTTP request for that url. This is used for both server\n * and client http spans.\n *\n * Follows https://opentelemetry.io/docs/specs/semconv/http/.\n *\n * @param urlObject - see {@link parseStringToURLObject}\n * @param kind - The type of HTTP operation (server or client)\n * @param spanOrigin - The origin of the span\n * @param request - The request object, see {@link PartialRequest}\n * @param routeName - The name of the route, must be low cardinality\n * @returns The span name and attributes for the HTTP operation\n */\nfunction getHttpSpanDetailsFromUrlObject(\n  urlObject,\n  kind,\n  spanOrigin,\n  request,\n  routeName,\n) {\n  const attributes = {\n    [SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]: spanOrigin,\n    [SEMANTIC_ATTRIBUTE_SENTRY_SOURCE]: 'url',\n  };\n\n  if (routeName) {\n    // This is based on https://opentelemetry.io/docs/specs/semconv/http/http-spans/#name\n    attributes[kind === 'server' ? 'http.route' : 'url.template'] = routeName;\n    attributes[SEMANTIC_ATTRIBUTE_SENTRY_SOURCE] = 'route';\n  }\n\n  if (request?.method) {\n    attributes[SEMANTIC_ATTRIBUTE_HTTP_REQUEST_METHOD] = request.method.toUpperCase();\n  }\n\n  if (urlObject) {\n    if (urlObject.search) {\n      attributes['url.query'] = urlObject.search;\n    }\n    if (urlObject.hash) {\n      attributes['url.fragment'] = urlObject.hash;\n    }\n    if (urlObject.pathname) {\n      attributes['url.path'] = urlObject.pathname;\n      if (urlObject.pathname === '/') {\n        attributes[SEMANTIC_ATTRIBUTE_SENTRY_SOURCE] = 'route';\n      }\n    }\n\n    if (!isURLObjectRelative(urlObject)) {\n      attributes[SEMANTIC_ATTRIBUTE_URL_FULL] = urlObject.href;\n      if (urlObject.port) {\n        attributes['url.port'] = urlObject.port;\n      }\n      if (urlObject.protocol) {\n        attributes['url.scheme'] = urlObject.protocol;\n      }\n      if (urlObject.hostname) {\n        attributes[kind === 'server' ? 'server.address' : 'url.domain'] = urlObject.hostname;\n      }\n    }\n  }\n\n  return [getHttpSpanNameFromUrlObject(urlObject, kind, request, routeName), attributes];\n}\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 <a/> href parsing trick because React Native and other\n * // environments where DOM might not be available\n * @returns parsed URL object\n */\nfunction parseUrl(url) {\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    search: query,\n    hash: fragment,\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 */\nfunction stripUrlQueryAndFragment(urlPath) {\n  return (urlPath.split(/[?#]/, 1) )[0];\n}\n\n/**\n * Takes a URL object and returns a sanitized string which is safe to use as span name\n * see: https://develop.sentry.dev/sdk/data-handling/#structuring-data\n */\nfunction getSanitizedUrlString(url) {\n  const { protocol, host, path } = url;\n\n  const filteredHost =\n    host\n      // Always filter out authority\n      ?.replace(/^.*@/, '[filtered]:[filtered]@')\n      // Don't show standard :80 (http) and :443 (https) ports to reduce the noise\n      // TODO: Use new URL global if it exists\n      .replace(/(:80)$/, '')\n      .replace(/(:443)$/, '') || '';\n\n  return `${protocol ? `${protocol}://` : ''}${filteredHost}${path}`;\n}\n\nexport { getHttpSpanDetailsFromUrlObject, getSanitizedUrlString, getSanitizedUrlStringFromUrlObject, isURLObjectRelative, parseStringToURLObject, parseUrl, stripUrlQueryAndFragment };\n//# sourceMappingURL=url.js.map\n","// By default, we want to infer the IP address, unless this is explicitly set to `null`\n// We do this after all other processing is done\n// If `ip_address` is explicitly set to `null` or a value, we leave it as is\n\n/**\n * @internal\n * @deprecated -- set ip inferral via via SDK metadata options on client instead.\n */\nfunction addAutoIpAddressToUser(objWithMaybeUser) {\n  if (objWithMaybeUser.user?.ip_address === undefined) {\n    objWithMaybeUser.user = {\n      ...objWithMaybeUser.user,\n      ip_address: '{{auto}}',\n    };\n  }\n}\n\n/**\n * @internal\n */\nfunction addAutoIpAddressToSession(session) {\n  if ('aggregates' in session) {\n    if (session.attrs?.['ip_address'] === undefined) {\n      session.attrs = {\n        ...session.attrs,\n        ip_address: '{{auto}}',\n      };\n    }\n  } else {\n    if (session.ipAddress === undefined) {\n      session.ipAddress = '{{auto}}';\n    }\n  }\n}\n\nexport { addAutoIpAddressToSession, addAutoIpAddressToUser };\n//# sourceMappingURL=ipAddress.js.map\n","import { SDK_VERSION } from './version.js';\n\n/**\n * A builder for the SDK metadata in the options for the SDK initialization.\n *\n * Note: This function is identical to `buildMetadata` in Remix and NextJS and SvelteKit.\n * We don't extract it for bundle size reasons.\n * @see https://github.com/getsentry/sentry-javascript/pull/7404\n * @see https://github.com/getsentry/sentry-javascript/pull/4196\n *\n * If you make changes to this function consider updating the others as well.\n *\n * @param options SDK options object that gets mutated\n * @param names list of package names\n */\nfunction applySdkMetadata(options, name, names = [name], source = 'npm') {\n  const metadata = options._metadata || {};\n\n  if (!metadata.sdk) {\n    metadata.sdk = {\n      name: `sentry.javascript.${name}`,\n      packages: names.map(name => ({\n        name: `${source}:@sentry/${name}`,\n        version: SDK_VERSION,\n      })),\n      version: SDK_VERSION,\n    };\n  }\n\n  options._metadata = metadata;\n}\n\nexport { applySdkMetadata };\n//# sourceMappingURL=sdkMetadata.js.map\n","import { getClient, getIsolationScope } from './currentScopes.js';\nimport { consoleSandbox } from './utils/debug-logger.js';\nimport { dateTimestampInSeconds } from './utils/time.js';\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 * 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 */\nfunction addBreadcrumb(breadcrumb, hint) {\n  const client = getClient();\n  const isolationScope = getIsolationScope();\n\n  if (!client) return;\n\n  const { beforeBreadcrumb = null, maxBreadcrumbs = DEFAULT_BREADCRUMBS } = 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)) )\n    : mergedBreadcrumb;\n\n  if (finalBreadcrumb === null) return;\n\n  if (client.emit) {\n    client.emit('beforeAddBreadcrumb', finalBreadcrumb, hint);\n  }\n\n  isolationScope.addBreadcrumb(finalBreadcrumb, maxBreadcrumbs);\n}\n\nexport { addBreadcrumb };\n//# sourceMappingURL=breadcrumbs.js.map\n","import { getClient } from '../currentScopes.js';\nimport { defineIntegration } from '../integration.js';\nimport { getOriginalFunction } from '../utils/object.js';\n\nlet originalFunctionToString;\n\nconst INTEGRATION_NAME = 'FunctionToString';\n\nconst SETUP_CLIENTS = new WeakMap();\n\nconst _functionToStringIntegration = (() => {\n  return {\n    name: INTEGRATION_NAME,\n    setupOnce() {\n      // eslint-disable-next-line @typescript-eslint/unbound-method\n      originalFunctionToString = Function.prototype.toString;\n\n      // intrinsics (like Function.prototype) might be immutable in some environments\n      // e.g. Node with --frozen-intrinsics, XS (an embedded JavaScript engine) or SES (a JavaScript proposal)\n      try {\n        Function.prototype.toString = function ( ...args) {\n          const originalFunction = getOriginalFunction(this);\n          const context =\n            SETUP_CLIENTS.has(getClient() ) && originalFunction !== undefined ? originalFunction : this;\n          return originalFunctionToString.apply(context, args);\n        };\n      } catch {\n        // ignore errors here, just don't patch this\n      }\n    },\n    setup(client) {\n      SETUP_CLIENTS.set(client, true);\n    },\n  };\n}) ;\n\n/**\n * Patch toString calls to return proper name for wrapped functions.\n *\n * ```js\n * Sentry.init({\n *   integrations: [\n *     functionToStringIntegration(),\n *   ],\n * });\n * ```\n */\nconst functionToStringIntegration = defineIntegration(_functionToStringIntegration);\n\nexport { functionToStringIntegration };\n//# sourceMappingURL=functiontostring.js.map\n","import { DEBUG_BUILD } from '../debug-build.js';\nimport { defineIntegration } from '../integration.js';\nimport { debug } from '../utils/debug-logger.js';\nimport { getPossibleEventMessages } from '../utils/eventUtils.js';\nimport { getEventDescription } from '../utils/misc.js';\nimport { stringMatchesSomePattern } from '../utils/string.js';\n\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 = [\n  /^Script error\\.?$/,\n  /^Javascript error: Script error\\.? on line 0$/,\n  /^ResizeObserver loop completed with undelivered notifications.$/, // The browser logs this when a ResizeObserver handler takes a bit longer. Usually this is not an actual issue though. It indicates slowness.\n  /^Cannot redefine property: googletag$/, // This is thrown when google tag manager is used in combination with an ad blocker\n  /^Can't find variable: gmo$/, // Error from Google Search App https://issuetracker.google.com/issues/396043331\n  /^undefined is not an object \\(evaluating 'a\\.[A-Z]'\\)$/, // Random error that happens but not actionable or noticeable to end-users.\n  'can\\'t redefine non-configurable property \"solana\"', // Probably a browser extension or custom browser (Brave) throwing this error\n  \"vv().getRestrictions is not a function. (In 'vv().getRestrictions(1,a)', 'vv().getRestrictions' is undefined)\", // Error thrown by GTM, seemingly not affecting end-users\n  \"Can't find variable: _AutofillCallbackHandler\", // Unactionable error in instagram webview https://developers.facebook.com/community/threads/320013549791141/\n  /^Non-Error promise rejection captured with value: Object Not Found Matching Id:\\d+, MethodName:simulateEvent, ParamCount:\\d+$/, // unactionable error from CEFSharp, a .NET library that embeds chromium in .NET apps\n  /^Java exception was raised during method invocation$/, // error from Facebook Mobile browser (https://github.com/getsentry/sentry-javascript/issues/15065)\n];\n\n/** Options for the EventFilters integration */\n\nconst INTEGRATION_NAME = 'EventFilters';\n\n/**\n * An integration that filters out events (errors and transactions) based on:\n *\n * - (Errors) A curated list of known low-value or irrelevant errors (see {@link DEFAULT_IGNORE_ERRORS})\n * - (Errors) A list of error messages or urls/filenames passed in via\n *   - Top level Sentry.init options (`ignoreErrors`, `denyUrls`, `allowUrls`)\n *   - The same options passed to the integration directly via @param options\n * - (Transactions/Spans) A list of root span (transaction) names passed in via\n *   - Top level Sentry.init option (`ignoreTransactions`)\n *   - The same option passed to the integration directly via @param options\n *\n * Events filtered by this integration will not be sent to Sentry.\n */\nconst eventFiltersIntegration = defineIntegration((options = {}) => {\n  let mergedOptions;\n  return {\n    name: INTEGRATION_NAME,\n    setup(client) {\n      const clientOptions = client.getOptions();\n      mergedOptions = _mergeOptions(options, clientOptions);\n    },\n    processEvent(event, _hint, client) {\n      if (!mergedOptions) {\n        const clientOptions = client.getOptions();\n        mergedOptions = _mergeOptions(options, clientOptions);\n      }\n      return _shouldDropEvent(event, mergedOptions) ? null : event;\n    },\n  };\n});\n\n/**\n * An integration that filters out events (errors and transactions) based on:\n *\n * - (Errors) A curated list of known low-value or irrelevant errors (see {@link DEFAULT_IGNORE_ERRORS})\n * - (Errors) A list of error messages or urls/filenames passed in via\n *   - Top level Sentry.init options (`ignoreErrors`, `denyUrls`, `allowUrls`)\n *   - The same options passed to the integration directly via @param options\n * - (Transactions/Spans) A list of root span (transaction) names passed in via\n *   - Top level Sentry.init option (`ignoreTransactions`)\n *   - The same option passed to the integration directly via @param options\n *\n * Events filtered by this integration will not be sent to Sentry.\n *\n * @deprecated this integration was renamed and will be removed in a future major version.\n * Use `eventFiltersIntegration` instead.\n */\nconst inboundFiltersIntegration = defineIntegration(((options = {}) => {\n  return {\n    ...eventFiltersIntegration(options),\n    name: 'InboundFilters',\n  };\n}) );\n\nfunction _mergeOptions(\n  internalOptions = {},\n  clientOptions = {},\n) {\n  return {\n    allowUrls: [...(internalOptions.allowUrls || []), ...(clientOptions.allowUrls || [])],\n    denyUrls: [...(internalOptions.denyUrls || []), ...(clientOptions.denyUrls || [])],\n    ignoreErrors: [\n      ...(internalOptions.ignoreErrors || []),\n      ...(clientOptions.ignoreErrors || []),\n      ...(internalOptions.disableErrorDefaults ? [] : DEFAULT_IGNORE_ERRORS),\n    ],\n    ignoreTransactions: [...(internalOptions.ignoreTransactions || []), ...(clientOptions.ignoreTransactions || [])],\n  };\n}\n\nfunction _shouldDropEvent(event, options) {\n  if (!event.type) {\n    // Filter errors\n    if (_isIgnoredError(event, options.ignoreErrors)) {\n      DEBUG_BUILD &&\n        debug.warn(\n          `Event dropped due to being matched by \\`ignoreErrors\\` option.\\nEvent: ${getEventDescription(event)}`,\n        );\n      return true;\n    }\n    if (_isUselessError(event)) {\n      DEBUG_BUILD &&\n        debug.warn(\n          `Event dropped due to not having an error message, error type or stacktrace.\\nEvent: ${getEventDescription(\n            event,\n          )}`,\n        );\n      return true;\n    }\n    if (_isDeniedUrl(event, options.denyUrls)) {\n      DEBUG_BUILD &&\n        debug.warn(\n          `Event dropped due to being matched by \\`denyUrls\\` option.\\nEvent: ${getEventDescription(\n            event,\n          )}.\\nUrl: ${_getEventFilterUrl(event)}`,\n        );\n      return true;\n    }\n    if (!_isAllowedUrl(event, options.allowUrls)) {\n      DEBUG_BUILD &&\n        debug.warn(\n          `Event dropped due to not being matched by \\`allowUrls\\` option.\\nEvent: ${getEventDescription(\n            event,\n          )}.\\nUrl: ${_getEventFilterUrl(event)}`,\n        );\n      return true;\n    }\n  } else if (event.type === 'transaction') {\n    // Filter transactions\n\n    if (_isIgnoredTransaction(event, options.ignoreTransactions)) {\n      DEBUG_BUILD &&\n        debug.warn(\n          `Event dropped due to being matched by \\`ignoreTransactions\\` option.\\nEvent: ${getEventDescription(event)}`,\n        );\n      return true;\n    }\n  }\n  return false;\n}\n\nfunction _isIgnoredError(event, ignoreErrors) {\n  if (!ignoreErrors?.length) {\n    return false;\n  }\n\n  return getPossibleEventMessages(event).some(message => stringMatchesSomePattern(message, ignoreErrors));\n}\n\nfunction _isIgnoredTransaction(event, ignoreTransactions) {\n  if (!ignoreTransactions?.length) {\n    return false;\n  }\n\n  const name = event.transaction;\n  return name ? stringMatchesSomePattern(name, ignoreTransactions) : false;\n}\n\nfunction _isDeniedUrl(event, denyUrls) {\n  if (!denyUrls?.length) {\n    return false;\n  }\n  const url = _getEventFilterUrl(event);\n  return !url ? false : stringMatchesSomePattern(url, denyUrls);\n}\n\nfunction _isAllowedUrl(event, allowUrls) {\n  if (!allowUrls?.length) {\n    return true;\n  }\n  const url = _getEventFilterUrl(event);\n  return !url ? true : stringMatchesSomePattern(url, allowUrls);\n}\n\nfunction _getLastValidUrl(frames = []) {\n  for (let i = frames.length - 1; i >= 0; i--) {\n    const frame = frames[i];\n\n    if (frame && frame.filename !== '<anonymous>' && frame.filename !== '[native code]') {\n      return frame.filename || null;\n    }\n  }\n\n  return null;\n}\n\nfunction _getEventFilterUrl(event) {\n  try {\n    // If there are linked exceptions or exception aggregates we only want to match against the top frame of the \"root\" (the main exception)\n    // The root always comes last in linked exceptions\n    const rootException = [...(event.exception?.values ?? [])]\n      .reverse()\n      .find(value => value.mechanism?.parent_id === undefined && value.stacktrace?.frames?.length);\n    const frames = rootException?.stacktrace?.frames;\n    return frames ? _getLastValidUrl(frames) : null;\n  } catch {\n    DEBUG_BUILD && debug.error(`Cannot extract url for event ${getEventDescription(event)}`);\n    return null;\n  }\n}\n\nfunction _isUselessError(event) {\n  // We only want to consider events for dropping that actually have recorded exception values.\n  if (!event.exception?.values?.length) {\n    return false;\n  }\n\n  return (\n    // No top-level message\n    !event.message &&\n    // There are no exception values that have a stacktrace, a non-generic-Error type or value\n    !event.exception.values.some(value => value.stacktrace || (value.type && value.type !== 'Error') || value.value)\n  );\n}\n\nexport { eventFiltersIntegration, inboundFiltersIntegration };\n//# sourceMappingURL=eventFilters.js.map\n","import { isInstanceOf } from './is.js';\n\n/**\n * Creates exceptions inside `event.exception.values` for errors that are nested on properties based on the `key` parameter.\n */\nfunction applyAggregateErrorsToEvent(\n  exceptionFromErrorImplementation,\n  parser,\n  key,\n  limit,\n  event,\n  hint,\n) {\n  if (!event.exception?.values || !hint || !isInstanceOf(hint.originalException, Error)) {\n    return;\n  }\n\n  // Generally speaking the last item in `event.exception.values` is the exception originating from the original Error\n  const originalException =\n    event.exception.values.length > 0 ? event.exception.values[event.exception.values.length - 1] : undefined;\n\n  // We only create exception grouping if there is an exception in the event.\n  if (originalException) {\n    event.exception.values = aggregateExceptionsFromError(\n      exceptionFromErrorImplementation,\n      parser,\n      limit,\n      hint.originalException ,\n      key,\n      event.exception.values,\n      originalException,\n      0,\n    );\n  }\n}\n\nfunction aggregateExceptionsFromError(\n  exceptionFromErrorImplementation,\n  parser,\n  limit,\n  error,\n  key,\n  prevExceptions,\n  exception,\n  exceptionId,\n) {\n  if (prevExceptions.length >= limit + 1) {\n    return prevExceptions;\n  }\n\n  let newExceptions = [...prevExceptions];\n\n  // Recursively call this function in order to walk down a chain of errors\n  if (isInstanceOf(error[key], Error)) {\n    applyExceptionGroupFieldsForParentException(exception, exceptionId);\n    const newException = exceptionFromErrorImplementation(parser, error[key]);\n    const newExceptionId = newExceptions.length;\n    applyExceptionGroupFieldsForChildException(newException, key, newExceptionId, exceptionId);\n    newExceptions = aggregateExceptionsFromError(\n      exceptionFromErrorImplementation,\n      parser,\n      limit,\n      error[key],\n      key,\n      [newException, ...newExceptions],\n      newException,\n      newExceptionId,\n    );\n  }\n\n  // This will create exception grouping for AggregateErrors\n  // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/AggregateError\n  if (Array.isArray(error.errors)) {\n    error.errors.forEach((childError, i) => {\n      if (isInstanceOf(childError, Error)) {\n        applyExceptionGroupFieldsForParentException(exception, exceptionId);\n        const newException = exceptionFromErrorImplementation(parser, childError);\n        const newExceptionId = newExceptions.length;\n        applyExceptionGroupFieldsForChildException(newException, `errors[${i}]`, newExceptionId, exceptionId);\n        newExceptions = aggregateExceptionsFromError(\n          exceptionFromErrorImplementation,\n          parser,\n          limit,\n          childError,\n          key,\n          [newException, ...newExceptions],\n          newException,\n          newExceptionId,\n        );\n      }\n    });\n  }\n\n  return newExceptions;\n}\n\nfunction applyExceptionGroupFieldsForParentException(exception, exceptionId) {\n  // Don't know if this default makes sense. The protocol requires us to set these values so we pick *some* default.\n  exception.mechanism = exception.mechanism || { type: 'generic', handled: true };\n\n  exception.mechanism = {\n    ...exception.mechanism,\n    ...(exception.type === 'AggregateError' && { is_exception_group: true }),\n    exception_id: exceptionId,\n  };\n}\n\nfunction applyExceptionGroupFieldsForChildException(\n  exception,\n  source,\n  exceptionId,\n  parentId,\n) {\n  // Don't know if this default makes sense. The protocol requires us to set these values so we pick *some* default.\n  exception.mechanism = exception.mechanism || { type: 'generic', handled: true };\n\n  exception.mechanism = {\n    ...exception.mechanism,\n    type: 'chained',\n    source,\n    exception_id: exceptionId,\n    parent_id: parentId,\n  };\n}\n\nexport { applyAggregateErrorsToEvent };\n//# sourceMappingURL=aggregate-errors.js.map\n","import { CONSOLE_LEVELS, originalConsoleMethods } from '../utils/debug-logger.js';\nimport { fill } from '../utils/object.js';\nimport { GLOBAL_OBJ } from '../utils/worldwide.js';\nimport { addHandler, maybeInstrument, triggerHandlers } from './handlers.js';\n\n/**\n * Add an instrumentation handler for when a console.xxx method is called.\n *\n * Use at your own risk, this might break without changelog notice, only used internally.\n * @hidden\n */\nfunction addConsoleInstrumentationHandler(handler) {\n  const type = 'console';\n  addHandler(type, handler);\n  maybeInstrument(type, instrumentConsole);\n}\n\nfunction instrumentConsole() {\n  if (!('console' in GLOBAL_OBJ)) {\n    return;\n  }\n\n  CONSOLE_LEVELS.forEach(function (level) {\n    if (!(level in GLOBAL_OBJ.console)) {\n      return;\n    }\n\n    fill(GLOBAL_OBJ.console, level, function (originalConsoleMethod) {\n      originalConsoleMethods[level] = originalConsoleMethod;\n\n      return function (...args) {\n        const handlerData = { args, level };\n        triggerHandlers('console', handlerData);\n\n        const log = originalConsoleMethods[level];\n        log?.apply(GLOBAL_OBJ.console, args);\n      };\n    });\n  });\n}\n\nexport { addConsoleInstrumentationHandler };\n//# sourceMappingURL=console.js.map\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 */\nfunction severityLevelFromString(level) {\n  return (\n    level === 'warn' ? 'warning' : ['fatal', 'error', 'warning', 'log', 'info', 'debug'].includes(level) ? level : 'log'\n  ) ;\n}\n\nexport { severityLevelFromString };\n//# sourceMappingURL=severity.js.map\n","import { DEBUG_BUILD } from '../debug-build.js';\nimport { defineIntegration } from '../integration.js';\nimport { debug } from '../utils/debug-logger.js';\nimport { getFramesFromEvent } from '../utils/stacktrace.js';\n\nconst INTEGRATION_NAME = 'Dedupe';\n\nconst _dedupeIntegration = (() => {\n  let previousEvent;\n\n  return {\n    name: INTEGRATION_NAME,\n    processEvent(currentEvent) {\n      // We want to ignore any non-error type events, e.g. transactions or replays\n      // These should never be deduped, and also not be compared against as _previousEvent.\n      if (currentEvent.type) {\n        return currentEvent;\n      }\n\n      // Juuust in case something goes wrong\n      try {\n        if (_shouldDropEvent(currentEvent, previousEvent)) {\n          DEBUG_BUILD && debug.warn('Event dropped due to being a duplicate of previously captured event.');\n          return null;\n        }\n      } catch {} // eslint-disable-line no-empty\n\n      return (previousEvent = currentEvent);\n    },\n  };\n}) ;\n\n/**\n * Deduplication filter.\n */\nconst dedupeIntegration = defineIntegration(_dedupeIntegration);\n\n/** only exported for tests. */\nfunction _shouldDropEvent(currentEvent, previousEvent) {\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\nfunction _isSameMessageEvent(currentEvent, previousEvent) {\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\nfunction _isSameExceptionEvent(currentEvent, previousEvent) {\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\nfunction _isSameStacktrace(currentEvent, previousEvent) {\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 ;\n  previousFrames = previousFrames ;\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    // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n    const frameA = previousFrames[i];\n    // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\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\nfunction _isSameFingerprint(currentEvent, previousEvent) {\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 ;\n  previousFingerprint = previousFingerprint ;\n\n  // Otherwise, compare the two\n  try {\n    return !!(currentFingerprint.join('') === previousFingerprint.join(''));\n  } catch {\n    return false;\n  }\n}\n\nfunction _getExceptionFromEvent(event) {\n  return event.exception?.values?.[0];\n}\n\nexport { _shouldDropEvent, dedupeIntegration };\n//# sourceMappingURL=dedupe.js.map\n","/**\n * Determine a breadcrumb's log level (only `warning` or `error`) based on an HTTP status code.\n */\nfunction getBreadcrumbLogLevelFromHttpStatusCode(statusCode) {\n  // NOTE: undefined defaults to 'info' in Sentry\n  if (statusCode === undefined) {\n    return undefined;\n  } else if (statusCode >= 400 && statusCode < 500) {\n    return 'warning';\n  } else if (statusCode >= 500) {\n    return 'error';\n  } else {\n    return undefined;\n  }\n}\n\nexport { getBreadcrumbLogLevelFromHttpStatusCode };\n//# sourceMappingURL=breadcrumb-log-level.js.map\n","import { DEBUG_BUILD } from '../debug-build.js';\nimport { debug } from './debug-logger.js';\nimport { GLOBAL_OBJ } from './worldwide.js';\n\nconst WINDOW = GLOBAL_OBJ ;\n\n/**\n * Tells whether current environment supports ErrorEvent objects\n * {@link supportsErrorEvent}.\n *\n * @returns Answer to the given question.\n */\nfunction supportsErrorEvent() {\n  try {\n    new ErrorEvent('');\n    return true;\n  } catch {\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 */\nfunction supportsDOMError() {\n  try {\n    // Chrome: VM89:1 Uncaught TypeError: Failed to construct 'DOMError':\n    // 1 argument required, but only 0 present.\n    // @ts-expect-error It really needs 1 argument, not 0.\n    new DOMError('');\n    return true;\n  } catch {\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 */\nfunction supportsDOMException() {\n  try {\n    new DOMException('');\n    return true;\n  } catch {\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 */\nfunction supportsHistory() {\n  return 'history' in WINDOW && !!WINDOW.history;\n}\n\n/**\n * Tells whether current environment supports Fetch API\n * {@link supportsFetch}.\n *\n * @returns Answer to the given question.\n * @deprecated This is no longer used and will be removed in a future major version.\n */\nconst supportsFetch = _isFetchSupported;\n\nfunction _isFetchSupported() {\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 {\n    return false;\n  }\n}\n\n/**\n * isNative checks if the given function is a native implementation\n */\n// eslint-disable-next-line @typescript-eslint/ban-types\nfunction isNativeFunction(func) {\n  return func && /^function\\s+\\w+\\(\\)\\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 */\nfunction supportsNativeFetch() {\n  if (typeof EdgeRuntime === 'string') {\n    return true;\n  }\n\n  if (!_isFetchSupported()) {\n    return false;\n  }\n\n  // Fast path to avoid DOM I/O\n  // eslint-disable-next-line @typescript-eslint/unbound-method\n  if (isNativeFunction(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 ) === 'function') {\n    try {\n      const sandbox = doc.createElement('iframe');\n      sandbox.hidden = true;\n      doc.head.appendChild(sandbox);\n      if (sandbox.contentWindow?.fetch) {\n        // eslint-disable-next-line @typescript-eslint/unbound-method\n        result = isNativeFunction(sandbox.contentWindow.fetch);\n      }\n      doc.head.removeChild(sandbox);\n    } catch (err) {\n      DEBUG_BUILD && debug.warn('Could not create sandbox iframe for pure fetch check, bailing to window.fetch: ', err);\n    }\n  }\n\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 */\nfunction supportsReportingObserver() {\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 * @deprecated This is no longer used and will be removed in a future major version.\n */\nfunction supportsReferrerPolicy() {\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 (!_isFetchSupported()) {\n    return false;\n  }\n\n  try {\n    new Request('_', {\n      referrerPolicy: 'origin' ,\n    });\n    return true;\n  } catch {\n    return false;\n  }\n}\n\nexport { isNativeFunction, supportsDOMError, supportsDOMException, supportsErrorEvent, supportsFetch, supportsHistory, supportsNativeFetch, supportsReferrerPolicy, supportsReportingObserver };\n//# sourceMappingURL=supports.js.map\n","import { isError, isRequest } from '../utils/is.js';\nimport { fill, addNonEnumerableProperty } from '../utils/object.js';\nimport { supportsNativeFetch } from '../utils/supports.js';\nimport { timestampInSeconds } from '../utils/time.js';\nimport { GLOBAL_OBJ } from '../utils/worldwide.js';\nimport { addHandler, maybeInstrument, triggerHandlers } from './handlers.js';\n\n/**\n * Add an instrumentation handler for when a fetch request happens.\n * The handler function is called once when the request starts and once when it ends,\n * which can be identified by checking if it has an `endTimestamp`.\n *\n * Use at your own risk, this might break without changelog notice, only used internally.\n * @hidden\n */\nfunction addFetchInstrumentationHandler(\n  handler,\n  skipNativeFetchCheck,\n) {\n  const type = 'fetch';\n  addHandler(type, handler);\n  maybeInstrument(type, () => instrumentFetch(undefined, skipNativeFetchCheck));\n}\n\n/**\n * Add an instrumentation handler for long-lived fetch requests, like consuming server-sent events (SSE) via fetch.\n * The handler will resolve the request body and emit the actual `endTimestamp`, so that the\n * span can be updated accordingly.\n *\n * Only used internally\n * @hidden\n */\nfunction addFetchEndInstrumentationHandler(handler) {\n  const type = 'fetch-body-resolved';\n  addHandler(type, handler);\n  maybeInstrument(type, () => instrumentFetch(streamHandler));\n}\n\nfunction instrumentFetch(onFetchResolved, skipNativeFetchCheck = false) {\n  if (skipNativeFetchCheck && !supportsNativeFetch()) {\n    return;\n  }\n\n  fill(GLOBAL_OBJ, 'fetch', function (originalFetch) {\n    return function (...args) {\n      // We capture the error right here and not in the Promise error callback because Safari (and probably other\n      // browsers too) will wipe the stack trace up to this point, only leaving us with this file which is useless.\n\n      // NOTE: If you are a Sentry user, and you are seeing this stack frame,\n      //       it means the error, that was caused by your fetch call did not\n      //       have a stack trace, so the SDK backfilled the stack trace so\n      //       you can see which fetch call failed.\n      const virtualError = new Error();\n\n      const { method, url } = parseFetchArgs(args);\n      const handlerData = {\n        args,\n        fetchData: {\n          method,\n          url,\n        },\n        startTimestamp: timestampInSeconds() * 1000,\n        // // Adding the error to be able to fingerprint the failed fetch event in HttpClient instrumentation\n        virtualError,\n        headers: getHeadersFromFetchArgs(args),\n      };\n\n      // if there is no callback, fetch is instrumented directly\n      if (!onFetchResolved) {\n        triggerHandlers('fetch', {\n          ...handlerData,\n        });\n      }\n\n      // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n      return originalFetch.apply(GLOBAL_OBJ, args).then(\n        async (response) => {\n          if (onFetchResolved) {\n            onFetchResolved(response);\n          } else {\n            triggerHandlers('fetch', {\n              ...handlerData,\n              endTimestamp: timestampInSeconds() * 1000,\n              response,\n            });\n          }\n\n          return response;\n        },\n        (error) => {\n          triggerHandlers('fetch', {\n            ...handlerData,\n            endTimestamp: timestampInSeconds() * 1000,\n            error,\n          });\n\n          if (isError(error) && error.stack === undefined) {\n            // NOTE: If you are a Sentry user, and you are seeing this stack frame,\n            //       it means the error, that was caused by your fetch call did not\n            //       have a stack trace, so the SDK backfilled the stack trace so\n            //       you can see which fetch call failed.\n            error.stack = virtualError.stack;\n            addNonEnumerableProperty(error, 'framesToPop', 1);\n          }\n\n          // We enhance the not-so-helpful \"Failed to fetch\" error messages with the host\n          // Possible messages we handle here:\n          // * \"Failed to fetch\" (chromium)\n          // * \"Load failed\" (webkit)\n          // * \"NetworkError when attempting to fetch resource.\" (firefox)\n          if (\n            error instanceof TypeError &&\n            (error.message === 'Failed to fetch' ||\n              error.message === 'Load failed' ||\n              error.message === 'NetworkError when attempting to fetch resource.')\n          ) {\n            try {\n              const url = new URL(handlerData.fetchData.url);\n              error.message = `${error.message} (${url.host})`;\n            } catch {\n              // ignore it if errors happen here\n            }\n          }\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\nasync function resolveResponse(res, onFinishedResolving) {\n  if (res?.body) {\n    const body = res.body;\n    const responseReader = body.getReader();\n\n    // Define a maximum duration after which we just cancel\n    const maxFetchDurationTimeout = setTimeout(\n      () => {\n        body.cancel().then(null, () => {\n          // noop\n        });\n      },\n      90 * 1000, // 90s\n    );\n\n    let readingActive = true;\n    while (readingActive) {\n      let chunkTimeout;\n      try {\n        // abort reading if read op takes more than 5s\n        chunkTimeout = setTimeout(() => {\n          body.cancel().then(null, () => {\n            // noop on error\n          });\n        }, 5000);\n\n        // This .read() call will reject/throw when we abort due to timeouts through `body.cancel()`\n        const { done } = await responseReader.read();\n\n        clearTimeout(chunkTimeout);\n\n        if (done) {\n          onFinishedResolving();\n          readingActive = false;\n        }\n      } catch {\n        readingActive = false;\n      } finally {\n        clearTimeout(chunkTimeout);\n      }\n    }\n\n    clearTimeout(maxFetchDurationTimeout);\n\n    responseReader.releaseLock();\n    body.cancel().then(null, () => {\n      // noop on error\n    });\n  }\n}\n\nfunction streamHandler(response) {\n  // clone response for awaiting stream\n  let clonedResponseForResolving;\n  try {\n    clonedResponseForResolving = response.clone();\n  } catch {\n    return;\n  }\n\n  // eslint-disable-next-line @typescript-eslint/no-floating-promises\n  resolveResponse(clonedResponseForResolving, () => {\n    triggerHandlers('fetch-body-resolved', {\n      endTimestamp: timestampInSeconds() * 1000,\n      response,\n    });\n  });\n}\n\nfunction hasProp(obj, prop) {\n  return !!obj && typeof obj === 'object' && !!(obj )[prop];\n}\n\nfunction getUrlFromResource(resource) {\n  if (typeof resource === 'string') {\n    return resource;\n  }\n\n  if (!resource) {\n    return '';\n  }\n\n  if (hasProp(resource, 'url')) {\n    return resource.url;\n  }\n\n  if (resource.toString) {\n    return resource.toString();\n  }\n\n  return '';\n}\n\n/**\n * Parses the fetch arguments to find the used Http method and the url of the request.\n * Exported for tests only.\n */\nfunction parseFetchArgs(fetchArgs) {\n  if (fetchArgs.length === 0) {\n    return { method: 'GET', url: '' };\n  }\n\n  if (fetchArgs.length === 2) {\n    const [url, options] = fetchArgs ;\n\n    return {\n      url: getUrlFromResource(url),\n      method: hasProp(options, 'method') ? String(options.method).toUpperCase() : 'GET',\n    };\n  }\n\n  const arg = fetchArgs[0];\n  return {\n    url: getUrlFromResource(arg ),\n    method: hasProp(arg, 'method') ? String(arg.method).toUpperCase() : 'GET',\n  };\n}\n\nfunction getHeadersFromFetchArgs(fetchArgs) {\n  const [requestArgument, optionsArgument] = fetchArgs;\n\n  try {\n    if (\n      typeof optionsArgument === 'object' &&\n      optionsArgument !== null &&\n      'headers' in optionsArgument &&\n      optionsArgument.headers\n    ) {\n      return new Headers(optionsArgument.headers );\n    }\n\n    if (isRequest(requestArgument)) {\n      return new Headers(requestArgument.headers);\n    }\n  } catch {\n    // noop\n  }\n\n  return;\n}\n\nexport { addFetchEndInstrumentationHandler, addFetchInstrumentationHandler, parseFetchArgs };\n//# sourceMappingURL=fetch.js.map\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 * `debug` 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 flags 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\n/**\n * Figures out if we're building a browser bundle.\n *\n * @returns true if this is a browser bundle build.\n */\nfunction isBrowserBundle() {\n  return typeof __SENTRY_BROWSER_BUNDLE__ !== 'undefined' && !!__SENTRY_BROWSER_BUNDLE__;\n}\n\n/**\n * Get source of SDK.\n */\nfunction getSDKSource() {\n  // This comment is used to identify this line in the CDN bundle build step and replace this with \"return 'cdn';\"\n  /* __SENTRY_SDK_SOURCE__ */ return 'npm';\n}\n\nexport { getSDKSource, isBrowserBundle };\n//# sourceMappingURL=env.js.map\n","import { GLOBAL_OBJ, getOriginalFunction, markFunctionWrapped, addNonEnumerableProperty, withScope, addExceptionTypeValue, addExceptionMechanism, captureException, getLocationHref } from '@sentry/core';\n\nconst WINDOW = GLOBAL_OBJ ;\n\nlet ignoreOnError = 0;\n\n/**\n * @hidden\n */\nfunction shouldIgnoreOnError() {\n  return ignoreOnError > 0;\n}\n\n/**\n * @hidden\n */\nfunction ignoreNextOnError() {\n  // onerror should trigger before setTimeout\n  ignoreOnError++;\n  setTimeout(() => {\n    ignoreOnError--;\n  });\n}\n\n// eslint-disable-next-line @typescript-eslint/ban-types\n\n/**\n * Instruments the given function and sends an event to Sentry every time the\n * function throws an exception.\n *\n * @param fn A function to wrap. It is generally safe to pass an unbound function, because the returned wrapper always\n * has a correct `this` context.\n * @returns The wrapped function.\n * @hidden\n */\nfunction wrap(\n  fn,\n  options\n\n = {},\n) {\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  function isFunction(fn) {\n    return typeof fn === 'function';\n  }\n\n  if (!isFunction(fn)) {\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      if (typeof wrapper === 'function') {\n        return wrapper;\n      } else {\n        // If we find that the `__sentry_wrapped__` function is not a function at the time of accessing it, it means\n        // that something messed with it. In that case we want to return the originally passed function.\n        return fn;\n      }\n    }\n\n    // We don't wanna wrap it twice\n    if (getOriginalFunction(fn)) {\n      return fn;\n    }\n  } catch {\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  // Wrap the function itself\n  // It is important that `sentryWrapped` is not an arrow function to preserve the context of `this`\n  const sentryWrapped = function ( ...args) {\n    try {\n      // Also wrap arguments that are themselves functions\n      const wrappedArguments = args.map(arg => wrap(arg, options));\n\n      // Attempt to invoke user-land function\n      // NOTE: If you are a Sentry user, and you are seeing this stack frame, it\n      //       means the sentry.javascript SDK caught an error invoking your application code. This\n      //       is expected behavior and NOT indicative of a bug with sentry.javascript.\n      return fn.apply(this, wrappedArguments);\n    } catch (ex) {\n      ignoreNextOnError();\n\n      withScope(scope => {\n        scope.addEventProcessor(event => {\n          if (options.mechanism) {\n            addExceptionTypeValue(event, undefined, undefined);\n            addExceptionMechanism(event, options.mechanism);\n          }\n\n          event.extra = {\n            ...event.extra,\n            arguments: args,\n          };\n\n          return event;\n        });\n\n        captureException(ex);\n      });\n\n      throw ex;\n    }\n  } ;\n\n  // Wrap the wrapped function in a proxy, to ensure any other properties of the original function remain available\n  try {\n    for (const property in fn) {\n      if (Object.prototype.hasOwnProperty.call(fn, property)) {\n        sentryWrapped[property ] = fn[property ];\n      }\n    }\n  } catch {\n    // Accessing some objects may throw\n    // ref: https://github.com/getsentry/sentry-javascript/issues/1168\n  }\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    // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n    const descriptor = Object.getOwnPropertyDescriptor(sentryWrapped, 'name');\n    if (descriptor.configurable) {\n      Object.defineProperty(sentryWrapped, 'name', {\n        get() {\n          return fn.name;\n        },\n      });\n    }\n  } catch {\n    // This may throw if e.g. the descriptor does not exist, or a browser does not allow redefining `name`.\n    // to save some bytes we simply try-catch this\n  }\n\n  return sentryWrapped;\n}\n\n/**\n * Get HTTP request data from the current page.\n */\nfunction getHttpRequestData() {\n  // grab as much info as exists and add it to the event\n  const url = getLocationHref();\n  const { referrer } = WINDOW.document || {};\n  const { userAgent } = WINDOW.navigator || {};\n\n  const headers = {\n    ...(referrer && { Referer: referrer }),\n    ...(userAgent && { 'User-Agent': userAgent }),\n  };\n  const request = {\n    url,\n    headers,\n  };\n\n  return request;\n}\n\nexport { WINDOW, getHttpRequestData, ignoreNextOnError, shouldIgnoreOnError, wrap };\n//# sourceMappingURL=helpers.js.map\n","import { isErrorEvent, isDOMError, isDOMException, addExceptionTypeValue, isError, isPlainObject, isEvent, addExceptionMechanism, isParameterizedString, getClient, normalizeToSize, extractExceptionKeysForMessage, resolvedSyncPromise } from '@sentry/core';\n\n/**\n * This function creates an exception from a JavaScript Error\n */\nfunction exceptionFromError(stackParser, ex) {\n  // Get the frames first since Opera can lose the stack if we touch anything else first\n  const frames = parseStackFrames(stackParser, ex);\n\n  const exception = {\n    type: extractType(ex),\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\nfunction eventFromPlainObject(\n  stackParser,\n  exception,\n  syntheticException,\n  isUnhandledRejection,\n) {\n  const client = getClient();\n  const normalizeDepth = client?.getOptions().normalizeDepth;\n\n  // If we can, we extract an exception from the object properties\n  const errorFromProp = getErrorPropertyFromObject(exception);\n\n  const extra = {\n    __serialized__: normalizeToSize(exception, normalizeDepth),\n  };\n\n  if (errorFromProp) {\n    return {\n      exception: {\n        values: [exceptionFromError(stackParser, errorFromProp)],\n      },\n      extra,\n    };\n  }\n\n  const event = {\n    exception: {\n      values: [\n        {\n          type: isEvent(exception) ? exception.constructor.name : isUnhandledRejection ? 'UnhandledRejection' : 'Error',\n          value: getNonErrorObjectExceptionValue(exception, { isUnhandledRejection }),\n        } ,\n      ],\n    },\n    extra,\n  } ;\n\n  if (syntheticException) {\n    const frames = parseStackFrames(stackParser, syntheticException);\n    if (frames.length) {\n      // event.exception.values[0] has been set above\n      // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n      event.exception.values[0].stacktrace = { frames };\n    }\n  }\n\n  return event;\n}\n\nfunction eventFromError(stackParser, ex) {\n  return {\n    exception: {\n      values: [exceptionFromError(stackParser, ex)],\n    },\n  };\n}\n\n/** Parses stack frames from an error */\nfunction parseStackFrames(\n  stackParser,\n  ex,\n) {\n  // Access and store the stacktrace property before doing ANYTHING\n  // else to it because Opera is not very good at providing it\n  // reliably in other circumstances.\n  const stacktrace = ex.stacktrace || ex.stack || '';\n\n  const skipLines = getSkipFirstStackStringLines(ex);\n  const framesToPop = getPopFirstTopFrames(ex);\n\n  try {\n    return stackParser(stacktrace, skipLines, framesToPop);\n  } catch {\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\n/**\n * Certain known React errors contain links that would be falsely\n * parsed as frames. This function check for these errors and\n * returns number of the stack string lines to skip.\n */\nfunction getSkipFirstStackStringLines(ex) {\n  if (ex && reactMinifiedRegexp.test(ex.message)) {\n    return 1;\n  }\n\n  return 0;\n}\n\n/**\n * If error has `framesToPop` property, it means that the\n * creator tells us the first x frames will be useless\n * and should be discarded. Typically error from wrapper function\n * which don't point to the actual location in the developer's code.\n *\n * Example: https://github.com/zertosh/invariant/blob/master/invariant.js#L46\n */\nfunction getPopFirstTopFrames(ex) {\n  if (typeof ex.framesToPop === 'number') {\n    return ex.framesToPop;\n  }\n\n  return 0;\n}\n\n// https://developer.mozilla.org/en-US/docs/WebAssembly/JavaScript_interface/Exception\n// @ts-expect-error - WebAssembly.Exception is a valid class\nfunction isWebAssemblyException(exception) {\n  // Check for support\n  // @ts-expect-error - WebAssembly.Exception is a valid class\n  if (typeof WebAssembly !== 'undefined' && typeof WebAssembly.Exception !== 'undefined') {\n    // @ts-expect-error - WebAssembly.Exception is a valid class\n    return exception instanceof WebAssembly.Exception;\n  } else {\n    return false;\n  }\n}\n\n/**\n * Extracts from errors what we use as the exception `type` in error events.\n *\n * Usually, this is the `name` property on Error objects but WASM errors need to be treated differently.\n */\nfunction extractType(ex) {\n  const name = ex?.name;\n\n  // The name for WebAssembly.Exception Errors needs to be extracted differently.\n  // Context: https://github.com/getsentry/sentry-javascript/issues/13787\n  if (!name && isWebAssemblyException(ex)) {\n    // Emscripten sets array[type, message] to the \"message\" property on the WebAssembly.Exception object\n    const hasTypeInMessage = ex.message && Array.isArray(ex.message) && ex.message.length == 2;\n    return hasTypeInMessage ? ex.message[0] : 'WebAssembly.Exception';\n  }\n\n  return name;\n}\n\n/**\n * There are cases where stacktrace.message is an Event object\n * https://github.com/getsentry/sentry-javascript/issues/1949\n * In this specific case we try to extract stacktrace.message.error.message\n */\nfunction extractMessage(ex) {\n  const message = ex?.message;\n\n  if (isWebAssemblyException(ex)) {\n    // For Node 18, Emscripten sets array[type, message] to the \"message\" property on the WebAssembly.Exception object\n    if (Array.isArray(ex.message) && ex.message.length == 2) {\n      return ex.message[1];\n    }\n    return 'wasm exception';\n  }\n\n  if (!message) {\n    return 'No error message';\n  }\n\n  if (message.error && typeof message.error.message === 'string') {\n    return message.error.message;\n  }\n\n  return message;\n}\n\n/**\n * Creates an {@link Event} from all inputs to `captureException` and non-primitive inputs to `captureMessage`.\n * @hidden\n */\nfunction eventFromException(\n  stackParser,\n  exception,\n  hint,\n  attachStacktrace,\n) {\n  const syntheticException = hint?.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?.event_id) {\n    event.event_id = hint.event_id;\n  }\n  return resolvedSyncPromise(event);\n}\n\n/**\n * Builds and Event from a Message\n * @hidden\n */\nfunction eventFromMessage(\n  stackParser,\n  message,\n  level = 'info',\n  hint,\n  attachStacktrace,\n) {\n  const syntheticException = hint?.syntheticException || undefined;\n  const event = eventFromString(stackParser, message, syntheticException, attachStacktrace);\n  event.level = level;\n  if (hint?.event_id) {\n    event.event_id = hint.event_id;\n  }\n  return resolvedSyncPromise(event);\n}\n\n/**\n * @hidden\n */\nfunction eventFromUnknownInput(\n  stackParser,\n  exception,\n  syntheticException,\n  attachStacktrace,\n  isUnhandledRejection,\n) {\n  let event;\n\n  if (isErrorEvent(exception ) && (exception ).error) {\n    // If it is an ErrorEvent with `error` property, extract it to get actual Error\n    const errorEvent = exception ;\n    return eventFromError(stackParser, errorEvent.error );\n  }\n\n  // If it is a `DOMError` (which is a legacy API, but still supported in some browsers) then we just extract the name\n  // and message, as it doesn't provide anything else. According to the spec, all `DOMExceptions` should also be\n  // `Error`s, but that's not the case in IE11, so in that case we treat it the same as we do a `DOMError`.\n  //\n  // https://developer.mozilla.org/en-US/docs/Web/API/DOMError\n  // https://developer.mozilla.org/en-US/docs/Web/API/DOMException\n  // https://webidl.spec.whatwg.org/#es-DOMException-specialness\n  if (isDOMError(exception) || isDOMException(exception )) {\n    const domException = exception ;\n\n    if ('stack' in (exception )) {\n      event = eventFromError(stackParser, exception );\n    } else {\n      const name = domException.name || (isDOMError(domException) ? 'DOMError' : 'DOMException');\n      const message = domException.message ? `${name}: ${domException.message}` : name;\n      event = eventFromString(stackParser, message, syntheticException, attachStacktrace);\n      addExceptionTypeValue(event, message);\n    }\n    if ('code' in domException) {\n      // eslint-disable-next-line deprecation/deprecation\n      event.tags = { ...event.tags, 'DOMException.code': `${domException.code}` };\n    }\n\n    return event;\n  }\n  if (isError(exception)) {\n    // we have a real Error object, do nothing\n    return eventFromError(stackParser, exception);\n  }\n  if (isPlainObject(exception) || isEvent(exception)) {\n    // If it's a plain object or an instance of `Event` (the built-in JS kind, not this SDK's `Event` type), serialize\n    // it manually. This will allow us to group events based on top-level keys which is much better than creating a new\n    // group on any key/value change.\n    const objectException = exception ;\n    event = eventFromPlainObject(stackParser, objectException, syntheticException, isUnhandledRejection);\n    addExceptionMechanism(event, {\n      synthetic: true,\n    });\n    return event;\n  }\n\n  // If none of previous checks were valid, then it means that it's not:\n  // - an instance of DOMError\n  // - an instance of DOMException\n  // - an instance of Event\n  // - an instance of Error\n  // - a valid ErrorEvent (one with an error property)\n  // - a plain Object\n  //\n  // So bail out and capture it as a simple message:\n  event = eventFromString(stackParser, exception , syntheticException, attachStacktrace);\n  addExceptionTypeValue(event, `${exception}`, undefined);\n  addExceptionMechanism(event, {\n    synthetic: true,\n  });\n\n  return event;\n}\n\nfunction eventFromString(\n  stackParser,\n  message,\n  syntheticException,\n  attachStacktrace,\n) {\n  const event = {};\n\n  if (attachStacktrace && syntheticException) {\n    const frames = parseStackFrames(stackParser, syntheticException);\n    if (frames.length) {\n      event.exception = {\n        values: [{ value: message, stacktrace: { frames } }],\n      };\n    }\n    addExceptionMechanism(event, { synthetic: true });\n  }\n\n  if (isParameterizedString(message)) {\n    const { __sentry_template_string__, __sentry_template_values__ } = message;\n\n    event.logentry = {\n      message: __sentry_template_string__,\n      params: __sentry_template_values__,\n    };\n    return event;\n  }\n\n  event.message = message;\n  return event;\n}\n\nfunction getNonErrorObjectExceptionValue(\n  exception,\n  { isUnhandledRejection },\n) {\n  const keys = extractExceptionKeysForMessage(exception);\n  const captureType = isUnhandledRejection ? 'promise rejection' : 'exception';\n\n  // Some ErrorEvent instances do not have an `error` property, which is why they are not handled before\n  // We still want to try to get a decent message for these cases\n  if (isErrorEvent(exception)) {\n    return `Event \\`ErrorEvent\\` captured as ${captureType} with message \\`${exception.message}\\``;\n  }\n\n  if (isEvent(exception)) {\n    const className = getObjectClassName(exception);\n    return `Event \\`${className}\\` (type=${exception.type}) captured as ${captureType}`;\n  }\n\n  return `Object captured as ${captureType} with keys: ${keys}`;\n}\n\nfunction getObjectClassName(obj) {\n  try {\n    const prototype = Object.getPrototypeOf(obj);\n    return prototype ? prototype.constructor.name : undefined;\n  } catch {\n    // ignore errors here\n  }\n}\n\n/** If a plain object has a property that is an `Error`, return this error. */\nfunction getErrorPropertyFromObject(obj) {\n  for (const prop in obj) {\n    if (Object.prototype.hasOwnProperty.call(obj, prop)) {\n      const value = obj[prop];\n      if (value instanceof Error) {\n        return value;\n      }\n    }\n  }\n\n  return undefined;\n}\n\nexport { eventFromException, eventFromMessage, eventFromUnknownInput, exceptionFromError, extractMessage, extractType };\n//# sourceMappingURL=eventbuilder.js.map\n","import { Client, getSDKSource, applySdkMetadata, _INTERNAL_flushLogsBuffer, addAutoIpAddressToSession } from '@sentry/core';\nimport { eventFromException, eventFromMessage } from './eventbuilder.js';\nimport { WINDOW } from './helpers.js';\n\n/**\n * A magic string that build tooling can leverage in order to inject a release value into the SDK.\n */\n\nconst DEFAULT_FLUSH_INTERVAL = 5000;\n\n/**\n * The Sentry Browser SDK Client.\n *\n * @see BrowserOptions for documentation on configuration options.\n * @see SentryClient for usage documentation.\n */\nclass BrowserClient extends Client {\n\n  /**\n   * Creates a new Browser SDK instance.\n   *\n   * @param options Configuration options for this SDK.\n   */\n   constructor(options) {\n    const opts = applyDefaultOptions(options);\n    const sdkSource = WINDOW.SENTRY_SDK_SOURCE || getSDKSource();\n    applySdkMetadata(opts, 'browser', ['browser'], sdkSource);\n\n    // Only allow IP inferral by Relay if sendDefaultPii is true\n    if (opts._metadata?.sdk) {\n      opts._metadata.sdk.settings = {\n        infer_ip: opts.sendDefaultPii ? 'auto' : 'never',\n        // purposefully allowing already passed settings to override the default\n        ...opts._metadata.sdk.settings,\n      };\n    }\n\n    super(opts);\n\n    const { sendDefaultPii, sendClientReports, enableLogs } = this._options;\n\n    if (WINDOW.document && (sendClientReports || enableLogs)) {\n      WINDOW.document.addEventListener('visibilitychange', () => {\n        if (WINDOW.document.visibilityState === 'hidden') {\n          if (sendClientReports) {\n            this._flushOutcomes();\n          }\n          if (enableLogs) {\n            _INTERNAL_flushLogsBuffer(this);\n          }\n        }\n      });\n    }\n\n    if (enableLogs) {\n      this.on('flush', () => {\n        _INTERNAL_flushLogsBuffer(this);\n      });\n\n      this.on('afterCaptureLog', () => {\n        if (this._logFlushIdleTimeout) {\n          clearTimeout(this._logFlushIdleTimeout);\n        }\n\n        this._logFlushIdleTimeout = setTimeout(() => {\n          _INTERNAL_flushLogsBuffer(this);\n        }, DEFAULT_FLUSH_INTERVAL);\n      });\n    }\n\n    if (sendDefaultPii) {\n      this.on('beforeSendSession', addAutoIpAddressToSession);\n    }\n  }\n\n  /**\n   * @inheritDoc\n   */\n   eventFromException(exception, hint) {\n    return eventFromException(this._options.stackParser, exception, hint, this._options.attachStacktrace);\n  }\n\n  /**\n   * @inheritDoc\n   */\n   eventFromMessage(\n    message,\n    level = 'info',\n    hint,\n  ) {\n    return eventFromMessage(this._options.stackParser, message, level, hint, this._options.attachStacktrace);\n  }\n\n  /**\n   * @inheritDoc\n   */\n   _prepareEvent(\n    event,\n    hint,\n    currentScope,\n    isolationScope,\n  ) {\n    event.platform = event.platform || 'javascript';\n\n    return super._prepareEvent(event, hint, currentScope, isolationScope);\n  }\n}\n\n/** Exported only for tests. */\nfunction applyDefaultOptions(optionsArg) {\n  return {\n    release:\n      typeof __SENTRY_RELEASE__ === 'string' // This allows build tooling to find-and-replace __SENTRY_RELEASE__ to inject a release value\n        ? __SENTRY_RELEASE__\n        : WINDOW.SENTRY_RELEASE?.id, // This supports the variable that sentry-webpack-plugin injects\n    sendClientReports: true,\n    // We default this to true, as it is the safer scenario\n    parentSpanIsAlwaysRootSpan: true,\n    ...optionsArg,\n  };\n}\n\nexport { BrowserClient, applyDefaultOptions };\n//# sourceMappingURL=client.js.map\n","/**\n * This serves as a build time flag that will be true by default, but false in non-debug builds or if users replace `__SENTRY_DEBUG__` in their generated code.\n *\n * ATTENTION: This constant must never cross package boundaries (i.e. be exported) to guarantee that it can be used for tree shaking.\n */\nconst DEBUG_BUILD = (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__);\n\nexport { DEBUG_BUILD };\n//# sourceMappingURL=debug-build.js.map\n","import { GLOBAL_OBJ } from '@sentry/core';\n\nconst WINDOW = GLOBAL_OBJ\n\n;\n\nexport { WINDOW };\n//# sourceMappingURL=types.js.map\n","import { addHandler, maybeInstrument, triggerHandlers, fill, addNonEnumerableProperty, uuid4 } from '@sentry/core';\nimport { WINDOW } from '../types.js';\n\nconst DEBOUNCE_DURATION = 1000;\n\nlet debounceTimerID;\nlet lastCapturedEventType;\nlet lastCapturedEventTargetId;\n\n/**\n * Add an instrumentation handler for when a click or a keypress happens.\n *\n * Use at your own risk, this might break without changelog notice, only used internally.\n * @hidden\n */\nfunction addClickKeypressInstrumentationHandler(handler) {\n  const type = 'dom';\n  addHandler(type, handler);\n  maybeInstrument(type, instrumentDOM);\n}\n\n/** Exported for tests only. */\nfunction instrumentDOM() {\n  if (!WINDOW.document) {\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) => {\n    const globalObject = WINDOW ;\n    const proto = globalObject[target]?.prototype;\n\n    // eslint-disable-next-line no-prototype-builtins\n    if (!proto?.hasOwnProperty?.('addEventListener')) {\n      return;\n    }\n\n    fill(proto, 'addEventListener', function (originalAddEventListener) {\n      return function ( type, listener, options) {\n        if (type === 'click' || type == 'keypress') {\n          try {\n            const handlers = (this.__sentry_instrumentation_handlers__ =\n              this.__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++;\n          } catch {\n            // Accessing dom properties is always fragile.\n            // Also allows us to skip `addEventListeners` 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) {\n        return function ( type, listener, options) {\n          if (type === 'click' || type == 'keypress') {\n            try {\n              const handlers = this.__sentry_instrumentation_handlers__ || {};\n              const handlerForType = handlers[type];\n\n              if (handlerForType) {\n                handlerForType.refCount--;\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 this.__sentry_instrumentation_handlers__;\n                }\n              }\n            } catch {\n              // Accessing dom properties is always fragile.\n              // Also allows us to skip `addEventListeners` calls with no proper `this` context.\n            }\n          }\n\n          return originalRemoveEventListener.call(this, type, listener, options);\n        };\n      },\n    );\n  });\n}\n\n/**\n * Check whether the event is similar to the last captured one. For example, two click events on the same button.\n */\nfunction isSimilarToLastCapturedEvent(event) {\n  // If both events have different type, then user definitely performed two separate actions. e.g. click + keypress.\n  if (event.type !== lastCapturedEventType) {\n    return false;\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 (!event.target || (event.target )._sentryId !== lastCapturedEventTargetId) {\n      return false;\n    }\n  } catch {\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 true;\n}\n\n/**\n * Decide whether an event should be captured.\n * @param event event to be captured\n */\nfunction shouldSkipDOMEvent(eventType, target) {\n  // We are only interested in filtering `keypress` events for now.\n  if (eventType !== 'keypress') {\n    return false;\n  }\n\n  if (!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\n  return true;\n}\n\n/**\n * Wraps addEventListener to capture UI breadcrumbs\n */\nfunction makeDOMEventHandler(\n  handler,\n  globalListener = false,\n) {\n  return (event) => {\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 || event['_sentryCaptured']) {\n      return;\n    }\n\n    const target = getEventTarget(event);\n\n    // We always want to skip _some_ events.\n    if (shouldSkipDOMEvent(event.type, target)) {\n      return;\n    }\n\n    // Mark event as \"seen\"\n    addNonEnumerableProperty(event, '_sentryCaptured', true);\n\n    if (target && !target._sentryId) {\n      // Add UUID to event target so we can identify if\n      addNonEnumerableProperty(target, '_sentryId', uuid4());\n    }\n\n    const name = event.type === 'keypress' ? 'input' : event.type;\n\n    // If there is no last captured event, it means that we can safely capture the new event and store it for future comparisons.\n    // If there is a last captured event, 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    if (!isSimilarToLastCapturedEvent(event)) {\n      const handlerData = { event, name, global: globalListener };\n      handler(handlerData);\n      lastCapturedEventType = event.type;\n      lastCapturedEventTargetId = target ? target._sentryId : undefined;\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      lastCapturedEventTargetId = undefined;\n      lastCapturedEventType = undefined;\n    }, DEBOUNCE_DURATION);\n  };\n}\n\nfunction getEventTarget(event) {\n  try {\n    return event.target ;\n  } catch {\n    // just accessing `target` property can throw an exception in some rare circumstances\n    // see: https://github.com/getsentry/sentry-javascript/issues/838\n    return null;\n  }\n}\n\nexport { addClickKeypressInstrumentationHandler, instrumentDOM };\n//# sourceMappingURL=dom.js.map\n","import { addHandler, maybeInstrument, triggerHandlers, supportsHistory, fill } from '@sentry/core';\nimport { WINDOW } from '../types.js';\n\nlet lastHref;\n\n/**\n * Add an instrumentation handler for when a fetch request happens.\n * The handler function is called once when the request starts and once when it ends,\n * which can be identified by checking if it has an `endTimestamp`.\n *\n * Use at your own risk, this might break without changelog notice, only used internally.\n * @hidden\n */\nfunction addHistoryInstrumentationHandler(handler) {\n  const type = 'history';\n  addHandler(type, handler);\n  maybeInstrument(type, instrumentHistory);\n}\n\n/**\n * Exported just for testing\n */\nfunction instrumentHistory() {\n  // The `popstate` event may also be triggered on `pushState`, but it may not always reliably be emitted by the browser\n  // Which is why we also monkey-patch methods below, in addition to this\n  WINDOW.addEventListener('popstate', () => {\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\n    if (from === to) {\n      return;\n    }\n\n    const handlerData = { from, to } ;\n    triggerHandlers('history', handlerData);\n  });\n\n  // Just guard against this not being available, in weird environments\n  if (!supportsHistory()) {\n    return;\n  }\n\n  function historyReplacementFunction(originalHistoryFunction) {\n    return function ( ...args) {\n      const url = args.length > 2 ? args[2] : undefined;\n      if (url) {\n        const from = lastHref;\n\n        // Ensure the URL is absolute\n        // this can be either a path, then it is relative to the current origin\n        // or a full URL of the current origin - other origins are not allowed\n        // See: https://developer.mozilla.org/en-US/docs/Web/API/History/pushState#url\n        // coerce to string (this is what pushState does)\n        const to = getAbsoluteUrl(String(url));\n\n        // keep track of the current URL state, as we always receive only the updated state\n        lastHref = to;\n\n        if (from === to) {\n          return originalHistoryFunction.apply(this, args);\n        }\n\n        const handlerData = { from, to } ;\n        triggerHandlers('history', handlerData);\n      }\n      return originalHistoryFunction.apply(this, args);\n    };\n  }\n\n  fill(WINDOW.history, 'pushState', historyReplacementFunction);\n  fill(WINDOW.history, 'replaceState', historyReplacementFunction);\n}\n\nfunction getAbsoluteUrl(urlOrPath) {\n  try {\n    const url = new URL(urlOrPath, WINDOW.location.origin);\n    return url.toString();\n  } catch {\n    // fallback, just do nothing\n    return urlOrPath;\n  }\n}\n\nexport { addHistoryInstrumentationHandler, instrumentHistory };\n//# sourceMappingURL=history.js.map\n","import { isNativeFunction, debug } from '@sentry/core';\nimport { DEBUG_BUILD } from './debug-build.js';\nimport { WINDOW } from './types.js';\n\n/**\n * We generally want to use window.fetch / window.setTimeout.\n * However, in some cases this may be wrapped (e.g. by Zone.js for Angular),\n * so we try to get an unpatched version of this from a sandboxed iframe.\n */\n\nconst cachedImplementations = {};\n\n/**\n * Get the native implementation of a browser function.\n *\n * This can be used to ensure we get an unwrapped version of a function, in cases where a wrapped function can lead to problems.\n *\n * The following methods can be retrieved:\n * - `setTimeout`: This can be wrapped by e.g. Angular, causing change detection to be triggered.\n * - `fetch`: This can be wrapped by e.g. ad-blockers, causing an infinite loop when a request is blocked.\n */\nfunction getNativeImplementation(\n  name,\n) {\n  const cached = cachedImplementations[name];\n  if (cached) {\n    return cached;\n  }\n\n  let impl = WINDOW[name] ;\n\n  // Fast path to avoid DOM I/O\n  if (isNativeFunction(impl)) {\n    return (cachedImplementations[name] = impl.bind(WINDOW) );\n  }\n\n  const document = WINDOW.document;\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?.[name]) {\n        impl = contentWindow[name] ;\n      }\n      document.head.removeChild(sandbox);\n    } catch (e) {\n      // Could not create sandbox iframe, just use window.xxx\n      DEBUG_BUILD && debug.warn(`Could not create sandbox iframe for ${name} check, bailing to window.${name}: `, e);\n    }\n  }\n\n  // Sanity check: This _should_ not happen, but if it does, we just skip caching...\n  // This can happen e.g. in tests where fetch may not be available in the env, or similar.\n  if (!impl) {\n    return impl;\n  }\n\n  return (cachedImplementations[name] = impl.bind(WINDOW) );\n}\n\n/** Clear a cached implementation. */\nfunction clearCachedImplementation(name) {\n  cachedImplementations[name] = undefined;\n}\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 */\nfunction fetch(...rest) {\n  return getNativeImplementation('fetch')(...rest);\n}\n\n/**\n * Get an unwrapped `setTimeout` method.\n * This ensures that even if e.g. Angular wraps `setTimeout`, we get the native implementation,\n * avoiding triggering change detection.\n */\nfunction setTimeout(...rest) {\n  return getNativeImplementation('setTimeout')(...rest);\n}\n\nexport { clearCachedImplementation, fetch, getNativeImplementation, setTimeout };\n//# sourceMappingURL=getNativeImplementation.js.map\n","import { addHandler, maybeInstrument, timestampInSeconds, isString, triggerHandlers } from '@sentry/core';\nimport { WINDOW } from '../types.js';\n\nconst SENTRY_XHR_DATA_KEY = '__sentry_xhr_v3__';\n\n/**\n * Add an instrumentation handler for when an XHR request happens.\n * The handler function is called once when the request starts and once when it ends,\n * which can be identified by checking if it has an `endTimestamp`.\n *\n * Use at your own risk, this might break without changelog notice, only used internally.\n * @hidden\n */\nfunction addXhrInstrumentationHandler(handler) {\n  const type = 'xhr';\n  addHandler(type, handler);\n  maybeInstrument(type, instrumentXHR);\n}\n\n/** Exported only for tests. */\nfunction instrumentXHR() {\n  if (!(WINDOW ).XMLHttpRequest) {\n    return;\n  }\n\n  const xhrproto = XMLHttpRequest.prototype;\n\n  // eslint-disable-next-line @typescript-eslint/unbound-method\n  xhrproto.open = new Proxy(xhrproto.open, {\n    apply(\n      originalOpen,\n      xhrOpenThisArg,\n      xhrOpenArgArray\n\n,\n    ) {\n      // NOTE: If you are a Sentry user, and you are seeing this stack frame,\n      //       it means the error, that was caused by your XHR call did not\n      //       have a stack trace. If you are using HttpClient integration,\n      //       this is the expected behavior, as we are using this virtual error to capture\n      //       the location of your XHR call, and group your HttpClient events accordingly.\n      const virtualError = new Error();\n\n      const startTimestamp = timestampInSeconds() * 1000;\n\n      // open() should always be called with two or more arguments\n      // But to be on the safe side, we actually validate this and bail out if we don't have a method & url\n      const method = isString(xhrOpenArgArray[0]) ? xhrOpenArgArray[0].toUpperCase() : undefined;\n      const url = parseXhrUrlArg(xhrOpenArgArray[1]);\n\n      if (!method || !url) {\n        return originalOpen.apply(xhrOpenThisArg, xhrOpenArgArray);\n      }\n\n      xhrOpenThisArg[SENTRY_XHR_DATA_KEY] = {\n        method,\n        url,\n        request_headers: {},\n      };\n\n      // if Sentry key appears in URL, don't capture it as a request\n      if (method === 'POST' && url.match(/sentry_key/)) {\n        xhrOpenThisArg.__sentry_own_request__ = true;\n      }\n\n      const onreadystatechangeHandler = () => {\n        // For whatever reason, this is not the same instance here as from the outer method\n        const xhrInfo = xhrOpenThisArg[SENTRY_XHR_DATA_KEY];\n\n        if (!xhrInfo) {\n          return;\n        }\n\n        if (xhrOpenThisArg.readyState === 4) {\n          try {\n            // touching statusCode in some platforms throws\n            // an exception\n            xhrInfo.status_code = xhrOpenThisArg.status;\n          } catch {\n            /* do nothing */\n          }\n\n          const handlerData = {\n            endTimestamp: timestampInSeconds() * 1000,\n            startTimestamp,\n            xhr: xhrOpenThisArg,\n            virtualError,\n          };\n          triggerHandlers('xhr', handlerData);\n        }\n      };\n\n      if ('onreadystatechange' in xhrOpenThisArg && typeof xhrOpenThisArg.onreadystatechange === 'function') {\n        xhrOpenThisArg.onreadystatechange = new Proxy(xhrOpenThisArg.onreadystatechange, {\n          apply(originalOnreadystatechange, onreadystatechangeThisArg, onreadystatechangeArgArray) {\n            onreadystatechangeHandler();\n            return originalOnreadystatechange.apply(onreadystatechangeThisArg, onreadystatechangeArgArray);\n          },\n        });\n      } else {\n        xhrOpenThisArg.addEventListener('readystatechange', onreadystatechangeHandler);\n      }\n\n      // Intercepting `setRequestHeader` to access the request headers of XHR instance.\n      // This will only work for user/library defined headers, not for the default/browser-assigned headers.\n      // Request cookies are also unavailable for XHR, as `Cookie` header can't be defined by `setRequestHeader`.\n      xhrOpenThisArg.setRequestHeader = new Proxy(xhrOpenThisArg.setRequestHeader, {\n        apply(\n          originalSetRequestHeader,\n          setRequestHeaderThisArg,\n          setRequestHeaderArgArray,\n        ) {\n          const [header, value] = setRequestHeaderArgArray;\n\n          const xhrInfo = setRequestHeaderThisArg[SENTRY_XHR_DATA_KEY];\n\n          if (xhrInfo && isString(header) && isString(value)) {\n            xhrInfo.request_headers[header.toLowerCase()] = value;\n          }\n\n          return originalSetRequestHeader.apply(setRequestHeaderThisArg, setRequestHeaderArgArray);\n        },\n      });\n\n      return originalOpen.apply(xhrOpenThisArg, xhrOpenArgArray);\n    },\n  });\n\n  // eslint-disable-next-line @typescript-eslint/unbound-method\n  xhrproto.send = new Proxy(xhrproto.send, {\n    apply(originalSend, sendThisArg, sendArgArray) {\n      const sentryXhrData = sendThisArg[SENTRY_XHR_DATA_KEY];\n\n      if (!sentryXhrData) {\n        return originalSend.apply(sendThisArg, sendArgArray);\n      }\n\n      if (sendArgArray[0] !== undefined) {\n        sentryXhrData.body = sendArgArray[0];\n      }\n\n      const handlerData = {\n        startTimestamp: timestampInSeconds() * 1000,\n        xhr: sendThisArg,\n      };\n      triggerHandlers('xhr', handlerData);\n\n      return originalSend.apply(sendThisArg, sendArgArray);\n    },\n  });\n}\n\n/**\n * Parses the URL argument of a XHR method to a string.\n *\n * See: https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/open#url\n * url: A string or any other object with a stringifier — including a URL object — that provides the URL of the resource to send the request to.\n *\n * @param url - The URL argument of an XHR method\n * @returns The parsed URL string or undefined if the URL is invalid\n */\nfunction parseXhrUrlArg(url) {\n  if (isString(url)) {\n    return url;\n  }\n\n  try {\n    // If the passed in argument is not a string, it should have a `toString` method as a stringifier.\n    // If that fails, we just return undefined (like in IE11 where URL is not available)\n    return (url ).toString();\n  } catch {} // eslint-disable-line no-empty\n\n  return undefined;\n}\n\nexport { SENTRY_XHR_DATA_KEY, addXhrInstrumentationHandler, instrumentXHR };\n//# sourceMappingURL=xhr.js.map\n","import { createTransport, rejectedSyncPromise } from '@sentry/core';\nimport { getNativeImplementation, clearCachedImplementation } from '@sentry-internal/browser-utils';\n\n/**\n * Creates a Transport that uses the Fetch API to send events to Sentry.\n */\nfunction makeFetchTransport(\n  options,\n  nativeFetch = getNativeImplementation('fetch'),\n) {\n  let pendingBodySize = 0;\n  let pendingCount = 0;\n\n  function makeRequest(request) {\n    const requestSize = request.body.length;\n    pendingBodySize += requestSize;\n    pendingCount++;\n\n    const requestOptions = {\n      body: request.body,\n      method: 'POST',\n      referrerPolicy: 'strict-origin',\n      headers: options.headers,\n      // Outgoing requests are usually cancelled when navigating to a different page, causing a \"TypeError: Failed to\n      // fetch\" error and sending a \"network_error\" client-outcome - in Chrome, the request status shows \"(cancelled)\".\n      // The `keepalive` flag keeps outgoing requests alive, even when switching pages. We want this since we're\n      // frequently sending events right before the user is switching pages (eg. when finishing navigation transactions).\n      // Gotchas:\n      // - `keepalive` isn't supported by Firefox\n      // - As per spec (https://fetch.spec.whatwg.org/#http-network-or-cache-fetch):\n      //   If the sum of contentLength and inflightKeepaliveBytes is greater than 64 kibibytes, then return a network error.\n      //   We will therefore only activate the flag when we're below that limit.\n      // There is also a limit of requests that can be open at the same time, so we also limit this to 15\n      // See https://github.com/getsentry/sentry-javascript/pull/7553 for details\n      keepalive: pendingBodySize <= 60000 && pendingCount < 15,\n      ...options.fetchOptions,\n    };\n\n    if (!nativeFetch) {\n      clearCachedImplementation('fetch');\n      return rejectedSyncPromise('No fetch implementation available');\n    }\n\n    try {\n      // Note: We do not need to suppress tracing here, becasue we are using the native fetch, instead of our wrapped one.\n      return nativeFetch(options.url, requestOptions).then(response => {\n        pendingBodySize -= requestSize;\n        pendingCount--;\n        return {\n          statusCode: response.status,\n          headers: {\n            'x-sentry-rate-limits': response.headers.get('X-Sentry-Rate-Limits'),\n            'retry-after': response.headers.get('Retry-After'),\n          },\n        };\n      });\n    } catch (e) {\n      clearCachedImplementation('fetch');\n      pendingBodySize -= requestSize;\n      pendingCount--;\n      return rejectedSyncPromise(e);\n    }\n  }\n\n  return createTransport(options, makeRequest);\n}\n\nexport { makeFetchTransport };\n//# sourceMappingURL=fetch.js.map\n","import { createStackParser, UNKNOWN_FUNCTION } from '@sentry/core';\n\nconst OPERA10_PRIORITY = 10;\nconst OPERA11_PRIORITY = 20;\nconst CHROME_PRIORITY = 30;\nconst WINJS_PRIORITY = 40;\nconst GECKO_PRIORITY = 50;\n\nfunction createFrame(filename, func, lineno, colno) {\n  const frame = {\n    filename,\n    function: func === '<anonymous>' ? UNKNOWN_FUNCTION : func,\n    in_app: true, // All browser frames are considered in_app\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// This regex matches frames that have no function name (ie. are at the top level of a module).\n// For example \"at http://localhost:5000//script.js:1:126\"\n// Frames _with_ function names usually look as follows: \"at commitLayoutEffects (react-dom.development.js:23426:1)\"\nconst chromeRegexNoFnName = /^\\s*at (\\S+?)(?::(\\d+))(?::(\\d+))\\s*$/i;\n\n// This regex matches all the frames that have a function name.\nconst chromeRegex =\n  /^\\s*at (?:(.+?\\)(?: \\[.+\\])?|.*?) ?\\((?:address at )?)?(?:async )?((?:<anonymous>|[-a-z]+:|.*bundle|\\/)?.*?)(?::(\\d+))?(?::(\\d+))?\\)?\\s*$/i;\n\nconst chromeEvalRegex = /\\((\\S*)(?::(\\d+))(?::(\\d+))\\)/;\n\n// Matches stack frames with data URIs instead of filename so we can still get the function name\n// Example: \"at dynamicFn (data:application/javascript,export function dynamicFn() {...\"\nconst chromeDataUriRegex = /at (.+?) ?\\(data:(.+?),/;\n\n// Chromium based browsers: Chrome, Brave, new Opera, new Edge\n// We cannot call this variable `chrome` because it can conflict with global `chrome` variable in certain environments\n// See: https://github.com/getsentry/sentry-javascript/issues/6880\nconst chromeStackParserFn = line => {\n  const dataUriMatch = line.match(chromeDataUriRegex);\n  if (dataUriMatch) {\n    return {\n      filename: `<data:${dataUriMatch[2]}>`,\n      function: dataUriMatch[1],\n    };\n  }\n\n  // If the stack line has no function name, we need to parse it differently\n  const noFnParts = chromeRegexNoFnName.exec(line) ;\n\n  if (noFnParts) {\n    const [, filename, line, col] = noFnParts;\n    return createFrame(filename, UNKNOWN_FUNCTION, +line, +col);\n  }\n\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\nconst chromeStackLineParser = [CHROME_PRIORITY, chromeStackParserFn];\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*(.*?)(?:\\((.*?)\\))?(?:^|@)?((?:[-a-z]+)?:\\/.*?|\\[native code\\]|[^@]*(?:bundle|\\d+\\.js)|\\/[\\w\\-. /=]+)(?::(\\d+))?(?::(\\d+))?\\s*$/i;\nconst geckoEvalRegex = /(\\S+) line (\\d+)(?: > eval line \\d+)* > eval/i;\n\nconst gecko = 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\nconst geckoStackLineParser = [GECKO_PRIORITY, gecko];\n\nconst winjsRegex = /^\\s*at (?:((?:\\[object object\\])?.+) )?\\(?((?:[-a-z]+):.*?):(\\d+)(?::(\\d+))?\\)?\\s*$/i;\n\nconst winjs = 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\nconst winjsStackLineParser = [WINJS_PRIORITY, winjs];\n\nconst opera10Regex = / line (\\d+).*script (?:in )?(\\S+)(?:: in function (\\S+))?$/i;\n\nconst opera10 = line => {\n  const parts = opera10Regex.exec(line) ;\n  return parts ? createFrame(parts[2], parts[3] || UNKNOWN_FUNCTION, +parts[1]) : undefined;\n};\n\nconst opera10StackLineParser = [OPERA10_PRIORITY, opera10];\n\nconst opera11Regex =\n  / line (\\d+), column (\\d+)\\s*(?:in (?:<anonymous function: ([^>]+)>|([^)]+))\\(.*\\))? in (.*):\\s*$/i;\n\nconst opera11 = line => {\n  const parts = opera11Regex.exec(line) ;\n  return parts ? createFrame(parts[5], parts[3] || parts[4] || UNKNOWN_FUNCTION, +parts[1], +parts[2]) : undefined;\n};\n\nconst opera11StackLineParser = [OPERA11_PRIORITY, opera11];\n\nconst defaultStackLineParsers = [chromeStackLineParser, geckoStackLineParser];\n\nconst 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, filename) => {\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\nexport { chromeStackLineParser, defaultStackLineParsers, defaultStackParser, geckoStackLineParser, opera10StackLineParser, opera11StackLineParser, winjsStackLineParser };\n//# sourceMappingURL=stack-parsers.js.map\n","/**\n * This serves as a build time flag that will be true by default, but false in non-debug builds or if users replace `__SENTRY_DEBUG__` in their generated code.\n *\n * ATTENTION: This constant must never cross package boundaries (i.e. be exported) to guarantee that it can be used for tree shaking.\n */\nconst DEBUG_BUILD = (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__);\n\nexport { DEBUG_BUILD };\n//# sourceMappingURL=debug-build.js.map\n","import { defineIntegration, addConsoleInstrumentationHandler, addFetchInstrumentationHandler, getClient, safeJoin, severityLevelFromString, addBreadcrumb, debug, htmlTreeAsString, getComponentName, getBreadcrumbLogLevelFromHttpStatusCode, parseUrl, getEventDescription } from '@sentry/core';\nimport { addClickKeypressInstrumentationHandler, addXhrInstrumentationHandler, addHistoryInstrumentationHandler, SENTRY_XHR_DATA_KEY } from '@sentry-internal/browser-utils';\nimport { DEBUG_BUILD } from '../debug-build.js';\nimport { WINDOW } from '../helpers.js';\n\n/** maxStringLength gets capped to prevent 100 breadcrumbs exceeding 1MB event payload size */\nconst MAX_ALLOWED_STRING_LENGTH = 1024;\n\nconst INTEGRATION_NAME = 'Breadcrumbs';\n\nconst _breadcrumbsIntegration = ((options = {}) => {\n  const _options = {\n    console: true,\n    dom: true,\n    fetch: true,\n    history: true,\n    sentry: true,\n    xhr: true,\n    ...options,\n  };\n\n  return {\n    name: INTEGRATION_NAME,\n    setup(client) {\n      // TODO(v11): Remove this functionality and use `consoleIntegration` from @sentry/core instead.\n      if (_options.console) {\n        addConsoleInstrumentationHandler(_getConsoleBreadcrumbHandler(client));\n      }\n      if (_options.dom) {\n        addClickKeypressInstrumentationHandler(_getDomBreadcrumbHandler(client, _options.dom));\n      }\n      if (_options.xhr) {\n        addXhrInstrumentationHandler(_getXhrBreadcrumbHandler(client));\n      }\n      if (_options.fetch) {\n        addFetchInstrumentationHandler(_getFetchBreadcrumbHandler(client));\n      }\n      if (_options.history) {\n        addHistoryInstrumentationHandler(_getHistoryBreadcrumbHandler(client));\n      }\n      if (_options.sentry) {\n        client.on('beforeSendEvent', _getSentryBreadcrumbHandler(client));\n      }\n    },\n  };\n}) ;\n\nconst breadcrumbsIntegration = defineIntegration(_breadcrumbsIntegration);\n\n/**\n * Adds a breadcrumb for Sentry events or transactions if this option is enabled.\n */\nfunction _getSentryBreadcrumbHandler(client) {\n  return function addSentryBreadcrumb(event) {\n    if (getClient() !== client) {\n      return;\n    }\n\n    addBreadcrumb(\n      {\n        category: `sentry.${event.type === 'transaction' ? 'transaction' : 'event'}`,\n        event_id: event.event_id,\n        level: event.level,\n        message: getEventDescription(event),\n      },\n      {\n        event,\n      },\n    );\n  };\n}\n\n/**\n * A HOC that creates 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 */\nfunction _getDomBreadcrumbHandler(\n  client,\n  dom,\n) {\n  return function _innerDomBreadcrumb(handlerData) {\n    if (getClient() !== client) {\n      return;\n    }\n\n    let target;\n    let componentName;\n    let keyAttrs = typeof dom === 'object' ? dom.serializeAttribute : undefined;\n\n    let maxStringLength =\n      typeof dom === 'object' && typeof dom.maxStringLength === 'number' ? dom.maxStringLength : undefined;\n    if (maxStringLength && maxStringLength > MAX_ALLOWED_STRING_LENGTH) {\n      DEBUG_BUILD &&\n        debug.warn(\n          `\\`dom.maxStringLength\\` cannot exceed ${MAX_ALLOWED_STRING_LENGTH}, but a value of ${maxStringLength} was configured. Sentry will use ${MAX_ALLOWED_STRING_LENGTH} instead.`,\n        );\n      maxStringLength = MAX_ALLOWED_STRING_LENGTH;\n    }\n\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      const event = handlerData.event ;\n      const element = _isEvent(event) ? event.target : event;\n\n      target = htmlTreeAsString(element, { keyAttrs, maxStringLength });\n      componentName = getComponentName(element);\n    } catch {\n      target = '<unknown>';\n    }\n\n    if (target.length === 0) {\n      return;\n    }\n\n    const breadcrumb = {\n      category: `ui.${handlerData.name}`,\n      message: target,\n    };\n\n    if (componentName) {\n      breadcrumb.data = { 'ui.component_name': componentName };\n    }\n\n    addBreadcrumb(breadcrumb, {\n      event: handlerData.event,\n      name: handlerData.name,\n      global: handlerData.global,\n    });\n  };\n}\n\n/**\n * Creates breadcrumbs from console API calls\n */\nfunction _getConsoleBreadcrumbHandler(client) {\n  return function _consoleBreadcrumb(handlerData) {\n    if (getClient() !== client) {\n      return;\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    addBreadcrumb(breadcrumb, {\n      input: handlerData.args,\n      level: handlerData.level,\n    });\n  };\n}\n\n/**\n * Creates breadcrumbs from XHR API calls\n */\nfunction _getXhrBreadcrumbHandler(client) {\n  return function _xhrBreadcrumb(handlerData) {\n    if (getClient() !== client) {\n      return;\n    }\n\n    const { startTimestamp, endTimestamp } = handlerData;\n\n    const sentryXhrData = handlerData.xhr[SENTRY_XHR_DATA_KEY];\n\n    // We only capture complete, non-sentry requests\n    if (!startTimestamp || !endTimestamp || !sentryXhrData) {\n      return;\n    }\n\n    const { method, url, status_code, body } = sentryXhrData;\n\n    const data = {\n      method,\n      url,\n      status_code,\n    };\n\n    const hint = {\n      xhr: handlerData.xhr,\n      input: body,\n      startTimestamp,\n      endTimestamp,\n    };\n\n    const breadcrumb = {\n      category: 'xhr',\n      data,\n      type: 'http',\n      level: getBreadcrumbLogLevelFromHttpStatusCode(status_code),\n    };\n\n    client.emit('beforeOutgoingRequestBreadcrumb', breadcrumb, hint );\n\n    addBreadcrumb(breadcrumb, hint);\n  };\n}\n\n/**\n * Creates breadcrumbs from fetch API calls\n */\nfunction _getFetchBreadcrumbHandler(client) {\n  return function _fetchBreadcrumb(handlerData) {\n    if (getClient() !== client) {\n      return;\n    }\n\n    const { startTimestamp, endTimestamp } = handlerData;\n\n    // We only capture complete fetch requests\n    if (!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    ({\n      method: handlerData.fetchData.method,\n      url: handlerData.fetchData.url,\n    });\n\n    if (handlerData.error) {\n      const data = handlerData.fetchData;\n      const hint = {\n        data: handlerData.error,\n        input: handlerData.args,\n        startTimestamp,\n        endTimestamp,\n      };\n\n      const breadcrumb = {\n        category: 'fetch',\n        data,\n        level: 'error',\n        type: 'http',\n      } ;\n\n      client.emit('beforeOutgoingRequestBreadcrumb', breadcrumb, hint );\n\n      addBreadcrumb(breadcrumb, hint);\n    } else {\n      const response = handlerData.response ;\n      const data = {\n        ...handlerData.fetchData,\n        status_code: response?.status,\n      };\n\n      handlerData.fetchData.request_body_size;\n      handlerData.fetchData.response_body_size;\n      response?.status;\n\n      const hint = {\n        input: handlerData.args,\n        response,\n        startTimestamp,\n        endTimestamp,\n      };\n\n      const breadcrumb = {\n        category: 'fetch',\n        data,\n        type: 'http',\n        level: getBreadcrumbLogLevelFromHttpStatusCode(data.status_code),\n      };\n\n      client.emit('beforeOutgoingRequestBreadcrumb', breadcrumb, hint );\n\n      addBreadcrumb(breadcrumb, hint);\n    }\n  };\n}\n\n/**\n * Creates breadcrumbs from history API calls\n */\nfunction _getHistoryBreadcrumbHandler(client) {\n  return function _historyBreadcrumb(handlerData) {\n    if (getClient() !== client) {\n      return;\n    }\n\n    let from = handlerData.from;\n    let to = handlerData.to;\n    const parsedLoc = parseUrl(WINDOW.location.href);\n    let parsedFrom = from ? parseUrl(from) : undefined;\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    addBreadcrumb({\n      category: 'navigation',\n      data: {\n        from,\n        to,\n      },\n    });\n  };\n}\n\nfunction _isEvent(event) {\n  return !!event && !!(event ).target;\n}\n\nexport { breadcrumbsIntegration };\n//# sourceMappingURL=breadcrumbs.js.map\n","import { defineIntegration, fill, getFunctionName, getOriginalFunction } from '@sentry/core';\nimport { WINDOW, wrap } from '../helpers.js';\n\nconst DEFAULT_EVENT_TARGET = [\n  'EventTarget',\n  'Window',\n  'Node',\n  'ApplicationCache',\n  'AudioTrackList',\n  'BroadcastChannel',\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  'SharedWorker',\n  'TextTrack',\n  'TextTrackCue',\n  'TextTrackList',\n  'WebSocket',\n  'WebSocketWorker',\n  'Worker',\n  'XMLHttpRequest',\n  'XMLHttpRequestEventTarget',\n  'XMLHttpRequestUpload',\n];\n\nconst INTEGRATION_NAME = 'BrowserApiErrors';\n\nconst _browserApiErrorsIntegration = ((options = {}) => {\n  const _options = {\n    XMLHttpRequest: true,\n    eventTarget: true,\n    requestAnimationFrame: true,\n    setInterval: true,\n    setTimeout: true,\n    unregisterOriginalCallbacks: false,\n    ...options,\n  };\n\n  return {\n    name: INTEGRATION_NAME,\n    // TODO: This currently only works for the first client this is setup\n    // We may want to adjust this to check for client etc.\n    setupOnce() {\n      if (_options.setTimeout) {\n        fill(WINDOW, 'setTimeout', _wrapTimeFunction);\n      }\n\n      if (_options.setInterval) {\n        fill(WINDOW, 'setInterval', _wrapTimeFunction);\n      }\n\n      if (_options.requestAnimationFrame) {\n        fill(WINDOW, 'requestAnimationFrame', _wrapRAF);\n      }\n\n      if (_options.XMLHttpRequest && 'XMLHttpRequest' in WINDOW) {\n        fill(XMLHttpRequest.prototype, 'send', _wrapXHR);\n      }\n\n      const eventTargetOption = _options.eventTarget;\n      if (eventTargetOption) {\n        const eventTarget = Array.isArray(eventTargetOption) ? eventTargetOption : DEFAULT_EVENT_TARGET;\n        eventTarget.forEach(target => _wrapEventTarget(target, _options));\n      }\n    },\n  };\n}) ;\n\n/**\n * Wrap timer functions and event targets to catch errors and provide better meta data.\n */\nconst browserApiErrorsIntegration = defineIntegration(_browserApiErrorsIntegration);\n\nfunction _wrapTimeFunction(original) {\n  return function ( ...args) {\n    const originalCallback = args[0];\n    args[0] = wrap(originalCallback, {\n      mechanism: {\n        data: { function: getFunctionName(original) },\n        handled: false,\n        type: 'instrument',\n      },\n    });\n    return original.apply(this, args);\n  };\n}\n\nfunction _wrapRAF(original) {\n  return function ( callback) {\n    return original.apply(this, [\n      wrap(callback, {\n        mechanism: {\n          data: {\n            function: 'requestAnimationFrame',\n            handler: getFunctionName(original),\n          },\n          handled: false,\n          type: 'instrument',\n        },\n      }),\n    ]);\n  };\n}\n\nfunction _wrapXHR(originalSend) {\n  return function ( ...args) {\n    // eslint-disable-next-line @typescript-eslint/no-this-alias\n    const xhr = this;\n    const xmlHttpRequestProps = ['onload', 'onerror', 'onprogress', 'onreadystatechange'];\n\n    xmlHttpRequestProps.forEach(prop => {\n      if (prop in xhr && typeof xhr[prop] === 'function') {\n        fill(xhr, prop, function (original) {\n          const wrapOptions = {\n            mechanism: {\n              data: {\n                function: prop,\n                handler: getFunctionName(original),\n              },\n              handled: false,\n              type: 'instrument',\n            },\n          };\n\n          // If Instrument integration has been called before BrowserApiErrors, 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\nfunction _wrapEventTarget(target, integrationOptions) {\n  const globalObject = WINDOW ;\n  const proto = globalObject[target]?.prototype;\n\n  // eslint-disable-next-line no-prototype-builtins\n  if (!proto?.hasOwnProperty?.('addEventListener')) {\n    return;\n  }\n\n  fill(proto, 'addEventListener', function (original)\n\n {\n    return function ( eventName, fn, options) {\n      try {\n        if (isEventListenerObject(fn)) {\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: false,\n              type: 'instrument',\n            },\n          });\n        }\n      } catch {\n        // can sometimes get 'Permission denied to access property \"handle Event'\n      }\n\n      if (integrationOptions.unregisterOriginalCallbacks) {\n        unregisterOriginalCallback(this, eventName, fn);\n      }\n\n      return original.apply(this, [\n        eventName,\n        wrap(fn, {\n          mechanism: {\n            data: {\n              function: 'addEventListener',\n              handler: getFunctionName(fn),\n              target,\n            },\n            handled: false,\n            type: 'instrument',\n          },\n        }),\n        options,\n      ]);\n    };\n  });\n\n  fill(proto, 'removeEventListener', function (originalRemoveEventListener)\n\n {\n    return function ( eventName, fn, options) {\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      try {\n        const originalEventHandler = (fn ).__sentry_wrapped__;\n        if (originalEventHandler) {\n          originalRemoveEventListener.call(this, eventName, originalEventHandler, options);\n        }\n      } catch {\n        // ignore, accessing __sentry_wrapped__ will throw in some Selenium environments\n      }\n      return originalRemoveEventListener.call(this, eventName, fn, options);\n    };\n  });\n}\n\nfunction isEventListenerObject(obj) {\n  return typeof (obj ).handleEvent === 'function';\n}\n\nfunction unregisterOriginalCallback(target, eventName, fn) {\n  if (\n    target &&\n    typeof target === 'object' &&\n    'removeEventListener' in target &&\n    typeof target.removeEventListener === 'function'\n  ) {\n    target.removeEventListener(eventName, fn);\n  }\n}\n\nexport { browserApiErrorsIntegration };\n//# sourceMappingURL=browserapierrors.js.map\n","import { defineIntegration, debug, startSession, captureSession } from '@sentry/core';\nimport { addHistoryInstrumentationHandler } from '@sentry-internal/browser-utils';\nimport { DEBUG_BUILD } from '../debug-build.js';\nimport { WINDOW } from '../helpers.js';\n\n/**\n * When added, automatically creates sessions which allow you to track adoption and crashes (crash free rate) in your Releases in Sentry.\n * More information: https://docs.sentry.io/product/releases/health/\n *\n * Note: In order for session tracking to work, you need to set up Releases: https://docs.sentry.io/product/releases/\n */\nconst browserSessionIntegration = defineIntegration(() => {\n  return {\n    name: 'BrowserSession',\n    setupOnce() {\n      if (typeof WINDOW.document === 'undefined') {\n        DEBUG_BUILD &&\n          debug.warn('Using the `browserSessionIntegration` in non-browser environments is not supported.');\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      startSession({ ignoreDuration: true });\n      captureSession();\n\n      // We want to create a session for every navigation as well\n      addHistoryInstrumentationHandler(({ 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          startSession({ ignoreDuration: true });\n          captureSession();\n        }\n      });\n    },\n  };\n});\n\nexport { browserSessionIntegration };\n//# sourceMappingURL=browsersession.js.map\n","import { defineIntegration, addGlobalErrorInstrumentationHandler, getClient, captureEvent, debug, addGlobalUnhandledRejectionInstrumentationHandler, isPrimitive, getLocationHref, UNKNOWN_FUNCTION, isString } from '@sentry/core';\nimport { DEBUG_BUILD } from '../debug-build.js';\nimport { eventFromUnknownInput } from '../eventbuilder.js';\nimport { shouldIgnoreOnError } from '../helpers.js';\n\nconst INTEGRATION_NAME = 'GlobalHandlers';\n\nconst _globalHandlersIntegration = ((options = {}) => {\n  const _options = {\n    onerror: true,\n    onunhandledrejection: true,\n    ...options,\n  };\n\n  return {\n    name: INTEGRATION_NAME,\n    setupOnce() {\n      Error.stackTraceLimit = 50;\n    },\n    setup(client) {\n      if (_options.onerror) {\n        _installGlobalOnErrorHandler(client);\n        globalHandlerLog('onerror');\n      }\n      if (_options.onunhandledrejection) {\n        _installGlobalOnUnhandledRejectionHandler(client);\n        globalHandlerLog('onunhandledrejection');\n      }\n    },\n  };\n}) ;\n\nconst globalHandlersIntegration = defineIntegration(_globalHandlersIntegration);\n\nfunction _installGlobalOnErrorHandler(client) {\n  addGlobalErrorInstrumentationHandler(data => {\n    const { stackParser, attachStacktrace } = getOptions();\n\n    if (getClient() !== client || shouldIgnoreOnError()) {\n      return;\n    }\n\n    const { msg, url, line, column, error } = data;\n\n    const event = _enhanceEventWithInitialFrame(\n      eventFromUnknownInput(stackParser, error || msg, undefined, attachStacktrace, false),\n      url,\n      line,\n      column,\n    );\n\n    event.level = 'error';\n\n    captureEvent(event, {\n      originalException: error,\n      mechanism: {\n        handled: false,\n        type: 'auto.browser.global_handlers.onerror',\n      },\n    });\n  });\n}\n\nfunction _installGlobalOnUnhandledRejectionHandler(client) {\n  addGlobalUnhandledRejectionInstrumentationHandler(e => {\n    const { stackParser, attachStacktrace } = getOptions();\n\n    if (getClient() !== client || shouldIgnoreOnError()) {\n      return;\n    }\n\n    const error = _getUnhandledRejectionError(e );\n\n    const event = isPrimitive(error)\n      ? _eventFromRejectionWithPrimitive(error)\n      : eventFromUnknownInput(stackParser, error, undefined, attachStacktrace, true);\n\n    event.level = 'error';\n\n    captureEvent(event, {\n      originalException: error,\n      mechanism: {\n        handled: false,\n        type: 'auto.browser.global_handlers.onunhandledrejection',\n      },\n    });\n  });\n}\n\nfunction _getUnhandledRejectionError(error) {\n  if (isPrimitive(error)) {\n    return error;\n  }\n\n  // dig the object of the rejection out of known event types\n  try {\n\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 (error )) {\n      return (error ).reason;\n    }\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    if ('detail' in (error ) && 'reason' in (error ).detail) {\n      return (error ).detail.reason;\n    }\n  } catch {} // eslint-disable-line no-empty\n\n  return error;\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) {\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\nfunction _enhanceEventWithInitialFrame(\n  event,\n  url,\n  line,\n  column,\n) {\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 = column;\n  const lineno = line;\n  const filename = getFilenameFromUrl(url) ?? getLocationHref();\n\n  // event.exception.values[0].stacktrace.frames\n  if (ev0sf.length === 0) {\n    ev0sf.push({\n      colno,\n      filename,\n      function: UNKNOWN_FUNCTION,\n      in_app: true,\n      lineno,\n    });\n  }\n\n  return event;\n}\n\nfunction globalHandlerLog(type) {\n  DEBUG_BUILD && debug.log(`Global Handler attached: ${type}`);\n}\n\nfunction getOptions() {\n  const client = getClient();\n  const options = client?.getOptions() || {\n    stackParser: () => [],\n    attachStacktrace: false,\n  };\n  return options;\n}\n\nfunction getFilenameFromUrl(url) {\n  if (!isString(url) || url.length === 0) {\n    return undefined;\n  }\n\n  // stack frame urls can be data urls, for example when initializing a Worker with a base64 encoded script\n  // in this case we just show the data prefix and mime type to avoid too long raw data urls\n  if (url.startsWith('data:')) {\n    const match = url.match(/^data:([^;]+)/);\n    const mimeType = match ? match[1] : 'text/javascript';\n    const isBase64 = url.includes('base64,');\n    return `<data:${mimeType}${isBase64 ? ',base64' : ''}>`;\n  }\n\n  return url.slice(0, 1024);\n}\n\nexport { globalHandlersIntegration };\n//# sourceMappingURL=globalhandlers.js.map\n","import { defineIntegration } from '@sentry/core';\nimport { WINDOW, getHttpRequestData } from '../helpers.js';\n\n/**\n * Collects information about HTTP request headers and\n * attaches them to the event.\n */\nconst httpContextIntegration = defineIntegration(() => {\n  return {\n    name: 'HttpContext',\n    preprocessEvent(event) {\n      // if none of the information we want exists, don't bother\n      if (!WINDOW.navigator && !WINDOW.location && !WINDOW.document) {\n        return;\n      }\n\n      const reqData = getHttpRequestData();\n      const headers = {\n        ...reqData.headers,\n        ...event.request?.headers,\n      };\n\n      event.request = {\n        ...reqData,\n        ...event.request,\n        headers,\n      };\n    },\n  };\n});\n\nexport { httpContextIntegration };\n//# sourceMappingURL=httpcontext.js.map\n","import { defineIntegration, applyAggregateErrorsToEvent } from '@sentry/core';\nimport { exceptionFromError } from '../eventbuilder.js';\n\nconst DEFAULT_KEY = 'cause';\nconst DEFAULT_LIMIT = 5;\n\nconst INTEGRATION_NAME = 'LinkedErrors';\n\nconst _linkedErrorsIntegration = ((options = {}) => {\n  const limit = options.limit || DEFAULT_LIMIT;\n  const key = options.key || DEFAULT_KEY;\n\n  return {\n    name: INTEGRATION_NAME,\n    preprocessEvent(event, hint, client) {\n      const options = client.getOptions();\n\n      applyAggregateErrorsToEvent(\n        // This differs from the LinkedErrors integration in core by using a different exceptionFromError function\n        exceptionFromError,\n        options.stackParser,\n        key,\n        limit,\n        event,\n        hint,\n      );\n    },\n  };\n}) ;\n\n/**\n * Aggregrate linked errors in an event.\n */\nconst linkedErrorsIntegration = defineIntegration(_linkedErrorsIntegration);\n\nexport { linkedErrorsIntegration };\n//# sourceMappingURL=linkederrors.js.map\n","import { consoleSandbox, getLocationHref } from '@sentry/core';\nimport { DEBUG_BUILD } from '../debug-build.js';\nimport { WINDOW } from '../helpers.js';\n\n/**\n * Returns true if the SDK is running in an embedded browser extension.\n * Stand-alone browser extensions (which do not share the same data as the main browser page) are fine.\n */\nfunction checkAndWarnIfIsEmbeddedBrowserExtension() {\n  if (_isEmbeddedBrowserExtension()) {\n    if (DEBUG_BUILD) {\n      consoleSandbox(() => {\n        // eslint-disable-next-line no-console\n        console.error(\n          '[Sentry] You cannot use Sentry.init() in a browser extension, see: https://docs.sentry.io/platforms/javascript/best-practices/browser-extensions/',\n        );\n      });\n    }\n\n    return true;\n  }\n\n  return false;\n}\n\nfunction _isEmbeddedBrowserExtension() {\n  if (typeof WINDOW.window === 'undefined') {\n    // No need to show the error if we're not in a browser window environment (e.g. service workers)\n    return false;\n  }\n\n  const _window = WINDOW ;\n\n  // Running the SDK in NW.js, which appears like a browser extension but isn't, is also fine\n  // see: https://github.com/getsentry/sentry-javascript/issues/12668\n  if (_window.nw) {\n    return false;\n  }\n\n  const extensionObject = _window['chrome'] || _window['browser'];\n\n  if (!extensionObject?.runtime?.id) {\n    return false;\n  }\n\n  const href = getLocationHref();\n  const extensionProtocols = ['chrome-extension', 'moz-extension', 'ms-browser-extension', 'safari-web-extension'];\n\n  // Running the SDK in a dedicated extension page and calling Sentry.init is fine; no risk of data leakage\n  const isDedicatedExtensionPage =\n    WINDOW === WINDOW.top && extensionProtocols.some(protocol => href.startsWith(`${protocol}://`));\n\n  return !isDedicatedExtensionPage;\n}\n\nexport { checkAndWarnIfIsEmbeddedBrowserExtension };\n//# sourceMappingURL=detectBrowserExtension.js.map\n","import { inboundFiltersIntegration, functionToStringIntegration, dedupeIntegration, getIntegrationsToSetup, stackParserFromStackParserOptions, initAndBind } from '@sentry/core';\nimport { BrowserClient } from './client.js';\nimport { breadcrumbsIntegration } from './integrations/breadcrumbs.js';\nimport { browserApiErrorsIntegration } from './integrations/browserapierrors.js';\nimport { browserSessionIntegration } from './integrations/browsersession.js';\nimport { globalHandlersIntegration } from './integrations/globalhandlers.js';\nimport { httpContextIntegration } from './integrations/httpcontext.js';\nimport { linkedErrorsIntegration } from './integrations/linkederrors.js';\nimport { defaultStackParser } from './stack-parsers.js';\nimport { makeFetchTransport } from './transports/fetch.js';\nimport { checkAndWarnIfIsEmbeddedBrowserExtension } from './utils/detectBrowserExtension.js';\n\n/** Get the default integrations for the browser SDK. */\nfunction getDefaultIntegrations(_options) {\n  /**\n   * Note: Please make sure this stays in sync with Angular SDK, which re-exports\n   * `getDefaultIntegrations` but with an adjusted set of integrations.\n   */\n  return [\n    // TODO(v11): Replace with `eventFiltersIntegration` once we remove the deprecated `inboundFiltersIntegration`\n    // eslint-disable-next-line deprecation/deprecation\n    inboundFiltersIntegration(),\n    functionToStringIntegration(),\n    browserApiErrorsIntegration(),\n    breadcrumbsIntegration(),\n    globalHandlersIntegration(),\n    linkedErrorsIntegration(),\n    dedupeIntegration(),\n    httpContextIntegration(),\n    browserSessionIntegration(),\n  ];\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 { 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 */\nfunction init(options = {}) {\n  const shouldDisableBecauseIsBrowserExtenstion =\n    !options.skipBrowserExtensionCheck && checkAndWarnIfIsEmbeddedBrowserExtension();\n\n  const clientOptions = {\n    ...options,\n    enabled: shouldDisableBecauseIsBrowserExtenstion ? false : options.enabled,\n    stackParser: stackParserFromStackParserOptions(options.stackParser || defaultStackParser),\n    integrations: getIntegrationsToSetup({\n      integrations: options.integrations,\n      defaultIntegrations:\n        options.defaultIntegrations == null ? getDefaultIntegrations() : options.defaultIntegrations,\n    }),\n    transport: options.transport || makeFetchTransport,\n  };\n  return initAndBind(BrowserClient, clientOptions);\n}\n\n/**\n * This function is here to be API compatible with the loader.\n * @hidden\n */\nfunction forceLoad() {\n  // Noop\n}\n\n/**\n * This function is here to be API compatible with the loader.\n * @hidden\n */\nfunction onLoad(callback) {\n  callback();\n}\n\nexport { forceLoad, getDefaultIntegrations, init, onLoad };\n//# sourceMappingURL=sdk.js.map\n","const copyProperty = (to, from, property, ignoreNonConfigurable) => {\n\t// `Function#length` should reflect the parameters of `to` not `from` since we keep its body.\n\t// `Function#prototype` is non-writable and non-configurable so can never be modified.\n\tif (property === 'length' || property === 'prototype') {\n\t\treturn;\n\t}\n\n\t// `Function#arguments` and `Function#caller` should not be copied. They were reported to be present in `Reflect.ownKeys` for some devices in React Native (#41), so we explicitly ignore them here.\n\tif (property === 'arguments' || property === 'caller') {\n\t\treturn;\n\t}\n\n\tconst toDescriptor = Object.getOwnPropertyDescriptor(to, property);\n\tconst fromDescriptor = Object.getOwnPropertyDescriptor(from, property);\n\n\tif (!canCopyProperty(toDescriptor, fromDescriptor) && ignoreNonConfigurable) {\n\t\treturn;\n\t}\n\n\tObject.defineProperty(to, property, fromDescriptor);\n};\n\n// `Object.defineProperty()` throws if the property exists, is not configurable and either:\n// - one its descriptors is changed\n// - it is non-writable and its value is changed\nconst canCopyProperty = function (toDescriptor, fromDescriptor) {\n\treturn toDescriptor === undefined || toDescriptor.configurable || (\n\t\ttoDescriptor.writable === fromDescriptor.writable &&\n\t\ttoDescriptor.enumerable === fromDescriptor.enumerable &&\n\t\ttoDescriptor.configurable === fromDescriptor.configurable &&\n\t\t(toDescriptor.writable || toDescriptor.value === fromDescriptor.value)\n\t);\n};\n\nconst changePrototype = (to, from) => {\n\tconst fromPrototype = Object.getPrototypeOf(from);\n\tif (fromPrototype === Object.getPrototypeOf(to)) {\n\t\treturn;\n\t}\n\n\tObject.setPrototypeOf(to, fromPrototype);\n};\n\nconst wrappedToString = (withName, fromBody) => `/* Wrapped ${withName}*/\\n${fromBody}`;\n\nconst toStringDescriptor = Object.getOwnPropertyDescriptor(Function.prototype, 'toString');\nconst toStringName = Object.getOwnPropertyDescriptor(Function.prototype.toString, 'name');\n\n// We call `from.toString()` early (not lazily) to ensure `from` can be garbage collected.\n// We use `bind()` instead of a closure for the same reason.\n// Calling `from.toString()` early also allows caching it in case `to.toString()` is called several times.\nconst changeToString = (to, from, name) => {\n\tconst withName = name === '' ? '' : `with ${name.trim()}() `;\n\tconst newToString = wrappedToString.bind(null, withName, from.toString());\n\t// Ensure `to.toString.toString` is non-enumerable and has the same `same`\n\tObject.defineProperty(newToString, 'name', toStringName);\n\tObject.defineProperty(to, 'toString', {...toStringDescriptor, value: newToString});\n};\n\nexport default function mimicFunction(to, from, {ignoreNonConfigurable = false} = {}) {\n\tconst {name} = to;\n\n\tfor (const property of Reflect.ownKeys(from)) {\n\t\tcopyProperty(to, from, property, ignoreNonConfigurable);\n\t}\n\n\tchangePrototype(to, from);\n\tchangeToString(to, from, name);\n\n\treturn to;\n}\n","import mimicFn from 'mimic-fn';\nconst cacheStore = new WeakMap();\n/**\n[Memoize](https://en.wikipedia.org/wiki/Memoization) functions - An optimization used to speed up consecutive function calls by caching the result of calls with identical input.\n\n@param fn - Function to be memoized.\n\n@example\n```\nimport {setTimeout as delay} from 'node:timer/promises';\nimport pMemoize from 'p-memoize';\nimport got from 'got';\n\nconst memoizedGot = pMemoize(got);\n\nawait memoizedGot('https://sindresorhus.com');\n\n// This call is cached\nawait memoizedGot('https://sindresorhus.com');\n\nawait delay(2000);\n\n// This call is not cached as the cache has expired\nawait memoizedGot('https://sindresorhus.com');\n```\n*/\nexport default function pMemoize(fn, { cacheKey = ([firstArgument]) => firstArgument, cache = new Map(), } = {}) {\n    // Promise objects can't be serialized so we keep track of them internally and only provide their resolved values to `cache`\n    // `Promise<AsyncReturnType<FunctionToMemoize>>` is used instead of `ReturnType<FunctionToMemoize>` because promise properties are not kept\n    const promiseCache = new Map();\n    const memoized = function (...arguments_) {\n        const key = cacheKey(arguments_);\n        if (promiseCache.has(key)) {\n            return promiseCache.get(key);\n        }\n        const promise = (async () => {\n            try {\n                if (cache && await cache.has(key)) {\n                    return (await cache.get(key));\n                }\n                const promise = fn.apply(this, arguments_);\n                const result = await promise;\n                try {\n                    return result;\n                }\n                finally {\n                    if (cache) {\n                        await cache.set(key, result);\n                    }\n                }\n            }\n            finally {\n                promiseCache.delete(key);\n            }\n        })();\n        promiseCache.set(key, promise);\n        return promise;\n    };\n    mimicFn(memoized, fn, {\n        ignoreNonConfigurable: true,\n    });\n    cacheStore.set(memoized, cache);\n    return memoized;\n}\n/**\n- Only class methods and getters/setters can be memoized, not regular functions (they aren't part of the proposal);\n- Only [TypeScript’s decorators](https://www.typescriptlang.org/docs/handbook/decorators.html#parameter-decorators) are supported, not [Babel’s](https://babeljs.io/docs/en/babel-plugin-proposal-decorators), which use a different version of the proposal;\n- Being an experimental feature, they need to be enabled with `--experimentalDecorators`; follow TypeScript’s docs.\n\n@returns A [decorator](https://github.com/tc39/proposal-decorators) to memoize class methods or static class methods.\n\n@example\n```\nimport {pMemoizeDecorator} from 'p-memoize';\n\nclass Example {\n    index = 0\n\n    @pMemoizeDecorator()\n    async counter() {\n        return ++this.index;\n    }\n}\n\nclass ExampleWithOptions {\n    index = 0\n\n    @pMemoizeDecorator()\n    async counter() {\n        return ++this.index;\n    }\n}\n```\n*/\nexport function pMemoizeDecorator(options = {}) {\n    const instanceMap = new WeakMap();\n    return (target, propertyKey, descriptor) => {\n        const input = target[propertyKey]; // eslint-disable-line @typescript-eslint/no-unsafe-assignment\n        if (typeof input !== 'function') {\n            throw new TypeError('The decorated value must be a function');\n        }\n        delete descriptor.value;\n        delete descriptor.writable;\n        descriptor.get = function () {\n            if (!instanceMap.has(this)) {\n                const value = pMemoize(input, options);\n                instanceMap.set(this, value);\n                return value;\n            }\n            return instanceMap.get(this);\n        };\n    };\n}\n/**\nClear all cached data of a memoized function.\n\n@param fn - Memoized function.\n*/\nexport function pMemoizeClear(fn) {\n    if (!cacheStore.has(fn)) {\n        throw new TypeError('Can\\'t clear a function that was not memoized!');\n    }\n    const cache = cacheStore.get(fn);\n    if (!cache) {\n        throw new TypeError('Can\\'t clear a function that doesn\\'t use a cache!');\n    }\n    if (typeof cache.clear !== 'function') {\n        throw new TypeError('The cache Map can\\'t be cleared!');\n    }\n    cache.clear();\n}\n","import { DiscountInfo } from '@/vo'\nimport { debugService } from './debug'\nimport { httpClient } from './http'\nimport { pMemoizeDecorator } from 'p-memoize'\nimport * as Sentry from '@sentry/browser'\n\nexport enum DiscountType {\n  All = 0,\n  PartialSelected = 10,\n}\n\nexport enum PageType {\n  None = 'NONE',\n  Main = 'MAIN',\n  ProductDetail = 'PRODUCT_DETAIL',\n  OrderForm = 'ORDER_FORM',\n  OrderComplete = 'ORDER_COMPLETE',\n}\n\nexport interface SolutionService {\n  initialize({ userID }: { userID: string }): Promise<void>\n\n  getOrder(): Promise<{\n    orderID: string\n  } | null>\n\n  getProductInfo(): Promise<{\n    productID: number\n    priceAmount: number\n  } | null>\n\n  trackOrder(): Promise<void>\n\n  getProductDiscountInfo(): Promise<{\n    productID: number\n    creatorAlias?: string\n    discountInfo: DiscountInfo\n  } | null>\n\n  applyDiscount(): Promise<{\n    discountPrice: number\n    discountRatio: number\n    isNeedCoupon?: boolean\n  } | null>\n\n  getPageType(): Promise<PageType>\n\n  getPayButton(): Promise<\n    Array<{\n      container: string\n      button: string | null\n    }>\n  >\n\n  isAuthorizedUser(): Promise<boolean>\n\n  signIn(params: { phone: string }): Promise<void>\n}\n\nexport class DebugSolutionService implements SolutionService {\n  private _mallID = 'doerscorp'\n\n  private _shopID = 1\n\n  private _userID = 'Hf9ZaDKtwMw'\n\n  public async initialize(_: { userID: string }): Promise<void> {\n    debugService.log('디버그 솔루션 서비스로 초기화되었어요')\n  }\n\n  public async isAuthorizedUser() {\n    return false\n  }\n\n  public async signIn() { }\n\n  public async getPayButton() {\n    const result = [] as Array<{\n      container: string\n      button: string | null\n    }>\n\n    result.push({ container: '#NaverChk_Button', button: null })\n\n    return result\n  }\n\n  public async getPageType() {\n    return PageType.None\n  }\n\n  public async getOrder() {\n    return {\n      orderID: '123',\n    }\n  }\n\n  public async trackOrder(): Promise<void> { }\n\n  public async getProductInfo() {\n    return {\n      productID: 1,\n      priceAmount: 12000,\n    }\n  }\n\n  public async getProductDiscountInfo() {\n    try {\n      const productID = 14\n\n      const response = await httpClient.request({\n        resourceIdentifier: '/cafe24/discount/preview_product/',\n        requestMethod: 'POST',\n        data: {\n          mall_id: this._mallID,\n          shop_no: this._shopID,\n          product_no: productID,\n        },\n      })\n\n      const discountInfo = response.data.discountBlock\n      if (!discountInfo || discountInfo.maximumPercent === 0) {\n        return null\n      }\n\n      return {\n        productID,\n        creatorAlias: response.data.creatorAliasName,\n        discountInfo: {\n          originalPrice: Number(discountInfo.price),\n          maxDiscountPercent: Number(discountInfo.maximumPercent),\n          maxDiscountedPrice: Number(discountInfo.maximumDiscountedPrice),\n          isNeedCoupon: discountInfo.isNeedCoupon,\n          couponDownloadURI: discountInfo.memberLoginUrl,\n          items: discountInfo.details.map((d: any) => ({\n            content: d.title,\n            ...(d.type === 'W' && {\n              discountPrice: Number(d.value),\n            }),\n            ...(d.type === 'P' && {\n              discountPercent: Number(d.value),\n            }),\n          })),\n        },\n      }\n    } catch {\n      return null\n    }\n  }\n\n  public async applyDiscount(): Promise<{\n    discountPrice: number\n    discountRatio: number\n  } | null> {\n    return null\n  }\n}\n\nexport class Cafe24SolutionService implements SolutionService {\n  private static SENT_MALL_MEMBER_ID_KEY = 'zvzo-sent-mall-member-id'\n\n  private static SENT_UID_KEY = 'zvzo-sent-uid'\n\n  private _memberID?: string | null = null\n\n  private _guestID?: string | null = null\n\n  private _shopID?: number\n\n  private _mallID?: string\n\n  private _groupID?: number | null = null\n\n  private _zvzoUserID?: string\n\n  private async getEnsuredMemberID() {\n    return this._memberID || this._guestID\n  }\n\n  public initialize({ userID }: { userID: string }) {\n    this._zvzoUserID = userID\n\n    debugService.log('CAFE24 솔루션 서비스로 초기화되었어요')\n\n    return new Promise<void>((resolve, reject) => {\n      window.CAFE24API.init(import.meta.env.VITE_APP_CAFE24_CLIENT_ID)\n\n      window.CAFE24API.getMemberInfo(async (info) => {\n        if (!info?.id || (!info.id.guest_id && !info.id.member_id)) {\n          reject(new Error('CAFE24 API 에서 멤버 데이터를 받지 못했어요'))\n          return\n        }\n\n        this._guestID = info.id.guest_id || null\n        this._memberID = info.id.member_id || null\n        this._shopID = window.CAFE24API.SHOP_NO\n        this._mallID = window.CAFE24API.MALL_ID\n        this._groupID = info.id.group_no\n\n        resolve(undefined)\n\n        const memberID = await this.getEnsuredMemberID()\n        const [storedMallMemberID, storedUserID] = [\n          localStorage.getItem(Cafe24SolutionService.SENT_MALL_MEMBER_ID_KEY),\n          localStorage.getItem(Cafe24SolutionService.SENT_UID_KEY),\n        ]\n\n        if (\n          storedMallMemberID === memberID &&\n          storedUserID === this._zvzoUserID\n        ) {\n          debugService.log(\n            `이미 서버와 연결된 uid(${storedUserID}), member_id(${storedMallMemberID}) 예요`\n          )\n          return\n        }\n\n        localStorage.setItem(\n          Cafe24SolutionService.SENT_MALL_MEMBER_ID_KEY,\n          memberID || ''\n        )\n\n        localStorage.setItem(\n          Cafe24SolutionService.SENT_UID_KEY,\n          this._zvzoUserID || ''\n        )\n      })\n    })\n  }\n\n  private async isOrderComplete() {\n    const pathRole = document\n      .querySelector('meta[name=\"path_role\"]')\n      ?.getAttribute('content')\n\n    return pathRole === 'ORDER_ORDERRESULT'\n  }\n\n  public async getOrder() {\n    const isOrderComplete = await this.isOrderComplete()\n    if (!isOrderComplete) {\n      return null\n    }\n\n    const orderID = new URLSearchParams(window.location.search).get('order_id')\n    if (!orderID) {\n      return null\n    }\n\n    return {\n      orderID,\n    }\n  }\n\n  public async trackOrder() {\n    const order = await this.getOrder()\n    if (!order) {\n      return\n    }\n\n    debugService.log(`${order.orderID} 주문을 서버로 전송할게요`)\n\n    await httpClient.request({\n      requestMethod: 'POST',\n      resourceIdentifier: '/cafe24/event/order/',\n      data: {\n        mall_id: this._mallID,\n        shop_no: this._shopID,\n        order_id: order.orderID,\n      },\n    })\n  }\n\n  public async getPageType() {\n    const pathRole = document\n      .querySelector('meta[name=\"path_role\"]')\n      ?.getAttribute('content')\n\n    if (pathRole === 'PRODUCT_DETAIL') {\n      return PageType.ProductDetail\n    }\n\n    if (pathRole === 'ORDER_ORDERFORM') {\n      return PageType.OrderForm\n    }\n\n    if (pathRole === 'ORDER_ORDERRESULT') {\n      return PageType.OrderComplete\n    }\n\n    if (pathRole === 'MAIN') {\n      return PageType.Main\n    }\n\n    return PageType.None\n  }\n\n  private async getDiscountMetaInfo(): Promise<{\n    discountType: DiscountType\n    productNos: number[]\n  } | null> {\n    try {\n      const response = await httpClient.request({\n        resourceIdentifier: '/cafe24/discount/meta/',\n        requestMethod: 'GET',\n        params: {\n          mall_id: this._mallID,\n          shop_no: this._shopID,\n        },\n      })\n\n      return response.data\n    } catch {\n      return null\n    }\n  }\n\n  public async getProductInfo() {\n    const pathRole = document\n      .querySelector('meta[name=\"path_role\"]')\n      ?.getAttribute('content')\n\n    if (pathRole !== 'PRODUCT_DETAIL') {\n      return null\n    }\n\n    const [stringPriceAmount, stringProductID] = [\n      document\n        .querySelector('meta[property=\"product:price:amount\"]')\n        ?.getAttribute('content'),\n      document\n        .querySelector('meta[property=\"product:productId\"]')\n        ?.getAttribute('content'),\n    ]\n\n    const [priceAmount, productID] = [\n      Number(stringPriceAmount) || null,\n      Number(stringProductID) || null,\n    ]\n\n    if (!priceAmount || !productID) {\n      return null\n    }\n\n    return {\n      priceAmount,\n      productID,\n    }\n  }\n\n  @pMemoizeDecorator()\n  public async getProductDiscountInfo() {\n    const productInfo = await this.getProductInfo()\n    if (!productInfo) {\n      return null\n    }\n\n    const discountMetaInfo = await this.getDiscountMetaInfo()\n    if (!discountMetaInfo) {\n      debugService.log('상품 할인 메타 정보를 불러오지 못 했어요')\n      return null\n    }\n\n    const isAllDiscount = discountMetaInfo.discountType === DiscountType.All\n    if (\n      !isAllDiscount &&\n      !discountMetaInfo.productNos.includes(productInfo.productID)\n    ) {\n      debugService.log('할인 가능한 상품이 아니에요')\n      return null\n    }\n\n    try {\n      const response = await httpClient.request({\n        resourceIdentifier: '/cafe24/discount/preview_product/',\n        requestMethod: 'POST',\n        data: {\n          mall_id: this._mallID,\n          shop_no: this._shopID,\n          product_no: productInfo.productID,\n          product_price_amount: productInfo.priceAmount,\n        },\n      })\n\n      const discountInfo = response.data.discountBlock\n\n      return {\n        productID: productInfo.productID,\n        creatorAlias: response.data.creatorAliasName,\n        discountInfo: {\n          originalPrice: Number(discountInfo.price),\n          maxDiscountPercent: Number(discountInfo.maximumPercent),\n          maxDiscountedPrice: Number(discountInfo.maximumDiscountedPrice),\n          isNeedCoupon:\n            discountInfo.isNeedCoupon && (!!this._guestID || !this._memberID),\n          couponDownloadURI: discountInfo.memberLoginUrl,\n          items: discountInfo.details.map((d: any) => ({\n            content: d.title,\n            ...(d.type === 'W' && {\n              discountPrice: Number(d.value),\n            }),\n            ...(d.type === 'P' && {\n              discountPercent: Number(d.value),\n            }),\n          })),\n        },\n      }\n    } catch {\n      return null\n    }\n  }\n\n  public applyDiscount() {\n    const pathRole = document\n      .querySelector('meta[name=\"path_role\"]')\n      ?.getAttribute('content')\n\n    if (pathRole !== 'ORDER_ORDERFORM') {\n      return Promise.resolve(null)\n    }\n\n    const performDiscount = () =>\n      new Promise<{\n        discountPrice: number\n        discountRatio: number\n        isNeedCoupon: boolean\n      } | null>((resolve) => {\n        window.CAFE24API.getCartItemList(async (_err, data) => {\n          if (data.items.length === 0) {\n            debugService.log(\n              '장바구니에 담긴 상품이 없어 할인을 적용하지 않았어요'\n            )\n\n            resolve(null)\n          } else {\n            try {\n              const response = await httpClient.request({\n                requestMethod: 'POST',\n                resourceIdentifier: '/cafe24/discount/actual/',\n                data: {\n                  mall_id: this._mallID,\n                  shop_no: this._shopID,\n                  member_id: this._memberID,\n                  guest_key: this._guestID,\n                  member_group_no: this._groupID,\n                  product: data.items,\n                  time: Math.ceil(new Date().getTime() / 1000),\n                },\n              })\n\n              debugService.log(\n                `서버에서 내려 받은 할인 정보예요. ${JSON.stringify(\n                  response.data.cafe24ResponseData\n                )}`\n              )\n\n              window.AppCallback.setDiscountPrice(\n                JSON.stringify(response.data.cafe24ResponseData)\n              )\n\n              resolve({\n                discountPrice: response.data.previewDiscountPrice,\n                discountRatio: response.data.previewDiscountRatio,\n                isNeedCoupon: response.data.isNeedCoupon || false,\n              })\n            } catch {\n              resolve(null)\n            }\n          }\n        })\n      })\n\n    // @ts-ignore\n    $('body').bind('EC_ORDER_ORDERFORM_CHANGE', function (e, oParam) {\n      if (oParam.event_type !== 'product_change') {\n        return\n      }\n\n      performDiscount()\n    })\n\n    return performDiscount()\n  }\n\n  public async getPayButton() {\n    const result = [] as Array<{\n      container: string\n      button: string | null\n    }>\n\n    result.push({\n      container: '#NaverChk_Button',\n      button: '.npay_btn_pay',\n    })\n\n    result.push({\n      container: '#kakao-checkout-button .__checkout_btn_buy',\n      button: null,\n    })\n\n    return result\n  }\n\n  public async isAuthorizedUser() {\n    try {\n      const response = await httpClient.request({\n        requestMethod: 'GET',\n        resourceIdentifier: '/cafe24/session_user/',\n      })\n\n      return !!response.data?.user?.isPhoneNumberExist\n    } catch (error) {\n      // Sentry.captureException(error, {\n      //   tags: {\n      //     service: 'cafe24-solution-service',\n      //     location: 'cafe24-service',\n      //     ...(this._mallID && { mallId: this._mallID }),\n      //     ...(this._shopID && { shopNo: this._shopID }),\n      //   },\n      // })\n      return true\n    }\n  }\n\n  public async signIn({ phone }: { phone: string }) {\n    await httpClient.request({\n      resourceIdentifier: '/cafe24/session_user/phone_number/',\n      requestMethod: 'POST',\n      data: {\n        phone_number: phone,\n      },\n    })\n  }\n}\n\nexport class AnonymousCafe24SolutionService implements SolutionService {\n  public initialize() {\n    debugService.log('CAFE24 비회원 솔루션 서비스로 초기화되었어요')\n\n    return new Promise<void>((resolve) => {\n      window.CAFE24API.init(import.meta.env.VITE_APP_CAFE24_CLIENT_ID)\n\n      resolve(undefined)\n    })\n  }\n\n  public async getPayButton() {\n    return []\n  }\n\n  private async isOrderComplete() {\n    const pathRole = document\n      .querySelector('meta[name=\"path_role\"]')\n      ?.getAttribute('content')\n\n    return pathRole === 'ORDER_ORDERRESULT'\n  }\n\n  public async getOrder() {\n    const isOrderComplete = await this.isOrderComplete()\n    if (!isOrderComplete) {\n      return null\n    }\n\n    const orderID = new URLSearchParams(window.location.search).get('order_id')\n    if (!orderID) {\n      return null\n    }\n\n    return {\n      orderID,\n    }\n  }\n\n  public async trackOrder() {\n    const order = await this.getOrder()\n    if (!order) {\n      return\n    }\n\n    debugService.log(\n      `주문 정보를 발견했어요. ${order.orderID} 주문 헬스 체크를 서버로 전송할게요`\n    )\n\n    await httpClient.request({\n      resourceIdentifier: '/cafe24/event/health_check/order/',\n      requestMethod: 'POST',\n      data: {\n        order_id: order.orderID,\n        mall_id: window.CAFE24API.MALL_ID,\n        shop_no: window.CAFE24API.SHOP_NO,\n      },\n    })\n  }\n\n  public async getPageType() {\n    const pathRole = document\n      .querySelector('meta[name=\"path_role\"]')\n      ?.getAttribute('content')\n\n    if (pathRole === 'PRODUCT_DETAIL') {\n      return PageType.ProductDetail\n    }\n\n    if (pathRole === 'ORDER_ORDERFORM') {\n      return PageType.OrderForm\n    }\n\n    if (pathRole === 'ORDER_ORDERRESULT') {\n      return PageType.OrderComplete\n    }\n\n    if (pathRole === 'MAIN') {\n      return PageType.Main\n    }\n\n    return PageType.None\n  }\n\n  public async getProductInfo() {\n    const pathRole = document\n      .querySelector('meta[name=\"path_role\"]')\n      ?.getAttribute('content')\n\n    if (pathRole !== 'PRODUCT_DETAIL') {\n      return null\n    }\n\n    const [stringPriceAmount, stringProductID] = [\n      document\n        .querySelector('meta[property=\"product:price:amount\"]')\n        ?.getAttribute('content'),\n      document\n        .querySelector('meta[property=\"product:productId\"]')\n        ?.getAttribute('content'),\n    ]\n\n    const [priceAmount, productID] = [\n      Number(stringPriceAmount) || null,\n      Number(stringProductID) || null,\n    ]\n\n    if (!priceAmount || !productID) {\n      return null\n    }\n\n    return {\n      priceAmount,\n      productID,\n    }\n  }\n\n  public async getProductDiscountInfo() {\n    return null\n  }\n\n  public async applyDiscount() {\n    return null\n  }\n\n  public async isAuthorizedUser() {\n    return false\n  }\n\n  public async signIn() { }\n}\n","import { ComponentChildren } from 'preact'\n\nimport { suspend } from 'suspend-react'\nimport React from 'preact/compat'\nimport * as Sentry from '@sentry/browser'\n\nimport { Colors } from '@/shared/colors'\nimport { httpClient } from '@/service/http'\nimport { PageType, SolutionService } from '@/service/cafe24'\nimport { CreatorUserEvent } from '@/shared/types/creator-user-event'\nimport { debugService } from '@/service/debug'\n\nimport ZVZOText from './ZVZOText'\n\nconst koreanLangCodes = ['ko', 'ko-kr', 'ko_kr', 'kor']\n\nconst useBuyLatest = (solutionService: SolutionService) => {\n  return suspend(async (): Promise<CreatorUserEvent[] | null> => {\n    const pathRole = await solutionService.getPageType()\n    let productNos: string[] = []\n    let shopNo: string | null = null\n    let mallId: string | null = null\n    let lang: string | null = null\n\n    const cafe24 = window?.CAFE24 as any\n    const cafe24API = window?.CAFE24API as any\n\n    if (cafe24) {\n      const externalData = cafe24.FRONT_EXTERNAL_SCRIPT_VARIABLE_DATA\n      const products = (externalData?.order_product as Array<any>) || []\n      lang = cafe24.FRONT_LANGUAGE_CODE ?? 'ko'\n\n      if (products && products.length > 0) {\n        productNos = products.map((product: any) => product.product_no)\n      }\n    }\n\n    if (cafe24API) {\n      shopNo = cafe24API.SHOP_NO\n      mallId = cafe24API.MALL_ID\n    }\n\n    if (pathRole !== PageType.OrderComplete) {\n      return null\n    }\n\n    if (!lang || !koreanLangCodes.includes(lang.toLowerCase())) {\n      return null\n    }\n\n    try {\n      const response = await httpClient\n        .request({\n          requestMethod: 'GET',\n          resourceIdentifier: '/cafe24/buy_action/latest_buy_actions/',\n          params: {\n            ...(productNos.length > 0 && {\n              product_nos: productNos.join(','),\n            }),\n            ...(mallId && {\n              mall_id: mallId,\n            }),\n            ...(shopNo && {\n              shop_no: shopNo,\n            }),\n          },\n        })\n        .catch((error) => {\n          debugService.log(`error: ${JSON.stringify(error)}`)\n          return null\n        })\n\n      if (!response) {\n        return null\n      }\n\n      return response.data as CreatorUserEvent[]\n    } catch (error) {\n      Sentry.captureException(error, {\n        tags: {\n          component: 'follower-comment-bottom-sheet',\n          location: 'cafe24-service',\n          productNos: productNos.join(','),\n          mallId: mallId,\n          shopNo: shopNo,\n          lang: lang,\n        },\n      })\n      return null\n    }\n  }, ['exports-use-buy-latest'])\n}\n\nconst Badge = ({\n  children,\n  color,\n}: {\n  children: ComponentChildren\n  color: string\n}) => (\n  <div\n    style={{\n      position: 'absolute',\n      top: -9,\n      left: 15,\n      padding: '2px 7px',\n      borderRadius: 999,\n      backgroundColor: color,\n      color: Colors.gray00,\n      fontSize: 12,\n      fontWeight: 600,\n    }}\n  >\n    {children}\n  </div>\n)\n\nconst ProductHeaderItem = ({\n  item,\n  selected,\n  disabled,\n  participated,\n  onClick,\n}: {\n  item: CreatorUserEvent\n  selected: boolean\n  disabled: boolean\n  participated: boolean\n  onClick: () => void\n}) => {\n  const isEventItem = (item.creatorUserEventCodes || []).length > 0\n\n  return (\n    <div\n      onClick={onClick}\n      style={{\n        position: 'relative',\n        display: 'flex',\n        flexDirection: 'row',\n        alignItems: 'center',\n        gap: 16,\n        padding: '17px 15px',\n        borderRadius: 12,\n        border: `1px solid ${\n          disabled\n            ? Colors.gray500\n            : selected || isEventItem\n              ? Colors.blue400\n              : Colors.gray300\n        }`,\n        flex: '0 0 auto',\n        cursor: 'pointer',\n      }}\n    >\n      <div style={{ position: 'relative', width: 50, height: 50 }}>\n        {(() => {\n          const product = item.contributedExhibition.productArticle\n          const productImage =\n            product.mainImageOriginUrl || product.coverImages?.[0]\n          if (productImage) {\n            return (\n              <img\n                src={productImage}\n                alt={product.name}\n                style={{\n                  width: '100%',\n                  height: '100%',\n                  objectFit: 'cover',\n                  borderRadius: 999,\n                  display: 'block',\n                }}\n              />\n            )\n          }\n          return (\n            <div\n              style={{\n                width: 50,\n                height: 50,\n                backgroundColor: Colors.gray200,\n                borderRadius: 8,\n              }}\n            />\n          )\n        })()}\n      </div>\n      <div style={{ display: 'flex', flexDirection: 'column' }}>\n        <ZVZOText\n          size={18}\n          weight={500}\n          color={disabled ? Colors.gray600 : Colors.gray700}\n        >\n          {item.contributedExhibition.creator.aliasName || '크리에이터'} 님의\n          요청으로\n        </ZVZOText>\n        <ZVZOText\n          size={18}\n          weight={500}\n          color={disabled ? Colors.gray700 : Colors.gray700}\n        >\n          <span\n            style={{\n              color: disabled ? Colors.gray700 : Colors.blue400,\n              fontWeight: 700,\n              marginRight: 4,\n            }}\n          >\n            혜택 받고\n          </span>\n          구매하셨어요!\n        </ZVZOText>\n      </div>\n\n      {isEventItem && (\n        <Badge color={participated ? Colors.gray700 : Colors.blue400}>\n          {participated ? '이벤트 참여완료' : '이벤트 진행중'}\n        </Badge>\n      )}\n    </div>\n  )\n}\n\nconst UserEventFollowerCommentBottomSheet = ({\n  solutionService,\n  onExit,\n}: {\n  solutionService: SolutionService\n  onExit?: () => void\n}) => {\n  const buyItems = useBuyLatest(solutionService)\n\n  const getItemId = (it: CreatorUserEvent) =>\n    String(it.vendorProductNo || it.contributedExhibition.code)\n  const getProductArticleCode = (it: CreatorUserEvent) =>\n    String(it.contributedExhibition.productArticle?.code || '')\n\n  const [open, setOpen] = React.useState(true)\n  const [selectedIndex, setSelectedIndex] = React.useState(0)\n  const [messages, setMessages] = React.useState<Record<string, string>>({})\n  const [isAgreed, setIsAgreed] = React.useState(false)\n  const [disabledItemIDs, setDisabledItemIDs] = React.useState<string[]>([])\n  const [participatedItemIDs, setParticipatedItemIDs] = React.useState<\n    string[]\n  >([])\n\n  // 이벤트 상품이면 체크박스를 기본 체크 상태로 설정 (항상 호출되도록 early return 위에 배치)\n  React.useEffect(() => {\n    if (!buyItems || buyItems.length === 0) return\n    const item = buyItems[selectedIndex]\n    const eventExists = (item?.creatorUserEventCodes || []).length > 0\n    setIsAgreed(eventExists)\n  }, [selectedIndex, buyItems])\n\n  if (!buyItems || buyItems.length === 0) return null\n  if (!open) return null\n\n  const selectedItem = buyItems[selectedIndex]\n  const isEventItem = (selectedItem?.creatorUserEventCodes || []).length > 0\n  const isDisabled = disabledItemIDs.includes(getItemId(selectedItem))\n  const isParticipated = participatedItemIDs.includes(getItemId(selectedItem))\n  const currentMessage = selectedItem\n    ? messages[getProductArticleCode(selectedItem)] || ''\n    : ''\n\n  const handleChange = (value: string) => {\n    if (!selectedItem) return\n    setMessages((prev) => ({\n      ...prev,\n      [getProductArticleCode(selectedItem)]: value,\n    }))\n  }\n\n  const handleSend = async () => {\n    if (!selectedItem) return\n    const text = (messages[getProductArticleCode(selectedItem)] || '').trim()\n    if (!text) return\n\n    // 이벤트 참여 동의 상태에 따라 호출 파라미터 분기\n    await httpClient\n      .request({\n        requestMethod: 'POST',\n        resourceIdentifier: '/cafe24/creator_comment/',\n        data: {\n          creator_code: selectedItem.contributedExhibition.creator.code,\n          product_article_code: getProductArticleCode(selectedItem),\n          comment: text,\n          ...(isEventItem &&\n            isAgreed && {\n              creator_user_event_codes: selectedItem.creatorUserEventCodes,\n            }),\n        },\n      })\n      .catch(() => {})\n\n    setMessages((prev) => ({\n      ...prev,\n      [getProductArticleCode(selectedItem)]: '',\n    }))\n\n    // 제출 후에는 항상 disabled 처리\n    const updatedDisabled = Array.from(\n      new Set([...disabledItemIDs, getItemId(selectedItem)]),\n    )\n    setDisabledItemIDs(updatedDisabled)\n\n    // 동의한 이벤트 항목은 참여완료 처리\n    if (isEventItem && isAgreed) {\n      const updatedParticipated = Array.from(\n        new Set([...participatedItemIDs, getItemId(selectedItem)]),\n      )\n      setParticipatedItemIDs(updatedParticipated)\n    }\n    setIsAgreed(false)\n\n    const n = buyItems.length\n    const order: number[] = []\n    for (let i = selectedIndex + 1; i < n; i++) order.push(i)\n    for (let i = 0; i < selectedIndex; i++) order.push(i)\n\n    const nextUnsent = order.find(\n      (idx) => !updatedDisabled.includes(getItemId(buyItems[idx])),\n    )\n\n    if (nextUnsent !== undefined) {\n      setSelectedIndex(nextUnsent)\n    } else if (updatedDisabled.length === n) {\n      setOpen(false)\n      onExit?.()\n    } else {\n      // 모두 참여완료는 아니지만, 이동 가능한 미참여 상품이 없다면 순서상 다음으로 이동\n      setSelectedIndex((selectedIndex + 1) % n)\n    }\n  }\n\n  return (\n    <div\n      style={{\n        position: 'fixed',\n        top: 0,\n        left: 0,\n        right: 0,\n        bottom: 0,\n        background: 'rgba(0,0,0,0.4)',\n        zIndex: 2147483647,\n      }}\n    >\n      <div\n        style={{\n          position: 'absolute',\n          left: 0,\n          right: 0,\n          bottom: 0,\n          borderRadius: '20px 20px 0px 0px',\n          background: 'white',\n          boxShadow: '0px -1px 8px rgba(0,0,0,0.1)',\n          paddingTop: 24,\n          display: 'flex',\n          flexDirection: 'column',\n          overflowY: 'auto',\n          maxHeight: '80vh',\n        }}\n      >\n        <div\n          style={{\n            width: '100%',\n            height: 48,\n            display: 'flex',\n            justifyContent: 'center',\n            alignItems: 'center',\n            position: 'relative',\n          }}\n        >\n          <div\n            style={{\n              position: 'absolute',\n              right: 20,\n              top: 0,\n              bottom: 0,\n              display: 'flex',\n              alignItems: 'center',\n              cursor: 'pointer',\n            }}\n            onClick={() => {\n              setOpen(false)\n              onExit?.()\n            }}\n          >\n            <div\n              style={{\n                width: 20,\n                height: 20,\n                color: '#A4A4AF',\n                marginBottom: 4,\n              }}\n            >\n              <svg\n                viewBox=\"0 0 24 24\"\n                fill=\"none\"\n                xmlns=\"http://www.w3.org/2000/svg\"\n              >\n                <g id=\"weight=regular, fill=false\">\n                  <path\n                    id=\"vector\"\n                    fillRule=\"evenodd\"\n                    clipRule=\"evenodd\"\n                    d=\"M4.43433 4.43432C4.74675 4.1219 5.25328 4.1219 5.5657 4.43432L12 10.8686L18.4343 4.43432C18.7467 4.1219 19.2533 4.1219 19.5657 4.43432C19.8781 4.74673 19.8781 5.25327 19.5657 5.56569L13.1314 12L19.5657 18.4343C19.8781 18.7467 19.8781 19.2533 19.5657 19.5657C19.2533 19.8781 18.7467 19.8781 18.4343 19.5657L12 13.1314L5.5657 19.5657C5.25328 19.8781 4.74675 19.8781 4.43433 19.5657C4.12191 19.2533 4.12191 18.7467 4.43433 18.4343L10.8686 12L4.43433 5.56569C4.12191 5.25327 4.12191 4.74673 4.43433 4.43432Z\"\n                    fill=\"currentColor\"\n                  />\n                </g>\n              </svg>\n            </div>\n          </div>\n        </div>\n\n        <div style={{ overflowX: 'auto', padding: '10px 20px 0px 20px' }}>\n          <div style={{ display: 'flex', flexDirection: 'row', gap: 10 }}>\n            {buyItems.map((item, index) => (\n              <ProductHeaderItem\n                key={`${String(item.contributedExhibition.productArticle?.code || '')}-${index}`}\n                item={item}\n                selected={selectedIndex === index}\n                disabled={disabledItemIDs.includes(\n                  String(\n                    item.vendorProductNo || item.contributedExhibition.code,\n                  ),\n                )}\n                participated={participatedItemIDs.includes(\n                  String(\n                    item.vendorProductNo || item.contributedExhibition.code,\n                  ),\n                )}\n                onClick={() => setSelectedIndex(index)}\n              />\n            ))}\n          </div>\n        </div>\n\n        <div style={{ margin: '20px auto 28px', textAlign: 'center' }}>\n          <ZVZOText size={16} weight={500} color={Colors.gray700}>\n            혜택을 만들기 위해 긴 시간 노력한{' '}\n            {selectedItem.contributedExhibition.creator.aliasName ||\n              '크리에이터'}\n            님에게\n          </ZVZOText>\n          <ZVZOText size={16} weight={500} color={Colors.gray700}>\n            응원 메시지로 힘을 보내주세요 🥰\n          </ZVZOText>\n        </div>\n\n        <div style={{ padding: '0 20px', position: 'relative' }}>\n          {isEventItem && (\n            <div\n              style={{\n                position: 'absolute',\n                top: -12,\n                left: '50%',\n                transform: 'translateX(-50%)',\n                zIndex: 10,\n                color: Colors.gray00,\n                backgroundColor: isParticipated\n                  ? Colors.gray700\n                  : Colors.blue400,\n                padding: '2px 7px',\n                borderRadius: 999,\n                fontSize: 12,\n                fontWeight: 600,\n              }}\n            >\n              {isParticipated\n                ? '이벤트 참여완료'\n                : '팔로워 한마디 이벤트 진행중'}\n            </div>\n          )}\n          {isEventItem && !isDisabled ? (\n            <div\n              style={{\n                padding: 2,\n                borderRadius: 8,\n                background: 'linear-gradient(45deg, #B4BDFF, #4A5DEB)',\n              }}\n            >\n              <textarea\n                value={currentMessage}\n                onInput={(e: any) => handleChange(e.currentTarget.value)}\n                placeholder={\n                  '직접 적는 메시지가 더 크게 와닿아요! \\n평소 전하고 싶은 내용을 덧붙여보세요'\n                }\n                style={{\n                  width: '100%',\n                  minHeight: 140,\n                  border: 0,\n                  outline: 'none',\n                  borderRadius: 6,\n                  padding: 12,\n                  background: 'white',\n                  boxSizing: 'border-box',\n                }}\n              />\n            </div>\n          ) : (\n            <textarea\n              value={currentMessage}\n              onInput={(e: any) => handleChange(e.currentTarget.value)}\n              placeholder={\n                '직접 적는 메시지가 더 크게 와닿아요! \\n평소 전하고 싶은 내용을 덧붙여보세요'\n              }\n              disabled={isDisabled}\n              style={{\n                width: '100%',\n                minHeight: 140,\n                border: `1px solid ${Colors.gray600}`,\n                borderRadius: 8,\n                padding: 12,\n                boxSizing: 'border-box',\n                background: Colors.gray00,\n                outline: 'none',\n              }}\n            />\n          )}\n        </div>\n\n        {isEventItem && !isDisabled && (\n          <div\n            style={{\n              display: 'flex',\n              gap: 8,\n              alignItems: 'flex-start',\n              padding: '12px 20px 0',\n              cursor: 'pointer',\n            }}\n            onClick={() => setIsAgreed(!isAgreed)}\n          >\n            <input\n              type=\"checkbox\"\n              checked={isAgreed}\n              onClick={(e) => e.stopPropagation()}\n              onChange={(e) => setIsAgreed(e.currentTarget.checked)}\n              style={{ width: 18, height: 18, flex: 'none', marginTop: 2 }}\n            />\n            <ZVZOText size={14} weight={700} color={Colors.red400}>\n              [이벤트 참여 시 필수]\n              <span\n                style={{\n                  color: Colors.gray700,\n                  fontWeight: 400,\n                  marginLeft: 4,\n                }}\n              >\n                상품 배송을 위해 개인정보 수집에 동의해 주세요. 수집된 정보는\n                이벤트 진행 및 경품 발송에만 사용되며, 그 외의 용도로는 사용되지\n                않아요.\n              </span>\n            </ZVZOText>\n          </div>\n        )}\n\n        <div style={{ height: 100, flex: 'none' }} />\n\n        <div\n          style={{\n            position: 'fixed',\n            left: 0,\n            bottom: 0,\n            width: '100%',\n            boxSizing: 'border-box',\n            padding: 12,\n            backgroundColor: 'white',\n          }}\n        >\n          <div\n            style={{\n              width: '100%',\n              height: 48,\n              backgroundColor: isDisabled ? Colors.blue200 : Colors.purple500,\n              borderRadius: 8,\n              display: 'flex',\n              justifyContent: 'center',\n              alignItems: 'center',\n              cursor:\n                currentMessage.trim() && !isDisabled ? 'pointer' : 'default',\n            }}\n            onClick={handleSend}\n          >\n            <ZVZOText size={16} weight={700} color={Colors.gray00}>\n              {isParticipated\n                ? '이벤트 참여했어요'\n                : `${selectedItem.contributedExhibition.creator.aliasName || '크리에이터'} 님에게 칭찬 보내기`}\n            </ZVZOText>\n          </div>\n        </div>\n      </div>\n    </div>\n  )\n}\n\nexport default UserEventFollowerCommentBottomSheet\n","import { useEffect } from 'preact/hooks'\n\nimport { PageType, SolutionService } from '@/service/cafe24'\nimport { debugService } from '@/service/debug'\nimport { Locale } from '@/shared/dictionaries/type'\nimport { logger } from '@/shared/logger'\n\nconst AmplitudeEventLogger = ({\n  solutionService,\n  lang,\n}: {\n  solutionService: SolutionService\n  lang: Locale\n}) => {\n  useEffect(() => {\n    // NOTE: CAFE24 만 지원\n    async function log() {\n      const pageType = await solutionService.getPageType()\n      if (!pageType || pageType === PageType.None) {\n        debugService.log(\n          `로깅 가능한 페이지를 발견하지 못했어요. 알 수 없는 페이지로 로깅할게요`,\n        )\n\n        const pathRole = document\n          ?.querySelector('meta[name=\"path_role\"]')\n          ?.getAttribute('content')\n\n        logger.log(\n          'view unknown page',\n          {\n            ...(pathRole && {\n              'path role': pathRole,\n            }),\n          },\n          {\n            type: 'interaction',\n          },\n        )\n\n        return\n      }\n\n      debugService.log(`앰플리튜드 로거에서 ${pageType} 페이지를 발견했어요`)\n\n      if (pageType === PageType.Main) {\n        logger.log(\n          'view own store home',\n          {},\n          {\n            type: 'interaction',\n          },\n        )\n      }\n\n      if (pageType === PageType.ProductDetail) {\n        const productInfo = await solutionService.getProductInfo()\n        if (!productInfo) {\n          return\n        }\n\n        const discountInfo = await solutionService\n          .getProductDiscountInfo()\n          .catch(() => null)\n\n        logger.log(\n          'view product detail',\n          {\n            'product id': productInfo.productID,\n            ...(discountInfo?.discountInfo.maxDiscountPercent && {\n              'discount ratio': discountInfo.discountInfo.maxDiscountPercent,\n            }),\n          },\n          {\n            type: 'interaction',\n          },\n        )\n      }\n\n      if (pageType === PageType.OrderForm) {\n        const { fTotalPayAmount: amount = 0, fTotalProductPrice: price = 0 } =\n          window?.CAFE24?.SHOP_FRONT_ORDERFORM_DATA?.order || {}\n\n        logger.log(\n          'view order form',\n          {\n            ...(amount && { amount }),\n            ...(price && {\n              price,\n            }),\n          },\n          {\n            type: 'interaction',\n          },\n        )\n      }\n\n      if (pageType === PageType.OrderComplete) {\n        const order = await solutionService.getOrder()\n        if (!order) {\n          return\n        }\n\n        await logger.log(\n          'view order complete',\n          {\n            'order id': order.orderID,\n          },\n          {\n            type: 'interaction',\n          },\n        )\n      }\n    }\n\n    debugService.log('앰플리튜드 뷰 이벤트 로깅을 시작했어요')\n\n    log().catch(() => {\n      debugService.log('앰플리튜드 뷰 이벤트 로깅에 실패했어요')\n    })\n  }, [])\n\n  return null\n}\n\nexport default AmplitudeEventLogger\n","import { suspend } from 'suspend-react'\n\nimport { SolutionService } from '@/service/cafe24'\nimport { debugService } from '@/service/debug'\nimport { Locale } from '@/shared/dictionaries/type'\n\nconst OrderCompleteTracker = ({\n  solutionService,\n  lang,\n}: {\n  solutionService: SolutionService\n  lang: Locale\n}) => {\n  suspend(async () => {\n    debugService.log('주문 완료를 추적하고 있어요')\n\n    const order = await solutionService.getOrder()\n    if (!order) {\n      return\n    }\n\n    await solutionService.trackOrder()\n\n    debugService.log(`${order.orderID} 주문 완료 이벤트를 서버로 전송했어요`)\n  }, ['order-track'])\n\n  return null\n}\n\nexport default OrderCompleteTracker\n","import ZVZO from '@/zvzo.svg'\nimport Close from '@/icon_close.svg'\nimport { motion } from 'framer-motion'\nimport { useState } from 'preact/hooks'\nimport useDictionary from '@/shared/hooks/useDictionary'\nimport { Locale } from '@/shared/dictionaries/type'\n\nconst FloatingOrderDiscounInfoNotifier = ({\n  discountPrice,\n  discountRatio,\n  lang,\n}: {\n  discountPrice: number\n  discountRatio: number\n  lang: Locale\n}) => {\n  const { t } = useDictionary({\n    lang,\n    path: '',\n  })\n  const [placement, setPlacement] = useState<'left' | 'right'>('right')\n\n  const [y, setY] = useState(Math.floor(window.innerHeight * 0.15) || 0)\n\n  const [tagStartPos, setTagStartPos] = useState<{ x: number; y: number }>({\n    x: 0,\n    y: 0,\n  })\n\n  const [dragging, setDragging] = useState(false)\n\n  const [isOpen, setIsOpen] = useState(false)\n\n  const isMultipleDiscount = !!discountPrice && !!discountRatio\n\n  return (\n    <motion.div\n      style={{\n        position: 'fixed',\n        top: `${y}px`,\n        backgroundColor: 'rgba(255,255,255,0.8)',\n        backdropFilter: 'blur(20px)',\n        '-webkit-backdrop-filter': 'blur(20px)',\n        boxShadow: '0px 2px 8px rgba(0,0,0,0.2)',\n        padding: '16px 14px 14px 14px',\n        touchAction: 'none',\n        userSelect: 'none',\n        display: 'flex',\n        zIndex: 2147483647,\n        borderRadius: '0px',\n        flexDirection: 'column',\n        ...(placement === 'left' && {\n          right: 'unset',\n          left: '-0px',\n          borderRadius: '0px 8px 8px 0px',\n        }),\n        ...(placement === 'right' && {\n          right: '-0px',\n          left: 'unset',\n          translateX: '0%',\n          borderRadius: '8px 0px 0px 8px',\n        }),\n        ...(isOpen && {\n          left: '20px',\n          right: '20px',\n          borderRadius: '8px',\n        }),\n        ...(dragging && {\n          borderRadius: '8px',\n        }),\n      }}\n      drag\n      dragMomentum={false}\n      dragSnapToOrigin\n      layout=\"position\"\n      initial={{\n        opacity: 0,\n      }}\n      animate={{\n        opacity: 1,\n      }}\n      exit={{\n        opacity: 0,\n      }}\n      transition={{\n        type: 'spring',\n        stiffness: 400,\n        damping: 40,\n      }}\n      onDragEnd={(_, info) => {\n        setDragging(false)\n\n        if (info.offset.x < -100 && placement === 'right') {\n          setPlacement('left')\n        }\n\n        if (info.offset.x > 100 && placement === 'left') {\n          setPlacement('right')\n        }\n\n        setY((prevY) =>\n          Math.min(\n            Math.max(prevY + info.offset.y, 50),\n            window.innerHeight - 200,\n          ),\n        )\n      }}\n      onTapStart={(_, info) => {\n        setTagStartPos({\n          x: info.point.x,\n          y: info.point.y,\n        })\n      }}\n      // onTap={(_, info) => {\n      //   const isDrag =\n      //     Math.abs(info.point.x - tagStartPos.x) > 10 ||\n      //     Math.abs(info.point.y - tagStartPos.y) > 10\n\n      //   if (isDrag) {\n      //     return\n      //   }\n\n      //   setIsOpen(!isOpen)\n      // }}\n      onDragStart={() => setDragging(true)}\n      whileDrag={{\n        scale: 1.1,\n      }}\n    >\n      {!isOpen && (\n        <>\n          <img\n            alt=\"ZVZO 로고\"\n            src={ZVZO}\n            width={42}\n            style={{\n              marginBottom: '4px',\n            }}\n          />\n          <p\n            style={{\n              margin: 0,\n              padding: 0,\n              fontSize: '13px',\n              fontStyle: 'normal',\n              fontWeight: 500,\n              lineHeight: '140%',\n              color: '#757582',\n              fontFamily: 'system-ui',\n            }}\n          >\n            • {t('floating-order-discount-info-notifier.exclusive-discount')}\n          </p>\n        </>\n      )}\n\n      {isOpen && (\n        <div\n          style={{\n            width: '100%',\n            display: 'flex',\n            flexDirection: 'row',\n            alignItems: 'center',\n          }}\n        >\n          <img\n            alt=\"ZVZO 로고\"\n            src={ZVZO}\n            width={42}\n            style={{\n              marginRight: '12px',\n              flex: 'none',\n            }}\n          />\n          <div\n            style={{\n              flex: '1 0 auto',\n            }}\n          >\n            <p\n              style={{\n                margin: 0,\n                padding: 0,\n                fontSize: '15px',\n                fontStyle: 'normal',\n                fontWeight: 700,\n                lineHeight: '140%',\n                marginBottom: '2px',\n                fontFamily: 'system-ui',\n              }}\n            >\n              {lang === 'ko'\n                ? 'ZVZO 단독할인 적용 상품'\n                : t('floating-order-discount-info-notifier.exclusive-discount')}\n            </p>\n          </div>\n          <img\n            alt=\"ZVZO 로고\"\n            src={Close}\n            width={20}\n            style={{\n              marginLeft: '12px',\n              flex: 'none',\n            }}\n          />\n        </div>\n      )}\n    </motion.div>\n  )\n}\n\nexport default FloatingOrderDiscounInfoNotifier\n","import { debugService } from '@/service/debug'\nimport { Colors } from '@/shared/colors'\nimport { keyframes, styled } from '@stitches/react'\nimport { useEffect, useState } from 'preact/hooks'\nimport ZVZOText from './ZVZOText'\nimport { motion, AnimatePresence } from 'framer-motion'\nimport { Locale } from '@/shared/dictionaries/type'\nimport useDictionary from '@/shared/hooks/useDictionary'\n\nconst bounce = keyframes({\n  '0%, 100%': {\n    transform: 'translateY(-25%) translateX(-50%)',\n    animationTimingFunction: 'cubic-bezier(0.8, 0, 1, 1)',\n  },\n  '50%': {\n    transform: 'translateY(0) translateX(-50%)',\n    animationTimingFunction: 'cubic-bezier(0, 0, 0.2, 1)',\n  },\n})\n\nconst NotifierContainer = styled('div', {\n  position: 'fixed',\n  bottom: '50px',\n  left: '50%',\n  transform: 'translateX(-50%)',\n  padding: '12px 20px',\n  borderRadius: '9999px',\n  background: 'rgba(0, 0, 0, 0.9)',\n  display: 'flex',\n  alignItems: 'center',\n  animation: `${bounce} 1s infinite`,\n  cursor: 'pointer',\n  zIndex: 998,\n  [`& p`]: {\n    whiteSpace: 'nowrap',\n  },\n})\n\nconst ArrowDown = styled('div', {\n  width: 16,\n  height: 16,\n  marginLeft: 8,\n  color: Colors.gray00,\n})\n\nconst Toast = styled('div', {\n  position: 'fixed',\n  bottom: '100px',\n  left: '20px',\n  right: '20px',\n  borderRadius: '4px',\n  backgroundColor: Colors.gray700,\n  padding: '13px 16px',\n  zIndex: 2147483647,\n})\n\nconst AnimatedToast = motion(Toast)\n\nconst Cafe24FloatingTotalPaymentPriceNotifiter = ({\n  lang,\n}: {\n  lang: Locale\n}) => {\n  const { t } = useDictionary({\n    lang,\n    path: '',\n  })\n  const [showsToast, setShowsToast] = useState<boolean>(false)\n\n  const [totalPrice, setTotalPrice] = useState<number>(100)\n  const [isTransformPrice, setIsTransformPrice] = useState<boolean>(false)\n\n  const fetchCurrentTotalPrice = () => {\n    const newPrice =\n      (window as any)?.CAFE24?.SHOP_FRONT_ORDERFORM_DATA?.order\n        ?.fTotalPayAmount ?? 0\n\n    if (newPrice > 0) {\n      setTotalPrice(newPrice)\n    }\n\n    new Promise((resolve) => setTimeout(resolve, 50)).then(() => {\n      setIsTransformPrice(true)\n    })\n  }\n\n  const handleScrollDown = () => {\n    ;(document.querySelector('#btn_payment') as any)?.scrollIntoView?.({\n      block: 'end',\n    })\n\n    // setShowsToast(true)\n  }\n\n  const applyCoupon = () => {\n    ;(window as any).sUseAutoApplyCoupon = 'T'\n    ;(\n      window as any\n    ).CAFE24?.SHOP_FRONT_ORDERFORM_FORM?.proc?.callUseAutoApplyCouponAjax?.()\n\n    // NOTE: 이걸 안 하면 쿠폰 적용 금액이 안 맞을 수 있음 (쿠폰에 조건이 다양할 때)\n    const wrapper = document.createElement('div')\n    wrapper.style.display = 'none'\n\n    const iframe = document.createElement('iframe')\n    iframe.src = '/coupon/coupon_select.html'\n    wrapper.appendChild(iframe)\n\n    let removed = false\n    const removeWrapper = () => {\n      if (removed) {\n        return\n      }\n\n      removed = true\n\n      document.body.removeChild(wrapper)\n    }\n\n    iframe.onload = () => {\n      setTimeout(() => {\n        removeWrapper()\n      }, 3000)\n    }\n\n    setTimeout(() => {\n      removeWrapper()\n    }, 5000)\n\n    document.body.appendChild(wrapper)\n  }\n\n  const applyDepositAndMileage = () => {\n    const currentMileage = (window as any).CAFE24.SHOP_FRONT_ORDERFORM_DATA\n      .mileage.fMemberAvailMileage\n    const minMileage = (window as any).CAFE24.SHOP_FRONT_ORDERFORM_DATA.mileage\n      .fMinPayMileage\n\n    debugService.log(\n      `현재 마일리지: ${currentMileage}원, 최소 마일리지: ${minMileage}원 이에요`,\n    )\n\n    if (currentMileage >= minMileage) {\n      ;(\n        document.querySelector('#all_use_mileage') as HTMLButtonElement\n      )?.click?.()\n      return\n    }\n\n    const currentDeposit = (window as any).CAFE24.SHOP_FRONT_ORDERFORM_DATA\n      .deposit.fAvailDeposit\n\n    debugService.log(`현재 적립금: ${currentDeposit}원 이에요`)\n\n    if (currentDeposit > 0) {\n      ;(\n        document.querySelector('#all_use_deposit') as HTMLButtonElement\n      )?.click?.()\n    }\n  }\n\n  const shipFee =\n    (window as any)?.CAFE24?.SHOP_FRONT_ORDERFORM_DATA?.shipping\n      ?.fTotalShipFee ?? 0\n\n  useEffect(() => {\n    if (showsToast) {\n      const timeoutID = setTimeout(() => {\n        setShowsToast(false)\n      }, 3000)\n\n      return () => clearTimeout(timeoutID)\n    }\n  }, [showsToast])\n\n  useEffect(() => {\n    debugService.log('최종 결제 가격을 불러와서 보여줄게요')\n\n    fetchCurrentTotalPrice()\n\n    try {\n      const originalFunc = (window as any).CAFE24.SHOP_FRONT_ORDERFORM_PAYMETHOD\n        .exec.setPaymethodDisplay\n\n      ;(\n        window as any\n      ).CAFE24.SHOP_FRONT_ORDERFORM_PAYMETHOD.exec.setPaymethodDisplay =\n        function (...args: any[]) {\n          originalFunc.bind(this)(...args)\n\n          setTimeout(() => {\n            fetchCurrentTotalPrice()\n          }, 1)\n        }\n\n      debugService.log('카페24 환경 변경 함수에 HOOK 를 설치했어요')\n\n      // applyCoupon()\n\n      // debugService.log('사용할 수 있는 쿠폰을 자동으로 적용했어요')\n\n      // applyDepositAndMileage()\n\n      // debugService.log('사용할 수 있는 적립금과 마일리지를 자동으로 적용했어요')\n    } catch (e) {\n      debugService.log(\n        `카페24 환경 변경 함수에 HOOK 를 설치하지 못했어요. ${e}`,\n      )\n    }\n  }, [])\n\n  if (!totalPrice) return <></>\n\n  return (\n    <>\n      {isTransformPrice && (\n        <NotifierContainer onClick={handleScrollDown}>\n          <div style={{ marginRight: 8 }}>\n            <ZVZOText\n              size={14}\n              weight={400}\n              color={Colors.gray00}\n              style={{ color: '#FFFFFF' }}\n            >\n              {t('floating-total-payment-price-notifier.total-payment-price')}\n            </ZVZOText>\n          </div>\n          <ZVZOText size={14} weight={700} color={Colors.red500}>\n            {lang === 'ko'\n              ? `${totalPrice.toLocaleString()}원`\n              : `$${totalPrice.toFixed(2).toLocaleString()}`}\n            {(() => {\n              if (shipFee === 0) return null\n\n              return ` (${lang === 'ko' ? `배송비 ${shipFee.toLocaleString()}원 포함` : `Shipping ${shipFee.toFixed(2).toLocaleString()} included`})`\n            })()}\n          </ZVZOText>\n          <ArrowDown>\n            <svg\n              viewBox=\"0 0 24 24\"\n              fill=\"none\"\n              xmlns=\"http://www.w3.org/2000/svg\"\n            >\n              <g id=\"weight=bold, fill=false\">\n                <path\n                  id=\"vector\"\n                  fillRule=\"evenodd\"\n                  clipRule=\"evenodd\"\n                  d=\"M12 17.4142L20.7071 8.70711L19.2929 7.29289L12 14.5858L4.70711 7.29289L3.29289 8.70711L12 17.4142Z\"\n                  fill=\"currentColor\"\n                />\n              </g>\n            </svg>\n          </ArrowDown>\n        </NotifierContainer>\n      )}\n\n      <AnimatePresence>\n        {showsToast && (\n          <AnimatedToast\n            initial={{\n              opacity: 0,\n            }}\n            animate={{\n              opacity: 1,\n            }}\n            exit={{\n              opacity: 0,\n            }}\n            transition={{\n              duration: 0.3,\n              ease: 'easeOut',\n            }}\n          >\n            <ZVZOText size={13} weight={500} color={Colors.gray00}>\n              아무거나 넣을 수 있어요\n            </ZVZOText>\n          </AnimatedToast>\n        )}\n      </AnimatePresence>\n    </>\n  )\n}\n\nexport default Cafe24FloatingTotalPaymentPriceNotifiter\n","export default \"data:image/png;base64,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\"","import React from 'react'\n\nimport { styled } from '@stitches/react'\n\nimport { Colors } from '@/shared/colors'\nimport CouponImage from '@/assets/coupon_image.png'\n\nimport ZVZOText from './ZVZOText'\n\nconst MaximumCouponNotifier = () => {\n  const [open, setOpen] = React.useState(true)\n\n  React.useEffect(() => {\n    ;(\n      window as any\n    ).CAFE24?.SHOP_FRONT_ORDERFORM_COUPON?.event?.eventClickCouponSelect?.(\n      'zvzoCouponView',\n    )\n  }, [])\n\n  if (!open) {\n    return <></>\n  }\n\n  return (\n    <Container>\n      <ZVZOText size={15} weight={700} color={Colors.gray700}>\n        최대 할인 쿠폰 적용하기\n      </ZVZOText>\n\n      <Coupon\n        id=\"zvzoCouponView\"\n        src={CouponImage}\n        onClick={() => {\n          setOpen(false)\n        }}\n      />\n\n      <CloseButton onClick={() => setOpen(false)}>\n        <svg viewBox=\"0 0 20 20\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n          <path\n            fillRule=\"evenodd\"\n            clipRule=\"evenodd\"\n            d=\"M3.69526 3.69526C3.95561 3.43491 4.37772 3.43491 4.63807 3.69526L10 9.05719L15.3619 3.69526C15.6223 3.43491 16.0444 3.43491 16.3047 3.69526C16.5651 3.95561 16.5651 4.37772 16.3047 4.63807L10.9428 10L16.3047 15.3619C16.5651 15.6223 16.5651 16.0444 16.3047 16.3047C16.0444 16.5651 15.6223 16.5651 15.3619 16.3047L10 10.9428L4.63807 16.3047C4.37772 16.5651 3.95561 16.5651 3.69526 16.3047C3.43491 16.0444 3.43491 15.6223 3.69526 15.3619L9.05719 10L3.69526 4.63807C3.43491 4.37772 3.43491 3.95561 3.69526 3.69526Z\"\n            fill=\"#303033\"\n          />\n        </svg>\n      </CloseButton>\n    </Container>\n  )\n}\n\nconst Container = styled('div', {\n  position: 'fixed',\n  top: '15%',\n  backgroundColor: Colors.gray250,\n  borderRadius: 8,\n  left: 20,\n  right: 20,\n  padding: '12px 20px',\n  zIndex: 2147483647,\n  boxShadow: '0px 2px 8px rgba(0, 0, 0, 0.2)',\n})\n\nconst Coupon = styled('img', {\n  width: 205,\n  height: 89,\n  marginTop: 12,\n})\n\nconst CloseButton = styled('div', {\n  position: 'absolute',\n  width: 20,\n  height: 20,\n  color: Colors.gray700,\n  top: 12,\n  right: 16,\n})\n\nexport default MaximumCouponNotifier\n","import { SolutionService } from '@/service/cafe24'\nimport { debugService } from '@/service/debug'\nimport { useEffect } from 'preact/hooks'\nimport { suspend } from 'suspend-react'\nimport FloatingOrderDiscounInfoNotifier from './FloatingOrderDiscounInfoNotifier'\nimport Cafe24FloatingTotalPaymentPriceNotifiter from './FloatingTotalPaymentPriceNotifiter'\nimport { isFolnua } from '@/shared/folnua'\nimport MaximumCouponNotifier from './MaximumCouponNotifier'\nimport { Locale } from '@/shared/dictionaries/type'\n\nconst OrderFormDiscountNotifier = ({\n  solutionService,\n  lang,\n}: {\n  solutionService: SolutionService\n  lang: Locale\n}) => {\n  const discountInfo = suspend(\n    () => solutionService.applyDiscount(),\n    ['order-discount-info'],\n  )\n\n  if (!discountInfo) {\n    return null\n  }\n\n  useEffect(() => {\n    debugService.log('할인 정보를 발견했어요, 할인 앱을 불러올게요')\n  }, [])\n\n  return (\n    <>\n      <FloatingOrderDiscounInfoNotifier\n        lang={lang}\n        discountRatio={discountInfo.discountRatio}\n        discountPrice={discountInfo.discountPrice}\n      />\n\n      <Cafe24FloatingTotalPaymentPriceNotifiter lang={lang} />\n\n      {isFolnua() || discountInfo.isNeedCoupon ? (\n        <MaximumCouponNotifier />\n      ) : (\n        <></>\n      )}\n    </>\n  )\n}\n\nexport default OrderFormDiscountNotifier\n","import { OverlayProvider } from '@toss/use-overlay'\nimport { Suspense, useEffect } from 'preact/compat'\n\nimport {\n  Cafe24ExternalPaymentBlocker,\n  ErrorBoundary,\n  FollowerCommentBottomSheet,\n  Initializers,\n  ProductDetailDiscountNotifier,\n  SSOProcessor,\n  UserEventFollowerCommentBottomSheet,\n} from './components'\nimport AmplitudeEventLogger from './components/AmplitudeEventLogger'\nimport OrderCompleteTracker from './components/OrderCompleteTracker'\nimport OrderFormDiscountNotifier from './components/OrderFormDiscountNotifier'\nimport {\n  AnonymousCafe24SolutionService,\n  Cafe24SolutionService,\n  DebugSolutionService,\n  SolutionService,\n} from './service/cafe24'\nimport { debugService } from './service/debug'\nimport { Locale } from './shared/dictionaries/type'\nimport { detectShopLanguage } from './service/lang'\n\nconst GlobalError = () => {\n  useEffect(() => {\n    debugService.log('ZVZO 앱을 로딩하는 도중 오류가 발생했어요')\n  }, [])\n\n  return <></>\n}\n\nconst solutionService: SolutionService =\n  import.meta.env.MODE === 'development'\n    ? new DebugSolutionService()\n    : new Cafe24SolutionService()\n\nconst anonymousSolutionService: SolutionService =\n  import.meta.env.MODE === 'development'\n    ? new DebugSolutionService()\n    : new AnonymousCafe24SolutionService()\n\nconst Cafe24App = () => {\n  const lang = detectShopLanguage() as Locale\n  return (\n    <OverlayProvider>\n      <ErrorBoundary\n        fallbackRender={() => (\n          <>\n            <GlobalError />\n            <ErrorBoundary fallbackRender={() => <></>}>\n              <Suspense fallback={<></>}>\n                {/* <AnonymousAmplitudeInitializer\n                  solutionService={anonymousSolutionService}\n                /> */}\n\n                <OrderCompleteTracker\n                  solutionService={anonymousSolutionService}\n                  lang={lang}\n                />\n\n                {/* <FollowerCommentBottomSheet solutionService={solutionService} /> */}\n                <UserEventFollowerCommentBottomSheet\n                  solutionService={solutionService}\n                />\n              </Suspense>\n            </ErrorBoundary>\n          </>\n        )}\n      >\n        <Suspense fallback={<></>}>\n          <Initializers solutionService={solutionService}>\n            <OrderCompleteTracker\n              solutionService={solutionService}\n              lang={lang}\n            />\n\n            {/* <FollowerCommentBottomSheet solutionService={solutionService} /> */}\n            <UserEventFollowerCommentBottomSheet\n              solutionService={solutionService}\n            />\n\n            <ProductDetailDiscountNotifier\n              solutionService={solutionService}\n              lang={lang}\n            />\n\n            <OrderFormDiscountNotifier\n              solutionService={solutionService}\n              lang={lang}\n            />\n\n            <AmplitudeEventLogger\n              solutionService={solutionService}\n              lang={lang}\n            />\n\n            <Cafe24ExternalPaymentBlocker\n              solutionService={solutionService}\n              lang={lang}\n            />\n\n            <ErrorBoundary fallbackRender={() => <></>}>\n              <SSOProcessor />\n            </ErrorBoundary>\n          </Initializers>\n        </Suspense>\n      </ErrorBoundary>\n    </OverlayProvider>\n  )\n}\n\nexport default Cafe24App\n","import * as Sentry from \"@sentry/browser\";\n\nSentry.init({\n  dsn: \"https://460be2791e6bb0dfb5e560518ddfd4a8@o4506427089944576.ingest.us.sentry.io/4509965746765824\",\n  // Setting this option to true will send default PII data to Sentry.\n  // For example, automatic IP address collection on events\n  sendDefaultPii: true,\n  denyUrls: [\n    'https://tzm.kr/ind-script/optimizer_user.php',\n  ],\n  defaultIntegrations: false,\n  integrations: [],\n  ignoreErrors: [\n    /ZVZO 유저 아이디 못 찾음/,\n    /Cannot read properties of null (reading 'classList')/,\n    /Load failed/,\n    /null is not an object (evaluating 'nav.classList')/,\n    /undefined is not an object(evaluating '$('#prdDetail').offset().top')/,\n    /Cannot read properties of undefined (reading 'top')/,\n    /Cannot read properties of null (reading 'top')/,\n    /undefined is not an object (evaluating 'jQuery('#footer').offset().top')/,\n    /Cannot set properties of null (setting 'innerHTML')/,\n    /Cannot read properties of null (reading 'offsetWidth')/,\n    /google_tag_manager/\n  ],\n  beforeSend(event, hint) { return event; }\n});","import { OverlayProvider } from '@toss/use-overlay'\nimport { Suspense, useEffect } from 'preact/compat'\n\nimport {\n  ErrorBoundary,\n  UserEventFollowerCommentBottomSheet,\n} from './components'\nimport { detectShopLanguage } from './service/lang'\nimport { Locale } from './shared/dictionaries/type'\nimport { debugService } from './service/debug'\nimport { DebugSolutionService, SolutionService } from './service/cafe24'\n\nconst DevEffect = () => {\n  useEffect(() => {\n    debugService.log('ZVZO CAFE24 개발모드에요.')\n  }, [])\n\n  return <></>\n}\n\nconst GlobalError = () => {\n  useEffect(() => {\n    debugService.log('ZVZO 앱을 로딩하는 도중 오류가 발생했어요')\n  }, [])\n\n  return <></>\n}\n\nconst DevPreviewApp = () => {\n  const lang = detectShopLanguage() as Locale\n  const solutionService: SolutionService = new DebugSolutionService()\n  return (\n    <OverlayProvider>\n      <ErrorBoundary\n        fallbackRender={() => (\n          <>\n            <GlobalError />\n            <ErrorBoundary fallbackRender={() => <></>}>\n            </ErrorBoundary>\n          </>\n        )}\n      >\n        <Suspense fallback={<></>}>\n          <DevEffect />\n          <Suspense fallback={<></>}>\n            <UserEventFollowerCommentBottomSheet\n              solutionService={solutionService}\n            />\n          </Suspense>\n        </Suspense>\n      </ErrorBoundary>\n    </OverlayProvider >\n  )\n}\n\nexport default DevPreviewApp\n","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFAAAABQCAYAAACOEfKtAAAACXBIWXMAABYlAAAWJQFJUiTwAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAARySURBVHgB7Z2NdZswEICPTsAGJRM0mSBkA2eCuBPEncDuBEkmwJ4g7QR0A6cToE5gb3C9s0SfkMGAC0gCvvcuPP/kBX85/SAkOQCLIGJIh5gioviijpF6OTLefqQQ2vEPxS+KjyAIjmCJAAZEE3ZPsYBzSdciQMr8yUebQnuBxMUU7xQHHIaEYgE+w9lGsR5QWhkZxZIiAl9AN8SZZBRrcB2U/+0M3SWjWIJr0ElFFCn6A9fHEbgAncgzulVcm8LnvARboKzrXtB/XuA/uKofiDL93yluYRx8UDxS/1FAS1oLVPJS6K4T7AqC4qGtxFYCRywvR0BLiY0FTkBejoAWEhsJnJC8HAENJTYVuIfxNBhN4YbloW5g4hPUoJr5qclj+DPXXv5dzECUHc0Eps03ysLXqhcrBap6j4tuCNOGi/BdVX14qQhz0Z26PIYdVJbCUoGq6Po9INktMVZcN5cWYXpzBtPpsjRFgCzKhVb5LANRDjxGMGMSUazMJwsZOMEOc1s4+270LDQzMAbH5R2Px1NYghuUVeWr6PZwPKZpimEYnmK73aIlDlXyFug4y+US+VTzsCgxLhOYoONwBuoCLUp8N+WF6AlJkrggke+nhF4VXx1HJC68Kr4mDkh89ab1rcKyxMy7+q8MyxLDfOaU11iUuGCBGxwBliSuWKC13mjXWJCYsMAUR8TAEtPTHTccGQNKzFigjzOrahlIYhbwT+gJy0NPsNvtYLPZFJ4jifD09ASdgT2RDz2BkQUuBJ9bV9TeWL8W/u/bzL5L8Ll1RW8CuZhQBoJr8Dl1WYS5Dsygp2F823Ug1396trE8Kr5we9vZTJWjtwMJdZC8Qr0XRRHu95332Paj60gzq9XqTF6WZdgD6agu5RjzvkmP8pjTpdwKR8DhcMA4joeUx2y8G84vg+VRw1CQx4/5+Z6JvR9Q5QzjTNPlcSYOII+R/TT0tCUuk0d9PByI7F9nhh68omeUyXt+fsYBSXSBXtWD3J8z5a3XaxyYwm1Nrge9GNZieeYghQV5TPE6FeUSUKcpG+GxJC85u6hDD+7OmZ1kHjS1RPn0Z3S8GOvT2yzKy3Rn5gzVDTRYXGKTfHTH4lDZ1yAItvkDUyCfFRuelzeUI8BYQ1cYUFVzf99gpoqdueDmbJmDykJeoRTBjI4geTfmk2dD+ioLv8OMSamTS2vlUpCz9mcAflBiPZa9MC82rOe6xYbqF+aiLJe7iqoXL97WVOtkp9wqv+l9vjJql/yrVpnrw8kt+Sd5d3Vvqr2xrlplrkAFTAcB8jPXMm97co6Arrc9yZmARAF9bbyTM2KJAq7Y+qn15CL1Bx5A7qsyFvI9YgS05KrZWfyHVAs1hi4Of4ar5HUCym0/fd2AcQUugHILUOfvqWik6OLOvjhvQtsNKFc/ZegOXFz5nPwZGEFZrG1npH/iykA582GoeYgsjevjGAbA1pcR8H3Ve+j2ywhOX0QAA38ZwaACTZRQHuWJKT6DFBpqRx2hHTl+q6PVb2/4Cx+zVqUZ6Wo5AAAAAElFTkSuQmCC\"","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAJfSURBVHgBtVa/T9tAFH7ns1UjMaQTJZPHbqViiaKIBAZEl7YbUieQmNsJRCSkJGKJgIH+BWRsNtqpWxIBUTqg0v8gEiq0C3KEihJk+/reJUGOc3Gc/vikxOd7vu+7d+/5PTMIQT6fj93d8XdCQIYxYeHV6plsAHYhhPio68ZxsZhtjuJgqsnt7bzluvwIQGQgErQS57ygEuLBic3NXdwx+4DDpxAZYk4Iby2VWuycnVUaIwW2tnZz+HARhyZMDlqzkkotAYrUhgRo5z3yv0UGPWn1PZEx6J659hWHMfg3sDk3nlNMNLpD8pyK3DQfjWWanZ1RTcdc1zmiAafdY1BLwSfi8RnIZt/CzU0Lrq9/Ksnn55/BxsYbODn5Ao7jBs3W8nL6PU8kltYYg5Wg9fb2lyRfXX2pFCFyspXLn+Dy8rtyA44DHZ0x9gqDq3zg/PybvBKR/95P3p9TQQgtrVMOQwiCIv3xOPKehIUC4zMnKBKNXMLS4D8DYwBNXxFTwn/mhGBMQmDrmKJNOqso5H7CaCLsAj3waiiSmYR8VHYN0TMs5/f34tAwWC5onJoyQ7PFL3J19UP5MmqacSxrERa6iqr2x+NP5OIwmKYJ7XZbYdFK+/s76zKLOHfXQXapQYwjJ6jJqdjxguSmv9PTqp1MLnZUJeNPgFmZ3dvb+fwgQKjXK41kElsvUwc8OrkoHBzkHvrKQEer16tV9KSFniRg8q5m08795EMCXZFKY2EhXfY8eIzezEXjZlVsMC/6xzJgCVtGvcJxtNe9iktism51336GP682PS0O8fPGHsXxG0DEIS63wzUDAAAAAElFTkSuQmCC\"","import { useState, useEffect } from 'react'\n\nimport { styled } from '@stitches/react'\n\nimport { httpClient } from '@/service/http'\nimport ArrowRightIcon from '@/assets/icon_arrow_right_graphic.png'\nimport CloseButtonIcon from '@/assets/icon_close_button.png'\n\nconst BOTTOM_SHEET_Z_INDEX = 2147483647\nconst BOTTOM_SHEET_CLOSE_BUTTON_Z_INDEX = BOTTOM_SHEET_Z_INDEX + 1\n\nconst searchParams = new URLSearchParams(window.location.search)\n\nconst POSITION_MAP = {\n  SZQ2CK6C5: '140px',\n}\n\nconst SSOSignInBottomSheet = () => {\n  const [visible, setVisible] = useState(false)\n  const [storeCode, setStoreCode] = useState<string | null>(null)\n\n  useEffect(() => {\n    // ZVZO otp 없고, SSO 로그인 아닐 때\n    if (searchParams.get('zvzo_t') || searchParams.get('zvzo_sso_step')) return\n    if (!location.pathname.startsWith('/member/login.html')) return\n\n    const mallID =\n      process.env.NODE_ENV === 'development'\n        ? 'doerscorp'\n        : window.CAFE24API.MALL_ID\n\n    async function fetchData() {\n      const response = await httpClient.request({\n        requestMethod: 'GET',\n        resourceIdentifier: `/cafe24/sso/${mallID}/meta/`,\n        params: {\n          shop_no: window.CAFE24API.SHOP_NO,\n        },\n      })\n\n      if (response.data.isSsoLoginInStoreSupported) {\n        setStoreCode(response.data.code)\n        setVisible(true)\n      }\n    }\n\n    fetchData().catch(() => { })\n  }, [])\n\n  const bottomPosition =\n    POSITION_MAP[storeCode as keyof typeof POSITION_MAP] || '100px'\n\n  const handleSignIn = () => {\n    if (!storeCode) {\n      alert('문제가 발생했습니다. ZVZO 인스타그램으로 문의해 주세요.')\n      return\n    }\n\n    window.location.href = `https://zvzo.xyz/ko/sso/own-store/?store_code=${storeCode}`\n  }\n\n  const handleCloseButton = (e: MouseEvent) => {\n    e.stopPropagation()\n    setVisible(false)\n  }\n\n  if (!visible) return <></>\n\n  return (\n    <Container onClick={handleSignIn} style={{ bottom: bottomPosition }}>\n      <Description>\n        인플루언서의 ZVZO링크를 통해\n        <br />\n        구매했다면 이곳으로 로그인해주세요\n      </Description>\n      <Arrow src={ArrowRightIcon} />\n      <CloseButton src={CloseButtonIcon} onClick={handleCloseButton} />\n    </Container>\n  )\n}\n\nconst Container = styled('div', {\n  backgroundColor: 'rgba(25,25,26,1)',\n  position: 'fixed',\n  left: 20,\n  right: 20,\n  bottom: 100,\n  borderRadius: 8,\n  height: 62,\n  boxSizing: 'border-box',\n  display: 'flex',\n  flexDirection: 'row',\n  alignItems: 'center',\n  padding: '12px 10px 10px 24px',\n  zIndex: BOTTOM_SHEET_Z_INDEX,\n})\n\nconst Arrow = styled('img', {\n  width: 40,\n  height: 40,\n  marginLeft: 'auto',\n  flex: 'none',\n})\n\nconst CloseButton = styled('img', {\n  position: 'absolute',\n  top: -12,\n  right: -12,\n  width: 24,\n  height: 24,\n  marginLeft: 'auto',\n  cursor: 'pointer',\n  zIndex: BOTTOM_SHEET_CLOSE_BUTTON_Z_INDEX,\n})\n\nconst Description = styled('p', {\n  fontSize: 13,\n  fontWeight: 500,\n  lineHeight: '18.2px',\n  color: 'white',\n  marginRight: 10,\n  flex: 1,\n  overflow: 'hidden',\n  margin: 0,\n  padding: '2px 0',\n})\n\nexport default SSOSignInBottomSheet\n","import { useEffect } from 'react'\nimport { render } from 'preact'\n\nimport SSOSignInBottomSheet from './SSOSignInBottomSheet'\n\n/**\n * 컴포넌트를 body 맨 아래에 포털로 마운트하고,\n * setInterval로 주기적으로 \"맨 아래\"에 재삽입한다.\n * @param intervalMs 재삽입 주기(ms)\n * @returns unmount 함수\n */\nexport function mountSSOBottomSheet(intervalMs = 1000) {\n  if (typeof window === 'undefined' || typeof document === 'undefined') {\n    return () => { }\n  }\n  // 컨테이너 생성\n  const host = document.createElement('div')\n  document.body.appendChild(host)\n\n  // Preact render\n  render(<SSOSignInBottomSheet />, host)\n\n  // 주기적으로 host를 body 끝으로 재삽입\n  const itv = window.setInterval(() => {\n    if (!host.isConnected) {\n      document.body.appendChild(host)\n      return\n    }\n    if (document.body.lastElementChild !== host) {\n      document.body.appendChild(host)\n    }\n  }, intervalMs)\n\n  // 클린업\n  return function unmount() {\n    clearInterval(itv)\n    try {\n      render(null, host)\n    } catch { return null }\n    host.remove()\n  }\n}\n\n\nexport function SSOBottomSheetInjector() {\n  useEffect(() => {\n    const unmount = mountSSOBottomSheet()\n    return () => unmount()\n  }, [])\n\n  return null\n}","import { render } from 'preact'\n\nimport pRetry from 'p-retry'\n\nimport packageJSON from '../package.json'\n\nimport App from './Cafe24App'\nimport { debugService } from './service/debug'\nimport { userIDService } from './service/user'\nimport SSOSignInBottomSheet from './components/SSOSignInBottomSheet'\nimport '../sentry.config'\nimport DevPreviewApp from './DevPreviewApp'\nimport { SSOBottomSheetInjector } from './components/SSOSignBottomSheetContainer'\n\ndebugService.log(`${packageJSON.version} 버전 스크립트 설치 시도중`)\n\n\nconst shouldRenderDevPreviewApp = () => {\n  if (import.meta.env.MODE === 'development') {\n    return true\n  }\n\n  try {\n    debugService.log(`window.location.hostname: ${window.location.hostname}`)\n    return window.location.hostname === 'doerscorp.cafe24.com'\n  } catch {\n    return false\n  }\n}\n\nconst isInIframe = () => {\n  try {\n    return window.location !== window.parent.location\n  } catch (e) {\n    return !1\n  }\n}\n\nconst isPopup = () => {\n  return (\n    !(\n      !document ||\n      !document.location ||\n      0 !== document.location.pathname.lastIndexOf('/popup', 0)\n    ) ||\n    (!!window.opener && !!window.name)\n  )\n}\n\nconst isZVZOIframe = () => {\n  return location.search.includes('zvzo_iframe')\n}\n\nconst isAvailableBrowser = () => {\n  const e = window.navigator.userAgent,\n    o = e.indexOf('MSIE ')\n  return !(0 < o) || 10 <= parseInt(e.substring(o + 5, e.indexOf('.', o)), 10)\n}\n\nconst createHost = () => {\n  const host = document.createElement('div')\n\n  document.body.appendChild(host)\n\n  return host\n}\n\nif (!isZVZOIframe() && (isInIframe() || isPopup() || !isAvailableBrowser())) {\n  debugService.log('ZVZO 스크립트를 설치할 수 없는 환경이에요')\n\n  async function run() {\n    const naverPay = document?.querySelector('#NaverChk_Button')\n    if (!naverPay) {\n      throw new Error('네이버 페이 못 찾음')\n    }\n\n    debugService.log('네이버 페이 버튼을 삭제했어요')\n\n    naverPay?.remove()\n  }\n\n  async function kakaoRun() {\n    const kakaoPay = document?.querySelector('#kakao-checkout-button')\n    if (!kakaoPay) {\n      throw new Error('카카오 페이 못 찾음')\n    }\n\n    debugService.log('카카오 페이 버튼을 삭제했어요')\n\n    kakaoPay?.remove()\n  }\n\n  userIDService\n    .getUserID()\n    .then((userID) => {\n      if (!userID) {\n        return\n      }\n\n      debugService.log(\n        '스크립트를 설치하기 어려운 환경에서 ZVZO 유저를 발견해서 간편 결제 버튼을 삭제할게요'\n      )\n\n      pRetry(run, {\n        retries: 10,\n        minTimeout: 2000,\n        maxTimeout: 10000,\n        onFailedAttempt: () => { },\n      }).catch(() => {\n        debugService.log('재시도했지만 간편 결제 버튼을 못 찾았어요')\n      })\n\n      pRetry(kakaoRun, {\n        retries: 10,\n        minTimeout: 2000,\n        maxTimeout: 10000,\n        onFailedAttempt: () => { },\n      }).catch(() => {\n        debugService.log('재시도했지만 간편 결제 버튼을 못 찾았어요')\n      })\n    })\n    .catch(() => { })\n} else {\n  debugService.log('ZVZO 스크립트가 설치되었어요!!')\n\n  if (shouldRenderDevPreviewApp()) {\n    render(<DevPreviewApp />, createHost())\n    render(<SSOBottomSheetInjector />, createHost())\n  }\n\n  render(<App />, createHost())\n  render(<SSOBottomSheetInjector />, createHost())\n}"],"names":["n","l","u","i","r","o","e","f","c","s","a","h","p","v","y","w","d","g","_","t","m","b","k","x","S","C","M","$","O","N","I","P","B","A","L","D","H","T","j","F","E","V","z","q","G","J","K","Q","RetryOperation","timeouts","options","retry_operation","err","currentTime","timeout","self","fn","timeoutOps","counts","mainError","mainErrorCount","error","message","count","require$$0","exports","opts","key","attempt","random","obj","methods","method","original","op","args","callback","retry","objectToString","isError","value","errorMessages","isNetworkError","AbortError","decorateErrorWithCounts","attemptNumber","retriesLeft","pRetry","input","resolve","reject","operation","abortHandler","_a","cleanUp","result","finalError","_slicedToArray","arr","_arrayWithHoles","_iterableToArrayLimit","_unsupportedIterableToArray","_nonIterableRest","_toConsumableArray","_arrayWithoutHoles","_iterableToArray","_nonIterableSpread","_arrayLikeToArray","iter","_i","_arr","_n","_d","_s","_e","minLen","len","arr2","R","U","W","Z","Y","X","nn","tn","en","rn","un","on","ln","cn","an","sn","hn","dn","mn","pn","yn","bn","Sn","gn","En","Cn","xn","Rn","OverlayContext","OverlayProvider","_ref","children","_useState","useState","_useState2","overlayById","setOverlayById","mount","useCallback","id","element","cloned","unmount","context","useMemo","jsxs","_ref2","_ref3","jsx","React","OverlayController","forwardRef","ref","OverlayElement","onExit","isOpenOverlay","setIsOpenOverlay","handleOverlayClose","useImperativeHandle","useEffect","elementId","useOverlay","_ref$exitOnUnmount","exitOnUnmount","useContext","overlayRef","useRef","overlayElement","_overlayRef$current","isPromise","promise","globalCache","shallowEqualArrays","arrA","arrB","equal","query","keys","preload","config","entry","index","response","suspend","fullPattern","naivePattern","pattern","getPattern","isbot","userAgent","has","prefix","Events","EE","once","addListener","emitter","event","listener","evt","clearEvent","EventEmitter","names","events","name","handlers","ee","listeners","a1","a2","a3","a4","a5","length","module","pFinally","onFinally","val","pTimeout","milliseconds","fallback","timer","timeoutError","TimeoutError","pTimeoutModule","lowerBound_1","lowerBound","array","comparator","first","step","it","priorityQueue","lower_bound_1","PriorityQueue","run","item","dist","p_timeout_1","require$$1","priority_queue_1","require$$2","empty","PQueue","_b","_c","now","delay","canInitializeInterval","job","newConcurrency","functions","function_","existingResolve","_default","asyncObjectMediator","Object","newObj","Logger$1","constructor","_defaultLinker","_initPromise","_linkers","linkers","defaultLinker","_queue","concurrency","tiemout","Promise","_initResolver","init","all","values","map","linker","catch","log","messageOrFactory","originParamsOrOptions","originOptions","add","originParams","eventName","params","ensuredParams","resolvedParams","type","flush","onIdle","extendStatics","__extends","__","__assign","__rest","__awaiter","thisArg","_arguments","generator","adopt","fulfilled","rejected","__generator","body","verb","__values","__read","ar","__spreadArray","to","from","pack","__await","__asyncGenerator","awaitReturn","resume","settle","fulfill","__asyncValues","IdentifyOperation","SpecialEventType","UNSET_VALUE","AMPLITUDE_PREFIX","STORAGE_PREFIX","DEFAULT_INSTANCE_NAME","AMPLITUDE_SERVER_URL","EU_AMPLITUDE_SERVER_URL","AMPLITUDE_BATCH_SERVER_URL","EU_AMPLITUDE_BATCH_SERVER_URL","UTM_CAMPAIGN","UTM_CONTENT","UTM_ID","UTM_MEDIUM","UTM_SOURCE","UTM_TERM","DCLID","FBCLID","GBRAID","GCLID","KO_CLICK_ID","LI_FAT_ID","MSCLKID","RDT_CID","TTCLID","TWCLID","WBRAID","BASE_CAMPAIGN","MAX_PROPERTY_KEYS","isValidObject","properties","isValidProperties","property","e_1","isValid","value_1","value_1_1","valueElement","e_1_1","Identify","userPropertyMap","OrderedIdentifyOperations","SUCCESS_MESSAGE","UNEXPECTED_ERROR_MESSAGE","MAX_RETRIES_EXCEEDED_MESSAGE","OPT_OUT_MESSAGE","MISSING_API_KEY_MESSAGE","INVALID_API_KEY","CLIENT_NOT_INITIALIZED","Status","buildResult","code","getGlobalScope","ampIntegrationContextName","legacyUUID","UUID","hex","globalScope","int","Timeline","client","plugin","existingPlugin","pluginName","plugins","_this","before","before_1","before_1_1","enrichment","enrichment_1","enrichment_1_1","e_2_1","destination","executeDestinations","e_2","eventClone","resolveResult","queue","identity","sessionId","optOut","createTrackEvent","eventInput","eventProperties","eventOptions","baseEvent","createIdentifyEvent","identify","identifyEvent","createGroupIdentifyEvent","groupType","groupName","groupIdentify","createGroupEvent","groupEvent","createRevenueEvent","revenue","returnWrapper","awaitable","AmplitudeCore","queueName","queuedFunctions","queuedFunctions_1","queuedFunctions_1_1","queuedFunction","userProperties","updatedProperties","nonOpProperties","opProperties","prop","pluginClass","RemoteConfigLocalStorage","apiKey","logger","failedRemoteConfigInfo","remoteConfigInfo","US_SERVER_URL","EU_SERVER_URL","DEFAULT_MAX_RETRIES","DEFAULT_TIMEOUT","RemoteConfigClient","serverZone","deliveryMode","callbackInfo","remotePromise","cachePromise","timeoutPromise","source","filteredConfig","retries","interval","_loop_1","this_1","state_1","abortController","timeoutId","res","remoteConfig","error_2","baseDelay","encodedApiKey","urlParams","LogLevel","PREFIX","Logger","logLevel","Revenue","productId","quantity","price","revenueType","currency","receipt","receiptSig","RevenueProperty","chunk","size","chunkSize","chunks","chunkIndex","getDefaultConfig","Config","defaultConfig","serverConfig","createServerConfig","getServerUrl","useBatch","serverUrl","_serverZone","RequestMetadata","getErrorMessage","getResponseBodyString","responseBodyString","Destination","unsent","list","useRetry","later","batches","batch","payload","errorMessage","eventWithoutExtra","status","dropIndex","dropIndexSet","tryable","dropUserIds","dropDeviceIds","throttledIndex","dropUserIdsSet","dropDeviceIdsSet","throttledIndexSet","updatedEvents","eventsToRemove","queuedContext","ApplicationContextProviderImpl","getLanguage","EventBridgeImpl","receiver","isEqual","obj1","obj2","primitive","typeA","typeB","primitive_1","primitive_1_1","isArrayA","isArrayB","sorted1","sorted2","result_1","ID_OP_SET","ID_OP_UNSET","ID_OP_CLEAR_ALL","ownProps","resArray","IdentityStoreImpl","actingUserProperties","actingIdentity","userId","deviceId","actions","e_3","actingProperties","_f","action","_g","_h","_j","_k","_l","e_3_1","originalIdentity","safeGlobal","AnalyticsConnector","instanceName","getAnalyticsConnector","setConnectorUserId","setConnectorDeviceId","IdentityEventSender","isNewSession","sessionTimeout","lastEventTime","timeSinceLastEvent","getCookieName","postKey","limit","getOldCookieName","userLanguage","getQueryParams","pairs","acc","curr","tryDecodeURIComponent","getStacktrace","ignoreDepth","trace","text","getClientLogConfig","getValueByStringPath","path","attr","getClientStates","paths","paths_1","paths_1_1","debugWrapper","fnName","getLogConfig","getStates","fnContext","debugContext","isUrlMatchAllowlist","url","allowlist","allowedUrl","MemoryStorage","CookieStorage","testStorage","testKey","decodedValue","decodeCookiesAsDefault","decodeCookiesWithDoubleUrlEncoding","cookie","match","expirationDays","expires","expireDate","date","str","getStorageKey","BrowserStorage","storage","BaseTransport","_serverUrl","_payload","responseJSON","_m","_o","_p","_q","_r","_t","_u","_v","_w","_x","statusCode","FetchTransport","_super","responseText","ServerZone","OfflineDisabled","DEFAULT_CSS_SELECTOR_ALLOWLIST","DEFAULT_DATA_ATTRIBUTE_PREFIX","DEFAULT_ACTION_CLICK_ALLOWLIST","CLICKABLE_ELEMENT_SELECTORS","DEFAULT_DEAD_CLICK_ALLOWLIST","DEFAULT_RAGE_CLICK_ALLOWLIST","DEFAULT_RAGE_CLICK_WINDOW_MS","DEFAULT_RAGE_CLICK_THRESHOLD","TEXT_READ_TIMEOUT","MAXIMUM_ENTRIES","RequestWrapperFetch","request","headersUnsafe","headers","headersSafe","headersObj_1","global","getBodySize","RequestWrapperXhr","bodyRaw","requestHeaders","bodyUnsafe","maxEntries","bodySize","TextEncoder","bodySafe","formData","total","ResponseWrapperFetch","headersOut_1","contentLength","clonedResponse","textPromise","ResponseWrapperXhr","headersString","headerLines","headerLines_1","headerLines_1_1","line","NetworkRequestEvent","timestamp","startTime","requestWrapper","duration","responseWrapper","endTime","serialized","isRequest","requestInfo","NetworkEventCallback","NetworkObserver","eventCallback","originalXhrOpen","originalXhrSend","originalXhrSetRequestHeader","originalFetch","requestType","typedError","durationStart","requestEvent","requestInit","timestamps","originalResponse","originalError","err_1","xhrProto","networkObserverContext","xhrSafe","responseHeaders","responseBodySize","headerName","headerValue","networkObserver","CampaignParser","utmCampaign","utmContent","utmId","utmMedium","utmSource","utmTerm","data","isTrackingEnabled","autocapture","isAttributionTrackingEnabled","isFileDownloadTrackingEnabled","isFormInteractionTrackingEnabled","isPageViewTrackingEnabled","isSessionTrackingEnabled","isNetworkTrackingEnabled","isElementInteractionsEnabled","isWebVitalsEnabled","isFrustrationInteractionsEnabled","getElementInteractionsConfig","getFrustrationInteractionsConfig","getNetworkTrackingConfig","getPageViewTrackingConfig","trackOn","trackHistoryChanges","eventType","pageCounter","isDefaultPageViewTrackingEnabled","getAttributionTrackingConfig","runQueuedFunctions","instance","convertProxyObjectToRealObject","name_1","isInstanceProxy","instanceProxy","VERSION","LIBPREFIX","BROWSER_PLATFORM","IP_ADDRESS","Context","time","lastEventId","nextEventId","MAX_ARRAY_LENGTH","LocalStorage","localStorage","droppedEventsCount","SessionStorage","XHRTransport","xhr","SendBeaconTransport","success","parseLegacyCookies","cookieStorage","deleteLegacyCookies","cookieName","cookies","decode","parseTime","num","integer","DEFAULT_EVENT_PREFIX","DEFAULT_FORM_START_EVENT","DEFAULT_FORM_SUBMIT_EVENT","DEFAULT_FILE_DOWNLOAD_EVENT","DEFAULT_SESSION_START_EVENT","DEFAULT_SESSION_END_EVENT","FILE_EXTENSION","FILE_NAME","LINK_ID","LINK_TEXT","LINK_URL","FORM_ID","FORM_NAME","FORM_DESTINATION","DEFAULT_IDENTITY_STORAGE","DEFAULT_SERVER_ZONE","BrowserConfig","appVersion","cookieOptions","defaultTracking","flushIntervalMillis","flushMaxRetries","flushQueueSize","identityStorage","ingestionMetadata","loggerProvider","minIdLength","offline","partnerId","plan","storageProvider","trackingOptions","transport","fetchRemoteConfig","debugLogsEnabled","networkTrackingOptions","createTransport","cache","useBrowserConfig","amplitudeInstance","legacyCookies","previousCookies","queryParams","ampTimestamp","isWithinTimeLimit","browserConfig","_y","_z","_0","_1","_2","_3","getTopLevelDomain","createCookieStorage","host","parts","levels","storageKey","domain","omitUndefined","defaultPageViewEvent","pageViewTrackingPlugin","amplitude","isTracking","localConfig","getDecodeURI","locationStr","decodedLocationStr","createPageViewEvent","locationHREF","getCampaignParams","shouldTrackOnPageLoad","previousURL","trackHistoryPageView","newURL","shouldTrackPageView","shouldTrackHistoryPageView","trackHistoryPageViewWrapper","target","state","unused","pageViewEvent","isCampaignEvent","$set","$unset","userProperties_1","trackingOption","newURLStr","oldURLStr","oldURL","newBaseStr","oldBaseStr","formInteractionTracking","observer","eventListeners","addEventListener","handler","removeClickListeners","setup","initializeFormTracking","window_1","addFormInteractionListener","form","hasFormChanged","formDestination","extractFormAction","stringOrUndefined","forms","mutations","mutation","node","execute","teardown","fileDownloadTracking","initializeFileDownloadTracking","addFileDownloadListener","ext","fileExtension","links","notified","detNotify","networkConnectivityCheckerPlugin","addNetworkListener","removeNetworkListeners","translateRemoteConfigToLocal","propertyNames","propertyNames_1","propertyNames_1_1","propertyName","updateBrowserConfigWithRemoteConfig","typedRemoteConfig","transformedAutocaptureRemoteConfig","transformedRcElementInteractions","exactAllowList","regexList","regexError","combinedPageUrlAllowlist","UNEXPECTED_NETWORK_ERROR_MESSAGE","SUCCESS_REMOTE_CONFIG","TIMEOUT_MESSAGE","REMOTE_CONFIG_SERVER_URL","REMOTE_CONFIG_SERVER_URL_STAGING","REMOTE_CONFIG_SERVER_URL_EU","RemoteConfigFetch","configKeys","configNamespace","fetchStartTime","configAPIResponse","namespaceConfig","controller","signal","configKey","parsedStatus","knownError","createRemoteConfigFetch","remoteConfigFetch.createRemoteConfigFetch","PLUGIN_NAME","FRUSTRATION_PLUGIN_NAME","AMPLITUDE_ELEMENT_CLICKED_EVENT","AMPLITUDE_ELEMENT_DEAD_CLICKED_EVENT","AMPLITUDE_ELEMENT_RAGE_CLICKED_EVENT","AMPLITUDE_ELEMENT_CHANGED_EVENT","AMPLITUDE_EVENT_PROP_ELEMENT_ID","AMPLITUDE_EVENT_PROP_ELEMENT_CLASS","AMPLITUDE_EVENT_PROP_ELEMENT_TAG","AMPLITUDE_EVENT_PROP_ELEMENT_TEXT","AMPLITUDE_EVENT_PROP_ELEMENT_HIERARCHY","AMPLITUDE_EVENT_PROP_ELEMENT_HREF","AMPLITUDE_EVENT_PROP_ELEMENT_POSITION_LEFT","AMPLITUDE_EVENT_PROP_ELEMENT_POSITION_TOP","AMPLITUDE_EVENT_PROP_ELEMENT_ARIA_LABEL","AMPLITUDE_EVENT_PROP_ELEMENT_ATTRIBUTES","AMPLITUDE_EVENT_PROP_ELEMENT_PARENT_LABEL","AMPLITUDE_EVENT_PROP_PAGE_URL","AMPLITUDE_EVENT_PROP_PAGE_TITLE","AMPLITUDE_EVENT_PROP_VIEWPORT_HEIGHT","AMPLITUDE_EVENT_PROP_VIEWPORT_WIDTH","AMPLITUDE_ORIGIN","AMPLITUDE_ORIGIN_EU","AMPLITUDE_ORIGIN_STAGING","AMPLITUDE_ORIGINS_MAP","AMPLITUDE_VISUAL_TAGGING_SELECTOR_SCRIPT_URL","AMPLITUDE_VISUAL_TAGGING_HIGHLIGHT_CLASS","isFunction","createErrorClass","createImpl","ctorFunc","UnsubscriptionError","errors","arrRemove","Subscription","initialTeardown","_parentage","_parentage_1","_parentage_1_1","parent_1","initialFinalizer","_finalizers","_finalizers_1","_finalizers_1_1","finalizer","execFinalizer","parent","EMPTY_SUBSCRIPTION","isSubscription","timeoutProvider","handle","reportUnhandledError","noop","errorContext","cb","Subscriber","EMPTY_OBSERVER","next","complete","SafeSubscriber","ConsumerObserver","partialObserver","handleUnhandledError","observerOrNext","defaultErrorHandler","observable","pipeFromArray","fns","prev","Observable","subscribe","operator","subscriber","isSubscriber","sink","promiseCtor","getPromiseCtor","Symbol_observable","operations","isObserver","hasLift","operate","liftedSource","createOperatorSubscriber","onNext","onComplete","onError","onFinalize","OperatorSubscriber","shouldUnsubscribe","closed_1","ObjectUnsubscribedError","Subject","subject","AnonymousSubject","observers","hasError","isStopped","thrownError","dateTimestampProvider","Action","scheduler","work","intervalProvider","AsyncAction","_id","_scheduler","_delay","errored","errorValue","Scheduler","schedulerActionCtor","AsyncScheduler","SchedulerAction","asyncScheduler","async","EMPTY","isScheduler","last","popScheduler","popNumber","defaultValue","isArrayLike","isInteropObservable","isAsyncIterable","createInvalidObservableTypeError","getSymbolIterator","iterator","isIterable","Symbol_iterator","readableStreamLikeToAsyncGenerator","readableStream","reader","done","isReadableStreamLike","innerFrom","fromInteropObservable","fromArrayLike","fromPromise","fromAsyncIterable","fromIterable","fromReadableStreamLike","obs","iterable","iterable_1","iterable_1_1","asyncIterable","process","asyncIterable_1","asyncIterable_1_1","executeSchedule","parentSubscription","repeat","scheduleSubscription","observeOn","subscribeOn","scheduleObservable","schedulePromise","scheduleArray","scheduleIterable","scheduleAsyncIterable","scheduleReadableStreamLike","scheduled","isValidDate","info","schedulerArg","each","_with","timeoutErrorFactory","meta","originalSourceSubscription","timerSubscription","lastValue","seen","startTimer","project","isArray","callOrApply","mapOneOrManyArgs","mergeInternals","concurrent","onBeforeNext","expand","innerSubScheduler","additionalFinalizer","buffer","active","isComplete","checkComplete","outerNext","doInnerSub","innerComplete","innerValue","bufferedValue","mergeMap","resultSelector","ii","mergeAll","nodeEventEmitterMethods","eventTargetMethods","jqueryMethods","fromEvent","isEventTarget","methodName","isNodeStyleEventEmitter","toCommonHandlerRegistry","isJQueryStyleEventEmitter","remove","subTarget","dueTime","intervalOrScheduler","intervalDuration","due","merge","sources","argsOrArgArray","filter","predicate","race","raceInit","subscriptions","closingNotifier","currentBuffer","debounceTime","activeTask","lastTime","emit","emitWhenIdle","targetTime","take","mapTo","delayWhen","delayDurationSelector","subscriptionDelay","pairwise","hasPrev","share","connector","resetOnError","resetOnComplete","resetOnRefCountZero","wrapperSource","connection","resetConnection","refCount","hasCompleted","hasErrored","cancelReset","reset","resetAndUnsubscribe","conn","dest","handleReset","onSubscriber","switchMap","innerSubscriber","innerIndex","outerIndex","throttle","durationSelector","leading","trailing","hasValue","sendValue","throttled","endThrottling","send","cleanupThrottling","startThrottle","throttleTime","duration$","BLOCKED_ATTRIBUTES","SENSITIVE_ELEMENT_ATTRIBUTE_ALLOWLIST","SVG_TAGS","HIGHLY_SENSITIVE_INPUT_TYPES","MAX_ATTRIBUTE_LENGTH","MAX_HIERARCHY_LENGTH","getElementProperties","tagName","siblings","el","prevSiblingTag","classes","attributes","attributesArray","filteredAttributes","isSensitiveElement","isNonSensitiveElement","filteredAttributes_1","filteredAttributes_1_1","getAncestors","targetEl","ancestors","current","getHierarchy","hierarchy","ensureListUnderLimit","bytesLimit","numChars","ensureUnicodePythonCompatible","nested","elements","entries","SENSITIVE_TAGS","isElementPointerCursor","actionType","computedStyle","createShouldTrackEvent","autocaptureOptions","isAlwaysCaptureCursorPointer","pageUrlAllowlist","shouldTrackEventResolver","tag","elementType","isCursorPointer","hasMatchAnyAllowedSelector","selector","isNonSensitiveString","ccRegex","ssnRegex","isTextNode","isContentEditable","getText","child","childText","getAttributesWithPrefix","attributeName","attributeKey","attributeValue","isEmpty","removeEmptyProperties","filteredProperties","getNearestLabel","labelElement","labelText","getClosestElement","selectors","getEventTagProps","constants.AMPLITUDE_EVENT_PROP_ELEMENT_TAG","constants.AMPLITUDE_EVENT_PROP_ELEMENT_TEXT","constants.AMPLITUDE_EVENT_PROP_PAGE_URL","asyncLoadScript","scriptElement","generateUniqueId","filterOutNonTrackableEvents","getEventProperties","dataAttributePrefix","rect","ariaLabel","nearestLabel","constants.AMPLITUDE_EVENT_PROP_ELEMENT_ID","constants.AMPLITUDE_EVENT_PROP_ELEMENT_CLASS","constants.AMPLITUDE_EVENT_PROP_ELEMENT_HIERARCHY","constants.AMPLITUDE_EVENT_PROP_ELEMENT_POSITION_LEFT","constants.AMPLITUDE_EVENT_PROP_ELEMENT_POSITION_TOP","constants.AMPLITUDE_EVENT_PROP_ELEMENT_ARIA_LABEL","constants.AMPLITUDE_EVENT_PROP_ELEMENT_ATTRIBUTES","constants.AMPLITUDE_EVENT_PROP_ELEMENT_PARENT_LABEL","constants.AMPLITUDE_EVENT_PROP_PAGE_TITLE","constants.AMPLITUDE_EVENT_PROP_VIEWPORT_HEIGHT","constants.AMPLITUDE_EVENT_PROP_VIEWPORT_WIDTH","constants.AMPLITUDE_EVENT_PROP_ELEMENT_HREF","addAdditionalEventProperties","selectorAllowlist","isCapturingCursorPointer","isElementBasedEvent","closestTrackedAncestor","getDataSource","dataSource","contextElement","scopingElement","extractDataFromDataSource","sourceElement","executeActions","ev","WindowMessenger","origin","endpoint","isElementSelectable","cssSelectorAllowlist","actionClickAllowlist","amplitudeVisualTaggingSelectorInstance","eventData","actionData_1","RAGE_CLICK_THRESHOLD","trackClicks","allObservables","shouldTrackEvent","evaluateTriggers","clickObservable","comparisonTrigger","targetChanged","samePos","timeoutTrigger","triggers","bufferedClicks","click","clicks","clickType","clicks_1","clicks_1_1","trackChange","changeObservable","filteredChangeObservable","changeEvent","trackActionClick","shouldTrackActionClick","mutationObservable","navigateObservable","filteredClickObservable","closestActionClickEl","clickEvent","changeObservables","mutationOrNavigate","actionClicks","actionClick","createMutationObservable","mutationObserver","createClickObservable","matchEventToFilter","eventTypeToBrowserEventMap","groupLabeledEventIdsByEventType","labeledEvents","groupedLabeledEvents","browserEvent","labeledEvents_1","labeledEvents_1_1","le","def","createLabeledEventToTriggerMap","e_4","labeledEventToTriggerMap","triggers_1","triggers_1_1","trigger","condition","eventId","existingTriggers","e_4_1","matchEventToLabeledEvents","matchLabeledEventsToTriggers","leToTriggerMap","e_5","e_6","matchingTriggers","labeledEvents_2","labeledEvents_2_1","triggers_2","triggers_2_1","e_6_1","e_5_1","TriggerEvaluator","e_7","pageActions","matchingLabeledEvents","matchingTriggers_1","matchingTriggers_1_1","e_7_1","createTriggerEvaluator","ObservablesEnum","autocapturePlugin","visualTaggingOptions","constants.PLUGIN_NAME","createObservables","change","navigate","recomputePageActionsData","remotePageActions","clickTrackingSubscription","changeSubscription","actionClickSubscription","remoteConfigFetch","error_1","constants.AMPLITUDE_ORIGINS_MAP","subscriptions_1","subscriptions_1_1","subscription","DEAD_CLICK_TIMEOUT","trackDeadClick","shouldTrackDeadClick","deadClickEvent","RAGE_CLICK_WINDOW_MS","trackRageClicks","shouldTrackRageClick","clickWindow","clickPtr","firstClick","lastClick","rageClickEvent","frustrationPlugin","constants.FRUSTRATION_PLUGIN_NAME","rageCssSelectors","deadCssSelectors","combinedCssSelectors","enrichedMutationObservable","rageClickSubscription","deadClickSubscription","AMPLITUDE_NETWORK_REQUEST_EVENT","DEFAULT_STATUS_CODE_RANGE","wildcardMatch","escapedPattern","regexPattern","regex","isStatusCodeInRange","range","ranges","ranges_1","ranges_1_1","start","end","isCaptureRuleMatch","rule","hostname","statusCodeRange","parseUrl","currentHref","urlObj","fragment","href","hrefWithoutQueryOrHash","isAmplitudeNetworkRequestEvent","bodyObj","shouldTrackNetworkEvent","networkEvent","ignoreHost","isMatch_1","trackNetworkEvents","networkObservable","filteredNetworkObservable","requestBodySize","networkAnalyticsEvent","networkCapturePlugin","eventWithProperties","networkRequestSubscription","WEB_VITALS_EVENT_NAME","d$1","__publicField","k$1","N$1","getMetricStartTime","metric","processMetric","webVitalsPlugin","visibilityListener","doc","location","locationHref","webVitalsPayload","onLCP","onFCP","onINP","onCLS","onTTFB","domainWithoutSubdomain","isDirectTraffic","isNewCampaign","previous","referring_domain","currentCampaign","prevReferringDomain","previousCampaign","isExcludedReferrer","hasNewCampaign","hasNewDomain","excludeReferrers","referringDomain","createCampaignEvent","campaign","campaignParameters","getDefaultExcludedReferrers","cookieDomain","WebAttribution","isEventInNewSession","event_id","campaignEvent","AmplitudeBrowser","userIdOrOptions","maybeOptions","browserOptions","attributionTrackingOptions","querySessionId","lastFetch","promises","previousSessionId","isCampaignEventTracked","shouldSetSessionIdOnNewCampaign","browserConfigCopy","createInstance","extendSession","getDeviceId","getSessionId","getUserId","logEvent","setDeviceId","setGroup","setOptOut","setSessionId","setTransport","setUserId","track","AmplitudeLinker","onAfterInit","_key","_onAfterInit","_options","setUserID","userID","resetUser","setUserProperty","set","window","__ZVZO_LOGGER_DEBUG__","console","DevConsoleLinker","isDev","_isDev","JSON","stringify","NoneLinker","win","loc","_array_like_to_array","asyncGeneratorStep","gen","_next","_throw","arg","_async_to_generator","_construct","Parent","Class","_is_native_reflect_construct","Constructor","_set_prototype_of","_defineProperties","props","descriptor","_create_class","protoProps","staticProps","_extends","_get_prototype_of","_inherits","subClass","superClass","_instanceof","left","right","_is_native_function","_object_without_properties_loose","excluded","sourceKeys","_type_of","_unsupported_iterable_to_array","_wrap_native_super","_cache","Wrapper","_create_for_of_iterator_helper_loose","allowArrayLike","_ts_generator","_ts_values","__defProp","__defNormalProp","__defProp$1","__defNormalProp$1","__publicField$1","NodeType$3","NodeType2","testableAccessors$1","testableMethods$1","untaintedBasePrototype$1","isAngularZonePresent$1","getUntaintedPrototype$1","defaultObj","defaultPrototype","accessorNames","isUntaintedAccessors","accessor","_a2","methodNames","isUntaintedMethods","iframeEl","untaintedObject","untaintedAccessorCache$1","getUntaintedAccessor$1","cacheKey","untaintedPrototype","untaintedAccessor","untaintedMethodCache$1","getUntaintedMethod$1","untaintedMethod","childNodes$1","n2","parentNode$1","parentElement$1","textContent$1","contains$1","other","getRootNode$1","host$1","styleSheets$1","shadowRoot$1","querySelector$1","querySelectorAll$1","mutationObserverCtor$1","index$1","isElement","isShadowRoot","hostEl","isNativeShadowDom","shadowRoot2","fixBrowserCompatibilityIssuesInCSS","cssText","escapeImportStatement","rule2","statement","stringifyStylesheet","s2","rules2","sheetHref","stringifiedRules","stringifyRule","isCSSImportRule","importStringified","absolutifyURLs","ruleStringified","isCSSStyleRule","fixSafariColons","cssStringified","Mirror","_proto","childNode","node2","oldNode","createMirror$2","maskInputValue","param","maskInputOptions","maskInputFn","actualType","toLowerCase","ORIGINAL_ATTRIBUTE_NAME","is2DCanvasBlank","canvas","ctx","x2","getImageData","originalGetImageData","pixelBuffer","pixel","getInputType","extractFileExtension","baseURL","extractOrigin","URL_IN_CSS_REF","URL_PROTOCOL_MATCH","URL_WWW_MATCH","DATA_URI","quote1","path1","quote2","path2","path3","filePath","maybeQuote","stack","_iterator","_step","part","normalizeCssString","splitCssText","style","childNodes2","splits","cssTextNorm","i2","textContentNorm","bit","splitNorm","markCssSplits","tagNameRegex","IGNORED_NODE","genId","getValidTagName$1","processedTagName","canvasService","canvasCtx","SRCSET_NOT_SPACES","SRCSET_COMMAS_OR_SPACES","getAbsoluteSrcsetString","pos","collectCharacters","regEx","chars2","output","absoluteToDoc","descriptorsStr","inParens","c2","cachedDocument","getHref","isSVGElement","customHref","transformAttribute","ignoreAttribute","_value","_isBlockedElement","blockClass","blockSelector","eIndex","className","classMatchesRegex","checkAncestors","needMaskingText","maskTextClass","maskTextSelector","onceIframeLoaded","iframeLoadTimeout","fired","readyState","blankUrl","onceStylesheetLoaded","link","styleSheetLoadTimeout","styleSheetLoaded","serializeNode","mirror2","needsMask","inlineStylesheet","_options_maskInputOptions","maskTextFn","_options_dataURLOptions","dataURLOptions","inlineImages","recordCanvas","keepIframeSrcFn","_options_newlyAddedElement","newlyAddedElement","_options_cssCaptured","cssCaptured","rootId","getRootId","serializeElementNode","serializeTextNode","docId","parentTagName","textContent2","isStyle","isScript","needBlock","stylesheet","cssText1","checked","canvasDataURL","blankCanvas","blankCanvasDataURL","image","imageSrc","priorCrossOrigin","recordInlineImage","mediaAttributes","_n2_getBoundingClientRect","width","height","isCustomElement","lowerIfExists","maybeAttr","slimDOMExcluded","slimDOMOptions","serializeNodeWithId","_options_skipChild","skipChild","_options_inlineStylesheet","_options_inlineImages","_options_recordCanvas","onSerialize","onIframeLoad","_options_iframeLoadTimeout","onStylesheetLoad","_options_stylesheetLoadTimeout","stylesheetLoadTimeout","_options_keepIframeSrcFn","_options_preserveWhiteSpace","preserveWhiteSpace","_serializedNode","serializedNode","recordChild","shadowRootEl","bypassOptions","childN","serializedChildNode","shadowRootEl1","_iterator1","_step1","childN1","serializedChildNode1","iframeDoc","serializedIframeNode","serializedLinkNode","snapshot","tmp","_ref_blockClass","_ref_blockSelector","_ref_maskTextClass","_ref_maskTextSelector","_ref_inlineStylesheet","_ref_inlineImages","_ref_recordCanvas","_ref_maskAllInputs","maskAllInputs","_ref_slimDOM","slimDOM","_ref_keepIframeSrcFn","getDefaultExportFromCjs$1","getAugmentedNamespace$1","f2","a22","picocolors_browser$1","x$1","create$1","picocolors_browserExports$1","__viteBrowserExternal$2","__viteBrowserExternal$1$1","require$$2$1","pico$1","terminalHighlight$1$1","CssSyntaxError$3$1","Error1","CssSyntaxError","column","file","plugin22","color","css","lines","maxWidth","mark","aside","_pico$1_createColors","bold","gray","red","index2","number","gutter","spacing","cssSyntaxError$1","symbols$1","DEFAULT_RAW$1","capitalize$1","Stringifier$2$1","Stringifier","builder","semicolon","detect","buf","depth","indent","between","after","string","own","root2","raw","stringifier$1","Stringifier$1$1","stringify$4$1","stringify_1$1","isClean$2$1","my$2$1","CssSyntaxError$2$1","Stringifier2$1","stringify$3$1","cloneNode$1","Node$4$1","Node2","defaults","overrides","keepBetween","_this_rangeBy","stringRepresentation","defaultType","_len","nodes","bookmark","foundSelf","result2","inputs","fixed","emitInputs","inputsNextIndex","inputId","input2","stringifier2","node$1","Node$3$1","Declaration$4$1","Declaration","declaration$1","urlAlphabet$1","nanoid$1$1","nonSecure$1","SourceMapConsumer$2$1","SourceMapGenerator$2$1","existsSync$1","readFileSync$1","dirname$1$1","join$1","fromBase64$1","PreviousMap$2$1","PreviousMap","baseCharsetUri","baseUri","charsetUri","uri","encoding","sourceMapString","comments","prevPath","map1","previousMap$1","SourceMapConsumer$1$1","SourceMapGenerator$1$1","fileURLToPath$1","pathToFileURL$1$1","isAbsolute$1","resolve$1$1","nanoid$2","terminalHighlight$2","CssSyntaxError$1$1","PreviousMap$1$1","fromOffsetCache$1","sourceMapAvailable$1$1","pathAvailable$1$1","Input$4$1","Input","endLine","endColumn","pos1","pos2","offset","lastLine","lineToIndex","prevIndex","l2","min","max","mid","consumer","fromUrl","json","_iter","input$1","SourceMapConsumer$3","SourceMapGenerator$3","dirname$2","relative$1","resolve$2","sep$1","pathToFileURL$2","Input$3$1","sourceMapAvailable$2","pathAvailable$2","MapGenerator$2$1","MapGenerator","stringify2","cssString","content","eol","noSource","mapping","childless","annotation","cached","already","fileURL","mapGenerator$1","Node$2$1","Comment$4$1","Comment","comment$1","isClean$1$1","my$1$1","Declaration$3$1","Comment$3$1","Node$1$1","parse$4$1","Rule$4$1","AtRule$4$1","Root$6$1","cleanSource$1","markDirtyUp$1","Container$7$1","Container","_node2","exist","existIndex","sample","i21","processed","decl","e2","dependant","container$1","Container$6$1","LazyResult$4$1","Processor$3$1","Document$3$1","Document2","lazy","document$1$1","Warning$2$1","Warning","opt","warning$1","Warning$1$1","Result$3$1","Result","processor2","warning2","result$1","SINGLE_QUOTE$1","DOUBLE_QUOTE$1","BACKSLASH$1","SLASH$1","NEWLINE$1","SPACE$1","FEED$1","TAB$1","CR$1","OPEN_SQUARE$1","CLOSE_SQUARE$1","OPEN_PARENTHESES$1","CLOSE_PARENTHESES$1","OPEN_CURLY$1","CLOSE_CURLY$1","SEMICOLON$1","ASTERISK$1","COLON$1","AT$1","RE_AT_END$1","RE_WORD_END$1","RE_BAD_BRACKET$1","RE_HEX_ESCAPE$1","tokenize$1","ignore","quote","escape","escaped","escapePos","currentToken","returned","position","unclosed","what","endOfFile","nextToken","ignoreUnclosed","controlChar","back","token","Container$5$1","AtRule$3$1","AtRule","_Container$5$1_prototype_append","_Container$5$1_prototype_prepend","atRule$1","Container$4$1","LazyResult$3$1","Processor$2$1","Root$5$1","Root","root$1","list$2$1","spaces","separators","split","func","inQuote","prevQuote","letter","list_1$1","Container$3$1","list$1$1","Rule$3$1","Rule","sep2","rule$1","Declaration$2$1","tokenizer2$1","Comment$2$1","AtRule$2$1","Root$4$1","Rule$2$1","SAFE_COMMENT_NEIGHBOR$1","findLastWithPosition$1","tokens","Parser$1$1","Parser","shift","open","brackets","colon","founded","_step_value","customProperty","firstSpaces","type1","hasWord","bracket","clean","lastTokenType","parser$1","Container$2$1","Parser2$1","Input$2$1","parse$3$1","parser2","parse_1$1","isClean$3","my$3","MapGenerator$1$1","stringify$2$1","Container$1$1","Document$2$1","Result$2$1","parse$2$1","Root$3$1","TYPE_TO_CLASS_NAME$1","PLUGIN_PROPS$1","NOT_VISITORS$1","CHILDREN$1","isPromise$1","getEvents$1","toStack$1","cleanMarks$1","postcss$2$1","LazyResult$2$1","LazyResult","onRejected","pluginVer","runtimeVer","promise1","_loop","_state","visitor","roots","subRoot","onFulfilled","visitors","visit2","_visitors_visit2_visitorIndex","lazyResult$1","MapGenerator2$1","stringify$1$1","parse$1$1","Result$1$1","NoWorkResult$1$1","NoWorkResult","_map_generate","generatedCSS","generatedMap","noWorkResult$1","NoWorkResult2$1","LazyResult$1$1","Document$1$1","Root$2$1","Processor$1$1","Processor","normalized","processor$1","Declaration$1$1","PreviousMap2$1","Comment$1$1","AtRule$1$1","Input$1$1","Root$1$1","Rule$1$1","fromJSON$1$1","ownInputs","inputHydrated","_defaults_source","fromJSON_1$1","CssSyntaxError2$1","Declaration2$1","LazyResult2$1","Container2$1","Processor2$1","stringify$5","fromJSON$2","Document22","Warning2$1","Comment2$1","AtRule2$1","Result2$1","Input2$1","parse$5","list$3","Rule2$1","Root2$1","Node2$1","postcss$3","initializer","warningPrinted","creator","transformer","processOpts","pluginOpts","postcss_1$1","postcss$1$1","__defProp2","__defNormalProp2","__publicField2","getDefaultExportFromCjs","getAugmentedNamespace","picocolors_browser","create","picocolors_browserExports","__viteBrowserExternal","__viteBrowserExternal$1","pico","terminalHighlight$1","CssSyntaxError$3","CssSyntaxError2","_pico_createColors","cssSyntaxError","symbols","DEFAULT_RAW","capitalize","Stringifier$2","Stringifier2","stringifier","Stringifier$1","stringify$4","stringify_1","isClean$2","my$2","CssSyntaxError$2","Stringifier22","stringify$3","cloneNode","Node$4","Node3","Node$3","Declaration$4","Declaration2","declaration","urlAlphabet","nanoid$1","nonSecure","SourceMapConsumer$2","SourceMapGenerator$2","existsSync","readFileSync","dirname$1","join","fromBase64","PreviousMap$2","PreviousMap2","previousMap","SourceMapConsumer$1","SourceMapGenerator$1","fileURLToPath","pathToFileURL$1","isAbsolute","resolve$1","nanoid","terminalHighlight","CssSyntaxError$1","PreviousMap$1","fromOffsetCache","sourceMapAvailable$1","pathAvailable$1","Input$4","Input2","SourceMapConsumer","SourceMapGenerator","dirname","relative","resolve$3","sep","pathToFileURL","Input$3","sourceMapAvailable","pathAvailable","MapGenerator$2","MapGenerator2","mapGenerator","Node$2","Comment$4","Comment2","comment","isClean$1","my$1","Declaration$3","Comment$3","Node$1","parse$4","Rule$4","AtRule$4","Root$6","cleanSource","markDirtyUp","Container$7","Container2","container","Container$6","LazyResult$4","Processor$3","Document$3","Document23","document$1$2","Warning$2","Warning2","warning","Warning$1","Result$3","Result2","SINGLE_QUOTE","DOUBLE_QUOTE","BACKSLASH","SLASH","NEWLINE","SPACE","FEED","TAB","CR","OPEN_SQUARE","CLOSE_SQUARE","OPEN_PARENTHESES","CLOSE_PARENTHESES","OPEN_CURLY","CLOSE_CURLY","SEMICOLON","ASTERISK","COLON","AT","RE_AT_END","RE_WORD_END","RE_BAD_BRACKET","RE_HEX_ESCAPE","tokenize","Container$5","AtRule$3","AtRule2","_Container$5_prototype_append","_Container$5_prototype_prepend","atRule","Container$4","LazyResult$3","Processor$2","Root$5","Root2","root","list$2","list_1","Container$3","list$1","Rule$3","Rule2","Declaration$2","tokenizer22","Comment$2","AtRule$2","Root$4","Rule$2","SAFE_COMMENT_NEIGHBOR","findLastWithPosition","Parser$1","Parser2","parser","Container$2","Parser22","Input$2","parse$3","parse_1","isClean","my","MapGenerator$1","stringify$2","Container$1","Document$2","Result$2","parse$2","Root$3","TYPE_TO_CLASS_NAME","PLUGIN_PROPS","NOT_VISITORS","CHILDREN","getEvents","toStack","cleanMarks","postcss$2","LazyResult$2","LazyResult2","lazyResult","MapGenerator22","stringify$1","parse$1","Result$1","NoWorkResult$1","NoWorkResult2","noWorkResult","NoWorkResult22","LazyResult$1","Document$1","Root$2","Processor$1","Processor2","processor","Declaration$1","PreviousMap22","Comment$1","AtRule$1","Input$1","Root$1","Rule$1","fromJSON$1","fromJSON_1","CssSyntaxError22","Declaration22","LazyResult22","Container22","Processor22","fromJSON","Document222","Warning22","Comment22","AtRule22","Result22","Input22","parse","Rule22","Root22","Node22","postcss","postcss_1","postcss$1","BaseRRNode","_args","_newChild","_refChild","_node","childIterator","testableAccessors","testableMethods","untaintedBasePrototype","isAngularZonePresent","getUntaintedPrototype","untaintedAccessorCache","getUntaintedAccessor","untaintedMethodCache","getUntaintedMethod","childNodes","parentNode","parentElement","textContent","contains","getRootNode","styleSheets","shadowRoot","querySelector","querySelectorAll","mutationObserverCtor","DEPARTED_MIRROR_ACCESS_WARNING","_mirror","wait","remaining","hookSetter","isRevoked","patch","replacement","wrapped","nowTimestamp","getWindowScroll","getWindowHeight","getWindowWidth","closestElementOfNode","isBlocked","isSerialized","isIgnored","isAncestorRemoved","legacy_isTouchEvent","polyfill$1","isSerializedIframe","isSerializedStylesheet","hasShadowRoot","StyleSheetMirror","_this_styleIDMap_get","newId","getShadowHost","shadowHost","getRootShadowHost","rootShadowHost","shadowHostInDom","inDom","EventType","EventType2","IncrementalSource","IncrementalSource2","MouseInteractions","MouseInteractions2","PointerTypes","PointerTypes2","CanvasContext","CanvasContext2","MediaInteractions","MediaInteractions2","NodeType","isNodeInLinkedList","DoubleLinkedList","current1","moveKey","parentId","MutationBuffer","adds","addedIds","addList","getNextId","ns","nextId","pushAdd","parentTag","currentN","iframe","childSn","isParentRemoved","n21","isAncestorInSet","candidate","tailNode","parentId1","nextId1","unhandledNode","parentId2","attribute","diffAsStr","unchangedAsStr","textarea","value1","old","pname","newValue","newPriority","pname1","nodeId","deepDelete","processRemoves","targetId","addsSet","n22","removes","_isParentRemoved","_mirror2","_isAncestorInSet","errorHandler","registerErrorHandler","unregisterErrorHandler","callbackWrapper","rrwebWrapped","rest","mutationBuffers","getEventTarget","initMutationObserver","rootEl","mutationBuffer","initMoveObserver","mousemoveCb","sampling","threshold","callbackThreshold","positions","timeBaseline","wrappedCb","totalOffset","updatePosition","clientX","clientY","initMouseInteractionObserver","mouseInteractionCb","disableMap","currentPointerType","getHandler","eventKey","pointerType","thisEventKey","initScrollObserver","scrollCb","scrollLeftTop","initViewportResizeObserver","param1","viewportResizeCb","lastH","lastW","updateDimension","INPUT_TAGS","lastInputValueMap","initInputObserver","inputCb","ignoreClass","ignoreSelector","userTriggeredOnInput","eventHandler","userTriggered","isChecked","cbWithDedup","text2","v2","lastInputValue","currentWindow","propertyDescriptor","hookProperties","_handlers","getNestedCSSRulePositions","recurse","childRule","hasNestedCSSRule","rules21","index21","getIdAndStyleId","sheet","styleMirror","styleId","initStyleSheetObserver","styleSheetRuleCb","stylesheetManager","insertRule","argumentsList","_getIdAndStyleId","styleBlock","deleteRule","replace","replaceSync","supportedNestedCSSRuleTypes","canMonkeyPatchNestedCSSRule","unmodifiedFunctions","typeKey","initAdoptedStyleSheetObserver","host2","hostId","patchTarget","originalPropertyDescriptor","_a3","sheets","initStyleDeclarationObserver","styleDeclarationCb","ignoreCSSAttributes","setProperty","priority","removeProperty","initMediaInteractionObserver","mediaInteractionCb","volume","muted","playbackRate","loop","initFontObserver","fontCb","fontMap","originalFontFace","family","descriptors","fontFace","restoreHandler","initSelectionObserver","selectionCb","collapsed","updateSelection","selection","startContainer","startOffset","endContainer","endOffset","blocked","initCustomElementObserver","customElementCb","mergeHooks","o2","hooks","mutationCb","canvasMutationCb","_hooks","initObservers","mousemoveHandler","mouseInteractionHandler","scrollHandler","viewportResizeHandler","inputHandler","mediaInteractionHandler","styleSheetObserver","adoptedStyleSheetObserver","styleDeclarationObserver","fontObserver","selectionObserver","customElementObserver","pluginHandlers","plugin3","CrossOriginIframeMirror","generateIdFn","remoteId","idToRemoteMap","remoteToIdMap","idToRemoteIdMap","remoteIdToIdMap","ids","IframeManager","crossOriginMessageEvent","iframeSourceWindow","transformedEvent","iframeMirror","ShadowDomManager","iframeElement","manager","option","sRoot","chars","lookup","i$1","encode","arraybuffer","bytes","base64","canvasVarMap","variableListFor$1","ctor","contextMap","saveWebGLVar","isInstanceOfWebGLObject","list2","serializeArg","name1","name2","name3","src","name4","src1","name5","name6","serializeArgs","webGLConstructorNames","supportedWebGLConstructorNames","initCanvas2DMutationObserver","recordArgs","hookHandler","props2D","getNormalizedContextName","contextType","initCanvasContextObserver","setPreserveDrawingBufferToTrue","ctxName","contextAttributes","patchGLPrototype","prototype","initCanvasWebGLMutationObserver","_handlers1","encodedJs","decodeBase64","blob","WorkerWrapper","objURL","worker","CanvasManager","newFrame","_options_sampling","fps","canvasContextReset","snapshotInProgressMap","_e2_data","timeBetweenSnapshots","lastSnapshotTime","rafId","getCanvas","matchedCanvas","takeCanvasSnapshots","_this1","bitmap","canvas2DReset","canvasWebGL1and2Reset","setLatestRAFTimestamp","_values","valuesWithType","StylesheetManager","linkEl","styles","r2","adoptedStyleSheetData","_linkEl","ProcessedNodeManager","thisBuffer","buffers","wrappedEmit","takeFullSnapshot$1","canvasManager","recording","cleanFrame","mirror","record","checkoutEveryNms","checkoutEveryNth","_options_blockClass","_options_blockSelector","_options_ignoreClass","_options_ignoreSelector","_options_maskTextClass","_options_maskTextSelector","_maskInputOptions","_slimDOMOptions","packFn","mousemoveWait","_options_recordDOM","recordDOM","_options_recordCrossOriginIframes","recordCrossOriginIframes","_options_recordAfter","recordAfter","_options_userTriggeredOnInput","_options_collectFonts","collectFonts","_options_ignoreCSSAttributes","errorHandler2","inEmittingFrame","passEmitsToParent","lastFullSnapshotEvent","incrementalSnapshotCount","eventProcessor","isCheckout","exceedCount","exceedTime","wrappedMutationEmit","wrappedScrollEmit","wrappedCanvasMutationEmit","wrappedAdoptedStyleSheetEmit","iframeManager","processedNodeManager","shadowDomManager","observe","t2","setImmediate","builtInProp","cycle","schedulingQueue","ToString","Item","schedule","isThenable","_then","oType","notify","notifyIsolated","chain","ret","msg","defWrapper","MakeDefWrapper","iteratePromises","resolver","rejecter","idx","MakeDef","NpoPromise","executor","failure","PromisePrototype","msgs","PromisePolyfill","MAX_RECORDING_MS","MAX_VALUE_FOR_MIN_RECORDING_MS","ArrayProto","FuncProto","ObjProto","slice","toString","hasOwnProperty","windowConsole","navigator","document$1","windowOpera","screen","nativeBind","nativeForEach","nativeIndexOf","nativeMap","nativeIsArray","breaker","console$1","log_func_with_prefix","console_with_prefix","safewrap","safewrapClass","klass","proto","bound","results","found","needle","subclass","superclass","pad","mixed_val","escapable","holder","gap","mind","partial","at","ch","escapee","uffff","white","word","object","b64","o1","o3","h1","h2","h3","h4","bits","ac","enc","tmp_arr","utftext","stringl","c1","uuid","BLOCKED_UA_STRS","ua","formdata","arg_separator","use_val","use_key","regexS","nameEQ","ca","seconds","is_cross_subdomain","is_secure","is_cross_site","domain_override","cdomain","secure","extract_domain","days","new_cookie_val","_testStorageSupported","supported","cheap_guid","_localStorageSupported","localStorageSupported","forceCheck","_sessionStorageSupported","sessionStorageSupported","_storageWrapper","is_supported_fn","log_error","register_event","oldSchool","useCapture","ontype","old_handler","makeHandler","new_handler","old_handlers","fixEvent","old_result","new_result","TOKEN_MATCH_REGEX","getAllChildren","bad_whitespace","hasClass","elem","getElementsBySelector","foundCount","currentContextIndex","currentContext","token_match","attrName","attrOperator","attrValue","checkFunction","CAMPAIGN_KEYWORDS","CLICK_IDS","default_value","kw","kwkey","idkey","referrer","search","keyword","user_agent","vendor","opera","browser","versionRegexs","matches","extra_props","batchedThrottle","waitMs","throttledItems","returnValue","maxlen","guid","SIMPLE_DOMAIN_MATCH_REGEX","DOMAIN_MATCH_REGEX","domain_regex","tld","isOnline","onLine","NOOP_FUNC","JSONStringify","JSONParse","MIXPANEL_DB_NAME","RECORDING_EVENTS_STORE_NAME","RECORDING_REGISTRY_STORE_NAME","DB_VERSION","OBJECT_STORES","IDBStorageWrapper","storeName","openRequest","db","dbOrError","mode","storeCb","doTransaction","transaction","objectStore","req","GDPR_DEFAULT_PERSISTENCE_PREFIX","optIn","_optInOut","hasOptedIn","_getStorageValue","hasOptedOut","_hasDoNotTrackFlagOn","optedOut","addOptOutCheckMixpanelLib","_addOptOutCheck","addOptOutCheckMixpanelPeople","addOptOutCheckMixpanelGroup","clearOptInOut","_getStorage","_getStorageKey","win$1","nav","hasDntOn","dntValue","optValue","getConfigValue","ignoreDnt","persistenceType","persistencePrefix","logger$6","SharedLock","lockedCB","pid","pollIntervalMS","timeoutMS","keyX","keyY","keyZ","waitFor","getSetY","valY","criticalSection","removeLock","LocalStorageWrapper","storageOverride","logger$5","RequestQueue","queueEntry","flushInterval","queueEntries","enqueueItem","storedQueue","succeeded","batchSize","idsInBatch","filterOutIDsAndInvalid","items","idSet","filteredItems","removeFromStorage","updatePayloads","existingItems","itemsToUpdate","newItems","newPayload","storageEntry","MAX_RETRY_INTERVAL_MS","logger$4","RequestBatcher","flushMS","currentBatchSize","attemptSecondaryFlush","dataForRequest","transformedItems","addPayload","itemId","removeItemsFromQueue","batchSendCallback","retryMS","halvedBatchSize","requestOptions","isRecordingExpired","serializedRecording","RECORD_ENQUEUE_THROTTLE_MS","logger$3","CompressionStream","RECORDER_BATCHER_LIB_CONFIG","ACTIVE_SOURCES","isUserEvent","SessionRecording","usePersistence","userIdInfo","configVar","shouldStopBatcher","resetIdleTimeout","idleTimeoutMs","maxTimeoutMs","skipFlush","flushPromise","onOptOut","tabId","currentReplayId","reqParams","reqBody","onSuccess","responseBody","apiHost","numEvents","replayId","batchStartTime","batchEndTime","hasFullSnapshot","replayLengthMs","eventsJson","jsonStream","gzipStream","compressedBlob","RecordingRegistry","serializedRecordings","unloadPromises","sessionRecording","logger$2","MixpanelRecorder","mixpanelInstance","rrwebRecord","sharedLockStorage","onIdleTimeout","onMaxLengthReached","onBatchSent","sessionRecordingOptions","disableActiveRecording","stopRecordingPromise","startNewIfInactive","activeSerializedRecording","EV_CHANGE","EV_CLICK","EV_HASHCHANGE","EV_MP_LOCATION_CHANGE","EV_POPSTATE","EV_SCROLLEND","EV_SUBMIT","CLICK_EVENT_PROPS","OPT_IN_CLASSES","OPT_OUT_CLASSES","SENSITIVE_DATA_CLASSES","TRACKED_ATTRS","logger$1","getClasses","classList","getClassName","cls","getPreviousElementSibling","isElementNode","getPropertiesFromElement","blockAttrsSet","extraAttrs","allowElementCallback","allowSelectors","elId","shouldTrackElementDetails","attrVal","shouldTrackValue","nthChild","nthOfType","currentElem","getPropsForDOMEvent","blockAttrs","blockElementCallback","blockSelectors","captureTextContent","captureExtraAttrs","capturedForHeatMap","shouldTrackDomEvent","isElementAllowed","isElementBlocked","targetElementList","curEl","isTag","elementsJson","explicitNoTrack","shouldTrackDetails","docElement","elementText","getSafeText","guessRealClickTarget","targetProps","elText","composedPath","sel","minDOMApisSupported","testEl","elClasses","sensitiveNameRegex","DEFAULT_RAGE_CLICK_THRESHOLD_PX","DEFAULT_RAGE_CLICK_TIMEOUT_MS","DEFAULT_RAGE_CLICK_CLICK_COUNT","RageClickTracker","thresholdPx","timeoutMs","clickCount","AUTOCAPTURE_CONFIG_KEY","LEGACY_PAGEVIEW_CONFIG_KEY","PAGEVIEW_OPTION_FULL_URL","PAGEVIEW_OPTION_URL_WITH_PATH_AND_QUERY_STRING","PAGEVIEW_OPTION_URL_WITH_PATH","CONFIG_ALLOW_ELEMENT_CALLBACK","CONFIG_ALLOW_SELECTORS","CONFIG_ALLOW_URL_REGEXES","CONFIG_BLOCK_ATTRS","CONFIG_BLOCK_ELEMENT_CALLBACK","CONFIG_BLOCK_SELECTORS","CONFIG_BLOCK_URL_REGEXES","CONFIG_CAPTURE_EXTRA_ATTRS","CONFIG_CAPTURE_TEXT_CONTENT","CONFIG_SCROLL_CAPTURE_ALL","CONFIG_SCROLL_CHECKPOINTS","CONFIG_TRACK_CLICK","CONFIG_TRACK_INPUT","CONFIG_TRACK_PAGEVIEW","CONFIG_TRACK_RAGE_CLICK","CONFIG_TRACK_SCROLL","CONFIG_TRACK_SUBMIT","CONFIG_DEFAULTS$1","DEFAULT_PROPS","MP_EV_CLICK","MP_EV_INPUT","MP_EV_RAGE_CLICK","MP_EV_SCROLL","MP_EV_SUBMIT","Autocapture","mp","autocaptureConfig","currentUrl","allowUrlRegexes","allowed","allowRegex","blockUrlRegexes","mpEventName","isCapturedForHeatMap","previousTrackedUrl","tracked","nativePushState","nativeReplaceState","shouldTrack","didPathChange","trackPageviewOption","rageClickConfig","currentRageClickConfig","scrollCheckpoints","scrollTop","scrollHeight","scrollPercentage","checkpoint","fetch","FLAGS_CONFIG_KEY","CONFIG_CONTEXT","CONFIG_DEFAULTS","FeatureFlagManager","initOptions","minApisSupported","ffConfig","newContext","oldContext","distinctId","responseFlags","flags","featureName","feature","fallbackValue","DomTracker","mixpanel_instance","event_name","user_callback","that","timeout_occured","LinkTracker","FormTracker","SET_ACTION","SET_ONCE_ACTION","UNSET_ACTION","ADD_ACTION","APPEND_ACTION","UNION_ACTION","REMOVE_ACTION","DELETE_ACTION","apiActions","$set_once","list_name","$union","$append","$remove","MixpanelGroup","group_key","group_id","date_encoded_data","conf","MixpanelPeople","by","$add","device_id","user_id","had_persisted_distinct_id","conf_var","action_method","queue_to_params_fn","queued_data","action_params","_set_callback","_add_callback","_append_callback","_set_once_callback","_union_callback","_unset_callback","_remove_callback","$append_queue","$append_item","append_callback","$remove_queue","$remove_item","remove_callback","SET_QUEUE_KEY","SET_ONCE_QUEUE_KEY","UNSET_QUEUE_KEY","ADD_QUEUE_KEY","APPEND_QUEUE_KEY","REMOVE_QUEUE_KEY","UNION_QUEUE_KEY","PEOPLE_DISTINCT_ID_KEY","ALIAS_ID_KEY","EVENT_TIMERS_KEY","RESERVED_PROPERTIES","MixpanelPersistence","storage_type","old_cookie","old_localstorage","disabled","cookie_domain","cross_site","cross_subdomain","q_key","q_data","set_q","set_once_q","unset_q","add_q","union_q","remove_q","append_q","enqueued_obj","append_obj","queued_action","default_val","timers","init_type","load_extra_bundle","_onload","mixpanel_master","INIT_MODULE","INIT_SNIPPET","IDENTITY_FUNC","PRIMARY_INSTANCE_NAME","PAYLOAD_TYPE_BASE64","PAYLOAD_TYPE_JSON","DEVICE_ID_PREFIX","USE_XHR","ENQUEUE_REQUESTS","sendBeacon","DEFAULT_API_ROUTES","DEFAULT_CONFIG","DOM_LOADED","MixpanelLib","create_mplib","utm_params","initial_utm_params","has_utm","utm_value","utm_key","variable_features","api_host","batcher_config","flush_on_unload","key_suffix","tab_id_key","should_generate_new_tab_id_key","recording_registry_idb","tab_id","recordings","force_start","loadRecorder","handleLoadedRecorder","is_sampled","shouldLoad","replay_id","replay_url","query_params","_utm_value","DomClass","dt","callback_function","jsc","randomized_cb","callback_string","DEFAULT_OPTIONS","body_data","use_post","use_sendBeacon","verbose_mode","lib","img","start_time","response_headers","script","fn_name","alias_calls","other_calls","tracking_calls","calls","caller","call","queue_prefix","batcher_for","attrs","api_routes","batcher_configs","batcher","encoded_data","truncated_data","should_send_immediately","send_request_options","request_enqueued_or_initiated","send_request_immediately","start_timestamp","duration_in_ms","marketing_properties","property_blacklist","blacklisted_prop","group_ids","old_values","old_value","groups","tracking_props","map_key","group","default_page_properties","event_properties","REGISTER_DEFAULTS","options_for_register","days_or_options","new_distinct_id","previous_distinct_id","alias","name_tag","new_batch_size","prop_name","hook_name","property_name","endpoint_type","is_localStorage_requested","instances","extend_mp","override_mp_init_func","add_dom_loaded_handler","dom_loaded_handler","inst","do_scroll_check","toplevel","init_as_module","bundle_loader","loadNoop","_src","onload","mixpanel","MixpanelLinker","people","setSuperProperty","register","datetime","datetimeFactory","client_access_time","CompositeLoggerLinker","sendWebView","paramerters","ReactNativeWebView","postMessage","version","logAmplitude","NativeAmplitudeLinker","isBrowser","isApp","amplitudeLinker","import","nativeAmplitudeLinker","mixpanelLinker","save_referrer","persistence","track_pageview","debug","ignore_dnt","ensuredAmplitudeLinker","default","interaction","DebugService","isDebug","getItem","toggleDebug","removeItem","setItem","debugService","isObject","isObjectCustom","mapObjectSkip","_mapObject","mapper","isSeen","mapArray","mapResult","newKey","shouldRecurse","mapObject","UPPERCASE","LOWERCASE","LEADING_CAPITAL","IDENTIFIER","SEPARATORS","LEADING_SEPARATORS","SEPARATORS_AND_IDENTIFIER","NUMBERS_AND_IDENTIFIER","preserveCamelCase","toUpperCase","preserveConsecutiveUppercase","isLastCharLower","isLastCharUpper","isLastLastCharUpper","isLastLastCharPreserved","character","postProcess","identifier","camelCase","QuickLRU","maxAge","expiry","deleted","newSize","removeCount","oldCacheSize","callbackFunction","thisArgument","QuickLru","transform","exclude","pascalCase","stopPaths","deep","stopPathsSet","makeMapper","parentPath","camelcaseKeys","ZVZOError","Error","ServerError","redaxios","HTTPStatusCode","None","Ok","BadRequest","NotAuthorized","Forbidden","NotFound","RedaxiosHTTPClient","_requestMiddlewares","_responseMiddlewares","_instance","responseMiddleware","responseOrError","mapMiddleware","middlewares","reduce","middleware","requestMethod","resourceIdentifier","requestMiddleware","push","TokenService","getToken","_STORAGE_KEY","setToken","clear","_TokenService","tokenService","detectShopLanguage","document","documentElement","lang","getAttribute","language","langMatch","pathname","langSelector","trim","detectedLang","normalizedLang","includes","httpClient","camelize","Authorization","cafe24HTTPClient","UserIDService","getOTPByQuery","URLSearchParams","get","signInByOTP","sessionUser","getUserID","hasToken","otp","userIDService","Initializers","solutionService","initialize","CAFE24API","MALL_ID","_jsx","_Fragment","ErrorBoundary","Component","getDerivedStateFromError","componentDidCatch","setState","render","fallbackRender","dictionaries","en$1","then","ko","ko$1","useDictionary","URL","Boolean","loading","setLoading","dictionary","setDictionary","pageDictionary","forEach","isLoading","asElement","keyList","copyDictionary","useProductViewedTime","productID","storedValue","viewedTime","setViewedTime","viewProduct","newViewedTime","Date","DiscountInfoModal","discountInfo","toggleView","canModalOpen","handleClose","top","bottom","background","zIndex","_jsxs","borderRadius","display","flexDirection","alignItems","padding","paddingBottom","margin","fontSize","fontWeight","fontFamily","lineHeight","marginBottom","whiteSpace","letterSpacing","Math","round","maxDiscountPercent","backgroundColor","boxSizing","IDX","marginTop","flex","overflow","justifyContent","discountPercent","discountPrice","toLocaleString","toFixed","marginRight","isNeedCoupon","maxDiscountedPrice","cursor","onClick","ZVZO","Close","LayoutGroupContext","createContext","useConstant","PresenceContext","MotionConfigContext","PopChildMeasure","React.Component","prevProps","PopChild","isPresent","useId","nonce","useInsertionEffect","React.cloneElement","PresenceChild","initial","onExitComplete","custom","presenceAffectsLayout","presenceChildren","newChildrenMap","memoizedOnExitComplete","childId","React.useEffect","usePresence","safeToRemove","getChildKey","onlyElements","filtered","Children","isValidElement","useIsomorphicLayoutEffect","useLayoutEffect","AnimatePresence","propagate","isParentPresent","presentChildren","presentKeys","isInitialRender","pendingPresentChildren","exitComplete","diffedChildren","setDiffedChildren","renderedChildren","setRenderedChildren","exitingChildren","nextChildren","forceRender","Fragment","isEveryExitComplete","isExitComplete","any","invariant","memo","progress","toFromDifference","secondsToMilliseconds","millisecondsToSeconds","MotionGlobalConfig","createRenderStep","runNextFrame","thisFrame","nextFrame","isProcessing","flushNextFrame","toKeepAlive","latestFrameData","triggerCallback","keepAlive","immediate","frameData","stepsOrder","maxElapsed","createRenderBatcher","scheduleNextBatch","allowKeepAlive","useDefaultElapsed","flagRunNextFrame","steps","read","resolveKeyframes","update","preRender","postRender","processBatch","wake","frame","cancelFrame","frameSteps","LazyContext","featureProps","featureDefinitions","loadFeatures","features","validMotionProps","isValidMotionProp","shouldForward","loadExternalIsValidProp","isValidProp","filterProps","isDom","forwardMotionProps","filteredProps","createDOMMotionComponentProxy","componentFactory","componentCache","deprecatedFactoryFunction","_target","MotionContext","isVariantLabel","isAnimationControls","variantPriorityOrder","variantProps","isControllingVariants","isVariantNode","getCurrentTreeVariants","animate","useCreateMotionContext","variantLabelsAsDependency","motionComponentSymbol","isRefObject","useMotionRef","visualState","visualElement","externalRef","camelToDash","optimizedAppearDataAttribute","microtask","SwitchLayoutGroupContext","useVisualElement","createVisualElement","ProjectionNodeConstructor","lazyContext","presenceContext","reducedMotionConfig","visualElementRef","initialLayoutGroupConfig","createProjectionNode","isMounted","optimisedAppearId","wantsHandoff","initialPromotionConfig","layoutId","layout","drag","dragConstraints","layoutScroll","layoutRoot","getClosestProjectingNode","createRendererMotionComponent","preloadedFeatures","useRender","useVisualState","MotionComponent","MeasureLayout","configAndProps","useLayoutId","isStatic","useStrictMode","layoutProjection","getProjectionFunctionality","ForwardRefMotionComponent","layoutGroupId","combined","lowercaseSVGElements","isSVGComponent","getValueState","resolveVariantFromProps","definition","velocity","isKeyframesTarget","isCustomValue","resolveFinalValueInKeyframes","isMotionValue","resolveMotionValue","unwrappedValue","makeState","scrapeMotionValuesFromProps","createRenderState","onUpdate","makeLatestValues","makeUseVisualState","make","scrapeMotionValues","motionValues","isControllingVariants$1","isVariantNode$1","isInitialAnimationBlocked","variantToSet","resolved","transitionEnd","transition","valueTarget","transformPropOrder","transformProps","checkStringStartsWith","isCSSVariableName","startsAsVariableToken","isCSSVariableToken","singleCssVariableRegex","getValueAsType","clamp","alpha","scale","createUnitType","unit","degrees","percent","px","vh","vw","progressPercentage","browserNumberValueTypes","transformValueTypes","numberValueTypes","translateAlias","numTransforms","buildTransform","latestValues","transformTemplate","transformString","transformIsDefault","valueIsDefault","valueAsType","transformName","buildHTMLStyles","vars","transformOrigin","hasTransform","hasTransformOrigin","originX","originY","originZ","dashKeys","camelKeys","buildSVGPath","useDashCase","pathLength","pathSpacing","calcOrigin","calcSVGTransformOrigin","dimensions","pxOriginX","pxOriginY","buildSVGAttrs","attrX","attrY","attrScale","pathOffset","latest","isSVGTag","createHtmlRenderState","createSvgRenderState","renderHTML","styleProp","projection","camelCaseAttributes","renderSVG","renderState","_styleProp","scaleCorrectors","addScaleCorrector","correctors","isForcedMotionValue","newValues","scrapeMotionValuesFromProps$1","targetKey","updateSVGDimensions","layoutProps","svgMotionConfig","needsMeasure","htmlMotionConfig","copyRawValuesOnly","useInitialMotionValues","useStyle","useHTMLProps","htmlProps","useSVGProps","_isStatic","visualProps","rawStyles","createUseRender","elementProps","createElement","createMotionComponentFactory","shallowCompare","prevLength","resolveVariant","supportsScrollTimeline","BaseGroupPlaybackControls","animations","animation","propName","timeline","cancel","speed","controls","GroupPlaybackControls","onResolve","onReject","getValueTransition","maxGeneratorDuration","calcGeneratorDuration","timeStep","isGenerator","attachTimeline","isBezierDefinition","easing","supportsFlags","memoSupports","supportsFlag","memoized","supportsLinearEasing","generateLinearEasing","resolution","points","numPoints","isWaapiSupportedEasing","supportedWaapiEasing","cubicBezierAsString","mapEasingToNativeEasing","segmentEasing","isDragging","isDragActive","resolveElements","elementOrSelector","scope","selectorCache","setupGesture","gestureAbortController","filterEvents","hover","onHoverStart","onPointerEnter","enterEvent","onHoverEnd","onPointerLeave","leaveEvent","isNodeOrChild","isPrimaryPointer","focusableElements","isElementKeyboardAccessible","isPressing","firePointerEvent","enableKeyboardPress","focusEvent","handleKeydown","handleKeyup","handleBlur","isValidPressEvent","press","onPressStart","cancelEvents","startPress","startEvent","onPressEnd","onPointerEnd","endEvent","onPointerUp","onPointerCancel","upEvent","cancelEvent","setDragLock","axis","positionalKeys","clearTime","newTime","addUniqueItem","SubscriptionManager","numSubscriptions","velocityPerSecond","frameDuration","MAX_VELOCITY_DELTA","isFloat","MotionValue","prevFrameValue","unsubscribe","eventManagers","passiveEffect","stopPassiveEffect","delta","endAnimation","startAnimation","motionValue","setMotionValue","setTarget","isWillChangeMotionValue","addValueToWillChange","willChange","getOptimisedAppearId","calcBezier","subdivisionPrecision","subdivisionMaxIterations","binarySubdivide","upperBound","mX1","mX2","currentX","currentT","cubicBezier","mY1","mY2","getTForX","aX","mirrorEasing","reverseEasing","backOut","backIn","backInOut","anticipate","circIn","circOut","circInOut","isZeroValueString","isNone","sanitize","floatRegex","isNullish","singleColorRegex","isColorString","testProp","splitColor","aName","bName","cName","clampRgbUnit","rgbUnit","rgba","green","blue","alpha$1","parseHex","hsla","hue","saturation","lightness","colorRegex","test","NUMBER_TOKEN","COLOR_TOKEN","VAR_TOKEN","VAR_FUNCTION_TOKEN","SPLIT_TOKEN","complexRegex","analyseComplexValue","originalValue","indexes","types","parsedValue","parseComplexValue","createTransformer","numSections","convertNumbersToZero","getAnimatableNone","parsed","complex","maxDefaults","applyDefaultFilter","functionRegex","defaultValueTypes","getDefaultValueType","defaultValueType","invalidTemplates","makeNoneKeyframesAnimatable","unresolvedKeyframes","noneKeyframeIndexes","animatableTemplate","keyframe","noneIndex","isNumOrPxType","getPosFromMatrix","matrix","getTranslateFromMatrix","pos3","_bbox","matrix3d","transformKeys","nonTranslationalTransformKeys","removeNonTranslationalTransform","removedTransforms","positionalValues","paddingLeft","paddingRight","paddingTop","toResolve","isScheduled","anyNeedsMeasurement","measureAllKeyframes","resolversToMeasure","elementsToMeasure","transformsToRestore","restore","readAllKeyframes","flushKeyframeResolvers","KeyframeResolver","isAsync","currentValue","finalKeyframe","valueAsRead","isNumericalString","splitCSSVariableRegex","parseCSSVariable","token1","token2","getVariableValue","trimmed","testValueType","dimensionValueTypes","findDimensionValueType","DOMKeyframesResolver","originType","targetType","measureKeyframe","finalKeyframeIndex","unsetTransformName","unsetTransformValue","isAnimatable","hasKeyframesChanged","keyframes","canAnimate","originKeyframe","targetKeyframe","isOriginAnimatable","isTargetAnimatable","isNotNull","getFinalKeyframe","repeatType","resolvedKeyframes","MAX_RESOLVE_DELAY","BaseAnimation","autoplay","repeatDelay","resolvedAnimation","mixNumber","hueToRgb","hslaToRgba","mixImmediate","mixLinearColor","fromExpo","expo","colorTypes","getColorType","asRGBA","model","mixColor","fromRGBA","toRGBA","blended","combineFunctions","pipe","transformers","invisibleValues","mixVisibility","mixNumber$1","getMixer","mixComplex","mixArray","mixObject","numValues","blendValue","matchOrder","orderedOrigin","pointers","originIndex","originValue","template","originStats","targetStats","mix","velocitySampleDuration","calcGeneratorVelocity","resolveValue","prevT","springDefaults","safeMin","findSpring","bounce","mass","envelope","derivative","dampingRatio","undampedFreq","exponentialDecay","calcAngularFreq","initialGuess","approximateRoot","stiffness","rootIterations","durationKeys","physicsKeys","isSpringType","getSpringOptions","springOptions","visualDuration","damping","derived","spring","optionsOrVisualDuration","restSpeed","restDelta","isResolvedFromDuration","initialVelocity","initialDelta","undampedAngularFreq","isGranularScale","resolveSpring","angularFreq","dampedAngularFreq","freqForT","currentVelocity","isBelowVelocityThreshold","isBelowDisplacementThreshold","calculatedDuration","inertia","power","timeConstant","bounceDamping","bounceStiffness","modifyTarget","isOutOfBounds","nearestBoundary","ideal","calcDelta","calcLatest","applyFriction","timeReachedBoundary","spring$1","checkCatchBoundary","hasUpdatedFrame","easeIn","easeOut","easeInOut","isEasingArray","ease","easingLookup","easingDefinitionToFunction","x1","y1","y2","createMixers","customMixer","mixers","mixerFactory","numMixers","mixer","easingFunction","interpolate","isClamp","inputLength","isZeroDeltaRange","interpolator","progressInRange","fillOffset","offsetProgress","defaultOffset","convertOffsetToTimes","defaultEasing","keyframeValues","times","easingFunctions","absoluteTimes","mapTimeToKeyframe","frameloopDriver","passTimestamp","generators","percentToProgress","MainThreadAnimation","onStop","KeyframeResolver$1","onResolved","keyframes$1","generatorFactory","mapPercentToKeyframes","mirroredGenerator","resolvedDuration","totalDuration","timeWithoutDelay","isInDelayPhase","elapsed","frameGenerator","currentIteration","iterationProgress","isAnimationFinished","newSpeed","hasChanged","driver","onPlay","acceleratedValues","startWaapiAnimation","valueName","keyframeOptions","supportsWaapi","sampleDelta","maxDuration","requiresPregeneratedKeyframes","pregenerateKeyframes","sampleAnimation","pregeneratedKeyframes","unsupportedEasingFunctions","isUnsupportedEase","AcceleratedAnimation","pregeneratedAnimation","sampleTime","underDampedSpring","criticallyDampedSpring","keyframesTransition","getDefaultTransition","valueKey","isTransitionDefined","when","delayChildren","staggerChildren","staggerDirection","animateMotionValue","isHandoff","valueTransition","shouldSkip","shouldBlockAnimation","protectedKeys","needsAnimating","shouldBlock","animateTarget","targetAndTransition","transitionOverride","animationTypeState","appearId","animateVariant","variant","getAnimation","getChildAnimations","forwardDelay","animateChildren","maxStaggerDuration","generateStaggerDuration","sortByTreeOrder","animateVisualElement","resolvedDefinition","numVariantProps","getVariantContext","reversePriorityOrder","numAnimationTypes","animateList","createAnimationState","createState","buildResolvedTypeValues","setAnimateFunction","makeAnimator","animateChanges","changedActiveType","removedKeys","encounteredKeys","removedVariantIndex","typeState","propIsVariant","activeDelta","isInherited","variantDidChange","checkVariantsDidChange","shouldAnimateType","handledRemovedValues","definitionList","resolvedValues","prevResolvedValues","allKeys","markToAnimate","valueHasChanged","fallbackAnimation","fallbackTarget","shouldAnimate","setActive","isActive","createTypeState","Feature","AnimationFeature","prevAnimate","ExitAnimationFeature","prevIsPresent","exitAnimation","addDomEvent","extractEventInfo","addPointerInfo","addPointerEvent","distance","distance2D","xDelta","yDelta","PanSession","transformPagePoint","contextWindow","dragSnapToOrigin","getPanInfo","isPanStarted","isDistancePastThreshold","point","onStart","onMove","transformPoint","onEnd","onSessionEnd","resumeAnimation","panInfo","initialInfo","onSessionStart","subtractPoint","history","lastDevicePoint","startDevicePoint","getVelocity","timeDelta","timestampedPoint","lastPoint","SCALE_PRECISION","SCALE_MIN","SCALE_MAX","TRANSLATE_PRECISION","TRANSLATE_MIN","TRANSLATE_MAX","calcLength","isNear","maxDistance","calcAxisDelta","calcBoxDelta","calcRelativeAxis","calcRelativeBox","calcRelativeAxisPosition","calcRelativePosition","applyConstraints","elastic","calcRelativeAxisConstraints","calcRelativeConstraints","layoutBox","calcViewportAxisConstraints","layoutAxis","constraintsAxis","calcViewportConstraints","constraintsBox","sourceLength","targetLength","rebaseAxisConstraints","constraints","relativeConstraints","defaultElastic","resolveDragElastic","dragElastic","resolveAxisElastic","minLabel","maxLabel","resolvePointElastic","label","createAxisDelta","createDelta","createAxis","createBox","eachAxis","convertBoundingBoxToBox","convertBoxToBoundingBox","transformBoxPoints","topLeft","bottomRight","isIdentityScale","hasScale","scaleX","scaleY","has2DTranslate","is2DTranslate","scalePoint","originPoint","distanceFromOrigin","scaled","applyPointDelta","translate","boxScale","applyAxisDelta","applyBoxDelta","box","TREE_SCALE_SNAP_MIN","TREE_SCALE_SNAP_MAX","applyTreeDeltas","treeScale","treePath","isSharedTransition","treeLength","transformBox","translateAxis","transformAxis","axisTranslate","axisScale","axisOrigin","measureViewportBox","measurePageBox","rootProjectionNode","viewportBox","scroll","getContextWindow","elementDragControls","VisualElementDragControls","originEvent","snapToCursor","dragPropagation","onDragStart","measuredAxis","animationState","dragDirectionLock","onDirectionLock","onDrag","getCurrentDirection","onDragEnd","_point","shouldDrag","axisValue","prevConstraints","onMeasureDragConstraints","constraintsElement","measuredConstraints","userConstraints","dragMomentum","dragTransition","onDragTransitionEnd","momentumAnimations","dragKey","externalMotionValue","boxProgress","stopPointerListener","dragListener","measureDragConstraints","stopMeasureLayoutListener","stopResizeListener","stopLayoutUpdateListener","hasLayoutChanged","direction","currentDirection","lockThreshold","DragGesture","dragControls","asyncHandler","PanGesture","pointerDownEvent","onPanSessionStart","onPanStart","onPan","onPanEnd","globalProjectionState","pixelsToPercent","pixels","correctBorderRadius","correctBoxShadow","projectionDelta","shadow","xScale","yScale","averageScale","MeasureLayoutWithContext","layoutGroup","switchLayoutGroup","defaultScaleCorrectors","layoutDependency","promoteContext","animateSingleValue","motionValue$1","compareByDepth","FlatTree","checkElapsed","borders","numBorders","asNumber","isPx","mixValues","follow","lead","shouldCrossfadeOpacity","isOnlyMember","easeCrossfadeIn","easeCrossfadeOut","borderLabel","followRadius","getRadius","leadRadius","radiusName","compress","copyAxisInto","originAxis","copyBoxInto","originBox","copyAxisDeltaInto","originDelta","removePointDelta","removeAxisDelta","sourceAxis","removeAxisTransforms","transforms","scaleKey","originKey","xKeys","yKeys","removeBoxTransforms","sourceBox","isAxisDeltaZero","isDeltaZero","axisEquals","boxEquals","axisEqualsRounded","boxEqualsRounded","aspectRatio","axisDeltaEquals","NodeStack","prevLead","indexOfNode","member","preserveFollowOpacity","crossfade","resumingFrom","buildProjectionTransform","latestTransform","xTranslate","yTranslate","zTranslate","transformPerspective","rotate","rotateX","rotateY","skewX","skewY","elementScaleX","elementScaleY","metrics","transformAxes","hiddenVisibility","animationTarget","resetDistortingTransform","sharedAnimationValues","cancelTreeOptimisedTransformAnimations","projectionNode","attachResizeListener","defaultParent","measureScroll","checkIsScrollRoot","resetTransform","propagateDirtyNodes","resolveTargetDelta","calcProjection","cleanDirtyNodes","subscriptionManager","isLayoutDirty","cancelDelay","resizeUnblockUpdate","finishAnimation","hasRelativeTargetChanged","newLayout","layoutTransition","defaultLayoutTransition","onLayoutAnimationStart","onLayoutAnimationComplete","hasOnlyRelativeTargetChanged","animationOptions","resetSkewAndRotation","shouldNotifyListeners","clearMeasurements","clearIsLayoutDirty","resetTransformStyle","updateLayout","notifyLayoutUpdate","clearSnapshot","removeLeadSnapshots","prevLayout","phase","needsMeasurement","isRoot","isResetRequested","hasProjection","transformTemplateValue","transformTemplateHasChanged","removeTransform","pageBox","roundBox","checkNodeWasScrollRoot","boxWithoutScroll","transformOnly","withTransforms","boxWithoutTransform","nodeBox","forceRecalculation","isShared","relativeParent","canSkip","prevTreeScaleX","prevTreeScaleY","notifyAll","snapshotLatestValues","mixedValues","targetDelta","relativeLayout","snapshotSource","layoutSource","isSharedLayoutAnimation","hasOpacityCrossfade","prevRelativeTarget","mixAxisDelta","mixBox","targetWithTransforms","shouldAnimatePositionOnly","xLength","yLength","needsReset","hasDistortingTransform","resetValues","emptyStyles","valuesToRender","correct","applyTo","corrected","measuredLayout","animationType","axisSnapshot","layoutDelta","visualDelta","parentSnapshot","parentLayout","relativeSnapshot","mixAxis","userAgentContains","roundPoint","roundAxis","DocumentProjectionNode","HTMLProjectionNode","documentNode","handleHoverEvent","lifecycle","HoverGesture","FocusGesture","isFocusVisible","handlePressEvent","PressGesture","observerCallbacks","fireObserverCallback","fireAllObserverCallbacks","initIntersectionObserver","lookupRoot","rootObservers","observeIntersection","rootInteresectionObserver","thresholdNames","InViewFeature","viewport","rootMargin","amount","onIntersectionUpdate","isIntersecting","onViewportEnter","onViewportLeave","hasViewportOptionChanged","prevViewport","gestureAnimations","prefersReducedMotion","hasReducedMotionListener","initPrefersReducedMotion","motionMediaQuery","setReducedMotionPreferences","valueTypes","findValueType","visualElementStore","updateMotionValuesFromProps","nextValue","prevValue","existingValue","latestValue","propEventHandlers","VisualElement","_props","_prevProps","_visualElement","blockInitialAnimation","initialMotionValues","valueIsTransform","removeOnChange","removeOnRenderRequest","removeSyncCheck","featureDefinition","isEnabled","FeatureConstructor","listenerName","closestVariantNode","valueFromInitial","DOMVisualElement","getComputedStyle","HTMLVisualElement","SVGVisualElement","createDomVisualElement","createMotionComponent","motion","FloatingDiscounInfoNotifier","showsDownloadCoupon","onDownloadCoupon","placement","setPlacement","setY","floor","innerHeight","tagStartPos","setTagStartPos","dragging","setDragging","isOpen","setIsOpen","div","backdropFilter","boxShadow","touchAction","userSelect","translateX","opacity","exit","prevY","onTapStart","onTap","abs","whileDrag","alt","fontStyle","textDecoration","originalPrice","pointerEvents","onPointerDown","stopImmediatePropagation","preventDefault","marginLeft","viewBox","fill","xmlns","fillRule","clipRule","isFolnua","ProductDetailDiscountNotifier","getProductDiscountInfo","handleCouponDownload","couponDownloadURI","encodeURIComponent","creatorAlias","withSuspense","WrappedComponent","suspenseProps","Wrapped","Suspense","displayName","TextInput","required","placeholder","onChange","inputMode","border","outline","PhoneBottomSheet","onDone","phone","setPhone","pending","setPending","handleSubmit","alert","signIn","borderTop","Cafe24ExternalPaymentBlocker$1","Cafe24ExternalPaymentBlocker","tempCount","setTempCount","refetch","isAuthorized","isAuthorizedUser","overlay","attachBlocker","buttons","getPayButton","button","getPropertyValue","blocker","appendChild","clickableButton","confirm","handleExit","handleDone","minTimeout","maxRetryTime","onFailedAttempt","hasMap","mapSizeDescriptor","mapSize","mapForEach","hasSet","setSizeDescriptor","setSize","setForEach","hasWeakMap","weakMapHas","hasWeakSet","weakSetHas","hasWeakRef","weakRefDeref","booleanValueOf","functionToString","$match","$slice","$replace","$toUpperCase","$toLowerCase","$test","$concat","$join","$arrSlice","$floor","bigIntValueOf","gOPS","symToString","hasShammedSymbols","toStringTag","isEnumerable","gPO","addNumericSeparator","sepRegex","intStr","dec","utilInspect","inspectCustom","inspectSymbol","isSymbol","quotes","quoteREs","objectInspect","inspect_","customInspect","numericSeparator","inspectString","bigIntStr","maxDepth","getIndent","indexOf","inspect","noIndent","newOpts","isRegExp","nameOf","arrObjKeys","symString","markBoxed","wrapQuotes","xs","singleLineValues","indentedJoin","isMap","mapParts","collectionOf","isSet","setParts","isWeakMap","weakCollectionOf","isWeakSet","isWeakRef","isNumber","isBigInt","isBoolean","isString","isDate","ys","isPlainObject","protoTag","stringTag","toStr","constructorTag","defaultStyle","quoteChar","canTrustToString","hasOwn","trailer","quoteRE","lowbyte","joinedEntries","baseIndent","lineJoiner","isArr","syms","symMap","$TypeError","listGetNode","isDelete","listGet","objects","listSet","listHas","listDelete","sideChannelList","$o","channel","deletedNode","esObjectAtoms","esErrors","_eval","syntax","pow","_isNaN","$isNaN","sign","gOPD","$gOPD","gopd","$defineProperty","esDefineProperty","shams","sym","symObj","symVal","origSymbol","hasSymbolSham","hasSymbols","Reflect_getPrototypeOf","$Object","Object_getPrototypeOf","ERROR_MESSAGE","funcType","concatty","slicy","arrLike","joiny","joiner","implementation","binder","boundLength","boundArgs","Empty","functionBind","functionCall","functionApply","reflectApply","bind","$apply","$call","$reflectApply","require$$3","actualApply","$actualApply","callBindApplyHelpers","callBind","hasProtoAccessor","desc","$getPrototypeOf","reflectGetProto","originalGetProto","getDunderProto","getProto","$hasOwn","hasown","undefined","$Error","$EvalError","$RangeError","$ReferenceError","require$$4","$SyntaxError","require$$5","require$$6","$URIError","require$$7","require$$8","require$$9","require$$10","require$$11","require$$12","require$$13","require$$14","$Function","getEvalledConstructor","expressionSyntax","require$$15","require$$16","throwTypeError","ThrowTypeError","require$$17","require$$18","$ObjectGPO","require$$19","$ReflectGPO","require$$20","require$$21","require$$22","needsEval","TypedArray","INTRINSICS","errorProto","doEval","LEGACY_ALIASES","require$$23","require$$24","$spliceApply","$strSlice","$exec","rePropName","reEscapeChar","stringToPath","subString","getBaseIntrinsic","allowMissing","intrinsicName","getIntrinsic","intrinsicBaseName","intrinsic","intrinsicRealName","skipFurtherCaching","isOwn","GetIntrinsic","callBindBasic","$indexOf","callBound","$Map","$mapGet","$mapSet","$mapHas","$mapDelete","$mapSize","sideChannelMap","$m","getSideChannelMap","$WeakMap","$weakMapGet","$weakMapSet","$weakMapHas","$weakMapDelete","sideChannelWeakmap","$wm","getSideChannelList","getSideChannelWeakMap","makeChannel","sideChannel","$channelData","percentTwenties","Format","formats","hexTable","compactQueue","compacted","arrayToObject","mergeTarget","targetItem","assign","defaultDecoder","charset","strWithoutPlus","defaultEncoder","kind","format","$0","out","segment","compact","refs","isBuffer","combine","maybeMap","mapped","utils","getSideChannel","arrayPrefixGenerators","pushToArray","valueOrArray","toISO","defaultFormat","isNonNullishPrimitive","sentinel","generateArrayPrefix","commaRoundTrip","allowEmptyArrays","strictNullHandling","skipNulls","encodeDotInKeys","encoder","sort","allowDots","serializeDate","formatter","encodeValuesOnly","tmpSc","findFlag","keyValue","objKeys","encodedPrefix","adjustedPrefix","encodedKey","keyPrefix","valueSideChannel","normalizeStringifyOptions","arrayFormat","joined","interpretNumericEntities","numberStr","parseArrayValue","currentArrayLength","isoSentinel","charsetSentinel","parseValues","cleanStr","skipIndex","bracketEqualsPos","encodedVal","existing","parseObject","valuesParsed","parentKey","leaf","cleanRoot","decodedRoot","parseKeys","givenKey","normalizeParseOptions","duplicates","tempObj","re","StyledText","styled","ZVZOText","weight","textRef","Colors","gray00","gray200","gray250","gray300","gray500","gray600","gray700","blue200","blue400","red400","red500","purple500","Logo","ZVZOIndicator","description","textAlign","searchParams","qs","ignoreQueryPrefix","isZVZOIFrame","downloadCoupon","mall_id","shop_no","SHOP_NO","product_no","Number","couponNoList","allSettled","couponNo","transferOrder","canMoveOrder","productNo","variantsCode","products","emptyCart","addCart","vendorCode","variants_code","vendorOptionCode","setTimeout","isZVZO","KakaoSSOProcessor","_host","renderIndicator","ssoNo","ssoURI","one_time_token","getCurrentStep","isMember","SSOStep","redirectURL","decodeURIComponent","removeChild","NoneSSOProcessor","getSSOProcessor","oauthType","OAuthType","SSOProcessor","getMemberID","memberID","ssoProcessor","DEBUG_BUILD","GLOBAL_OBJ","SDK_VERSION","getMainCarrier","getSentryCarrier","carrier","__SENTRY__","getGlobalSingleton","CONSOLE_LEVELS","originalConsoleMethods","consoleSandbox","wrappedFuncs","wrappedLevels","level","originalConsoleMethod","enable","_getLoggerSettings","disable","_maybeLog","warn","STACKTRACE_FRAME_LIMIT","UNKNOWN_FUNCTION","WEBPACK_ERROR_REGEXP","STRIP_FRAME_REGEXP","createStackParser","parsers","sortedParsers","skipFirstLines","framesToPop","frames","cleanedLine","stripSentryFramesAndReverse","stackParserFromStackParserOptions","stackParser","localStack","getLastStackFrame","defaultFunctionName","getFunctionName","getFramesFromEvent","exception","instrumented","addHandler","maybeInstrument","instrumentFn","triggerHandlers","typeHandlers","_oldOnErrorHandler","addGlobalErrorInstrumentationHandler","instrumentError","_oldOnUnhandledRejectionHandler","addGlobalUnhandledRejectionInstrumentationHandler","instrumentUnhandledRejection","wat","isInstanceOf","isBuiltin","isErrorEvent","isDOMError","isDOMException","isParameterizedString","isPrimitive","isEvent","isSyntheticEvent","base","isVueViewModel","WINDOW","DEFAULT_MAX_STRING_LENGTH","htmlTreeAsString","MAX_TRAVERSE_HEIGHT","separator","sepLength","nextStr","keyAttrs","maxStringLength","_htmlElementAsString","keyAttrPairs","keyAttr","keyAttrPair","allowedAttrs","getLocationHref","getComponentName","truncate","safeJoin","delimiter","isMatchingPattern","requireExactStringMatch","stringMatchesSomePattern","testString","patterns","replacementFactory","markFunctionWrapped","addNonEnumerableProperty","getOriginalFunction","convertToPlainObject","getOwnProperties","serializeEventTarget","extractedProps","extractExceptionKeysForMessage","maxLength","firstKey","includedKeys","getCrypto","gbl","uuid4","crypto","getRandomByte","typedArray","getFirstException","getEventDescription","firstException","addExceptionTypeValue","addExceptionMechanism","newMechanism","defaultMechanism","currentMechanism","mergedData","checkOrSetAlreadyCaught","isAlreadyCaptured","ONE_SECOND_IN_MS","dateTimestampInSeconds","createUnixTimestampInSecondsFunc","performance","timeOrigin","_cachedTimestampInSeconds","timestampInSeconds","makeSession","startingTime","session","sessionToJSON","updateSession","closeSession","initialObj","mergeObj","generateTraceId","generateSpanId","SCOPE_SPAN_FIELD","_setSpanForScope","span","_getSpanForScope","DEFAULT_MAX_BREADCRUMBS","Scope","newScope","user","tags","extras","extra","fingerprint","captureContext","scopeToMerge","scopeInstance","contexts","propagationContext","breadcrumb","maxBreadcrumbs","maxCrumbs","mergedBreadcrumb","attachment","newData","hint","syntheticException","getDefaultCurrentScope","getDefaultIsolationScope","AsyncContextStack","isolationScope","assignedScope","assignedIsolationScope","maybePromiseResult","getAsyncContextStack","registry","sentry","withScope","withSetScope","withIsolationScope","getStackAsyncContextStrategy","_isolationScope","getAsyncContextStrategy","getCurrentScope","getIsolationScope","acs","getClient","getTraceContextFromScope","traceId","parentSpanId","propagationSpanId","traceContext","SEMANTIC_ATTRIBUTE_SENTRY_SOURCE","SEMANTIC_ATTRIBUTE_SENTRY_SAMPLE_RATE","SEMANTIC_ATTRIBUTE_SENTRY_PREVIOUS_TRACE_SAMPLE_RATE","SEMANTIC_ATTRIBUTE_SENTRY_OP","SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN","SEMANTIC_ATTRIBUTE_PROFILE_ID","SEMANTIC_ATTRIBUTE_EXCLUSIVE_TIME","SPAN_STATUS_UNSET","SPAN_STATUS_OK","SCOPE_ON_START_SPAN_FIELD","ISOLATION_SCOPE_ON_START_SPAN_FIELD","getCapturedScopesOnSpan","SENTRY_BAGGAGE_KEY_PREFIX","SENTRY_BAGGAGE_KEY_PREFIX_REGEX","baggageHeaderToDynamicSamplingContext","baggageHeader","baggageObject","parseBaggageHeader","dynamicSamplingContext","nonPrefixedKey","currBaggageObject","baggageHeaderToObject","baggageEntry","keyOrValue","ORG_ID_REGEX","DSN_REGEX","isValidProtocol","protocol","dsnToString","dsn","withPassword","pass","port","projectId","publicKey","dsnFromString","lastPath","projectMatch","dsnFromComponents","components","validateDsn","component","extractOrgIdFromDsnHost","extractOrgIdFromClient","org_id","makeDsn","parseSampleRate","sampleRate","rate","TRACE_FLAG_SAMPLED","hasShownSpanDropWarning","spanToTraceContext","spanId","trace_id","isRemote","parent_span_id","spanToJSON","span_id","convertSpanLinksForEnvelope","traceFlags","restContext","spanTimeInputToSeconds","ensureTimestampInSeconds","spanIsSentrySpan","spanIsOpenTelemetrySdkTraceBaseSpan","getStatusMessage","castSpan","spanIsSampled","ROOT_SPAN_FIELD","getRootSpan","showSpanDropWarning","hasSpansEnabled","DEFAULT_ENVIRONMENT","FROZEN_DSC_FIELD","getDynamicSamplingContextFromClient","public_key","dsc","getDynamicSamplingContextFromScope","getDynamicSamplingContextFromSpan","rootSpan","rootSpanJson","rootSpanAttributes","traceState","rootSpanSampleRate","applyLocalSampleRateToDsc","frozenDsc","traceStateDsc","dscOnTraceState","normalize","maxProperties","visit","normalizeToSize","maxSize","jsonSize","memoBuilder","memoize","unmemoize","stringified","stringifyValue","remainingDepth","valueWithToJSON","jsonValue","numAdded","visitable","visitKey","visitValue","objName","getConstructorName","utf8Length","inner","createEnvelope","addItemToEnvelope","newItem","forEachEnvelopeItem","envelopeItems","envelopeItem","envelopeItemType","encodeUTF8","serializeEnvelope","envHeaders","append","itemHeaders","stringifiedPayload","concatBuffers","totalLength","merged","createAttachmentEnvelopeItem","ITEM_TYPE_TO_DATA_CATEGORY_MAP","envelopeItemTypeToDataCategory","getSdkMetadataForEnvelopeHeader","metadataOrEvent","createEventEnvelopeHeaders","sdkInfo","tunnel","shouldIgnoreSpan","ignoreSpans","isStringOrRegExp","nameMatches","opMatches","reparentChildSpans","spans","dropSpan","droppedSpanParentId","droppedSpanId","_enhanceEventWithSdkInfo","newSdkInfo","eventSdkInfo","createSessionEnvelope","metadata","envelopeHeaders","createEventEnvelope","STATE_PENDING","STATE_RESOLVED","STATE_REJECTED","resolvedSyncPromise","SyncPromise","rejectedSyncPromise","reason","onfulfilled","onrejected","onfinally","isRejected","cachedHandlers","setResult","notifyEventProcessors","processors","final","applyScopeDataToEvent","breadcrumbs","sdkProcessingMetadata","applyDataToEvent","applySpanToEvent","applyFingerprintToEvent","applyBreadcrumbsToEvent","applySdkMetadataToEvent","mergeScopeData","mergeData","eventProcessors","attachments","transactionName","mergeAndOverwriteScopeData","mergeVal","mergedBreadcrumbs","parsedStackResults","lastKeysCount","cachedFilenameDebugIds","getFilenameToDebugIdMap","debugIdMap","debugIdKeys","stackKey","parsedStack","stackFrame","filename","debugId","prepareEvent","normalizeDepth","normalizeMaxBreadth","prepared","integrations","applyClientOptions","applyIntegrationsMetadata","applyDebugIds","finalScope","getFinalScope","clientEventProcessors","isolationData","finalScopeData","applyDebugMeta","normalizeEvent","environment","release","maxValueLength","filenameDebugIdMap","images","debug_id","integrationNames","maxBreadth","parseEventHintOrCaptureContext","hintIsScopeOrFunction","hintIsScopeContext","captureContextKeys","captureException","captureEvent","startSession","currentScope","currentSession","endSession","_sendSessionUpdate","captureSession","SENTRY_API_VERSION","getBaseApiEndpoint","_getIngestEndpoint","_encodedAuth","getEnvelopeEndpointWithUrlEncodedAuth","installedIntegrations","filterDuplicates","integrationsByName","currentInstance","existingInstance","getIntegrationsToSetup","defaultIntegrations","userIntegrations","integration","resolvedUserIntegrations","setupIntegrations","integrationIndex","setupIntegration","afterSetupIntegrations","defineIntegration","createClientReportEnvelope","discarded_events","clientReportItem","getPossibleEventMessages","possibleMessages","lastException","convertTransactionEventToSpanJson","convertSpanJsonToTransactionEvent","ALREADY_SEEN_ERROR","MISSING_RELEASE_FOR_SESSION_ERROR","INTERNAL_ERROR_SYMBOL","DO_NOT_SEND_EVENT_SYMBOL","_makeInternalError","_makeDoNotSendEventError","_isInternalError","_isDoNotSendEventError","Client","hintWithEventId","eventMessage","promisedEvent","capturedSpanScope","capturedSpanIsolationScope","clientFinished","transportFlushed","integrationName","isAlreadyInstalled","env","sendResponse","clientReleaseOption","clientEnvironmentOption","sessionAttrs","category","hook","cbIndex","callbacks","crashed","exceptions","ex","mechanism","sessionNonTerminal","ticked","tick","finalEvent","isTransaction","isTransactionEvent","beforeSendLabel","parsedSampleRate","dataCategory","processBeforeSend","_validateBeforeSendResult","processedEvent","spanCount","spanCountBefore","spanCountAfter","droppedSpanCount","transactionInfo","outcomes","beforeSendResult","invalidValueError","beforeSend","beforeSendTransaction","beforeSendSpan","processedRootSpanJson","processedSpans","initialSpans","processedSpan","droppedSpans","createLogContainerEnvelopeItem","createLogEnvelope","logs","_INTERNAL_flushLogsBuffer","maybeLogBuffer","logBuffer","_INTERNAL_getLogBuffer","clientOptions","_getBufferMap","initAndBind","clientClass","setCurrentClient","SENTRY_BUFFER_FULL_ERROR","makePromiseBuffer","isReady","task","taskProducer","drain","counter","capturedSetTimeout","DEFAULT_RETRY_AFTER","parseRetryAfterHeader","header","headerDelay","headerDate","disabledUntil","limits","isRateLimited","updateRateLimits","updatedRateLimits","rateLimitHeader","retryAfterHeader","retryAfter","categories","namespaces","DEFAULT_TRANSPORT_BUFFER_SIZE","makeRequest","rateLimits","filteredEnvelopeItems","filteredEnvelope","recordEnvelopeLoss","requestTask","addAutoIpAddressToSession","applySdkMetadata","DEFAULT_BREADCRUMBS","addBreadcrumb","beforeBreadcrumb","finalBreadcrumb","originalFunctionToString","INTEGRATION_NAME","SETUP_CLIENTS","functionToStringIntegration","originalFunction","DEFAULT_IGNORE_ERRORS","eventFiltersIntegration","mergedOptions","_mergeOptions","_hint","_shouldDropEvent","inboundFiltersIntegration","internalOptions","_isIgnoredTransaction","_isIgnoredError","_isUselessError","_isDeniedUrl","_getEventFilterUrl","_isAllowedUrl","ignoreErrors","ignoreTransactions","denyUrls","allowUrls","_getLastValidUrl","rootException","applyAggregateErrorsToEvent","exceptionFromErrorImplementation","originalException","aggregateExceptionsFromError","prevExceptions","exceptionId","newExceptions","applyExceptionGroupFieldsForParentException","newException","newExceptionId","applyExceptionGroupFieldsForChildException","childError","addConsoleInstrumentationHandler","instrumentConsole","severityLevelFromString","dedupeIntegration","previousEvent","currentEvent","_isSameMessageEvent","_isSameExceptionEvent","currentMessage","previousMessage","_isSameFingerprint","_isSameStacktrace","previousException","_getExceptionFromEvent","currentException","currentFrames","previousFrames","frameA","frameB","currentFingerprint","previousFingerprint","getBreadcrumbLogLevelFromHttpStatusCode","supportsHistory","_isFetchSupported","isNativeFunction","supportsNativeFetch","sandbox","addFetchInstrumentationHandler","skipNativeFetchCheck","instrumentFetch","onFetchResolved","virtualError","parseFetchArgs","handlerData","getHeadersFromFetchArgs","hasProp","getUrlFromResource","resource","fetchArgs","requestArgument","optionsArgument","getSDKSource","ignoreOnError","shouldIgnoreOnError","ignoreNextOnError","wrap","wrapper","sentryWrapped","wrappedArguments","getHttpRequestData","exceptionFromError","parseStackFrames","extractType","extractMessage","eventFromPlainObject","isUnhandledRejection","errorFromProp","getErrorPropertyFromObject","getNonErrorObjectExceptionValue","eventFromError","stacktrace","skipLines","getSkipFirstStackStringLines","getPopFirstTopFrames","reactMinifiedRegexp","isWebAssemblyException","eventFromException","attachStacktrace","eventFromUnknownInput","eventFromMessage","eventFromString","domException","__sentry_template_string__","__sentry_template_values__","captureType","getObjectClassName","DEFAULT_FLUSH_INTERVAL","BrowserClient","applyDefaultOptions","sdkSource","sendDefaultPii","sendClientReports","enableLogs","optionsArg","DEBOUNCE_DURATION","debounceTimerID","lastCapturedEventType","lastCapturedEventTargetId","addClickKeypressInstrumentationHandler","instrumentDOM","triggerDOMHandler","globalDOMEventHandler","makeDOMEventHandler","originalAddEventListener","handlerForType","originalRemoveEventListener","isSimilarToLastCapturedEvent","shouldSkipDOMEvent","globalListener","lastHref","addHistoryInstrumentationHandler","instrumentHistory","historyReplacementFunction","originalHistoryFunction","getAbsoluteUrl","urlOrPath","cachedImplementations","getNativeImplementation","impl","contentWindow","clearCachedImplementation","SENTRY_XHR_DATA_KEY","addXhrInstrumentationHandler","instrumentXHR","xhrproto","originalOpen","xhrOpenThisArg","xhrOpenArgArray","startTimestamp","parseXhrUrlArg","onreadystatechangeHandler","xhrInfo","originalOnreadystatechange","onreadystatechangeThisArg","onreadystatechangeArgArray","originalSetRequestHeader","setRequestHeaderThisArg","setRequestHeaderArgArray","originalSend","sendThisArg","sendArgArray","sentryXhrData","makeFetchTransport","nativeFetch","pendingBodySize","pendingCount","requestSize","CHROME_PRIORITY","GECKO_PRIORITY","createFrame","lineno","colno","chromeRegexNoFnName","chromeRegex","chromeEvalRegex","chromeDataUriRegex","chromeStackLineParser","dataUriMatch","noFnParts","col","subMatch","extractSafariExtensionDetails","geckoREgex","geckoEvalRegex","defaultStackParser","isSafariExtension","isSafariWebExtension","MAX_ALLOWED_STRING_LENGTH","breadcrumbsIntegration","_getConsoleBreadcrumbHandler","_getDomBreadcrumbHandler","_getXhrBreadcrumbHandler","_getFetchBreadcrumbHandler","_getHistoryBreadcrumbHandler","_getSentryBreadcrumbHandler","dom","componentName","_isEvent","endTimestamp","status_code","parsedLoc","parsedFrom","parsedTo","DEFAULT_EVENT_TARGET","browserApiErrorsIntegration","_wrapTimeFunction","_wrapRAF","_wrapXHR","eventTargetOption","_wrapEventTarget","originalCallback","wrapOptions","integrationOptions","isEventListenerObject","unregisterOriginalCallback","originalEventHandler","browserSessionIntegration","globalHandlersIntegration","_installGlobalOnErrorHandler","globalHandlerLog","_installGlobalOnUnhandledRejectionHandler","getOptions","_enhanceEventWithInitialFrame","_getUnhandledRejectionError","_eventFromRejectionWithPrimitive","ev0","ev0s","ev0sf","getFilenameFromUrl","mimeType","isBase64","httpContextIntegration","reqData","DEFAULT_KEY","DEFAULT_LIMIT","linkedErrorsIntegration","checkAndWarnIfIsEmbeddedBrowserExtension","_isEmbeddedBrowserExtension","_window","extensionObject","extensionProtocols","getDefaultIntegrations","shouldDisableBecauseIsBrowserExtenstion","copyProperty","ignoreNonConfigurable","toDescriptor","fromDescriptor","canCopyProperty","changePrototype","fromPrototype","wrappedToString","withName","fromBody","toStringDescriptor","toStringName","changeToString","newToString","mimicFunction","cacheStore","pMemoize","firstArgument","promiseCache","arguments_","mimicFn","pMemoizeDecorator","instanceMap","propertyKey","PageType","Main","ProductDetail","OrderForm","OrderComplete","DebugSolutionService","_mallID","_shopID","_userID","getPageType","getOrder","orderID","trackOrder","getProductInfo","priceAmount","discountBlock","maximumPercent","creatorAliasName","maximumDiscountedPrice","memberLoginUrl","details","title","applyDiscount","Cafe24SolutionService","_dec","_class","_memberID","_guestID","_groupID","_zvzoUserID","getEnsuredMemberID","getMemberInfo","guest_id","member_id","group_no","storedMallMemberID","storedUserID","SENT_MALL_MEMBER_ID_KEY","SENT_UID_KEY","isOrderComplete","order","order_id","pathRole","getDiscountMetaInfo","stringPriceAmount","stringProductID","productInfo","discountMetaInfo","discountType","DiscountType","productNos","product_price_amount","performDiscount","getCartItemList","_err","guest_key","member_group_no","product","ceil","getTime","cafe24ResponseData","AppCallback","setDiscountPrice","previewDiscountPrice","discountRatio","previewDiscountRatio","oParam","event_type","isPhoneNumberExist","phone_number","_applyDecoratedDescriptor","getOwnPropertyDescriptor","AnonymousCafe24SolutionService","koreanLangCodes","useBuyLatest","shopNo","mallId","cafe24","CAFE24","cafe24API","externalData","FRONT_EXTERNAL_SCRIPT_VARIABLE_DATA","order_product","FRONT_LANGUAGE_CODE","product_nos","Sentry","Badge","ProductHeaderItem","selected","participated","isEventItem","creatorUserEventCodes","contributedExhibition","productArticle","productImage","mainImageOriginUrl","coverImages","objectFit","aliasName","UserEventFollowerCommentBottomSheet","buyItems","getItemId","String","vendorProductNo","getProductArticleCode","setOpen","selectedIndex","setSelectedIndex","messages","setMessages","isAgreed","setIsAgreed","disabledItemIDs","setDisabledItemIDs","participatedItemIDs","setParticipatedItemIDs","eventExists","selectedItem","isDisabled","isParticipated","handleChange","handleSend","creator_code","product_article_code","creator_user_event_codes","updatedDisabled","Array","Set","updatedParticipated","nextUnsent","find","overflowY","maxHeight","overflowX","onInput","currentTarget","minHeight","stopPropagation","AmplitudeEventLogger","pageType","fTotalPayAmount","fTotalProductPrice","SHOP_FRONT_ORDERFORM_DATA","OrderCompleteTracker","FloatingOrderDiscounInfoNotifier","animationTimingFunction","NotifierContainer","ArrowDown","Toast","AnimatedToast","Cafe24FloatingTotalPaymentPriceNotifiter","showsToast","setShowsToast","totalPrice","setTotalPrice","isTransformPrice","setIsTransformPrice","fetchCurrentTotalPrice","newPrice","handleScrollDown","scrollIntoView","block","shipFee","shipping","fTotalShipFee","timeoutID","clearTimeout","originalFunc","SHOP_FRONT_ORDERFORM_PAYMETHOD","exec","setPaymethodDisplay","CouponImage","MaximumCouponNotifier","SHOP_FRONT_ORDERFORM_COUPON","eventClickCouponSelect","Coupon","CloseButton","OrderFormDiscountNotifier","GlobalError","anonymousSolutionService","Cafe24App","DevEffect","DevPreviewApp","ArrowRightIcon","CloseButtonIcon","BOTTOM_SHEET_Z_INDEX","BOTTOM_SHEET_CLOSE_BUTTON_Z_INDEX","POSITION_MAP","SZQ2CK6C5","SSOSignInBottomSheet","visible","setVisible","storeCode","setStoreCode","startsWith","mallID","fetchData","isSsoLoginInStoreSupported","bottomPosition","handleSignIn","handleCloseButton","Description","Arrow","mountSSOBottomSheet","intervalMs","itv","setInterval","isConnected","lastElementChild","clearInterval","SSOBottomSheetInjector","packageJSON","shouldRenderDevPreviewApp","isInIframe","isPopup","lastIndexOf","opener","isZVZOIframe","isAvailableBrowser","parseInt","substring","createHost","naverPay","kakaoRun","kakaoPay","maxTimeout","App"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,199,205,206,207,208,211,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,298,299,300,301,302,303,304,305,306,307,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,327,328,329,330,331,332,333,334,335,336,337,338,339,340,341,342,343,344,345,346,347,348,349,350,351,352,353,354,355,356,357,358,359,360,361,362,363,364,365,366,367,368,369,370,371,372,373,374,375,376,377,378,379,380,381,382,383,384,385,386,387,388,389,390,391,392,393,394,395,396,397,398,399,400,401,402,403,404,405,406,407,408,409,410,411,412,413,414,415,416,417,418,419,420,421,422,423,424,425,426,427,428,429,430,431,432,433,434,435,436,437,438,439,440,441,442,443,444,445,446,447,448,449,450,451,452,453,454,455,456,457,458,459,460,461,462,463,464,465,466,467,468,469,477,479,480,481,482,483,484,485,486,487,488,489,490,491,492,493,494,495,496,497,498,499,500,501,502,503,504,505,506,507,508,509,510,511,512,513,514,515,516,517,518,519,520,521,522,523,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,545,546,547,548,549,550,551,552,553,554,555,556,557,558,559,560,561,562,563,564,565,566,567,568,569,570,571,572,573,574,575,576,577,578,579,580,581,582,583,584,585,586,587,588,589,590,591,592,593,594,595,596,597,598,599,600,601,602,603,604,605,606,607,608,609,610,611,612,613,614,615,616,617,618,619,620,621]}