@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/cjs/index.js +726 -944
- package/dist/cjs/index.js.map +1 -1
- package/dist/esm/index.js +726 -944
- package/dist/esm/index.js.map +1 -1
- package/package.json +1 -1
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.
|
|
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
|
-
?
|
|
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.
|
|
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(
|
|
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
|
|
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 (
|
|
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
|
-
|
|
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.
|
|
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 = { ...
|
|
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
|
-
|
|
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
|
|
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
|
|
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
|
|
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
|
-
|
|
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
|
-
|
|
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 (
|
|
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 (
|
|
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
|
-
|
|
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
|
-
|
|
30116
|
-
|
|
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);
|
|
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
|
-
*
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
30446
|
-
|
|
30447
|
-
|
|
30448
|
-
|
|
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
|
|
30505
|
-
|
|
30506
|
-
|
|
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
|
-
|
|
30525
|
-
|
|
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
|
-
//
|
|
30548
|
-
|
|
30549
|
-
|
|
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
|
-
|
|
30553
|
-
|
|
30554
|
-
|
|
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
|
-
|
|
30570
|
-
|
|
30571
|
-
|
|
30572
|
-
|
|
30573
|
-
|
|
30574
|
-
|
|
30575
|
-
|
|
30576
|
-
|
|
30577
|
-
|
|
30578
|
-
|
|
30579
|
-
|
|
30580
|
-
|
|
30581
|
-
|
|
30582
|
-
|
|
30583
|
-
|
|
30584
|
-
|
|
30585
|
-
|
|
30586
|
-
|
|
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
|
-
|
|
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.
|
|
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
|
-
|
|
30815
|
-
const client =
|
|
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
|
|
30604
|
+
if (!client) {
|
|
30821
30605
|
return;
|
|
30822
30606
|
}
|
|
30823
30607
|
|
|
30824
|
-
const
|
|
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
|
-
|
|
30840
|
-
|
|
30841
|
-
|
|
30842
|
-
|
|
30843
|
-
|
|
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
|
-
|
|
30847
|
-
...replayEvent.tags,
|
|
30848
|
-
sessionSampleRate: options.sessionSampleRate,
|
|
30849
|
-
errorSampleRate: options.errorSampleRate,
|
|
30619
|
+
return _originalCallback(reason, category, event);
|
|
30850
30620
|
};
|
|
30851
30621
|
|
|
30852
|
-
|
|
30853
|
-
|
|
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
|
-
|
|
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
|
-
|
|
30949
|
-
if (!recordingData.length) {
|
|
30629
|
+
if (!client || !_originalRecordDroppedEvent) {
|
|
30950
30630
|
return;
|
|
30951
30631
|
}
|
|
30952
30632
|
|
|
30953
|
-
|
|
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
|
-
*
|
|
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.
|
|
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
|
-
|
|
30674
|
+
__init8() {this._lastActivity = new Date().getTime();}
|
|
31024
30675
|
|
|
31025
30676
|
/**
|
|
31026
30677
|
* Is the integration currently active?
|
|
31027
30678
|
*/
|
|
31028
|
-
|
|
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
|
-
|
|
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
|
-
|
|
30692
|
+
__init11() {this._hasInitializedCoreListeners = false;}
|
|
31042
30693
|
|
|
31043
30694
|
/**
|
|
31044
30695
|
* Function to stop recording
|
|
31045
30696
|
*/
|
|
31046
|
-
|
|
30697
|
+
__init12() {this._stopRecording = null;}
|
|
31047
30698
|
|
|
31048
|
-
|
|
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
|
-
|
|
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.
|
|
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
|
-
|
|
31098
|
-
this.
|
|
30743
|
+
start() {
|
|
30744
|
+
this.setInitialState();
|
|
31099
30745
|
|
|
31100
|
-
this.
|
|
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.
|
|
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
|
-
//
|
|
31114
|
-
//
|
|
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.
|
|
30769
|
+
this.updateSessionActivity();
|
|
31122
30770
|
|
|
31123
30771
|
this.eventBuffer = createEventBuffer({
|
|
31124
30772
|
useCompression: Boolean(this._options.useCompression),
|
|
31125
30773
|
});
|
|
31126
30774
|
|
|
31127
|
-
this.
|
|
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
|
-
|
|
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 `
|
|
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' && {
|
|
31148
|
-
emit: this.
|
|
30795
|
+
...(this.recordingMode === 'error' && { checkoutEveryNth: 60000 }),
|
|
30796
|
+
emit: this.handleRecordingEmit,
|
|
31149
30797
|
});
|
|
31150
30798
|
} catch (err) {
|
|
31151
|
-
this.
|
|
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
|
-
|
|
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.
|
|
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.
|
|
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
|
-
|
|
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.
|
|
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
|
-
|
|
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
|
-
|
|
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',
|
|
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
|
-
|
|
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.
|
|
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.
|
|
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
|
-
|
|
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
|
-
|
|
31086
|
+
__init15() {this.handleVisibilityChange = () => {
|
|
31468
31087
|
if (WINDOW.document.visibilityState === 'visible') {
|
|
31469
|
-
this.
|
|
31088
|
+
this.doChangeToForegroundTasks();
|
|
31470
31089
|
} else {
|
|
31471
|
-
this.
|
|
31090
|
+
this.doChangeToBackgroundTasks();
|
|
31472
31091
|
}
|
|
31473
31092
|
};}
|
|
31474
31093
|
|
|
31475
31094
|
/**
|
|
31476
31095
|
* Handle when page is blurred
|
|
31477
31096
|
*/
|
|
31478
|
-
|
|
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.
|
|
31104
|
+
this.doChangeToBackgroundTasks(breadcrumb);
|
|
31486
31105
|
};}
|
|
31487
31106
|
|
|
31488
31107
|
/**
|
|
31489
31108
|
* Handle when page is focused
|
|
31490
31109
|
*/
|
|
31491
|
-
|
|
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.
|
|
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
|
-
|
|
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.
|
|
31145
|
+
this.checkAndHandleExpiredSession();
|
|
31527
31146
|
}
|
|
31528
31147
|
|
|
31529
31148
|
this.addUpdate(() => {
|
|
31530
|
-
|
|
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
|
-
|
|
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.
|
|
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.
|
|
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
|
-
|
|
31188
|
+
doChangeToForegroundTasks(breadcrumb) {
|
|
31570
31189
|
if (!this.session) {
|
|
31571
31190
|
return;
|
|
31572
31191
|
}
|
|
31573
31192
|
|
|
31574
|
-
const isSessionActive = this.
|
|
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.
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
31265
|
+
createCustomBreadcrumb(breadcrumb) {
|
|
31621
31266
|
this.addUpdate(() => {
|
|
31622
|
-
|
|
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
|
-
|
|
31282
|
+
addPerformanceEntries() {
|
|
31638
31283
|
// Copy and reset entries before processing
|
|
31639
31284
|
const entries = [...this.performanceEvents];
|
|
31640
31285
|
this.performanceEvents = [];
|
|
31641
31286
|
|
|
31642
|
-
|
|
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
|
-
|
|
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.
|
|
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.
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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.
|
|
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
|
-
|
|
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.
|
|
31384
|
+
await this.addPerformanceEntries();
|
|
31740
31385
|
|
|
31741
|
-
if (!_optionalChain([this, 'access', _26 => _26.eventBuffer, 'optionalAccess', _27 => _27.
|
|
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.
|
|
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.
|
|
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
|
-
|
|
31421
|
+
__init19() {this.flush = async () => {
|
|
31789
31422
|
if (!this._isEnabled) {
|
|
31790
|
-
// This
|
|
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.
|
|
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 `
|
|
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.
|
|
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 `
|
|
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
|
-
/**
|
|
31832
|
-
|
|
31833
|
-
|
|
31834
|
-
|
|
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
|
-
*
|
|
31587
|
+
* Finalize and send the current replay event to Sentry
|
|
31840
31588
|
*/
|
|
31841
|
-
|
|
31842
|
-
|
|
31843
|
-
|
|
31844
|
-
|
|
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
|
-
|
|
31849
|
-
|
|
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
|
-
|
|
31852
|
-
|
|
31853
|
-
this.
|
|
31854
|
-
|
|
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
|
-
|
|
31857
|
-
|
|
31858
|
-
|
|
31859
|
-
|
|
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' &&
|
|
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
|
-
|
|
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
|
-
...
|
|
31704
|
+
...recordingOptions
|
|
31917
31705
|
} = {}) {Replay.prototype.__init.call(this);
|
|
31918
|
-
this.
|
|
31706
|
+
this.recordingOptions = {
|
|
31919
31707
|
maskAllInputs,
|
|
31920
31708
|
blockClass,
|
|
31921
31709
|
ignoreClass,
|
|
31922
31710
|
maskTextClass,
|
|
31923
31711
|
maskTextSelector,
|
|
31924
31712
|
blockSelector,
|
|
31925
|
-
...
|
|
31713
|
+
...recordingOptions,
|
|
31926
31714
|
};
|
|
31927
31715
|
|
|
31928
|
-
this.
|
|
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.
|
|
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.
|
|
31750
|
+
this.options.errorSampleRate = errorSampleRate;
|
|
31963
31751
|
}
|
|
31964
31752
|
|
|
31965
|
-
if (this.
|
|
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.
|
|
31757
|
+
this.recordingOptions.maskTextSelector = MASK_ALL_TEXT_SELECTOR;
|
|
31970
31758
|
}
|
|
31971
31759
|
|
|
31972
|
-
if (this.
|
|
31760
|
+
if (this.options.blockAllMedia) {
|
|
31973
31761
|
// `blockAllMedia` is a more user friendly option to configure blocking
|
|
31974
31762
|
// embedded media elements
|
|
31975
|
-
this.
|
|
31763
|
+
this.recordingOptions.blockSelector = !this.recordingOptions.blockSelector
|
|
31976
31764
|
? MEDIA_SELECTORS
|
|
31977
|
-
: `${this.
|
|
31765
|
+
: `${this.recordingOptions.blockSelector},${MEDIA_SELECTORS}`;
|
|
31978
31766
|
}
|
|
31979
31767
|
|
|
31980
|
-
if (this._isInitialized
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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.
|
|
32051
|
-
recordingOptions: this.
|
|
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.
|
|
31838
|
+
this.options.sessionSampleRate = opt.replaysSessionSampleRate;
|
|
32062
31839
|
}
|
|
32063
31840
|
|
|
32064
31841
|
if (opt && typeof opt.replaysOnErrorSampleRate === 'number') {
|
|
32065
|
-
this.
|
|
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:
|
|
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" }),
|