@myinterview/widget-react 1.0.58-beta-dc3e080 → 1.0.58

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/esm/index.js CHANGED
@@ -7630,7 +7630,7 @@ function useMachine(getMachine) {
7630
7630
  ? State.create(options.state)
7631
7631
  : service.machine.initialState);
7632
7632
  }
7633
- return service.getSnapshot();
7633
+ return service.state;
7634
7634
  }, [service]);
7635
7635
  var isEqual = useCallback(function (prevState, nextState) {
7636
7636
  if (service.status === InterpreterStatus.NotStarted) {
@@ -7662,42 +7662,6 @@ function useMachine(getMachine) {
7662
7662
  return [storeSnapshot, service.send, service];
7663
7663
  }
7664
7664
 
7665
- (undefined && undefined.__read) || function (o, n) {
7666
- var m = typeof Symbol === "function" && o[Symbol.iterator];
7667
- if (!m) return o;
7668
- var i = m.call(o), r, ar = [], e;
7669
- try {
7670
- while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
7671
- }
7672
- catch (error) { e = { error: error }; }
7673
- finally {
7674
- try {
7675
- if (r && !r.done && (m = i["return"])) m.call(i);
7676
- }
7677
- finally { if (e) throw e.error; }
7678
- }
7679
- return ar;
7680
- };
7681
- (undefined && undefined.__values) || function(o) {
7682
- var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
7683
- if (m) return m.call(o);
7684
- if (o && typeof o.length === "number") return {
7685
- next: function () {
7686
- if (o && i >= o.length) o = void 0;
7687
- return { value: o && o[i++], done: !o };
7688
- }
7689
- };
7690
- throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
7691
- };
7692
- function getServiceSnapshot(service) {
7693
- return service.status !== 0
7694
- ? service.getSnapshot()
7695
- : service.machine.initialState;
7696
- }
7697
- function isService(actor) {
7698
- return 'state' in actor && 'machine' in actor;
7699
- }
7700
-
7701
7665
  function isActorWithState(actorRef) {
7702
7666
  return 'state' in actorRef;
7703
7667
  }
@@ -7706,9 +7670,7 @@ function isDeferredActor(actorRef) {
7706
7670
  }
7707
7671
  function defaultGetSnapshot(actorRef) {
7708
7672
  return 'getSnapshot' in actorRef
7709
- ? isService(actorRef)
7710
- ? getServiceSnapshot(actorRef)
7711
- : actorRef.getSnapshot()
7673
+ ? actorRef.getSnapshot()
7712
7674
  : isActorWithState(actorRef)
7713
7675
  ? actorRef.state
7714
7676
  : undefined;
@@ -7757,6 +7719,34 @@ function useActor(actorRef, getSnapshot) {
7757
7719
  return [storeSnapshot, send];
7758
7720
  }
7759
7721
 
7722
+ (undefined && undefined.__read) || function (o, n) {
7723
+ var m = typeof Symbol === "function" && o[Symbol.iterator];
7724
+ if (!m) return o;
7725
+ var i = m.call(o), r, ar = [], e;
7726
+ try {
7727
+ while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
7728
+ }
7729
+ catch (error) { e = { error: error }; }
7730
+ finally {
7731
+ try {
7732
+ if (r && !r.done && (m = i["return"])) m.call(i);
7733
+ }
7734
+ finally { if (e) throw e.error; }
7735
+ }
7736
+ return ar;
7737
+ };
7738
+ (undefined && undefined.__values) || function(o) {
7739
+ var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
7740
+ if (m) return m.call(o);
7741
+ if (o && typeof o.length === "number") return {
7742
+ next: function () {
7743
+ if (o && i >= o.length) o = void 0;
7744
+ return { value: o && o[i++], done: !o };
7745
+ }
7746
+ };
7747
+ throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
7748
+ };
7749
+
7760
7750
  var SPEED_TEST_LEVEL;
7761
7751
  (function (SPEED_TEST_LEVEL) {
7762
7752
  SPEED_TEST_LEVEL[SPEED_TEST_LEVEL["LOW"] = 0] = "LOW";
@@ -15531,7 +15521,7 @@ function truncate(str, max = 0) {
15531
15521
  if (typeof str !== 'string' || max === 0) {
15532
15522
  return str;
15533
15523
  }
15534
- return str.length <= max ? str : `${str.slice(0, max)}...`;
15524
+ return str.length <= max ? str : `${str.substr(0, max)}...`;
15535
15525
  }
15536
15526
 
15537
15527
  /**
@@ -15698,7 +15688,9 @@ function urlEncode(object) {
15698
15688
  * @returns An Event or Error turned into an object - or the value argurment itself, when value is neither an Event nor
15699
15689
  * an Error.
15700
15690
  */
15701
- function convertToPlainObject(value)
15691
+ function convertToPlainObject(
15692
+ value,
15693
+ )
15702
15694
 
15703
15695
  {
15704
15696
  if (isError(value)) {
@@ -15891,14 +15883,6 @@ function createStackParser(...parsers) {
15891
15883
  const frames = [];
15892
15884
 
15893
15885
  for (const line of stack.split('\n').slice(skipFirst)) {
15894
- // Ignore lines over 1kb as they are unlikely to be stack frames.
15895
- // Many of the regular expressions use backtracking which results in run time that increases exponentially with
15896
- // input size. Huge strings can result in hangs/Denial of Service:
15897
- // https://github.com/getsentry/sentry-javascript/issues/2286
15898
- if (line.length > 1024) {
15899
- continue;
15900
- }
15901
-
15902
15886
  // https://github.com/getsentry/sentry-javascript/issues/5459
15903
15887
  // Remove webpack (error: *) wrappers
15904
15888
  const cleanedLine = line.replace(/\(error: (.*)\)/, '$1');
@@ -17624,9 +17608,6 @@ function forEachEnvelopeItem(
17624
17608
  });
17625
17609
  }
17626
17610
 
17627
- /**
17628
- * Encode a string to UTF8.
17629
- */
17630
17611
  function encodeUTF8(input, textEncoder) {
17631
17612
  const utf8 = textEncoder || new TextEncoder();
17632
17613
  return utf8.encode(input);
@@ -17805,11 +17786,7 @@ function parseRetryAfterHeader(header, now = Date.now()) {
17805
17786
  }
17806
17787
 
17807
17788
  /**
17808
- * Gets the time that the given category is disabled until for rate limiting.
17809
- * In case no category-specific limit is set but a general rate limit across all categories is active,
17810
- * that time is returned.
17811
- *
17812
- * @return the time in ms that the category is disabled until or 0 if there's no active rate limit.
17789
+ * Gets the time that given category is disabled until for rate limiting
17813
17790
  */
17814
17791
  function disabledUntil(limits, category) {
17815
17792
  return limits[category] || limits.all || 0;
@@ -17824,8 +17801,7 @@ function isRateLimited(limits, category, now = Date.now()) {
17824
17801
 
17825
17802
  /**
17826
17803
  * Update ratelimits from incoming headers.
17827
- *
17828
- * @return the updated RateLimits object.
17804
+ * Returns true if headers contains a non-empty rate limiting header.
17829
17805
  */
17830
17806
  function updateRateLimits(
17831
17807
  limits,
@@ -18741,7 +18717,7 @@ class Hub {
18741
18717
  */
18742
18718
  captureEvent(event, hint) {
18743
18719
  const eventId = hint && hint.event_id ? hint.event_id : uuid4();
18744
- if (!event.type) {
18720
+ if (event.type !== 'transaction') {
18745
18721
  this._lastEventId = eventId;
18746
18722
  }
18747
18723
 
@@ -18766,6 +18742,7 @@ class Hub {
18766
18742
 
18767
18743
  if (!scope || !client) return;
18768
18744
 
18745
+ // eslint-disable-next-line @typescript-eslint/unbound-method
18769
18746
  const { beforeBreadcrumb = null, maxBreadcrumbs = DEFAULT_BREADCRUMBS } =
18770
18747
  (client.getOptions && client.getOptions()) || {};
18771
18748
 
@@ -19259,15 +19236,7 @@ function createEventEnvelope(
19259
19236
  tunnel,
19260
19237
  ) {
19261
19238
  const sdkInfo = getSdkMetadataForEnvelopeHeader(metadata);
19262
-
19263
- /*
19264
- Note: Due to TS, event.type may be `replay_event`, theoretically.
19265
- In practice, we never call `createEventEnvelope` with `replay_event` type,
19266
- and we'd have to adjut a looot of types to make this work properly.
19267
- We want to avoid casting this around, as that could lead to bugs (e.g. when we add another type)
19268
- So the safe choice is to really guard against the replay_event type here.
19269
- */
19270
- const eventType = event.type && event.type !== 'replay_event' ? event.type : 'event';
19239
+ const eventType = event.type || 'event';
19271
19240
 
19272
19241
  enhanceEventWithSdkInfo(event, metadata && metadata.sdk);
19273
19242
 
@@ -19295,23 +19264,18 @@ function setupIntegrations(integrations) {
19295
19264
  const integrationIndex = {};
19296
19265
 
19297
19266
  integrations.forEach(integration => {
19298
- setupIntegration(integration, integrationIndex);
19267
+ integrationIndex[integration.name] = integration;
19268
+
19269
+ if (installedIntegrations.indexOf(integration.name) === -1) {
19270
+ integration.setupOnce(addGlobalEventProcessor, getCurrentHub);
19271
+ installedIntegrations.push(integration.name);
19272
+ (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log(`Integration installed: ${integration.name}`);
19273
+ }
19299
19274
  });
19300
19275
 
19301
19276
  return integrationIndex;
19302
19277
  }
19303
19278
 
19304
- /** Setup a single integration. */
19305
- function setupIntegration(integration, integrationIndex) {
19306
- integrationIndex[integration.name] = integration;
19307
-
19308
- if (installedIntegrations.indexOf(integration.name) === -1) {
19309
- integration.setupOnce(addGlobalEventProcessor, getCurrentHub);
19310
- installedIntegrations.push(integration.name);
19311
- (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log(`Integration installed: ${integration.name}`);
19312
- }
19313
- }
19314
-
19315
19279
  /**
19316
19280
  * Adds common information to events.
19317
19281
  *
@@ -19745,13 +19709,6 @@ class BaseClient {
19745
19709
  }
19746
19710
  }
19747
19711
 
19748
- /**
19749
- * @inheritDoc
19750
- */
19751
- addIntegration(integration) {
19752
- setupIntegration(integration, this._integrations);
19753
- }
19754
-
19755
19712
  /**
19756
19713
  * @inheritDoc
19757
19714
  */
@@ -20143,9 +20100,7 @@ const DEFAULT_TRANSPORT_BUFFER_SIZE = 30;
20143
20100
  function createTransport(
20144
20101
  options,
20145
20102
  makeRequest,
20146
- buffer = makePromiseBuffer(
20147
- options.bufferSize || DEFAULT_TRANSPORT_BUFFER_SIZE,
20148
- ),
20103
+ buffer = makePromiseBuffer(options.bufferSize || DEFAULT_TRANSPORT_BUFFER_SIZE),
20149
20104
  ) {
20150
20105
  let rateLimits = {};
20151
20106
 
@@ -20190,11 +20145,10 @@ function createTransport(
20190
20145
  }
20191
20146
 
20192
20147
  rateLimits = updateRateLimits(rateLimits, response);
20193
- return response;
20194
20148
  },
20195
20149
  error => {
20150
+ (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.error('Failed while sending event:', error);
20196
20151
  recordEnvelopeLoss('network_error');
20197
- throw error;
20198
20152
  },
20199
20153
  );
20200
20154
 
@@ -20226,7 +20180,7 @@ function getEventForEnvelopeItem(item, type) {
20226
20180
  return Array.isArray(item) ? (item )[1] : undefined;
20227
20181
  }
20228
20182
 
20229
- const SDK_VERSION = '7.31.0';
20183
+ const SDK_VERSION = '7.29.0';
20230
20184
 
20231
20185
  let originalFunctionToString;
20232
20186
 
@@ -22178,7 +22132,7 @@ class HttpContext {constructor() { HttpContext.prototype.__init.call(this); }
22178
22132
  ...(referrer && { Referer: referrer }),
22179
22133
  ...(userAgent && { 'User-Agent': userAgent }),
22180
22134
  };
22181
- const request = { ...event.request, ...(url && { url }), headers };
22135
+ const request = { ...(url && { url }), headers };
22182
22136
 
22183
22137
  return { ...event, request };
22184
22138
  }
@@ -22442,9 +22396,6 @@ const DEFAULT_FLUSH_MIN_DELAY = 5000;
22442
22396
  const DEFAULT_FLUSH_MAX_DELAY = 15000;
22443
22397
  const INITIAL_FLUSH_DELAY = 5000;
22444
22398
 
22445
- const RETRY_BASE_INTERVAL = 5000;
22446
- const RETRY_MAX_COUNT = 3;
22447
-
22448
22399
  /*! *****************************************************************************
22449
22400
  Copyright (c) Microsoft Corporation.
22450
22401
 
@@ -29451,9 +29402,6 @@ var fdt = new u8(32);
29451
29402
  for (var i = 0; i < 32; ++i)
29452
29403
  fdt[i] = 5;
29453
29404
 
29454
- /**
29455
- * Create a breadcrumb for a replay.
29456
- */
29457
29405
  function createBreadcrumb(
29458
29406
  breadcrumb,
29459
29407
  ) {
@@ -29464,9 +29412,6 @@ function createBreadcrumb(
29464
29412
  };
29465
29413
  }
29466
29414
 
29467
- /**
29468
- * An event handler to react to DOM events.
29469
- */
29470
29415
  function handleDom(handlerData) {
29471
29416
  // Taken from https://github.com/getsentry/sentry-javascript/blob/master/packages/browser/src/integrations/breadcrumbs.ts#L112
29472
29417
  let target;
@@ -29509,9 +29454,6 @@ function isEventWithTarget(event) {
29509
29454
 
29510
29455
  let _LAST_BREADCRUMB = null;
29511
29456
 
29512
- /**
29513
- * An event handler to handle scope changes.
29514
- */
29515
29457
  function handleScope(scope) {
29516
29458
  const newBreadcrumb = scope.getLastBreadcrumb();
29517
29459
 
@@ -29534,9 +29476,6 @@ function handleScope(scope) {
29534
29476
  return createBreadcrumb(newBreadcrumb);
29535
29477
  }
29536
29478
 
29537
- /**
29538
- * An event handler to react to breadcrumbs.
29539
- */
29540
29479
  function breadcrumbHandler(type, handlerData) {
29541
29480
  if (type === 'scope') {
29542
29481
  return handleScope(handlerData );
@@ -29548,19 +29487,15 @@ function breadcrumbHandler(type, handlerData) {
29548
29487
  /**
29549
29488
  * Add an event to the event buffer
29550
29489
  */
29551
- async function addEvent(
29552
- replay,
29553
- event,
29554
- isCheckout,
29555
- ) {
29490
+ function addEvent(replay, event, isCheckout) {
29556
29491
  if (!replay.eventBuffer) {
29557
29492
  // This implies that `_isEnabled` is false
29558
- return null;
29493
+ return;
29559
29494
  }
29560
29495
 
29561
29496
  if (replay.isPaused()) {
29562
29497
  // Do not add to event buffer when recording is paused
29563
- return null;
29498
+ return;
29564
29499
  }
29565
29500
 
29566
29501
  // TODO: sadness -- we will want to normalize timestamps to be in ms -
@@ -29573,7 +29508,7 @@ async function addEvent(
29573
29508
  // comes back to trigger a new session. The performance entries rely on
29574
29509
  // `performance.timeOrigin`, which is when the page first opened.
29575
29510
  if (timestampInMs + SESSION_IDLE_DURATION < new Date().getTime()) {
29576
- return null;
29511
+ return;
29577
29512
  }
29578
29513
 
29579
29514
  // Only record earliest event if a new session was created, otherwise it
@@ -29583,17 +29518,14 @@ async function addEvent(
29583
29518
  replay.getContext().earliestEvent = timestampInMs;
29584
29519
  }
29585
29520
 
29586
- return replay.eventBuffer.addEvent(event, isCheckout);
29521
+ replay.eventBuffer.addEvent(event, isCheckout);
29587
29522
  }
29588
29523
 
29589
29524
  /**
29590
29525
  * Create a "span" for each performance entry. The parent transaction is `this.replayEvent`.
29591
29526
  */
29592
- function createPerformanceSpans(
29593
- replay,
29594
- entries,
29595
- ) {
29596
- return entries.map(({ type, start, end, name, data }) =>
29527
+ function createPerformanceSpans(replay, entries) {
29528
+ entries.map(({ type, start, end, name, data }) =>
29597
29529
  addEvent(replay, {
29598
29530
  type: EventType.Custom,
29599
29531
  timestamp: start,
@@ -29680,9 +29612,6 @@ function handleFetchSpanListener(replay) {
29680
29612
  };
29681
29613
  }
29682
29614
 
29683
- /**
29684
- * Returns true if we think the given event is an error originating inside of rrweb.
29685
- */
29686
29615
  function isRrwebError(event) {
29687
29616
  if (event.type || !_optionalChain([event, 'access', _ => _.exception, 'optionalAccess', _2 => _2.values, 'optionalAccess', _3 => _3.length])) {
29688
29617
  return false;
@@ -29704,7 +29633,10 @@ function isRrwebError(event) {
29704
29633
  function handleGlobalEventListener(replay) {
29705
29634
  return (event) => {
29706
29635
  // Do not apply replayId to the root event
29707
- if (event.type === REPLAY_EVENT_NAME) {
29636
+ if (
29637
+ // @ts-ignore new event type
29638
+ event.type === REPLAY_EVENT_NAME
29639
+ ) {
29708
29640
  // Replays have separate set of breadcrumbs, do not include breadcrumbs
29709
29641
  // from core SDK
29710
29642
  delete event.breadcrumbs;
@@ -29720,7 +29652,7 @@ function handleGlobalEventListener(replay) {
29720
29652
 
29721
29653
  // Only tag transactions with replayId if not waiting for an error
29722
29654
  // @ts-ignore private
29723
- if (!event.type || replay.recordingMode === 'session') {
29655
+ if (event.type !== 'transaction' || replay.recordingMode === 'session') {
29724
29656
  event.tags = { ...event.tags, replayId: _optionalChain([replay, 'access', _5 => _5.session, 'optionalAccess', _6 => _6.id]) };
29725
29657
  }
29726
29658
 
@@ -30024,14 +29956,122 @@ function setupPerformanceObserver(replay) {
30024
29956
  return performanceObserver;
30025
29957
  }
30026
29958
 
29959
+ // Map entryType -> function to normalize data for event
29960
+ // @ts-ignore TODO: entry type does not fit the create* functions entry type
29961
+ const ENTRY_TYPES = {
29962
+ // @ts-ignore TODO: entry type does not fit the create* functions entry type
29963
+ resource: createResourceEntry,
29964
+ paint: createPaintEntry,
29965
+ // @ts-ignore TODO: entry type does not fit the create* functions entry type
29966
+ navigation: createNavigationEntry,
29967
+ // @ts-ignore TODO: entry type does not fit the create* functions entry type
29968
+ ['largest-contentful-paint']: createLargestContentfulPaint,
29969
+ };
29970
+
29971
+ function createPerformanceEntries(entries) {
29972
+ return entries.map(createPerformanceEntry).filter(Boolean) ;
29973
+ }
29974
+
29975
+ function createPerformanceEntry(entry) {
29976
+ if (ENTRY_TYPES[entry.entryType] === undefined) {
29977
+ return null;
29978
+ }
29979
+
29980
+ return ENTRY_TYPES[entry.entryType](entry);
29981
+ }
29982
+
29983
+ function getAbsoluteTime(time) {
29984
+ // browserPerformanceTimeOrigin can be undefined if `performance` or
29985
+ // `performance.now` doesn't exist, but this is already checked by this integration
29986
+ return ((browserPerformanceTimeOrigin || WINDOW.performance.timeOrigin) + time) / 1000;
29987
+ }
29988
+
29989
+ // TODO: type definition!
29990
+ // eslint-disable-next-line @typescript-eslint/explicit-function-return-type
29991
+ function createPaintEntry(entry) {
29992
+ const { duration, entryType, name, startTime } = entry;
29993
+
29994
+ const start = getAbsoluteTime(startTime);
29995
+ return {
29996
+ type: entryType,
29997
+ name,
29998
+ start,
29999
+ end: start + duration,
30000
+ };
30001
+ }
30002
+
30003
+ // TODO: type definition!
30004
+ // eslint-disable-next-line @typescript-eslint/explicit-function-return-type
30005
+ function createNavigationEntry(entry) {
30006
+ // TODO: There looks to be some more interesting bits in here (domComplete, domContentLoaded)
30007
+ const { entryType, name, duration, domComplete, startTime, transferSize, type } = entry;
30008
+
30009
+ // Ignore entries with no duration, they do not seem to be useful and cause dupes
30010
+ if (duration === 0) {
30011
+ return null;
30012
+ }
30013
+
30014
+ return {
30015
+ type: `${entryType}.${type}`,
30016
+ start: getAbsoluteTime(startTime),
30017
+ end: getAbsoluteTime(domComplete),
30018
+ name,
30019
+ data: {
30020
+ size: transferSize,
30021
+ duration,
30022
+ },
30023
+ };
30024
+ }
30025
+
30026
+ // TODO: type definition!
30027
+ // eslint-disable-next-line @typescript-eslint/explicit-function-return-type
30028
+ function createResourceEntry(entry) {
30029
+ const { entryType, initiatorType, name, responseEnd, startTime, encodedBodySize, transferSize } = entry;
30030
+
30031
+ // Core SDK handles these
30032
+ if (['fetch', 'xmlhttprequest'].includes(initiatorType)) {
30033
+ return null;
30034
+ }
30035
+
30036
+ return {
30037
+ type: `${entryType}.${initiatorType}`,
30038
+ start: getAbsoluteTime(startTime),
30039
+ end: getAbsoluteTime(responseEnd),
30040
+ name,
30041
+ data: {
30042
+ size: transferSize,
30043
+ encodedBodySize,
30044
+ },
30045
+ };
30046
+ }
30047
+
30048
+ // TODO: type definition!
30049
+ // eslint-disable-next-line @typescript-eslint/explicit-function-return-type
30050
+ function createLargestContentfulPaint(entry) {
30051
+ const { duration, entryType, startTime, size } = entry;
30052
+
30053
+ const start = getAbsoluteTime(startTime);
30054
+
30055
+ return {
30056
+ type: entryType,
30057
+ name: entryType,
30058
+ start,
30059
+ end: start + duration,
30060
+ data: {
30061
+ duration,
30062
+ size,
30063
+ // Not sure why this errors, Node should be correct (Argument of type 'Node' is not assignable to parameter of type 'INode')
30064
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
30065
+ nodeId: record.mirror.getId(entry.element ),
30066
+ },
30067
+ };
30068
+ }
30069
+
30027
30070
  const workerString = `/*! pako 2.1.0 https://github.com/nodeca/pako @license (MIT AND Zlib) */
30028
- function t(t){let e=t.length;for(;--e>=0;)t[e]=0}const e=new Uint8Array([0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0]),a=new Uint8Array([0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13]),i=new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7]),n=new Uint8Array([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),s=new Array(576);t(s);const r=new Array(60);t(r);const o=new Array(512);t(o);const l=new Array(256);t(l);const h=new Array(29);t(h);const d=new Array(30);function _(t,e,a,i,n){this.static_tree=t,this.extra_bits=e,this.extra_base=a,this.elems=i,this.max_length=n,this.has_stree=t&&t.length}let f,c,u;function w(t,e){this.dyn_tree=t,this.max_code=0,this.stat_desc=e}t(d);const m=t=>t<256?o[t]:o[256+(t>>>7)],b=(t,e)=>{t.pending_buf[t.pending++]=255&e,t.pending_buf[t.pending++]=e>>>8&255},g=(t,e,a)=>{t.bi_valid>16-a?(t.bi_buf|=e<<t.bi_valid&65535,b(t,t.bi_buf),t.bi_buf=e>>16-t.bi_valid,t.bi_valid+=a-16):(t.bi_buf|=e<<t.bi_valid&65535,t.bi_valid+=a)},p=(t,e,a)=>{g(t,a[2*e],a[2*e+1])},k=(t,e)=>{let a=0;do{a|=1&t,t>>>=1,a<<=1}while(--e>0);return a>>>1},v=(t,e,a)=>{const i=new Array(16);let n,s,r=0;for(n=1;n<=15;n++)r=r+a[n-1]<<1,i[n]=r;for(s=0;s<=e;s++){let e=t[2*s+1];0!==e&&(t[2*s]=k(i[e]++,e))}},y=t=>{let e;for(e=0;e<286;e++)t.dyn_ltree[2*e]=0;for(e=0;e<30;e++)t.dyn_dtree[2*e]=0;for(e=0;e<19;e++)t.bl_tree[2*e]=0;t.dyn_ltree[512]=1,t.opt_len=t.static_len=0,t.sym_next=t.matches=0},x=t=>{t.bi_valid>8?b(t,t.bi_buf):t.bi_valid>0&&(t.pending_buf[t.pending++]=t.bi_buf),t.bi_buf=0,t.bi_valid=0},z=(t,e,a,i)=>{const n=2*e,s=2*a;return t[n]<t[s]||t[n]===t[s]&&i[e]<=i[a]},A=(t,e,a)=>{const i=t.heap[a];let n=a<<1;for(;n<=t.heap_len&&(n<t.heap_len&&z(e,t.heap[n+1],t.heap[n],t.depth)&&n++,!z(e,i,t.heap[n],t.depth));)t.heap[a]=t.heap[n],a=n,n<<=1;t.heap[a]=i},E=(t,i,n)=>{let s,r,o,_,f=0;if(0!==t.sym_next)do{s=255&t.pending_buf[t.sym_buf+f++],s+=(255&t.pending_buf[t.sym_buf+f++])<<8,r=t.pending_buf[t.sym_buf+f++],0===s?p(t,r,i):(o=l[r],p(t,o+256+1,i),_=e[o],0!==_&&(r-=h[o],g(t,r,_)),s--,o=m(s),p(t,o,n),_=a[o],0!==_&&(s-=d[o],g(t,s,_)))}while(f<t.sym_next);p(t,256,i)},R=(t,e)=>{const a=e.dyn_tree,i=e.stat_desc.static_tree,n=e.stat_desc.has_stree,s=e.stat_desc.elems;let r,o,l,h=-1;for(t.heap_len=0,t.heap_max=573,r=0;r<s;r++)0!==a[2*r]?(t.heap[++t.heap_len]=h=r,t.depth[r]=0):a[2*r+1]=0;for(;t.heap_len<2;)l=t.heap[++t.heap_len]=h<2?++h:0,a[2*l]=1,t.depth[l]=0,t.opt_len--,n&&(t.static_len-=i[2*l+1]);for(e.max_code=h,r=t.heap_len>>1;r>=1;r--)A(t,a,r);l=s;do{r=t.heap[1],t.heap[1]=t.heap[t.heap_len--],A(t,a,1),o=t.heap[1],t.heap[--t.heap_max]=r,t.heap[--t.heap_max]=o,a[2*l]=a[2*r]+a[2*o],t.depth[l]=(t.depth[r]>=t.depth[o]?t.depth[r]:t.depth[o])+1,a[2*r+1]=a[2*o+1]=l,t.heap[1]=l++,A(t,a,1)}while(t.heap_len>=2);t.heap[--t.heap_max]=t.heap[1],((t,e)=>{const a=e.dyn_tree,i=e.max_code,n=e.stat_desc.static_tree,s=e.stat_desc.has_stree,r=e.stat_desc.extra_bits,o=e.stat_desc.extra_base,l=e.stat_desc.max_length;let h,d,_,f,c,u,w=0;for(f=0;f<=15;f++)t.bl_count[f]=0;for(a[2*t.heap[t.heap_max]+1]=0,h=t.heap_max+1;h<573;h++)d=t.heap[h],f=a[2*a[2*d+1]+1]+1,f>l&&(f=l,w++),a[2*d+1]=f,d>i||(t.bl_count[f]++,c=0,d>=o&&(c=r[d-o]),u=a[2*d],t.opt_len+=u*(f+c),s&&(t.static_len+=u*(n[2*d+1]+c)));if(0!==w){do{for(f=l-1;0===t.bl_count[f];)f--;t.bl_count[f]--,t.bl_count[f+1]+=2,t.bl_count[l]--,w-=2}while(w>0);for(f=l;0!==f;f--)for(d=t.bl_count[f];0!==d;)_=t.heap[--h],_>i||(a[2*_+1]!==f&&(t.opt_len+=(f-a[2*_+1])*a[2*_],a[2*_+1]=f),d--)}})(t,e),v(a,h,t.bl_count)},Z=(t,e,a)=>{let i,n,s=-1,r=e[1],o=0,l=7,h=4;for(0===r&&(l=138,h=3),e[2*(a+1)+1]=65535,i=0;i<=a;i++)n=r,r=e[2*(i+1)+1],++o<l&&n===r||(o<h?t.bl_tree[2*n]+=o:0!==n?(n!==s&&t.bl_tree[2*n]++,t.bl_tree[32]++):o<=10?t.bl_tree[34]++:t.bl_tree[36]++,o=0,s=n,0===r?(l=138,h=3):n===r?(l=6,h=3):(l=7,h=4))},S=(t,e,a)=>{let i,n,s=-1,r=e[1],o=0,l=7,h=4;for(0===r&&(l=138,h=3),i=0;i<=a;i++)if(n=r,r=e[2*(i+1)+1],!(++o<l&&n===r)){if(o<h)do{p(t,n,t.bl_tree)}while(0!=--o);else 0!==n?(n!==s&&(p(t,n,t.bl_tree),o--),p(t,16,t.bl_tree),g(t,o-3,2)):o<=10?(p(t,17,t.bl_tree),g(t,o-3,3)):(p(t,18,t.bl_tree),g(t,o-11,7));o=0,s=n,0===r?(l=138,h=3):n===r?(l=6,h=3):(l=7,h=4)}};let U=!1;const D=(t,e,a,i)=>{g(t,0+(i?1:0),3),x(t),b(t,a),b(t,~a),a&&t.pending_buf.set(t.window.subarray(e,e+a),t.pending),t.pending+=a};var O=(t,e,a,i)=>{let o,l,h=0;t.level>0?(2===t.strm.data_type&&(t.strm.data_type=(t=>{let e,a=4093624447;for(e=0;e<=31;e++,a>>>=1)if(1&a&&0!==t.dyn_ltree[2*e])return 0;if(0!==t.dyn_ltree[18]||0!==t.dyn_ltree[20]||0!==t.dyn_ltree[26])return 1;for(e=32;e<256;e++)if(0!==t.dyn_ltree[2*e])return 1;return 0})(t)),R(t,t.l_desc),R(t,t.d_desc),h=(t=>{let e;for(Z(t,t.dyn_ltree,t.l_desc.max_code),Z(t,t.dyn_dtree,t.d_desc.max_code),R(t,t.bl_desc),e=18;e>=3&&0===t.bl_tree[2*n[e]+1];e--);return t.opt_len+=3*(e+1)+5+5+4,e})(t),o=t.opt_len+3+7>>>3,l=t.static_len+3+7>>>3,l<=o&&(o=l)):o=l=a+5,a+4<=o&&-1!==e?D(t,e,a,i):4===t.strategy||l===o?(g(t,2+(i?1:0),3),E(t,s,r)):(g(t,4+(i?1:0),3),((t,e,a,i)=>{let s;for(g(t,e-257,5),g(t,a-1,5),g(t,i-4,4),s=0;s<i;s++)g(t,t.bl_tree[2*n[s]+1],3);S(t,t.dyn_ltree,e-1),S(t,t.dyn_dtree,a-1)})(t,t.l_desc.max_code+1,t.d_desc.max_code+1,h+1),E(t,t.dyn_ltree,t.dyn_dtree)),y(t),i&&x(t)},T={_tr_init:t=>{U||((()=>{let t,n,w,m,b;const g=new Array(16);for(w=0,m=0;m<28;m++)for(h[m]=w,t=0;t<1<<e[m];t++)l[w++]=m;for(l[w-1]=m,b=0,m=0;m<16;m++)for(d[m]=b,t=0;t<1<<a[m];t++)o[b++]=m;for(b>>=7;m<30;m++)for(d[m]=b<<7,t=0;t<1<<a[m]-7;t++)o[256+b++]=m;for(n=0;n<=15;n++)g[n]=0;for(t=0;t<=143;)s[2*t+1]=8,t++,g[8]++;for(;t<=255;)s[2*t+1]=9,t++,g[9]++;for(;t<=279;)s[2*t+1]=7,t++,g[7]++;for(;t<=287;)s[2*t+1]=8,t++,g[8]++;for(v(s,287,g),t=0;t<30;t++)r[2*t+1]=5,r[2*t]=k(t,5);f=new _(s,e,257,286,15),c=new _(r,a,0,30,15),u=new _(new Array(0),i,0,19,7)})(),U=!0),t.l_desc=new w(t.dyn_ltree,f),t.d_desc=new w(t.dyn_dtree,c),t.bl_desc=new w(t.bl_tree,u),t.bi_buf=0,t.bi_valid=0,y(t)},_tr_stored_block:D,_tr_flush_block:O,_tr_tally:(t,e,a)=>(t.pending_buf[t.sym_buf+t.sym_next++]=e,t.pending_buf[t.sym_buf+t.sym_next++]=e>>8,t.pending_buf[t.sym_buf+t.sym_next++]=a,0===e?t.dyn_ltree[2*a]++:(t.matches++,e--,t.dyn_ltree[2*(l[a]+256+1)]++,t.dyn_dtree[2*m(e)]++),t.sym_next===t.sym_end),_tr_align:t=>{g(t,2,3),p(t,256,s),(t=>{16===t.bi_valid?(b(t,t.bi_buf),t.bi_buf=0,t.bi_valid=0):t.bi_valid>=8&&(t.pending_buf[t.pending++]=255&t.bi_buf,t.bi_buf>>=8,t.bi_valid-=8)})(t)}};var N=(t,e,a,i)=>{let n=65535&t|0,s=t>>>16&65535|0,r=0;for(;0!==a;){r=a>2e3?2e3:a,a-=r;do{n=n+e[i++]|0,s=s+n|0}while(--r);n%=65521,s%=65521}return n|s<<16|0};const F=new Uint32Array((()=>{let t,e=[];for(var a=0;a<256;a++){t=a;for(var i=0;i<8;i++)t=1&t?3988292384^t>>>1:t>>>1;e[a]=t}return e})());var L=(t,e,a,i)=>{const n=F,s=i+a;t^=-1;for(let a=i;a<s;a++)t=t>>>8^n[255&(t^e[a])];return-1^t},I={2:"need dictionary",1:"stream end",0:"","-1":"file error","-2":"stream error","-3":"data error","-4":"insufficient memory","-5":"buffer error","-6":"incompatible version"},B={Z_NO_FLUSH:0,Z_PARTIAL_FLUSH:1,Z_SYNC_FLUSH:2,Z_FULL_FLUSH:3,Z_FINISH:4,Z_BLOCK:5,Z_TREES:6,Z_OK:0,Z_STREAM_END:1,Z_NEED_DICT:2,Z_ERRNO:-1,Z_STREAM_ERROR:-2,Z_DATA_ERROR:-3,Z_MEM_ERROR:-4,Z_BUF_ERROR:-5,Z_NO_COMPRESSION:0,Z_BEST_SPEED:1,Z_BEST_COMPRESSION:9,Z_DEFAULT_COMPRESSION:-1,Z_FILTERED:1,Z_HUFFMAN_ONLY:2,Z_RLE:3,Z_FIXED:4,Z_DEFAULT_STRATEGY:0,Z_BINARY:0,Z_TEXT:1,Z_UNKNOWN:2,Z_DEFLATED:8};const{_tr_init:C,_tr_stored_block:H,_tr_flush_block:M,_tr_tally:j,_tr_align:K}=T,{Z_NO_FLUSH:P,Z_PARTIAL_FLUSH:Y,Z_FULL_FLUSH:G,Z_FINISH:X,Z_BLOCK:J,Z_OK:W,Z_STREAM_END:q,Z_STREAM_ERROR:Q,Z_DATA_ERROR:V,Z_BUF_ERROR:$,Z_DEFAULT_COMPRESSION:tt,Z_FILTERED:et,Z_HUFFMAN_ONLY:at,Z_RLE:it,Z_FIXED:nt,Z_DEFAULT_STRATEGY:st,Z_UNKNOWN:rt,Z_DEFLATED:ot}=B,lt=(t,e)=>(t.msg=I[e],e),ht=t=>2*t-(t>4?9:0),dt=t=>{let e=t.length;for(;--e>=0;)t[e]=0},_t=t=>{let e,a,i,n=t.w_size;e=t.hash_size,i=e;do{a=t.head[--i],t.head[i]=a>=n?a-n:0}while(--e);e=n,i=e;do{a=t.prev[--i],t.prev[i]=a>=n?a-n:0}while(--e)};let ft=(t,e,a)=>(e<<t.hash_shift^a)&t.hash_mask;const ct=t=>{const e=t.state;let a=e.pending;a>t.avail_out&&(a=t.avail_out),0!==a&&(t.output.set(e.pending_buf.subarray(e.pending_out,e.pending_out+a),t.next_out),t.next_out+=a,e.pending_out+=a,t.total_out+=a,t.avail_out-=a,e.pending-=a,0===e.pending&&(e.pending_out=0))},ut=(t,e)=>{M(t,t.block_start>=0?t.block_start:-1,t.strstart-t.block_start,e),t.block_start=t.strstart,ct(t.strm)},wt=(t,e)=>{t.pending_buf[t.pending++]=e},mt=(t,e)=>{t.pending_buf[t.pending++]=e>>>8&255,t.pending_buf[t.pending++]=255&e},bt=(t,e,a,i)=>{let n=t.avail_in;return n>i&&(n=i),0===n?0:(t.avail_in-=n,e.set(t.input.subarray(t.next_in,t.next_in+n),a),1===t.state.wrap?t.adler=N(t.adler,e,n,a):2===t.state.wrap&&(t.adler=L(t.adler,e,n,a)),t.next_in+=n,t.total_in+=n,n)},gt=(t,e)=>{let a,i,n=t.max_chain_length,s=t.strstart,r=t.prev_length,o=t.nice_match;const l=t.strstart>t.w_size-262?t.strstart-(t.w_size-262):0,h=t.window,d=t.w_mask,_=t.prev,f=t.strstart+258;let c=h[s+r-1],u=h[s+r];t.prev_length>=t.good_match&&(n>>=2),o>t.lookahead&&(o=t.lookahead);do{if(a=e,h[a+r]===u&&h[a+r-1]===c&&h[a]===h[s]&&h[++a]===h[s+1]){s+=2,a++;do{}while(h[++s]===h[++a]&&h[++s]===h[++a]&&h[++s]===h[++a]&&h[++s]===h[++a]&&h[++s]===h[++a]&&h[++s]===h[++a]&&h[++s]===h[++a]&&h[++s]===h[++a]&&s<f);if(i=258-(f-s),s=f-258,i>r){if(t.match_start=e,r=i,i>=o)break;c=h[s+r-1],u=h[s+r]}}}while((e=_[e&d])>l&&0!=--n);return r<=t.lookahead?r:t.lookahead},pt=t=>{const e=t.w_size;let a,i,n;do{if(i=t.window_size-t.lookahead-t.strstart,t.strstart>=e+(e-262)&&(t.window.set(t.window.subarray(e,e+e-i),0),t.match_start-=e,t.strstart-=e,t.block_start-=e,t.insert>t.strstart&&(t.insert=t.strstart),_t(t),i+=e),0===t.strm.avail_in)break;if(a=bt(t.strm,t.window,t.strstart+t.lookahead,i),t.lookahead+=a,t.lookahead+t.insert>=3)for(n=t.strstart-t.insert,t.ins_h=t.window[n],t.ins_h=ft(t,t.ins_h,t.window[n+1]);t.insert&&(t.ins_h=ft(t,t.ins_h,t.window[n+3-1]),t.prev[n&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=n,n++,t.insert--,!(t.lookahead+t.insert<3)););}while(t.lookahead<262&&0!==t.strm.avail_in)},kt=(t,e)=>{let a,i,n,s=t.pending_buf_size-5>t.w_size?t.w_size:t.pending_buf_size-5,r=0,o=t.strm.avail_in;do{if(a=65535,n=t.bi_valid+42>>3,t.strm.avail_out<n)break;if(n=t.strm.avail_out-n,i=t.strstart-t.block_start,a>i+t.strm.avail_in&&(a=i+t.strm.avail_in),a>n&&(a=n),a<s&&(0===a&&e!==X||e===P||a!==i+t.strm.avail_in))break;r=e===X&&a===i+t.strm.avail_in?1:0,H(t,0,0,r),t.pending_buf[t.pending-4]=a,t.pending_buf[t.pending-3]=a>>8,t.pending_buf[t.pending-2]=~a,t.pending_buf[t.pending-1]=~a>>8,ct(t.strm),i&&(i>a&&(i=a),t.strm.output.set(t.window.subarray(t.block_start,t.block_start+i),t.strm.next_out),t.strm.next_out+=i,t.strm.avail_out-=i,t.strm.total_out+=i,t.block_start+=i,a-=i),a&&(bt(t.strm,t.strm.output,t.strm.next_out,a),t.strm.next_out+=a,t.strm.avail_out-=a,t.strm.total_out+=a)}while(0===r);return o-=t.strm.avail_in,o&&(o>=t.w_size?(t.matches=2,t.window.set(t.strm.input.subarray(t.strm.next_in-t.w_size,t.strm.next_in),0),t.strstart=t.w_size,t.insert=t.strstart):(t.window_size-t.strstart<=o&&(t.strstart-=t.w_size,t.window.set(t.window.subarray(t.w_size,t.w_size+t.strstart),0),t.matches<2&&t.matches++,t.insert>t.strstart&&(t.insert=t.strstart)),t.window.set(t.strm.input.subarray(t.strm.next_in-o,t.strm.next_in),t.strstart),t.strstart+=o,t.insert+=o>t.w_size-t.insert?t.w_size-t.insert:o),t.block_start=t.strstart),t.high_water<t.strstart&&(t.high_water=t.strstart),r?4:e!==P&&e!==X&&0===t.strm.avail_in&&t.strstart===t.block_start?2:(n=t.window_size-t.strstart,t.strm.avail_in>n&&t.block_start>=t.w_size&&(t.block_start-=t.w_size,t.strstart-=t.w_size,t.window.set(t.window.subarray(t.w_size,t.w_size+t.strstart),0),t.matches<2&&t.matches++,n+=t.w_size,t.insert>t.strstart&&(t.insert=t.strstart)),n>t.strm.avail_in&&(n=t.strm.avail_in),n&&(bt(t.strm,t.window,t.strstart,n),t.strstart+=n,t.insert+=n>t.w_size-t.insert?t.w_size-t.insert:n),t.high_water<t.strstart&&(t.high_water=t.strstart),n=t.bi_valid+42>>3,n=t.pending_buf_size-n>65535?65535:t.pending_buf_size-n,s=n>t.w_size?t.w_size:n,i=t.strstart-t.block_start,(i>=s||(i||e===X)&&e!==P&&0===t.strm.avail_in&&i<=n)&&(a=i>n?n:i,r=e===X&&0===t.strm.avail_in&&a===i?1:0,H(t,t.block_start,a,r),t.block_start+=a,ct(t.strm)),r?3:1)},vt=(t,e)=>{let a,i;for(;;){if(t.lookahead<262){if(pt(t),t.lookahead<262&&e===P)return 1;if(0===t.lookahead)break}if(a=0,t.lookahead>=3&&(t.ins_h=ft(t,t.ins_h,t.window[t.strstart+3-1]),a=t.prev[t.strstart&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=t.strstart),0!==a&&t.strstart-a<=t.w_size-262&&(t.match_length=gt(t,a)),t.match_length>=3)if(i=j(t,t.strstart-t.match_start,t.match_length-3),t.lookahead-=t.match_length,t.match_length<=t.max_lazy_match&&t.lookahead>=3){t.match_length--;do{t.strstart++,t.ins_h=ft(t,t.ins_h,t.window[t.strstart+3-1]),a=t.prev[t.strstart&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=t.strstart}while(0!=--t.match_length);t.strstart++}else t.strstart+=t.match_length,t.match_length=0,t.ins_h=t.window[t.strstart],t.ins_h=ft(t,t.ins_h,t.window[t.strstart+1]);else i=j(t,0,t.window[t.strstart]),t.lookahead--,t.strstart++;if(i&&(ut(t,!1),0===t.strm.avail_out))return 1}return t.insert=t.strstart<2?t.strstart:2,e===X?(ut(t,!0),0===t.strm.avail_out?3:4):t.sym_next&&(ut(t,!1),0===t.strm.avail_out)?1:2},yt=(t,e)=>{let a,i,n;for(;;){if(t.lookahead<262){if(pt(t),t.lookahead<262&&e===P)return 1;if(0===t.lookahead)break}if(a=0,t.lookahead>=3&&(t.ins_h=ft(t,t.ins_h,t.window[t.strstart+3-1]),a=t.prev[t.strstart&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=t.strstart),t.prev_length=t.match_length,t.prev_match=t.match_start,t.match_length=2,0!==a&&t.prev_length<t.max_lazy_match&&t.strstart-a<=t.w_size-262&&(t.match_length=gt(t,a),t.match_length<=5&&(t.strategy===et||3===t.match_length&&t.strstart-t.match_start>4096)&&(t.match_length=2)),t.prev_length>=3&&t.match_length<=t.prev_length){n=t.strstart+t.lookahead-3,i=j(t,t.strstart-1-t.prev_match,t.prev_length-3),t.lookahead-=t.prev_length-1,t.prev_length-=2;do{++t.strstart<=n&&(t.ins_h=ft(t,t.ins_h,t.window[t.strstart+3-1]),a=t.prev[t.strstart&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=t.strstart)}while(0!=--t.prev_length);if(t.match_available=0,t.match_length=2,t.strstart++,i&&(ut(t,!1),0===t.strm.avail_out))return 1}else if(t.match_available){if(i=j(t,0,t.window[t.strstart-1]),i&&ut(t,!1),t.strstart++,t.lookahead--,0===t.strm.avail_out)return 1}else t.match_available=1,t.strstart++,t.lookahead--}return t.match_available&&(i=j(t,0,t.window[t.strstart-1]),t.match_available=0),t.insert=t.strstart<2?t.strstart:2,e===X?(ut(t,!0),0===t.strm.avail_out?3:4):t.sym_next&&(ut(t,!1),0===t.strm.avail_out)?1:2};function xt(t,e,a,i,n){this.good_length=t,this.max_lazy=e,this.nice_length=a,this.max_chain=i,this.func=n}const zt=[new xt(0,0,0,0,kt),new xt(4,4,8,4,vt),new xt(4,5,16,8,vt),new xt(4,6,32,32,vt),new xt(4,4,16,16,yt),new xt(8,16,32,32,yt),new xt(8,16,128,128,yt),new xt(8,32,128,256,yt),new xt(32,128,258,1024,yt),new xt(32,258,258,4096,yt)];function At(){this.strm=null,this.status=0,this.pending_buf=null,this.pending_buf_size=0,this.pending_out=0,this.pending=0,this.wrap=0,this.gzhead=null,this.gzindex=0,this.method=ot,this.last_flush=-1,this.w_size=0,this.w_bits=0,this.w_mask=0,this.window=null,this.window_size=0,this.prev=null,this.head=null,this.ins_h=0,this.hash_size=0,this.hash_bits=0,this.hash_mask=0,this.hash_shift=0,this.block_start=0,this.match_length=0,this.prev_match=0,this.match_available=0,this.strstart=0,this.match_start=0,this.lookahead=0,this.prev_length=0,this.max_chain_length=0,this.max_lazy_match=0,this.level=0,this.strategy=0,this.good_match=0,this.nice_match=0,this.dyn_ltree=new Uint16Array(1146),this.dyn_dtree=new Uint16Array(122),this.bl_tree=new Uint16Array(78),dt(this.dyn_ltree),dt(this.dyn_dtree),dt(this.bl_tree),this.l_desc=null,this.d_desc=null,this.bl_desc=null,this.bl_count=new Uint16Array(16),this.heap=new Uint16Array(573),dt(this.heap),this.heap_len=0,this.heap_max=0,this.depth=new Uint16Array(573),dt(this.depth),this.sym_buf=0,this.lit_bufsize=0,this.sym_next=0,this.sym_end=0,this.opt_len=0,this.static_len=0,this.matches=0,this.insert=0,this.bi_buf=0,this.bi_valid=0}const Et=t=>{if(!t)return 1;const e=t.state;return!e||e.strm!==t||42!==e.status&&57!==e.status&&69!==e.status&&73!==e.status&&91!==e.status&&103!==e.status&&113!==e.status&&666!==e.status?1:0},Rt=t=>{if(Et(t))return lt(t,Q);t.total_in=t.total_out=0,t.data_type=rt;const e=t.state;return e.pending=0,e.pending_out=0,e.wrap<0&&(e.wrap=-e.wrap),e.status=2===e.wrap?57:e.wrap?42:113,t.adler=2===e.wrap?0:1,e.last_flush=-2,C(e),W},Zt=t=>{const e=Rt(t);var a;return e===W&&((a=t.state).window_size=2*a.w_size,dt(a.head),a.max_lazy_match=zt[a.level].max_lazy,a.good_match=zt[a.level].good_length,a.nice_match=zt[a.level].nice_length,a.max_chain_length=zt[a.level].max_chain,a.strstart=0,a.block_start=0,a.lookahead=0,a.insert=0,a.match_length=a.prev_length=2,a.match_available=0,a.ins_h=0),e},St=(t,e,a,i,n,s)=>{if(!t)return Q;let r=1;if(e===tt&&(e=6),i<0?(r=0,i=-i):i>15&&(r=2,i-=16),n<1||n>9||a!==ot||i<8||i>15||e<0||e>9||s<0||s>nt||8===i&&1!==r)return lt(t,Q);8===i&&(i=9);const o=new At;return t.state=o,o.strm=t,o.status=42,o.wrap=r,o.gzhead=null,o.w_bits=i,o.w_size=1<<o.w_bits,o.w_mask=o.w_size-1,o.hash_bits=n+7,o.hash_size=1<<o.hash_bits,o.hash_mask=o.hash_size-1,o.hash_shift=~~((o.hash_bits+3-1)/3),o.window=new Uint8Array(2*o.w_size),o.head=new Uint16Array(o.hash_size),o.prev=new Uint16Array(o.w_size),o.lit_bufsize=1<<n+6,o.pending_buf_size=4*o.lit_bufsize,o.pending_buf=new Uint8Array(o.pending_buf_size),o.sym_buf=o.lit_bufsize,o.sym_end=3*(o.lit_bufsize-1),o.level=e,o.strategy=s,o.method=a,Zt(t)};var Ut={deflateInit:(t,e)=>St(t,e,ot,15,8,st),deflateInit2:St,deflateReset:Zt,deflateResetKeep:Rt,deflateSetHeader:(t,e)=>Et(t)||2!==t.state.wrap?Q:(t.state.gzhead=e,W),deflate:(t,e)=>{if(Et(t)||e>J||e<0)return t?lt(t,Q):Q;const a=t.state;if(!t.output||0!==t.avail_in&&!t.input||666===a.status&&e!==X)return lt(t,0===t.avail_out?$:Q);const i=a.last_flush;if(a.last_flush=e,0!==a.pending){if(ct(t),0===t.avail_out)return a.last_flush=-1,W}else if(0===t.avail_in&&ht(e)<=ht(i)&&e!==X)return lt(t,$);if(666===a.status&&0!==t.avail_in)return lt(t,$);if(42===a.status&&0===a.wrap&&(a.status=113),42===a.status){let e=ot+(a.w_bits-8<<4)<<8,i=-1;if(i=a.strategy>=at||a.level<2?0:a.level<6?1:6===a.level?2:3,e|=i<<6,0!==a.strstart&&(e|=32),e+=31-e%31,mt(a,e),0!==a.strstart&&(mt(a,t.adler>>>16),mt(a,65535&t.adler)),t.adler=1,a.status=113,ct(t),0!==a.pending)return a.last_flush=-1,W}if(57===a.status)if(t.adler=0,wt(a,31),wt(a,139),wt(a,8),a.gzhead)wt(a,(a.gzhead.text?1:0)+(a.gzhead.hcrc?2:0)+(a.gzhead.extra?4:0)+(a.gzhead.name?8:0)+(a.gzhead.comment?16:0)),wt(a,255&a.gzhead.time),wt(a,a.gzhead.time>>8&255),wt(a,a.gzhead.time>>16&255),wt(a,a.gzhead.time>>24&255),wt(a,9===a.level?2:a.strategy>=at||a.level<2?4:0),wt(a,255&a.gzhead.os),a.gzhead.extra&&a.gzhead.extra.length&&(wt(a,255&a.gzhead.extra.length),wt(a,a.gzhead.extra.length>>8&255)),a.gzhead.hcrc&&(t.adler=L(t.adler,a.pending_buf,a.pending,0)),a.gzindex=0,a.status=69;else if(wt(a,0),wt(a,0),wt(a,0),wt(a,0),wt(a,0),wt(a,9===a.level?2:a.strategy>=at||a.level<2?4:0),wt(a,3),a.status=113,ct(t),0!==a.pending)return a.last_flush=-1,W;if(69===a.status){if(a.gzhead.extra){let e=a.pending,i=(65535&a.gzhead.extra.length)-a.gzindex;for(;a.pending+i>a.pending_buf_size;){let n=a.pending_buf_size-a.pending;if(a.pending_buf.set(a.gzhead.extra.subarray(a.gzindex,a.gzindex+n),a.pending),a.pending=a.pending_buf_size,a.gzhead.hcrc&&a.pending>e&&(t.adler=L(t.adler,a.pending_buf,a.pending-e,e)),a.gzindex+=n,ct(t),0!==a.pending)return a.last_flush=-1,W;e=0,i-=n}let n=new Uint8Array(a.gzhead.extra);a.pending_buf.set(n.subarray(a.gzindex,a.gzindex+i),a.pending),a.pending+=i,a.gzhead.hcrc&&a.pending>e&&(t.adler=L(t.adler,a.pending_buf,a.pending-e,e)),a.gzindex=0}a.status=73}if(73===a.status){if(a.gzhead.name){let e,i=a.pending;do{if(a.pending===a.pending_buf_size){if(a.gzhead.hcrc&&a.pending>i&&(t.adler=L(t.adler,a.pending_buf,a.pending-i,i)),ct(t),0!==a.pending)return a.last_flush=-1,W;i=0}e=a.gzindex<a.gzhead.name.length?255&a.gzhead.name.charCodeAt(a.gzindex++):0,wt(a,e)}while(0!==e);a.gzhead.hcrc&&a.pending>i&&(t.adler=L(t.adler,a.pending_buf,a.pending-i,i)),a.gzindex=0}a.status=91}if(91===a.status){if(a.gzhead.comment){let e,i=a.pending;do{if(a.pending===a.pending_buf_size){if(a.gzhead.hcrc&&a.pending>i&&(t.adler=L(t.adler,a.pending_buf,a.pending-i,i)),ct(t),0!==a.pending)return a.last_flush=-1,W;i=0}e=a.gzindex<a.gzhead.comment.length?255&a.gzhead.comment.charCodeAt(a.gzindex++):0,wt(a,e)}while(0!==e);a.gzhead.hcrc&&a.pending>i&&(t.adler=L(t.adler,a.pending_buf,a.pending-i,i))}a.status=103}if(103===a.status){if(a.gzhead.hcrc){if(a.pending+2>a.pending_buf_size&&(ct(t),0!==a.pending))return a.last_flush=-1,W;wt(a,255&t.adler),wt(a,t.adler>>8&255),t.adler=0}if(a.status=113,ct(t),0!==a.pending)return a.last_flush=-1,W}if(0!==t.avail_in||0!==a.lookahead||e!==P&&666!==a.status){let i=0===a.level?kt(a,e):a.strategy===at?((t,e)=>{let a;for(;;){if(0===t.lookahead&&(pt(t),0===t.lookahead)){if(e===P)return 1;break}if(t.match_length=0,a=j(t,0,t.window[t.strstart]),t.lookahead--,t.strstart++,a&&(ut(t,!1),0===t.strm.avail_out))return 1}return t.insert=0,e===X?(ut(t,!0),0===t.strm.avail_out?3:4):t.sym_next&&(ut(t,!1),0===t.strm.avail_out)?1:2})(a,e):a.strategy===it?((t,e)=>{let a,i,n,s;const r=t.window;for(;;){if(t.lookahead<=258){if(pt(t),t.lookahead<=258&&e===P)return 1;if(0===t.lookahead)break}if(t.match_length=0,t.lookahead>=3&&t.strstart>0&&(n=t.strstart-1,i=r[n],i===r[++n]&&i===r[++n]&&i===r[++n])){s=t.strstart+258;do{}while(i===r[++n]&&i===r[++n]&&i===r[++n]&&i===r[++n]&&i===r[++n]&&i===r[++n]&&i===r[++n]&&i===r[++n]&&n<s);t.match_length=258-(s-n),t.match_length>t.lookahead&&(t.match_length=t.lookahead)}if(t.match_length>=3?(a=j(t,1,t.match_length-3),t.lookahead-=t.match_length,t.strstart+=t.match_length,t.match_length=0):(a=j(t,0,t.window[t.strstart]),t.lookahead--,t.strstart++),a&&(ut(t,!1),0===t.strm.avail_out))return 1}return t.insert=0,e===X?(ut(t,!0),0===t.strm.avail_out?3:4):t.sym_next&&(ut(t,!1),0===t.strm.avail_out)?1:2})(a,e):zt[a.level].func(a,e);if(3!==i&&4!==i||(a.status=666),1===i||3===i)return 0===t.avail_out&&(a.last_flush=-1),W;if(2===i&&(e===Y?K(a):e!==J&&(H(a,0,0,!1),e===G&&(dt(a.head),0===a.lookahead&&(a.strstart=0,a.block_start=0,a.insert=0))),ct(t),0===t.avail_out))return a.last_flush=-1,W}return e!==X?W:a.wrap<=0?q:(2===a.wrap?(wt(a,255&t.adler),wt(a,t.adler>>8&255),wt(a,t.adler>>16&255),wt(a,t.adler>>24&255),wt(a,255&t.total_in),wt(a,t.total_in>>8&255),wt(a,t.total_in>>16&255),wt(a,t.total_in>>24&255)):(mt(a,t.adler>>>16),mt(a,65535&t.adler)),ct(t),a.wrap>0&&(a.wrap=-a.wrap),0!==a.pending?W:q)},deflateEnd:t=>{if(Et(t))return Q;const e=t.state.status;return t.state=null,113===e?lt(t,V):W},deflateSetDictionary:(t,e)=>{let a=e.length;if(Et(t))return Q;const i=t.state,n=i.wrap;if(2===n||1===n&&42!==i.status||i.lookahead)return Q;if(1===n&&(t.adler=N(t.adler,e,a,0)),i.wrap=0,a>=i.w_size){0===n&&(dt(i.head),i.strstart=0,i.block_start=0,i.insert=0);let t=new Uint8Array(i.w_size);t.set(e.subarray(a-i.w_size,a),0),e=t,a=i.w_size}const s=t.avail_in,r=t.next_in,o=t.input;for(t.avail_in=a,t.next_in=0,t.input=e,pt(i);i.lookahead>=3;){let t=i.strstart,e=i.lookahead-2;do{i.ins_h=ft(i,i.ins_h,i.window[t+3-1]),i.prev[t&i.w_mask]=i.head[i.ins_h],i.head[i.ins_h]=t,t++}while(--e);i.strstart=t,i.lookahead=2,pt(i)}return i.strstart+=i.lookahead,i.block_start=i.strstart,i.insert=i.lookahead,i.lookahead=0,i.match_length=i.prev_length=2,i.match_available=0,t.next_in=r,t.input=o,t.avail_in=s,i.wrap=n,W},deflateInfo:"pako deflate (from Nodeca project)"};const Dt=(t,e)=>Object.prototype.hasOwnProperty.call(t,e);var Ot=function(t){const e=Array.prototype.slice.call(arguments,1);for(;e.length;){const a=e.shift();if(a){if("object"!=typeof a)throw new TypeError(a+"must be non-object");for(const e in a)Dt(a,e)&&(t[e]=a[e])}}return t},Tt=t=>{let e=0;for(let a=0,i=t.length;a<i;a++)e+=t[a].length;const a=new Uint8Array(e);for(let e=0,i=0,n=t.length;e<n;e++){let n=t[e];a.set(n,i),i+=n.length}return a};let Nt=!0;try{String.fromCharCode.apply(null,new Uint8Array(1))}catch(t){Nt=!1}const Ft=new Uint8Array(256);for(let t=0;t<256;t++)Ft[t]=t>=252?6:t>=248?5:t>=240?4:t>=224?3:t>=192?2:1;Ft[254]=Ft[254]=1;var Lt=t=>{if("function"==typeof TextEncoder&&TextEncoder.prototype.encode)return(new TextEncoder).encode(t);let e,a,i,n,s,r=t.length,o=0;for(n=0;n<r;n++)a=t.charCodeAt(n),55296==(64512&a)&&n+1<r&&(i=t.charCodeAt(n+1),56320==(64512&i)&&(a=65536+(a-55296<<10)+(i-56320),n++)),o+=a<128?1:a<2048?2:a<65536?3:4;for(e=new Uint8Array(o),s=0,n=0;s<o;n++)a=t.charCodeAt(n),55296==(64512&a)&&n+1<r&&(i=t.charCodeAt(n+1),56320==(64512&i)&&(a=65536+(a-55296<<10)+(i-56320),n++)),a<128?e[s++]=a:a<2048?(e[s++]=192|a>>>6,e[s++]=128|63&a):a<65536?(e[s++]=224|a>>>12,e[s++]=128|a>>>6&63,e[s++]=128|63&a):(e[s++]=240|a>>>18,e[s++]=128|a>>>12&63,e[s++]=128|a>>>6&63,e[s++]=128|63&a);return e},It=(t,e)=>{const a=e||t.length;if("function"==typeof TextDecoder&&TextDecoder.prototype.decode)return(new TextDecoder).decode(t.subarray(0,e));let i,n;const s=new Array(2*a);for(n=0,i=0;i<a;){let e=t[i++];if(e<128){s[n++]=e;continue}let r=Ft[e];if(r>4)s[n++]=65533,i+=r-1;else{for(e&=2===r?31:3===r?15:7;r>1&&i<a;)e=e<<6|63&t[i++],r--;r>1?s[n++]=65533:e<65536?s[n++]=e:(e-=65536,s[n++]=55296|e>>10&1023,s[n++]=56320|1023&e)}}return((t,e)=>{if(e<65534&&t.subarray&&Nt)return String.fromCharCode.apply(null,t.length===e?t:t.subarray(0,e));let a="";for(let i=0;i<e;i++)a+=String.fromCharCode(t[i]);return a})(s,n)},Bt=(t,e)=>{(e=e||t.length)>t.length&&(e=t.length);let a=e-1;for(;a>=0&&128==(192&t[a]);)a--;return a<0||0===a?e:a+Ft[t[a]]>e?a:e};var Ct=function(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg="",this.state=null,this.data_type=2,this.adler=0};const Ht=Object.prototype.toString,{Z_NO_FLUSH:Mt,Z_SYNC_FLUSH:jt,Z_FULL_FLUSH:Kt,Z_FINISH:Pt,Z_OK:Yt,Z_STREAM_END:Gt,Z_DEFAULT_COMPRESSION:Xt,Z_DEFAULT_STRATEGY:Jt,Z_DEFLATED:Wt}=B;function qt(t){this.options=Ot({level:Xt,method:Wt,chunkSize:16384,windowBits:15,memLevel:8,strategy:Jt},t||{});let e=this.options;e.raw&&e.windowBits>0?e.windowBits=-e.windowBits:e.gzip&&e.windowBits>0&&e.windowBits<16&&(e.windowBits+=16),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new Ct,this.strm.avail_out=0;let a=Ut.deflateInit2(this.strm,e.level,e.method,e.windowBits,e.memLevel,e.strategy);if(a!==Yt)throw new Error(I[a]);if(e.header&&Ut.deflateSetHeader(this.strm,e.header),e.dictionary){let t;if(t="string"==typeof e.dictionary?Lt(e.dictionary):"[object ArrayBuffer]"===Ht.call(e.dictionary)?new Uint8Array(e.dictionary):e.dictionary,a=Ut.deflateSetDictionary(this.strm,t),a!==Yt)throw new Error(I[a]);this._dict_set=!0}}function Qt(t,e){const a=new qt(e);if(a.push(t,!0),a.err)throw a.msg||I[a.err];return a.result}qt.prototype.push=function(t,e){const a=this.strm,i=this.options.chunkSize;let n,s;if(this.ended)return!1;for(s=e===~~e?e:!0===e?Pt:Mt,"string"==typeof t?a.input=Lt(t):"[object ArrayBuffer]"===Ht.call(t)?a.input=new Uint8Array(t):a.input=t,a.next_in=0,a.avail_in=a.input.length;;)if(0===a.avail_out&&(a.output=new Uint8Array(i),a.next_out=0,a.avail_out=i),(s===jt||s===Kt)&&a.avail_out<=6)this.onData(a.output.subarray(0,a.next_out)),a.avail_out=0;else{if(n=Ut.deflate(a,s),n===Gt)return a.next_out>0&&this.onData(a.output.subarray(0,a.next_out)),n=Ut.deflateEnd(this.strm),this.onEnd(n),this.ended=!0,n===Yt;if(0!==a.avail_out){if(s>0&&a.next_out>0)this.onData(a.output.subarray(0,a.next_out)),a.avail_out=0;else if(0===a.avail_in)break}else this.onData(a.output)}return!0},qt.prototype.onData=function(t){this.chunks.push(t)},qt.prototype.onEnd=function(t){t===Yt&&(this.result=Tt(this.chunks)),this.chunks=[],this.err=t,this.msg=this.strm.msg};var Vt={Deflate:qt,deflate:Qt,deflateRaw:function(t,e){return(e=e||{}).raw=!0,Qt(t,e)},gzip:function(t,e){return(e=e||{}).gzip=!0,Qt(t,e)},constants:B};var $t=function(t,e){let a,i,n,s,r,o,l,h,d,_,f,c,u,w,m,b,g,p,k,v,y,x,z,A;const E=t.state;a=t.next_in,z=t.input,i=a+(t.avail_in-5),n=t.next_out,A=t.output,s=n-(e-t.avail_out),r=n+(t.avail_out-257),o=E.dmax,l=E.wsize,h=E.whave,d=E.wnext,_=E.window,f=E.hold,c=E.bits,u=E.lencode,w=E.distcode,m=(1<<E.lenbits)-1,b=(1<<E.distbits)-1;t:do{c<15&&(f+=z[a++]<<c,c+=8,f+=z[a++]<<c,c+=8),g=u[f&m];e:for(;;){if(p=g>>>24,f>>>=p,c-=p,p=g>>>16&255,0===p)A[n++]=65535&g;else{if(!(16&p)){if(0==(64&p)){g=u[(65535&g)+(f&(1<<p)-1)];continue e}if(32&p){E.mode=16191;break t}t.msg="invalid literal/length code",E.mode=16209;break t}k=65535&g,p&=15,p&&(c<p&&(f+=z[a++]<<c,c+=8),k+=f&(1<<p)-1,f>>>=p,c-=p),c<15&&(f+=z[a++]<<c,c+=8,f+=z[a++]<<c,c+=8),g=w[f&b];a:for(;;){if(p=g>>>24,f>>>=p,c-=p,p=g>>>16&255,!(16&p)){if(0==(64&p)){g=w[(65535&g)+(f&(1<<p)-1)];continue a}t.msg="invalid distance code",E.mode=16209;break t}if(v=65535&g,p&=15,c<p&&(f+=z[a++]<<c,c+=8,c<p&&(f+=z[a++]<<c,c+=8)),v+=f&(1<<p)-1,v>o){t.msg="invalid distance too far back",E.mode=16209;break t}if(f>>>=p,c-=p,p=n-s,v>p){if(p=v-p,p>h&&E.sane){t.msg="invalid distance too far back",E.mode=16209;break t}if(y=0,x=_,0===d){if(y+=l-p,p<k){k-=p;do{A[n++]=_[y++]}while(--p);y=n-v,x=A}}else if(d<p){if(y+=l+d-p,p-=d,p<k){k-=p;do{A[n++]=_[y++]}while(--p);if(y=0,d<k){p=d,k-=p;do{A[n++]=_[y++]}while(--p);y=n-v,x=A}}}else if(y+=d-p,p<k){k-=p;do{A[n++]=_[y++]}while(--p);y=n-v,x=A}for(;k>2;)A[n++]=x[y++],A[n++]=x[y++],A[n++]=x[y++],k-=3;k&&(A[n++]=x[y++],k>1&&(A[n++]=x[y++]))}else{y=n-v;do{A[n++]=A[y++],A[n++]=A[y++],A[n++]=A[y++],k-=3}while(k>2);k&&(A[n++]=A[y++],k>1&&(A[n++]=A[y++]))}break}}break}}while(a<i&&n<r);k=c>>3,a-=k,c-=k<<3,f&=(1<<c)-1,t.next_in=a,t.next_out=n,t.avail_in=a<i?i-a+5:5-(a-i),t.avail_out=n<r?r-n+257:257-(n-r),E.hold=f,E.bits=c};const te=new Uint16Array([3,4,5,6,7,8,9,10,11,13,15,17,19,23,27,31,35,43,51,59,67,83,99,115,131,163,195,227,258,0,0]),ee=new Uint8Array([16,16,16,16,16,16,16,16,17,17,17,17,18,18,18,18,19,19,19,19,20,20,20,20,21,21,21,21,16,72,78]),ae=new Uint16Array([1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193,257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577,0,0]),ie=new Uint8Array([16,16,16,16,17,17,18,18,19,19,20,20,21,21,22,22,23,23,24,24,25,25,26,26,27,27,28,28,29,29,64,64]);var ne=(t,e,a,i,n,s,r,o)=>{const l=o.bits;let h,d,_,f,c,u,w=0,m=0,b=0,g=0,p=0,k=0,v=0,y=0,x=0,z=0,A=null;const E=new Uint16Array(16),R=new Uint16Array(16);let Z,S,U,D=null;for(w=0;w<=15;w++)E[w]=0;for(m=0;m<i;m++)E[e[a+m]]++;for(p=l,g=15;g>=1&&0===E[g];g--);if(p>g&&(p=g),0===g)return n[s++]=20971520,n[s++]=20971520,o.bits=1,0;for(b=1;b<g&&0===E[b];b++);for(p<b&&(p=b),y=1,w=1;w<=15;w++)if(y<<=1,y-=E[w],y<0)return-1;if(y>0&&(0===t||1!==g))return-1;for(R[1]=0,w=1;w<15;w++)R[w+1]=R[w]+E[w];for(m=0;m<i;m++)0!==e[a+m]&&(r[R[e[a+m]]++]=m);if(0===t?(A=D=r,u=20):1===t?(A=te,D=ee,u=257):(A=ae,D=ie,u=0),z=0,m=0,w=b,c=s,k=p,v=0,_=-1,x=1<<p,f=x-1,1===t&&x>852||2===t&&x>592)return 1;for(;;){Z=w-v,r[m]+1<u?(S=0,U=r[m]):r[m]>=u?(S=D[r[m]-u],U=A[r[m]-u]):(S=96,U=0),h=1<<w-v,d=1<<k,b=d;do{d-=h,n[c+(z>>v)+d]=Z<<24|S<<16|U|0}while(0!==d);for(h=1<<w-1;z&h;)h>>=1;if(0!==h?(z&=h-1,z+=h):z=0,m++,0==--E[w]){if(w===g)break;w=e[a+r[m]]}if(w>p&&(z&f)!==_){for(0===v&&(v=p),c+=b,k=w-v,y=1<<k;k+v<g&&(y-=E[k+v],!(y<=0));)k++,y<<=1;if(x+=1<<k,1===t&&x>852||2===t&&x>592)return 1;_=z&f,n[_]=p<<24|k<<16|c-s|0}}return 0!==z&&(n[c+z]=w-v<<24|64<<16|0),o.bits=p,0};const{Z_FINISH:se,Z_BLOCK:re,Z_TREES:oe,Z_OK:le,Z_STREAM_END:he,Z_NEED_DICT:de,Z_STREAM_ERROR:_e,Z_DATA_ERROR:fe,Z_MEM_ERROR:ce,Z_BUF_ERROR:ue,Z_DEFLATED:we}=B,me=16209,be=t=>(t>>>24&255)+(t>>>8&65280)+((65280&t)<<8)+((255&t)<<24);function ge(){this.strm=null,this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new Uint16Array(320),this.work=new Uint16Array(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}const pe=t=>{if(!t)return 1;const e=t.state;return!e||e.strm!==t||e.mode<16180||e.mode>16211?1:0},ke=t=>{if(pe(t))return _e;const e=t.state;return t.total_in=t.total_out=e.total=0,t.msg="",e.wrap&&(t.adler=1&e.wrap),e.mode=16180,e.last=0,e.havedict=0,e.flags=-1,e.dmax=32768,e.head=null,e.hold=0,e.bits=0,e.lencode=e.lendyn=new Int32Array(852),e.distcode=e.distdyn=new Int32Array(592),e.sane=1,e.back=-1,le},ve=t=>{if(pe(t))return _e;const e=t.state;return e.wsize=0,e.whave=0,e.wnext=0,ke(t)},ye=(t,e)=>{let a;if(pe(t))return _e;const i=t.state;return e<0?(a=0,e=-e):(a=5+(e>>4),e<48&&(e&=15)),e&&(e<8||e>15)?_e:(null!==i.window&&i.wbits!==e&&(i.window=null),i.wrap=a,i.wbits=e,ve(t))},xe=(t,e)=>{if(!t)return _e;const a=new ge;t.state=a,a.strm=t,a.window=null,a.mode=16180;const i=ye(t,e);return i!==le&&(t.state=null),i};let ze,Ae,Ee=!0;const Re=t=>{if(Ee){ze=new Int32Array(512),Ae=new Int32Array(32);let e=0;for(;e<144;)t.lens[e++]=8;for(;e<256;)t.lens[e++]=9;for(;e<280;)t.lens[e++]=7;for(;e<288;)t.lens[e++]=8;for(ne(1,t.lens,0,288,ze,0,t.work,{bits:9}),e=0;e<32;)t.lens[e++]=5;ne(2,t.lens,0,32,Ae,0,t.work,{bits:5}),Ee=!1}t.lencode=ze,t.lenbits=9,t.distcode=Ae,t.distbits=5},Ze=(t,e,a,i)=>{let n;const s=t.state;return null===s.window&&(s.wsize=1<<s.wbits,s.wnext=0,s.whave=0,s.window=new Uint8Array(s.wsize)),i>=s.wsize?(s.window.set(e.subarray(a-s.wsize,a),0),s.wnext=0,s.whave=s.wsize):(n=s.wsize-s.wnext,n>i&&(n=i),s.window.set(e.subarray(a-i,a-i+n),s.wnext),(i-=n)?(s.window.set(e.subarray(a-i,a),0),s.wnext=i,s.whave=s.wsize):(s.wnext+=n,s.wnext===s.wsize&&(s.wnext=0),s.whave<s.wsize&&(s.whave+=n))),0};var Se={inflateReset:ve,inflateReset2:ye,inflateResetKeep:ke,inflateInit:t=>xe(t,15),inflateInit2:xe,inflate:(t,e)=>{let a,i,n,s,r,o,l,h,d,_,f,c,u,w,m,b,g,p,k,v,y,x,z=0;const A=new Uint8Array(4);let E,R;const Z=new Uint8Array([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]);if(pe(t)||!t.output||!t.input&&0!==t.avail_in)return _e;a=t.state,16191===a.mode&&(a.mode=16192),r=t.next_out,n=t.output,l=t.avail_out,s=t.next_in,i=t.input,o=t.avail_in,h=a.hold,d=a.bits,_=o,f=l,x=le;t:for(;;)switch(a.mode){case 16180:if(0===a.wrap){a.mode=16192;break}for(;d<16;){if(0===o)break t;o--,h+=i[s++]<<d,d+=8}if(2&a.wrap&&35615===h){0===a.wbits&&(a.wbits=15),a.check=0,A[0]=255&h,A[1]=h>>>8&255,a.check=L(a.check,A,2,0),h=0,d=0,a.mode=16181;break}if(a.head&&(a.head.done=!1),!(1&a.wrap)||(((255&h)<<8)+(h>>8))%31){t.msg="incorrect header check",a.mode=me;break}if((15&h)!==we){t.msg="unknown compression method",a.mode=me;break}if(h>>>=4,d-=4,y=8+(15&h),0===a.wbits&&(a.wbits=y),y>15||y>a.wbits){t.msg="invalid window size",a.mode=me;break}a.dmax=1<<a.wbits,a.flags=0,t.adler=a.check=1,a.mode=512&h?16189:16191,h=0,d=0;break;case 16181:for(;d<16;){if(0===o)break t;o--,h+=i[s++]<<d,d+=8}if(a.flags=h,(255&a.flags)!==we){t.msg="unknown compression method",a.mode=me;break}if(57344&a.flags){t.msg="unknown header flags set",a.mode=me;break}a.head&&(a.head.text=h>>8&1),512&a.flags&&4&a.wrap&&(A[0]=255&h,A[1]=h>>>8&255,a.check=L(a.check,A,2,0)),h=0,d=0,a.mode=16182;case 16182:for(;d<32;){if(0===o)break t;o--,h+=i[s++]<<d,d+=8}a.head&&(a.head.time=h),512&a.flags&&4&a.wrap&&(A[0]=255&h,A[1]=h>>>8&255,A[2]=h>>>16&255,A[3]=h>>>24&255,a.check=L(a.check,A,4,0)),h=0,d=0,a.mode=16183;case 16183:for(;d<16;){if(0===o)break t;o--,h+=i[s++]<<d,d+=8}a.head&&(a.head.xflags=255&h,a.head.os=h>>8),512&a.flags&&4&a.wrap&&(A[0]=255&h,A[1]=h>>>8&255,a.check=L(a.check,A,2,0)),h=0,d=0,a.mode=16184;case 16184:if(1024&a.flags){for(;d<16;){if(0===o)break t;o--,h+=i[s++]<<d,d+=8}a.length=h,a.head&&(a.head.extra_len=h),512&a.flags&&4&a.wrap&&(A[0]=255&h,A[1]=h>>>8&255,a.check=L(a.check,A,2,0)),h=0,d=0}else a.head&&(a.head.extra=null);a.mode=16185;case 16185:if(1024&a.flags&&(c=a.length,c>o&&(c=o),c&&(a.head&&(y=a.head.extra_len-a.length,a.head.extra||(a.head.extra=new Uint8Array(a.head.extra_len)),a.head.extra.set(i.subarray(s,s+c),y)),512&a.flags&&4&a.wrap&&(a.check=L(a.check,i,c,s)),o-=c,s+=c,a.length-=c),a.length))break t;a.length=0,a.mode=16186;case 16186:if(2048&a.flags){if(0===o)break t;c=0;do{y=i[s+c++],a.head&&y&&a.length<65536&&(a.head.name+=String.fromCharCode(y))}while(y&&c<o);if(512&a.flags&&4&a.wrap&&(a.check=L(a.check,i,c,s)),o-=c,s+=c,y)break t}else a.head&&(a.head.name=null);a.length=0,a.mode=16187;case 16187:if(4096&a.flags){if(0===o)break t;c=0;do{y=i[s+c++],a.head&&y&&a.length<65536&&(a.head.comment+=String.fromCharCode(y))}while(y&&c<o);if(512&a.flags&&4&a.wrap&&(a.check=L(a.check,i,c,s)),o-=c,s+=c,y)break t}else a.head&&(a.head.comment=null);a.mode=16188;case 16188:if(512&a.flags){for(;d<16;){if(0===o)break t;o--,h+=i[s++]<<d,d+=8}if(4&a.wrap&&h!==(65535&a.check)){t.msg="header crc mismatch",a.mode=me;break}h=0,d=0}a.head&&(a.head.hcrc=a.flags>>9&1,a.head.done=!0),t.adler=a.check=0,a.mode=16191;break;case 16189:for(;d<32;){if(0===o)break t;o--,h+=i[s++]<<d,d+=8}t.adler=a.check=be(h),h=0,d=0,a.mode=16190;case 16190:if(0===a.havedict)return t.next_out=r,t.avail_out=l,t.next_in=s,t.avail_in=o,a.hold=h,a.bits=d,de;t.adler=a.check=1,a.mode=16191;case 16191:if(e===re||e===oe)break t;case 16192:if(a.last){h>>>=7&d,d-=7&d,a.mode=16206;break}for(;d<3;){if(0===o)break t;o--,h+=i[s++]<<d,d+=8}switch(a.last=1&h,h>>>=1,d-=1,3&h){case 0:a.mode=16193;break;case 1:if(Re(a),a.mode=16199,e===oe){h>>>=2,d-=2;break t}break;case 2:a.mode=16196;break;case 3:t.msg="invalid block type",a.mode=me}h>>>=2,d-=2;break;case 16193:for(h>>>=7&d,d-=7&d;d<32;){if(0===o)break t;o--,h+=i[s++]<<d,d+=8}if((65535&h)!=(h>>>16^65535)){t.msg="invalid stored block lengths",a.mode=me;break}if(a.length=65535&h,h=0,d=0,a.mode=16194,e===oe)break t;case 16194:a.mode=16195;case 16195:if(c=a.length,c){if(c>o&&(c=o),c>l&&(c=l),0===c)break t;n.set(i.subarray(s,s+c),r),o-=c,s+=c,l-=c,r+=c,a.length-=c;break}a.mode=16191;break;case 16196:for(;d<14;){if(0===o)break t;o--,h+=i[s++]<<d,d+=8}if(a.nlen=257+(31&h),h>>>=5,d-=5,a.ndist=1+(31&h),h>>>=5,d-=5,a.ncode=4+(15&h),h>>>=4,d-=4,a.nlen>286||a.ndist>30){t.msg="too many length or distance symbols",a.mode=me;break}a.have=0,a.mode=16197;case 16197:for(;a.have<a.ncode;){for(;d<3;){if(0===o)break t;o--,h+=i[s++]<<d,d+=8}a.lens[Z[a.have++]]=7&h,h>>>=3,d-=3}for(;a.have<19;)a.lens[Z[a.have++]]=0;if(a.lencode=a.lendyn,a.lenbits=7,E={bits:a.lenbits},x=ne(0,a.lens,0,19,a.lencode,0,a.work,E),a.lenbits=E.bits,x){t.msg="invalid code lengths set",a.mode=me;break}a.have=0,a.mode=16198;case 16198:for(;a.have<a.nlen+a.ndist;){for(;z=a.lencode[h&(1<<a.lenbits)-1],m=z>>>24,b=z>>>16&255,g=65535&z,!(m<=d);){if(0===o)break t;o--,h+=i[s++]<<d,d+=8}if(g<16)h>>>=m,d-=m,a.lens[a.have++]=g;else{if(16===g){for(R=m+2;d<R;){if(0===o)break t;o--,h+=i[s++]<<d,d+=8}if(h>>>=m,d-=m,0===a.have){t.msg="invalid bit length repeat",a.mode=me;break}y=a.lens[a.have-1],c=3+(3&h),h>>>=2,d-=2}else if(17===g){for(R=m+3;d<R;){if(0===o)break t;o--,h+=i[s++]<<d,d+=8}h>>>=m,d-=m,y=0,c=3+(7&h),h>>>=3,d-=3}else{for(R=m+7;d<R;){if(0===o)break t;o--,h+=i[s++]<<d,d+=8}h>>>=m,d-=m,y=0,c=11+(127&h),h>>>=7,d-=7}if(a.have+c>a.nlen+a.ndist){t.msg="invalid bit length repeat",a.mode=me;break}for(;c--;)a.lens[a.have++]=y}}if(a.mode===me)break;if(0===a.lens[256]){t.msg="invalid code -- missing end-of-block",a.mode=me;break}if(a.lenbits=9,E={bits:a.lenbits},x=ne(1,a.lens,0,a.nlen,a.lencode,0,a.work,E),a.lenbits=E.bits,x){t.msg="invalid literal/lengths set",a.mode=me;break}if(a.distbits=6,a.distcode=a.distdyn,E={bits:a.distbits},x=ne(2,a.lens,a.nlen,a.ndist,a.distcode,0,a.work,E),a.distbits=E.bits,x){t.msg="invalid distances set",a.mode=me;break}if(a.mode=16199,e===oe)break t;case 16199:a.mode=16200;case 16200:if(o>=6&&l>=258){t.next_out=r,t.avail_out=l,t.next_in=s,t.avail_in=o,a.hold=h,a.bits=d,$t(t,f),r=t.next_out,n=t.output,l=t.avail_out,s=t.next_in,i=t.input,o=t.avail_in,h=a.hold,d=a.bits,16191===a.mode&&(a.back=-1);break}for(a.back=0;z=a.lencode[h&(1<<a.lenbits)-1],m=z>>>24,b=z>>>16&255,g=65535&z,!(m<=d);){if(0===o)break t;o--,h+=i[s++]<<d,d+=8}if(b&&0==(240&b)){for(p=m,k=b,v=g;z=a.lencode[v+((h&(1<<p+k)-1)>>p)],m=z>>>24,b=z>>>16&255,g=65535&z,!(p+m<=d);){if(0===o)break t;o--,h+=i[s++]<<d,d+=8}h>>>=p,d-=p,a.back+=p}if(h>>>=m,d-=m,a.back+=m,a.length=g,0===b){a.mode=16205;break}if(32&b){a.back=-1,a.mode=16191;break}if(64&b){t.msg="invalid literal/length code",a.mode=me;break}a.extra=15&b,a.mode=16201;case 16201:if(a.extra){for(R=a.extra;d<R;){if(0===o)break t;o--,h+=i[s++]<<d,d+=8}a.length+=h&(1<<a.extra)-1,h>>>=a.extra,d-=a.extra,a.back+=a.extra}a.was=a.length,a.mode=16202;case 16202:for(;z=a.distcode[h&(1<<a.distbits)-1],m=z>>>24,b=z>>>16&255,g=65535&z,!(m<=d);){if(0===o)break t;o--,h+=i[s++]<<d,d+=8}if(0==(240&b)){for(p=m,k=b,v=g;z=a.distcode[v+((h&(1<<p+k)-1)>>p)],m=z>>>24,b=z>>>16&255,g=65535&z,!(p+m<=d);){if(0===o)break t;o--,h+=i[s++]<<d,d+=8}h>>>=p,d-=p,a.back+=p}if(h>>>=m,d-=m,a.back+=m,64&b){t.msg="invalid distance code",a.mode=me;break}a.offset=g,a.extra=15&b,a.mode=16203;case 16203:if(a.extra){for(R=a.extra;d<R;){if(0===o)break t;o--,h+=i[s++]<<d,d+=8}a.offset+=h&(1<<a.extra)-1,h>>>=a.extra,d-=a.extra,a.back+=a.extra}if(a.offset>a.dmax){t.msg="invalid distance too far back",a.mode=me;break}a.mode=16204;case 16204:if(0===l)break t;if(c=f-l,a.offset>c){if(c=a.offset-c,c>a.whave&&a.sane){t.msg="invalid distance too far back",a.mode=me;break}c>a.wnext?(c-=a.wnext,u=a.wsize-c):u=a.wnext-c,c>a.length&&(c=a.length),w=a.window}else w=n,u=r-a.offset,c=a.length;c>l&&(c=l),l-=c,a.length-=c;do{n[r++]=w[u++]}while(--c);0===a.length&&(a.mode=16200);break;case 16205:if(0===l)break t;n[r++]=a.length,l--,a.mode=16200;break;case 16206:if(a.wrap){for(;d<32;){if(0===o)break t;o--,h|=i[s++]<<d,d+=8}if(f-=l,t.total_out+=f,a.total+=f,4&a.wrap&&f&&(t.adler=a.check=a.flags?L(a.check,n,f,r-f):N(a.check,n,f,r-f)),f=l,4&a.wrap&&(a.flags?h:be(h))!==a.check){t.msg="incorrect data check",a.mode=me;break}h=0,d=0}a.mode=16207;case 16207:if(a.wrap&&a.flags){for(;d<32;){if(0===o)break t;o--,h+=i[s++]<<d,d+=8}if(4&a.wrap&&h!==(4294967295&a.total)){t.msg="incorrect length check",a.mode=me;break}h=0,d=0}a.mode=16208;case 16208:x=he;break t;case me:x=fe;break t;case 16210:return ce;default:return _e}return t.next_out=r,t.avail_out=l,t.next_in=s,t.avail_in=o,a.hold=h,a.bits=d,(a.wsize||f!==t.avail_out&&a.mode<me&&(a.mode<16206||e!==se))&&Ze(t,t.output,t.next_out,f-t.avail_out),_-=t.avail_in,f-=t.avail_out,t.total_in+=_,t.total_out+=f,a.total+=f,4&a.wrap&&f&&(t.adler=a.check=a.flags?L(a.check,n,f,t.next_out-f):N(a.check,n,f,t.next_out-f)),t.data_type=a.bits+(a.last?64:0)+(16191===a.mode?128:0)+(16199===a.mode||16194===a.mode?256:0),(0===_&&0===f||e===se)&&x===le&&(x=ue),x},inflateEnd:t=>{if(pe(t))return _e;let e=t.state;return e.window&&(e.window=null),t.state=null,le},inflateGetHeader:(t,e)=>{if(pe(t))return _e;const a=t.state;return 0==(2&a.wrap)?_e:(a.head=e,e.done=!1,le)},inflateSetDictionary:(t,e)=>{const a=e.length;let i,n,s;return pe(t)?_e:(i=t.state,0!==i.wrap&&16190!==i.mode?_e:16190===i.mode&&(n=1,n=N(n,e,a,0),n!==i.check)?fe:(s=Ze(t,e,a,a),s?(i.mode=16210,ce):(i.havedict=1,le)))},inflateInfo:"pako inflate (from Nodeca project)"};var Ue=function(){this.text=0,this.time=0,this.xflags=0,this.os=0,this.extra=null,this.extra_len=0,this.name="",this.comment="",this.hcrc=0,this.done=!1};const De=Object.prototype.toString,{Z_NO_FLUSH:Oe,Z_FINISH:Te,Z_OK:Ne,Z_STREAM_END:Fe,Z_NEED_DICT:Le,Z_STREAM_ERROR:Ie,Z_DATA_ERROR:Be,Z_MEM_ERROR:Ce}=B;function He(t){this.options=Ot({chunkSize:65536,windowBits:15,to:""},t||{});const e=this.options;e.raw&&e.windowBits>=0&&e.windowBits<16&&(e.windowBits=-e.windowBits,0===e.windowBits&&(e.windowBits=-15)),!(e.windowBits>=0&&e.windowBits<16)||t&&t.windowBits||(e.windowBits+=32),e.windowBits>15&&e.windowBits<48&&0==(15&e.windowBits)&&(e.windowBits|=15),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new Ct,this.strm.avail_out=0;let a=Se.inflateInit2(this.strm,e.windowBits);if(a!==Ne)throw new Error(I[a]);if(this.header=new Ue,Se.inflateGetHeader(this.strm,this.header),e.dictionary&&("string"==typeof e.dictionary?e.dictionary=Lt(e.dictionary):"[object ArrayBuffer]"===De.call(e.dictionary)&&(e.dictionary=new Uint8Array(e.dictionary)),e.raw&&(a=Se.inflateSetDictionary(this.strm,e.dictionary),a!==Ne)))throw new Error(I[a])}He.prototype.push=function(t,e){const a=this.strm,i=this.options.chunkSize,n=this.options.dictionary;let s,r,o;if(this.ended)return!1;for(r=e===~~e?e:!0===e?Te:Oe,"[object ArrayBuffer]"===De.call(t)?a.input=new Uint8Array(t):a.input=t,a.next_in=0,a.avail_in=a.input.length;;){for(0===a.avail_out&&(a.output=new Uint8Array(i),a.next_out=0,a.avail_out=i),s=Se.inflate(a,r),s===Le&&n&&(s=Se.inflateSetDictionary(a,n),s===Ne?s=Se.inflate(a,r):s===Be&&(s=Le));a.avail_in>0&&s===Fe&&a.state.wrap>0&&0!==t[a.next_in];)Se.inflateReset(a),s=Se.inflate(a,r);switch(s){case Ie:case Be:case Le:case Ce:return this.onEnd(s),this.ended=!0,!1}if(o=a.avail_out,a.next_out&&(0===a.avail_out||s===Fe))if("string"===this.options.to){let t=Bt(a.output,a.next_out),e=a.next_out-t,n=It(a.output,t);a.next_out=e,a.avail_out=i-e,e&&a.output.set(a.output.subarray(t,t+e),0),this.onData(n)}else this.onData(a.output.length===a.next_out?a.output:a.output.subarray(0,a.next_out));if(s!==Ne||0!==o){if(s===Fe)return s=Se.inflateEnd(this.strm),this.onEnd(s),this.ended=!0,!0;if(0===a.avail_in)break}}return!0},He.prototype.onData=function(t){this.chunks.push(t)},He.prototype.onEnd=function(t){t===Ne&&("string"===this.options.to?this.result=this.chunks.join(""):this.result=Tt(this.chunks)),this.chunks=[],this.err=t,this.msg=this.strm.msg};const{Deflate:Me,deflate:je,deflateRaw:Ke,gzip:Pe}=Vt;var Ye=Me,Ge=B;const Xe=new class{constructor(){this.added=0,this.init()}init(){this.added=0,this.deflate=new Ye,this.deflate.push("[",Ge.Z_NO_FLUSH)}addEvent(t){if(!t)throw new Error("Adding invalid event");const e=this.added>0?",":"";this.deflate.push(e+JSON.stringify(t),Ge.Z_SYNC_FLUSH),this.added++}finish(){if(this.deflate.push("]",Ge.Z_FINISH),this.deflate.err)throw this.deflate.err;const t=this.deflate.result;return this.init(),t}},Je={init:()=>(Xe.init(),""),addEvent:t=>Xe.addEvent(t),finish:()=>Xe.finish()};addEventListener("message",(function(t){const e=t.data.method,a=t.data.id,[i]=t.data.args?JSON.parse(t.data.args):[];if(e in Je&&"function"==typeof Je[e])try{const t=Je[e](i);postMessage({id:a,method:e,success:!0,response:t})}catch(t){postMessage({id:a,method:e,success:!1,response:t.message}),console.error(t)}}));`;
30071
+ function t(t){let e=t.length;for(;--e>=0;)t[e]=0}const e=new Uint8Array([0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0]),a=new Uint8Array([0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13]),i=new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7]),n=new Uint8Array([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),s=new Array(576);t(s);const r=new Array(60);t(r);const o=new Array(512);t(o);const l=new Array(256);t(l);const h=new Array(29);t(h);const d=new Array(30);function _(t,e,a,i,n){this.static_tree=t,this.extra_bits=e,this.extra_base=a,this.elems=i,this.max_length=n,this.has_stree=t&&t.length}let f,c,u;function w(t,e){this.dyn_tree=t,this.max_code=0,this.stat_desc=e}t(d);const m=t=>t<256?o[t]:o[256+(t>>>7)],b=(t,e)=>{t.pending_buf[t.pending++]=255&e,t.pending_buf[t.pending++]=e>>>8&255},g=(t,e,a)=>{t.bi_valid>16-a?(t.bi_buf|=e<<t.bi_valid&65535,b(t,t.bi_buf),t.bi_buf=e>>16-t.bi_valid,t.bi_valid+=a-16):(t.bi_buf|=e<<t.bi_valid&65535,t.bi_valid+=a)},p=(t,e,a)=>{g(t,a[2*e],a[2*e+1])},k=(t,e)=>{let a=0;do{a|=1&t,t>>>=1,a<<=1}while(--e>0);return a>>>1},v=(t,e,a)=>{const i=new Array(16);let n,s,r=0;for(n=1;n<=15;n++)r=r+a[n-1]<<1,i[n]=r;for(s=0;s<=e;s++){let e=t[2*s+1];0!==e&&(t[2*s]=k(i[e]++,e))}},y=t=>{let e;for(e=0;e<286;e++)t.dyn_ltree[2*e]=0;for(e=0;e<30;e++)t.dyn_dtree[2*e]=0;for(e=0;e<19;e++)t.bl_tree[2*e]=0;t.dyn_ltree[512]=1,t.opt_len=t.static_len=0,t.sym_next=t.matches=0},x=t=>{t.bi_valid>8?b(t,t.bi_buf):t.bi_valid>0&&(t.pending_buf[t.pending++]=t.bi_buf),t.bi_buf=0,t.bi_valid=0},z=(t,e,a,i)=>{const n=2*e,s=2*a;return t[n]<t[s]||t[n]===t[s]&&i[e]<=i[a]},A=(t,e,a)=>{const i=t.heap[a];let n=a<<1;for(;n<=t.heap_len&&(n<t.heap_len&&z(e,t.heap[n+1],t.heap[n],t.depth)&&n++,!z(e,i,t.heap[n],t.depth));)t.heap[a]=t.heap[n],a=n,n<<=1;t.heap[a]=i},E=(t,i,n)=>{let s,r,o,_,f=0;if(0!==t.sym_next)do{s=255&t.pending_buf[t.sym_buf+f++],s+=(255&t.pending_buf[t.sym_buf+f++])<<8,r=t.pending_buf[t.sym_buf+f++],0===s?p(t,r,i):(o=l[r],p(t,o+256+1,i),_=e[o],0!==_&&(r-=h[o],g(t,r,_)),s--,o=m(s),p(t,o,n),_=a[o],0!==_&&(s-=d[o],g(t,s,_)))}while(f<t.sym_next);p(t,256,i)},R=(t,e)=>{const a=e.dyn_tree,i=e.stat_desc.static_tree,n=e.stat_desc.has_stree,s=e.stat_desc.elems;let r,o,l,h=-1;for(t.heap_len=0,t.heap_max=573,r=0;r<s;r++)0!==a[2*r]?(t.heap[++t.heap_len]=h=r,t.depth[r]=0):a[2*r+1]=0;for(;t.heap_len<2;)l=t.heap[++t.heap_len]=h<2?++h:0,a[2*l]=1,t.depth[l]=0,t.opt_len--,n&&(t.static_len-=i[2*l+1]);for(e.max_code=h,r=t.heap_len>>1;r>=1;r--)A(t,a,r);l=s;do{r=t.heap[1],t.heap[1]=t.heap[t.heap_len--],A(t,a,1),o=t.heap[1],t.heap[--t.heap_max]=r,t.heap[--t.heap_max]=o,a[2*l]=a[2*r]+a[2*o],t.depth[l]=(t.depth[r]>=t.depth[o]?t.depth[r]:t.depth[o])+1,a[2*r+1]=a[2*o+1]=l,t.heap[1]=l++,A(t,a,1)}while(t.heap_len>=2);t.heap[--t.heap_max]=t.heap[1],((t,e)=>{const a=e.dyn_tree,i=e.max_code,n=e.stat_desc.static_tree,s=e.stat_desc.has_stree,r=e.stat_desc.extra_bits,o=e.stat_desc.extra_base,l=e.stat_desc.max_length;let h,d,_,f,c,u,w=0;for(f=0;f<=15;f++)t.bl_count[f]=0;for(a[2*t.heap[t.heap_max]+1]=0,h=t.heap_max+1;h<573;h++)d=t.heap[h],f=a[2*a[2*d+1]+1]+1,f>l&&(f=l,w++),a[2*d+1]=f,d>i||(t.bl_count[f]++,c=0,d>=o&&(c=r[d-o]),u=a[2*d],t.opt_len+=u*(f+c),s&&(t.static_len+=u*(n[2*d+1]+c)));if(0!==w){do{for(f=l-1;0===t.bl_count[f];)f--;t.bl_count[f]--,t.bl_count[f+1]+=2,t.bl_count[l]--,w-=2}while(w>0);for(f=l;0!==f;f--)for(d=t.bl_count[f];0!==d;)_=t.heap[--h],_>i||(a[2*_+1]!==f&&(t.opt_len+=(f-a[2*_+1])*a[2*_],a[2*_+1]=f),d--)}})(t,e),v(a,h,t.bl_count)},Z=(t,e,a)=>{let i,n,s=-1,r=e[1],o=0,l=7,h=4;for(0===r&&(l=138,h=3),e[2*(a+1)+1]=65535,i=0;i<=a;i++)n=r,r=e[2*(i+1)+1],++o<l&&n===r||(o<h?t.bl_tree[2*n]+=o:0!==n?(n!==s&&t.bl_tree[2*n]++,t.bl_tree[32]++):o<=10?t.bl_tree[34]++:t.bl_tree[36]++,o=0,s=n,0===r?(l=138,h=3):n===r?(l=6,h=3):(l=7,h=4))},S=(t,e,a)=>{let i,n,s=-1,r=e[1],o=0,l=7,h=4;for(0===r&&(l=138,h=3),i=0;i<=a;i++)if(n=r,r=e[2*(i+1)+1],!(++o<l&&n===r)){if(o<h)do{p(t,n,t.bl_tree)}while(0!=--o);else 0!==n?(n!==s&&(p(t,n,t.bl_tree),o--),p(t,16,t.bl_tree),g(t,o-3,2)):o<=10?(p(t,17,t.bl_tree),g(t,o-3,3)):(p(t,18,t.bl_tree),g(t,o-11,7));o=0,s=n,0===r?(l=138,h=3):n===r?(l=6,h=3):(l=7,h=4)}};let U=!1;const D=(t,e,a,i)=>{g(t,0+(i?1:0),3),x(t),b(t,a),b(t,~a),a&&t.pending_buf.set(t.window.subarray(e,e+a),t.pending),t.pending+=a};var O=(t,e,a,i)=>{let o,l,h=0;t.level>0?(2===t.strm.data_type&&(t.strm.data_type=(t=>{let e,a=4093624447;for(e=0;e<=31;e++,a>>>=1)if(1&a&&0!==t.dyn_ltree[2*e])return 0;if(0!==t.dyn_ltree[18]||0!==t.dyn_ltree[20]||0!==t.dyn_ltree[26])return 1;for(e=32;e<256;e++)if(0!==t.dyn_ltree[2*e])return 1;return 0})(t)),R(t,t.l_desc),R(t,t.d_desc),h=(t=>{let e;for(Z(t,t.dyn_ltree,t.l_desc.max_code),Z(t,t.dyn_dtree,t.d_desc.max_code),R(t,t.bl_desc),e=18;e>=3&&0===t.bl_tree[2*n[e]+1];e--);return t.opt_len+=3*(e+1)+5+5+4,e})(t),o=t.opt_len+3+7>>>3,l=t.static_len+3+7>>>3,l<=o&&(o=l)):o=l=a+5,a+4<=o&&-1!==e?D(t,e,a,i):4===t.strategy||l===o?(g(t,2+(i?1:0),3),E(t,s,r)):(g(t,4+(i?1:0),3),((t,e,a,i)=>{let s;for(g(t,e-257,5),g(t,a-1,5),g(t,i-4,4),s=0;s<i;s++)g(t,t.bl_tree[2*n[s]+1],3);S(t,t.dyn_ltree,e-1),S(t,t.dyn_dtree,a-1)})(t,t.l_desc.max_code+1,t.d_desc.max_code+1,h+1),E(t,t.dyn_ltree,t.dyn_dtree)),y(t),i&&x(t)},T={_tr_init:t=>{U||((()=>{let t,n,w,m,b;const g=new Array(16);for(w=0,m=0;m<28;m++)for(h[m]=w,t=0;t<1<<e[m];t++)l[w++]=m;for(l[w-1]=m,b=0,m=0;m<16;m++)for(d[m]=b,t=0;t<1<<a[m];t++)o[b++]=m;for(b>>=7;m<30;m++)for(d[m]=b<<7,t=0;t<1<<a[m]-7;t++)o[256+b++]=m;for(n=0;n<=15;n++)g[n]=0;for(t=0;t<=143;)s[2*t+1]=8,t++,g[8]++;for(;t<=255;)s[2*t+1]=9,t++,g[9]++;for(;t<=279;)s[2*t+1]=7,t++,g[7]++;for(;t<=287;)s[2*t+1]=8,t++,g[8]++;for(v(s,287,g),t=0;t<30;t++)r[2*t+1]=5,r[2*t]=k(t,5);f=new _(s,e,257,286,15),c=new _(r,a,0,30,15),u=new _(new Array(0),i,0,19,7)})(),U=!0),t.l_desc=new w(t.dyn_ltree,f),t.d_desc=new w(t.dyn_dtree,c),t.bl_desc=new w(t.bl_tree,u),t.bi_buf=0,t.bi_valid=0,y(t)},_tr_stored_block:D,_tr_flush_block:O,_tr_tally:(t,e,a)=>(t.pending_buf[t.sym_buf+t.sym_next++]=e,t.pending_buf[t.sym_buf+t.sym_next++]=e>>8,t.pending_buf[t.sym_buf+t.sym_next++]=a,0===e?t.dyn_ltree[2*a]++:(t.matches++,e--,t.dyn_ltree[2*(l[a]+256+1)]++,t.dyn_dtree[2*m(e)]++),t.sym_next===t.sym_end),_tr_align:t=>{g(t,2,3),p(t,256,s),(t=>{16===t.bi_valid?(b(t,t.bi_buf),t.bi_buf=0,t.bi_valid=0):t.bi_valid>=8&&(t.pending_buf[t.pending++]=255&t.bi_buf,t.bi_buf>>=8,t.bi_valid-=8)})(t)}};var N=(t,e,a,i)=>{let n=65535&t|0,s=t>>>16&65535|0,r=0;for(;0!==a;){r=a>2e3?2e3:a,a-=r;do{n=n+e[i++]|0,s=s+n|0}while(--r);n%=65521,s%=65521}return n|s<<16|0};const F=new Uint32Array((()=>{let t,e=[];for(var a=0;a<256;a++){t=a;for(var i=0;i<8;i++)t=1&t?3988292384^t>>>1:t>>>1;e[a]=t}return e})());var L=(t,e,a,i)=>{const n=F,s=i+a;t^=-1;for(let a=i;a<s;a++)t=t>>>8^n[255&(t^e[a])];return-1^t},I={2:"need dictionary",1:"stream end",0:"","-1":"file error","-2":"stream error","-3":"data error","-4":"insufficient memory","-5":"buffer error","-6":"incompatible version"},B={Z_NO_FLUSH:0,Z_PARTIAL_FLUSH:1,Z_SYNC_FLUSH:2,Z_FULL_FLUSH:3,Z_FINISH:4,Z_BLOCK:5,Z_TREES:6,Z_OK:0,Z_STREAM_END:1,Z_NEED_DICT:2,Z_ERRNO:-1,Z_STREAM_ERROR:-2,Z_DATA_ERROR:-3,Z_MEM_ERROR:-4,Z_BUF_ERROR:-5,Z_NO_COMPRESSION:0,Z_BEST_SPEED:1,Z_BEST_COMPRESSION:9,Z_DEFAULT_COMPRESSION:-1,Z_FILTERED:1,Z_HUFFMAN_ONLY:2,Z_RLE:3,Z_FIXED:4,Z_DEFAULT_STRATEGY:0,Z_BINARY:0,Z_TEXT:1,Z_UNKNOWN:2,Z_DEFLATED:8};const{_tr_init:C,_tr_stored_block:H,_tr_flush_block:M,_tr_tally:j,_tr_align:K}=T,{Z_NO_FLUSH:P,Z_PARTIAL_FLUSH:Y,Z_FULL_FLUSH:G,Z_FINISH:X,Z_BLOCK:J,Z_OK:W,Z_STREAM_END:q,Z_STREAM_ERROR:Q,Z_DATA_ERROR:V,Z_BUF_ERROR:$,Z_DEFAULT_COMPRESSION:tt,Z_FILTERED:et,Z_HUFFMAN_ONLY:at,Z_RLE:it,Z_FIXED:nt,Z_DEFAULT_STRATEGY:st,Z_UNKNOWN:rt,Z_DEFLATED:ot}=B,lt=(t,e)=>(t.msg=I[e],e),ht=t=>2*t-(t>4?9:0),dt=t=>{let e=t.length;for(;--e>=0;)t[e]=0},_t=t=>{let e,a,i,n=t.w_size;e=t.hash_size,i=e;do{a=t.head[--i],t.head[i]=a>=n?a-n:0}while(--e);e=n,i=e;do{a=t.prev[--i],t.prev[i]=a>=n?a-n:0}while(--e)};let ft=(t,e,a)=>(e<<t.hash_shift^a)&t.hash_mask;const ct=t=>{const e=t.state;let a=e.pending;a>t.avail_out&&(a=t.avail_out),0!==a&&(t.output.set(e.pending_buf.subarray(e.pending_out,e.pending_out+a),t.next_out),t.next_out+=a,e.pending_out+=a,t.total_out+=a,t.avail_out-=a,e.pending-=a,0===e.pending&&(e.pending_out=0))},ut=(t,e)=>{M(t,t.block_start>=0?t.block_start:-1,t.strstart-t.block_start,e),t.block_start=t.strstart,ct(t.strm)},wt=(t,e)=>{t.pending_buf[t.pending++]=e},mt=(t,e)=>{t.pending_buf[t.pending++]=e>>>8&255,t.pending_buf[t.pending++]=255&e},bt=(t,e,a,i)=>{let n=t.avail_in;return n>i&&(n=i),0===n?0:(t.avail_in-=n,e.set(t.input.subarray(t.next_in,t.next_in+n),a),1===t.state.wrap?t.adler=N(t.adler,e,n,a):2===t.state.wrap&&(t.adler=L(t.adler,e,n,a)),t.next_in+=n,t.total_in+=n,n)},gt=(t,e)=>{let a,i,n=t.max_chain_length,s=t.strstart,r=t.prev_length,o=t.nice_match;const l=t.strstart>t.w_size-262?t.strstart-(t.w_size-262):0,h=t.window,d=t.w_mask,_=t.prev,f=t.strstart+258;let c=h[s+r-1],u=h[s+r];t.prev_length>=t.good_match&&(n>>=2),o>t.lookahead&&(o=t.lookahead);do{if(a=e,h[a+r]===u&&h[a+r-1]===c&&h[a]===h[s]&&h[++a]===h[s+1]){s+=2,a++;do{}while(h[++s]===h[++a]&&h[++s]===h[++a]&&h[++s]===h[++a]&&h[++s]===h[++a]&&h[++s]===h[++a]&&h[++s]===h[++a]&&h[++s]===h[++a]&&h[++s]===h[++a]&&s<f);if(i=258-(f-s),s=f-258,i>r){if(t.match_start=e,r=i,i>=o)break;c=h[s+r-1],u=h[s+r]}}}while((e=_[e&d])>l&&0!=--n);return r<=t.lookahead?r:t.lookahead},pt=t=>{const e=t.w_size;let a,i,n;do{if(i=t.window_size-t.lookahead-t.strstart,t.strstart>=e+(e-262)&&(t.window.set(t.window.subarray(e,e+e-i),0),t.match_start-=e,t.strstart-=e,t.block_start-=e,t.insert>t.strstart&&(t.insert=t.strstart),_t(t),i+=e),0===t.strm.avail_in)break;if(a=bt(t.strm,t.window,t.strstart+t.lookahead,i),t.lookahead+=a,t.lookahead+t.insert>=3)for(n=t.strstart-t.insert,t.ins_h=t.window[n],t.ins_h=ft(t,t.ins_h,t.window[n+1]);t.insert&&(t.ins_h=ft(t,t.ins_h,t.window[n+3-1]),t.prev[n&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=n,n++,t.insert--,!(t.lookahead+t.insert<3)););}while(t.lookahead<262&&0!==t.strm.avail_in)},kt=(t,e)=>{let a,i,n,s=t.pending_buf_size-5>t.w_size?t.w_size:t.pending_buf_size-5,r=0,o=t.strm.avail_in;do{if(a=65535,n=t.bi_valid+42>>3,t.strm.avail_out<n)break;if(n=t.strm.avail_out-n,i=t.strstart-t.block_start,a>i+t.strm.avail_in&&(a=i+t.strm.avail_in),a>n&&(a=n),a<s&&(0===a&&e!==X||e===P||a!==i+t.strm.avail_in))break;r=e===X&&a===i+t.strm.avail_in?1:0,H(t,0,0,r),t.pending_buf[t.pending-4]=a,t.pending_buf[t.pending-3]=a>>8,t.pending_buf[t.pending-2]=~a,t.pending_buf[t.pending-1]=~a>>8,ct(t.strm),i&&(i>a&&(i=a),t.strm.output.set(t.window.subarray(t.block_start,t.block_start+i),t.strm.next_out),t.strm.next_out+=i,t.strm.avail_out-=i,t.strm.total_out+=i,t.block_start+=i,a-=i),a&&(bt(t.strm,t.strm.output,t.strm.next_out,a),t.strm.next_out+=a,t.strm.avail_out-=a,t.strm.total_out+=a)}while(0===r);return o-=t.strm.avail_in,o&&(o>=t.w_size?(t.matches=2,t.window.set(t.strm.input.subarray(t.strm.next_in-t.w_size,t.strm.next_in),0),t.strstart=t.w_size,t.insert=t.strstart):(t.window_size-t.strstart<=o&&(t.strstart-=t.w_size,t.window.set(t.window.subarray(t.w_size,t.w_size+t.strstart),0),t.matches<2&&t.matches++,t.insert>t.strstart&&(t.insert=t.strstart)),t.window.set(t.strm.input.subarray(t.strm.next_in-o,t.strm.next_in),t.strstart),t.strstart+=o,t.insert+=o>t.w_size-t.insert?t.w_size-t.insert:o),t.block_start=t.strstart),t.high_water<t.strstart&&(t.high_water=t.strstart),r?4:e!==P&&e!==X&&0===t.strm.avail_in&&t.strstart===t.block_start?2:(n=t.window_size-t.strstart,t.strm.avail_in>n&&t.block_start>=t.w_size&&(t.block_start-=t.w_size,t.strstart-=t.w_size,t.window.set(t.window.subarray(t.w_size,t.w_size+t.strstart),0),t.matches<2&&t.matches++,n+=t.w_size,t.insert>t.strstart&&(t.insert=t.strstart)),n>t.strm.avail_in&&(n=t.strm.avail_in),n&&(bt(t.strm,t.window,t.strstart,n),t.strstart+=n,t.insert+=n>t.w_size-t.insert?t.w_size-t.insert:n),t.high_water<t.strstart&&(t.high_water=t.strstart),n=t.bi_valid+42>>3,n=t.pending_buf_size-n>65535?65535:t.pending_buf_size-n,s=n>t.w_size?t.w_size:n,i=t.strstart-t.block_start,(i>=s||(i||e===X)&&e!==P&&0===t.strm.avail_in&&i<=n)&&(a=i>n?n:i,r=e===X&&0===t.strm.avail_in&&a===i?1:0,H(t,t.block_start,a,r),t.block_start+=a,ct(t.strm)),r?3:1)},vt=(t,e)=>{let a,i;for(;;){if(t.lookahead<262){if(pt(t),t.lookahead<262&&e===P)return 1;if(0===t.lookahead)break}if(a=0,t.lookahead>=3&&(t.ins_h=ft(t,t.ins_h,t.window[t.strstart+3-1]),a=t.prev[t.strstart&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=t.strstart),0!==a&&t.strstart-a<=t.w_size-262&&(t.match_length=gt(t,a)),t.match_length>=3)if(i=j(t,t.strstart-t.match_start,t.match_length-3),t.lookahead-=t.match_length,t.match_length<=t.max_lazy_match&&t.lookahead>=3){t.match_length--;do{t.strstart++,t.ins_h=ft(t,t.ins_h,t.window[t.strstart+3-1]),a=t.prev[t.strstart&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=t.strstart}while(0!=--t.match_length);t.strstart++}else t.strstart+=t.match_length,t.match_length=0,t.ins_h=t.window[t.strstart],t.ins_h=ft(t,t.ins_h,t.window[t.strstart+1]);else i=j(t,0,t.window[t.strstart]),t.lookahead--,t.strstart++;if(i&&(ut(t,!1),0===t.strm.avail_out))return 1}return t.insert=t.strstart<2?t.strstart:2,e===X?(ut(t,!0),0===t.strm.avail_out?3:4):t.sym_next&&(ut(t,!1),0===t.strm.avail_out)?1:2},yt=(t,e)=>{let a,i,n;for(;;){if(t.lookahead<262){if(pt(t),t.lookahead<262&&e===P)return 1;if(0===t.lookahead)break}if(a=0,t.lookahead>=3&&(t.ins_h=ft(t,t.ins_h,t.window[t.strstart+3-1]),a=t.prev[t.strstart&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=t.strstart),t.prev_length=t.match_length,t.prev_match=t.match_start,t.match_length=2,0!==a&&t.prev_length<t.max_lazy_match&&t.strstart-a<=t.w_size-262&&(t.match_length=gt(t,a),t.match_length<=5&&(t.strategy===et||3===t.match_length&&t.strstart-t.match_start>4096)&&(t.match_length=2)),t.prev_length>=3&&t.match_length<=t.prev_length){n=t.strstart+t.lookahead-3,i=j(t,t.strstart-1-t.prev_match,t.prev_length-3),t.lookahead-=t.prev_length-1,t.prev_length-=2;do{++t.strstart<=n&&(t.ins_h=ft(t,t.ins_h,t.window[t.strstart+3-1]),a=t.prev[t.strstart&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=t.strstart)}while(0!=--t.prev_length);if(t.match_available=0,t.match_length=2,t.strstart++,i&&(ut(t,!1),0===t.strm.avail_out))return 1}else if(t.match_available){if(i=j(t,0,t.window[t.strstart-1]),i&&ut(t,!1),t.strstart++,t.lookahead--,0===t.strm.avail_out)return 1}else t.match_available=1,t.strstart++,t.lookahead--}return t.match_available&&(i=j(t,0,t.window[t.strstart-1]),t.match_available=0),t.insert=t.strstart<2?t.strstart:2,e===X?(ut(t,!0),0===t.strm.avail_out?3:4):t.sym_next&&(ut(t,!1),0===t.strm.avail_out)?1:2};function xt(t,e,a,i,n){this.good_length=t,this.max_lazy=e,this.nice_length=a,this.max_chain=i,this.func=n}const zt=[new xt(0,0,0,0,kt),new xt(4,4,8,4,vt),new xt(4,5,16,8,vt),new xt(4,6,32,32,vt),new xt(4,4,16,16,yt),new xt(8,16,32,32,yt),new xt(8,16,128,128,yt),new xt(8,32,128,256,yt),new xt(32,128,258,1024,yt),new xt(32,258,258,4096,yt)];function At(){this.strm=null,this.status=0,this.pending_buf=null,this.pending_buf_size=0,this.pending_out=0,this.pending=0,this.wrap=0,this.gzhead=null,this.gzindex=0,this.method=ot,this.last_flush=-1,this.w_size=0,this.w_bits=0,this.w_mask=0,this.window=null,this.window_size=0,this.prev=null,this.head=null,this.ins_h=0,this.hash_size=0,this.hash_bits=0,this.hash_mask=0,this.hash_shift=0,this.block_start=0,this.match_length=0,this.prev_match=0,this.match_available=0,this.strstart=0,this.match_start=0,this.lookahead=0,this.prev_length=0,this.max_chain_length=0,this.max_lazy_match=0,this.level=0,this.strategy=0,this.good_match=0,this.nice_match=0,this.dyn_ltree=new Uint16Array(1146),this.dyn_dtree=new Uint16Array(122),this.bl_tree=new Uint16Array(78),dt(this.dyn_ltree),dt(this.dyn_dtree),dt(this.bl_tree),this.l_desc=null,this.d_desc=null,this.bl_desc=null,this.bl_count=new Uint16Array(16),this.heap=new Uint16Array(573),dt(this.heap),this.heap_len=0,this.heap_max=0,this.depth=new Uint16Array(573),dt(this.depth),this.sym_buf=0,this.lit_bufsize=0,this.sym_next=0,this.sym_end=0,this.opt_len=0,this.static_len=0,this.matches=0,this.insert=0,this.bi_buf=0,this.bi_valid=0}const Et=t=>{if(!t)return 1;const e=t.state;return!e||e.strm!==t||42!==e.status&&57!==e.status&&69!==e.status&&73!==e.status&&91!==e.status&&103!==e.status&&113!==e.status&&666!==e.status?1:0},Rt=t=>{if(Et(t))return lt(t,Q);t.total_in=t.total_out=0,t.data_type=rt;const e=t.state;return e.pending=0,e.pending_out=0,e.wrap<0&&(e.wrap=-e.wrap),e.status=2===e.wrap?57:e.wrap?42:113,t.adler=2===e.wrap?0:1,e.last_flush=-2,C(e),W},Zt=t=>{const e=Rt(t);var a;return e===W&&((a=t.state).window_size=2*a.w_size,dt(a.head),a.max_lazy_match=zt[a.level].max_lazy,a.good_match=zt[a.level].good_length,a.nice_match=zt[a.level].nice_length,a.max_chain_length=zt[a.level].max_chain,a.strstart=0,a.block_start=0,a.lookahead=0,a.insert=0,a.match_length=a.prev_length=2,a.match_available=0,a.ins_h=0),e},St=(t,e,a,i,n,s)=>{if(!t)return Q;let r=1;if(e===tt&&(e=6),i<0?(r=0,i=-i):i>15&&(r=2,i-=16),n<1||n>9||a!==ot||i<8||i>15||e<0||e>9||s<0||s>nt||8===i&&1!==r)return lt(t,Q);8===i&&(i=9);const o=new At;return t.state=o,o.strm=t,o.status=42,o.wrap=r,o.gzhead=null,o.w_bits=i,o.w_size=1<<o.w_bits,o.w_mask=o.w_size-1,o.hash_bits=n+7,o.hash_size=1<<o.hash_bits,o.hash_mask=o.hash_size-1,o.hash_shift=~~((o.hash_bits+3-1)/3),o.window=new Uint8Array(2*o.w_size),o.head=new Uint16Array(o.hash_size),o.prev=new Uint16Array(o.w_size),o.lit_bufsize=1<<n+6,o.pending_buf_size=4*o.lit_bufsize,o.pending_buf=new Uint8Array(o.pending_buf_size),o.sym_buf=o.lit_bufsize,o.sym_end=3*(o.lit_bufsize-1),o.level=e,o.strategy=s,o.method=a,Zt(t)};var Ut={deflateInit:(t,e)=>St(t,e,ot,15,8,st),deflateInit2:St,deflateReset:Zt,deflateResetKeep:Rt,deflateSetHeader:(t,e)=>Et(t)||2!==t.state.wrap?Q:(t.state.gzhead=e,W),deflate:(t,e)=>{if(Et(t)||e>J||e<0)return t?lt(t,Q):Q;const a=t.state;if(!t.output||0!==t.avail_in&&!t.input||666===a.status&&e!==X)return lt(t,0===t.avail_out?$:Q);const i=a.last_flush;if(a.last_flush=e,0!==a.pending){if(ct(t),0===t.avail_out)return a.last_flush=-1,W}else if(0===t.avail_in&&ht(e)<=ht(i)&&e!==X)return lt(t,$);if(666===a.status&&0!==t.avail_in)return lt(t,$);if(42===a.status&&0===a.wrap&&(a.status=113),42===a.status){let e=ot+(a.w_bits-8<<4)<<8,i=-1;if(i=a.strategy>=at||a.level<2?0:a.level<6?1:6===a.level?2:3,e|=i<<6,0!==a.strstart&&(e|=32),e+=31-e%31,mt(a,e),0!==a.strstart&&(mt(a,t.adler>>>16),mt(a,65535&t.adler)),t.adler=1,a.status=113,ct(t),0!==a.pending)return a.last_flush=-1,W}if(57===a.status)if(t.adler=0,wt(a,31),wt(a,139),wt(a,8),a.gzhead)wt(a,(a.gzhead.text?1:0)+(a.gzhead.hcrc?2:0)+(a.gzhead.extra?4:0)+(a.gzhead.name?8:0)+(a.gzhead.comment?16:0)),wt(a,255&a.gzhead.time),wt(a,a.gzhead.time>>8&255),wt(a,a.gzhead.time>>16&255),wt(a,a.gzhead.time>>24&255),wt(a,9===a.level?2:a.strategy>=at||a.level<2?4:0),wt(a,255&a.gzhead.os),a.gzhead.extra&&a.gzhead.extra.length&&(wt(a,255&a.gzhead.extra.length),wt(a,a.gzhead.extra.length>>8&255)),a.gzhead.hcrc&&(t.adler=L(t.adler,a.pending_buf,a.pending,0)),a.gzindex=0,a.status=69;else if(wt(a,0),wt(a,0),wt(a,0),wt(a,0),wt(a,0),wt(a,9===a.level?2:a.strategy>=at||a.level<2?4:0),wt(a,3),a.status=113,ct(t),0!==a.pending)return a.last_flush=-1,W;if(69===a.status){if(a.gzhead.extra){let e=a.pending,i=(65535&a.gzhead.extra.length)-a.gzindex;for(;a.pending+i>a.pending_buf_size;){let n=a.pending_buf_size-a.pending;if(a.pending_buf.set(a.gzhead.extra.subarray(a.gzindex,a.gzindex+n),a.pending),a.pending=a.pending_buf_size,a.gzhead.hcrc&&a.pending>e&&(t.adler=L(t.adler,a.pending_buf,a.pending-e,e)),a.gzindex+=n,ct(t),0!==a.pending)return a.last_flush=-1,W;e=0,i-=n}let n=new Uint8Array(a.gzhead.extra);a.pending_buf.set(n.subarray(a.gzindex,a.gzindex+i),a.pending),a.pending+=i,a.gzhead.hcrc&&a.pending>e&&(t.adler=L(t.adler,a.pending_buf,a.pending-e,e)),a.gzindex=0}a.status=73}if(73===a.status){if(a.gzhead.name){let e,i=a.pending;do{if(a.pending===a.pending_buf_size){if(a.gzhead.hcrc&&a.pending>i&&(t.adler=L(t.adler,a.pending_buf,a.pending-i,i)),ct(t),0!==a.pending)return a.last_flush=-1,W;i=0}e=a.gzindex<a.gzhead.name.length?255&a.gzhead.name.charCodeAt(a.gzindex++):0,wt(a,e)}while(0!==e);a.gzhead.hcrc&&a.pending>i&&(t.adler=L(t.adler,a.pending_buf,a.pending-i,i)),a.gzindex=0}a.status=91}if(91===a.status){if(a.gzhead.comment){let e,i=a.pending;do{if(a.pending===a.pending_buf_size){if(a.gzhead.hcrc&&a.pending>i&&(t.adler=L(t.adler,a.pending_buf,a.pending-i,i)),ct(t),0!==a.pending)return a.last_flush=-1,W;i=0}e=a.gzindex<a.gzhead.comment.length?255&a.gzhead.comment.charCodeAt(a.gzindex++):0,wt(a,e)}while(0!==e);a.gzhead.hcrc&&a.pending>i&&(t.adler=L(t.adler,a.pending_buf,a.pending-i,i))}a.status=103}if(103===a.status){if(a.gzhead.hcrc){if(a.pending+2>a.pending_buf_size&&(ct(t),0!==a.pending))return a.last_flush=-1,W;wt(a,255&t.adler),wt(a,t.adler>>8&255),t.adler=0}if(a.status=113,ct(t),0!==a.pending)return a.last_flush=-1,W}if(0!==t.avail_in||0!==a.lookahead||e!==P&&666!==a.status){let i=0===a.level?kt(a,e):a.strategy===at?((t,e)=>{let a;for(;;){if(0===t.lookahead&&(pt(t),0===t.lookahead)){if(e===P)return 1;break}if(t.match_length=0,a=j(t,0,t.window[t.strstart]),t.lookahead--,t.strstart++,a&&(ut(t,!1),0===t.strm.avail_out))return 1}return t.insert=0,e===X?(ut(t,!0),0===t.strm.avail_out?3:4):t.sym_next&&(ut(t,!1),0===t.strm.avail_out)?1:2})(a,e):a.strategy===it?((t,e)=>{let a,i,n,s;const r=t.window;for(;;){if(t.lookahead<=258){if(pt(t),t.lookahead<=258&&e===P)return 1;if(0===t.lookahead)break}if(t.match_length=0,t.lookahead>=3&&t.strstart>0&&(n=t.strstart-1,i=r[n],i===r[++n]&&i===r[++n]&&i===r[++n])){s=t.strstart+258;do{}while(i===r[++n]&&i===r[++n]&&i===r[++n]&&i===r[++n]&&i===r[++n]&&i===r[++n]&&i===r[++n]&&i===r[++n]&&n<s);t.match_length=258-(s-n),t.match_length>t.lookahead&&(t.match_length=t.lookahead)}if(t.match_length>=3?(a=j(t,1,t.match_length-3),t.lookahead-=t.match_length,t.strstart+=t.match_length,t.match_length=0):(a=j(t,0,t.window[t.strstart]),t.lookahead--,t.strstart++),a&&(ut(t,!1),0===t.strm.avail_out))return 1}return t.insert=0,e===X?(ut(t,!0),0===t.strm.avail_out?3:4):t.sym_next&&(ut(t,!1),0===t.strm.avail_out)?1:2})(a,e):zt[a.level].func(a,e);if(3!==i&&4!==i||(a.status=666),1===i||3===i)return 0===t.avail_out&&(a.last_flush=-1),W;if(2===i&&(e===Y?K(a):e!==J&&(H(a,0,0,!1),e===G&&(dt(a.head),0===a.lookahead&&(a.strstart=0,a.block_start=0,a.insert=0))),ct(t),0===t.avail_out))return a.last_flush=-1,W}return e!==X?W:a.wrap<=0?q:(2===a.wrap?(wt(a,255&t.adler),wt(a,t.adler>>8&255),wt(a,t.adler>>16&255),wt(a,t.adler>>24&255),wt(a,255&t.total_in),wt(a,t.total_in>>8&255),wt(a,t.total_in>>16&255),wt(a,t.total_in>>24&255)):(mt(a,t.adler>>>16),mt(a,65535&t.adler)),ct(t),a.wrap>0&&(a.wrap=-a.wrap),0!==a.pending?W:q)},deflateEnd:t=>{if(Et(t))return Q;const e=t.state.status;return t.state=null,113===e?lt(t,V):W},deflateSetDictionary:(t,e)=>{let a=e.length;if(Et(t))return Q;const i=t.state,n=i.wrap;if(2===n||1===n&&42!==i.status||i.lookahead)return Q;if(1===n&&(t.adler=N(t.adler,e,a,0)),i.wrap=0,a>=i.w_size){0===n&&(dt(i.head),i.strstart=0,i.block_start=0,i.insert=0);let t=new Uint8Array(i.w_size);t.set(e.subarray(a-i.w_size,a),0),e=t,a=i.w_size}const s=t.avail_in,r=t.next_in,o=t.input;for(t.avail_in=a,t.next_in=0,t.input=e,pt(i);i.lookahead>=3;){let t=i.strstart,e=i.lookahead-2;do{i.ins_h=ft(i,i.ins_h,i.window[t+3-1]),i.prev[t&i.w_mask]=i.head[i.ins_h],i.head[i.ins_h]=t,t++}while(--e);i.strstart=t,i.lookahead=2,pt(i)}return i.strstart+=i.lookahead,i.block_start=i.strstart,i.insert=i.lookahead,i.lookahead=0,i.match_length=i.prev_length=2,i.match_available=0,t.next_in=r,t.input=o,t.avail_in=s,i.wrap=n,W},deflateInfo:"pako deflate (from Nodeca project)"};const Dt=(t,e)=>Object.prototype.hasOwnProperty.call(t,e);var Ot=function(t){const e=Array.prototype.slice.call(arguments,1);for(;e.length;){const a=e.shift();if(a){if("object"!=typeof a)throw new TypeError(a+"must be non-object");for(const e in a)Dt(a,e)&&(t[e]=a[e])}}return t},Tt=t=>{let e=0;for(let a=0,i=t.length;a<i;a++)e+=t[a].length;const a=new Uint8Array(e);for(let e=0,i=0,n=t.length;e<n;e++){let n=t[e];a.set(n,i),i+=n.length}return a};let Nt=!0;try{String.fromCharCode.apply(null,new Uint8Array(1))}catch(t){Nt=!1}const Ft=new Uint8Array(256);for(let t=0;t<256;t++)Ft[t]=t>=252?6:t>=248?5:t>=240?4:t>=224?3:t>=192?2:1;Ft[254]=Ft[254]=1;var Lt=t=>{if("function"==typeof TextEncoder&&TextEncoder.prototype.encode)return(new TextEncoder).encode(t);let e,a,i,n,s,r=t.length,o=0;for(n=0;n<r;n++)a=t.charCodeAt(n),55296==(64512&a)&&n+1<r&&(i=t.charCodeAt(n+1),56320==(64512&i)&&(a=65536+(a-55296<<10)+(i-56320),n++)),o+=a<128?1:a<2048?2:a<65536?3:4;for(e=new Uint8Array(o),s=0,n=0;s<o;n++)a=t.charCodeAt(n),55296==(64512&a)&&n+1<r&&(i=t.charCodeAt(n+1),56320==(64512&i)&&(a=65536+(a-55296<<10)+(i-56320),n++)),a<128?e[s++]=a:a<2048?(e[s++]=192|a>>>6,e[s++]=128|63&a):a<65536?(e[s++]=224|a>>>12,e[s++]=128|a>>>6&63,e[s++]=128|63&a):(e[s++]=240|a>>>18,e[s++]=128|a>>>12&63,e[s++]=128|a>>>6&63,e[s++]=128|63&a);return e},It=(t,e)=>{const a=e||t.length;if("function"==typeof TextDecoder&&TextDecoder.prototype.decode)return(new TextDecoder).decode(t.subarray(0,e));let i,n;const s=new Array(2*a);for(n=0,i=0;i<a;){let e=t[i++];if(e<128){s[n++]=e;continue}let r=Ft[e];if(r>4)s[n++]=65533,i+=r-1;else{for(e&=2===r?31:3===r?15:7;r>1&&i<a;)e=e<<6|63&t[i++],r--;r>1?s[n++]=65533:e<65536?s[n++]=e:(e-=65536,s[n++]=55296|e>>10&1023,s[n++]=56320|1023&e)}}return((t,e)=>{if(e<65534&&t.subarray&&Nt)return String.fromCharCode.apply(null,t.length===e?t:t.subarray(0,e));let a="";for(let i=0;i<e;i++)a+=String.fromCharCode(t[i]);return a})(s,n)},Bt=(t,e)=>{(e=e||t.length)>t.length&&(e=t.length);let a=e-1;for(;a>=0&&128==(192&t[a]);)a--;return a<0||0===a?e:a+Ft[t[a]]>e?a:e};var Ct=function(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg="",this.state=null,this.data_type=2,this.adler=0};const Ht=Object.prototype.toString,{Z_NO_FLUSH:Mt,Z_SYNC_FLUSH:jt,Z_FULL_FLUSH:Kt,Z_FINISH:Pt,Z_OK:Yt,Z_STREAM_END:Gt,Z_DEFAULT_COMPRESSION:Xt,Z_DEFAULT_STRATEGY:Jt,Z_DEFLATED:Wt}=B;function qt(t){this.options=Ot({level:Xt,method:Wt,chunkSize:16384,windowBits:15,memLevel:8,strategy:Jt},t||{});let e=this.options;e.raw&&e.windowBits>0?e.windowBits=-e.windowBits:e.gzip&&e.windowBits>0&&e.windowBits<16&&(e.windowBits+=16),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new Ct,this.strm.avail_out=0;let a=Ut.deflateInit2(this.strm,e.level,e.method,e.windowBits,e.memLevel,e.strategy);if(a!==Yt)throw new Error(I[a]);if(e.header&&Ut.deflateSetHeader(this.strm,e.header),e.dictionary){let t;if(t="string"==typeof e.dictionary?Lt(e.dictionary):"[object ArrayBuffer]"===Ht.call(e.dictionary)?new Uint8Array(e.dictionary):e.dictionary,a=Ut.deflateSetDictionary(this.strm,t),a!==Yt)throw new Error(I[a]);this._dict_set=!0}}function Qt(t,e){const a=new qt(e);if(a.push(t,!0),a.err)throw a.msg||I[a.err];return a.result}qt.prototype.push=function(t,e){const a=this.strm,i=this.options.chunkSize;let n,s;if(this.ended)return!1;for(s=e===~~e?e:!0===e?Pt:Mt,"string"==typeof t?a.input=Lt(t):"[object ArrayBuffer]"===Ht.call(t)?a.input=new Uint8Array(t):a.input=t,a.next_in=0,a.avail_in=a.input.length;;)if(0===a.avail_out&&(a.output=new Uint8Array(i),a.next_out=0,a.avail_out=i),(s===jt||s===Kt)&&a.avail_out<=6)this.onData(a.output.subarray(0,a.next_out)),a.avail_out=0;else{if(n=Ut.deflate(a,s),n===Gt)return a.next_out>0&&this.onData(a.output.subarray(0,a.next_out)),n=Ut.deflateEnd(this.strm),this.onEnd(n),this.ended=!0,n===Yt;if(0!==a.avail_out){if(s>0&&a.next_out>0)this.onData(a.output.subarray(0,a.next_out)),a.avail_out=0;else if(0===a.avail_in)break}else this.onData(a.output)}return!0},qt.prototype.onData=function(t){this.chunks.push(t)},qt.prototype.onEnd=function(t){t===Yt&&(this.result=Tt(this.chunks)),this.chunks=[],this.err=t,this.msg=this.strm.msg};var Vt={Deflate:qt,deflate:Qt,deflateRaw:function(t,e){return(e=e||{}).raw=!0,Qt(t,e)},gzip:function(t,e){return(e=e||{}).gzip=!0,Qt(t,e)},constants:B};var $t=function(t,e){let a,i,n,s,r,o,l,h,d,_,f,c,u,w,m,b,g,p,k,v,y,x,z,A;const E=t.state;a=t.next_in,z=t.input,i=a+(t.avail_in-5),n=t.next_out,A=t.output,s=n-(e-t.avail_out),r=n+(t.avail_out-257),o=E.dmax,l=E.wsize,h=E.whave,d=E.wnext,_=E.window,f=E.hold,c=E.bits,u=E.lencode,w=E.distcode,m=(1<<E.lenbits)-1,b=(1<<E.distbits)-1;t:do{c<15&&(f+=z[a++]<<c,c+=8,f+=z[a++]<<c,c+=8),g=u[f&m];e:for(;;){if(p=g>>>24,f>>>=p,c-=p,p=g>>>16&255,0===p)A[n++]=65535&g;else{if(!(16&p)){if(0==(64&p)){g=u[(65535&g)+(f&(1<<p)-1)];continue e}if(32&p){E.mode=16191;break t}t.msg="invalid literal/length code",E.mode=16209;break t}k=65535&g,p&=15,p&&(c<p&&(f+=z[a++]<<c,c+=8),k+=f&(1<<p)-1,f>>>=p,c-=p),c<15&&(f+=z[a++]<<c,c+=8,f+=z[a++]<<c,c+=8),g=w[f&b];a:for(;;){if(p=g>>>24,f>>>=p,c-=p,p=g>>>16&255,!(16&p)){if(0==(64&p)){g=w[(65535&g)+(f&(1<<p)-1)];continue a}t.msg="invalid distance code",E.mode=16209;break t}if(v=65535&g,p&=15,c<p&&(f+=z[a++]<<c,c+=8,c<p&&(f+=z[a++]<<c,c+=8)),v+=f&(1<<p)-1,v>o){t.msg="invalid distance too far back",E.mode=16209;break t}if(f>>>=p,c-=p,p=n-s,v>p){if(p=v-p,p>h&&E.sane){t.msg="invalid distance too far back",E.mode=16209;break t}if(y=0,x=_,0===d){if(y+=l-p,p<k){k-=p;do{A[n++]=_[y++]}while(--p);y=n-v,x=A}}else if(d<p){if(y+=l+d-p,p-=d,p<k){k-=p;do{A[n++]=_[y++]}while(--p);if(y=0,d<k){p=d,k-=p;do{A[n++]=_[y++]}while(--p);y=n-v,x=A}}}else if(y+=d-p,p<k){k-=p;do{A[n++]=_[y++]}while(--p);y=n-v,x=A}for(;k>2;)A[n++]=x[y++],A[n++]=x[y++],A[n++]=x[y++],k-=3;k&&(A[n++]=x[y++],k>1&&(A[n++]=x[y++]))}else{y=n-v;do{A[n++]=A[y++],A[n++]=A[y++],A[n++]=A[y++],k-=3}while(k>2);k&&(A[n++]=A[y++],k>1&&(A[n++]=A[y++]))}break}}break}}while(a<i&&n<r);k=c>>3,a-=k,c-=k<<3,f&=(1<<c)-1,t.next_in=a,t.next_out=n,t.avail_in=a<i?i-a+5:5-(a-i),t.avail_out=n<r?r-n+257:257-(n-r),E.hold=f,E.bits=c};const te=new Uint16Array([3,4,5,6,7,8,9,10,11,13,15,17,19,23,27,31,35,43,51,59,67,83,99,115,131,163,195,227,258,0,0]),ee=new Uint8Array([16,16,16,16,16,16,16,16,17,17,17,17,18,18,18,18,19,19,19,19,20,20,20,20,21,21,21,21,16,72,78]),ae=new Uint16Array([1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193,257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577,0,0]),ie=new Uint8Array([16,16,16,16,17,17,18,18,19,19,20,20,21,21,22,22,23,23,24,24,25,25,26,26,27,27,28,28,29,29,64,64]);var ne=(t,e,a,i,n,s,r,o)=>{const l=o.bits;let h,d,_,f,c,u,w=0,m=0,b=0,g=0,p=0,k=0,v=0,y=0,x=0,z=0,A=null;const E=new Uint16Array(16),R=new Uint16Array(16);let Z,S,U,D=null;for(w=0;w<=15;w++)E[w]=0;for(m=0;m<i;m++)E[e[a+m]]++;for(p=l,g=15;g>=1&&0===E[g];g--);if(p>g&&(p=g),0===g)return n[s++]=20971520,n[s++]=20971520,o.bits=1,0;for(b=1;b<g&&0===E[b];b++);for(p<b&&(p=b),y=1,w=1;w<=15;w++)if(y<<=1,y-=E[w],y<0)return-1;if(y>0&&(0===t||1!==g))return-1;for(R[1]=0,w=1;w<15;w++)R[w+1]=R[w]+E[w];for(m=0;m<i;m++)0!==e[a+m]&&(r[R[e[a+m]]++]=m);if(0===t?(A=D=r,u=20):1===t?(A=te,D=ee,u=257):(A=ae,D=ie,u=0),z=0,m=0,w=b,c=s,k=p,v=0,_=-1,x=1<<p,f=x-1,1===t&&x>852||2===t&&x>592)return 1;for(;;){Z=w-v,r[m]+1<u?(S=0,U=r[m]):r[m]>=u?(S=D[r[m]-u],U=A[r[m]-u]):(S=96,U=0),h=1<<w-v,d=1<<k,b=d;do{d-=h,n[c+(z>>v)+d]=Z<<24|S<<16|U|0}while(0!==d);for(h=1<<w-1;z&h;)h>>=1;if(0!==h?(z&=h-1,z+=h):z=0,m++,0==--E[w]){if(w===g)break;w=e[a+r[m]]}if(w>p&&(z&f)!==_){for(0===v&&(v=p),c+=b,k=w-v,y=1<<k;k+v<g&&(y-=E[k+v],!(y<=0));)k++,y<<=1;if(x+=1<<k,1===t&&x>852||2===t&&x>592)return 1;_=z&f,n[_]=p<<24|k<<16|c-s|0}}return 0!==z&&(n[c+z]=w-v<<24|64<<16|0),o.bits=p,0};const{Z_FINISH:se,Z_BLOCK:re,Z_TREES:oe,Z_OK:le,Z_STREAM_END:he,Z_NEED_DICT:de,Z_STREAM_ERROR:_e,Z_DATA_ERROR:fe,Z_MEM_ERROR:ce,Z_BUF_ERROR:ue,Z_DEFLATED:we}=B,me=16209,be=t=>(t>>>24&255)+(t>>>8&65280)+((65280&t)<<8)+((255&t)<<24);function ge(){this.strm=null,this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new Uint16Array(320),this.work=new Uint16Array(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}const pe=t=>{if(!t)return 1;const e=t.state;return!e||e.strm!==t||e.mode<16180||e.mode>16211?1:0},ke=t=>{if(pe(t))return _e;const e=t.state;return t.total_in=t.total_out=e.total=0,t.msg="",e.wrap&&(t.adler=1&e.wrap),e.mode=16180,e.last=0,e.havedict=0,e.flags=-1,e.dmax=32768,e.head=null,e.hold=0,e.bits=0,e.lencode=e.lendyn=new Int32Array(852),e.distcode=e.distdyn=new Int32Array(592),e.sane=1,e.back=-1,le},ve=t=>{if(pe(t))return _e;const e=t.state;return e.wsize=0,e.whave=0,e.wnext=0,ke(t)},ye=(t,e)=>{let a;if(pe(t))return _e;const i=t.state;return e<0?(a=0,e=-e):(a=5+(e>>4),e<48&&(e&=15)),e&&(e<8||e>15)?_e:(null!==i.window&&i.wbits!==e&&(i.window=null),i.wrap=a,i.wbits=e,ve(t))},xe=(t,e)=>{if(!t)return _e;const a=new ge;t.state=a,a.strm=t,a.window=null,a.mode=16180;const i=ye(t,e);return i!==le&&(t.state=null),i};let ze,Ae,Ee=!0;const Re=t=>{if(Ee){ze=new Int32Array(512),Ae=new Int32Array(32);let e=0;for(;e<144;)t.lens[e++]=8;for(;e<256;)t.lens[e++]=9;for(;e<280;)t.lens[e++]=7;for(;e<288;)t.lens[e++]=8;for(ne(1,t.lens,0,288,ze,0,t.work,{bits:9}),e=0;e<32;)t.lens[e++]=5;ne(2,t.lens,0,32,Ae,0,t.work,{bits:5}),Ee=!1}t.lencode=ze,t.lenbits=9,t.distcode=Ae,t.distbits=5},Ze=(t,e,a,i)=>{let n;const s=t.state;return null===s.window&&(s.wsize=1<<s.wbits,s.wnext=0,s.whave=0,s.window=new Uint8Array(s.wsize)),i>=s.wsize?(s.window.set(e.subarray(a-s.wsize,a),0),s.wnext=0,s.whave=s.wsize):(n=s.wsize-s.wnext,n>i&&(n=i),s.window.set(e.subarray(a-i,a-i+n),s.wnext),(i-=n)?(s.window.set(e.subarray(a-i,a),0),s.wnext=i,s.whave=s.wsize):(s.wnext+=n,s.wnext===s.wsize&&(s.wnext=0),s.whave<s.wsize&&(s.whave+=n))),0};var Se={inflateReset:ve,inflateReset2:ye,inflateResetKeep:ke,inflateInit:t=>xe(t,15),inflateInit2:xe,inflate:(t,e)=>{let a,i,n,s,r,o,l,h,d,_,f,c,u,w,m,b,g,p,k,v,y,x,z=0;const A=new Uint8Array(4);let E,R;const Z=new Uint8Array([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]);if(pe(t)||!t.output||!t.input&&0!==t.avail_in)return _e;a=t.state,16191===a.mode&&(a.mode=16192),r=t.next_out,n=t.output,l=t.avail_out,s=t.next_in,i=t.input,o=t.avail_in,h=a.hold,d=a.bits,_=o,f=l,x=le;t:for(;;)switch(a.mode){case 16180:if(0===a.wrap){a.mode=16192;break}for(;d<16;){if(0===o)break t;o--,h+=i[s++]<<d,d+=8}if(2&a.wrap&&35615===h){0===a.wbits&&(a.wbits=15),a.check=0,A[0]=255&h,A[1]=h>>>8&255,a.check=L(a.check,A,2,0),h=0,d=0,a.mode=16181;break}if(a.head&&(a.head.done=!1),!(1&a.wrap)||(((255&h)<<8)+(h>>8))%31){t.msg="incorrect header check",a.mode=me;break}if((15&h)!==we){t.msg="unknown compression method",a.mode=me;break}if(h>>>=4,d-=4,y=8+(15&h),0===a.wbits&&(a.wbits=y),y>15||y>a.wbits){t.msg="invalid window size",a.mode=me;break}a.dmax=1<<a.wbits,a.flags=0,t.adler=a.check=1,a.mode=512&h?16189:16191,h=0,d=0;break;case 16181:for(;d<16;){if(0===o)break t;o--,h+=i[s++]<<d,d+=8}if(a.flags=h,(255&a.flags)!==we){t.msg="unknown compression method",a.mode=me;break}if(57344&a.flags){t.msg="unknown header flags set",a.mode=me;break}a.head&&(a.head.text=h>>8&1),512&a.flags&&4&a.wrap&&(A[0]=255&h,A[1]=h>>>8&255,a.check=L(a.check,A,2,0)),h=0,d=0,a.mode=16182;case 16182:for(;d<32;){if(0===o)break t;o--,h+=i[s++]<<d,d+=8}a.head&&(a.head.time=h),512&a.flags&&4&a.wrap&&(A[0]=255&h,A[1]=h>>>8&255,A[2]=h>>>16&255,A[3]=h>>>24&255,a.check=L(a.check,A,4,0)),h=0,d=0,a.mode=16183;case 16183:for(;d<16;){if(0===o)break t;o--,h+=i[s++]<<d,d+=8}a.head&&(a.head.xflags=255&h,a.head.os=h>>8),512&a.flags&&4&a.wrap&&(A[0]=255&h,A[1]=h>>>8&255,a.check=L(a.check,A,2,0)),h=0,d=0,a.mode=16184;case 16184:if(1024&a.flags){for(;d<16;){if(0===o)break t;o--,h+=i[s++]<<d,d+=8}a.length=h,a.head&&(a.head.extra_len=h),512&a.flags&&4&a.wrap&&(A[0]=255&h,A[1]=h>>>8&255,a.check=L(a.check,A,2,0)),h=0,d=0}else a.head&&(a.head.extra=null);a.mode=16185;case 16185:if(1024&a.flags&&(c=a.length,c>o&&(c=o),c&&(a.head&&(y=a.head.extra_len-a.length,a.head.extra||(a.head.extra=new Uint8Array(a.head.extra_len)),a.head.extra.set(i.subarray(s,s+c),y)),512&a.flags&&4&a.wrap&&(a.check=L(a.check,i,c,s)),o-=c,s+=c,a.length-=c),a.length))break t;a.length=0,a.mode=16186;case 16186:if(2048&a.flags){if(0===o)break t;c=0;do{y=i[s+c++],a.head&&y&&a.length<65536&&(a.head.name+=String.fromCharCode(y))}while(y&&c<o);if(512&a.flags&&4&a.wrap&&(a.check=L(a.check,i,c,s)),o-=c,s+=c,y)break t}else a.head&&(a.head.name=null);a.length=0,a.mode=16187;case 16187:if(4096&a.flags){if(0===o)break t;c=0;do{y=i[s+c++],a.head&&y&&a.length<65536&&(a.head.comment+=String.fromCharCode(y))}while(y&&c<o);if(512&a.flags&&4&a.wrap&&(a.check=L(a.check,i,c,s)),o-=c,s+=c,y)break t}else a.head&&(a.head.comment=null);a.mode=16188;case 16188:if(512&a.flags){for(;d<16;){if(0===o)break t;o--,h+=i[s++]<<d,d+=8}if(4&a.wrap&&h!==(65535&a.check)){t.msg="header crc mismatch",a.mode=me;break}h=0,d=0}a.head&&(a.head.hcrc=a.flags>>9&1,a.head.done=!0),t.adler=a.check=0,a.mode=16191;break;case 16189:for(;d<32;){if(0===o)break t;o--,h+=i[s++]<<d,d+=8}t.adler=a.check=be(h),h=0,d=0,a.mode=16190;case 16190:if(0===a.havedict)return t.next_out=r,t.avail_out=l,t.next_in=s,t.avail_in=o,a.hold=h,a.bits=d,de;t.adler=a.check=1,a.mode=16191;case 16191:if(e===re||e===oe)break t;case 16192:if(a.last){h>>>=7&d,d-=7&d,a.mode=16206;break}for(;d<3;){if(0===o)break t;o--,h+=i[s++]<<d,d+=8}switch(a.last=1&h,h>>>=1,d-=1,3&h){case 0:a.mode=16193;break;case 1:if(Re(a),a.mode=16199,e===oe){h>>>=2,d-=2;break t}break;case 2:a.mode=16196;break;case 3:t.msg="invalid block type",a.mode=me}h>>>=2,d-=2;break;case 16193:for(h>>>=7&d,d-=7&d;d<32;){if(0===o)break t;o--,h+=i[s++]<<d,d+=8}if((65535&h)!=(h>>>16^65535)){t.msg="invalid stored block lengths",a.mode=me;break}if(a.length=65535&h,h=0,d=0,a.mode=16194,e===oe)break t;case 16194:a.mode=16195;case 16195:if(c=a.length,c){if(c>o&&(c=o),c>l&&(c=l),0===c)break t;n.set(i.subarray(s,s+c),r),o-=c,s+=c,l-=c,r+=c,a.length-=c;break}a.mode=16191;break;case 16196:for(;d<14;){if(0===o)break t;o--,h+=i[s++]<<d,d+=8}if(a.nlen=257+(31&h),h>>>=5,d-=5,a.ndist=1+(31&h),h>>>=5,d-=5,a.ncode=4+(15&h),h>>>=4,d-=4,a.nlen>286||a.ndist>30){t.msg="too many length or distance symbols",a.mode=me;break}a.have=0,a.mode=16197;case 16197:for(;a.have<a.ncode;){for(;d<3;){if(0===o)break t;o--,h+=i[s++]<<d,d+=8}a.lens[Z[a.have++]]=7&h,h>>>=3,d-=3}for(;a.have<19;)a.lens[Z[a.have++]]=0;if(a.lencode=a.lendyn,a.lenbits=7,E={bits:a.lenbits},x=ne(0,a.lens,0,19,a.lencode,0,a.work,E),a.lenbits=E.bits,x){t.msg="invalid code lengths set",a.mode=me;break}a.have=0,a.mode=16198;case 16198:for(;a.have<a.nlen+a.ndist;){for(;z=a.lencode[h&(1<<a.lenbits)-1],m=z>>>24,b=z>>>16&255,g=65535&z,!(m<=d);){if(0===o)break t;o--,h+=i[s++]<<d,d+=8}if(g<16)h>>>=m,d-=m,a.lens[a.have++]=g;else{if(16===g){for(R=m+2;d<R;){if(0===o)break t;o--,h+=i[s++]<<d,d+=8}if(h>>>=m,d-=m,0===a.have){t.msg="invalid bit length repeat",a.mode=me;break}y=a.lens[a.have-1],c=3+(3&h),h>>>=2,d-=2}else if(17===g){for(R=m+3;d<R;){if(0===o)break t;o--,h+=i[s++]<<d,d+=8}h>>>=m,d-=m,y=0,c=3+(7&h),h>>>=3,d-=3}else{for(R=m+7;d<R;){if(0===o)break t;o--,h+=i[s++]<<d,d+=8}h>>>=m,d-=m,y=0,c=11+(127&h),h>>>=7,d-=7}if(a.have+c>a.nlen+a.ndist){t.msg="invalid bit length repeat",a.mode=me;break}for(;c--;)a.lens[a.have++]=y}}if(a.mode===me)break;if(0===a.lens[256]){t.msg="invalid code -- missing end-of-block",a.mode=me;break}if(a.lenbits=9,E={bits:a.lenbits},x=ne(1,a.lens,0,a.nlen,a.lencode,0,a.work,E),a.lenbits=E.bits,x){t.msg="invalid literal/lengths set",a.mode=me;break}if(a.distbits=6,a.distcode=a.distdyn,E={bits:a.distbits},x=ne(2,a.lens,a.nlen,a.ndist,a.distcode,0,a.work,E),a.distbits=E.bits,x){t.msg="invalid distances set",a.mode=me;break}if(a.mode=16199,e===oe)break t;case 16199:a.mode=16200;case 16200:if(o>=6&&l>=258){t.next_out=r,t.avail_out=l,t.next_in=s,t.avail_in=o,a.hold=h,a.bits=d,$t(t,f),r=t.next_out,n=t.output,l=t.avail_out,s=t.next_in,i=t.input,o=t.avail_in,h=a.hold,d=a.bits,16191===a.mode&&(a.back=-1);break}for(a.back=0;z=a.lencode[h&(1<<a.lenbits)-1],m=z>>>24,b=z>>>16&255,g=65535&z,!(m<=d);){if(0===o)break t;o--,h+=i[s++]<<d,d+=8}if(b&&0==(240&b)){for(p=m,k=b,v=g;z=a.lencode[v+((h&(1<<p+k)-1)>>p)],m=z>>>24,b=z>>>16&255,g=65535&z,!(p+m<=d);){if(0===o)break t;o--,h+=i[s++]<<d,d+=8}h>>>=p,d-=p,a.back+=p}if(h>>>=m,d-=m,a.back+=m,a.length=g,0===b){a.mode=16205;break}if(32&b){a.back=-1,a.mode=16191;break}if(64&b){t.msg="invalid literal/length code",a.mode=me;break}a.extra=15&b,a.mode=16201;case 16201:if(a.extra){for(R=a.extra;d<R;){if(0===o)break t;o--,h+=i[s++]<<d,d+=8}a.length+=h&(1<<a.extra)-1,h>>>=a.extra,d-=a.extra,a.back+=a.extra}a.was=a.length,a.mode=16202;case 16202:for(;z=a.distcode[h&(1<<a.distbits)-1],m=z>>>24,b=z>>>16&255,g=65535&z,!(m<=d);){if(0===o)break t;o--,h+=i[s++]<<d,d+=8}if(0==(240&b)){for(p=m,k=b,v=g;z=a.distcode[v+((h&(1<<p+k)-1)>>p)],m=z>>>24,b=z>>>16&255,g=65535&z,!(p+m<=d);){if(0===o)break t;o--,h+=i[s++]<<d,d+=8}h>>>=p,d-=p,a.back+=p}if(h>>>=m,d-=m,a.back+=m,64&b){t.msg="invalid distance code",a.mode=me;break}a.offset=g,a.extra=15&b,a.mode=16203;case 16203:if(a.extra){for(R=a.extra;d<R;){if(0===o)break t;o--,h+=i[s++]<<d,d+=8}a.offset+=h&(1<<a.extra)-1,h>>>=a.extra,d-=a.extra,a.back+=a.extra}if(a.offset>a.dmax){t.msg="invalid distance too far back",a.mode=me;break}a.mode=16204;case 16204:if(0===l)break t;if(c=f-l,a.offset>c){if(c=a.offset-c,c>a.whave&&a.sane){t.msg="invalid distance too far back",a.mode=me;break}c>a.wnext?(c-=a.wnext,u=a.wsize-c):u=a.wnext-c,c>a.length&&(c=a.length),w=a.window}else w=n,u=r-a.offset,c=a.length;c>l&&(c=l),l-=c,a.length-=c;do{n[r++]=w[u++]}while(--c);0===a.length&&(a.mode=16200);break;case 16205:if(0===l)break t;n[r++]=a.length,l--,a.mode=16200;break;case 16206:if(a.wrap){for(;d<32;){if(0===o)break t;o--,h|=i[s++]<<d,d+=8}if(f-=l,t.total_out+=f,a.total+=f,4&a.wrap&&f&&(t.adler=a.check=a.flags?L(a.check,n,f,r-f):N(a.check,n,f,r-f)),f=l,4&a.wrap&&(a.flags?h:be(h))!==a.check){t.msg="incorrect data check",a.mode=me;break}h=0,d=0}a.mode=16207;case 16207:if(a.wrap&&a.flags){for(;d<32;){if(0===o)break t;o--,h+=i[s++]<<d,d+=8}if(4&a.wrap&&h!==(4294967295&a.total)){t.msg="incorrect length check",a.mode=me;break}h=0,d=0}a.mode=16208;case 16208:x=he;break t;case me:x=fe;break t;case 16210:return ce;default:return _e}return t.next_out=r,t.avail_out=l,t.next_in=s,t.avail_in=o,a.hold=h,a.bits=d,(a.wsize||f!==t.avail_out&&a.mode<me&&(a.mode<16206||e!==se))&&Ze(t,t.output,t.next_out,f-t.avail_out),_-=t.avail_in,f-=t.avail_out,t.total_in+=_,t.total_out+=f,a.total+=f,4&a.wrap&&f&&(t.adler=a.check=a.flags?L(a.check,n,f,t.next_out-f):N(a.check,n,f,t.next_out-f)),t.data_type=a.bits+(a.last?64:0)+(16191===a.mode?128:0)+(16199===a.mode||16194===a.mode?256:0),(0===_&&0===f||e===se)&&x===le&&(x=ue),x},inflateEnd:t=>{if(pe(t))return _e;let e=t.state;return e.window&&(e.window=null),t.state=null,le},inflateGetHeader:(t,e)=>{if(pe(t))return _e;const a=t.state;return 0==(2&a.wrap)?_e:(a.head=e,e.done=!1,le)},inflateSetDictionary:(t,e)=>{const a=e.length;let i,n,s;return pe(t)?_e:(i=t.state,0!==i.wrap&&16190!==i.mode?_e:16190===i.mode&&(n=1,n=N(n,e,a,0),n!==i.check)?fe:(s=Ze(t,e,a,a),s?(i.mode=16210,ce):(i.havedict=1,le)))},inflateInfo:"pako inflate (from Nodeca project)"};var Ue=function(){this.text=0,this.time=0,this.xflags=0,this.os=0,this.extra=null,this.extra_len=0,this.name="",this.comment="",this.hcrc=0,this.done=!1};const De=Object.prototype.toString,{Z_NO_FLUSH:Oe,Z_FINISH:Te,Z_OK:Ne,Z_STREAM_END:Fe,Z_NEED_DICT:Le,Z_STREAM_ERROR:Ie,Z_DATA_ERROR:Be,Z_MEM_ERROR:Ce}=B;function He(t){this.options=Ot({chunkSize:65536,windowBits:15,to:""},t||{});const e=this.options;e.raw&&e.windowBits>=0&&e.windowBits<16&&(e.windowBits=-e.windowBits,0===e.windowBits&&(e.windowBits=-15)),!(e.windowBits>=0&&e.windowBits<16)||t&&t.windowBits||(e.windowBits+=32),e.windowBits>15&&e.windowBits<48&&0==(15&e.windowBits)&&(e.windowBits|=15),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new Ct,this.strm.avail_out=0;let a=Se.inflateInit2(this.strm,e.windowBits);if(a!==Ne)throw new Error(I[a]);if(this.header=new Ue,Se.inflateGetHeader(this.strm,this.header),e.dictionary&&("string"==typeof e.dictionary?e.dictionary=Lt(e.dictionary):"[object ArrayBuffer]"===De.call(e.dictionary)&&(e.dictionary=new Uint8Array(e.dictionary)),e.raw&&(a=Se.inflateSetDictionary(this.strm,e.dictionary),a!==Ne)))throw new Error(I[a])}He.prototype.push=function(t,e){const a=this.strm,i=this.options.chunkSize,n=this.options.dictionary;let s,r,o;if(this.ended)return!1;for(r=e===~~e?e:!0===e?Te:Oe,"[object ArrayBuffer]"===De.call(t)?a.input=new Uint8Array(t):a.input=t,a.next_in=0,a.avail_in=a.input.length;;){for(0===a.avail_out&&(a.output=new Uint8Array(i),a.next_out=0,a.avail_out=i),s=Se.inflate(a,r),s===Le&&n&&(s=Se.inflateSetDictionary(a,n),s===Ne?s=Se.inflate(a,r):s===Be&&(s=Le));a.avail_in>0&&s===Fe&&a.state.wrap>0&&0!==t[a.next_in];)Se.inflateReset(a),s=Se.inflate(a,r);switch(s){case Ie:case Be:case Le:case Ce:return this.onEnd(s),this.ended=!0,!1}if(o=a.avail_out,a.next_out&&(0===a.avail_out||s===Fe))if("string"===this.options.to){let t=Bt(a.output,a.next_out),e=a.next_out-t,n=It(a.output,t);a.next_out=e,a.avail_out=i-e,e&&a.output.set(a.output.subarray(t,t+e),0),this.onData(n)}else this.onData(a.output.length===a.next_out?a.output:a.output.subarray(0,a.next_out));if(s!==Ne||0!==o){if(s===Fe)return s=Se.inflateEnd(this.strm),this.onEnd(s),this.ended=!0,!0;if(0===a.avail_in)break}}return!0},He.prototype.onData=function(t){this.chunks.push(t)},He.prototype.onEnd=function(t){t===Ne&&("string"===this.options.to?this.result=this.chunks.join(""):this.result=Tt(this.chunks)),this.chunks=[],this.err=t,this.msg=this.strm.msg};const{Deflate:Me,deflate:je,deflateRaw:Ke,gzip:Pe}=Vt;var Ye=Me,Ge=B;const Xe=new class{constructor(){this.added=0,this.init()}init(){this.added=0,this.deflate=new Ye,this.deflate.push("[",Ge.Z_NO_FLUSH)}addEvent(t){if(!t)return;const e=this.added>0?",":"";this.deflate.push(e+JSON.stringify(t),Ge.Z_NO_FLUSH),this.added++}finish(){if(this.deflate.push("]",Ge.Z_FINISH),this.deflate.err)throw this.deflate.err;const t=this.deflate.result;return this.init(),t}},Je={init:()=>(Xe.init(),""),addEvent:t=>(Xe.addEvent(t),""),finish:()=>Xe.finish()};addEventListener("message",(function(t){const e=t.data.method,a=t.data.id,[i]=t.data.args?JSON.parse(t.data.args):[];if(e in Je&&"function"==typeof Je[e])try{const t=Je[e](i);postMessage({id:a,method:e,success:!0,response:t})}catch(t){postMessage({id:a,method:e,success:!1,response:t}),console.error(t)}}));`;
30029
30072
 
30030
30073
  /* eslint-disable @typescript-eslint/no-unsafe-member-access */
30031
30074
 
30032
- /**
30033
- * Create an event buffer for replays.
30034
- */
30035
30075
  function createEventBuffer({ useCompression }) {
30036
30076
  // eslint-disable-next-line no-restricted-globals
30037
30077
  if (useCompression && window.Worker) {
@@ -30062,30 +30102,21 @@ class EventBufferArray {
30062
30102
  this._events = [];
30063
30103
  }
30064
30104
 
30065
- get pendingLength() {
30066
- return this._events.length;
30067
- }
30068
-
30069
- /**
30070
- * Returns the raw events that are buffered. In `EventBufferArray`, this is the
30071
- * same as `this._events`.
30072
- */
30073
- get pendingEvents() {
30074
- return this._events;
30075
- }
30076
-
30077
30105
  destroy() {
30078
30106
  this._events = [];
30079
30107
  }
30080
30108
 
30081
- async addEvent(event, isCheckout) {
30109
+ get length() {
30110
+ return this._events.length;
30111
+ }
30112
+
30113
+ addEvent(event, isCheckout) {
30082
30114
  if (isCheckout) {
30083
30115
  this._events = [event];
30084
30116
  return;
30085
30117
  }
30086
30118
 
30087
30119
  this._events.push(event);
30088
- return;
30089
30120
  }
30090
30121
 
30091
30122
  finish() {
@@ -30100,44 +30131,16 @@ class EventBufferArray {
30100
30131
  }
30101
30132
  }
30102
30133
 
30103
- /**
30104
- * Event buffer that uses a web worker to compress events.
30105
- * Exported only for testing.
30106
- */
30134
+ // exporting for testing
30107
30135
  class EventBufferCompressionWorker {
30108
- /**
30109
- * Keeps track of the list of events since the last flush that have not been compressed.
30110
- * For example, page is reloaded and a flush attempt is made, but
30111
- * `finish()` (and thus the flush), does not complete.
30112
- */
30113
- __init() {this._pendingEvents = [];}
30114
30136
 
30115
- __init2() {this._eventBufferItemLength = 0;}
30116
- __init3() {this._id = 0;}
30137
+ __init() {this._eventBufferItemLength = 0;}
30138
+ __init2() {this._id = 0;}
30117
30139
 
30118
- constructor(worker) {EventBufferCompressionWorker.prototype.__init.call(this);EventBufferCompressionWorker.prototype.__init2.call(this);EventBufferCompressionWorker.prototype.__init3.call(this);
30140
+ constructor(worker) {EventBufferCompressionWorker.prototype.__init.call(this);EventBufferCompressionWorker.prototype.__init2.call(this);
30119
30141
  this._worker = worker;
30120
30142
  }
30121
30143
 
30122
- /**
30123
- * The number of raw events that are buffered. This may not be the same as
30124
- * the number of events that have been compresed in the worker because
30125
- * `addEvent` is async.
30126
- */
30127
- get pendingLength() {
30128
- return this._eventBufferItemLength;
30129
- }
30130
-
30131
- /**
30132
- * Returns a list of the raw recording events that are being compressed.
30133
- */
30134
- get pendingEvents() {
30135
- return this._pendingEvents;
30136
- }
30137
-
30138
- /**
30139
- * Destroy the event buffer.
30140
- */
30141
30144
  destroy() {
30142
30145
  (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log('[Replay] Destroying compression worker');
30143
30146
  _optionalChain([this, 'access', _ => _._worker, 'optionalAccess', _2 => _2.terminate, 'call', _3 => _3()]);
@@ -30145,10 +30148,13 @@ class EventBufferCompressionWorker {
30145
30148
  }
30146
30149
 
30147
30150
  /**
30148
- * Add an event to the event buffer.
30149
- *
30150
- * Returns true if event was successfuly received and processed by worker.
30151
+ * Note that this may not reflect what is actually in the event buffer. This
30152
+ * is only a local count of the buffer size since `addEvent` is async.
30151
30153
  */
30154
+ get length() {
30155
+ return this._eventBufferItemLength;
30156
+ }
30157
+
30152
30158
  async addEvent(event, isCheckout) {
30153
30159
  if (isCheckout) {
30154
30160
  // This event is a checkout, make sure worker buffer is cleared before
@@ -30160,17 +30166,9 @@ class EventBufferCompressionWorker {
30160
30166
  });
30161
30167
  }
30162
30168
 
30163
- // Don't store checkout events in `_pendingEvents` because they are too large
30164
- if (!isCheckout) {
30165
- this._pendingEvents.push(event);
30166
- }
30167
-
30168
30169
  return this._sendEventToWorker(event);
30169
30170
  }
30170
30171
 
30171
- /**
30172
- * Finish the event buffer and return the compressed data.
30173
- */
30174
30172
  finish() {
30175
30173
  return this._finishRequest(this._getAndIncrementId());
30176
30174
  }
@@ -30221,10 +30219,7 @@ class EventBufferCompressionWorker {
30221
30219
  });
30222
30220
  }
30223
30221
 
30224
- /**
30225
- * Send the event to the worker.
30226
- */
30227
- async _sendEventToWorker(event) {
30222
+ _sendEventToWorker(event) {
30228
30223
  const promise = this._postMessage({
30229
30224
  id: this._getAndIncrementId(),
30230
30225
  method: 'addEvent',
@@ -30237,28 +30232,37 @@ class EventBufferCompressionWorker {
30237
30232
  return promise;
30238
30233
  }
30239
30234
 
30240
- /**
30241
- * Finish the request and return the compressed data from the worker.
30242
- */
30243
30235
  async _finishRequest(id) {
30244
30236
  const promise = this._postMessage({ id, method: 'finish', args: [] });
30245
30237
 
30246
30238
  // XXX: See note in `get length()`
30247
30239
  this._eventBufferItemLength = 0;
30248
30240
 
30249
- await promise;
30250
-
30251
- this._pendingEvents = [];
30252
-
30253
- return promise;
30241
+ return promise ;
30254
30242
  }
30255
30243
 
30256
- /** Get the current ID and increment it for the next call. */
30257
30244
  _getAndIncrementId() {
30258
30245
  return this._id++;
30259
30246
  }
30260
30247
  }
30261
30248
 
30249
+ /**
30250
+ * Deletes a session from storage
30251
+ */
30252
+ function deleteSession() {
30253
+ const hasSessionStorage = 'sessionStorage' in WINDOW;
30254
+
30255
+ if (!hasSessionStorage) {
30256
+ return;
30257
+ }
30258
+
30259
+ try {
30260
+ WINDOW.sessionStorage.removeItem(REPLAY_SESSION_KEY);
30261
+ } catch (e) {
30262
+ // Ignore potential SecurityError exceptions
30263
+ }
30264
+ }
30265
+
30262
30266
  /**
30263
30267
  * Given an initial timestamp and an expiry duration, checks to see if current
30264
30268
  * time should be considered as expired.
@@ -30294,9 +30298,6 @@ function isSessionExpired(session, idleTimeout, targetTime = +new Date()) {
30294
30298
  );
30295
30299
  }
30296
30300
 
30297
- /**
30298
- * Save a session to session storage.
30299
- */
30300
30301
  function saveSession(session) {
30301
30302
  const hasSessionStorage = 'sessionStorage' in WINDOW;
30302
30303
  if (!hasSessionStorage) {
@@ -30439,153 +30440,64 @@ function getSession({
30439
30440
  * Create a "span" for the total amount of memory being used by JS objects
30440
30441
  * (including v8 internal objects).
30441
30442
  */
30442
- async function addMemoryEntry(replay) {
30443
+ function addMemoryEntry(replay) {
30443
30444
  // window.performance.memory is a non-standard API and doesn't work on all browsers, so we try-catch this
30444
30445
  try {
30445
- return Promise.all(
30446
- createPerformanceSpans(replay, [
30447
- // @ts-ignore memory doesn't exist on type Performance as the API is non-standard (we check that it exists above)
30448
- createMemoryEntry(WINDOW.performance.memory),
30449
- ]),
30450
- );
30446
+ createPerformanceSpans(replay, [
30447
+ // @ts-ignore memory doesn't exist on type Performance as the API is non-standard (we check that it exists above)
30448
+ createMemoryEntry(WINDOW.performance.memory),
30449
+ ]);
30451
30450
  } catch (error) {
30452
30451
  // Do nothing
30453
- return [];
30454
- }
30455
- }
30456
-
30457
- function createMemoryEntry(memoryEntry) {
30458
- const { jsHeapSizeLimit, totalJSHeapSize, usedJSHeapSize } = memoryEntry;
30459
- // we don't want to use `getAbsoluteTime` because it adds the event time to the
30460
- // time origin, so we get the current timestamp instead
30461
- const time = new Date().getTime() / 1000;
30462
- return {
30463
- type: 'memory',
30464
- name: 'memory',
30465
- start: time,
30466
- end: time,
30467
- data: {
30468
- memory: {
30469
- jsHeapSizeLimit,
30470
- totalJSHeapSize,
30471
- usedJSHeapSize,
30472
- },
30473
- },
30474
- };
30475
- }
30476
-
30477
- // Map entryType -> function to normalize data for event
30478
- // @ts-ignore TODO: entry type does not fit the create* functions entry type
30479
- const ENTRY_TYPES = {
30480
- // @ts-ignore TODO: entry type does not fit the create* functions entry type
30481
- resource: createResourceEntry,
30482
- paint: createPaintEntry,
30483
- // @ts-ignore TODO: entry type does not fit the create* functions entry type
30484
- navigation: createNavigationEntry,
30485
- // @ts-ignore TODO: entry type does not fit the create* functions entry type
30486
- ['largest-contentful-paint']: createLargestContentfulPaint,
30487
- };
30488
-
30489
- /**
30490
- * Create replay performance entries from the browser performance entries.
30491
- */
30492
- function createPerformanceEntries(entries) {
30493
- return entries.map(createPerformanceEntry).filter(Boolean) ;
30494
- }
30495
-
30496
- function createPerformanceEntry(entry) {
30497
- if (ENTRY_TYPES[entry.entryType] === undefined) {
30498
- return null;
30499
30452
  }
30500
-
30501
- return ENTRY_TYPES[entry.entryType](entry);
30502
30453
  }
30503
30454
 
30504
- function getAbsoluteTime(time) {
30505
- // browserPerformanceTimeOrigin can be undefined if `performance` or
30506
- // `performance.now` doesn't exist, but this is already checked by this integration
30507
- return ((browserPerformanceTimeOrigin || WINDOW.performance.timeOrigin) + time) / 1000;
30508
- }
30509
-
30510
- // TODO: type definition!
30511
- // eslint-disable-next-line @typescript-eslint/explicit-function-return-type
30512
- function createPaintEntry(entry) {
30513
- const { duration, entryType, name, startTime } = entry;
30514
-
30515
- const start = getAbsoluteTime(startTime);
30516
- return {
30517
- type: entryType,
30518
- name,
30519
- start,
30520
- end: start + duration,
30521
- };
30455
+ function createPayload({
30456
+ events,
30457
+ headers,
30522
30458
  }
30523
30459
 
30524
- // TODO: type definition!
30525
- // eslint-disable-next-line @typescript-eslint/explicit-function-return-type
30526
- function createNavigationEntry(entry) {
30527
- // TODO: There looks to be some more interesting bits in here (domComplete, domContentLoaded)
30528
- const { entryType, name, duration, domComplete, startTime, transferSize, type } = entry;
30529
-
30530
- // Ignore entries with no duration, they do not seem to be useful and cause dupes
30531
- if (duration === 0) {
30532
- return null;
30533
- }
30534
-
30535
- return {
30536
- type: `${entryType}.${type}`,
30537
- start: getAbsoluteTime(startTime),
30538
- end: getAbsoluteTime(domComplete),
30539
- name,
30540
- data: {
30541
- size: transferSize,
30542
- duration,
30543
- },
30544
- };
30545
- }
30460
+ ) {
30461
+ let payloadWithSequence;
30546
30462
 
30547
- // TODO: type definition!
30548
- // eslint-disable-next-line @typescript-eslint/explicit-function-return-type
30549
- function createResourceEntry(entry) {
30550
- const { entryType, initiatorType, name, responseEnd, startTime, encodedBodySize, transferSize } = entry;
30463
+ // XXX: newline is needed to separate sequence id from events
30464
+ const replayHeaders = `${JSON.stringify(headers)}
30465
+ `;
30551
30466
 
30552
- // Core SDK handles these
30553
- if (['fetch', 'xmlhttprequest'].includes(initiatorType)) {
30554
- return null;
30467
+ if (typeof events === 'string') {
30468
+ payloadWithSequence = `${replayHeaders}${events}`;
30469
+ } else {
30470
+ const enc = new TextEncoder();
30471
+ // XXX: newline is needed to separate sequence id from events
30472
+ const sequence = enc.encode(replayHeaders);
30473
+ // Merge the two Uint8Arrays
30474
+ payloadWithSequence = new Uint8Array(sequence.length + events.length);
30475
+ payloadWithSequence.set(sequence);
30476
+ payloadWithSequence.set(events, sequence.length);
30555
30477
  }
30556
30478
 
30557
- return {
30558
- type: `${entryType}.${initiatorType}`,
30559
- start: getAbsoluteTime(startTime),
30560
- end: getAbsoluteTime(responseEnd),
30561
- name,
30562
- data: {
30563
- size: transferSize,
30564
- encodedBodySize,
30565
- },
30566
- };
30479
+ return payloadWithSequence;
30567
30480
  }
30568
30481
 
30569
- // TODO: type definition!
30570
- // eslint-disable-next-line @typescript-eslint/explicit-function-return-type
30571
- function createLargestContentfulPaint(entry) {
30572
- const { duration, entryType, startTime, size } = entry;
30573
-
30574
- const start = getAbsoluteTime(startTime);
30575
-
30576
- return {
30577
- type: entryType,
30578
- name: entryType,
30579
- start,
30580
- end: start + duration,
30581
- data: {
30582
- duration,
30583
- size,
30584
- // Not sure why this errors, Node should be correct (Argument of type 'Node' is not assignable to parameter of type 'INode')
30585
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
30586
- nodeId: record.mirror.getId(entry.element ),
30587
- },
30588
- };
30482
+ function createReplayEnvelope(
30483
+ replayEvent,
30484
+ recordingData,
30485
+ dsn,
30486
+ tunnel,
30487
+ ) {
30488
+ return createEnvelope(
30489
+ createEventEnvelopeHeaders(replayEvent, getSdkMetadataForEnvelopeHeader(replayEvent), tunnel, dsn),
30490
+ [
30491
+ [{ type: 'replay_event' }, replayEvent],
30492
+ [
30493
+ {
30494
+ type: 'replay_recording',
30495
+ length: recordingData.length,
30496
+ },
30497
+ recordingData,
30498
+ ],
30499
+ ],
30500
+ );
30589
30501
  }
30590
30502
 
30591
30503
  /**
@@ -30651,112 +30563,7 @@ function debounce(func, wait, options) {
30651
30563
  return debounced;
30652
30564
  }
30653
30565
 
30654
- let _originalRecordDroppedEvent;
30655
-
30656
- /**
30657
- * Overwrite the `recordDroppedEvent` method on the client, so we can find out which events were dropped.
30658
- * */
30659
- function overwriteRecordDroppedEvent(errorIds) {
30660
- const client = getCurrentHub().getClient();
30661
-
30662
- if (!client) {
30663
- return;
30664
- }
30665
-
30666
- const _originalCallback = client.recordDroppedEvent.bind(client);
30667
-
30668
- const recordDroppedEvent = (
30669
- reason,
30670
- category,
30671
- event,
30672
- ) => {
30673
- if (event && !event.type && event.event_id) {
30674
- errorIds.delete(event.event_id);
30675
- }
30676
-
30677
- return _originalCallback(reason, category, event);
30678
- };
30679
-
30680
- client.recordDroppedEvent = recordDroppedEvent;
30681
- _originalRecordDroppedEvent = _originalCallback;
30682
- }
30683
-
30684
- /**
30685
- * Restore the original method.
30686
- * */
30687
- function restoreRecordDroppedEvent() {
30688
- const client = getCurrentHub().getClient();
30689
-
30690
- if (!client || !_originalRecordDroppedEvent) {
30691
- return;
30692
- }
30693
-
30694
- client.recordDroppedEvent = _originalRecordDroppedEvent;
30695
- }
30696
-
30697
- /**
30698
- * Create a replay envelope ready to be sent.
30699
- * This includes both the replay event, as well as the recording data.
30700
- */
30701
- function createReplayEnvelope(
30702
- replayEvent,
30703
- recordingData,
30704
- dsn,
30705
- tunnel,
30706
- ) {
30707
- return createEnvelope(
30708
- createEventEnvelopeHeaders(replayEvent, getSdkMetadataForEnvelopeHeader(replayEvent), tunnel, dsn),
30709
- [
30710
- [{ type: 'replay_event' }, replayEvent],
30711
- [
30712
- {
30713
- type: 'replay_recording',
30714
- // If string then we need to encode to UTF8, otherwise will have
30715
- // wrong size. TextEncoder has similar browser support to
30716
- // MutationObserver, although it does not accept IE11.
30717
- length:
30718
- typeof recordingData === 'string' ? new TextEncoder().encode(recordingData).length : recordingData.length,
30719
- },
30720
- recordingData,
30721
- ],
30722
- ],
30723
- );
30724
- }
30725
-
30726
- /**
30727
- * Prepare the recording data ready to be sent.
30728
- */
30729
- function prepareRecordingData({
30730
- recordingData,
30731
- headers,
30732
- }
30733
-
30734
- ) {
30735
- let payloadWithSequence;
30736
-
30737
- // XXX: newline is needed to separate sequence id from events
30738
- const replayHeaders = `${JSON.stringify(headers)}
30739
- `;
30740
-
30741
- if (typeof recordingData === 'string') {
30742
- payloadWithSequence = `${replayHeaders}${recordingData}`;
30743
- } else {
30744
- const enc = new TextEncoder();
30745
- // XXX: newline is needed to separate sequence id from events
30746
- const sequence = enc.encode(replayHeaders);
30747
- // Merge the two Uint8Arrays
30748
- payloadWithSequence = new Uint8Array(sequence.length + recordingData.length);
30749
- payloadWithSequence.set(sequence);
30750
- payloadWithSequence.set(recordingData, sequence.length);
30751
- }
30752
-
30753
- return payloadWithSequence;
30754
- }
30755
-
30756
- /**
30757
- * Prepare a replay event & enrich it with the SDK metadata.
30758
- */
30759
- async function prepareReplayEvent({
30566
+ async function getReplayEvent({
30760
30567
  client,
30761
30568
  scope,
30762
30569
  replayId: event_id,
@@ -30782,218 +30589,59 @@ async function prepareReplayEvent({
30782
30589
 
30783
30590
  preparedEvent.sdk = {
30784
30591
  ...preparedEvent.sdk,
30785
- version: "7.31.0",
30592
+ version: "7.29.0",
30786
30593
  name,
30787
30594
  };
30788
30595
 
30789
30596
  return preparedEvent;
30790
30597
  }
30791
30598
 
30792
- /**
30793
- * Send replay attachment using `fetch()`
30794
- */
30795
- async function sendReplayRequest({
30796
- recordingData,
30797
- replayId,
30798
- segmentId: segment_id,
30799
- includeReplayStartTimestamp,
30800
- eventContext,
30801
- timestamp,
30802
- session,
30803
- options,
30804
- }) {
30805
- const preparedRecordingData = prepareRecordingData({
30806
- recordingData,
30807
- headers: {
30808
- segment_id,
30809
- },
30810
- });
30811
-
30812
- const { urls, errorIds, traceIds, initialTimestamp } = eventContext;
30599
+ let _originalRecordDroppedEvent;
30813
30600
 
30814
- const hub = getCurrentHub();
30815
- const client = hub.getClient();
30816
- const scope = hub.getScope();
30817
- const transport = client && client.getTransport();
30818
- const dsn = _optionalChain([client, 'optionalAccess', _ => _.getDsn, 'call', _2 => _2()]);
30601
+ function overwriteRecordDroppedEvent(errorIds) {
30602
+ const client = getCurrentHub().getClient();
30819
30603
 
30820
- if (!client || !scope || !transport || !dsn || !session.sampled) {
30604
+ if (!client) {
30821
30605
  return;
30822
30606
  }
30823
30607
 
30824
- const baseEvent = {
30825
- // @ts-ignore private api
30826
- type: REPLAY_EVENT_NAME,
30827
- ...(includeReplayStartTimestamp ? { replay_start_timestamp: initialTimestamp / 1000 } : {}),
30828
- timestamp: timestamp / 1000,
30829
- error_ids: errorIds,
30830
- trace_ids: traceIds,
30831
- urls,
30832
- replay_id: replayId,
30833
- segment_id,
30834
- replay_type: session.sampled,
30835
- };
30836
-
30837
- const replayEvent = await prepareReplayEvent({ scope, client, replayId, event: baseEvent });
30608
+ const _originalCallback = client.recordDroppedEvent.bind(client);
30838
30609
 
30839
- if (!replayEvent) {
30840
- // Taken from baseclient's `_processEvent` method, where this is handled for errors/transactions
30841
- client.recordDroppedEvent('event_processor', 'replay_event', baseEvent);
30842
- (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log('An event processor returned `null`, will not send event.');
30843
- return;
30844
- }
30610
+ const recordDroppedEvent = (
30611
+ reason,
30612
+ category,
30613
+ event,
30614
+ ) => {
30615
+ if (event && !event.type && event.event_id) {
30616
+ errorIds.delete(event.event_id);
30617
+ }
30845
30618
 
30846
- replayEvent.tags = {
30847
- ...replayEvent.tags,
30848
- sessionSampleRate: options.sessionSampleRate,
30849
- errorSampleRate: options.errorSampleRate,
30619
+ return _originalCallback(reason, category, event);
30850
30620
  };
30851
30621
 
30852
- /*
30853
- For reference, the fully built event looks something like this:
30854
- {
30855
- "type": "replay_event",
30856
- "timestamp": 1670837008.634,
30857
- "error_ids": [
30858
- "errorId"
30859
- ],
30860
- "trace_ids": [
30861
- "traceId"
30862
- ],
30863
- "urls": [
30864
- "https://example.com"
30865
- ],
30866
- "replay_id": "eventId",
30867
- "segment_id": 3,
30868
- "replay_type": "error",
30869
- "platform": "javascript",
30870
- "event_id": "eventId",
30871
- "environment": "production",
30872
- "sdk": {
30873
- "integrations": [
30874
- "BrowserTracing",
30875
- "Replay"
30876
- ],
30877
- "name": "sentry.javascript.browser",
30878
- "version": "7.25.0"
30879
- },
30880
- "sdkProcessingMetadata": {},
30881
- "tags": {
30882
- "sessionSampleRate": 1,
30883
- "errorSampleRate": 0,
30884
- }
30885
- }
30886
- */
30887
-
30888
- const envelope = createReplayEnvelope(replayEvent, preparedRecordingData, dsn, client.getOptions().tunnel);
30889
-
30890
- let response;
30891
-
30892
- try {
30893
- response = await transport.send(envelope);
30894
- } catch (e) {
30895
- throw new Error(UNABLE_TO_SEND_REPLAY);
30896
- }
30897
-
30898
- // TODO (v8): we can remove this guard once transport.send's type signature doesn't include void anymore
30899
- if (!response) {
30900
- return response;
30901
- }
30902
-
30903
- const rateLimits = updateRateLimits({}, response);
30904
- if (isRateLimited(rateLimits, 'replay')) {
30905
- throw new RateLimitError(rateLimits);
30906
- }
30907
-
30908
- // If the status code is invalid, we want to immediately stop & not retry
30909
- if (typeof response.statusCode === 'number' && (response.statusCode < 200 || response.statusCode >= 300)) {
30910
- throw new TransportStatusCodeError(response.statusCode);
30911
- }
30912
-
30913
- return response;
30914
- }
30915
-
30916
- /**
30917
- * This error indicates that we hit a rate limit API error.
30918
- */
30919
- class RateLimitError extends Error {
30920
-
30921
- constructor(rateLimits) {
30922
- super('Rate limit hit');
30923
- this.rateLimits = rateLimits;
30924
- }
30925
- }
30926
-
30927
- /**
30928
- * This error indicates that the transport returned an invalid status code.
30929
- */
30930
- class TransportStatusCodeError extends Error {
30931
- constructor(statusCode) {
30932
- super(`Transport returned status code ${statusCode}`);
30933
- }
30622
+ client.recordDroppedEvent = recordDroppedEvent;
30623
+ _originalRecordDroppedEvent = _originalCallback;
30934
30624
  }
30935
30625
 
30936
- /**
30937
- * Finalize and send the current replay event to Sentry
30938
- */
30939
- async function sendReplay(
30940
- replayData,
30941
- retryConfig = {
30942
- count: 0,
30943
- interval: RETRY_BASE_INTERVAL,
30944
- },
30945
- ) {
30946
- const { recordingData, options } = replayData;
30626
+ function restoreRecordDroppedEvent() {
30627
+ const client = getCurrentHub().getClient();
30947
30628
 
30948
- // short circuit if there's no events to upload (this shouldn't happen as _runFlush makes this check)
30949
- if (!recordingData.length) {
30629
+ if (!client || !_originalRecordDroppedEvent) {
30950
30630
  return;
30951
30631
  }
30952
30632
 
30953
- try {
30954
- await sendReplayRequest(replayData);
30955
- return true;
30956
- } catch (err) {
30957
- if (err instanceof RateLimitError || err instanceof TransportStatusCodeError) {
30958
- throw err;
30959
- }
30960
-
30961
- // Capture error for every failed replay
30962
- setContext('Replays', {
30963
- _retryCount: retryConfig.count,
30964
- });
30965
-
30966
- if ((typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && options._experiments && options._experiments.captureExceptions) {
30967
- captureException(err);
30968
- }
30969
-
30970
- // If an error happened here, it's likely that uploading the attachment
30971
- // failed, we'll can retry with the same events payload
30972
- if (retryConfig.count >= RETRY_MAX_COUNT) {
30973
- throw new Error(`${UNABLE_TO_SEND_REPLAY} - max retries exceeded`);
30974
- }
30975
-
30976
- // will retry in intervals of 5, 10, 30
30977
- retryConfig.interval *= ++retryConfig.count;
30978
-
30979
- return await new Promise((resolve, reject) => {
30980
- setTimeout(async () => {
30981
- try {
30982
- await sendReplay(replayData, retryConfig);
30983
- resolve(true);
30984
- } catch (err) {
30985
- reject(err);
30986
- }
30987
- }, retryConfig.interval);
30988
- });
30989
- }
30633
+ client.recordDroppedEvent = _originalRecordDroppedEvent;
30990
30634
  }
30991
30635
 
30992
30636
  /* eslint-disable max-lines */ // TODO: We might want to split this file up
30993
30637
 
30994
30638
  /**
30995
- * The main replay container class, which holds all the state and methods for recording and sending replays.
30639
+ * Returns true to return control to calling function, otherwise continue with normal batching
30996
30640
  */
30641
+
30642
+ const BASE_RETRY_INTERVAL = 5000;
30643
+ const MAX_RETRY_COUNT = 3;
30644
+
30997
30645
  class ReplayContainer {
30998
30646
  __init() {this.eventBuffer = null;}
30999
30647
 
@@ -31015,37 +30663,40 @@ class ReplayContainer {
31015
30663
 
31016
30664
  __init4() {this._performanceObserver = null;}
31017
30665
 
31018
- __init5() {this._flushLock = null;}
30666
+ __init5() {this._retryCount = 0;}
30667
+ __init6() {this._retryInterval = BASE_RETRY_INTERVAL;}
30668
+
30669
+ __init7() {this._flushLock = null;}
31019
30670
 
31020
30671
  /**
31021
30672
  * Timestamp of the last user activity. This lives across sessions.
31022
30673
  */
31023
- __init6() {this._lastActivity = new Date().getTime();}
30674
+ __init8() {this._lastActivity = new Date().getTime();}
31024
30675
 
31025
30676
  /**
31026
30677
  * Is the integration currently active?
31027
30678
  */
31028
- __init7() {this._isEnabled = false;}
30679
+ __init9() {this._isEnabled = false;}
31029
30680
 
31030
30681
  /**
31031
30682
  * Paused is a state where:
31032
30683
  * - DOM Recording is not listening at all
31033
30684
  * - Nothing will be added to event buffer (e.g. core SDK events)
31034
30685
  */
31035
- __init8() {this._isPaused = false;}
30686
+ __init10() {this._isPaused = false;}
31036
30687
 
31037
30688
  /**
31038
30689
  * Have we attached listeners to the core SDK?
31039
30690
  * Note we have to track this as there is no way to remove instrumentation handlers.
31040
30691
  */
31041
- __init9() {this._hasInitializedCoreListeners = false;}
30692
+ __init11() {this._hasInitializedCoreListeners = false;}
31042
30693
 
31043
30694
  /**
31044
30695
  * Function to stop recording
31045
30696
  */
31046
- __init10() {this._stopRecording = null;}
30697
+ __init12() {this._stopRecording = null;}
31047
30698
 
31048
- __init11() {this._context = {
30699
+ __init13() {this._context = {
31049
30700
  errorIds: new Set(),
31050
30701
  traceIds: new Set(),
31051
30702
  urls: [],
@@ -31054,16 +30705,11 @@ class ReplayContainer {
31054
30705
  initialUrl: '',
31055
30706
  };}
31056
30707
 
31057
- constructor({
31058
- options,
31059
- recordingOptions,
31060
- }
31061
-
31062
- ) {ReplayContainer.prototype.__init.call(this);ReplayContainer.prototype.__init2.call(this);ReplayContainer.prototype.__init3.call(this);ReplayContainer.prototype.__init4.call(this);ReplayContainer.prototype.__init5.call(this);ReplayContainer.prototype.__init6.call(this);ReplayContainer.prototype.__init7.call(this);ReplayContainer.prototype.__init8.call(this);ReplayContainer.prototype.__init9.call(this);ReplayContainer.prototype.__init10.call(this);ReplayContainer.prototype.__init11.call(this);ReplayContainer.prototype.__init12.call(this);ReplayContainer.prototype.__init13.call(this);ReplayContainer.prototype.__init14.call(this);ReplayContainer.prototype.__init15.call(this);ReplayContainer.prototype.__init16.call(this);ReplayContainer.prototype.__init17.call(this);
30708
+ constructor({ options, recordingOptions }) {ReplayContainer.prototype.__init.call(this);ReplayContainer.prototype.__init2.call(this);ReplayContainer.prototype.__init3.call(this);ReplayContainer.prototype.__init4.call(this);ReplayContainer.prototype.__init5.call(this);ReplayContainer.prototype.__init6.call(this);ReplayContainer.prototype.__init7.call(this);ReplayContainer.prototype.__init8.call(this);ReplayContainer.prototype.__init9.call(this);ReplayContainer.prototype.__init10.call(this);ReplayContainer.prototype.__init11.call(this);ReplayContainer.prototype.__init12.call(this);ReplayContainer.prototype.__init13.call(this);ReplayContainer.prototype.__init14.call(this);ReplayContainer.prototype.__init15.call(this);ReplayContainer.prototype.__init16.call(this);ReplayContainer.prototype.__init17.call(this);ReplayContainer.prototype.__init18.call(this);ReplayContainer.prototype.__init19.call(this);
31063
30709
  this._recordingOptions = recordingOptions;
31064
30710
  this._options = options;
31065
30711
 
31066
- this._debouncedFlush = debounce(() => this._flush(), this._options.flushMinDelay, {
30712
+ this._debouncedFlush = debounce(() => this.flush(), this._options.flushMinDelay, {
31067
30713
  maxWait: this._options.flushMaxDelay,
31068
30714
  });
31069
30715
  }
@@ -31094,14 +30740,14 @@ class ReplayContainer {
31094
30740
  * Creates or loads a session, attaches listeners to varying events (DOM,
31095
30741
  * _performanceObserver, Recording, Sentry SDK, etc)
31096
30742
  */
31097
- start() {
31098
- this._setInitialState();
30743
+ start() {
30744
+ this.setInitialState();
31099
30745
 
31100
- this._loadSession({ expiry: SESSION_IDLE_DURATION });
30746
+ this.loadSession({ expiry: SESSION_IDLE_DURATION });
31101
30747
 
31102
30748
  // If there is no session, then something bad has happened - can't continue
31103
30749
  if (!this.session) {
31104
- this._handleException(new Error('No session found'));
30750
+ this.handleException(new Error('No session found'));
31105
30751
  return;
31106
30752
  }
31107
30753
 
@@ -31110,21 +30756,23 @@ class ReplayContainer {
31110
30756
  return;
31111
30757
  }
31112
30758
 
31113
- // If session is sampled for errors, then we need to set the recordingMode
31114
- // to 'error', which will configure recording with different options.
30759
+ // Modify recording options to checkoutEveryNthSecond if
30760
+ // sampling for error replay. This is because we don't know
30761
+ // when an error will occur, so we need to keep a buffer of
30762
+ // replay events.
31115
30763
  if (this.session.sampled === 'error') {
31116
30764
  this.recordingMode = 'error';
31117
30765
  }
31118
30766
 
31119
30767
  // setup() is generally called on page load or manually - in both cases we
31120
30768
  // should treat it as an activity
31121
- this._updateSessionActivity();
30769
+ this.updateSessionActivity();
31122
30770
 
31123
30771
  this.eventBuffer = createEventBuffer({
31124
30772
  useCompression: Boolean(this._options.useCompression),
31125
30773
  });
31126
30774
 
31127
- this._addListeners();
30775
+ this.addListeners();
31128
30776
 
31129
30777
  // Need to set as enabled before we start recording, as `record()` can trigger a flush with a new checkout
31130
30778
  this._isEnabled = true;
@@ -31137,18 +30785,18 @@ class ReplayContainer {
31137
30785
  *
31138
30786
  * Note that this will cause a new DOM checkout
31139
30787
  */
31140
- startRecording() {
30788
+ startRecording() {
31141
30789
  try {
31142
30790
  this._stopRecording = record({
31143
30791
  ...this._recordingOptions,
31144
- // When running in error sampling mode, we need to overwrite `checkoutEveryNms`
30792
+ // When running in error sampling mode, we need to overwrite `checkoutEveryNth`
31145
30793
  // Without this, it would record forever, until an error happens, which we don't want
31146
30794
  // instead, we'll always keep the last 60 seconds of replay before an error happened
31147
- ...(this.recordingMode === 'error' && { checkoutEveryNms: 60000 }),
31148
- emit: this._handleRecordingEmit,
30795
+ ...(this.recordingMode === 'error' && { checkoutEveryNth: 60000 }),
30796
+ emit: this.handleRecordingEmit,
31149
30797
  });
31150
30798
  } catch (err) {
31151
- this._handleException(err);
30799
+ this.handleException(err);
31152
30800
  }
31153
30801
  }
31154
30802
 
@@ -31169,17 +30817,16 @@ class ReplayContainer {
31169
30817
  * Currently, this needs to be manually called (e.g. for tests). Sentry SDK
31170
30818
  * does not support a teardown
31171
30819
  */
31172
- stop() {
30820
+ stop() {
31173
30821
  try {
31174
30822
  (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log('[Replay] Stopping Replays');
31175
30823
  this._isEnabled = false;
31176
- this._removeListeners();
30824
+ this.removeListeners();
31177
30825
  _optionalChain([this, 'access', _8 => _8._stopRecording, 'optionalCall', _9 => _9()]);
31178
30826
  _optionalChain([this, 'access', _10 => _10.eventBuffer, 'optionalAccess', _11 => _11.destroy, 'call', _12 => _12()]);
31179
30827
  this.eventBuffer = null;
31180
- this._debouncedFlush.cancel();
31181
30828
  } catch (err) {
31182
- this._handleException(err);
30829
+ this.handleException(err);
31183
30830
  }
31184
30831
  }
31185
30832
 
@@ -31188,7 +30835,7 @@ class ReplayContainer {
31188
30835
  * This differs from stop as this only stops DOM recording, it is
31189
30836
  * not as thorough of a shutdown as `stop()`.
31190
30837
  */
31191
- pause() {
30838
+ pause() {
31192
30839
  this._isPaused = true;
31193
30840
  try {
31194
30841
  if (this._stopRecording) {
@@ -31196,7 +30843,7 @@ class ReplayContainer {
31196
30843
  this._stopRecording = undefined;
31197
30844
  }
31198
30845
  } catch (err) {
31199
- this._handleException(err);
30846
+ this.handleException(err);
31200
30847
  }
31201
30848
  }
31202
30849
 
@@ -31206,11 +30853,136 @@ class ReplayContainer {
31206
30853
  * Note that calling `startRecording()` here will cause a
31207
30854
  * new DOM checkout.`
31208
30855
  */
31209
- resume() {
30856
+ resume() {
31210
30857
  this._isPaused = false;
31211
30858
  this.startRecording();
31212
30859
  }
31213
30860
 
30861
+ /** A wrapper to conditionally capture exceptions. */
30862
+ handleException(error) {
30863
+ (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.error('[Replay]', error);
30864
+
30865
+ if ((typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && this._options._experiments && this._options._experiments.captureExceptions) {
30866
+ captureException(error);
30867
+ }
30868
+ }
30869
+
30870
+ /** for tests only */
30871
+ clearSession() {
30872
+ try {
30873
+ deleteSession();
30874
+ this.session = undefined;
30875
+ } catch (err) {
30876
+ this.handleException(err);
30877
+ }
30878
+ }
30879
+
30880
+ /**
30881
+ * Loads a session from storage, or creates a new one if it does not exist or
30882
+ * is expired.
30883
+ */
30884
+ loadSession({ expiry }) {
30885
+ const { type, session } = getSession({
30886
+ expiry,
30887
+ stickySession: Boolean(this._options.stickySession),
30888
+ currentSession: this.session,
30889
+ sessionSampleRate: this._options.sessionSampleRate,
30890
+ errorSampleRate: this._options.errorSampleRate,
30891
+ });
30892
+
30893
+ // If session was newly created (i.e. was not loaded from storage), then
30894
+ // enable flag to create the root replay
30895
+ if (type === 'new') {
30896
+ this.setInitialState();
30897
+ }
30898
+
30899
+ if (session.id !== _optionalChain([this, 'access', _13 => _13.session, 'optionalAccess', _14 => _14.id])) {
30900
+ session.previousSessionId = _optionalChain([this, 'access', _15 => _15.session, 'optionalAccess', _16 => _16.id]);
30901
+ }
30902
+
30903
+ this.session = session;
30904
+ }
30905
+
30906
+ /**
30907
+ * Capture some initial state that can change throughout the lifespan of the
30908
+ * replay. This is required because otherwise they would be captured at the
30909
+ * first flush.
30910
+ */
30911
+ setInitialState() {
30912
+ const urlPath = `${WINDOW.location.pathname}${WINDOW.location.hash}${WINDOW.location.search}`;
30913
+ const url = `${WINDOW.location.origin}${urlPath}`;
30914
+
30915
+ this.performanceEvents = [];
30916
+
30917
+ // Reset _context as well
30918
+ this.clearContext();
30919
+
30920
+ this._context.initialUrl = url;
30921
+ this._context.initialTimestamp = new Date().getTime();
30922
+ this._context.urls.push(url);
30923
+ }
30924
+
30925
+ /**
30926
+ * Adds listeners to record events for the replay
30927
+ */
30928
+ addListeners() {
30929
+ try {
30930
+ WINDOW.document.addEventListener('visibilitychange', this.handleVisibilityChange);
30931
+ WINDOW.addEventListener('blur', this.handleWindowBlur);
30932
+ WINDOW.addEventListener('focus', this.handleWindowFocus);
30933
+
30934
+ // We need to filter out dropped events captured by `addGlobalEventProcessor(this.handleGlobalEvent)` below
30935
+ overwriteRecordDroppedEvent(this._context.errorIds);
30936
+
30937
+ // There is no way to remove these listeners, so ensure they are only added once
30938
+ if (!this._hasInitializedCoreListeners) {
30939
+ // Listeners from core SDK //
30940
+ const scope = getCurrentHub().getScope();
30941
+ _optionalChain([scope, 'optionalAccess', _17 => _17.addScopeListener, 'call', _18 => _18(this.handleCoreBreadcrumbListener('scope'))]);
30942
+ addInstrumentationHandler('dom', this.handleCoreBreadcrumbListener('dom'));
30943
+ addInstrumentationHandler('fetch', handleFetchSpanListener(this));
30944
+ addInstrumentationHandler('xhr', handleXhrSpanListener(this));
30945
+ addInstrumentationHandler('history', handleHistorySpanListener(this));
30946
+
30947
+ // Tag all (non replay) events that get sent to Sentry with the current
30948
+ // replay ID so that we can reference them later in the UI
30949
+ addGlobalEventProcessor(handleGlobalEventListener(this));
30950
+
30951
+ this._hasInitializedCoreListeners = true;
30952
+ }
30953
+ } catch (err) {
30954
+ this.handleException(err);
30955
+ }
30956
+
30957
+ // _performanceObserver //
30958
+ if (!('_performanceObserver' in WINDOW)) {
30959
+ return;
30960
+ }
30961
+
30962
+ this._performanceObserver = setupPerformanceObserver(this);
30963
+ }
30964
+
30965
+ /**
30966
+ * Cleans up listeners that were created in `addListeners`
30967
+ */
30968
+ removeListeners() {
30969
+ try {
30970
+ WINDOW.document.removeEventListener('visibilitychange', this.handleVisibilityChange);
30971
+
30972
+ WINDOW.removeEventListener('blur', this.handleWindowBlur);
30973
+ WINDOW.removeEventListener('focus', this.handleWindowFocus);
30974
+
30975
+ restoreRecordDroppedEvent();
30976
+
30977
+ if (this._performanceObserver) {
30978
+ this._performanceObserver.disconnect();
30979
+ this._performanceObserver = null;
30980
+ }
30981
+ } catch (err) {
30982
+ this.handleException(err);
30983
+ }
30984
+ }
30985
+
31214
30986
  /**
31215
30987
  * We want to batch uploads of replay events. Save events only if
31216
30988
  * `<flushMinDelay>` milliseconds have elapsed since the last event
@@ -31219,9 +30991,9 @@ class ReplayContainer {
31219
30991
  * Accepts a callback to perform side-effects and returns true to stop batch
31220
30992
  * processing and hand back control to caller.
31221
30993
  */
31222
- addUpdate(cb) {
30994
+ addUpdate(cb) {
31223
30995
  // We need to always run `cb` (e.g. in the case of `this.recordingMode == 'error'`)
31224
- const cbResult = _optionalChain([cb, 'optionalCall', _13 => _13()]);
30996
+ const cbResult = _optionalChain([cb, 'optionalCall', _19 => _19()]);
31225
30997
 
31226
30998
  // If this option is turned on then we will only want to call `flush`
31227
30999
  // explicitly
@@ -31240,170 +31012,17 @@ class ReplayContainer {
31240
31012
  this._debouncedFlush();
31241
31013
  }
31242
31014
 
31243
- /**
31244
- * Updates the user activity timestamp and resumes recording. This should be
31245
- * called in an event handler for a user action that we consider as the user
31246
- * being "active" (e.g. a mouse click).
31247
- */
31248
- triggerUserActivity() {
31249
- this._updateUserActivity();
31250
-
31251
- // This case means that recording was once stopped due to inactivity.
31252
- // Ensure that recording is resumed.
31253
- if (!this._stopRecording) {
31254
- // Create a new session, otherwise when the user action is flushed, it
31255
- // will get rejected due to an expired session.
31256
- this._loadSession({ expiry: SESSION_IDLE_DURATION });
31257
-
31258
- // Note: This will cause a new DOM checkout
31259
- this.resume();
31260
- return;
31261
- }
31262
-
31263
- // Otherwise... recording was never suspended, continue as normalish
31264
- this._checkAndHandleExpiredSession();
31265
-
31266
- this._updateSessionActivity();
31267
- }
31268
-
31269
- /**
31270
- *
31271
- * Always flush via `_debouncedFlush` so that we do not have flushes triggered
31272
- * from calling both `flush` and `_debouncedFlush`. Otherwise, there could be
31273
- * cases of mulitple flushes happening closely together.
31274
- */
31275
- flushImmediate() {
31276
- this._debouncedFlush();
31277
- // `.flush` is provided by the debounced function, analogously to lodash.debounce
31278
- return this._debouncedFlush.flush() ;
31279
- }
31280
-
31281
- /** A wrapper to conditionally capture exceptions. */
31282
- _handleException(error) {
31283
- (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.error('[Replay]', error);
31284
-
31285
- if ((typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && this._options._experiments && this._options._experiments.captureExceptions) {
31286
- captureException(error);
31287
- }
31288
- }
31289
-
31290
- /**
31291
- * Loads a session from storage, or creates a new one if it does not exist or
31292
- * is expired.
31293
- */
31294
- _loadSession({ expiry }) {
31295
- const { type, session } = getSession({
31296
- expiry,
31297
- stickySession: Boolean(this._options.stickySession),
31298
- currentSession: this.session,
31299
- sessionSampleRate: this._options.sessionSampleRate,
31300
- errorSampleRate: this._options.errorSampleRate,
31301
- });
31302
-
31303
- // If session was newly created (i.e. was not loaded from storage), then
31304
- // enable flag to create the root replay
31305
- if (type === 'new') {
31306
- this._setInitialState();
31307
- }
31308
-
31309
- if (session.id !== _optionalChain([this, 'access', _14 => _14.session, 'optionalAccess', _15 => _15.id])) {
31310
- session.previousSessionId = _optionalChain([this, 'access', _16 => _16.session, 'optionalAccess', _17 => _17.id]);
31311
- }
31312
-
31313
- this.session = session;
31314
- }
31315
-
31316
- /**
31317
- * Capture some initial state that can change throughout the lifespan of the
31318
- * replay. This is required because otherwise they would be captured at the
31319
- * first flush.
31320
- */
31321
- _setInitialState() {
31322
- const urlPath = `${WINDOW.location.pathname}${WINDOW.location.hash}${WINDOW.location.search}`;
31323
- const url = `${WINDOW.location.origin}${urlPath}`;
31324
-
31325
- this.performanceEvents = [];
31326
-
31327
- // Reset _context as well
31328
- this._clearContext();
31329
-
31330
- this._context.initialUrl = url;
31331
- this._context.initialTimestamp = new Date().getTime();
31332
- this._context.urls.push(url);
31333
- }
31334
-
31335
- /**
31336
- * Adds listeners to record events for the replay
31337
- */
31338
- _addListeners() {
31339
- try {
31340
- WINDOW.document.addEventListener('visibilitychange', this._handleVisibilityChange);
31341
- WINDOW.addEventListener('blur', this._handleWindowBlur);
31342
- WINDOW.addEventListener('focus', this._handleWindowFocus);
31343
-
31344
- // We need to filter out dropped events captured by `addGlobalEventProcessor(this.handleGlobalEvent)` below
31345
- overwriteRecordDroppedEvent(this._context.errorIds);
31346
-
31347
- // There is no way to remove these listeners, so ensure they are only added once
31348
- if (!this._hasInitializedCoreListeners) {
31349
- // Listeners from core SDK //
31350
- const scope = getCurrentHub().getScope();
31351
- _optionalChain([scope, 'optionalAccess', _18 => _18.addScopeListener, 'call', _19 => _19(this._handleCoreBreadcrumbListener('scope'))]);
31352
- addInstrumentationHandler('dom', this._handleCoreBreadcrumbListener('dom'));
31353
- addInstrumentationHandler('fetch', handleFetchSpanListener(this));
31354
- addInstrumentationHandler('xhr', handleXhrSpanListener(this));
31355
- addInstrumentationHandler('history', handleHistorySpanListener(this));
31356
-
31357
- // Tag all (non replay) events that get sent to Sentry with the current
31358
- // replay ID so that we can reference them later in the UI
31359
- addGlobalEventProcessor(handleGlobalEventListener(this));
31360
-
31361
- this._hasInitializedCoreListeners = true;
31362
- }
31363
- } catch (err) {
31364
- this._handleException(err);
31365
- }
31366
-
31367
- // _performanceObserver //
31368
- if (!('_performanceObserver' in WINDOW)) {
31369
- return;
31370
- }
31371
-
31372
- this._performanceObserver = setupPerformanceObserver(this);
31373
- }
31374
-
31375
- /**
31376
- * Cleans up listeners that were created in `_addListeners`
31377
- */
31378
- _removeListeners() {
31379
- try {
31380
- WINDOW.document.removeEventListener('visibilitychange', this._handleVisibilityChange);
31381
-
31382
- WINDOW.removeEventListener('blur', this._handleWindowBlur);
31383
- WINDOW.removeEventListener('focus', this._handleWindowFocus);
31384
-
31385
- restoreRecordDroppedEvent();
31386
-
31387
- if (this._performanceObserver) {
31388
- this._performanceObserver.disconnect();
31389
- this._performanceObserver = null;
31390
- }
31391
- } catch (err) {
31392
- this._handleException(err);
31393
- }
31394
- }
31395
-
31396
31015
  /**
31397
31016
  * Handler for recording events.
31398
31017
  *
31399
31018
  * Adds to event buffer, and has varying flushing behaviors if the event was a checkout.
31400
31019
  */
31401
- __init12() {this._handleRecordingEmit = (
31020
+ __init14() {this.handleRecordingEmit = (
31402
31021
  event,
31403
31022
  isCheckout,
31404
31023
  ) => {
31405
31024
  // If this is false, it means session is expired, create and a new session and wait for checkout
31406
- if (!this._checkAndHandleExpiredSession()) {
31025
+ if (!this.checkAndHandleExpiredSession()) {
31407
31026
  (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.error('[Replay] Received replay event after session expired.');
31408
31027
 
31409
31028
  return;
@@ -31416,12 +31035,12 @@ class ReplayContainer {
31416
31035
  // checkout. This needs to happen before `addEvent()` which updates state
31417
31036
  // dependent on this reset.
31418
31037
  if (this.recordingMode === 'error' && event.type === 2) {
31419
- this._setInitialState();
31038
+ this.setInitialState();
31420
31039
  }
31421
31040
 
31422
31041
  // We need to clear existing events on a checkout, otherwise they are
31423
31042
  // incremental event updates and should be appended
31424
- void addEvent(this, event, isCheckout);
31043
+ addEvent(this, event, isCheckout);
31425
31044
 
31426
31045
  // Different behavior for full snapshots (type=2), ignore other event types
31427
31046
  // See https://github.com/rrweb-io/rrweb/blob/d8f9290ca496712aa1e7d472549480c4e7876594/packages/rrweb/src/types.ts#L16
@@ -31464,38 +31083,38 @@ class ReplayContainer {
31464
31083
  * be hidden. Likewise, moving a different window to cover the contents of the
31465
31084
  * page will also trigger a change to a hidden state.
31466
31085
  */
31467
- __init13() {this._handleVisibilityChange = () => {
31086
+ __init15() {this.handleVisibilityChange = () => {
31468
31087
  if (WINDOW.document.visibilityState === 'visible') {
31469
- this._doChangeToForegroundTasks();
31088
+ this.doChangeToForegroundTasks();
31470
31089
  } else {
31471
- this._doChangeToBackgroundTasks();
31090
+ this.doChangeToBackgroundTasks();
31472
31091
  }
31473
31092
  };}
31474
31093
 
31475
31094
  /**
31476
31095
  * Handle when page is blurred
31477
31096
  */
31478
- __init14() {this._handleWindowBlur = () => {
31097
+ __init16() {this.handleWindowBlur = () => {
31479
31098
  const breadcrumb = createBreadcrumb({
31480
31099
  category: 'ui.blur',
31481
31100
  });
31482
31101
 
31483
31102
  // Do not count blur as a user action -- it's part of the process of them
31484
31103
  // leaving the page
31485
- this._doChangeToBackgroundTasks(breadcrumb);
31104
+ this.doChangeToBackgroundTasks(breadcrumb);
31486
31105
  };}
31487
31106
 
31488
31107
  /**
31489
31108
  * Handle when page is focused
31490
31109
  */
31491
- __init15() {this._handleWindowFocus = () => {
31110
+ __init17() {this.handleWindowFocus = () => {
31492
31111
  const breadcrumb = createBreadcrumb({
31493
31112
  category: 'ui.focus',
31494
31113
  });
31495
31114
 
31496
31115
  // Do not count focus as a user action -- instead wait until they focus and
31497
31116
  // interactive with page
31498
- this._doChangeToForegroundTasks(breadcrumb);
31117
+ this.doChangeToForegroundTasks(breadcrumb);
31499
31118
  };}
31500
31119
 
31501
31120
  /**
@@ -31503,7 +31122,7 @@ class ReplayContainer {
31503
31122
  *
31504
31123
  * These events will create breadcrumb-like objects in the recording.
31505
31124
  */
31506
- __init16() {this._handleCoreBreadcrumbListener =
31125
+ __init18() {this.handleCoreBreadcrumbListener =
31507
31126
  (type) =>
31508
31127
  (handlerData) => {
31509
31128
  if (!this._isEnabled) {
@@ -31523,11 +31142,11 @@ class ReplayContainer {
31523
31142
  if (result.category === 'ui.click') {
31524
31143
  this.triggerUserActivity();
31525
31144
  } else {
31526
- this._checkAndHandleExpiredSession();
31145
+ this.checkAndHandleExpiredSession();
31527
31146
  }
31528
31147
 
31529
31148
  this.addUpdate(() => {
31530
- void addEvent(this, {
31149
+ addEvent(this, {
31531
31150
  type: EventType.Custom,
31532
31151
  // TODO: We were converting from ms to seconds for breadcrumbs, spans,
31533
31152
  // but maybe we should just keep them as milliseconds
@@ -31546,7 +31165,7 @@ class ReplayContainer {
31546
31165
  /**
31547
31166
  * Tasks to run when we consider a page to be hidden (via blurring and/or visibility)
31548
31167
  */
31549
- _doChangeToBackgroundTasks(breadcrumb) {
31168
+ doChangeToBackgroundTasks(breadcrumb) {
31550
31169
  if (!this.session) {
31551
31170
  return;
31552
31171
  }
@@ -31554,24 +31173,24 @@ class ReplayContainer {
31554
31173
  const expired = isSessionExpired(this.session, VISIBILITY_CHANGE_TIMEOUT);
31555
31174
 
31556
31175
  if (breadcrumb && !expired) {
31557
- this._createCustomBreadcrumb(breadcrumb);
31176
+ this.createCustomBreadcrumb(breadcrumb);
31558
31177
  }
31559
31178
 
31560
31179
  // Send replay when the page/tab becomes hidden. There is no reason to send
31561
31180
  // replay if it becomes visible, since no actions we care about were done
31562
31181
  // while it was hidden
31563
- this._conditionalFlush();
31182
+ this.conditionalFlush();
31564
31183
  }
31565
31184
 
31566
31185
  /**
31567
31186
  * Tasks to run when we consider a page to be visible (via focus and/or visibility)
31568
31187
  */
31569
- _doChangeToForegroundTasks(breadcrumb) {
31188
+ doChangeToForegroundTasks(breadcrumb) {
31570
31189
  if (!this.session) {
31571
31190
  return;
31572
31191
  }
31573
31192
 
31574
- const isSessionActive = this._checkAndHandleExpiredSession({
31193
+ const isSessionActive = this.checkAndHandleExpiredSession({
31575
31194
  expiry: VISIBILITY_CHANGE_TIMEOUT,
31576
31195
  });
31577
31196
 
@@ -31584,7 +31203,7 @@ class ReplayContainer {
31584
31203
  }
31585
31204
 
31586
31205
  if (breadcrumb) {
31587
- this._createCustomBreadcrumb(breadcrumb);
31206
+ this.createCustomBreadcrumb(breadcrumb);
31588
31207
  }
31589
31208
  }
31590
31209
 
@@ -31592,7 +31211,7 @@ class ReplayContainer {
31592
31211
  * Trigger rrweb to take a full snapshot which will cause this plugin to
31593
31212
  * create a new Replay event.
31594
31213
  */
31595
- _triggerFullSnapshot() {
31214
+ triggerFullSnapshot() {
31596
31215
  (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log('[Replay] Taking full rrweb snapshot');
31597
31216
  record.takeFullSnapshot(true);
31598
31217
  }
@@ -31600,26 +31219,52 @@ class ReplayContainer {
31600
31219
  /**
31601
31220
  * Update user activity (across session lifespans)
31602
31221
  */
31603
- _updateUserActivity(_lastActivity = new Date().getTime()) {
31222
+ updateUserActivity(_lastActivity = new Date().getTime()) {
31604
31223
  this._lastActivity = _lastActivity;
31605
31224
  }
31606
31225
 
31607
31226
  /**
31608
31227
  * Updates the session's last activity timestamp
31609
31228
  */
31610
- _updateSessionActivity(_lastActivity = new Date().getTime()) {
31229
+ updateSessionActivity(_lastActivity = new Date().getTime()) {
31611
31230
  if (this.session) {
31612
31231
  this.session.lastActivity = _lastActivity;
31613
31232
  this._maybeSaveSession();
31614
31233
  }
31615
31234
  }
31616
31235
 
31236
+ /**
31237
+ * Updates the user activity timestamp and resumes recording. This should be
31238
+ * called in an event handler for a user action that we consider as the user
31239
+ * being "active" (e.g. a mouse click).
31240
+ */
31241
+ triggerUserActivity() {
31242
+ this.updateUserActivity();
31243
+
31244
+ // This case means that recording was once stopped due to inactivity.
31245
+ // Ensure that recording is resumed.
31246
+ if (!this._stopRecording) {
31247
+ // Create a new session, otherwise when the user action is flushed, it
31248
+ // will get rejected due to an expired session.
31249
+ this.loadSession({ expiry: SESSION_IDLE_DURATION });
31250
+
31251
+ // Note: This will cause a new DOM checkout
31252
+ this.resume();
31253
+ return;
31254
+ }
31255
+
31256
+ // Otherwise... recording was never suspended, continue as normalish
31257
+ this.checkAndHandleExpiredSession();
31258
+
31259
+ this.updateSessionActivity();
31260
+ }
31261
+
31617
31262
  /**
31618
31263
  * Helper to create (and buffer) a replay breadcrumb from a core SDK breadcrumb
31619
31264
  */
31620
- _createCustomBreadcrumb(breadcrumb) {
31265
+ createCustomBreadcrumb(breadcrumb) {
31621
31266
  this.addUpdate(() => {
31622
- void addEvent(this, {
31267
+ addEvent(this, {
31623
31268
  type: EventType.Custom,
31624
31269
  timestamp: breadcrumb.timestamp || 0,
31625
31270
  data: {
@@ -31634,12 +31279,12 @@ class ReplayContainer {
31634
31279
  * Observed performance events are added to `this.performanceEvents`. These
31635
31280
  * are included in the replay event before it is finished and sent to Sentry.
31636
31281
  */
31637
- _addPerformanceEntries() {
31282
+ addPerformanceEntries() {
31638
31283
  // Copy and reset entries before processing
31639
31284
  const entries = [...this.performanceEvents];
31640
31285
  this.performanceEvents = [];
31641
31286
 
31642
- return Promise.all(createPerformanceSpans(this, createPerformanceEntries(entries)));
31287
+ createPerformanceSpans(this, createPerformanceEntries(entries));
31643
31288
  }
31644
31289
 
31645
31290
  /**
@@ -31649,7 +31294,7 @@ class ReplayContainer {
31649
31294
  *
31650
31295
  * Returns true if session is not expired, false otherwise.
31651
31296
  */
31652
- _checkAndHandleExpiredSession({ expiry = SESSION_IDLE_DURATION } = {}) {
31297
+ checkAndHandleExpiredSession({ expiry = SESSION_IDLE_DURATION } = {}) {
31653
31298
  const oldSessionId = _optionalChain([this, 'access', _22 => _22.session, 'optionalAccess', _23 => _23.id]);
31654
31299
 
31655
31300
  // Prevent starting a new session if the last user activity is older than
@@ -31664,7 +31309,7 @@ class ReplayContainer {
31664
31309
 
31665
31310
  // --- There is recent user activity --- //
31666
31311
  // This will create a new session if expired, based on expiry length
31667
- this._loadSession({ expiry });
31312
+ this.loadSession({ expiry });
31668
31313
 
31669
31314
  // Session was expired if session ids do not match
31670
31315
  const expired = oldSessionId !== _optionalChain([this, 'access', _24 => _24.session, 'optionalAccess', _25 => _25.id]);
@@ -31674,7 +31319,7 @@ class ReplayContainer {
31674
31319
  }
31675
31320
 
31676
31321
  // Session is expired, trigger a full snapshot (which will create a new session)
31677
- this._triggerFullSnapshot();
31322
+ this.triggerFullSnapshot();
31678
31323
 
31679
31324
  return false;
31680
31325
  }
@@ -31682,7 +31327,7 @@ class ReplayContainer {
31682
31327
  /**
31683
31328
  * Only flush if `this.recordingMode === 'session'`
31684
31329
  */
31685
- _conditionalFlush() {
31330
+ conditionalFlush() {
31686
31331
  if (this.recordingMode === 'error') {
31687
31332
  return;
31688
31333
  }
@@ -31693,7 +31338,7 @@ class ReplayContainer {
31693
31338
  /**
31694
31339
  * Clear _context
31695
31340
  */
31696
- _clearContext() {
31341
+ clearContext() {
31697
31342
  // XXX: `initialTimestamp` and `initialUrl` do not get cleared
31698
31343
  this._context.errorIds.clear();
31699
31344
  this._context.traceIds.clear();
@@ -31704,7 +31349,7 @@ class ReplayContainer {
31704
31349
  /**
31705
31350
  * Return and clear _context
31706
31351
  */
31707
- _popEventContext() {
31352
+ popEventContext() {
31708
31353
  if (this._context.earliestEvent && this._context.earliestEvent < this._context.initialTimestamp) {
31709
31354
  this._context.initialTimestamp = this._context.earliestEvent;
31710
31355
  }
@@ -31717,7 +31362,7 @@ class ReplayContainer {
31717
31362
  urls: this._context.urls,
31718
31363
  };
31719
31364
 
31720
- this._clearContext();
31365
+ this.clearContext();
31721
31366
 
31722
31367
  return _context;
31723
31368
  }
@@ -31730,15 +31375,15 @@ class ReplayContainer {
31730
31375
  *
31731
31376
  * Should never be called directly, only by `flush`
31732
31377
  */
31733
- async _runFlush() {
31378
+ async runFlush() {
31734
31379
  if (!this.session) {
31735
31380
  (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.error('[Replay] No session found to flush.');
31736
31381
  return;
31737
31382
  }
31738
31383
 
31739
- await this._addPerformanceEntries();
31384
+ await this.addPerformanceEntries();
31740
31385
 
31741
- if (!_optionalChain([this, 'access', _26 => _26.eventBuffer, 'optionalAccess', _27 => _27.pendingLength])) {
31386
+ if (!_optionalChain([this, 'access', _26 => _26.eventBuffer, 'optionalAccess', _27 => _27.length])) {
31742
31387
  return;
31743
31388
  }
31744
31389
 
@@ -31752,32 +31397,20 @@ class ReplayContainer {
31752
31397
  // NOTE: Copy values from instance members, as it's possible they could
31753
31398
  // change before the flush finishes.
31754
31399
  const replayId = this.session.id;
31755
- const eventContext = this._popEventContext();
31400
+ const eventContext = this.popEventContext();
31756
31401
  // Always increment segmentId regardless of outcome of sending replay
31757
31402
  const segmentId = this.session.segmentId++;
31758
31403
  this._maybeSaveSession();
31759
31404
 
31760
- await sendReplay({
31405
+ await this.sendReplay({
31761
31406
  replayId,
31762
- recordingData,
31407
+ events: recordingData,
31763
31408
  segmentId,
31764
31409
  includeReplayStartTimestamp: segmentId === 0,
31765
31410
  eventContext,
31766
- session: this.session,
31767
- options: this.getOptions(),
31768
- timestamp: new Date().getTime(),
31769
31411
  });
31770
31412
  } catch (err) {
31771
- this._handleException(err);
31772
-
31773
- if (err instanceof RateLimitError) {
31774
- this._handleRateLimit(err.rateLimits);
31775
- return;
31776
- }
31777
-
31778
- // This means we retried 3 times, and all of them failed
31779
- // In this case, we want to completely stop the replay - otherwise, we may get inconsistent segments
31780
- this.stop();
31413
+ this.handleException(err);
31781
31414
  }
31782
31415
  }
31783
31416
 
@@ -31785,13 +31418,14 @@ class ReplayContainer {
31785
31418
  * Flush recording data to Sentry. Creates a lock so that only a single flush
31786
31419
  * can be active at a time. Do not call this directly.
31787
31420
  */
31788
- __init17() {this._flush = async () => {
31421
+ __init19() {this.flush = async () => {
31789
31422
  if (!this._isEnabled) {
31790
- // This can happen if e.g. the replay was stopped because of exceeding the retry limit
31423
+ // This is just a precaution, there should be no listeners that would
31424
+ // cause a flush.
31791
31425
  return;
31792
31426
  }
31793
31427
 
31794
- if (!this._checkAndHandleExpiredSession()) {
31428
+ if (!this.checkAndHandleExpiredSession()) {
31795
31429
  (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.error('[Replay] Attempting to finish replay event after session expired.');
31796
31430
  return;
31797
31431
  }
@@ -31804,16 +31438,16 @@ class ReplayContainer {
31804
31438
  // A flush is about to happen, cancel any queued flushes
31805
31439
  _optionalChain([this, 'access', _30 => _30._debouncedFlush, 'optionalAccess', _31 => _31.cancel, 'call', _32 => _32()]);
31806
31440
 
31807
- // this._flushLock acts as a lock so that future calls to `_flush()`
31441
+ // this._flushLock acts as a lock so that future calls to `flush()`
31808
31442
  // will be blocked until this promise resolves
31809
31443
  if (!this._flushLock) {
31810
- this._flushLock = this._runFlush();
31444
+ this._flushLock = this.runFlush();
31811
31445
  await this._flushLock;
31812
31446
  this._flushLock = null;
31813
31447
  return;
31814
31448
  }
31815
31449
 
31816
- // Wait for previous flush to finish, then call the debounced `_flush()`.
31450
+ // Wait for previous flush to finish, then call the debounced `flush()`.
31817
31451
  // It's possible there are other flush requests queued and waiting for it
31818
31452
  // to resolve. We want to reduce all outstanding requests (as well as any
31819
31453
  // new flush requests that occur within a second of the locked flush
@@ -31828,59 +31462,205 @@ class ReplayContainer {
31828
31462
  }
31829
31463
  };}
31830
31464
 
31831
- /** Save the session, if it is sticky */
31832
- _maybeSaveSession() {
31833
- if (this.session && this._options.stickySession) {
31834
- saveSession(this.session);
31465
+ /**
31466
+ *
31467
+ * Always flush via `_debouncedFlush` so that we do not have flushes triggered
31468
+ * from calling both `flush` and `_debouncedFlush`. Otherwise, there could be
31469
+ * cases of mulitple flushes happening closely together.
31470
+ */
31471
+ flushImmediate() {
31472
+ this._debouncedFlush();
31473
+ // `.flush` is provided by the debounced function, analogously to lodash.debounce
31474
+ return this._debouncedFlush.flush() ;
31475
+ }
31476
+
31477
+ /**
31478
+ * Send replay attachment using `fetch()`
31479
+ */
31480
+ async sendReplayRequest({
31481
+ events,
31482
+ replayId,
31483
+ segmentId: segment_id,
31484
+ includeReplayStartTimestamp,
31485
+ eventContext,
31486
+ }) {
31487
+ const payloadWithSequence = createPayload({
31488
+ events,
31489
+ headers: {
31490
+ segment_id,
31491
+ },
31492
+ });
31493
+
31494
+ const { urls, errorIds, traceIds, initialTimestamp } = eventContext;
31495
+
31496
+ const currentTimestamp = new Date().getTime();
31497
+
31498
+ const hub = getCurrentHub();
31499
+ const client = hub.getClient();
31500
+ const scope = hub.getScope();
31501
+ const transport = client && client.getTransport();
31502
+ const dsn = _optionalChain([client, 'optionalAccess', _33 => _33.getDsn, 'call', _34 => _34()]);
31503
+
31504
+ if (!client || !scope || !transport || !dsn) {
31505
+ return;
31835
31506
  }
31507
+
31508
+ const baseEvent = {
31509
+ // @ts-ignore private api
31510
+ type: REPLAY_EVENT_NAME,
31511
+ ...(includeReplayStartTimestamp ? { replay_start_timestamp: initialTimestamp / 1000 } : {}),
31512
+ timestamp: currentTimestamp / 1000,
31513
+ error_ids: errorIds,
31514
+ trace_ids: traceIds,
31515
+ urls,
31516
+ replay_id: replayId,
31517
+ segment_id,
31518
+ };
31519
+
31520
+ const replayEvent = await getReplayEvent({ scope, client, replayId, event: baseEvent });
31521
+
31522
+ if (!replayEvent) {
31523
+ // Taken from baseclient's `_processEvent` method, where this is handled for errors/transactions
31524
+ client.recordDroppedEvent('event_processor', 'replay_event', baseEvent);
31525
+ (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log('An event processor returned `null`, will not send event.');
31526
+ return;
31527
+ }
31528
+
31529
+ replayEvent.tags = {
31530
+ ...replayEvent.tags,
31531
+ sessionSampleRate: this._options.sessionSampleRate,
31532
+ errorSampleRate: this._options.errorSampleRate,
31533
+ replayType: _optionalChain([this, 'access', _35 => _35.session, 'optionalAccess', _36 => _36.sampled]),
31534
+ };
31535
+
31536
+ /*
31537
+ For reference, the fully built event looks something like this:
31538
+ {
31539
+ "type": "replay_event",
31540
+ "timestamp": 1670837008.634,
31541
+ "error_ids": [
31542
+ "errorId"
31543
+ ],
31544
+ "trace_ids": [
31545
+ "traceId"
31546
+ ],
31547
+ "urls": [
31548
+ "https://example.com"
31549
+ ],
31550
+ "replay_id": "eventId",
31551
+ "segment_id": 3,
31552
+ "platform": "javascript",
31553
+ "event_id": "eventId",
31554
+ "environment": "production",
31555
+ "sdk": {
31556
+ "integrations": [
31557
+ "BrowserTracing",
31558
+ "Replay"
31559
+ ],
31560
+ "name": "sentry.javascript.browser",
31561
+ "version": "7.25.0"
31562
+ },
31563
+ "sdkProcessingMetadata": {},
31564
+ "tags": {
31565
+ "sessionSampleRate": 1,
31566
+ "errorSampleRate": 0,
31567
+ "replayType": "error"
31568
+ }
31569
+ }
31570
+ */
31571
+
31572
+ const envelope = createReplayEnvelope(replayEvent, payloadWithSequence, dsn, client.getOptions().tunnel);
31573
+
31574
+ try {
31575
+ return await transport.send(envelope);
31576
+ } catch (e) {
31577
+ throw new Error(UNABLE_TO_SEND_REPLAY);
31578
+ }
31579
+ }
31580
+
31581
+ resetRetries() {
31582
+ this._retryCount = 0;
31583
+ this._retryInterval = BASE_RETRY_INTERVAL;
31836
31584
  }
31837
31585
 
31838
31586
  /**
31839
- * Pauses the replay and resumes it after the rate-limit duration is over.
31587
+ * Finalize and send the current replay event to Sentry
31840
31588
  */
31841
- _handleRateLimit(rateLimits) {
31842
- // in case recording is already paused, we don't need to do anything, as we might have already paused because of a
31843
- // rate limit
31844
- if (this.isPaused()) {
31589
+ async sendReplay({
31590
+ replayId,
31591
+ events,
31592
+ segmentId,
31593
+ includeReplayStartTimestamp,
31594
+ eventContext,
31595
+ }) {
31596
+ // short circuit if there's no events to upload (this shouldn't happen as runFlush makes this check)
31597
+ if (!events.length) {
31845
31598
  return;
31846
31599
  }
31847
31600
 
31848
- const rateLimitEnd = disabledUntil(rateLimits, 'replay');
31849
- const rateLimitDuration = rateLimitEnd - Date.now();
31601
+ try {
31602
+ await this.sendReplayRequest({
31603
+ events,
31604
+ replayId,
31605
+ segmentId,
31606
+ includeReplayStartTimestamp,
31607
+ eventContext,
31608
+ });
31609
+ this.resetRetries();
31610
+ return true;
31611
+ } catch (err) {
31612
+ // Capture error for every failed replay
31613
+ setContext('Replays', {
31614
+ _retryCount: this._retryCount,
31615
+ });
31616
+ this.handleException(err);
31617
+
31618
+ // If an error happened here, it's likely that uploading the attachment
31619
+ // failed, we'll can retry with the same events payload
31620
+ if (this._retryCount >= MAX_RETRY_COUNT) {
31621
+ throw new Error(`${UNABLE_TO_SEND_REPLAY} - max retries exceeded`);
31622
+ }
31850
31623
 
31851
- if (rateLimitDuration > 0) {
31852
- (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.warn('[Replay]', `Rate limit hit, pausing replay for ${rateLimitDuration}ms`);
31853
- this.pause();
31854
- this._debouncedFlush.cancel();
31624
+ this._retryCount = this._retryCount + 1;
31625
+ // will retry in intervals of 5, 10, 30
31626
+ this._retryInterval = this._retryCount * this._retryInterval;
31627
+
31628
+ return await new Promise((resolve, reject) => {
31629
+ setTimeout(async () => {
31630
+ try {
31631
+ await this.sendReplay({
31632
+ replayId,
31633
+ events,
31634
+ segmentId,
31635
+ includeReplayStartTimestamp,
31636
+ eventContext,
31637
+ });
31638
+ resolve(true);
31639
+ } catch (err) {
31640
+ reject(err);
31641
+ }
31642
+ }, this._retryInterval);
31643
+ });
31644
+ }
31645
+ }
31855
31646
 
31856
- setTimeout(() => {
31857
- (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.info('[Replay]', 'Resuming replay after rate limit');
31858
- this.resume();
31859
- }, rateLimitDuration);
31647
+ /** Save the session, if it is sticky */
31648
+ _maybeSaveSession() {
31649
+ if (this.session && this._options.stickySession) {
31650
+ saveSession(this.session);
31860
31651
  }
31861
31652
  }
31862
31653
  }
31863
31654
 
31864
- /**
31865
- * Returns true if we are in the browser.
31866
- */
31867
31655
  function isBrowser() {
31868
31656
  // eslint-disable-next-line no-restricted-globals
31869
- return typeof window !== 'undefined' && (!isNodeEnv() || isElectronNodeRenderer());
31870
- }
31871
-
31872
- // Electron renderers with nodeIntegration enabled are detected as Node.js so we specifically test for them
31873
- function isElectronNodeRenderer() {
31874
- return typeof process !== 'undefined' && (process ).type === 'renderer';
31657
+ return typeof window !== 'undefined' && !isNodeEnv();
31875
31658
  }
31876
31659
 
31877
31660
  const MEDIA_SELECTORS = 'img,image,svg,path,rect,area,video,object,picture,embed,map,audio';
31878
31661
 
31879
31662
  let _initialized = false;
31880
31663
 
31881
- /**
31882
- * The main replay integration class, to be passed to `init({ integrations: [] })`.
31883
- */
31884
31664
  class Replay {
31885
31665
  /**
31886
31666
  * @inheritDoc
@@ -31896,7 +31676,15 @@ class Replay {
31896
31676
  * Options to pass to `rrweb.record()`
31897
31677
  */
31898
31678
 
31899
- constructor({
31679
+ get _isInitialized() {
31680
+ return _initialized;
31681
+ }
31682
+
31683
+ set _isInitialized(value) {
31684
+ _initialized = value;
31685
+ }
31686
+
31687
+ constructor({
31900
31688
  flushMinDelay = DEFAULT_FLUSH_MIN_DELAY,
31901
31689
  flushMaxDelay = DEFAULT_FLUSH_MAX_DELAY,
31902
31690
  initialFlushDelay = INITIAL_FLUSH_DELAY,
@@ -31913,19 +31701,19 @@ class Replay {
31913
31701
  ignoreClass = 'sentry-ignore',
31914
31702
  maskTextClass = 'sentry-mask',
31915
31703
  blockSelector = '[data-sentry-block]',
31916
- ..._recordingOptions
31704
+ ...recordingOptions
31917
31705
  } = {}) {Replay.prototype.__init.call(this);
31918
- this._recordingOptions = {
31706
+ this.recordingOptions = {
31919
31707
  maskAllInputs,
31920
31708
  blockClass,
31921
31709
  ignoreClass,
31922
31710
  maskTextClass,
31923
31711
  maskTextSelector,
31924
31712
  blockSelector,
31925
- ..._recordingOptions,
31713
+ ...recordingOptions,
31926
31714
  };
31927
31715
 
31928
- this._options = {
31716
+ this.options = {
31929
31717
  flushMinDelay,
31930
31718
  flushMaxDelay,
31931
31719
  stickySession,
@@ -31947,7 +31735,7 @@ Instead, configure \`replaysSessionSampleRate\` directly in the SDK init options
31947
31735
  Sentry.init({ replaysSessionSampleRate: ${sessionSampleRate} })`,
31948
31736
  );
31949
31737
 
31950
- this._options.sessionSampleRate = sessionSampleRate;
31738
+ this.options.sessionSampleRate = sessionSampleRate;
31951
31739
  }
31952
31740
 
31953
31741
  if (typeof errorSampleRate === 'number') {
@@ -31959,41 +31747,31 @@ Instead, configure \`replaysOnErrorSampleRate\` directly in the SDK init options
31959
31747
  Sentry.init({ replaysOnErrorSampleRate: ${errorSampleRate} })`,
31960
31748
  );
31961
31749
 
31962
- this._options.errorSampleRate = errorSampleRate;
31750
+ this.options.errorSampleRate = errorSampleRate;
31963
31751
  }
31964
31752
 
31965
- if (this._options.maskAllText) {
31753
+ if (this.options.maskAllText) {
31966
31754
  // `maskAllText` is a more user friendly option to configure
31967
31755
  // `maskTextSelector`. This means that all nodes will have their text
31968
31756
  // content masked.
31969
- this._recordingOptions.maskTextSelector = MASK_ALL_TEXT_SELECTOR;
31757
+ this.recordingOptions.maskTextSelector = MASK_ALL_TEXT_SELECTOR;
31970
31758
  }
31971
31759
 
31972
- if (this._options.blockAllMedia) {
31760
+ if (this.options.blockAllMedia) {
31973
31761
  // `blockAllMedia` is a more user friendly option to configure blocking
31974
31762
  // embedded media elements
31975
- this._recordingOptions.blockSelector = !this._recordingOptions.blockSelector
31763
+ this.recordingOptions.blockSelector = !this.recordingOptions.blockSelector
31976
31764
  ? MEDIA_SELECTORS
31977
- : `${this._recordingOptions.blockSelector},${MEDIA_SELECTORS}`;
31765
+ : `${this.recordingOptions.blockSelector},${MEDIA_SELECTORS}`;
31978
31766
  }
31979
31767
 
31980
- if (this._isInitialized && isBrowser()) {
31768
+ if (isBrowser() && this._isInitialized) {
31981
31769
  throw new Error('Multiple Sentry Session Replay instances are not supported');
31982
31770
  }
31983
31771
 
31984
31772
  this._isInitialized = true;
31985
31773
  }
31986
31774
 
31987
- /** If replay has already been initialized */
31988
- get _isInitialized() {
31989
- return _initialized;
31990
- }
31991
-
31992
- /** Update _isInitialized */
31993
- set _isInitialized(value) {
31994
- _initialized = value;
31995
- }
31996
-
31997
31775
  /**
31998
31776
  * We previously used to create a transaction in `setupOnce` and it would
31999
31777
  * potentially create a transaction before some native SDK integrations have run
@@ -32004,7 +31782,7 @@ Sentry.init({ replaysOnErrorSampleRate: ${errorSampleRate} })`,
32004
31782
  * global event processors to finish. This is no longer needed, but keeping it
32005
31783
  * here to avoid any future issues.
32006
31784
  */
32007
- setupOnce() {
31785
+ setupOnce() {
32008
31786
  if (!isBrowser()) {
32009
31787
  return;
32010
31788
  }
@@ -32021,7 +31799,7 @@ Sentry.init({ replaysOnErrorSampleRate: ${errorSampleRate} })`,
32021
31799
  * Creates or loads a session, attaches listeners to varying events (DOM,
32022
31800
  * PerformanceObserver, Recording, Sentry SDK, etc)
32023
31801
  */
32024
- start() {
31802
+ start() {
32025
31803
  if (!this._replay) {
32026
31804
  return;
32027
31805
  }
@@ -32033,7 +31811,7 @@ Sentry.init({ replaysOnErrorSampleRate: ${errorSampleRate} })`,
32033
31811
  * Currently, this needs to be manually called (e.g. for tests). Sentry SDK
32034
31812
  * does not support a teardown
32035
31813
  */
32036
- stop() {
31814
+ stop() {
32037
31815
  if (!this._replay) {
32038
31816
  return;
32039
31817
  }
@@ -32041,14 +31819,13 @@ Sentry.init({ replaysOnErrorSampleRate: ${errorSampleRate} })`,
32041
31819
  this._replay.stop();
32042
31820
  }
32043
31821
 
32044
- /** Setup the integration. */
32045
31822
  _setup() {
32046
31823
  // Client is not available in constructor, so we need to wait until setupOnce
32047
31824
  this._loadReplayOptionsFromClient();
32048
31825
 
32049
31826
  this._replay = new ReplayContainer({
32050
- options: this._options,
32051
- recordingOptions: this._recordingOptions,
31827
+ options: this.options,
31828
+ recordingOptions: this.recordingOptions,
32052
31829
  });
32053
31830
  }
32054
31831
 
@@ -32058,11 +31835,11 @@ Sentry.init({ replaysOnErrorSampleRate: ${errorSampleRate} })`,
32058
31835
  const opt = client && (client.getOptions() );
32059
31836
 
32060
31837
  if (opt && typeof opt.replaysSessionSampleRate === 'number') {
32061
- this._options.sessionSampleRate = opt.replaysSessionSampleRate;
31838
+ this.options.sessionSampleRate = opt.replaysSessionSampleRate;
32062
31839
  }
32063
31840
 
32064
31841
  if (opt && typeof opt.replaysOnErrorSampleRate === 'number') {
32065
- this._options.errorSampleRate = opt.replaysOnErrorSampleRate;
31842
+ this.options.errorSampleRate = opt.replaysOnErrorSampleRate;
32066
31843
  }
32067
31844
  }
32068
31845
  } Replay.__initStatic();
@@ -45606,7 +45383,7 @@ const accWidgetMachine = createMachine({
45606
45383
  [GUARDS$2.IS_DISCONNECTED]: ({ isConnected }) => !isConnected,
45607
45384
  [GUARDS$2.CAN_START_INTERVIEW]: ({ checksState }) => checksState.camera === CAMERA_STATES.READY && checksState.microphone === MICROPHONE_STATES.READY && [INTERNET_STATES.CONNECTED, INTERNET_STATES.SLOW_CONNECTION].includes(checksState.internet),
45608
45385
  [GUARDS$2.ARE_ALL_QUESTIONS_UPLOADED]: ({ widgetConfig }) => { var _a, _b; return !!((_b = (_a = widgetConfig.video) === null || _a === void 0 ? void 0 : _a.videos) === null || _b === void 0 ? void 0 : _b.every((video) => video.uploaded)); },
45609
- [GUARDS$2.SHOULD_SHOW_WELCOME]: ({ widgetConfig }) => !!widgetConfig.config.introVideo,
45386
+ [GUARDS$2.SHOULD_SHOW_WELCOME]: ({ widgetConfig }) => !!widgetConfig.config.introVideo || !!widgetConfig.config.welcomeTitle || !!widgetConfig.config.welcomeText,
45610
45387
  [GUARDS$2.IS_NO_SOUND_ERROR]: (_, { data }) => data.code === MICROPHONE_NO_SOUND_ERROR_CODE,
45611
45388
  [GUARDS$2.IS_VIDEO_CORRUPTED]: (_, { data }) => !data.size,
45612
45389
  [GUARDS$2.IS_AUDIO_ERROR]: (_, { data }) => data.type === TYPES_EXPLANATION.AUDIO || data.type === TYPES_EXPLANATION.VIDEO_AUDIO,
@@ -45675,14 +45452,19 @@ const WelcomePage = ({ introVideo, welcomeTitle = t$1('welcome.title'), welcomeT
45675
45452
  const textRefCb = useCallback((node) => {
45676
45453
  setShouldShowToggle((node === null || node === void 0 ? void 0 : node.scrollHeight) > (node === null || node === void 0 ? void 0 : node.offsetHeight));
45677
45454
  }, []);
45455
+ const innerClassNames = classNames({
45456
+ 'myinterview-widget-inner': true,
45457
+ 'myinterview-widget-inner--welcome-page-state': true,
45458
+ 'myinterview-widget-inner--no-snap': true,
45459
+ 'myinterview-widget-inner--welcome-hidden': !introVideo,
45460
+ });
45678
45461
  const welcomeTextClassNames = classNames({
45679
45462
  'myinterview-widget-welcome-page__text': true,
45680
45463
  'myinterview-widget--rtl-support': true,
45681
45464
  'myinterview-widget-welcome-page__text--closed': !isTextOpened,
45682
45465
  });
45683
45466
  return (React__default.createElement(React__default.Fragment, null,
45684
- React__default.createElement("div", { className: "myinterview-widget-inner myinterview-widget-inner--welcome-page-state myinterview-widget-inner--no-snap" },
45685
- React__default.createElement(VideoQuestion, { src: introVideo, isThinkingTime: false, onVideoEnds: () => { }, isWidgetMinimized: isWidgetMinimized })),
45467
+ React__default.createElement("div", { className: innerClassNames }, introVideo && React__default.createElement(VideoQuestion, { src: introVideo, isThinkingTime: false, onVideoEnds: () => { }, isWidgetMinimized: isWidgetMinimized })),
45686
45468
  React__default.createElement("div", { className: "myinterview-widget-outer background-color--white myinterview-widget-outer--no-snap" },
45687
45469
  React__default.createElement(Header, { logo: logo || '', companyName: company || '', jobTitle: title || '', forDesktopLayout: true }),
45688
45470
  React__default.createElement("div", { className: "myinterview-widget-welcome-page myinterview-widget-scroll-indicator" },
@@ -45818,7 +45600,7 @@ const Main = ({ widgetConfig, setShouldShowWaterMark, myinterviewRef, isWidgetMi
45818
45600
  isMobile && (React__default.createElement(SliderModal, { isOpen: isSliderModalOpen, onClose: () => setIsSliderModalOpen(false), onRetry: isSetupState ? onRecorderRetry : onReInitRecorder }))));
45819
45601
  };
45820
45602
 
45821
- var css_248z = "@import url(\"https://fonts.googleapis.com/css2?family=Nunito+Sans:wght@400;600;700&display=swap\");:host,:root,html[data-theme=light]{--color-primary:#5aa4f5;--color-secondary:#5ed0bc;--color-premium:#fac918;--color-special:#6690ff;--color-neutral-10:#f2f2f2;--color-neutral-20:#e6e6e6;--color-neutral-30:#ccc;--color-neutral-40:#aaa;--color-neutral-50:#8d8d8d;--color-neutral-60:#777;--color-neutral-70:#444;--color-neutral-90:#404852;--color-white:#fff;--color-black:#000;--color-success:#5ed0bc;--color-warning:#fac918;--color-error:#f25f5b;--color-info:#404852;--color-malibu:linear-gradient(50.24deg,#135 -146.43%,#557ede -0.68%,#6690ff 75.97%)}html[data-theme=dark]{--color-primary:#5aa4f5;--color-secondary:#5ed0bc;--color-premium:#fac918;--color-special:#6690ff;--color-neutral-10:#f2f2f2;--color-neutral-20:#e6e6e6;--color-neutral-30:#ccc;--color-neutral-40:#aaa;--color-neutral-50:#8d8d8d;--color-neutral-60:#777;--color-neutral-70:#444;--color-neutral-90:#404852;--color-white:#222;--color-black:#ddd;--color-success:#5ed0bc;--color-warning:#fac918;--color-error:#f25f5b;--color-info:#404852;--color-malibu:linear-gradient(135deg,#51beff,#6690ff)}.color--primary{color:var(--color-primary)}.background-color--primary{background-color:var(--color-primary)}.border-color--primary{border-color:var(--color-primary)}.color--secondary{color:var(--color-secondary)}.background-color--secondary{background-color:var(--color-secondary)}.border-color--secondary{border-color:var(--color-secondary)}.color--premium{color:var(--color-premium)}.background-color--premium{background-color:var(--color-premium)}.border-color--premium{border-color:var(--color-premium)}.color--special{color:var(--color-special)}.background-color--special{background-color:var(--color-special)}.border-color--special{border-color:var(--color-special)}.color--neutral-10{color:var(--color-neutral-10)}.background-color--neutral-10{background-color:var(--color-neutral-10)}.border-color--neutral-10{border-color:var(--color-neutral-10)}.color--neutral-20{color:var(--color-neutral-20)}.background-color--neutral-20{background-color:var(--color-neutral-20)}.border-color--neutral-20{border-color:var(--color-neutral-20)}.color--neutral-30{color:var(--color-neutral-30)}.background-color--neutral-30{background-color:var(--color-neutral-30)}.border-color--neutral-30{border-color:var(--color-neutral-30)}.color--neutral-40{color:var(--color-neutral-40)}.background-color--neutral-40{background-color:var(--color-neutral-40)}.border-color--neutral-40{border-color:var(--color-neutral-40)}.color--neutral-50{color:var(--color-neutral-50)}.background-color--neutral-50{background-color:var(--color-neutral-50)}.border-color--neutral-50{border-color:var(--color-neutral-50)}.color--neutral-60{color:var(--color-neutral-60)}.background-color--neutral-60{background-color:var(--color-neutral-60)}.border-color--neutral-60{border-color:var(--color-neutral-60)}.color--neutral-70{color:var(--color-neutral-70)}.background-color--neutral-70{background-color:var(--color-neutral-70)}.border-color--neutral-70{border-color:var(--color-neutral-70)}.color--neutral-90{color:var(--color-neutral-90)}.background-color--neutral-90{background-color:var(--color-neutral-90)}.border-color--neutral-90{border-color:var(--color-neutral-90)}.color--white{color:var(--color-white)}.background-color--white{background-color:var(--color-white)}.border-color--white{border-color:var(--color-white)}.color--black{color:var(--color-black)}.background-color--black{background-color:var(--color-black)}.border-color--black{border-color:var(--color-black)}.color--success{color:var(--color-success)}.background-color--success{background-color:var(--color-success)}.border-color--success{border-color:var(--color-success)}.color--warning{color:var(--color-warning)}.background-color--warning{background-color:var(--color-warning)}.border-color--warning{border-color:var(--color-warning)}.color--error{color:var(--color-error)}.background-color--error{background-color:var(--color-error)}.border-color--error{border-color:var(--color-error)}.color--info{color:var(--color-info)}.background-color--info{background-color:var(--color-info)}.border-color--info{border-color:var(--color-info)}.background-color--malibu{background:var(--color-malibu)}*{box-sizing:border-box;font-family:Nunito Sans,sans-serif;margin:0;outline:none;padding:0}body{background-color:var(--color-white)}@keyframes react-loading-skeleton{to{transform:translateX(100%)}}.react-loading-skeleton{--base-color:#ebebeb;--highlight-color:#f5f5f5;--animation-duration:1.5s;--animation-direction:normal;--pseudo-element-display:block;background-color:var(--base-color);border-radius:.25rem;display:inline-flex;line-height:1;overflow:hidden;position:relative;width:100%;z-index:1}.react-loading-skeleton:after{animation-direction:var(--animation-direction);animation-duration:var(--animation-duration);animation-iteration-count:infinite;animation-name:react-loading-skeleton;animation-timing-function:ease-in-out;background-image:linear-gradient(90deg,var(--base-color),var(--highlight-color),var(--base-color));background-repeat:no-repeat;content:\" \";display:var(--pseudo-element-display);height:100%;left:0;position:absolute;right:0;top:0;transform:translateX(-100%)}.myinterview-button{border:none;border-radius:10px;cursor:pointer;font-weight:700;height:45px;letter-spacing:1px}.myinterview-button:disabled{cursor:unset;opacity:.6;pointer-events:none}.myinterview-button--small{font-size:10px;height:35px;min-width:100px;padding:0 20px}.myinterview-button--medium{font-size:12px;height:45px;min-width:150px;padding:0 30px}.myinterview-button--large{font-size:16px;height:65px;min-width:180px;padding:0 45px}.dropdown{align-items:center;cursor:pointer;display:flex;font-size:14px;justify-content:space-between;padding:15px;white-space:nowrap}.dropdown--standalone{border:.5px solid var(--color-neutral-30);border-radius:10px;border-width:.5px!important;height:50px;position:relative}.dropdown--with-icon{padding-left:10px}.dropdown--with-icon svg{height:22px}.dropdown--with-icon .dropdown__selected-item,.dropdown--with-icon .dropdown__selected-item--placeholder{padding-left:8px}.dropdown--opened{border-radius:10px 10px 0 0;box-shadow:0 0 10px -2px #0000001a}.dropdown--opened .dropdown__options{box-shadow:0 0 10px -2px #0000001a;visibility:visible}.dropdown--opened .dropdown__arrow-wrapper{transform:rotate(-180deg)}.dropdown--upside.dropdown--opened{border-radius:0 0 4px 4px;border-top:0}.dropdown--upside .dropdown__options{border-bottom:0;border-radius:10px 10px 0 0;border-top:.5px solid var(--color-neutral-30);bottom:auto;top:0;transform:translateY(-100%)}.dropdown__selected-item{flex:1;overflow:hidden;text-overflow:ellipsis}.dropdown__selected-item::selection{background-color:initial}.dropdown__selected-item--placeholder{opacity:.5}.dropdown__input{border:0;border-radius:10px;height:100%;left:0;opacity:0;padding:15px 30px 15px 15px;pointer-events:none;position:absolute;top:0;width:100%;z-index:0}.dropdown__input--searchable:focus{opacity:1}.dropdown__input--searchable:focus+.dropdown__selected-item{opacity:0!important}.dropdown__arrow-wrapper,.dropdown__clear-wrapper{align-items:center;display:flex;flex-shrink:0;justify-content:center;margin-left:5px;transition:.2s;width:1em}.dropdown__options{background-color:var(--color-white);border:.5px solid var(--color-neutral-30);border-radius:0 0 4px 4px;border-top:0;bottom:0;left:-.75px;list-style:none;margin:0;max-height:0;overflow:auto;padding:0;position:absolute;transform:translateY(100%);visibility:hidden;width:calc(100% + 1.25px)}.dropdown__item{cursor:pointer;max-width:100%;overflow:hidden;padding:15px;text-overflow:ellipsis}.dropdown__item:not(:last-child){border-bottom:.5px solid var(--color-neutral-30)}.dropdown__item--highlighted,.dropdown__item:hover{background-color:var(--color-primary);color:var(--color-white)}.dropdown__item span{margin-right:5px}.tag{background-color:#dde8f6;border-radius:3px;color:#4a90e2;display:inline-block;font-size:13px;font-weight:500;letter-spacing:.5px;margin:5px 8px 5px 0;padding:4px 11px;text-transform:capitalize}.myinterview-text--XS{font-size:12px;line-height:20px}.myinterview-text--S{font-size:14px;line-height:22px}.myinterview-text--M{font-size:16px;line-height:24px}.myinterview-text--L{font-size:18px;line-height:26px}.myinterview-text--H3{font-size:20px;line-height:28px}.myinterview-text--H2{font-size:24px;line-height:32px}.myinterview-text--H1{font-size:30px;line-height:38px}.myinterview-text--D3{font-size:38px;line-height:46px}.myinterview-text--D2{font-size:48px;line-height:54px}.myinterview-text--D1{font-size:56px;line-height:64px}.myinterview-text--regular{font-weight:400}.myinterview-text--semibold{font-weight:600}.myinterview-text--bold{font-weight:700}.myinterview-text--italic{font-style:italic}.myinterview-text--truncated{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.toggle-switch{align-items:center;border-radius:99999px;cursor:pointer;display:flex;position:relative;transition:.2s}.toggle-switch__indicator{border-radius:50%;height:.65em;left:10%;position:absolute;transition:.2s;width:.65em}.toggle-switch__indicator--active{left:90%;transform:translateX(-100%)}.toggle-switch:active .toggle-switch__indicator{height:.5em;width:.5em}.toggle-text{align-items:center;cursor:pointer;display:flex;justify-content:center;width:fit-content}.toggle-text__arrow-wrapepr{align-items:center;display:flex;margin-left:5px;transition:.25s ease-in-out;width:1em}.toggle-text__arrow-wrapepr--opened{transform:rotate(-180deg)}.progress{align-items:center;border-radius:50%;display:flex;height:1em;justify-content:center;width:1em}.progress__fill{border-radius:50%;height:.7em;width:.7em}.input-text{display:flex;flex-direction:column;flex-grow:1}.input-text__field{border:.5px solid var(--color-neutral-30);border-radius:10px;font-size:14px;padding:14px 16px;width:100%}.input-text__field--with-icon{padding:14px 43px!important}.input-text__icon-container{margin:10px 12px;position:absolute}.input-text__icon-container i{vertical-align:-webkit-baseline-middle}.input-text__icon-container i svg{height:22px;width:22px}.input-text--error{border:1px solid var(--color-error)}.input-text__error-msg{color:var(--color-error);margin-top:3px}.dnd-wrapper{border:1px solid var(--color-neutral-30);border-radius:10px;height:50px;max-width:500px;padding:7px 10px;position:relative;transition:.3s ease-in-out;width:100%}.dnd-wrapper__placeholder{color:var(--color-neutral-50);font-size:14px;margin-left:5px}.dnd-wrapper__left-hand{align-items:flex-end;display:flex}.dnd-wrapper--scale{transform:scale(1.1)}.dnd-wrapper--border-solid{border:.5px solid var(--color-neutral-30)}.dnd-wrapper__label{align-items:center;display:flex;font-size:14px;height:100%;justify-content:center}.dnd-wrapper__label svg{height:16px;vertical-align:middle;width:16px}.dnd-wrapper__label--with-icon{justify-content:space-between}.dnd-wrapper__label--with-icon i{color:var(--color-neutral-60)}.dnd-wrapper__label--uploaded,.dnd-wrapper__label--uploading{justify-content:flex-start}.dnd-wrapper__label .progress{height:18px;margin-right:5px;width:18px}.dnd-wrapper__icon{align-items:center;display:flex}.dnd-wrapper__icon--clip{font-size:18px;transform:rotate(10deg) rotateX(180deg)}.dnd-wrapper__icon--close{cursor:pointer;margin-left:auto;z-index:10}.dnd-wrapper__text{margin-left:5px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dnd-wrapper__input{cursor:pointer;height:100%;left:0;opacity:0;position:absolute;top:0;width:100%;z-index:1}.dnd-wrapper__input:disabled{cursor:auto}.myinterview-modal-wrapper{border-radius:4px;box-shadow:0 4px 6px -1px #00000014,0 2px 4px -1px #0000000f;left:50%;max-height:90vh;max-width:90vw;overflow:auto;position:fixed;top:50%;transform:translate(-50%,-50%);z-index:30}.myinterview-modal-wrapper--fullscreen{border-radius:0;box-shadow:none;height:100vh;left:0;max-height:100vh;max-width:100vw;padding:0;top:0;transform:none;width:100vw}.myinterview-modal-wrapper__box{height:100%;max-height:100%;max-width:100%;overflow:auto;width:100%}.myinterview-modal-wrapper__close-btn{cursor:pointer;height:16px;position:absolute;right:20px;top:20px;width:16px}.myinterview-modal-wrapper-background{background-color:#0000001a;height:100vh;left:0;position:fixed;top:0;width:100vw}.phone-number{border:.5px solid var(--color-neutral-30);border-radius:10px;display:flex;position:relative}.phone-number--opened{border-radius:10px 10px 0 0!important}.phone-number--opened--up{border-radius:0 0 10px 10px!important}.phone-number .dropdown{border-right:.5px solid var(--color-neutral-20);padding:0 15px;width:75px}.phone-number .dropdown__selected-item{font-size:16px}.phone-number .input-text{border:0;flex:1}.myinterview-logo-wrapper{max-height:400px}.myinterview-checkbox{align-items:center;border-radius:4px;border-style:solid;border-width:1px;display:flex;flex-shrink:0;justify-content:center;position:relative;transition:all .15s ease-out}.myinterview-checkbox__input{cursor:pointer;height:100%;left:0;opacity:0;position:absolute;top:0;width:100%;z-index:1}.myinterview-checkbox__checkmark{border-radius:50%;display:flex;height:100%;padding:2px;transform:scale(0);transition:.15s ease-out;width:100%}.myinterview-checkbox__checkmark--checked{border-radius:0;transform:scale(1)}.myinterview-checkbox__checkmark svg{height:100%;width:100%}.myinterview-widget-no-select{-webkit-tap-highlight-color:transparent;-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.myinterview-widget-scroll-indicator::-webkit-scrollbar{display:initial!important;width:5px}.myinterview-widget-scroll-indicator::-webkit-scrollbar-thumb{background:var(--color-neutral-40)}@keyframes fade-in{0%{opacity:0}}:host{--myinterview-widget-dynamic-overflow:auto;--myitnerview-widget-background-height:calc(40vh - 100px);--myinterview-widget-background-preview-display:none;--myinterview-widget-video-aspect-ratio:0.75;--myinterview-widget-camera-transform:translateZ(0) rotateY(180deg);--myinterview-widget-outer-width:530px;--myinterview-widget-recorder-border-radius:10px;--myinterview-widget-preview-video-border-radius:20px;--myinterview-background-opacity:0}@media (min-width:1200px){:host{--myinterview-widget-recorder-border-radius:20px;--myinterview-widget-preview-video-border-radius:10px}}.myinterview-widget{word-wrap:normal;--myinterview-widget-layout-top:0;--myinterview-widget-layout-right:0;--myinterview-widget-layout-bottom:0;--myinterview-widget-layout-left:0;border-collapse:initial;border-spacing:0;caption-side:top;cursor:auto;direction:ltr;empty-cells:show;font-size:1rem;font-size-adjust:none;font-stretch:normal;font-style:normal;font-variant:normal;font-weight:400;letter-spacing:normal;line-height:normal;list-style-image:none;list-style-position:outside;list-style-type:disc;orphans:2;quotes:initial;tab-size:8;text-align:initial;text-align-last:auto;text-decoration-color:initial;text-indent:0;text-justify:auto;text-shadow:none;text-transform:none;visibility:visible;white-space:normal;widows:2;word-break:normal;word-spacing:normal}.myinterview-widget *,.myinterview-widget :after,.myinterview-widget :before{box-sizing:border-box;font-family:Nunito Sans,sans-serif;margin:0}.myinterview-widget__layout{background-color:var(--color-white);border-radius:0;bottom:0;left:0;padding:20px 20px 0;position:fixed;right:0;top:0;transform:translateZ(0);-webkit-transform:translateZ(0);z-index:2147483000}.myinterview-widget__layout--animated{animation:myinterview-widget-open .4s ease-out;-webkit-animation:myinterview-widget-open .4s ease-out;-moz-animation:myinterview-widget-open .4s ease-out;-o-animation:myinterview-widget-open .4s ease-out}.myinterview-widget__layout--minimized{animation:myinterview-widget-minimize .5s ease-in-out forwards;-webkit-animation:myinterview-widget-minimize .5s ease-in-out forwards;-moz-animation:myinterview-widget-minimize .5s ease-in-out forwards;-o-animation:myinterview-widget-minimize .5s ease-in-out forwards;overflow:hidden}.myinterview-widget__layout--minimized>*{opacity:0;transition:opacity .2s ease-out}@media (min-width:480px){.myinterview-widget__layout{display:grid;grid-template-columns:minmax(20px,1fr) minmax(auto,480px) minmax(20px,1fr);padding:20px 0 0}.myinterview-widget__layout>*{grid-column:2}.myinterview-widget__layout>.full{grid-column:1/-1;padding:0}}@media (min-width:1200px){.myinterview-widget__layout{grid-template-columns:10px 1fr 10px;padding:50px 0}}@keyframes myinterview-widget-open{0%{background-color:var(--color-primary);border-radius:10px;bottom:var(--myinterview-widget-layout-bottom);left:var(--myinterview-widget-layout-left);min-height:45px;overflow:hidden;padding:0;right:var(--myinterview-widget-layout-right);top:var(--myinterview-widget-layout-top)}50%{background-color:var(--color-white)}}@keyframes myinterview-widget-minimize{90%{border-radius:10px;bottom:var(--myinterview-widget-layout-bottom);left:var(--myinterview-widget-layout-left);min-height:45px;opacity:1;padding:0;right:var(--myinterview-widget-layout-right);top:var(--myinterview-widget-layout-top);z-index:2147483000}99%{opacity:0}to{background-color:var(--color-primary);border-radius:10px;bottom:var(--myinterview-widget-layout-bottom);left:var(--myinterview-widget-layout-left);min-height:45px;opacity:0;padding:0;right:var(--myinterview-widget-layout-right);top:var(--myinterview-widget-layout-top);z-index:-1}}.myinterview-widget-icons__play-button{cursor:pointer;position:relative}.myinterview-widget-icons__play-button svg{color:var(--color-primary)}.myinterview-widget-icons__play-button svg path{transition:d .4s ease-out;-webkit-transition:d .4s}.myinterview-widget-icons__play-button svg rect{transition:rx .4s;-webkit-transition:rx .4s}.myinterview-widget-icons__loading{background-color:currentColor;border-radius:50%;height:38px;overflow:hidden;position:relative;transform:translateZ(0);width:38px}.myinterview-widget-icons__loading:after{animation:slide 1s infinite;background:linear-gradient(to right,currentColor,var(--color-neutral-10),currentColor);content:\"\";height:100%;left:-50px;position:absolute;width:100%}.myinterview-widget-icons__no-camera-mic{align-items:center;background-color:#eff6fe;border-radius:50%;display:flex;height:80px;justify-content:center;position:relative;width:80px}.myinterview-widget-icons__no-camera-mic__camera,.myinterview-widget-icons__no-camera-mic__mic{align-items:center;border-radius:4px;display:flex;height:28px;justify-content:center;position:absolute;width:28px}.myinterview-widget-icons__no-camera-mic__camera svg,.myinterview-widget-icons__no-camera-mic__mic svg{height:20px;width:20px}.myinterview-widget-icons__no-camera-mic__camera{background-color:var(--color-primary);color:var(--color-white);transform:translate(-35%,-35%)}.myinterview-widget-icons__no-camera-mic__mic{background-color:var(--color-white);color:var(--color-primary);transform:translate(35%,35%)}.myinterview-widget__wrapper{-ms-overflow-style:none;display:flex;flex-direction:column;height:100%;max-height:100%;overflow:hidden;position:relative;scrollbar-width:none}.myinterview-widget__wrapper ::-webkit-scrollbar,.myinterview-widget__wrapper::-webkit-scrollbar{display:none}.myinterview-widget__wrapper--hide-header .myinterview-widget-header{visibility:hidden}.myinterview-widget__background{background:linear-gradient(50.24deg,var(--color-primary) 0,var(--color-special) 75%);height:var(--myitnerview-widget-background-height);left:0;opacity:var(--myinterview-background-opacity);overflow:hidden;position:absolute;top:0;transition:opacity .5s;width:100%}.myinterview-widget__background:before{border:6vh solid hsla(0,0%,100%,.267);border-radius:50%;content:\"\";height:30vh;position:absolute;right:0;top:0;transform:translate(50%,-50%);width:30vh}.myinterview-widget__background:after{background-color:var(--color-white);border-radius:20px 20px 0 0;bottom:0;content:\"\";display:var(--myinterview-widget-background-preview-display);height:20px;position:absolute;width:100%}@media (min-width:1200px){.myinterview-widget__background:after{display:none}.myinterview-widget__background{height:100vh;left:auto;right:0;width:calc(100% - var(--myinterview-widget-outer-width))}.myinterview-widget__background:before{border:12vh solid hsla(0,0%,100%,.267);height:70vh;width:70vh}}.myinterview-widget__watermark{display:none}@media (min-width:1200px){.myinterview-widget__watermark{bottom:20px;display:flex;height:64px;left:20px;position:absolute}}.myinterview-widget__background-dots{display:none}@media (min-width:1200px){.myinterview-widget__background-dots{background-image:radial-gradient(hsla(0,0%,100%,.467) 15%,#0000 0);background-position:0 0,50px 50px;background-size:20px 20px;bottom:0;display:flex;height:200px;position:absolute;right:0;width:200px}}.myinterview-widget__views{--myinterview-widget-views-margin-top:0px;--myinterview-widget-practice-opacity:1;-webkit-overflow-scrolling:touch;color:var(--color-primary);display:flex;flex:1;flex-direction:column;height:100%;overflow-y:var(--myinterview-widget-dynamic-overflow);scroll-snap-type:y mandatory;z-index:20}.myinterview-widget__views--uploading{gap:0;justify-content:center;margin-bottom:30px}@media (min-width:1200px){.myinterview-widget__views{align-items:start;flex:initial;flex:1;flex-direction:row-reverse;gap:0;justify-content:flex-end;overflow:hidden;padding:0;scroll-snap-type:none}.myinterview-widget__views--uploading{margin-bottom:0}}.myinterview-widget__views--rtl .myinterview-widget--rtl-support{direction:rtl}.myinterview-widget-recording-action-button{margin-bottom:20px;min-height:45px;position:relative;scroll-snap-align:end;z-index:1}@media (min-width:1200px){.myinterview-widget-recording-action-button{display:none}}.myinterview-widget-recording-action-button--video-question:disabled{display:none!important}.myinterview-widget-recording-action-button--stop-recording{border:1px solid var(--color-neutral-40)!important}@media (min-width:1200px){.myinterview-widget-recording-action-button--stop-recording{border:none!important}}.myinterview-widget-rotate-screen{align-items:center;animation:fade-in .3s;background-color:var(--color-white);display:none;height:100%;justify-content:center;left:0;padding:20px!important;position:absolute;top:0;width:100%;z-index:400}.myinterview-widget-rotate-screen svg{flex:0;margin-right:40px;min-width:120px}@media screen and (orientation:landscape){.myinterview-widget-rotate-screen{display:flex}}.myinterview-widget-unsupported-modal{align-items:center;background-color:var(--color-white);display:flex;height:100%;justify-content:center;left:0;padding:20px;position:absolute;top:0;width:100%;z-index:400}.myinterview-widget-unsupported-modal__message{text-align:center}.myinterview-widget-minimize{color:var(--color-white);cursor:pointer;display:none;height:20px;position:fixed;right:30px;top:30px;width:20px;z-index:50}@media (min-width:1024px){.myinterview-widget-minimize{display:flex}}.myinterview-widget-header{display:flex;flex-wrap:wrap;gap:18px;height:fit-content;margin:0 0 20px;max-height:112px;max-width:100%;overflow:hidden;transition:all .2s}.myinterview-widget-header--hidden{height:0;margin:0;overflow:hidden}@media (min-width:1200px){.myinterview-widget-header--hidden{height:fit-content;margin:0 0 20px}}.myinterview-widget-header__logo{height:48px}.myinterview-widget-header__logo img{flex-shrink:1;max-height:100%;max-width:100%;object-fit:contain;overflow:hidden}.myinterview-widget-header__details-wrapper{display:flex;flex-direction:column;flex-shrink:0;justify-content:center;letter-spacing:.2px;max-width:100%;min-width:60%;overflow:hidden}@media (min-width:1200px){.myinterview-widget-header{display:none;max-width:var(--myinterview-widget-outer-width);overflow:visible;padding-left:20px}.myinterview-widget-header__company-name{color:var(--color-neutral-50)}.myinterview-widget-header__job-title{color:var(--color-neutral-90)}}.myinterview-widget-header--desktop-layout{display:none}@media (min-width:1200px){.myinterview-widget-header--desktop-layout{display:flex;min-height:48px}}.myinterview-widget-inner{align-items:center;display:flex;flex-direction:column;margin-bottom:20px;min-height:min((100vw - 40px) * 1/var(--myinterview-widget-video-aspect-ratio),480px * 1/var(--myinterview-widget-video-aspect-ratio));position:relative;scroll-snap-align:start;z-index:1}.myinterview-widget-inner--no-snap{scroll-snap-align:none}@media (min-width:1200px){.myinterview-widget-inner{background-color:var(--color-white);border-radius:var(--myinterview-widget-recorder-border-radius);box-shadow:0 4px 14px -2px #00000026;height:calc((100vw - 20px - var(--myinterview-widget-outer-width))*9/16);margin:auto;max-height:440px;max-width:782.2222222222px;min-height:auto;overflow:hidden;width:100%}}.myinterview-widget-inner--hidden{max-height:0;min-height:0;overflow:hidden;visibility:hidden}.myinterview-widget-inner__content{max-height:100%;max-width:fit-content;min-height:200px;min-width:200px;position:sticky;top:0;width:calc(100% - var(--myinterview-widget-views-margin-top)*var(--myinterview-widget-video-aspect-ratio))}.myinterview-widget-inner__content--full-width{min-width:100%}@media (min-width:1200px){.myinterview-widget-inner__content{border-radius:var(--myinterview-widget-recorder-border-radius);height:100%;max-width:100%;position:static;width:100%}}.myinterview-widget-inner__content--error{display:flex;flex:1;flex-direction:column;height:calc(100% - var(--myinterview-widget-views-margin-top));max-width:100%;min-height:fit-content;width:100%}.myinterview-widget-inner .myinterview-widget-explanation{align-items:center;background-color:#fffffff2;border-radius:var(--myinterview-widget-recorder-border-radius);display:flex;flex-direction:column;height:100%;justify-content:center;padding:20px;position:absolute;text-align:center;white-space:pre-line;width:100%;z-index:1}.myinterview-widget-inner .myinterview-widget-explanation__main{margin-bottom:10px}.myinterview-widget-inner .myinterview-widget-recording-action-button{display:none}@media (min-width:1200px){.myinterview-widget-inner .myinterview-widget-recording-action-button{bottom:20px;display:block;left:50%;margin:0;position:absolute;transform:translate(-50%);white-space:nowrap;width:fit-content;z-index:20}}.myinterview-widget-inner--video-question-state,.myinterview-widget-inner--welcome-page-state{min-height:fit-content;min-width:100%}@media (min-width:1200px){.myinterview-widget-inner--video-question-state,.myinterview-widget-inner--welcome-page-state{min-width:auto}.myinterview-widget-inner--video-question-state .myinterview-widget-recording-action-button,.myinterview-widget-inner--welcome-page-state .myinterview-widget-recording-action-button{bottom:70px}}.myinterview-widget-inner--full{flex:1;scroll-snap-align:none}.myinterview-widget-inner--full .myinterview-widget-inner__content{flex:1;height:max-content;max-width:100%;width:100%}@media (min-width:1200px){.myinterview-widget-inner--full{flex:auto}}.myinterview-widget-outer{border-radius:10px;display:flex;flex-direction:column;padding-bottom:20px;scroll-snap-align:end}.myinterview-widget-outer--no-snap{scroll-snap-align:none}.myinterview-widget-outer--hidden{display:none}.myinterview-widget-outer--uploading{flex:0;padding:0}@media (min-width:1200px){.myinterview-widget-outer{background-color:initial;flex:none;height:100%;padding:0 20px 0 0!important;width:var(--myinterview-widget-outer-width)}.myinterview-widget-outer>*{padding:0 20px}.myinterview-widget-outer--hidden{display:flex}.myinterview-widget-outer--uploading{padding:0}}.myinterview-widget-outer .myinterview-widget-question{background-color:#fffffff2;border-radius:10px;margin:0 auto;transition:opacity .25s;width:100%}@media (min-width:1200px){.myinterview-widget-outer .myinterview-widget-question{padding:50px 20px 0}.myinterview-widget-outer .myinterview-widget-question__question{font-size:26px;line-height:36px}}.myinterview-widget-outer--hide-question .myinterview-widget-question{height:0;opacity:0;visibility:hidden}.myinterview-widget-outer__setup{display:flex;flex:1;flex-direction:column}.myinterview-widget-outer__title{margin-bottom:15px}.myinterview-widget-outer__mode-wrapper{background-color:var(--color-white);bottom:0;display:flex;justify-content:space-around;margin-top:15px;padding:10px 0;position:sticky}.myinterview-widget-outer__mode-wrapper:before{background-color:var(--color-white);content:\"\";height:40px;left:0;mask-image:linear-gradient(#0000,var(--color-black));-webkit-mask-image:linear-gradient(#0000,var(--color-black));mask-mode:alpha;position:absolute;top:0;transform:translateY(-100%);width:100%}@media (min-width:1200px){.myinterview-widget-outer__mode-wrapper{background-color:initial;flex-direction:column;justify-content:flex-start;padding:0;position:static;width:65%}.myinterview-widget-outer__mode-wrapper:after,.myinterview-widget-outer__mode-wrapper:before{display:none}}.myinterview-widget-outer__mode-button{letter-spacing:.5px;max-width:42%!important;min-width:100px!important;padding:0 15px!important;width:150px!important}.myinterview-widget-outer__mode-button--start{border:1px solid!important}.myinterview-widget-outer__mode-button--single{background-color:var(--color-special);color:var(--color-white);max-width:100%!important;width:100%!important}@media (min-width:1200px){.myinterview-widget-outer__mode-button{max-width:100%!important;min-width:150px!important;width:100%!important}.myinterview-widget-outer__mode-button:first-child{margin-bottom:20px}}.myinterview-widget-outer__practice-mode-info{margin-bottom:20px}.myinterview-widget-outer .myinterview-widget__countdown-mobile{display:none}.myinterview-widget-video-camera{border-radius:var(--myinterview-widget-recorder-border-radius);display:flex;flex:1;flex-direction:column;max-height:100%;position:relative;width:100%}@media (min-width:1200px){.myinterview-widget-video-camera{transform:translateZ(0) scale(1.005)}}.myinterview-widget-video-camera--hidden{display:none}.myinterview-widget-video-camera video{border-radius:var(--myinterview-widget-recorder-border-radius);object-fit:contain;overflow:hidden;transform:var(--myinterview-widget-camera-transform);-webkit-transform:var(--myinterview-widget-camera-transform);width:100%}.myinterview-widget-video-camera__recording-counter-wrapper{left:10px;position:absolute;top:10px;width:100px;z-index:2}@media (min-width:1200px){.myinterview-widget-video-camera__recording-counter-wrapper{left:25px;top:25px}}.myinterview-widget-video-camera__permissions{align-items:center;animation:fade-in .5s;background-color:#fffffff2;border-radius:var(--myinterview-widget-recorder-border-radius);color:var(--color-neutral-90);display:flex;height:100%;justify-content:center;padding:20px;position:absolute;width:100%;z-index:21}.myinterview-widget-video-camera__permissions-close{cursor:pointer;left:25px;position:absolute;top:25px;width:20px}.myinterview-widget-video-camera .myinterview-widget__microphone-indicator{align-items:center;background-color:var(--color-primary);border-radius:50%;bottom:18px;color:var(--color-white);display:flex;height:40px;isolation:isolate;justify-content:center;left:18px;padding:10px;position:absolute;width:40px}.myinterview-widget-video-camera .myinterview-widget__microphone-indicator--hidden{visibility:hidden}@media (min-width:1200px){.myinterview-widget-video-camera .myinterview-widget__microphone-indicator{bottom:25px;left:auto;right:25px}}.myinterview-widget-video-camera .myinterview-widget__microphone-indicator:after{background:radial-gradient(#0000 40%,var(--color-primary) 90%);border-radius:50%;content:\"\";height:100%;position:absolute;transform:scale(var(--myinterview-widget-voice-level));transform-origin:center;width:100%;will-change:transform;z-index:-1}.myinterview-widget-video-camera .myinterview-widget__microphone-indicator svg{height:100%;width:100%}.myinterview-widget-video-camera .myinterview-widget__practice-mode{opacity:var(--myinterview-widget-practice-opacity);position:absolute;right:10px;top:10px;transition:opacity .3s}@media (min-width:1200px){.myinterview-widget-video-camera .myinterview-widget__practice-mode{opacity:1;right:25px;top:25px}}.myinterview-widget-video-camera .myinterview-widget__question-number{left:15px;top:15px;z-index:1}@media (min-width:1200px){.myinterview-widget-video-camera .myinterview-widget__question-number{left:40px;letter-spacing:.5px;top:30px}}.myinterview-widget-video-camera .myinterview-widget__countdown-desktop{display:none}.myinterview-widget-video-camera__watermark{height:50px;left:15px;opacity:.5;position:absolute;top:15px;width:120px}@media (min-width:1200px){.myinterview-widget-video-camera__watermark{left:25px;top:25px}}.myinterview-widget-recorder-modal{align-items:center;animation:fade-in .5s;background-color:#fffffff2;border-radius:var(--myinterview-widget-recorder-border-radius);bottom:0;color:var(--color-neutral-90);display:flex;filter:drop-shadow(0 0 0 rgba(0,0,0,.2));justify-content:center;left:0;min-height:100%;overflow:hidden;position:absolute;right:0;text-align:center;top:0;z-index:20}.myinterview-widget-recorder-modal__content-wrapper{align-items:center;display:flex;flex-direction:column;gap:5px;letter-spacing:.5px;max-width:80%}@media (min-width:1200px){.myinterview-widget-recorder-modal__content-wrapper{max-width:700px;padding:20px}}.myinterview-widget-recorder-modal__question{max-width:100%;overflow:hidden;overflow-wrap:break-word;text-align:left}@media (min-width:1200px){.myinterview-widget-recorder-modal__question{text-align:center}.myinterview-widget-recorder-modal__question .myinterview-widget__question-duration{justify-content:center}}.myinterview-widget-checks{display:flex;flex-direction:column}.myinterview-widget-checks__item{align-items:center;display:flex;gap:20px;margin-bottom:20px}.myinterview-widget-checks__icon{align-items:center;display:flex;height:100%;justify-content:center;width:40px}.myinterview-widget-checks__text-wrapper{display:flex;flex-direction:column}.myinterview-widget-checks__retry{background-color:initial;border:0;cursor:pointer;margin-left:10px;text-decoration:underline}.myinterview-widget-preview__container{background-color:var(--color-white);display:flex;flex-direction:column;min-height:100%;padding-top:20px;position:relative;width:100%}@media (min-width:1200px){.myinterview-widget-preview__container{border-radius:20px;max-height:100%;padding:4%}}.myinterview-widget-preview__container .myinterview-widget__question-number{margin-bottom:20px;position:relative}@media (min-width:1200px){.myinterview-widget-preview__container .myinterview-widget__question-number{color:var(--color-neutral-90);margin:0;position:absolute}}.myinterview-widget-preview__container .myinterview-widget-errors{animation:fade-in .3s;background-color:var(--color-white);bottom:0;left:0;padding:20px;position:absolute;right:0;text-align:center;top:0;transform:translateZ(150px);-webkit-transform:translateZ(150px);z-index:150}.myinterview-widget-preview__title{margin-bottom:30px;text-align:center}@media (min-width:1200px){.myinterview-widget-preview__title{color:var(--color-neutral-90);margin-bottom:12px}}.myinterview-widget-preview__background{animation:background-fade-in .3s ease-out;background-color:#000000e6;height:100%;isolation:isolate;left:0;position:fixed;top:0;transform:translateZ(150px);width:100%;z-index:150}@keyframes background-fade-in{0%{background-color:#0000;transform:translateZ(-2px);z-index:-2}}.myinterview-widget-preview__close{background-color:var(--color-neutral-60);border-radius:2.5rem;bottom:1vh;left:50%;padding:3px 8px;position:absolute;transform:translateX(-50%)}.myinterview-widget-preview__main{animation:fade-in .5s;display:flex;height:350px;margin:auto;position:relative;touch-action:pan-y;width:100%;z-index:1}.myinterview-widget-preview__main--hide-overflow{overflow:hidden}.myinterview-widget-preview__items-wrapper{--myinterview-widget-preview-transform-x:0;--myinterview-widget-preview-item-transition:0ms;--myinterview-widget-item-width:100%;box-sizing:initial;display:flex;margin-bottom:10px;position:relative;transition-duration:0ms;transition-property:transform;width:100%;z-index:2}.myinterview-widget-preview__items-wrapper--centered{justify-content:center}.myinterview-widget-preview__item{display:flex;flex-direction:column;flex-shrink:0;height:100%;justify-content:center;padding:2%;position:relative;transition:transform var(--myinterview-widget-preview-item-transition);width:var(--myinterview-widget-item-width);z-index:1}.myinterview-widget-preview__item--current{z-index:2}.myinterview-widget-preview__item--single-take{width:50%}.myinterview-widget-preview__video-wrapper{border:0 solid var(--color-primary);border-radius:var(--myinterview-widget-preview-video-border-radius);display:flex;margin:0 auto;opacity:1;overflow:hidden;position:relative;transition-delay:.29s;z-index:3}.myinterview-widget-preview__video-wrapper--mobile{aspect-ratio:var(--myinterview-widget-video-aspect-ratio);height:100%}@media (min-width:1200px){.myinterview-widget-preview__video-wrapper{border-radius:var(--myinterview-widget-preview-video-border-radius);margin:0}}.myinterview-widget-preview__video-wrapper:before{background-color:rgba(0,0,0,.267);border-radius:var(--myinterview-widget-preview-video-border-radius);content:\"\";height:100%;left:0;pointer-events:none;position:absolute;top:0;transform:translateZ(1px);transition:background-color .3s;width:100%;z-index:1}.myinterview-widget-preview__video-wrapper--current:before,.myinterview-widget-preview__video-wrapper--preview:before,.myinterview-widget-preview__video-wrapper:hover:before{background-color:#0000;pointer-events:none}.myinterview-widget-preview__video-wrapper--preview-mobile{opacity:0}.myinterview-widget-preview__video-wrapper:after{border:0 solid var(--color-primary);border-radius:var(--myinterview-widget-preview-video-border-radius);content:\"\";height:100%;pointer-events:none;position:absolute;transition:.15s;width:100%}@media (min-width:1200px){.myinterview-widget-preview__video-wrapper:after{border-radius:var(--myinterview-widget-preview-video-border-radius)}}.myinterview-widget-preview__video-wrapper--selected:before{background-color:#0000;z-index:-1}.myinterview-widget-preview__video-wrapper--selected:after{border:3px solid var(--color-primary)}.myinterview-widget-preview__video{cursor:pointer;transform:translateZ(0);-webkit-transform:translateZ(0);width:100%}.myinterview-widget-preview__dynamic-video{--myinterview-preview-video-top:50%;--myinterview-preview-video-left:50%;--myinterview-preview-video-width:0%;--myinterview-preview-video-height:0%;border-radius:var(--myinterview-widget-preview-video-border-radius);height:var(--myinterview-preview-video-height);left:var(--myinterview-preview-video-left);position:fixed;top:var(--myinterview-preview-video-top);transform:translateZ(-1px);transition:all .3s ease-out;transition-delay:.01s;visibility:hidden;width:var(--myinterview-preview-video-width);z-index:-1}.myinterview-widget-preview__dynamic-video--preview{border-radius:0;height:100%;left:0;max-height:70vh;top:46%;transform:translate3d(0,-50%,200px);visibility:visible;width:100%;z-index:200}.myinterview-widget-preview__number-wrapper{align-items:center;cursor:pointer;display:flex;gap:5px;margin:7px auto 0;position:relative;width:fit-content}@media (min-width:1200px){.myinterview-widget-preview__number-wrapper{margin:7px 0 0}}.myinterview-widget-preview__selected-check-mark{align-items:center;border:1px solid var(--color-neutral-60);border-radius:50%;display:flex;height:20px;justify-content:center;overflow:hidden;padding:1px;pointer-events:none;position:relative;width:20px}.myinterview-widget-preview__selected-check-mark svg{transform:scale(0);-webkit-transform:scale(0);transition:.15s ease-out}.myinterview-widget-preview__selected-check-mark--selected{border:1px solid var(--color-primary)}.myinterview-widget-preview__selected-check-mark--selected svg{transform:scale(1);-webkit-transform:scale(1)}.myinterview-widget-preview__dots-wrapper{align-items:center;display:flex;height:20px;justify-content:center;width:100%}.myinterview-widget-preview__dot{background-color:var(--color-neutral-20);border-radius:50%;cursor:pointer;height:10px;margin:0 7px;position:relative;transition:.3s ease-out;width:10px}.myinterview-widget-preview__dot--selected{background-color:var(--color-primary);cursor:auto;transform:scale(1.5);-webkit-transform:scale(1.5)}.myinterview-widget-preview__play-container{align-items:center;cursor:pointer;display:flex;height:100%;justify-content:center;left:0;position:absolute;top:0;width:100%}.myinterview-widget-preview__play-button-wrapper{left:50%;top:50%;transform:translateZ(1px);transition:opacity .3s;width:60px}@media (min-width:1200px){.myinterview-widget-preview__play-button-wrapper{max-width:76px;width:25%}}.myinterview-widget-preview__horizontal-line{display:none}@media (min-width:1200px){.myinterview-widget-preview__horizontal-line{background-color:#bdbdbd;display:block;height:1px;margin:15px auto;width:50%}}.myinterview-widget-preview__preview-buttons{align-items:center;display:flex;flex-direction:column;gap:20px;margin-bottom:10px;margin-top:33px;max-width:100%}@media (min-width:1200px){.myinterview-widget-preview__preview-buttons{gap:10px;margin-bottom:0;margin-top:auto}}.myinterview-widget-preview__preview-buttons-top{display:flex;gap:10px;justify-content:space-evenly;max-width:100%;width:100%}@media (min-width:1200px){.myinterview-widget-preview__preview-buttons-top{justify-content:center;width:auto}}.myinterview-widget-preview__preview-button{max-width:45%;min-width:100px;width:150px}.myinterview-widget-preview__preview-button--retake{align-items:center;border:1px solid var(--color-neutral-30);display:flex;justify-content:center;max-width:100%}.myinterview-widget-preview__preview-button--start-interview{background-color:initial;color:var(--color-primary);font-size:13px;max-height:30px;max-width:max-content;padding:0;width:max-content}@media (min-width:1200px){.myinterview-widget-preview__preview-button{flex:1;max-height:42px;min-width:150px}}.myinterview-widget-preview__retakes-wrapper{max-width:45%;min-width:100px;text-align:center;width:150px}@media (min-width:1200px){.myinterview-widget-preview__retakes-wrapper{max-height:42px;min-width:150px}}.myinterview-widget-preview__retakes-left{color:var(--color-neutral-60)}.myinterview-widget-preview__arrow{align-items:center;animation:fade-in .3s;display:flex;height:100%;justify-content:center;min-width:40px;position:absolute;right:0;z-index:5}@media (min-width:1200px){.myinterview-widget-preview__arrow{min-width:4%;transform:translateX(75%)}.myinterview-widget-preview__arrow:before{background-color:#fff;content:\"\";height:100%;left:0;mask-image:linear-gradient(to right,#0000,var(--color-black));-webkit-mask-image:linear-gradient(to right,#0000,var(--color-black));position:absolute;transform:translateX(5px);width:100%}}.myinterview-widget-preview__arrow--prev{left:0;right:auto;transform:translateZ(5px) rotateY(180deg)}@media (min-width:1200px){.myinterview-widget-preview__arrow--prev{transform:translate3d(-75%,0,5px) rotateY(180deg)}}.myinterview-widget-preview__arrow-icon-wrapper{align-items:center;background-color:var(--color-white);border:1px solid var(--color-neutral-30);border-radius:50%;color:var(--color-neutral-90);cursor:pointer;display:flex;height:36px;justify-content:center;position:relative;transform:translateY(-11px);width:36px}@media (min-width:1200px){.myinterview-widget-preview__arrow-icon-wrapper{box-shadow:0 4px 30px #00000026}}.myinterview-widget-video-question{aspect-ratio:16/9;background-color:var(--color-black);border-radius:var(--myinterview-widget-recorder-border-radius);height:fit-content;isolation:isolate;margin:auto;overflow:hidden;position:relative;width:100%;z-index:1}@media (min-width:1200px){.myinterview-widget-video-question{height:100%}}.myinterview-widget-video-question--hidden{position:absolute;visibility:hidden;z-index:-1}.myinterview-widget-video-question--loading{background-color:hsla(0,0%,100%,.467)}.myinterview-widget-video-question--loading:before{animation:slide 1.5s infinite;background:linear-gradient(to right,#0000,var(--color-neutral-10),#0000);content:\"\";height:100%;left:-100%;position:absolute;top:0;width:100%;z-index:-1}@media (min-width:1200px){.myinterview-widget-video-question--loading{background-color:#ccd7f5}}.myinterview-widget-video-question:after{content:\"\";height:100%;left:0;position:absolute;top:0;width:100%}.myinterview-widget-video-question--done:after{background-color:var(--color-black)}.myinterview-widget-video-question__play-button-wrapper{left:50%;position:absolute;top:50%;transform:translate(-50%,-50%);-webkit-transform:translate(-50%,-50%);transition:transform .2s ease-out,opacity .3s ease-out;width:clamp(50px,15vw,76px);z-index:1}.myinterview-widget-video-question__play-button-wrapper--hidden{opacity:0;pointer-events:none;touch-action:none;transform:translate(-50%,-50%) scale(1.3);-webkit-transform:translate(-50%,-50%) scale(1.3)}.myinterview-widget-video-question__controls{align-items:center;bottom:0;display:flex;justify-content:center;left:0;margin:10px 12px;position:absolute;right:0;transition:opacity .2s,transform .2s;z-index:1}.myinterview-widget-video-question__controls--inactive{opacity:0;pointer-events:none;touch-action:none;transform:translateY(25%)}.myinterview-widget-video-question__controls>:not(:last-child){margin-right:15px}.myinterview-widget-video-question__controls .myinterview-widget-video-question__control-play-button{min-width:40px;width:50px}.myinterview-widget-video-question__controls .myinterview-widget-video-question__control-play-button .myinterview-widget-icons svg{color:var(--color-white)}.myinterview-widget-video-question__timebar-counter-wrapper{width:100%}.myinterview-widget-video-question__counter-wrapper{-webkit-text-stroke-width:.5px;-webkit-text-stroke-color:var(--color-neutral-90);color:var(--color-white);font-size:13px;font-weight:700}.myinterview-widget-video-question__time-bar{background-color:hsla(0,0%,100%,.467);border-radius:2.5rem;cursor:pointer;height:10px;margin-bottom:5px;position:relative;width:100%}.myinterview-widget-video-question__time-bar--disabled{cursor:auto;pointer-events:none}.myinterview-widget-video-question__time-bar:before{content:\"\";height:30px;left:0;position:absolute;top:0;transform:translateY(-30%);width:100%}@media (min-width:1200px){.myinterview-widget-video-question__time-bar:before{display:none}}.myinterview-widget-video-question__time-bar-progress{background-color:var(--color-primary);border-radius:2.5rem;height:100%;position:absolute;transition:width .25s linear}.myinterview-widget-video-question__time-bar-progress:after{background-color:var(--color-primary);border-radius:50%;content:\"\";height:15px;left:100%;pointer-events:none;position:absolute;top:50%;touch-action:none;transform:translate(-50%,-50%);width:15px}.myinterview-widget-video-question__time-bar-progress--changing{transition:none}.myinterview-widget-video-question__time-bar-progress--unchangeable{cursor:auto}.myinterview-widget-video-question__time-bar-progress--unchangeable:after{display:none}.myinterview-widget-video-question__retry-button{margin-top:20px;width:100%;z-index:2}.myinterview-widget-video-question__retry-button--hidden{position:absolute;visibility:hidden;z-index:-1}@media (min-width:1200px){.myinterview-widget-video-question__retry-button{bottom:70px;left:50%;margin:0 auto;position:absolute;transform:translateX(-50%);width:fit-content}}@keyframes slide{50%{opacity:.9}to{left:100%;opacity:1}}.myinterview-widget-device{align-items:center;background-color:var(--color-white);border-radius:50%;color:var(--color-neutral-90);display:flex;height:40px;justify-content:center;position:absolute;right:18px;width:40px}.myinterview-widget-device__mobile{bottom:18px}.myinterview-widget-device__desktop{right:18px;top:18px;z-index:30}@media (min-width:1200px){.myinterview-widget-device__desktop{right:25px;top:25px}}.myinterview-widget-device__menu-button{align-items:center;background-color:initial;border:none;border-radius:50%;cursor:pointer;display:flex;height:100%;justify-content:center;width:100%}.myinterview-widget-device__modal{--myinterview-widget-select-device-height:48px;background-color:var(--color-white);border-radius:20px;bottom:-15px;box-shadow:0 2px 12px -4px #0000001a;max-width:400px;min-width:300px;position:absolute;right:-12px;transform:translateY(100%)}.myinterview-widget-device__modal:before{background-color:var(--color-white);border-radius:5px;content:\"\";height:20px;position:absolute;right:22px;top:-8px;transform:rotate(45deg);width:20px}.myinterview-widget-device__select-wrapper{display:flex;flex-direction:column;overflow:hidden;padding:20px}.myinterview-widget-device__select-group{display:flex;flex-direction:column}.myinterview-widget-device__select-group:not(:last-child):after{background-color:var(--color-neutral-20);content:\"\";height:1px;margin:10px 0;width:100%}.myinterview-widget-device__selected-device{cursor:pointer;display:flex;height:var(--myinterview-widget-select-device-height);width:100%}.myinterview-widget-device__select-icon{align-items:center;display:flex;min-width:40px}.myinterview-widget-device__select-icon svg{height:20px;width:20px}.myinterview-widget-device__selected-title-wrapper{flex:1;overflow:hidden;padding-right:23px}.myinterview-widget-device__selected-title{line-height:var(--myinterview-widget-select-device-height)!important;overflow:hidden;text-overflow:ellipsis;vertical-align:middle;white-space:nowrap}.myinterview-widget-device__arrow{align-items:center;display:flex;margin-left:auto;transform:rotate(0);transition:.2s}.myinterview-widget-device__arrow--open{transform:rotate(-180deg)}.myinterview-widget-device__select-list{display:flex;flex-direction:column;max-height:0;overflow:hidden;transition:max-height .2s ease-out}.myinterview-widget-device__select-list--open{max-height:calc(var(--myinterview-widget-select-device-height)*2);overflow:auto;transition:max-height .2s ease-in}.myinterview-widget-device__select-option{border-radius:4px;cursor:pointer;line-height:var(--myinterview-widget-select-device-height)!important;min-height:var(--myinterview-widget-select-device-height);overflow:hidden;padding:0 40px;text-overflow:ellipsis;white-space:nowrap}.myinterview-widget-device__select-option--selected,.myinterview-widget-device__select-option:hover{color:var(--color-primary)!important}.myinterview-widget-device__select-option--selected{background-color:rgba(90,164,245,.051)!important}.myinterview-widget__countdown-mobile{background-color:var(--color-white);border-radius:2.5rem;left:50%;padding:6px 10px;position:absolute;top:10px;transform:translateX(-50%);z-index:30}@media (min-width:1200px){.myinterview-widget__countdown-mobile{display:none}}.myinterview-widget__countdown-desktop{display:none}@media (min-width:1200px){.myinterview-widget__countdown-desktop{--myinterview-widget-p:100;--myinterview-widget-b:5px;--myinterview-widget-w:160px;align-items:center;display:flex;height:var(--myinterview-widget-w);justify-content:center;margin:auto;padding:0;position:relative;transform:rotateY(180deg);width:var(--myinterview-widget-w)}.myinterview-widget__countdown-desktop:after,.myinterview-widget__countdown-desktop:before{border-radius:50%;content:\"\";position:absolute}.myinterview-widget__countdown-desktop:before{background:radial-gradient(farthest-side,var(--color-primary) 100%,#0000) top/var(--myinterview-widget-b) var(--myinterview-widget-b) no-repeat,conic-gradient(var(--color-primary) calc((var(--myinterview-widget-p))*1%),#0000 0);inset:0;-webkit-mask:radial-gradient(farthest-side,#0000 calc(100% - var(--myinterview-widget-b)),#000 calc(100% - var(--myinterview-widget-b)));mask:radial-gradient(farthest-side,#0000 calc(100% - var(--myinterview-widget-b)),#000 calc(100% - var(--myinterview-widget-b)));transition:all 1s}.myinterview-widget__countdown-desktop:after{background:var(--color-primary);inset:calc(50% - var(--myinterview-widget-b)/2);transform:rotate(calc(var(--myinterview-widget-p)*3.6deg)) translateY(calc(50% - var(--myinterview-widget-w)/2))}}.myinterview-widget__countdown-desktop .myinterview-widget__countdown-desktop-text{align-items:center;border:var(--myinterview-widget-b) solid #edf6fe;border-radius:50%;display:flex;height:100%;justify-content:center;position:absolute;transform:rotateY(180deg);width:100%;z-index:-1}.myinterview-widget-counter{align-items:center;background-color:var(--color-white);border-radius:2.5rem;color:var(--color-neutral-90);display:flex;gap:5px;height:36px;justify-content:center}.myinterview-widget-counter__dot{background-color:var(--color-error);border-radius:50%;height:10px;width:10px}.myinterview-widget-counter__clock{display:flex}.myinterview-widget-counter__timer{transition:color .25s}.myinterview-widget-counter__timer--red{color:#f45b2b}.myinterview-widget-loader{-webkit-animation:fade 1.6s infinite;-moz-animation:fade 1.6s infinite;-o-animation:fade 1.6s infinite;animation:fade 1.6s infinite;margin:auto;width:80px}@keyframes fade{0%,to{opacity:0}50%{opacity:1}}@-o-keyframes fade{0%,to{opacity:0}50%{opacity:1}}@-moz-keyframes fade{0%,to{opacity:0}50%{opacity:1}}@-webkit-keyframes fade{0%,to{opacity:0}50%{opacity:1}}.myinterview-widget-error{align-items:center;display:flex;flex-direction:column;height:100%;justify-content:center;margin:auto}.myinterview-widget-error__message{margin-bottom:10px}.myinterview-widget-errors{align-items:center;display:flex;flex-direction:column;justify-content:center}.myinterview-widget-errors__icon{margin-bottom:15px}.myinterview-widget-errors__details,.myinterview-widget-errors__title{margin-bottom:5px}.myinterview-widget-errors__cta{cursor:pointer;position:relative;text-decoration:underline}.myinterview-widget-errors__cta .myinterview-widget-select-native{height:100%;left:0;opacity:0;position:absolute;top:0;width:100%}.myinterview-widget-slider-modal{animation:close-modal .3s forwards;bottom:0;height:100vh;height:-moz-available;height:-webkit-fill-available;height:stretch;left:0;min-height:100vh;min-height:-moz-available;min-height:-webkit-fill-available;min-height:stretch;overflow:hidden;position:fixed;width:100vw;z-index:50}.myinterview-widget-slider-modal__wrapper{-webkit-overflow-scrolling:touch;height:100%;overflow-y:auto;scroll-snap-type:y mandatory;width:100%}.myinterview-widget-slider-modal__top{min-height:100%;scroll-snap-align:start;touch-action:none}.myinterview-widget-slider-modal__bottom{background-color:var(--color-white);border-radius:20px 20px 0 0;display:flex;flex-direction:column;height:10%;isolation:isolate;min-height:10%;overflow:hidden;position:relative;scroll-snap-align:end;transition:min-height .5s,height .5s;visibility:hidden}.myinterview-widget-slider-modal__pill{background-color:var(--color-neutral-30);border-radius:2.5rem;margin:20px auto 32px;min-height:4px;width:60px}.myinterview-widget-slider-modal--open{animation:none;background-color:#0009;visibility:visible}.myinterview-widget-slider-modal--open .myinterview-widget-slider-modal__bottom{height:80%;min-height:80%;visibility:visible}@keyframes close-modal{0%{background-color:#0009}to{background-color:#0000;visibility:hidden}}.myinterview-widget-permissions__wrapper{display:flex;flex:1;flex-direction:column;margin:0 auto;max-height:100%;max-width:480px;overflow:auto;padding:0 20px 20px;width:100%}@media (min-width:1200px){.myinterview-widget-permissions__wrapper{padding:0 20px}}.myinterview-widget-permissions__icon-wrapper{align-items:center;background-color:#eff6fe;border-radius:50%;color:var(--color-primary);display:flex;justify-content:center;margin:0 auto 20px;min-height:70px;min-width:70px}.myinterview-widget-permissions__icon-wrapper svg{height:32px;width:32px}@media (min-width:1200px){.myinterview-widget-permissions__icon-wrapper{display:none!important}}.myinterview-widget-permissions__title{margin-bottom:20px;text-align:center}@media (min-width:1200px){.myinterview-widget-permissions__title{margin-bottom:15px}}.myinterview-widget-permissions__sub-title{margin-bottom:10px}.myinterview-widget-permissions__steps-wrapper{margin-bottom:15px;padding:0 20px}.myinterview-widget-permissions__step{font-size:14px;list-style:decimal;margin-bottom:10px}.myinterview-widget-permissions__step .text--bold{font-weight:700}.myinterview-widget-permissions__step .safari__key{background-color:var(--color-neutral-20);border-radius:2px;padding:2px 4px}.myinterview-widget-permissions__button{margin-top:auto;min-height:45px}.myinterview-widget-question{position:relative}.myinterview-widget-question:before{color:var(--color-neutral-10);content:attr(data-background-question);font-size:150px;font-weight:700;left:0;position:absolute;top:0;transform:translate(-25%,-25%)}.myinterview-widget-question>*{position:relative;z-index:1}.myinterview-widget-question--inner{position:static}.myinterview-widget-question--inner:before{color:var(--color-neutral-20);top:40%;transform:translate(-25%,-50%)}.myinterview-widget-question__description,.myinterview-widget-question__question{letter-spacing:.5px;margin-bottom:20px}.myinterview-widget-question__duration{display:inline-flex;gap:5px}.myinterview-widget-questions-list{display:none}@media (min-width:1200px){.myinterview-widget-questions-list{display:flex;flex-direction:column;overflow-y:auto;padding:0;position:relative}.myinterview-widget-questions-item{align-items:center;border-radius:0 4px 4px 0;display:flex;gap:20px;letter-spacing:.5px;max-width:100%;min-height:90px;overflow:hidden;padding:20px;position:relative}.myinterview-widget-questions-item__number{align-items:center;background-color:var(--color-neutral-20);border-radius:50%;color:var(--color-neutral-90);display:flex;height:38px;justify-content:center;min-width:38px}.myinterview-widget-questions-item__number--icon{background-color:var(--color-white);color:var(--color-primary)}.myinterview-widget-questions-item__wrapper{flex:1;overflow:hidden}.myinterview-widget-questions-item__question{display:flex;flex-direction:column;gap:2px;overflow:hidden}.myinterview-widget-questions-item__duration-wrapper{align-items:center;color:var(--color-neutral-50);display:flex;font-size:12px;gap:5px;line-height:20px}.myinterview-widget-questions-item__duration-wrapper *{font-size:12px;line-height:20px}.myinterview-widget-questions-item__duration-wrapper svg{width:15px}.myinterview-widget-questions-item--active{background-color:#f7fbff}.myinterview-widget-questions-item--active:before{background-color:var(--color-primary);content:\"\";height:100%;left:0;position:absolute;width:3px}.myinterview-widget-questions-item--active .myinterview-widget-questions-item__number{background-color:var(--color-white);border:1px solid var(--color-primary);color:var(--color-primary)}}.myinterview-widget-upload{align-items:center;background-color:var(--color-white);border-radius:20px;display:flex;flex-direction:column;height:100%;justify-content:center;margin:auto;max-height:500px;overflow:hidden;padding:40px;text-align:center;width:100%}@media (min-width:1200px){.myinterview-widget-upload{margin:0;min-height:360px}}.myinterview-widget-upload__icon{align-items:center;background-color:#5aa4f5;border:12px solid #d7e8fb;border-radius:50%;color:var(--color-white);display:flex;height:110px;justify-content:center;margin-bottom:30px;min-height:110px;position:relative;width:110px}.myinterview-widget-upload__icon:before{background-color:initial;border:12px solid #99c6f8;border-radius:50%;content:\"\";height:100%;position:absolute;width:100%}.myinterview-widget-upload__title{margin-bottom:20px}.myinterview-widget-upload__sub-title{margin-bottom:40px;white-space:pre-line}.myinterview-widget-upload__progress{margin-bottom:10px;width:100%}.myinterview-widget-upload__time-left{align-items:center;color:var(--color-neutral-90);display:flex;gap:10px}.myinterview-widget-top-tips{background-color:var(--color-white);color:var(--color-neutral-90);display:flex;flex-direction:column;padding:50px}.myinterview-widget-top-tips__title{margin-bottom:20px}.myinterview-widget-top-tips__tips{margin-bottom:10px;padding:0 15px}.myinterview-widget-top-tips li{margin-bottom:10px}.myinterview-widget__practice-mode{border-radius:2.5rem;height:36px;padding:5px 15px}.myinterview-widget__practice-mode,.myinterview-widget__recording-button{align-items:center;background-color:var(--color-white);display:flex;justify-content:center}.myinterview-widget__recording-button{border:1px solid var(--color-neutral-30);border-radius:50%;height:64px;width:64px}.myinterview-widget__recording-button-inner{background-color:var(--color-error);border-radius:50%;height:52px;width:52px}.myinterview-widget__recording-button-inner--stop{border-radius:2px;height:16px;width:16px}.myinterview-widget__question-number{position:absolute}.myinterview-widget__question-duration{align-items:center;display:flex;gap:8px}.myinterview-widget__question-duration svg{height:1em;width:1em}.myinterview-widget__progress{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:none;border-radius:2.5rem;height:15px;overflow:hidden;width:100%}.myinterview-widget__progress::-webkit-progress-bar{background-color:#e7f1ef}.myinterview-widget__progress::-webkit-progress-value{background-color:var(--color-success);transition:.3s}.myinterview-widget-welcome-page{display:flex;flex-direction:column;gap:20px;height:100%;margin:30px 0;max-height:100%;overflow:auto;position:relative}@media (min-width:1200px){.myinterview-widget-welcome-page{padding:0 20px}}.myinterview-widget-welcome-page__text-wrapper{display:flex;flex-direction:column;position:relative}.myinterview-widget-welcome-page__text{-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden;text-overflow:ellipsis;white-space:pre-line}.myinterview-widget-welcome-page__text--closed{-webkit-line-clamp:4;line-clamp:4}.myinterview-widget-welcome-page__toggle{margin-left:auto}.myinterview-widget-welcome-page__action-buttons{display:flex;gap:20px;justify-content:space-between}.myinterview-widget-welcome-page__continue-button{flex:1;max-width:250px;min-width:fit-content}.myinterview-widget-welcome-page__top-tips-button{margin:0 auto}.myinterview-widget-welcome-page__top-tips{align-items:center;display:flex;gap:10px;justify-content:center}.myinterview-modal-wrapper{background-color:var(--color-white);border-radius:0;height:100vh;max-height:100%;max-width:500px;opacity:0;pointer-events:none;top:75%;transition:top .2s ease-out,opacity .2s ease-out;width:100vw}@media (min-width:480px){.myinterview-modal-wrapper{border-radius:10px;height:auto}}.myinterview-modal-wrapper--opened{opacity:1;pointer-events:all;top:50%}.myinterview-modal-wrapper__close-btn{color:var(--color-neutral-90)}";
45603
+ var css_248z = "@import url(\"https://fonts.googleapis.com/css2?family=Nunito+Sans:wght@400;600;700&display=swap\");:host,:root,html[data-theme=light]{--color-primary:#5aa4f5;--color-secondary:#5ed0bc;--color-premium:#fac918;--color-special:#6690ff;--color-neutral-10:#f2f2f2;--color-neutral-20:#e6e6e6;--color-neutral-30:#ccc;--color-neutral-40:#aaa;--color-neutral-50:#8d8d8d;--color-neutral-60:#777;--color-neutral-70:#444;--color-neutral-90:#404852;--color-white:#fff;--color-black:#000;--color-success:#5ed0bc;--color-warning:#fac918;--color-error:#f25f5b;--color-info:#404852;--color-malibu:linear-gradient(50.24deg,#135 -146.43%,#557ede -0.68%,#6690ff 75.97%)}html[data-theme=dark]{--color-primary:#5aa4f5;--color-secondary:#5ed0bc;--color-premium:#fac918;--color-special:#6690ff;--color-neutral-10:#f2f2f2;--color-neutral-20:#e6e6e6;--color-neutral-30:#ccc;--color-neutral-40:#aaa;--color-neutral-50:#8d8d8d;--color-neutral-60:#777;--color-neutral-70:#444;--color-neutral-90:#404852;--color-white:#222;--color-black:#ddd;--color-success:#5ed0bc;--color-warning:#fac918;--color-error:#f25f5b;--color-info:#404852;--color-malibu:linear-gradient(135deg,#51beff,#6690ff)}.color--primary{color:var(--color-primary)}.background-color--primary{background-color:var(--color-primary)}.border-color--primary{border-color:var(--color-primary)}.color--secondary{color:var(--color-secondary)}.background-color--secondary{background-color:var(--color-secondary)}.border-color--secondary{border-color:var(--color-secondary)}.color--premium{color:var(--color-premium)}.background-color--premium{background-color:var(--color-premium)}.border-color--premium{border-color:var(--color-premium)}.color--special{color:var(--color-special)}.background-color--special{background-color:var(--color-special)}.border-color--special{border-color:var(--color-special)}.color--neutral-10{color:var(--color-neutral-10)}.background-color--neutral-10{background-color:var(--color-neutral-10)}.border-color--neutral-10{border-color:var(--color-neutral-10)}.color--neutral-20{color:var(--color-neutral-20)}.background-color--neutral-20{background-color:var(--color-neutral-20)}.border-color--neutral-20{border-color:var(--color-neutral-20)}.color--neutral-30{color:var(--color-neutral-30)}.background-color--neutral-30{background-color:var(--color-neutral-30)}.border-color--neutral-30{border-color:var(--color-neutral-30)}.color--neutral-40{color:var(--color-neutral-40)}.background-color--neutral-40{background-color:var(--color-neutral-40)}.border-color--neutral-40{border-color:var(--color-neutral-40)}.color--neutral-50{color:var(--color-neutral-50)}.background-color--neutral-50{background-color:var(--color-neutral-50)}.border-color--neutral-50{border-color:var(--color-neutral-50)}.color--neutral-60{color:var(--color-neutral-60)}.background-color--neutral-60{background-color:var(--color-neutral-60)}.border-color--neutral-60{border-color:var(--color-neutral-60)}.color--neutral-70{color:var(--color-neutral-70)}.background-color--neutral-70{background-color:var(--color-neutral-70)}.border-color--neutral-70{border-color:var(--color-neutral-70)}.color--neutral-90{color:var(--color-neutral-90)}.background-color--neutral-90{background-color:var(--color-neutral-90)}.border-color--neutral-90{border-color:var(--color-neutral-90)}.color--white{color:var(--color-white)}.background-color--white{background-color:var(--color-white)}.border-color--white{border-color:var(--color-white)}.color--black{color:var(--color-black)}.background-color--black{background-color:var(--color-black)}.border-color--black{border-color:var(--color-black)}.color--success{color:var(--color-success)}.background-color--success{background-color:var(--color-success)}.border-color--success{border-color:var(--color-success)}.color--warning{color:var(--color-warning)}.background-color--warning{background-color:var(--color-warning)}.border-color--warning{border-color:var(--color-warning)}.color--error{color:var(--color-error)}.background-color--error{background-color:var(--color-error)}.border-color--error{border-color:var(--color-error)}.color--info{color:var(--color-info)}.background-color--info{background-color:var(--color-info)}.border-color--info{border-color:var(--color-info)}.background-color--malibu{background:var(--color-malibu)}*{box-sizing:border-box;font-family:Nunito Sans,sans-serif;margin:0;outline:none;padding:0}body{background-color:var(--color-white)}@keyframes react-loading-skeleton{to{transform:translateX(100%)}}.react-loading-skeleton{--base-color:#ebebeb;--highlight-color:#f5f5f5;--animation-duration:1.5s;--animation-direction:normal;--pseudo-element-display:block;background-color:var(--base-color);border-radius:.25rem;display:inline-flex;line-height:1;overflow:hidden;position:relative;width:100%;z-index:1}.react-loading-skeleton:after{animation-direction:var(--animation-direction);animation-duration:var(--animation-duration);animation-iteration-count:infinite;animation-name:react-loading-skeleton;animation-timing-function:ease-in-out;background-image:linear-gradient(90deg,var(--base-color),var(--highlight-color),var(--base-color));background-repeat:no-repeat;content:\" \";display:var(--pseudo-element-display);height:100%;left:0;position:absolute;right:0;top:0;transform:translateX(-100%)}.myinterview-button{border:none;border-radius:10px;cursor:pointer;font-weight:700;height:45px;letter-spacing:1px}.myinterview-button:disabled{cursor:unset;opacity:.6;pointer-events:none}.myinterview-button--small{font-size:10px;height:35px;min-width:100px;padding:0 20px}.myinterview-button--medium{font-size:12px;height:45px;min-width:150px;padding:0 30px}.myinterview-button--large{font-size:16px;height:65px;min-width:180px;padding:0 45px}.dropdown{align-items:center;cursor:pointer;display:flex;font-size:14px;justify-content:space-between;padding:15px;white-space:nowrap}.dropdown--standalone{border:.5px solid var(--color-neutral-30);border-radius:10px;border-width:.5px!important;height:50px;position:relative}.dropdown--with-icon{padding-left:10px}.dropdown--with-icon svg{height:22px}.dropdown--with-icon .dropdown__selected-item,.dropdown--with-icon .dropdown__selected-item--placeholder{padding-left:8px}.dropdown--opened{border-radius:10px 10px 0 0;box-shadow:0 0 10px -2px #0000001a}.dropdown--opened .dropdown__options{box-shadow:0 0 10px -2px #0000001a;visibility:visible}.dropdown--opened .dropdown__arrow-wrapper{transform:rotate(-180deg)}.dropdown--upside.dropdown--opened{border-radius:0 0 4px 4px;border-top:0}.dropdown--upside .dropdown__options{border-bottom:0;border-radius:10px 10px 0 0;border-top:.5px solid var(--color-neutral-30);bottom:auto;top:0;transform:translateY(-100%)}.dropdown__selected-item{flex:1;overflow:hidden;text-overflow:ellipsis}.dropdown__selected-item::selection{background-color:initial}.dropdown__selected-item--placeholder{opacity:.5}.dropdown__input{border:0;border-radius:10px;height:100%;left:0;opacity:0;padding:15px 30px 15px 15px;pointer-events:none;position:absolute;top:0;width:100%;z-index:0}.dropdown__input--searchable:focus{opacity:1}.dropdown__input--searchable:focus+.dropdown__selected-item{opacity:0!important}.dropdown__arrow-wrapper,.dropdown__clear-wrapper{align-items:center;display:flex;flex-shrink:0;justify-content:center;margin-left:5px;transition:.2s;width:1em}.dropdown__options{background-color:var(--color-white);border:.5px solid var(--color-neutral-30);border-radius:0 0 4px 4px;border-top:0;bottom:0;left:-.75px;list-style:none;margin:0;max-height:0;overflow:auto;padding:0;position:absolute;transform:translateY(100%);visibility:hidden;width:calc(100% + 1.25px)}.dropdown__item{cursor:pointer;max-width:100%;overflow:hidden;padding:15px;text-overflow:ellipsis}.dropdown__item:not(:last-child){border-bottom:.5px solid var(--color-neutral-30)}.dropdown__item--highlighted,.dropdown__item:hover{background-color:var(--color-primary);color:var(--color-white)}.dropdown__item span{margin-right:5px}.tag{background-color:#dde8f6;border-radius:3px;color:#4a90e2;display:inline-block;font-size:13px;font-weight:500;letter-spacing:.5px;margin:5px 8px 5px 0;padding:4px 11px;text-transform:capitalize}.myinterview-text--XS{font-size:12px;line-height:20px}.myinterview-text--S{font-size:14px;line-height:22px}.myinterview-text--M{font-size:16px;line-height:24px}.myinterview-text--L{font-size:18px;line-height:26px}.myinterview-text--H3{font-size:20px;line-height:28px}.myinterview-text--H2{font-size:24px;line-height:32px}.myinterview-text--H1{font-size:30px;line-height:38px}.myinterview-text--D3{font-size:38px;line-height:46px}.myinterview-text--D2{font-size:48px;line-height:54px}.myinterview-text--D1{font-size:56px;line-height:64px}.myinterview-text--regular{font-weight:400}.myinterview-text--semibold{font-weight:600}.myinterview-text--bold{font-weight:700}.myinterview-text--italic{font-style:italic}.myinterview-text--truncated{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.toggle-switch{align-items:center;border-radius:99999px;cursor:pointer;display:flex;position:relative;transition:.2s}.toggle-switch__indicator{border-radius:50%;height:.65em;left:10%;position:absolute;transition:.2s;width:.65em}.toggle-switch__indicator--active{left:90%;transform:translateX(-100%)}.toggle-switch:active .toggle-switch__indicator{height:.5em;width:.5em}.toggle-text{align-items:center;cursor:pointer;display:flex;justify-content:center;width:fit-content}.toggle-text__arrow-wrapepr{align-items:center;display:flex;margin-left:5px;transition:.25s ease-in-out;width:1em}.toggle-text__arrow-wrapepr--opened{transform:rotate(-180deg)}.progress{align-items:center;border-radius:50%;display:flex;height:1em;justify-content:center;width:1em}.progress__fill{border-radius:50%;height:.7em;width:.7em}.input-text{display:flex;flex-direction:column;flex-grow:1}.input-text__field{border:.5px solid var(--color-neutral-30);border-radius:10px;font-size:14px;padding:14px 16px;width:100%}.input-text__field--with-icon{padding:14px 43px!important}.input-text__icon-container{margin:10px 12px;position:absolute}.input-text__icon-container i{vertical-align:-webkit-baseline-middle}.input-text__icon-container i svg{height:22px;width:22px}.input-text--error{border:1px solid var(--color-error)}.input-text__error-msg{color:var(--color-error);margin-top:3px}.dnd-wrapper{border:1px solid var(--color-neutral-30);border-radius:10px;height:50px;max-width:500px;padding:7px 10px;position:relative;transition:.3s ease-in-out;width:100%}.dnd-wrapper__placeholder{color:var(--color-neutral-50);font-size:14px;margin-left:5px}.dnd-wrapper__left-hand{align-items:flex-end;display:flex}.dnd-wrapper--scale{transform:scale(1.1)}.dnd-wrapper--border-solid{border:.5px solid var(--color-neutral-30)}.dnd-wrapper__label{align-items:center;display:flex;font-size:14px;height:100%;justify-content:center}.dnd-wrapper__label svg{height:16px;vertical-align:middle;width:16px}.dnd-wrapper__label--with-icon{justify-content:space-between}.dnd-wrapper__label--with-icon i{color:var(--color-neutral-60)}.dnd-wrapper__label--uploaded,.dnd-wrapper__label--uploading{justify-content:flex-start}.dnd-wrapper__label .progress{height:18px;margin-right:5px;width:18px}.dnd-wrapper__icon{align-items:center;display:flex}.dnd-wrapper__icon--clip{font-size:18px;transform:rotate(10deg) rotateX(180deg)}.dnd-wrapper__icon--close{cursor:pointer;margin-left:auto;z-index:10}.dnd-wrapper__text{margin-left:5px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dnd-wrapper__input{cursor:pointer;height:100%;left:0;opacity:0;position:absolute;top:0;width:100%;z-index:1}.dnd-wrapper__input:disabled{cursor:auto}.myinterview-modal-wrapper{border-radius:4px;box-shadow:0 4px 6px -1px #00000014,0 2px 4px -1px #0000000f;left:50%;max-height:90vh;max-width:90vw;overflow:auto;position:fixed;top:50%;transform:translate(-50%,-50%);z-index:30}.myinterview-modal-wrapper--fullscreen{border-radius:0;box-shadow:none;height:100vh;left:0;max-height:100vh;max-width:100vw;padding:0;top:0;transform:none;width:100vw}.myinterview-modal-wrapper__box{height:100%;max-height:100%;max-width:100%;overflow:auto;width:100%}.myinterview-modal-wrapper__close-btn{cursor:pointer;height:16px;position:absolute;right:20px;top:20px;width:16px}.myinterview-modal-wrapper-background{background-color:#0000001a;height:100vh;left:0;position:fixed;top:0;width:100vw}.phone-number{border:.5px solid var(--color-neutral-30);border-radius:10px;display:flex;position:relative}.phone-number--opened{border-radius:10px 10px 0 0!important}.phone-number--opened--up{border-radius:0 0 10px 10px!important}.phone-number .dropdown{border-right:.5px solid var(--color-neutral-20);padding:0 15px;width:75px}.phone-number .dropdown__selected-item{font-size:16px}.phone-number .input-text{border:0;flex:1}.myinterview-logo-wrapper{max-height:400px}.myinterview-checkbox{align-items:center;border-radius:4px;border-style:solid;border-width:1px;display:flex;flex-shrink:0;justify-content:center;position:relative;transition:all .15s ease-out}.myinterview-checkbox__input{cursor:pointer;height:100%;left:0;opacity:0;position:absolute;top:0;width:100%;z-index:1}.myinterview-checkbox__checkmark{border-radius:50%;display:flex;height:100%;padding:2px;transform:scale(0);transition:.15s ease-out;width:100%}.myinterview-checkbox__checkmark--checked{border-radius:0;transform:scale(1)}.myinterview-checkbox__checkmark svg{height:100%;width:100%}.myinterview-widget-no-select{-webkit-tap-highlight-color:transparent;-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.myinterview-widget-scroll-indicator::-webkit-scrollbar{display:initial!important;width:5px}.myinterview-widget-scroll-indicator::-webkit-scrollbar-thumb{background:var(--color-neutral-40)}@keyframes fade-in{0%{opacity:0}}:host{--myinterview-widget-dynamic-overflow:auto;--myitnerview-widget-background-height:calc(40vh - 100px);--myinterview-widget-background-preview-display:none;--myinterview-widget-video-aspect-ratio:0.75;--myinterview-widget-camera-transform:translateZ(0) rotateY(180deg);--myinterview-widget-outer-width:530px;--myinterview-widget-recorder-border-radius:10px;--myinterview-widget-preview-video-border-radius:20px;--myinterview-background-opacity:0}@media (min-width:1200px){:host{--myinterview-widget-recorder-border-radius:20px;--myinterview-widget-preview-video-border-radius:10px}}.myinterview-widget{word-wrap:normal;--myinterview-widget-layout-top:0;--myinterview-widget-layout-right:0;--myinterview-widget-layout-bottom:0;--myinterview-widget-layout-left:0;border-collapse:initial;border-spacing:0;caption-side:top;cursor:auto;direction:ltr;empty-cells:show;font-size:1rem;font-size-adjust:none;font-stretch:normal;font-style:normal;font-variant:normal;font-weight:400;letter-spacing:normal;line-height:normal;list-style-image:none;list-style-position:outside;list-style-type:disc;orphans:2;quotes:initial;tab-size:8;text-align:initial;text-align-last:auto;text-decoration-color:initial;text-indent:0;text-justify:auto;text-shadow:none;text-transform:none;visibility:visible;white-space:normal;widows:2;word-break:normal;word-spacing:normal}.myinterview-widget *,.myinterview-widget :after,.myinterview-widget :before{box-sizing:border-box;font-family:Nunito Sans,sans-serif;margin:0}.myinterview-widget__layout{background-color:var(--color-white);border-radius:0;bottom:0;left:0;padding:20px 20px 0;position:fixed;right:0;top:0;transform:translateZ(0);-webkit-transform:translateZ(0);z-index:2147483000}.myinterview-widget__layout--animated{animation:myinterview-widget-open .4s ease-out;-webkit-animation:myinterview-widget-open .4s ease-out;-moz-animation:myinterview-widget-open .4s ease-out;-o-animation:myinterview-widget-open .4s ease-out}.myinterview-widget__layout--minimized{animation:myinterview-widget-minimize .5s ease-in-out forwards;-webkit-animation:myinterview-widget-minimize .5s ease-in-out forwards;-moz-animation:myinterview-widget-minimize .5s ease-in-out forwards;-o-animation:myinterview-widget-minimize .5s ease-in-out forwards;overflow:hidden}.myinterview-widget__layout--minimized>*{opacity:0;transition:opacity .2s ease-out}@media (min-width:480px){.myinterview-widget__layout{display:grid;grid-template-columns:minmax(20px,1fr) minmax(auto,480px) minmax(20px,1fr);padding:20px 0 0}.myinterview-widget__layout>*{grid-column:2}.myinterview-widget__layout>.full{grid-column:1/-1;padding:0}}@media (min-width:1200px){.myinterview-widget__layout{grid-template-columns:10px 1fr 10px;padding:50px 0}}@keyframes myinterview-widget-open{0%{background-color:var(--color-primary);border-radius:10px;bottom:var(--myinterview-widget-layout-bottom);left:var(--myinterview-widget-layout-left);min-height:45px;overflow:hidden;padding:0;right:var(--myinterview-widget-layout-right);top:var(--myinterview-widget-layout-top)}50%{background-color:var(--color-white)}}@keyframes myinterview-widget-minimize{90%{border-radius:10px;bottom:var(--myinterview-widget-layout-bottom);left:var(--myinterview-widget-layout-left);min-height:45px;opacity:1;padding:0;right:var(--myinterview-widget-layout-right);top:var(--myinterview-widget-layout-top);z-index:2147483000}99%{opacity:0}to{background-color:var(--color-primary);border-radius:10px;bottom:var(--myinterview-widget-layout-bottom);left:var(--myinterview-widget-layout-left);min-height:45px;opacity:0;padding:0;right:var(--myinterview-widget-layout-right);top:var(--myinterview-widget-layout-top);z-index:-1}}.myinterview-widget-icons__play-button{cursor:pointer;position:relative}.myinterview-widget-icons__play-button svg{color:var(--color-primary)}.myinterview-widget-icons__play-button svg path{transition:d .4s ease-out;-webkit-transition:d .4s}.myinterview-widget-icons__play-button svg rect{transition:rx .4s;-webkit-transition:rx .4s}.myinterview-widget-icons__loading{background-color:currentColor;border-radius:50%;height:38px;overflow:hidden;position:relative;transform:translateZ(0);width:38px}.myinterview-widget-icons__loading:after{animation:slide 1s infinite;background:linear-gradient(to right,currentColor,var(--color-neutral-10),currentColor);content:\"\";height:100%;left:-50px;position:absolute;width:100%}.myinterview-widget-icons__no-camera-mic{align-items:center;background-color:#eff6fe;border-radius:50%;display:flex;height:80px;justify-content:center;position:relative;width:80px}.myinterview-widget-icons__no-camera-mic__camera,.myinterview-widget-icons__no-camera-mic__mic{align-items:center;border-radius:4px;display:flex;height:28px;justify-content:center;position:absolute;width:28px}.myinterview-widget-icons__no-camera-mic__camera svg,.myinterview-widget-icons__no-camera-mic__mic svg{height:20px;width:20px}.myinterview-widget-icons__no-camera-mic__camera{background-color:var(--color-primary);color:var(--color-white);transform:translate(-35%,-35%)}.myinterview-widget-icons__no-camera-mic__mic{background-color:var(--color-white);color:var(--color-primary);transform:translate(35%,35%)}.myinterview-widget__wrapper{-ms-overflow-style:none;display:flex;flex-direction:column;height:100%;max-height:100%;overflow:hidden;position:relative;scrollbar-width:none}.myinterview-widget__wrapper ::-webkit-scrollbar,.myinterview-widget__wrapper::-webkit-scrollbar{display:none}.myinterview-widget__wrapper--hide-header .myinterview-widget-header{visibility:hidden}.myinterview-widget__background{background:linear-gradient(50.24deg,var(--color-primary) 0,var(--color-special) 75%);height:var(--myitnerview-widget-background-height);left:0;opacity:var(--myinterview-background-opacity);overflow:hidden;position:absolute;top:0;transition:opacity .5s;width:100%}.myinterview-widget__background:before{border:6vh solid hsla(0,0%,100%,.267);border-radius:50%;content:\"\";height:30vh;position:absolute;right:0;top:0;transform:translate(50%,-50%);width:30vh}.myinterview-widget__background:after{background-color:var(--color-white);border-radius:20px 20px 0 0;bottom:0;content:\"\";display:var(--myinterview-widget-background-preview-display);height:20px;position:absolute;width:100%}@media (min-width:1200px){.myinterview-widget__background:after{display:none}.myinterview-widget__background{height:100vh;left:auto;right:0;width:calc(100% - var(--myinterview-widget-outer-width))}.myinterview-widget__background:before{border:12vh solid hsla(0,0%,100%,.267);height:70vh;width:70vh}}.myinterview-widget__watermark{display:none}@media (min-width:1200px){.myinterview-widget__watermark{bottom:20px;display:flex;height:64px;left:20px;position:absolute}}.myinterview-widget__background-dots{display:none}@media (min-width:1200px){.myinterview-widget__background-dots{background-image:radial-gradient(hsla(0,0%,100%,.467) 15%,#0000 0);background-position:0 0,50px 50px;background-size:20px 20px;bottom:0;display:flex;height:200px;position:absolute;right:0;width:200px}}.myinterview-widget__views{--myinterview-widget-views-margin-top:0px;--myinterview-widget-practice-opacity:1;-webkit-overflow-scrolling:touch;color:var(--color-primary);display:flex;flex:1;flex-direction:column;height:100%;overflow-y:var(--myinterview-widget-dynamic-overflow);scroll-snap-type:y mandatory;z-index:20}.myinterview-widget__views--uploading{gap:0;justify-content:center;margin-bottom:30px}@media (min-width:1200px){.myinterview-widget__views{align-items:start;flex:initial;flex:1;flex-direction:row-reverse;gap:0;justify-content:flex-end;overflow:hidden;padding:0;scroll-snap-type:none}.myinterview-widget__views--uploading{margin-bottom:0}}.myinterview-widget__views--rtl .myinterview-widget--rtl-support{direction:rtl}.myinterview-widget-recording-action-button{margin-bottom:20px;min-height:45px;position:relative;scroll-snap-align:end;z-index:1}@media (min-width:1200px){.myinterview-widget-recording-action-button{display:none}}.myinterview-widget-recording-action-button--video-question:disabled{display:none!important}.myinterview-widget-recording-action-button--stop-recording{border:1px solid var(--color-neutral-40)!important}@media (min-width:1200px){.myinterview-widget-recording-action-button--stop-recording{border:none!important}}.myinterview-widget-rotate-screen{align-items:center;animation:fade-in .3s;background-color:var(--color-white);display:none;height:100%;justify-content:center;left:0;padding:20px!important;position:absolute;top:0;width:100%;z-index:400}.myinterview-widget-rotate-screen svg{flex:0;margin-right:40px;min-width:120px}@media screen and (orientation:landscape){.myinterview-widget-rotate-screen{display:flex}}.myinterview-widget-unsupported-modal{align-items:center;background-color:var(--color-white);display:flex;height:100%;justify-content:center;left:0;padding:20px;position:absolute;top:0;width:100%;z-index:400}.myinterview-widget-unsupported-modal__message{text-align:center}.myinterview-widget-minimize{color:var(--color-white);cursor:pointer;display:none;height:20px;position:fixed;right:30px;top:30px;width:20px;z-index:50}@media (min-width:1024px){.myinterview-widget-minimize{display:flex}}.myinterview-widget-header{display:flex;flex-wrap:wrap;gap:18px;height:fit-content;margin:0 0 20px;max-height:112px;max-width:100%;overflow:hidden;transition:all .2s}.myinterview-widget-header--hidden{height:0;margin:0;overflow:hidden}@media (min-width:1200px){.myinterview-widget-header--hidden{height:fit-content;margin:0 0 20px}}.myinterview-widget-header__logo{height:48px}.myinterview-widget-header__logo img{flex-shrink:1;max-height:100%;max-width:100%;object-fit:contain;overflow:hidden}.myinterview-widget-header__details-wrapper{display:flex;flex-direction:column;flex-shrink:0;justify-content:center;letter-spacing:.2px;max-width:100%;min-width:60%;overflow:hidden}@media (min-width:1200px){.myinterview-widget-header{display:none;max-width:var(--myinterview-widget-outer-width);overflow:visible;padding-left:20px}.myinterview-widget-header__company-name{color:var(--color-neutral-50)}.myinterview-widget-header__job-title{color:var(--color-neutral-90)}}.myinterview-widget-header--desktop-layout{display:none}@media (min-width:1200px){.myinterview-widget-header--desktop-layout{display:flex;min-height:48px}}.myinterview-widget-inner{align-items:center;display:flex;flex-direction:column;margin-bottom:20px;min-height:min((100vw - 40px) * 1/var(--myinterview-widget-video-aspect-ratio),480px * 1/var(--myinterview-widget-video-aspect-ratio));position:relative;scroll-snap-align:start;z-index:1}.myinterview-widget-inner--no-snap{scroll-snap-align:none}@media (min-width:1200px){.myinterview-widget-inner{background-color:var(--color-white);border-radius:var(--myinterview-widget-recorder-border-radius);box-shadow:0 4px 14px -2px #00000026;height:calc((100vw - 20px - var(--myinterview-widget-outer-width))*9/16);margin:auto;max-height:440px;max-width:782.2222222222px;min-height:auto;overflow:hidden;width:100%}}.myinterview-widget-inner--hidden{max-height:0;min-height:0;overflow:hidden;visibility:hidden}.myinterview-widget-inner--welcome-hidden{aspect-ratio:16/9;visibility:hidden;width:100%}.myinterview-widget-inner__content{max-height:100%;max-width:fit-content;min-height:200px;min-width:200px;position:sticky;top:0;width:calc(100% - var(--myinterview-widget-views-margin-top)*var(--myinterview-widget-video-aspect-ratio))}.myinterview-widget-inner__content--full-width{min-width:100%}@media (min-width:1200px){.myinterview-widget-inner__content{border-radius:var(--myinterview-widget-recorder-border-radius);height:100%;max-width:100%;position:static;width:100%}}.myinterview-widget-inner__content--error{display:flex;flex:1;flex-direction:column;height:calc(100% - var(--myinterview-widget-views-margin-top));max-width:100%;min-height:fit-content;width:100%}.myinterview-widget-inner .myinterview-widget-explanation{align-items:center;background-color:#fffffff2;border-radius:var(--myinterview-widget-recorder-border-radius);display:flex;flex-direction:column;height:100%;justify-content:center;padding:20px;position:absolute;text-align:center;white-space:pre-line;width:100%;z-index:1}.myinterview-widget-inner .myinterview-widget-explanation__main{margin-bottom:10px}.myinterview-widget-inner .myinterview-widget-recording-action-button{display:none}@media (min-width:1200px){.myinterview-widget-inner .myinterview-widget-recording-action-button{bottom:20px;display:block;left:50%;margin:0;position:absolute;transform:translate(-50%);white-space:nowrap;width:fit-content;z-index:20}}.myinterview-widget-inner--video-question-state,.myinterview-widget-inner--welcome-page-state{min-height:fit-content;min-width:100%}@media (min-width:1200px){.myinterview-widget-inner--video-question-state,.myinterview-widget-inner--welcome-page-state{min-width:auto}.myinterview-widget-inner--video-question-state .myinterview-widget-recording-action-button,.myinterview-widget-inner--welcome-page-state .myinterview-widget-recording-action-button{bottom:70px}}.myinterview-widget-inner--full{flex:1;scroll-snap-align:none}.myinterview-widget-inner--full .myinterview-widget-inner__content{flex:1;height:max-content;max-width:100%;width:100%}@media (min-width:1200px){.myinterview-widget-inner--full{flex:auto}}.myinterview-widget-outer{border-radius:10px;display:flex;flex-direction:column;padding-bottom:20px;scroll-snap-align:end}.myinterview-widget-outer--no-snap{scroll-snap-align:none}.myinterview-widget-outer--hidden{display:none}.myinterview-widget-outer--uploading{flex:0;padding:0}@media (min-width:1200px){.myinterview-widget-outer{background-color:initial;flex:none;height:100%;padding:0 20px 0 0!important;width:var(--myinterview-widget-outer-width)}.myinterview-widget-outer>*{padding:0 20px}.myinterview-widget-outer--hidden{display:flex}.myinterview-widget-outer--uploading{padding:0}}.myinterview-widget-outer .myinterview-widget-question{background-color:#fffffff2;border-radius:10px;margin:0 auto;transition:opacity .25s;width:100%}@media (min-width:1200px){.myinterview-widget-outer .myinterview-widget-question{padding:50px 20px 0}.myinterview-widget-outer .myinterview-widget-question__question{font-size:26px;line-height:36px}}.myinterview-widget-outer--hide-question .myinterview-widget-question{height:0;opacity:0;visibility:hidden}.myinterview-widget-outer__setup{display:flex;flex:1;flex-direction:column}.myinterview-widget-outer__title{margin-bottom:15px}.myinterview-widget-outer__mode-wrapper{background-color:var(--color-white);bottom:0;display:flex;justify-content:space-around;margin-top:15px;padding:10px 0;position:sticky}.myinterview-widget-outer__mode-wrapper:before{background-color:var(--color-white);content:\"\";height:40px;left:0;mask-image:linear-gradient(#0000,var(--color-black));-webkit-mask-image:linear-gradient(#0000,var(--color-black));mask-mode:alpha;position:absolute;top:0;transform:translateY(-100%);width:100%}@media (min-width:1200px){.myinterview-widget-outer__mode-wrapper{background-color:initial;flex-direction:column;justify-content:flex-start;padding:0;position:static;width:65%}.myinterview-widget-outer__mode-wrapper:after,.myinterview-widget-outer__mode-wrapper:before{display:none}}.myinterview-widget-outer__mode-button{letter-spacing:.5px;max-width:42%!important;min-width:100px!important;padding:0 15px!important;width:150px!important}.myinterview-widget-outer__mode-button--start{border:1px solid!important}.myinterview-widget-outer__mode-button--single{background-color:var(--color-special);color:var(--color-white);max-width:100%!important;width:100%!important}@media (min-width:1200px){.myinterview-widget-outer__mode-button{max-width:100%!important;min-width:150px!important;width:100%!important}.myinterview-widget-outer__mode-button:first-child{margin-bottom:20px}}.myinterview-widget-outer__practice-mode-info{margin-bottom:20px}.myinterview-widget-outer .myinterview-widget__countdown-mobile{display:none}.myinterview-widget-video-camera{border-radius:var(--myinterview-widget-recorder-border-radius);display:flex;flex:1;flex-direction:column;max-height:100%;position:relative;width:100%}@media (min-width:1200px){.myinterview-widget-video-camera{transform:translateZ(0) scale(1.005)}}.myinterview-widget-video-camera--hidden{display:none}.myinterview-widget-video-camera video{border-radius:var(--myinterview-widget-recorder-border-radius);object-fit:contain;overflow:hidden;transform:var(--myinterview-widget-camera-transform);-webkit-transform:var(--myinterview-widget-camera-transform);width:100%}.myinterview-widget-video-camera__recording-counter-wrapper{left:10px;position:absolute;top:10px;width:100px;z-index:2}@media (min-width:1200px){.myinterview-widget-video-camera__recording-counter-wrapper{left:25px;top:25px}}.myinterview-widget-video-camera__permissions{align-items:center;animation:fade-in .5s;background-color:#fffffff2;border-radius:var(--myinterview-widget-recorder-border-radius);color:var(--color-neutral-90);display:flex;height:100%;justify-content:center;padding:20px;position:absolute;width:100%;z-index:21}.myinterview-widget-video-camera__permissions-close{cursor:pointer;left:25px;position:absolute;top:25px;width:20px}.myinterview-widget-video-camera .myinterview-widget__microphone-indicator{align-items:center;background-color:var(--color-primary);border-radius:50%;bottom:18px;color:var(--color-white);display:flex;height:40px;isolation:isolate;justify-content:center;left:18px;padding:10px;position:absolute;width:40px}.myinterview-widget-video-camera .myinterview-widget__microphone-indicator--hidden{visibility:hidden}@media (min-width:1200px){.myinterview-widget-video-camera .myinterview-widget__microphone-indicator{bottom:25px;left:auto;right:25px}}.myinterview-widget-video-camera .myinterview-widget__microphone-indicator:after{background:radial-gradient(#0000 40%,var(--color-primary) 90%);border-radius:50%;content:\"\";height:100%;position:absolute;transform:scale(var(--myinterview-widget-voice-level));transform-origin:center;width:100%;will-change:transform;z-index:-1}.myinterview-widget-video-camera .myinterview-widget__microphone-indicator svg{height:100%;width:100%}.myinterview-widget-video-camera .myinterview-widget__practice-mode{opacity:var(--myinterview-widget-practice-opacity);position:absolute;right:10px;top:10px;transition:opacity .3s}@media (min-width:1200px){.myinterview-widget-video-camera .myinterview-widget__practice-mode{opacity:1;right:25px;top:25px}}.myinterview-widget-video-camera .myinterview-widget__question-number{left:15px;top:15px;z-index:1}@media (min-width:1200px){.myinterview-widget-video-camera .myinterview-widget__question-number{left:40px;letter-spacing:.5px;top:30px}}.myinterview-widget-video-camera .myinterview-widget__countdown-desktop{display:none}.myinterview-widget-video-camera__watermark{height:50px;left:15px;opacity:.5;position:absolute;top:15px;width:120px}@media (min-width:1200px){.myinterview-widget-video-camera__watermark{left:25px;top:25px}}.myinterview-widget-recorder-modal{align-items:center;animation:fade-in .5s;background-color:#fffffff2;border-radius:var(--myinterview-widget-recorder-border-radius);bottom:0;color:var(--color-neutral-90);display:flex;filter:drop-shadow(0 0 0 rgba(0,0,0,.2));justify-content:center;left:0;min-height:100%;overflow:hidden;position:absolute;right:0;text-align:center;top:0;z-index:20}.myinterview-widget-recorder-modal__content-wrapper{align-items:center;display:flex;flex-direction:column;gap:5px;letter-spacing:.5px;max-width:80%}@media (min-width:1200px){.myinterview-widget-recorder-modal__content-wrapper{max-width:700px;padding:20px}}.myinterview-widget-recorder-modal__question{max-width:100%;overflow:hidden;overflow-wrap:break-word;text-align:left}@media (min-width:1200px){.myinterview-widget-recorder-modal__question{text-align:center}.myinterview-widget-recorder-modal__question .myinterview-widget__question-duration{justify-content:center}}.myinterview-widget-checks{display:flex;flex-direction:column}.myinterview-widget-checks__item{align-items:center;display:flex;gap:20px;margin-bottom:20px}.myinterview-widget-checks__icon{align-items:center;display:flex;height:100%;justify-content:center;width:40px}.myinterview-widget-checks__text-wrapper{display:flex;flex-direction:column}.myinterview-widget-checks__retry{background-color:initial;border:0;cursor:pointer;margin-left:10px;text-decoration:underline}.myinterview-widget-preview__container{background-color:var(--color-white);display:flex;flex-direction:column;min-height:100%;padding-top:20px;position:relative;width:100%}@media (min-width:1200px){.myinterview-widget-preview__container{border-radius:20px;max-height:100%;padding:4%}}.myinterview-widget-preview__container .myinterview-widget__question-number{margin-bottom:20px;position:relative}@media (min-width:1200px){.myinterview-widget-preview__container .myinterview-widget__question-number{color:var(--color-neutral-90);margin:0;position:absolute}}.myinterview-widget-preview__container .myinterview-widget-errors{animation:fade-in .3s;background-color:var(--color-white);bottom:0;left:0;padding:20px;position:absolute;right:0;text-align:center;top:0;transform:translateZ(150px);-webkit-transform:translateZ(150px);z-index:150}.myinterview-widget-preview__title{margin-bottom:30px;text-align:center}@media (min-width:1200px){.myinterview-widget-preview__title{color:var(--color-neutral-90);margin-bottom:12px}}.myinterview-widget-preview__background{animation:background-fade-in .3s ease-out;background-color:#000000e6;height:100%;isolation:isolate;left:0;position:fixed;top:0;transform:translateZ(150px);width:100%;z-index:150}@keyframes background-fade-in{0%{background-color:#0000;transform:translateZ(-2px);z-index:-2}}.myinterview-widget-preview__close{background-color:var(--color-neutral-60);border-radius:2.5rem;bottom:1vh;left:50%;padding:3px 8px;position:absolute;transform:translateX(-50%)}.myinterview-widget-preview__main{animation:fade-in .5s;display:flex;height:350px;margin:auto;position:relative;touch-action:pan-y;width:100%;z-index:1}.myinterview-widget-preview__main--hide-overflow{overflow:hidden}.myinterview-widget-preview__items-wrapper{--myinterview-widget-preview-transform-x:0;--myinterview-widget-preview-item-transition:0ms;--myinterview-widget-item-width:100%;box-sizing:initial;display:flex;margin-bottom:10px;position:relative;transition-duration:0ms;transition-property:transform;width:100%;z-index:2}.myinterview-widget-preview__items-wrapper--centered{justify-content:center}.myinterview-widget-preview__item{display:flex;flex-direction:column;flex-shrink:0;height:100%;justify-content:center;padding:2%;position:relative;transition:transform var(--myinterview-widget-preview-item-transition);width:var(--myinterview-widget-item-width);z-index:1}.myinterview-widget-preview__item--current{z-index:2}.myinterview-widget-preview__item--single-take{width:50%}.myinterview-widget-preview__video-wrapper{border:0 solid var(--color-primary);border-radius:var(--myinterview-widget-preview-video-border-radius);display:flex;margin:0 auto;opacity:1;overflow:hidden;position:relative;transition-delay:.29s;z-index:3}.myinterview-widget-preview__video-wrapper--mobile{aspect-ratio:var(--myinterview-widget-video-aspect-ratio);height:100%}@media (min-width:1200px){.myinterview-widget-preview__video-wrapper{border-radius:var(--myinterview-widget-preview-video-border-radius);margin:0}}.myinterview-widget-preview__video-wrapper:before{background-color:rgba(0,0,0,.267);border-radius:var(--myinterview-widget-preview-video-border-radius);content:\"\";height:100%;left:0;pointer-events:none;position:absolute;top:0;transform:translateZ(1px);transition:background-color .3s;width:100%;z-index:1}.myinterview-widget-preview__video-wrapper--current:before,.myinterview-widget-preview__video-wrapper--preview:before,.myinterview-widget-preview__video-wrapper:hover:before{background-color:#0000;pointer-events:none}.myinterview-widget-preview__video-wrapper--preview-mobile{opacity:0}.myinterview-widget-preview__video-wrapper:after{border:0 solid var(--color-primary);border-radius:var(--myinterview-widget-preview-video-border-radius);content:\"\";height:100%;pointer-events:none;position:absolute;transition:.15s;width:100%}@media (min-width:1200px){.myinterview-widget-preview__video-wrapper:after{border-radius:var(--myinterview-widget-preview-video-border-radius)}}.myinterview-widget-preview__video-wrapper--selected:before{background-color:#0000;z-index:-1}.myinterview-widget-preview__video-wrapper--selected:after{border:3px solid var(--color-primary)}.myinterview-widget-preview__video{cursor:pointer;transform:translateZ(0);-webkit-transform:translateZ(0);width:100%}.myinterview-widget-preview__dynamic-video{--myinterview-preview-video-top:50%;--myinterview-preview-video-left:50%;--myinterview-preview-video-width:0%;--myinterview-preview-video-height:0%;border-radius:var(--myinterview-widget-preview-video-border-radius);height:var(--myinterview-preview-video-height);left:var(--myinterview-preview-video-left);position:fixed;top:var(--myinterview-preview-video-top);transform:translateZ(-1px);transition:all .3s ease-out;transition-delay:.01s;visibility:hidden;width:var(--myinterview-preview-video-width);z-index:-1}.myinterview-widget-preview__dynamic-video--preview{border-radius:0;height:100%;left:0;max-height:70vh;top:46%;transform:translate3d(0,-50%,200px);visibility:visible;width:100%;z-index:200}.myinterview-widget-preview__number-wrapper{align-items:center;cursor:pointer;display:flex;gap:5px;margin:7px auto 0;position:relative;width:fit-content}@media (min-width:1200px){.myinterview-widget-preview__number-wrapper{margin:7px 0 0}}.myinterview-widget-preview__selected-check-mark{align-items:center;border:1px solid var(--color-neutral-60);border-radius:50%;display:flex;height:20px;justify-content:center;overflow:hidden;padding:1px;pointer-events:none;position:relative;width:20px}.myinterview-widget-preview__selected-check-mark svg{transform:scale(0);-webkit-transform:scale(0);transition:.15s ease-out}.myinterview-widget-preview__selected-check-mark--selected{border:1px solid var(--color-primary)}.myinterview-widget-preview__selected-check-mark--selected svg{transform:scale(1);-webkit-transform:scale(1)}.myinterview-widget-preview__dots-wrapper{align-items:center;display:flex;height:20px;justify-content:center;width:100%}.myinterview-widget-preview__dot{background-color:var(--color-neutral-20);border-radius:50%;cursor:pointer;height:10px;margin:0 7px;position:relative;transition:.3s ease-out;width:10px}.myinterview-widget-preview__dot--selected{background-color:var(--color-primary);cursor:auto;transform:scale(1.5);-webkit-transform:scale(1.5)}.myinterview-widget-preview__play-container{align-items:center;cursor:pointer;display:flex;height:100%;justify-content:center;left:0;position:absolute;top:0;width:100%}.myinterview-widget-preview__play-button-wrapper{left:50%;top:50%;transform:translateZ(1px);transition:opacity .3s;width:60px}@media (min-width:1200px){.myinterview-widget-preview__play-button-wrapper{max-width:76px;width:25%}}.myinterview-widget-preview__horizontal-line{display:none}@media (min-width:1200px){.myinterview-widget-preview__horizontal-line{background-color:#bdbdbd;display:block;height:1px;margin:15px auto;width:50%}}.myinterview-widget-preview__preview-buttons{align-items:center;display:flex;flex-direction:column;gap:20px;margin-bottom:10px;margin-top:33px;max-width:100%}@media (min-width:1200px){.myinterview-widget-preview__preview-buttons{gap:10px;margin-bottom:0;margin-top:auto}}.myinterview-widget-preview__preview-buttons-top{display:flex;gap:10px;justify-content:space-evenly;max-width:100%;width:100%}@media (min-width:1200px){.myinterview-widget-preview__preview-buttons-top{justify-content:center;width:auto}}.myinterview-widget-preview__preview-button{max-width:45%;min-width:100px;width:150px}.myinterview-widget-preview__preview-button--retake{align-items:center;border:1px solid var(--color-neutral-30);display:flex;justify-content:center;max-width:100%}.myinterview-widget-preview__preview-button--start-interview{background-color:initial;color:var(--color-primary);font-size:13px;max-height:30px;max-width:max-content;padding:0;width:max-content}@media (min-width:1200px){.myinterview-widget-preview__preview-button{flex:1;max-height:42px;min-width:150px}}.myinterview-widget-preview__retakes-wrapper{max-width:45%;min-width:100px;text-align:center;width:150px}@media (min-width:1200px){.myinterview-widget-preview__retakes-wrapper{max-height:42px;min-width:150px}}.myinterview-widget-preview__retakes-left{color:var(--color-neutral-60)}.myinterview-widget-preview__arrow{align-items:center;animation:fade-in .3s;display:flex;height:100%;justify-content:center;min-width:40px;position:absolute;right:0;z-index:5}@media (min-width:1200px){.myinterview-widget-preview__arrow{min-width:4%;transform:translateX(75%)}.myinterview-widget-preview__arrow:before{background-color:#fff;content:\"\";height:100%;left:0;mask-image:linear-gradient(to right,#0000,var(--color-black));-webkit-mask-image:linear-gradient(to right,#0000,var(--color-black));position:absolute;transform:translateX(5px);width:100%}}.myinterview-widget-preview__arrow--prev{left:0;right:auto;transform:translateZ(5px) rotateY(180deg)}@media (min-width:1200px){.myinterview-widget-preview__arrow--prev{transform:translate3d(-75%,0,5px) rotateY(180deg)}}.myinterview-widget-preview__arrow-icon-wrapper{align-items:center;background-color:var(--color-white);border:1px solid var(--color-neutral-30);border-radius:50%;color:var(--color-neutral-90);cursor:pointer;display:flex;height:36px;justify-content:center;position:relative;transform:translateY(-11px);width:36px}@media (min-width:1200px){.myinterview-widget-preview__arrow-icon-wrapper{box-shadow:0 4px 30px #00000026}}.myinterview-widget-video-question{aspect-ratio:16/9;background-color:var(--color-black);border-radius:var(--myinterview-widget-recorder-border-radius);height:fit-content;isolation:isolate;margin:auto;overflow:hidden;position:relative;width:100%;z-index:1}@media (min-width:1200px){.myinterview-widget-video-question{height:100%}}.myinterview-widget-video-question--hidden{position:absolute;visibility:hidden;z-index:-1}.myinterview-widget-video-question--loading{background-color:hsla(0,0%,100%,.467)}.myinterview-widget-video-question--loading:before{animation:slide 1.5s infinite;background:linear-gradient(to right,#0000,var(--color-neutral-10),#0000);content:\"\";height:100%;left:-100%;position:absolute;top:0;width:100%;z-index:-1}@media (min-width:1200px){.myinterview-widget-video-question--loading{background-color:#ccd7f5}}.myinterview-widget-video-question:after{content:\"\";height:100%;left:0;position:absolute;top:0;width:100%}.myinterview-widget-video-question--done:after{background-color:var(--color-black)}.myinterview-widget-video-question__play-button-wrapper{left:50%;position:absolute;top:50%;transform:translate(-50%,-50%);-webkit-transform:translate(-50%,-50%);transition:transform .2s ease-out,opacity .3s ease-out;width:clamp(50px,15vw,76px);z-index:1}.myinterview-widget-video-question__play-button-wrapper--hidden{opacity:0;pointer-events:none;touch-action:none;transform:translate(-50%,-50%) scale(1.3);-webkit-transform:translate(-50%,-50%) scale(1.3)}.myinterview-widget-video-question__controls{align-items:center;bottom:0;display:flex;justify-content:center;left:0;margin:10px 12px;position:absolute;right:0;transition:opacity .2s,transform .2s;z-index:1}.myinterview-widget-video-question__controls--inactive{opacity:0;pointer-events:none;touch-action:none;transform:translateY(25%)}.myinterview-widget-video-question__controls>:not(:last-child){margin-right:15px}.myinterview-widget-video-question__controls .myinterview-widget-video-question__control-play-button{min-width:40px;width:50px}.myinterview-widget-video-question__controls .myinterview-widget-video-question__control-play-button .myinterview-widget-icons svg{color:var(--color-white)}.myinterview-widget-video-question__timebar-counter-wrapper{width:100%}.myinterview-widget-video-question__counter-wrapper{-webkit-text-stroke-width:.5px;-webkit-text-stroke-color:var(--color-neutral-90);color:var(--color-white);font-size:13px;font-weight:700}.myinterview-widget-video-question__time-bar{background-color:hsla(0,0%,100%,.467);border-radius:2.5rem;cursor:pointer;height:10px;margin-bottom:5px;position:relative;width:100%}.myinterview-widget-video-question__time-bar--disabled{cursor:auto;pointer-events:none}.myinterview-widget-video-question__time-bar:before{content:\"\";height:30px;left:0;position:absolute;top:0;transform:translateY(-30%);width:100%}@media (min-width:1200px){.myinterview-widget-video-question__time-bar:before{display:none}}.myinterview-widget-video-question__time-bar-progress{background-color:var(--color-primary);border-radius:2.5rem;height:100%;position:absolute;transition:width .25s linear}.myinterview-widget-video-question__time-bar-progress:after{background-color:var(--color-primary);border-radius:50%;content:\"\";height:15px;left:100%;pointer-events:none;position:absolute;top:50%;touch-action:none;transform:translate(-50%,-50%);width:15px}.myinterview-widget-video-question__time-bar-progress--changing{transition:none}.myinterview-widget-video-question__time-bar-progress--unchangeable{cursor:auto}.myinterview-widget-video-question__time-bar-progress--unchangeable:after{display:none}.myinterview-widget-video-question__retry-button{margin-top:20px;width:100%;z-index:2}.myinterview-widget-video-question__retry-button--hidden{position:absolute;visibility:hidden;z-index:-1}@media (min-width:1200px){.myinterview-widget-video-question__retry-button{bottom:70px;left:50%;margin:0 auto;position:absolute;transform:translateX(-50%);width:fit-content}}@keyframes slide{50%{opacity:.9}to{left:100%;opacity:1}}.myinterview-widget-device{align-items:center;background-color:var(--color-white);border-radius:50%;color:var(--color-neutral-90);display:flex;height:40px;justify-content:center;position:absolute;right:18px;width:40px}.myinterview-widget-device__mobile{bottom:18px}.myinterview-widget-device__desktop{right:18px;top:18px;z-index:30}@media (min-width:1200px){.myinterview-widget-device__desktop{right:25px;top:25px}}.myinterview-widget-device__menu-button{align-items:center;background-color:initial;border:none;border-radius:50%;cursor:pointer;display:flex;height:100%;justify-content:center;width:100%}.myinterview-widget-device__modal{--myinterview-widget-select-device-height:48px;background-color:var(--color-white);border-radius:20px;bottom:-15px;box-shadow:0 2px 12px -4px #0000001a;max-width:400px;min-width:300px;position:absolute;right:-12px;transform:translateY(100%)}.myinterview-widget-device__modal:before{background-color:var(--color-white);border-radius:5px;content:\"\";height:20px;position:absolute;right:22px;top:-8px;transform:rotate(45deg);width:20px}.myinterview-widget-device__select-wrapper{display:flex;flex-direction:column;overflow:hidden;padding:20px}.myinterview-widget-device__select-group{display:flex;flex-direction:column}.myinterview-widget-device__select-group:not(:last-child):after{background-color:var(--color-neutral-20);content:\"\";height:1px;margin:10px 0;width:100%}.myinterview-widget-device__selected-device{cursor:pointer;display:flex;height:var(--myinterview-widget-select-device-height);width:100%}.myinterview-widget-device__select-icon{align-items:center;display:flex;min-width:40px}.myinterview-widget-device__select-icon svg{height:20px;width:20px}.myinterview-widget-device__selected-title-wrapper{flex:1;overflow:hidden;padding-right:23px}.myinterview-widget-device__selected-title{line-height:var(--myinterview-widget-select-device-height)!important;overflow:hidden;text-overflow:ellipsis;vertical-align:middle;white-space:nowrap}.myinterview-widget-device__arrow{align-items:center;display:flex;margin-left:auto;transform:rotate(0);transition:.2s}.myinterview-widget-device__arrow--open{transform:rotate(-180deg)}.myinterview-widget-device__select-list{display:flex;flex-direction:column;max-height:0;overflow:hidden;transition:max-height .2s ease-out}.myinterview-widget-device__select-list--open{max-height:calc(var(--myinterview-widget-select-device-height)*2);overflow:auto;transition:max-height .2s ease-in}.myinterview-widget-device__select-option{border-radius:4px;cursor:pointer;line-height:var(--myinterview-widget-select-device-height)!important;min-height:var(--myinterview-widget-select-device-height);overflow:hidden;padding:0 40px;text-overflow:ellipsis;white-space:nowrap}.myinterview-widget-device__select-option--selected,.myinterview-widget-device__select-option:hover{color:var(--color-primary)!important}.myinterview-widget-device__select-option--selected{background-color:rgba(90,164,245,.051)!important}.myinterview-widget__countdown-mobile{background-color:var(--color-white);border-radius:2.5rem;left:50%;padding:6px 10px;position:absolute;top:10px;transform:translateX(-50%);z-index:30}@media (min-width:1200px){.myinterview-widget__countdown-mobile{display:none}}.myinterview-widget__countdown-desktop{display:none}@media (min-width:1200px){.myinterview-widget__countdown-desktop{--myinterview-widget-p:100;--myinterview-widget-b:5px;--myinterview-widget-w:160px;align-items:center;display:flex;height:var(--myinterview-widget-w);justify-content:center;margin:auto;padding:0;position:relative;transform:rotateY(180deg);width:var(--myinterview-widget-w)}.myinterview-widget__countdown-desktop:after,.myinterview-widget__countdown-desktop:before{border-radius:50%;content:\"\";position:absolute}.myinterview-widget__countdown-desktop:before{background:radial-gradient(farthest-side,var(--color-primary) 100%,#0000) top/var(--myinterview-widget-b) var(--myinterview-widget-b) no-repeat,conic-gradient(var(--color-primary) calc((var(--myinterview-widget-p))*1%),#0000 0);inset:0;-webkit-mask:radial-gradient(farthest-side,#0000 calc(100% - var(--myinterview-widget-b)),#000 calc(100% - var(--myinterview-widget-b)));mask:radial-gradient(farthest-side,#0000 calc(100% - var(--myinterview-widget-b)),#000 calc(100% - var(--myinterview-widget-b)));transition:all 1s}.myinterview-widget__countdown-desktop:after{background:var(--color-primary);inset:calc(50% - var(--myinterview-widget-b)/2);transform:rotate(calc(var(--myinterview-widget-p)*3.6deg)) translateY(calc(50% - var(--myinterview-widget-w)/2))}}.myinterview-widget__countdown-desktop .myinterview-widget__countdown-desktop-text{align-items:center;border:var(--myinterview-widget-b) solid #edf6fe;border-radius:50%;display:flex;height:100%;justify-content:center;position:absolute;transform:rotateY(180deg);width:100%;z-index:-1}.myinterview-widget-counter{align-items:center;background-color:var(--color-white);border-radius:2.5rem;color:var(--color-neutral-90);display:flex;gap:5px;height:36px;justify-content:center}.myinterview-widget-counter__dot{background-color:var(--color-error);border-radius:50%;height:10px;width:10px}.myinterview-widget-counter__clock{display:flex}.myinterview-widget-counter__timer{transition:color .25s}.myinterview-widget-counter__timer--red{color:#f45b2b}.myinterview-widget-loader{-webkit-animation:fade 1.6s infinite;-moz-animation:fade 1.6s infinite;-o-animation:fade 1.6s infinite;animation:fade 1.6s infinite;margin:auto;width:80px}@keyframes fade{0%,to{opacity:0}50%{opacity:1}}@-o-keyframes fade{0%,to{opacity:0}50%{opacity:1}}@-moz-keyframes fade{0%,to{opacity:0}50%{opacity:1}}@-webkit-keyframes fade{0%,to{opacity:0}50%{opacity:1}}.myinterview-widget-error{align-items:center;display:flex;flex-direction:column;height:100%;justify-content:center;margin:auto}.myinterview-widget-error__message{margin-bottom:10px}.myinterview-widget-errors{align-items:center;display:flex;flex-direction:column;justify-content:center}.myinterview-widget-errors__icon{margin-bottom:15px}.myinterview-widget-errors__details,.myinterview-widget-errors__title{margin-bottom:5px}.myinterview-widget-errors__cta{cursor:pointer;position:relative;text-decoration:underline}.myinterview-widget-errors__cta .myinterview-widget-select-native{height:100%;left:0;opacity:0;position:absolute;top:0;width:100%}.myinterview-widget-slider-modal{animation:close-modal .3s forwards;bottom:0;height:100vh;height:-moz-available;height:-webkit-fill-available;height:stretch;left:0;min-height:100vh;min-height:-moz-available;min-height:-webkit-fill-available;min-height:stretch;overflow:hidden;position:fixed;width:100vw;z-index:50}.myinterview-widget-slider-modal__wrapper{-webkit-overflow-scrolling:touch;height:100%;overflow-y:auto;scroll-snap-type:y mandatory;width:100%}.myinterview-widget-slider-modal__top{min-height:100%;scroll-snap-align:start;touch-action:none}.myinterview-widget-slider-modal__bottom{background-color:var(--color-white);border-radius:20px 20px 0 0;display:flex;flex-direction:column;height:10%;isolation:isolate;min-height:10%;overflow:hidden;position:relative;scroll-snap-align:end;transition:min-height .5s,height .5s;visibility:hidden}.myinterview-widget-slider-modal__pill{background-color:var(--color-neutral-30);border-radius:2.5rem;margin:20px auto 32px;min-height:4px;width:60px}.myinterview-widget-slider-modal--open{animation:none;background-color:#0009;visibility:visible}.myinterview-widget-slider-modal--open .myinterview-widget-slider-modal__bottom{height:80%;min-height:80%;visibility:visible}@keyframes close-modal{0%{background-color:#0009}to{background-color:#0000;visibility:hidden}}.myinterview-widget-permissions__wrapper{display:flex;flex:1;flex-direction:column;margin:0 auto;max-height:100%;max-width:480px;overflow:auto;padding:0 20px 20px;width:100%}@media (min-width:1200px){.myinterview-widget-permissions__wrapper{padding:0 20px}}.myinterview-widget-permissions__icon-wrapper{align-items:center;background-color:#eff6fe;border-radius:50%;color:var(--color-primary);display:flex;justify-content:center;margin:0 auto 20px;min-height:70px;min-width:70px}.myinterview-widget-permissions__icon-wrapper svg{height:32px;width:32px}@media (min-width:1200px){.myinterview-widget-permissions__icon-wrapper{display:none!important}}.myinterview-widget-permissions__title{margin-bottom:20px;text-align:center}@media (min-width:1200px){.myinterview-widget-permissions__title{margin-bottom:15px}}.myinterview-widget-permissions__sub-title{margin-bottom:10px}.myinterview-widget-permissions__steps-wrapper{margin-bottom:15px;padding:0 20px}.myinterview-widget-permissions__step{font-size:14px;list-style:decimal;margin-bottom:10px}.myinterview-widget-permissions__step .text--bold{font-weight:700}.myinterview-widget-permissions__step .safari__key{background-color:var(--color-neutral-20);border-radius:2px;padding:2px 4px}.myinterview-widget-permissions__button{margin-top:auto;min-height:45px}.myinterview-widget-question{position:relative}.myinterview-widget-question:before{color:var(--color-neutral-10);content:attr(data-background-question);font-size:150px;font-weight:700;left:0;position:absolute;top:0;transform:translate(-25%,-25%)}.myinterview-widget-question>*{position:relative;z-index:1}.myinterview-widget-question--inner{position:static}.myinterview-widget-question--inner:before{color:var(--color-neutral-20);top:40%;transform:translate(-25%,-50%)}.myinterview-widget-question__description,.myinterview-widget-question__question{letter-spacing:.5px;margin-bottom:20px}.myinterview-widget-question__duration{display:inline-flex;gap:5px}.myinterview-widget-questions-list{display:none}@media (min-width:1200px){.myinterview-widget-questions-list{display:flex;flex-direction:column;overflow-y:auto;padding:0;position:relative}.myinterview-widget-questions-item{align-items:center;border-radius:0 4px 4px 0;display:flex;gap:20px;letter-spacing:.5px;max-width:100%;min-height:90px;overflow:hidden;padding:20px;position:relative}.myinterview-widget-questions-item__number{align-items:center;background-color:var(--color-neutral-20);border-radius:50%;color:var(--color-neutral-90);display:flex;height:38px;justify-content:center;min-width:38px}.myinterview-widget-questions-item__number--icon{background-color:var(--color-white);color:var(--color-primary)}.myinterview-widget-questions-item__wrapper{flex:1;overflow:hidden}.myinterview-widget-questions-item__question{display:flex;flex-direction:column;gap:2px;overflow:hidden}.myinterview-widget-questions-item__duration-wrapper{align-items:center;color:var(--color-neutral-50);display:flex;font-size:12px;gap:5px;line-height:20px}.myinterview-widget-questions-item__duration-wrapper *{font-size:12px;line-height:20px}.myinterview-widget-questions-item__duration-wrapper svg{width:15px}.myinterview-widget-questions-item--active{background-color:#f7fbff}.myinterview-widget-questions-item--active:before{background-color:var(--color-primary);content:\"\";height:100%;left:0;position:absolute;width:3px}.myinterview-widget-questions-item--active .myinterview-widget-questions-item__number{background-color:var(--color-white);border:1px solid var(--color-primary);color:var(--color-primary)}}.myinterview-widget-upload{align-items:center;background-color:var(--color-white);border-radius:20px;display:flex;flex-direction:column;height:100%;justify-content:center;margin:auto;max-height:500px;overflow:hidden;padding:40px;text-align:center;width:100%}@media (min-width:1200px){.myinterview-widget-upload{margin:0;min-height:360px}}.myinterview-widget-upload__icon{align-items:center;background-color:#5aa4f5;border:12px solid #d7e8fb;border-radius:50%;color:var(--color-white);display:flex;height:110px;justify-content:center;margin-bottom:30px;min-height:110px;position:relative;width:110px}.myinterview-widget-upload__icon:before{background-color:initial;border:12px solid #99c6f8;border-radius:50%;content:\"\";height:100%;position:absolute;width:100%}.myinterview-widget-upload__title{margin-bottom:20px}.myinterview-widget-upload__sub-title{margin-bottom:40px;white-space:pre-line}.myinterview-widget-upload__progress{margin-bottom:10px;width:100%}.myinterview-widget-upload__time-left{align-items:center;color:var(--color-neutral-90);display:flex;gap:10px}.myinterview-widget-top-tips{background-color:var(--color-white);color:var(--color-neutral-90);display:flex;flex-direction:column;padding:50px}.myinterview-widget-top-tips__title{margin-bottom:20px}.myinterview-widget-top-tips__tips{margin-bottom:10px;padding:0 15px}.myinterview-widget-top-tips li{margin-bottom:10px}.myinterview-widget__practice-mode{border-radius:2.5rem;height:36px;padding:5px 15px}.myinterview-widget__practice-mode,.myinterview-widget__recording-button{align-items:center;background-color:var(--color-white);display:flex;justify-content:center}.myinterview-widget__recording-button{border:1px solid var(--color-neutral-30);border-radius:50%;height:64px;width:64px}.myinterview-widget__recording-button-inner{background-color:var(--color-error);border-radius:50%;height:52px;width:52px}.myinterview-widget__recording-button-inner--stop{border-radius:2px;height:16px;width:16px}.myinterview-widget__question-number{position:absolute}.myinterview-widget__question-duration{align-items:center;display:flex;gap:8px}.myinterview-widget__question-duration svg{height:1em;width:1em}.myinterview-widget__progress{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:none;border-radius:2.5rem;height:15px;overflow:hidden;width:100%}.myinterview-widget__progress::-webkit-progress-bar{background-color:#e7f1ef}.myinterview-widget__progress::-webkit-progress-value{background-color:var(--color-success);transition:.3s}.myinterview-widget-welcome-page{display:flex;flex-direction:column;gap:20px;height:100%;margin:30px 0;max-height:100%;overflow:auto;position:relative}@media (min-width:1200px){.myinterview-widget-welcome-page{padding:0 20px}}.myinterview-widget-welcome-page__text-wrapper{display:flex;flex-direction:column;position:relative}.myinterview-widget-welcome-page__text{-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden;text-overflow:ellipsis;white-space:pre-line}.myinterview-widget-welcome-page__text--closed{-webkit-line-clamp:4;line-clamp:4}.myinterview-widget-welcome-page__toggle{margin-left:auto}.myinterview-widget-welcome-page__action-buttons{display:flex;gap:20px;justify-content:space-between}.myinterview-widget-welcome-page__continue-button{flex:1;max-width:250px;min-width:fit-content}.myinterview-widget-welcome-page__top-tips-button{margin:0 auto}.myinterview-widget-welcome-page__top-tips{align-items:center;display:flex;gap:10px;justify-content:center}.myinterview-modal-wrapper{background-color:var(--color-white);border-radius:0;height:100vh;max-height:100%;max-width:500px;opacity:0;pointer-events:none;top:75%;transition:top .2s ease-out,opacity .2s ease-out;width:100vw}@media (min-width:480px){.myinterview-modal-wrapper{border-radius:10px;height:auto}}.myinterview-modal-wrapper--opened{opacity:1;pointer-events:all;top:50%}.myinterview-modal-wrapper__close-btn{color:var(--color-neutral-90)}";
45822
45604
 
45823
45605
  const RotateScreenIcon = () => (React__default.createElement("svg", { width: "824", height: "800", viewBox: "0 0 824 800", fill: "none", xmlns: "http://www.w3.org/2000/svg" },
45824
45606
  React__default.createElement("rect", { x: "2.5", y: "2.5", width: "385", height: "795", rx: "37.5", stroke: "currentColor", strokeWidth: "5" }),