@gemx-dev/clarity-js 0.8.89 → 0.8.91
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/build/clarity.extended.js +1 -1
- package/build/clarity.insight.js +1 -1
- package/build/clarity.js +87 -51
- package/build/clarity.min.js +1 -1
- package/build/clarity.module.js +87 -51
- package/build/clarity.performance.js +1 -1
- package/package.json +1 -1
- package/src/clarity.ts +1 -1
- package/src/core/version.ts +1 -1
- package/src/data/gemx.ts +6 -0
- package/src/data/upload.ts +16 -1
- package/src/interaction/click.ts +0 -14
- package/src/interaction/encode.ts +5 -4
- package/src/interaction/index.ts +2 -2
- package/src/layout/gemx-snapshot.ts +28 -9
- package/src/layout/mutation.ts +5 -1
- package/src/layout/selector.ts +14 -1
- package/types/data.d.ts +3 -1
- package/types/global.d.ts +1 -0
package/build/clarity.module.js
CHANGED
|
@@ -222,7 +222,7 @@ function stop$O() {
|
|
|
222
222
|
startTime = 0;
|
|
223
223
|
}
|
|
224
224
|
|
|
225
|
-
var version$1 = "0.8.
|
|
225
|
+
var version$1 = "0.8.91";
|
|
226
226
|
|
|
227
227
|
// tslint:disable: no-bitwise
|
|
228
228
|
function hash (input, precision) {
|
|
@@ -1315,17 +1315,19 @@ var cookie = /*#__PURE__*/Object.freeze({
|
|
|
1315
1315
|
});
|
|
1316
1316
|
|
|
1317
1317
|
var defaultConfig = {
|
|
1318
|
+
debug: false,
|
|
1318
1319
|
excludeClassNames: [],
|
|
1319
1320
|
ignoreMutationClassNames: [],
|
|
1320
1321
|
discoverTrigger: null,
|
|
1321
1322
|
};
|
|
1322
1323
|
var _config = __assign({}, defaultConfig);
|
|
1323
1324
|
function start$J() {
|
|
1324
|
-
var _a, _b, _c, _d, _e, _f;
|
|
1325
|
+
var _a, _b, _c, _d, _e, _f, _g, _h;
|
|
1325
1326
|
_config = {
|
|
1326
|
-
|
|
1327
|
-
|
|
1328
|
-
|
|
1327
|
+
debug: new URLSearchParams(window.location.search).has("gemx_debug") || ((_b = (_a = window === null || window === void 0 ? void 0 : window.GemXHeatmap) === null || _a === void 0 ? void 0 : _a.debug) !== null && _b !== void 0 ? _b : false),
|
|
1328
|
+
excludeClassNames: ((_d = (_c = window === null || window === void 0 ? void 0 : window.GemXHeatmap) === null || _c === void 0 ? void 0 : _c.excludeClassNames) !== null && _d !== void 0 ? _d : []),
|
|
1329
|
+
ignoreMutationClassNames: ((_f = (_e = window === null || window === void 0 ? void 0 : window.GemXHeatmap) === null || _e === void 0 ? void 0 : _e.ignoreMutationClassNames) !== null && _f !== void 0 ? _f : []),
|
|
1330
|
+
discoverTrigger: ((_h = (_g = window === null || window === void 0 ? void 0 : window.GemXHeatmap) === null || _g === void 0 ? void 0 : _g.discoverTrigger) !== null && _h !== void 0 ? _h : null),
|
|
1329
1331
|
};
|
|
1330
1332
|
}
|
|
1331
1333
|
function stop$G() {
|
|
@@ -1337,10 +1339,14 @@ function set(config) {
|
|
|
1337
1339
|
function get$2() {
|
|
1338
1340
|
return _config;
|
|
1339
1341
|
}
|
|
1342
|
+
function isDebug() {
|
|
1343
|
+
return _config.debug;
|
|
1344
|
+
}
|
|
1340
1345
|
|
|
1341
1346
|
var gemx = /*#__PURE__*/Object.freeze({
|
|
1342
1347
|
__proto__: null,
|
|
1343
1348
|
get: get$2,
|
|
1349
|
+
isDebug: isDebug,
|
|
1344
1350
|
set: set,
|
|
1345
1351
|
start: start$J,
|
|
1346
1352
|
stop: stop$G
|
|
@@ -1552,7 +1558,6 @@ function observe$b(root) {
|
|
|
1552
1558
|
bind(root, "contextmenu", handler$4.bind(this, 48 /* Event.ContextMenu */, root), true);
|
|
1553
1559
|
}
|
|
1554
1560
|
function handler$4(event, root, evt) {
|
|
1555
|
-
var _a;
|
|
1556
1561
|
var frame = iframe(root);
|
|
1557
1562
|
var d = frame && frame.contentDocument ? frame.contentDocument.documentElement : document.documentElement;
|
|
1558
1563
|
var x = "pageX" in evt ? Math.round(evt.pageX) : ("clientX" in evt ? Math.round(evt["clientX"] + d.scrollLeft) : null);
|
|
@@ -1582,21 +1587,6 @@ function handler$4(event, root, evt) {
|
|
|
1582
1587
|
// Check for null values before processing this event
|
|
1583
1588
|
if (x !== null && y !== null) {
|
|
1584
1589
|
var textInfo = text(t);
|
|
1585
|
-
if (config$3.diagnostics) {
|
|
1586
|
-
var el = t;
|
|
1587
|
-
console.log("[clarity:click] text debug", {
|
|
1588
|
-
tag: el === null || el === void 0 ? void 0 : el.tagName,
|
|
1589
|
-
id: (el === null || el === void 0 ? void 0 : el.id) || null,
|
|
1590
|
-
class: (el === null || el === void 0 ? void 0 : el.className) || null,
|
|
1591
|
-
rawTextContent: ((_a = el === null || el === void 0 ? void 0 : el.textContent) === null || _a === void 0 ? void 0 : _a.replace(/\s+/g, " ").trim().substring(0, 100)) || null,
|
|
1592
|
-
inputValue: (el === null || el === void 0 ? void 0 : el.value) || null,
|
|
1593
|
-
altText: (el === null || el === void 0 ? void 0 : el.alt) || null,
|
|
1594
|
-
resolvedText: textInfo.text,
|
|
1595
|
-
isFullText: textInfo.isFullText,
|
|
1596
|
-
x: x,
|
|
1597
|
-
y: y,
|
|
1598
|
-
});
|
|
1599
|
-
}
|
|
1600
1590
|
state$9.push({
|
|
1601
1591
|
time: time(evt),
|
|
1602
1592
|
event: event,
|
|
@@ -2450,14 +2440,14 @@ var GEMX_OBSERVE = { allRoots: [scroll], documentOnly: [click] };
|
|
|
2450
2440
|
var ALL_OBSERVE = { allRoots: [scroll], documentOnly: [click, clipboard, pointer, input, selection, change, submit] };
|
|
2451
2441
|
var modules$2 = ALL$1;
|
|
2452
2442
|
function start$s() {
|
|
2453
|
-
modules$2 = config$3.mode === "gemx" ? GEMX$1 : ALL$1;
|
|
2443
|
+
modules$2 = (config$3 === null || config$3 === void 0 ? void 0 : config$3.mode) === "gemx" ? GEMX$1 : ALL$1;
|
|
2454
2444
|
modules$2.forEach(function (m) { return m.start(); });
|
|
2455
2445
|
}
|
|
2456
2446
|
function stop$q() {
|
|
2457
2447
|
modules$2.forEach(function (m) { return m.stop(); });
|
|
2458
2448
|
}
|
|
2459
2449
|
function observe$4(root) {
|
|
2460
|
-
var observeModules = config$3.mode === "gemx" ? GEMX_OBSERVE : ALL_OBSERVE;
|
|
2450
|
+
var observeModules = (config$3 === null || config$3 === void 0 ? void 0 : config$3.mode) === "gemx" ? GEMX_OBSERVE : ALL_OBSERVE;
|
|
2461
2451
|
observeModules.allRoots.forEach(function (m) { return m.observe(root); });
|
|
2462
2452
|
if (root.nodeType === Node.DOCUMENT_NODE) {
|
|
2463
2453
|
observeModules.documentOnly.forEach(function (m) { return m.observe(root); });
|
|
@@ -3152,7 +3142,7 @@ function handle$1(m) {
|
|
|
3152
3142
|
}
|
|
3153
3143
|
function processMutation(timer, mutation, instance, timestamp) {
|
|
3154
3144
|
return __awaiter(this, void 0, void 0, function () {
|
|
3155
|
-
var state$1, target, ignoredClasses, el_1, type;
|
|
3145
|
+
var state$1, target, ignoredClasses, isSnapshotProcessed, el_1, type;
|
|
3156
3146
|
return __generator(this, function (_a) {
|
|
3157
3147
|
switch (_a.label) {
|
|
3158
3148
|
case 0:
|
|
@@ -3168,7 +3158,8 @@ function processMutation(timer, mutation, instance, timestamp) {
|
|
|
3168
3158
|
}
|
|
3169
3159
|
target = mutation.target;
|
|
3170
3160
|
ignoredClasses = get$2().ignoreMutationClassNames;
|
|
3171
|
-
|
|
3161
|
+
isSnapshotProcessed = isActive();
|
|
3162
|
+
if (!isSnapshotProcessed && ignoredClasses.length > 0 && target instanceof Element) {
|
|
3172
3163
|
el_1 = target;
|
|
3173
3164
|
if (ignoredClasses.some(function (cls) { return el_1.classList.contains(cls); })) {
|
|
3174
3165
|
return [2 /*return*/];
|
|
@@ -3879,10 +3870,15 @@ function getAttributes$1(element) {
|
|
|
3879
3870
|
|
|
3880
3871
|
var excludeClassNames = ExcludeClassNamesList;
|
|
3881
3872
|
var selectorMap = {};
|
|
3873
|
+
// Tracks how many times each HTML id attribute has been seen during a traversal.
|
|
3874
|
+
// If count > 1, the id is duplicated in the DOM and must not be used as a CSS selector.
|
|
3875
|
+
var htmlIdCountMap = new Map();
|
|
3882
3876
|
function reset$8() {
|
|
3883
3877
|
selectorMap = {};
|
|
3878
|
+
htmlIdCountMap = new Map();
|
|
3884
3879
|
}
|
|
3885
3880
|
function get$1(input, type) {
|
|
3881
|
+
var _a;
|
|
3886
3882
|
var a = input.attributes;
|
|
3887
3883
|
var prefix = input.prefix ? input.prefix[type] : null;
|
|
3888
3884
|
var suffix = type === 0 /* Selector.Alpha */ ? "".concat("~" /* Constant.Tilde */).concat(input.position - 1) : ":nth-of-type(".concat(input.position, ")");
|
|
@@ -3932,7 +3928,16 @@ function get$1(input, type) {
|
|
|
3932
3928
|
// Update selector to use "id" field when available. There are two exceptions:
|
|
3933
3929
|
// (1) if "id" appears to be an auto generated string token, e.g. guid or a random id containing digits
|
|
3934
3930
|
// (2) if "id" appears inside a shadow DOM, in which case we continue to prefix up to shadow DOM to prevent conflicts
|
|
3935
|
-
|
|
3931
|
+
// (3) if "id" is duplicated in the DOM — using it would resolve to the wrong element during replay.
|
|
3932
|
+
// Note: the very first occurrence of a duplicated id may still use #id until a duplicate is encountered.
|
|
3933
|
+
if (id && filter(id)) {
|
|
3934
|
+
var count = ((_a = htmlIdCountMap.get(id)) !== null && _a !== void 0 ? _a : 0) + 1;
|
|
3935
|
+
htmlIdCountMap.set(id, count);
|
|
3936
|
+
if (count === 1) {
|
|
3937
|
+
selector = "".concat(getDomPrefix(prefix)).concat("#" /* Constant.Hash */).concat(id);
|
|
3938
|
+
}
|
|
3939
|
+
// count > 1 means duplicate — fall through to keep the class/position-based selector
|
|
3940
|
+
}
|
|
3936
3941
|
return selector;
|
|
3937
3942
|
}
|
|
3938
3943
|
}
|
|
@@ -4577,7 +4582,7 @@ function metadata$2(node, event, text) {
|
|
|
4577
4582
|
function encode$4 (type, ts) {
|
|
4578
4583
|
if (ts === void 0) { ts = null; }
|
|
4579
4584
|
return __awaiter(this, void 0, void 0, function () {
|
|
4580
|
-
var t, tokens, _i, _a, entry, pTarget, _b, _c, entry, cTarget, cHash, _d, _e, entry, target, r, u, _f, _g, entry, iTarget, s, startTarget, endTarget, _h, _j, entry, sTarget, top_1, bottom, sTopHash, sBottomHash, _k, _l, entry, target, _m, _o, entry, target, _p, _q, entry, v, f;
|
|
4585
|
+
var t, tokens, _i, _a, entry, pTarget, _b, _c, entry, cTarget, cHash, info, _d, _e, entry, target, r, u, _f, _g, entry, iTarget, s, startTarget, endTarget, _h, _j, entry, sTarget, top_1, bottom, sTopHash, sBottomHash, _k, _l, entry, target, _m, _o, entry, target, _p, _q, entry, v, f;
|
|
4581
4586
|
return __generator(this, function (_r) {
|
|
4582
4587
|
t = ts || time();
|
|
4583
4588
|
tokens = [t, type];
|
|
@@ -4620,10 +4625,8 @@ function encode$4 (type, ts) {
|
|
|
4620
4625
|
cTarget = metadata$2(entry.data.target, entry.event, entry.data.text);
|
|
4621
4626
|
tokens = [entry.time, entry.event];
|
|
4622
4627
|
cHash = cTarget.hash ? cTarget.hash.join("." /* Constant.Dot */) : "" /* Constant.Empty */;
|
|
4623
|
-
|
|
4624
|
-
|
|
4625
|
-
cTarget: cTarget,
|
|
4626
|
-
});
|
|
4628
|
+
info = get(entry.data.target);
|
|
4629
|
+
console.log("[GemX - Interaction - Encode]", info);
|
|
4627
4630
|
tokens.push(cTarget.id);
|
|
4628
4631
|
tokens.push(entry.data.x);
|
|
4629
4632
|
tokens.push(entry.data.y);
|
|
@@ -5165,9 +5168,9 @@ function stop$g() {
|
|
|
5165
5168
|
function upload(final, type) {
|
|
5166
5169
|
if (final === void 0) { final = false; }
|
|
5167
5170
|
return __awaiter(this, void 0, void 0, function () {
|
|
5168
|
-
var isGemxSnapshot, sendPlaybackBytes, last, e, a, p, encoded, payload, zipped,
|
|
5169
|
-
return __generator(this, function (
|
|
5170
|
-
switch (
|
|
5171
|
+
var isGemxSnapshot, sendPlaybackBytes, last, isDebug$1, trackedEvents, eventSet, labels, _i, trackedEvents_1, _a, eventType, label, e, a, p, encoded, payload, zipped, _b;
|
|
5172
|
+
return __generator(this, function (_c) {
|
|
5173
|
+
switch (_c.label) {
|
|
5171
5174
|
case 0:
|
|
5172
5175
|
if (!active$1) {
|
|
5173
5176
|
return [2 /*return*/];
|
|
@@ -5188,6 +5191,21 @@ function upload(final, type) {
|
|
|
5188
5191
|
// In some cases envelope has null data because it's part of the shutdown process while there's one upload call queued which might introduce runtime error
|
|
5189
5192
|
if (!data$1)
|
|
5190
5193
|
return [2 /*return*/];
|
|
5194
|
+
isDebug$1 = isDebug();
|
|
5195
|
+
if (!type && isDebug$1) {
|
|
5196
|
+
trackedEvents = [
|
|
5197
|
+
[9 /* Event.Click */, "click"],
|
|
5198
|
+
[10 /* Event.Scroll */, "scroll"],
|
|
5199
|
+
];
|
|
5200
|
+
eventSet = new Set(analysis.map(function (item) { return JSON.parse(item)[1]; }));
|
|
5201
|
+
labels = [];
|
|
5202
|
+
for (_i = 0, trackedEvents_1 = trackedEvents; _i < trackedEvents_1.length; _i++) {
|
|
5203
|
+
_a = trackedEvents_1[_i], eventType = _a[0], label = _a[1];
|
|
5204
|
+
if (eventSet.has(eventType))
|
|
5205
|
+
labels.push(label);
|
|
5206
|
+
}
|
|
5207
|
+
type = labels.length > 0 ? labels.join("-") : undefined;
|
|
5208
|
+
}
|
|
5191
5209
|
e = JSON.stringify(envelope(last));
|
|
5192
5210
|
a = "[".concat(analysis.join(), "]");
|
|
5193
5211
|
p = sendPlaybackBytes ? "[".concat(playback.join(), "]") : "" /* Constant.Empty */;
|
|
@@ -5198,14 +5216,14 @@ function upload(final, type) {
|
|
|
5198
5216
|
encoded = { e: e, a: a, p: p };
|
|
5199
5217
|
payload = stringify(encoded);
|
|
5200
5218
|
if (!last) return [3 /*break*/, 1];
|
|
5201
|
-
|
|
5219
|
+
_b = null;
|
|
5202
5220
|
return [3 /*break*/, 3];
|
|
5203
5221
|
case 1: return [4 /*yield*/, compress(payload)];
|
|
5204
5222
|
case 2:
|
|
5205
|
-
|
|
5206
|
-
|
|
5223
|
+
_b = _c.sent();
|
|
5224
|
+
_c.label = 3;
|
|
5207
5225
|
case 3:
|
|
5208
|
-
zipped =
|
|
5226
|
+
zipped = _b;
|
|
5209
5227
|
sum(2 /* Metric.TotalBytes */, zipped ? zipped.length : payload.length);
|
|
5210
5228
|
send(payload, zipped, data$1.sequence, last, type);
|
|
5211
5229
|
// Clear out events now that payload has been dispatched
|
|
@@ -6688,28 +6706,46 @@ function fire() {
|
|
|
6688
6706
|
}
|
|
6689
6707
|
function schedule(trigger) {
|
|
6690
6708
|
triggered = false;
|
|
6691
|
-
var
|
|
6709
|
+
var windowExpired = false;
|
|
6710
|
+
var delayScheduled = false;
|
|
6711
|
+
var scheduleDelayedFire = function (type) {
|
|
6712
|
+
var _a;
|
|
6713
|
+
if (delayScheduled || windowExpired)
|
|
6714
|
+
return;
|
|
6715
|
+
delayScheduled = true;
|
|
6716
|
+
console.log("[GemX Snapshot] ".concat(type, " triggered:"));
|
|
6717
|
+
setTimeout(fire, (_a = trigger.delayMs) !== null && _a !== void 0 ? _a : 0);
|
|
6718
|
+
};
|
|
6719
|
+
if (trigger.activeTimeMs) {
|
|
6720
|
+
setTimeout(function () {
|
|
6721
|
+
windowExpired = true;
|
|
6722
|
+
onTrustedScroll(null);
|
|
6723
|
+
onTrustedClick(null);
|
|
6724
|
+
}, trigger.activeTimeMs);
|
|
6725
|
+
}
|
|
6692
6726
|
if (trigger.scrollDepthPercent) {
|
|
6693
6727
|
onTrustedScroll(function () {
|
|
6694
|
-
var
|
|
6695
|
-
var
|
|
6696
|
-
|
|
6697
|
-
|
|
6728
|
+
var docH = document.documentElement.scrollHeight;
|
|
6729
|
+
var vpH = window.innerHeight;
|
|
6730
|
+
var maxScrollY = docH - vpH;
|
|
6731
|
+
if (maxScrollY <= 0)
|
|
6732
|
+
return;
|
|
6733
|
+
var scrollY = "pageYOffset" in window ? Math.round(window.pageYOffset) : Math.round(document.documentElement.scrollTop);
|
|
6734
|
+
var pct = Math.min(100, Math.round(scrollY / maxScrollY * 100));
|
|
6735
|
+
if (pct >= trigger.scrollDepthPercent) {
|
|
6736
|
+
scheduleDelayedFire('scroll');
|
|
6698
6737
|
}
|
|
6699
6738
|
});
|
|
6700
6739
|
}
|
|
6701
6740
|
if (trigger.clickCount) {
|
|
6741
|
+
var clickCount_1 = 0;
|
|
6702
6742
|
onTrustedClick(function () {
|
|
6703
|
-
|
|
6704
|
-
if (
|
|
6705
|
-
|
|
6743
|
+
clickCount_1++;
|
|
6744
|
+
if (clickCount_1 >= trigger.clickCount) {
|
|
6745
|
+
scheduleDelayedFire('click');
|
|
6706
6746
|
}
|
|
6707
6747
|
});
|
|
6708
6748
|
}
|
|
6709
|
-
if (trigger.activeTimeMs) {
|
|
6710
|
-
setTimeout(fire, trigger.activeTimeMs);
|
|
6711
|
-
}
|
|
6712
|
-
// maxPlaybackBytes trigger is handled via gemxUpload.start() callback above
|
|
6713
6749
|
}
|
|
6714
6750
|
function flush() {
|
|
6715
6751
|
inject(drain());
|
|
@@ -7046,7 +7082,7 @@ var ALL = [diagnostic, layout, interaction, performance$1, dynamic];
|
|
|
7046
7082
|
var modules = ALL;
|
|
7047
7083
|
function start(config$1) {
|
|
7048
7084
|
if (config$1 === void 0) { config$1 = null; }
|
|
7049
|
-
modules = config$1.mode === "gemx" ? GEMX : ALL;
|
|
7085
|
+
modules = (config$1 === null || config$1 === void 0 ? void 0 : config$1.mode) === "gemx" ? GEMX : ALL;
|
|
7050
7086
|
// Check that browser supports required APIs and we do not attempt to start Clarity multiple times
|
|
7051
7087
|
if (check()) {
|
|
7052
7088
|
config(config$1);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
!function(){"use strict";var t=Object.freeze({__proto__:null,get flush(){return ae},get inject(){return oe},get queue(){return re},get start(){return ne},get stop(){return ie},get track(){return Zt}}),e=Object.freeze({__proto__:null,get check(){return pe},get compute(){return ge},get data(){return Ft},get start(){return fe},get stop(){return ve},get trigger(){return he}}),n=Object.freeze({__proto__:null,get compute(){return ke},get data(){return me},get log(){return Se},get reset(){return Ie},get start(){return be},get stop(){return _e},get updates(){return ye}}),r=Object.freeze({__proto__:null,get compute(){return Pe},get config(){return Ce},get consent(){return Ne},get data(){return Ee},get start(){return Te},get stop(){return xe},get trackConsentv2(){return ze}}),a=Object.freeze({__proto__:null,get callback(){return Ke},get callbacks(){return qe},get clear(){return Fe},get consent(){return Ye},get consentv2(){return We},get data(){return Ae},get electron(){return De},get id(){return Ve},get metadata(){return Be},get save(){return Qe},get shortid(){return tn},get start(){return Le},get stop(){return Ge}}),o=Object.freeze({__proto__:null,get data(){return an},get envelope(){return cn},get start(){return on},get stop(){return un}}),i={projectId:null,delay:1e3,lean:!1,lite:!1,track:!0,content:!0,drop:[],mask:[],unmask:[],regions:[],cookies:[],fraud:!0,checksum:[],report:null,upload:null,fallback:null,upgrade:null,action:null,dob:null,delayDom:!1,throttleDom:!0,conversions:!1,includeSubdomains:!0,modules:[],diagnostics:!1,externalSession:!1,userId:null,sessionId:null,mode:"gemx"};function u(t){return window.Zone&&"__symbol__"in window.Zone?window.Zone.__symbol__(t):t}var c=0;function s(){return performance.now()+performance.timeOrigin}function l(t){void 0===t&&(t=null);var e=0===c?s():c,n=t&&t.timeStamp>0?t.timeStamp:performance.now(),r=t&&t.view?t.view.performance.timeOrigin:performance.timeOrigin;return Math.max(Math.round(n+r-e),0)}var d="0.8.89";var f=/\S/gi,p=255,h=!0,g=null,v=null,m=null;function y(t,e,n,r,a){if(void 0===r&&(r=!1),t){if("input"==e&&("checkbox"===a||"radio"===a))return t;switch(n){case 0:return t;case 1:switch(e){case"*T":case"value":case"placeholder":case"click":return function(t){var e=-1,n=0,r=!1,a=!1,o=!1,i=null;I();for(var u=0;u<t.length;u++){var c=t.charCodeAt(u);if(r=r||c>=48&&c<=57,a=a||64===c,o=9===c||10===c||13===c||32===c,0===u||u===t.length-1||o){if(r||a){null===i&&(i=t.split(""));var s=t.substring(e+1,o?u:u+1);s=h&&null!==m?s.match(m)?s:S(s,"▪","▫"):_(s),i.splice(e+1-n,s.length,s),n+=s.length-1}o&&(r=!1,a=!1,e=u)}}return i?i.join(""):t}(t);case"input":case"change":return k(t)}return t;case 2:case 3:switch(e){case"*T":case"data-":return r?b(t):_(t);case"src":case"srcset":case"title":case"alt":case"href":case"xlink:href":return 3===n?(null==t?void 0:t.startsWith("blob:"))?"blob:":"":t;case"value":case"click":case"input":case"change":return k(t);case"placeholder":return _(t)}break;case 4:switch(e){case"*T":case"data-":return r?b(t):_(t);case"value":case"input":case"click":case"change":return Array(5).join("•");case"checksum":return""}break;case 5:switch(e){case"*T":case"data-":return S(t,"▪","▫");case"value":case"input":case"click":case"change":return Array(5).join("•");case"checksum":case"src":case"srcset":case"alt":case"title":return""}}}return t}function w(t,e,n){void 0===e&&(e=!1),void 0===n&&(n=!1);var r=t;if(e)r="".concat("https://").concat("Electron");else{var a=i.drop;if(a&&a.length>0&&t&&t.indexOf("?")>0){var o=t.split("?"),u=o[0],c=o[1];r=u+"?"+c.split("&").map((function(t){return a.some((function(e){return 0===t.indexOf("".concat(e,"="))}))?"".concat(t.split("=")[0],"=").concat("*na*"):t})).join("&")}}return n&&(r=r.substring(0,p)),r}function b(t){var e=t.trim();if(e.length>0){var n=e[0],r=t.indexOf(n),a=t.substr(0,r),o=t.substr(r+e.length);return"".concat(a).concat(e.length.toString(36)).concat(o)}return t}function _(t){return t.replace(f,"•")}function S(t,e,n){return I(),t?t.replace(v,e).replace(g,n):t}function k(t){for(var e=5*(Math.floor(t.length/5)+1),n="",r=0;r<e;r++)n+=r>0&&r%5==0?" ":"•";return n}function I(){if(h&&null===g)try{g=new RegExp("\\p{N}","gu"),v=new RegExp("\\p{L}","gu"),m=new RegExp("\\p{Sc}","gu")}catch(t){h=!1}}var E=[],O=null;function T(){}var x=[];function M(){}function C(){}function N(){}function j(){}function z(){}var P=Object.freeze({__proto__:null,checkDocumentStyles:function(t){},compute:function(){},data:O,event:j,hashText:M,keys:x,log:T,observe:function(){},register:z,reset:function(){},sheetAdoptionState:[],sheetUpdateState:[],start:function(){},state:E,stop:function(){},track:N,trigger:C}),A=null;function q(t,e){jn()&&t&&"string"==typeof t&&t.length<255&&(A=e&&"string"==typeof e&&e.length<255?{key:t,value:e}:{value:t},de(24))}var D,R=null,X=null;function H(t){t in R||(R[t]=0),t in X||(X[t]=0),R[t]++,X[t]++}function L(t,e){null!==e&&(t in R||(R[t]=0),t in X||(X[t]=0),R[t]+=e,X[t]+=e)}function U(t,e){null!==e&&!1===isNaN(e)&&(t in R||(R[t]=0),(e>R[t]||0===R[t])&&(X[t]=e,R[t]=e))}function G(t,e,n){return window.setTimeout(dn(t),e,n)}function B(t){return window.clearTimeout(t)}var V=0,Y=0,W=null;function J(){W&&B(W),W=G(Z,Y),V=l()}function Z(){var t=l();D={gap:t-V},de(25),D.gap<3e5?W=G(Z,Y):Mn&&(q("clarityGemX","suspend"),rr(),["mousemove","touchstart"].forEach((function(t){return pn(document,t,zn)})),["resize","scroll","pageshow"].forEach((function(t){return pn(window,t,zn)})))}var F=Object.freeze({__proto__:null,get data(){return D},reset:J,start:function(){Y=6e4,V=0},stop:function(){B(W),V=0,Y=0}}),K=null;function Q(t){jn()&&i.lean&&(i.lean=!1,K={key:t},Ke(),Qe(),i.upgrade&&i.upgrade(t),de(3),i.lite)}var $=Object.freeze({__proto__:null,get data(){return K},start:function(){!i.lean&&i.upgrade&&i.upgrade("Config"),K=null},stop:function(){K=null},upgrade:Q}),tt=function(){return tt=Object.assign||function(t){for(var e,n=1,r=arguments.length;n<r;n++)for(var a in e=arguments[n])Object.prototype.hasOwnProperty.call(e,a)&&(t[a]=e[a]);return t},tt.apply(this,arguments)};function et(t,e,n,r){return new(n||(n=Promise))((function(a,o){function i(t){try{c(r.next(t))}catch(t){o(t)}}function u(t){try{c(r.throw(t))}catch(t){o(t)}}function c(t){var e;t.done?a(t.value):(e=t.value,e instanceof n?e:new n((function(t){t(e)}))).then(i,u)}c((r=r.apply(t,e||[])).next())}))}function nt(t,e){var n,r,a,o,i={label:0,sent:function(){if(1&a[0])throw a[1];return a[1]},trys:[],ops:[]};return o={next:u(0),throw:u(1),return:u(2)},"function"==typeof Symbol&&(o[Symbol.iterator]=function(){return this}),o;function u(u){return function(c){return function(u){if(n)throw new TypeError("Generator is already executing.");for(;o&&(o=0,u[0]&&(i=0)),i;)try{if(n=1,r&&(a=2&u[0]?r.return:u[0]?r.throw||((a=r.return)&&a.call(r),0):r.next)&&!(a=a.call(r,u[1])).done)return a;switch(r=0,a&&(u=[2&u[0],a.value]),u[0]){case 0:case 1:a=u;break;case 4:return i.label++,{value:u[1],done:!1};case 5:i.label++,r=u[1],u=[0];continue;case 7:u=i.ops.pop(),i.trys.pop();continue;default:if(!(a=i.trys,(a=a.length>0&&a[a.length-1])||6!==u[0]&&2!==u[0])){i=0;continue}if(3===u[0]&&(!a||u[1]>a[0]&&u[1]<a[3])){i.label=u[1];break}if(6===u[0]&&i.label<a[1]){i.label=a[1],a=u;break}if(a&&i.label<a[2]){i.label=a[2],i.ops.push(u);break}a[2]&&i.ops.pop(),i.trys.pop();continue}u=e.call(t,i)}catch(t){u=[6,t],r=0}finally{n=a=0}if(5&u[0])throw u[1];return{value:u[0]?u[1]:void 0,done:!0}}([u,c])}}}var rt=null;function at(t,e){it(t,"string"==typeof e?[e]:e)}function ot(t,e,n,r){return void 0===e&&(e=null),void 0===n&&(n=null),void 0===r&&(r=null),et(this,void 0,void 0,(function(){var a,o;return nt(this,(function(i){switch(i.label){case 0:return o={},[4,st(t)];case 1:return o.userId=i.sent(),o.userHint=r||((u=t)&&u.length>=5?"".concat(u.substring(0,2)).concat(S(u.substring(2),"*","*")):S(u,"*","*")),it("userId",[(a=o).userId]),it("userHint",[a.userHint]),it("userType",[lt(t)]),e&&(it("sessionId",[e]),a.sessionId=e),n&&(it("pageId",[n]),a.pageId=n),[2,a]}var u}))}))}function it(t,e){if(jn()&&t&&e&&"string"==typeof t&&t.length<255){for(var n=(t in rt?rt[t]:[]),r=0;r<e.length;r++)"string"==typeof e[r]&&e[r].length<255&&n.push(e[r]);rt[t]=n}}function ut(){de(34)}function ct(){rt={}}function st(t){return et(this,void 0,void 0,(function(){var e;return nt(this,(function(n){switch(n.label){case 0:return n.trys.push([0,4,,5]),crypto&&t?[4,crypto.subtle.digest("SHA-256",(new TextEncoder).encode(t))]:[3,2];case 1:return e=n.sent(),[2,Array.prototype.map.call(new Uint8Array(e),(function(t){return("00"+t.toString(16)).slice(-2)})).join("")];case 2:return[2,""];case 3:return[3,5];case 4:return n.sent(),[2,""];case 5:return[2]}}))}))}function lt(t){return t&&t.indexOf("@")>0?"email":"string"}var dt=Object.freeze({__proto__:null,compute:ut,get data(){return rt},identify:ot,reset:ct,set:at,start:function(){ct()},stop:function(){ct()}}),ft="CompressionStream"in window;function pt(t){return et(this,void 0,void 0,(function(){var e,n;return nt(this,(function(r){switch(r.label){case 0:return r.trys.push([0,3,,4]),ft?(e=new ReadableStream({start:function(e){return et(this,void 0,void 0,(function(){return nt(this,(function(n){return e.enqueue(t),e.close(),[2]}))}))}}).pipeThrough(new TextEncoderStream).pipeThrough(new window.CompressionStream("gzip")),n=Uint8Array.bind,[4,ht(e)]):[3,2];case 1:return[2,new(n.apply(Uint8Array,[void 0,r.sent()]))];case 2:return[3,4];case 3:return r.sent(),[3,4];case 4:return[2,null]}}))}))}function ht(t){return et(this,void 0,void 0,(function(){var e,n,r,a,o;return nt(this,(function(i){switch(i.label){case 0:e=t.getReader(),n=[],r=!1,a=[],i.label=1;case 1:return r?[3,3]:[4,e.read()];case 2:return o=i.sent(),r=o.done,a=o.value,r?[2,n]:(n.push.apply(n,a),[3,1]);case 3:return[2,n]}}))}))}function gt(t,e){try{return!!t[e]}catch(t){return!1}}function vt(t){try{var e=decodeURIComponent(t);return[e!=t,e]}catch(t){}return[!1,t]}var mt=null,yt="^";function wt(t,e){var n;if(void 0===e&&(e=!1),gt(document,"cookie")){var r=document.cookie.split(";");if(r)for(var a=0;a<r.length;a++){var o=r[a].split("=");if(o.length>1&&o[0]&&o[0].trim()===t){for(var i=vt(o[1]),u=i[0],c=i[1];u;)u=(n=vt(c))[0],c=n[1];return e?c.endsWith("".concat("~","1"))?c.substring(0,c.length-2):null:c}}}return null}function bt(t,e,n){if((i.track||""==e)&&(navigator&&navigator.cookieEnabled||gt(document,"cookie"))){var r=function(t){return encodeURIComponent(t)}(e),a=new Date;a.setDate(a.getDate()+n);var o=a?"expires="+a.toUTCString():"",u="".concat(t,"=").concat(r).concat(";").concat(o).concat(";path=/");try{if(null===mt){for(var c=location.hostname?location.hostname.split("."):[],s=c.length-1;s>=0;s--)if(mt=".".concat(c[s]).concat(mt||""),s<c.length-1&&(document.cookie="".concat(u).concat(";").concat("domain=").concat(mt),wt(t)===e))return;mt=""}}catch(t){mt=""}document.cookie=mt?"".concat(u).concat(";").concat("domain=").concat(mt):u}}var _t=Object.freeze({__proto__:null,COOKIE_SEP:yt,getCookie:wt,setCookie:bt,start:function(){mt=null},stop:function(){mt=null}}),St={excludeClassNames:[],ignoreMutationClassNames:[],discoverTrigger:null},kt=tt({},St);var It=Object.freeze({__proto__:null,get:function(){return kt},set:function(t){kt=tt(tt({},kt),t)},start:function(){var t,e,n,r,a,o;kt={excludeClassNames:null!==(e=null===(t=null===window||void 0===window?void 0:window.GemXHeatmap)||void 0===t?void 0:t.excludeClassNames)&&void 0!==e?e:[],ignoreMutationClassNames:null!==(r=null===(n=null===window||void 0===window?void 0:window.GemXHeatmap)||void 0===n?void 0:n.ignoreMutationClassNames)&&void 0!==r?r:[],discoverTrigger:null!==(o=null===(a=null===window||void 0===window?void 0:window.GemXHeatmap)||void 0===a?void 0:a.discoverTrigger)&&void 0!==o?o:null}},stop:function(){kt=tt({},St)}}),Et=[],Ot=0,Tt=!1,xt=0,Mt=null;function Ct(){return Tt}function Nt(t,e){Et.push(t),Ot+=e,xt>0&&Ot>=xt&&Mt&&Mt()}var jt=null;function zt(t){try{if(!jt)return;var e=function(t){try{return JSON.parse(t)}catch(t){return[]}}(t);e.forEach((function(t){jt(t)}))}catch(t){}}var Pt=[It,Object.freeze({__proto__:null,config:function(t,e){return xt=null!=t?t:0,Mt=null!=e?e:null,!0},drain:function(){Tt=!1;var t=Et;return Et=[],Ot=0,t},getBytes:function(){return Ot},hold:Nt,isActive:Ct,start:function(){Et=[],Ot=0,Tt=!0},stop:function(){Et=[],Ot=0,Tt=!1,xt=0,Mt=null}}),P,n,dt,e,P,_t,r,a,o,t,F,$,P];function At(){R={},X={},H(5),Pt.forEach((function(t){return dn(t.start)()}))}function qt(){Pt.slice().reverse().forEach((function(t){return dn(t.stop)()})),R={},X={}}function Dt(){ge(),Pe(),"gemx"!==i.mode&&(ut(),ke(),de(0))}function Rt(t,e,n,r){return"href"===t&&"LINK"===r?"".concat(t,"=").concat(e):"".concat(t,"=").concat(y(e,0===t.indexOf("data-")?"data-":t,n))}var Xt=[],Ht=1,Lt=null;function Ut(){Xt=[],function(t){var e=[t];for(;e.length>0;){for(var n=null,r=null,a=null,o=e.shift(),i=o.firstChild,u=o.parentElement?o.parentElement:o.parentNode?o.parentNode:null;i;)e.push(i),i=i.nextSibling;switch(o.nodeType){case Node.DOCUMENT_TYPE_NODE:var c=o;r="*D",n={name:c.name,publicId:c.publicId,systemId:c.systemId};break;case Node.TEXT_NODE:a=o.nodeValue,r=Lt.get(u)?"*T":r;break;case Node.ELEMENT_NODE:var s=o;n=Gt(s),r=["NOSCRIPT","SCRIPT","STYLE"].indexOf(s.tagName)<0?s.tagName:r}Bt(o,u,{tag:r,attributes:n,value:a})}}(document),function(t){et(this,void 0,void 0,(function(){var e,n,r,a,o,i,u,c,s,d,f,p,h;return nt(this,(function(g){switch(e=l(),n=[e,t],t){case 8:r=O,n.push(r.width),n.push(r.height),r.width,r.height,re(n);break;case 43:if((a=Xt).length>0){for(o=0,i=a;o<i.length;o++)for(u=i[o],c=u.metadata.privacy,s=u.data,d=0,f=["tag","attributes","value"];d<f.length;d++)if(s[p=f[d]])switch(p){case"tag":n.push(u.id),u.parent&&n.push(u.parent),u.previous&&n.push(u.previous),n.push(s[p]);break;case"attributes":for(h in s[p])void 0!==s[p][h]&&n.push(Rt(h,s[p][h],c,s.tag));break;case"value":n.push(y(s[p],s.tag,c))}re(function(t){for(var e=[],n={},r=0,a=null,o=0;o<t.length;o++)if("string"==typeof t[o]){var i=t[o],u=n[i]||-1;u>=0?a?a.push(u):(a=[u],e.push(a),r++):(a=null,e.push(i),n[i]=r++)}else a=null,e.push(t[o]),r++;return e}(n),!0)}}return[2]}))}))}(43)}function Gt(t){var e={},n=t.attributes;if(n&&n.length>0)for(var r=0;r<n.length;r++)e[n[r].name]=n[r].value;return e}function Bt(t,e,n){if(t&&n&&n.tag){var r=function(t){return null===t?null:Lt.has(t)?Lt.get(t):(Lt.set(t,Ht),Ht++)}(t),a=e?Lt.get(e):null,o=t.previousSibling?Lt.get(t.previousSibling):null;Xt.push({id:r,parent:a,previous:o,children:[],data:n,selector:null,hash:null,region:null,metadata:{active:!0,suspend:!1,privacy:5,position:null,fraud:null,size:null}})}}var Vt,Yt,Wt,Jt,Zt,Ft,Kt=0,Qt=0,$t=null,te=0,ee=!1;function ne(){Jt=!0,Kt=0,Qt=0,ee=!1,te=0,Vt=[],Yt=[],Wt={},Zt=null}function re(t,e){if(void 0===e&&(e=!0),Jt){var n=l(),r=t.length>1?t[1]:null,a=JSON.stringify(t);switch(i.lean?!ee&&Qt+a.length>10485760&&(ee=!0):ee=!1,r){case 5:if(ee)break;if(Ct()){Nt(t,a.length);break}Kt+=a.length;case 37:case 6:case 43:case 45:case 46:case 44:case 51:if(ee)break;Ct()&&Nt(t,a.length),Qt+=a.length,Vt.push(a);break;default:Yt.push(a)}H(25);var o=function(){var t=!1===i.lean&&Kt>0?100:an.sequence*i.delay;return"string"==typeof i.upload?Math.max(Math.min(t,3e4),100):i.delay}();n-te>2*o&&(B($t),$t=null),e&&null===$t&&(25!==r&&J(),$t=G(ue,o),te=n,pe(Qt))}}function ae(t){Jt&&(B($t),$t=null,ue(!1,t))}function oe(t){for(var e=0,n=t;e<n.length;e++){var r=n[e],a=JSON.stringify(r);Kt+=a.length,Qt+=a.length,Vt.push(a)}}function ie(){B($t),ue(!0),Kt=0,Qt=0,ee=!1,te=0,Vt=[],Yt=[],Wt={},Zt=null,Jt=!1}function ue(t,e){return void 0===t&&(t=!1),et(this,void 0,void 0,(function(){var n,r,a,o,u,c,s,l;return nt(this,(function(d){switch(d.label){case 0:return Jt?($t=null,(n=("gemx-snapshot"===e||!1===i.lean)&&Qt>0&&(Qt<1048576||an.sequence>0))&&U(1,1),Dt(),r=!0===t,an?(a=JSON.stringify(cn(r)),o="[".concat(Yt.join(),"]"),u=n?"[".concat(Vt.join(),"]"):"",r&&u.length>0&&a.length+o.length+u.length>65536&&(u=""),c=function(t){return t.p.length>0?'{"e":'.concat(t.e,',"a":').concat(t.a,',"p":').concat(t.p,"}"):'{"e":'.concat(t.e,',"a":').concat(t.a,"}")}({e:a,a:o,p:u}),r?(l=null,[3,3]):[3,1]):[2]):[2];case 1:return[4,pt(c)];case 2:l=d.sent(),d.label=3;case 3:return L(2,(s=l)?s.length:c.length),ce(c,s,an.sequence,r,e),Yt=[],n&&(Vt=[],Qt=0,Kt=0,ee=!1),[2]}}))}))}function ce(t,e,n,r,a){if(void 0===r&&(r=!1),"string"==typeof i.upload){var o=i.upload,u=!1;if(r&&navigator&&navigator.sendBeacon)try{(u=navigator.sendBeacon.bind(navigator)(o,t))&&le(n)}catch(t){}if(!1===u){n in Wt?Wt[n].attempts++:Wt[n]={data:t,attempts:1};var c=new XMLHttpRequest;c.open("POST",o,!0),c.timeout=15e3,c.ontimeout=function(){ln(new Error("".concat("Timeout"," : ").concat(o)))},null!==n&&(c.onreadystatechange=function(){dn(se)(c,n)}),c.withCredentials=!0,e?(c.setRequestHeader("Accept","application/x-clarity-gzip"),c.send(e)):c.send(t)}}else if(i.upload){(0,i.upload)(t,a),le(n)}}function se(t,e){var n=Wt[e];t&&4===t.readyState&&n&&((t.status<200||t.status>208)&&n.attempts<=1?t.status>=400&&t.status<500?he(6):(0===t.status&&(i.upload=i.fallback?i.fallback:i.upload),Zt={sequence:e,attempts:n.attempts,status:t.status},de(2),ce(n.data,null,e)):(Zt={sequence:e,attempts:n.attempts,status:t.status},n.attempts>1&&de(2),200===t.status&&t.responseText&&function(t){for(var e=t&&t.length>0?t.split("\n"):[],n=0,r=e;n<r.length;n++){var a=r[n],o=a&&a.length>0?a.split(/ (.*)/):[""];switch(o[0]){case"END":he(6);break;case"UPGRADE":Q("Auto");break;case"ACTION":i.action&&o.length>1&&i.action(o[1]);break;case"EXTRACT":case"MODULE":o.length>1&&o[1];break;case"SIGNAL":o.length>1&&zt(o[1]);break;case"SNAPSHOT":i.lean=!1,Ut()}}}(t.responseText),0===t.status&&(ce(n.data,null,e,!0),he(3)),t.status>=200&&t.status<=208&&le(e),delete Wt[e]))}function le(t){1===t&&(Qe(),Ke())}function de(t){var e=[l(),t];switch(t){case 4:var n=E;n&&n.data&&((e=[n.time,n.event]).push(n.data.visible),e.push(n.data.docWidth),e.push(n.data.docHeight),e.push(n.data.screenWidth),e.push(n.data.screenHeight),e.push(n.data.scrollX),e.push(n.data.scrollY),e.push(n.data.pointerX),e.push(n.data.pointerY),e.push(n.data.activityTime),e.push(n.data.scrollTime),e.push(n.data.pointerTime),e.push(n.data.moveX),e.push(n.data.moveY),e.push(n.data.moveTime),e.push(n.data.downX),e.push(n.data.downY),e.push(n.data.downTime),e.push(n.data.upX),e.push(n.data.upY),e.push(n.data.upTime),e.push(n.data.pointerPrevX),e.push(n.data.pointerPrevY),e.push(n.data.pointerPrevTime),e.push(n.data.modules),re(e,!1));break;case 25:e.push(D.gap),re(e);break;case 35:e.push(Ft.check),re(e,!1);break;case 3:e.push(K.key),re(e);break;case 2:e.push(Zt.sequence),e.push(Zt.attempts),e.push(Zt.status),re(e,!1);break;case 24:A.key&&e.push(A.key),e.push(A.value),re(e);break;case 34:var r=Object.keys(rt);if(r.length>0){for(var a=0,o=r;a<o.length;a++){var i=o[a];e.push(i),e.push(rt[i])}ct(),re(e,!1)}break;case 0:var u=Object.keys(X);if(u.length>0){for(var c=0,s=u;c<s.length;c++){var d=s[c],f=parseInt(d,10);e.push(f),e.push(Math.round(X[d]))}X={},re(e,!1)}break;case 1:var p=Object.keys(ye);if(p.length>0){for(var h=0,g=p;h<g.length;h++){var v=g[h];f=parseInt(v,10);e.push(f),e.push(ye[v])}Ie(),re(e,!1)}break;case 36:var m=Object.keys(O);if(m.length>0){for(var y=0,w=m;y<w.length;y++){var b=w[y];f=parseInt(b,10);e.push(f),e.push([].concat.apply([],O[b]))}re(e,!1)}break;case 40:x.forEach((function(t){e.push(t);var n=[];for(var r in O[t]){var a=parseInt(r,10);n.push(a),n.push(O[t][r])}e.push(n)})),re(e,!1);break;case 47:e.push(Ee.source),e.push(Ee.ad_Storage),e.push(Ee.analytics_Storage),re(e,!1)}}function fe(){Ft={check:0}}function pe(t){if(0===Ft.check){var e=Ft.check;e=an.sequence>=128?1:e,e=an.pageNum>=128?7:e,e=l()>72e5?2:e,(e=t>10485760?2:e)!==Ft.check&&he(e)}}function he(t){Ft.check=t,5!==t&&(Fe(),rr())}function ge(){0!==Ft.check&&de(35)}function ve(){Ft=null}var me=null,ye=null,we=!1;function be(){me={},ye={},we=!1}function _e(){me={},ye={},we=!1}function Se(t,e){if(e&&(e="".concat(e),t in me||(me[t]=[]),me[t].indexOf(e)<0)){if(me[t].length>128)return void(we||(we=!0,he(5)));me[t].push(e),t in ye||(ye[t]=[]),ye[t].push(e)}}function ke(){de(1)}function Ie(){ye={},we=!1}var Ee=null,Oe=!0;function Te(){var t,e=null===(t=window.google_tag_data)||void 0===t?void 0:t.ics;Oe=!0,(null==e?void 0:e.addListener)&&e.addListener(["ad_storage","analytics_storage"],Me)}function xe(){Oe=!0}function Me(){var t,e=null===(t=window.google_tag_data)||void 0===t?void 0:t.ics;if(null==e?void 0:e.getConsentState)try{var n=e.getConsentState("analytics_storage");We(function(t){var e={source:2,ad_Storage:1===t.ad_Storage?"granted":"denied",analytics_Storage:1===t.analytics_Storage?"granted":"denied"};return e}({ad_Storage:e.getConsentState("ad_storage"),analytics_Storage:n}))}catch(t){return}}function Ce(t){je(t.analytics_Storage?1:0),Ee=t}function Ne(){je(2)}function je(t){Se(36,t.toString())}function ze(t){Ee=t,de(47)}function Pe(){var t;if(Oe&&(de(47),Oe=!1,!i.track)){var e=null===(t=window.google_tag_data)||void 0===t?void 0:t.ics;(null==e?void 0:e.usedUpdate)&&Me()}}var Ae=null,qe=[],De=0,Re=null,Xe=!1,He={source:7,ad_Storage:"denied",analytics_Storage:"denied"};function Le(){var t,e,n,r=navigator&&"userAgent"in navigator?navigator.userAgent:"",a=null!==(n="undefined"!=typeof Intl&&(null===(e=null===(t=null===Intl||void 0===Intl?void 0:Intl.DateTimeFormat())||void 0===t?void 0:t.resolvedOptions())||void 0===e?void 0:e.timeZone))&&void 0!==n?n:"",o=(new Date).getTimezoneOffset().toString(),u=window.location.ancestorOrigins?Array.from(window.location.ancestorOrigins).toString():"",c=document&&document.title?document.title:"";De=r.indexOf("Electron")>0?1:0;var s=function(){var t={session:tn(),ts:Math.round(Date.now()),count:1,upgrade:null,upload:""},e=wt("_clsk",!i.includeSubdomains);if(e){var n=e.includes("^")?e.split("^"):e.split("|");n.length>=5&&t.ts-en(n[1])<18e5&&(t.session=n[0],t.count=en(n[2])+1,t.upgrade=en(n[3]),t.upload=n.length>=6?"".concat("https://").concat(n[5],"/").concat(n[4]):"".concat("https://").concat(n[4]))}return t}(),l=nn(),d=i.projectId||function(t,e){void 0===e&&(e=null);for(var n,r=5381,a=r,o=0;o<t.length;o+=2)r=(r<<5)+r^t.charCodeAt(o),o+1<t.length&&(a=(a<<5)+a^t.charCodeAt(o+1));return n=Math.abs(r+11579*a),(e?n%Math.pow(2,e):n).toString(36)}(location.host),f=i.externalSession&&i.userId?i.userId:l.id,p=i.externalSession&&i.sessionId?i.sessionId:s.session;Ae={projectId:d,userId:f,sessionId:p,pageNum:s.count},i.lean=i.track&&null!==s.upgrade?0===s.upgrade:i.lean,i.upload=i.track&&"string"==typeof i.upload&&s.upload&&s.upload.length>"https://".length?s.upload:i.upload,Se(0,r),Se(3,c),Se(1,w(location.href,!!De)),Se(2,document.referrer),Se(15,function(){var t=tn();if(i.track&>(window,"sessionStorage")){var e=sessionStorage.getItem("_cltk");t=e||t,sessionStorage.setItem("_cltk",t)}return t}()),Se(16,document.documentElement.lang),Se(17,document.dir),Se(26,"".concat(window.devicePixelRatio)),Se(28,l.dob.toString()),Se(29,l.version.toString()),Se(33,u),Se(34,a),Se(35,o),U(0,s.ts),U(1,0),U(35,De);var h,g=null===window||void 0===window?void 0:window.Zone;g&&"__symbol__"in g&&U(39,1),navigator&&(Se(9,navigator.language),U(33,navigator.hardwareConcurrency),U(32,navigator.maxTouchPoints),U(34,Math.round(navigator.deviceMemory)),(h=navigator.userAgentData)&&h.getHighEntropyValues?h.getHighEntropyValues(["model","platform","platformVersion","uaFullVersion"]).then((function(t){var e;Se(22,t.platform),Se(23,t.platformVersion),null===(e=t.brands)||void 0===e||e.forEach((function(t){Se(24,t.name+"~"+t.version)})),Se(25,t.model),U(27,t.mobile?1:0)})):Se(22,navigator.platform)),screen&&(U(14,Math.round(screen.width)),U(15,Math.round(screen.height)),U(16,Math.round(screen.colorDepth))),null===Re&&(Re={source:l.consent?6:0,ad_Storage:i.track?"granted":"denied",analytics_Storage:i.track?"granted":"denied"}),Ue(),Ce(Je(Re)),i.externalSession||$e(l)}function Ue(){if(!Xe&&"granted"===(null==Re?void 0:Re.analytics_Storage)&&"granted"===(null==Re?void 0:Re.ad_Storage)){for(var t=0,e=i.cookies;t<e.length;t++){var n=e[t],r=wt(n);r&&at(n,r)}Xe=!0}}function Ge(){Ae=null,Xe=!1,qe.forEach((function(t){t.called=!1}))}function Be(t,e,n,r){void 0===e&&(e=!0),void 0===n&&(n=!1),void 0===r&&(r=!1);var a=i.lean?0:1,o=!1;Ae&&(a||!1===e)&&(t(Ae,!i.lean,r?Re:void 0),o=!0),!n&&o||qe.push({callback:t,wait:e,recall:n,called:o,consentInfo:r})}function Ve(){return Ae?[Ae.userId,Ae.sessionId,Ae.pageNum].join("."):""}function Ye(t){void 0===t&&(t=!0),We(t?{source:4,ad_Storage:"granted",analytics_Storage:"granted"}:{source:4,ad_Storage:"denied",analytics_Storage:"denied"})}function We(t,e){var n;if(void 0===t&&(t=He),void 0===e&&(e=5),jn()){var r={source:null!==(n=t.source)&&void 0!==n?n:e,ad_Storage:Ze(t.ad_Storage,null==Re?void 0:Re.ad_Storage),analytics_Storage:Ze(t.analytics_Storage,null==Re?void 0:Re.analytics_Storage)};if(Re&&r.ad_Storage===Re.ad_Storage&&r.analytics_Storage===Re.analytics_Storage)return Re.source=r.source,ze(Je(Re)),void Ne();Re=r,Ke(!0);var a=Je(Re);if(!a.analytics_Storage&&i.track)return i.track=!1,Fe(!0),rr(),void window.setTimeout(nr,250);jn()&&a.analytics_Storage&&(i.track=!0,$e(nn(),1),Qe()),Ue(),ze(a),Ne()}}function Je(t){var e;return{source:null!==(e=t.source)&&void 0!==e?e:255,ad_Storage:"granted"===t.ad_Storage?1:0,analytics_Storage:"granted"===t.analytics_Storage?1:0}}function Ze(t,e){return void 0===e&&(e="denied"),"string"==typeof t?t.toLowerCase():e}function Fe(t){void 0===t&&(t=!1),bt("_clsk","",0),t&&bt("_clck","",0)}function Ke(t){void 0===t&&(t=!1),function(t,e){void 0===e&&(e=!1);if(qe.length>0)for(var n=0;n<qe.length;n++){var r=qe[n];r.callback&&(!r.called&&!e||r.consentInfo&&e)&&(!r.wait||t)&&(r.callback(Ae,!i.lean,r.consentInfo?Re:void 0),r.called=!0,r.recall||(qe.splice(n,1),n--))}}(i.lean?0:1,t)}function Qe(){if(Ae&&i.track&&!i.externalSession){var t=Math.round(Date.now()),e=i.upload&&"string"==typeof i.upload?i.upload.replace("https://",""):"",n=i.lean?0:1;bt("_clsk",[Ae.sessionId,t,Ae.pageNum,n,e].join(yt),1)}}function $e(t,e){void 0===e&&(e=null),e=null===e?t.consent:e;var n=Math.ceil((Date.now()+31536e6)/864e5),r=0===t.dob?null===i.dob?0:i.dob:t.dob;(null===t.expiry||Math.abs(n-t.expiry)>=1||t.consent!==e||t.dob!==r)&&bt("_clck",[Ae.userId,2,n.toString(36),e,r].join(yt),365)}function tn(){var t=Math.floor(Math.random()*Math.pow(2,32));return window&&window.crypto&&window.crypto.getRandomValues&&Uint32Array&&(t=window.crypto.getRandomValues(new Uint32Array(1))[0]),t.toString(36)}function en(t,e){return void 0===e&&(e=10),parseInt(t,e)}function nn(){var t={id:tn(),version:0,expiry:null,consent:0,dob:0},e=wt("_clck",!i.includeSubdomains);if(e&&e.length>0){var n=e.includes("^")?e.split("^"):e.split("|");n.length>1&&(t.version=en(n[1])),n.length>2&&(t.expiry=en(n[2],36)),n.length>3&&1===en(n[3])&&(t.consent=1),n.length>4&&en(n[1])>1&&(t.dob=en(n[4])),i.track=i.track||1===t.consent,t.id=i.track?n[0]:t.id}return t}var rn,an=null;function on(){var t=Ae;an={version:d,sequence:0,start:0,duration:0,projectId:t.projectId,userId:t.userId,sessionId:t.sessionId,pageNum:t.pageNum,upload:0,end:0,applicationPlatform:0,url:""}}function un(){an=null}function cn(t){return an.start=an.start+an.duration,an.duration=l()-an.start,an.sequence++,an.upload=t&&"sendBeacon"in navigator?1:0,an.end=t?1:0,an.applicationPlatform=0,an.url=w(location.href,!1,!0),[an.version,an.sequence,an.start,an.duration,an.projectId,an.userId,an.sessionId,an.pageNum,an.upload,an.end,an.applicationPlatform,an.url]}function sn(){rn=[]}function ln(t){if(rn&&-1===rn.indexOf(t.message)){var e=i.report;if(e&&e.length>0&&an){var n={v:an.version,p:an.projectId,u:an.userId,s:an.sessionId,n:an.pageNum};t.message&&(n.m=t.message),t.stack&&(n.e=t.stack);var r=new XMLHttpRequest;r.open("POST",e,!0),r.send(JSON.stringify(n)),rn.push(t.message)}}return t}function dn(t){return function(){var e=performance.now();try{t.apply(this,arguments)}catch(t){throw ln(t)}var n=performance.now()-e;L(4,n),n>30&&(H(7),U(6,n),t.dn&&"".concat(t.dn,"-").concat(n))}}var fn=new Map;function pn(t,e,n,r,a){void 0===r&&(r=!1),void 0===a&&(a=!0),n=dn(n);try{t[u("addEventListener")](e,n,{capture:r,passive:a}),function(t){return fn.has(t)}(t)||fn.set(t,[]),fn.get(t).push({event:e,listener:n,options:{capture:r,passive:a}})}catch(t){}}function hn(){fn.forEach((function(t,e){!function(t,e){t.forEach((function(t){try{e[u("removeEventListener")](t.event,t.listener,{capture:t.options.capture,passive:t.options.passive})}catch(t){}})),fn.delete(e)}(t,e)})),fn=new Map}var gn=null,vn=null,mn=null,yn=0;function wn(){return!(yn++>20)}function bn(){yn=0,mn!==Sn()&&(rr(),window.setTimeout(_n,250))}function _n(){nr(),U(29,1)}function Sn(){return location.href?location.href.replace(location.hash,""):location.href}var kn=[],In=null,En=null,On=null;function Tn(){kn=[],In=null,En=null}function xn(){var t=kn.shift();t&&(In=t,t.task().then((function(){t.id===Ve()&&(t.resolve(),In=null,xn())})).catch((function(e){t.id===Ve()&&(e&&(e.name,e.message,e.stack),In=null,xn())})))}var Mn=!1;function Cn(){Mn=!0,c=s(),Tn(),hn(),sn(),function(){if(mn=Sn(),yn=0,pn(window,"popstate",bn),null===gn)try{gn=history.pushState,history.pushState=function(){gn.apply(this,arguments),jn()&&wn()&&bn()}}catch(t){gn=null}if(null===vn)try{vn=history.replaceState,history.replaceState=function(){vn.apply(this,arguments),jn()&&wn()&&bn()}}catch(t){vn=null}}()}function Nn(){mn=null,yn=0,sn(),hn(),Tn(),c=0,Mn=!1}function jn(){return Mn}function zn(){nr(),q("clarityGemX","restart")}var Pn=null;function An(){Pn=null}function qn(t){Pn={fetchStart:Math.round(t.fetchStart),connectStart:Math.round(t.connectStart),connectEnd:Math.round(t.connectEnd),requestStart:Math.round(t.requestStart),responseStart:Math.round(t.responseStart),responseEnd:Math.round(t.responseEnd),domInteractive:Math.round(t.domInteractive),domComplete:Math.round(t.domComplete),loadEventStart:Math.round(t.loadEventStart),loadEventEnd:Math.round(t.loadEventEnd),redirectCount:Math.round(t.redirectCount),size:t.transferSize?t.transferSize:0,type:t.type,protocol:t.nextHopProtocol,encodedSize:t.encodedBodySize?t.encodedBodySize:0,decodedSize:t.decodedBodySize?t.decodedBodySize:0},function(t){et(this,void 0,void 0,(function(){var e,n;return nt(this,(function(r){return e=l(),n=[e,t],29===t&&(n.push(Pn.fetchStart),n.push(Pn.connectStart),n.push(Pn.connectEnd),n.push(Pn.requestStart),n.push(Pn.responseStart),n.push(Pn.responseEnd),n.push(Pn.domInteractive),n.push(Pn.domComplete),n.push(Pn.loadEventStart),n.push(Pn.loadEventEnd),n.push(Pn.redirectCount),n.push(Pn.size),n.push(Pn.type),n.push(Pn.protocol),n.push(Pn.encodedSize),n.push(Pn.decodedSize),An(),re(n)),[2]}))}))}(29)}var Dn,Rn=0,Xn=1/0,Hn=0,Ln=0,Un=[],Gn=new Map,Bn=function(){return Rn||0},Vn=function(){if(!Un.length)return-1;var t=Math.min(Un.length-1,Math.floor((Bn()-Ln)/50));return Un[t].latency},Yn=function(){Ln=Bn(),Un.length=0,Gn.clear()},Wn=function(t){if(t.interactionId&&!(t.duration<40)){!function(t){"interactionCount"in performance?Rn=performance.interactionCount:t.interactionId&&(Xn=Math.min(Xn,t.interactionId),Hn=Math.max(Hn,t.interactionId),Rn=Hn?(Hn-Xn)/7+1:0)}(t);var e=Un[Un.length-1],n=Gn.get(t.interactionId);if(n||Un.length<10||t.duration>(null==e?void 0:e.latency)){if(n)t.duration>n.latency&&(n.latency=t.duration);else{var r={id:t.interactionId,latency:t.duration};Gn.set(r.id,r),Un.push(r)}Un.sort((function(t,e){return e.latency-t.latency})),Un.length>10&&Un.splice(10).forEach((function(t){return Gn.delete(t.id)}))}}},Jn=["navigation","resource","longtask","first-input","layout-shift","largest-contentful-paint","event"];function Zn(){try{Dn&&Dn.disconnect(),Dn=new PerformanceObserver(dn(Fn));for(var t=0,e=Jn;t<e.length;t++){var n=e[t];PerformanceObserver.supportedEntryTypes.indexOf(n)>=0&&("layout-shift"===n&&L(9,0),Dn.observe({type:n,buffered:!0}))}}catch(t){}}function Fn(t){!function(t){for(var e=(!("visibilityState"in document)||"visible"===document.visibilityState),n=0;n<t.length;n++){var r=t[n];switch(r.entryType){case"navigation":qn(r);break;case"resource":var a=r.name;Se(4,Qn(a)),a!==i.upload&&a!==i.fallback||U(28,r.duration);break;case"longtask":H(7);break;case"first-input":e&&U(10,r.processingStart-r.startTime);break;case"event":e&&"PerformanceEventTiming"in window&&"interactionId"in PerformanceEventTiming.prototype&&(Wn(r),Se(37,Vn().toString()));break;case"layout-shift":e&&!r.hadRecentInput&&L(9,1e3*r.value);break;case"largest-contentful-paint":e&&U(8,r.startTime)}}}(t.getEntries())}var Kn=null;function Qn(t){return Kn||(Kn=document.createElement("a")),Kn.href=t,Kn.host}var $n=[P,P,P],tr=[P,P,P,Object.freeze({__proto__:null,start:function(){An(),function(){navigator&&navigator.connection&&Se(27,navigator.connection.effectiveType),window.PerformanceObserver&&PerformanceObserver.supportedEntryTypes&&("complete"!==document.readyState?pn(window,"load",G.bind(this,Zn,0)):Zn())}()},stop:function(){Dn&&Dn.disconnect(),Dn=null,Yn(),Kn=null,An()}}),P],er=tr;function nr(t){void 0===t&&(t=null),er="gemx"===t.mode?$n:tr,function(){try{var t=navigator&&"globalPrivacyControl"in navigator&&1==navigator.globalPrivacyControl;return!1===Mn&&"undefined"!=typeof Promise&&window.MutationObserver&&document.createTreeWalker&&"now"in Date&&"now"in performance&&"undefined"!=typeof WeakMap&&!t}catch(t){return!1}}()&&(!function(t){if(null===t||Mn)return!1;for(var e in t)e in i&&(i[e]=t[e])}(t),Cn(),At(),er.forEach((function(t){return dn(t.start)()})),null===t&&ur())}function rr(){jn()&&(er.slice().reverse().forEach((function(t){return dn(t.stop)()})),qt(),Nn(),void 0!==or&&(or[ir]=function(){(or[ir].q=or[ir].q||[]).push(arguments),"start"===arguments[0]&&or[ir].q.unshift(or[ir].q.pop())&&ur()}))}var ar=Object.freeze({__proto__:null,consent:Ye,consentv2:We,dlog:Se,event:q,hashText:M,identify:ot,maxMetric:U,measure:dn,metadata:Be,pause:function(){jn()&&(q("clarityGemX","pause"),null===En&&(En=new Promise((function(t){On=t}))))},queue:re,register:z,resume:function(){jn()&&(En&&(On(),En=null,null===In&&xn()),q("clarityGemX","resume"))},schedule:function(t,e){return void 0===e&&(e=0),et(this,void 0,void 0,(function(){var n,r,a;return nt(this,(function(o){for(n=0,r=kn;n<r.length;n++)if(r[n].task===t)return[2];return a=new Promise((function(n){kn[1===e?"unshift":"push"]({task:t,resolve:n,id:Ve()})})),null===In&&null===En&&xn(),[2,a]}))}))},set:at,signal:function(t){jt=t},start:nr,stop:rr,time:l,upgrade:Q,version:d}),or=window,ir="clarityGemX";function ur(){if(void 0!==or){if(or[ir]&&or[ir].v)return console.warn("Error CL001: Multiple Clarity tags detected.");var t=or[ir]&&or[ir].q||[];for(or[ir]=function(t){for(var e=[],n=1;n<arguments.length;n++)e[n-1]=arguments[n];return ar[t].apply(ar,e)},or[ir].v=d;t.length>0;)or[ir].apply(or,t.shift())}}ur()}();
|
|
1
|
+
!function(){"use strict";var t=Object.freeze({__proto__:null,get flush(){return oe},get inject(){return ie},get queue(){return ae},get start(){return re},get stop(){return ue},get track(){return Ft}}),e=Object.freeze({__proto__:null,get check(){return he},get compute(){return ve},get data(){return Kt},get start(){return pe},get stop(){return me},get trigger(){return ge}}),n=Object.freeze({__proto__:null,get compute(){return Ie},get data(){return ye},get log(){return ke},get reset(){return Ee},get start(){return _e},get stop(){return Se},get updates(){return we}}),r=Object.freeze({__proto__:null,get compute(){return Ae},get config(){return Ne},get consent(){return je},get data(){return Oe},get start(){return xe},get stop(){return Me},get trackConsentv2(){return Pe}}),a=Object.freeze({__proto__:null,get callback(){return Qe},get callbacks(){return De},get clear(){return Ke},get consent(){return Je},get consentv2(){return We},get data(){return qe},get electron(){return Re},get id(){return Ye},get metadata(){return Ve},get save(){return $e},get shortid(){return en},get start(){return Ue},get stop(){return Be}}),o=Object.freeze({__proto__:null,get data(){return on},get envelope(){return sn},get start(){return un},get stop(){return cn}}),i={projectId:null,delay:1e3,lean:!1,lite:!1,track:!0,content:!0,drop:[],mask:[],unmask:[],regions:[],cookies:[],fraud:!0,checksum:[],report:null,upload:null,fallback:null,upgrade:null,action:null,dob:null,delayDom:!1,throttleDom:!0,conversions:!1,includeSubdomains:!0,modules:[],diagnostics:!1,externalSession:!1,userId:null,sessionId:null,mode:"gemx"};function u(t){return window.Zone&&"__symbol__"in window.Zone?window.Zone.__symbol__(t):t}var c=0;function s(){return performance.now()+performance.timeOrigin}function l(t){void 0===t&&(t=null);var e=0===c?s():c,n=t&&t.timeStamp>0?t.timeStamp:performance.now(),r=t&&t.view?t.view.performance.timeOrigin:performance.timeOrigin;return Math.max(Math.round(n+r-e),0)}var d="0.8.91";var f=/\S/gi,p=255,h=!0,g=null,v=null,m=null;function y(t,e,n,r,a){if(void 0===r&&(r=!1),t){if("input"==e&&("checkbox"===a||"radio"===a))return t;switch(n){case 0:return t;case 1:switch(e){case"*T":case"value":case"placeholder":case"click":return function(t){var e=-1,n=0,r=!1,a=!1,o=!1,i=null;I();for(var u=0;u<t.length;u++){var c=t.charCodeAt(u);if(r=r||c>=48&&c<=57,a=a||64===c,o=9===c||10===c||13===c||32===c,0===u||u===t.length-1||o){if(r||a){null===i&&(i=t.split(""));var s=t.substring(e+1,o?u:u+1);s=h&&null!==m?s.match(m)?s:S(s,"▪","▫"):_(s),i.splice(e+1-n,s.length,s),n+=s.length-1}o&&(r=!1,a=!1,e=u)}}return i?i.join(""):t}(t);case"input":case"change":return k(t)}return t;case 2:case 3:switch(e){case"*T":case"data-":return r?b(t):_(t);case"src":case"srcset":case"title":case"alt":case"href":case"xlink:href":return 3===n?(null==t?void 0:t.startsWith("blob:"))?"blob:":"":t;case"value":case"click":case"input":case"change":return k(t);case"placeholder":return _(t)}break;case 4:switch(e){case"*T":case"data-":return r?b(t):_(t);case"value":case"input":case"click":case"change":return Array(5).join("•");case"checksum":return""}break;case 5:switch(e){case"*T":case"data-":return S(t,"▪","▫");case"value":case"input":case"click":case"change":return Array(5).join("•");case"checksum":case"src":case"srcset":case"alt":case"title":return""}}}return t}function w(t,e,n){void 0===e&&(e=!1),void 0===n&&(n=!1);var r=t;if(e)r="".concat("https://").concat("Electron");else{var a=i.drop;if(a&&a.length>0&&t&&t.indexOf("?")>0){var o=t.split("?"),u=o[0],c=o[1];r=u+"?"+c.split("&").map((function(t){return a.some((function(e){return 0===t.indexOf("".concat(e,"="))}))?"".concat(t.split("=")[0],"=").concat("*na*"):t})).join("&")}}return n&&(r=r.substring(0,p)),r}function b(t){var e=t.trim();if(e.length>0){var n=e[0],r=t.indexOf(n),a=t.substr(0,r),o=t.substr(r+e.length);return"".concat(a).concat(e.length.toString(36)).concat(o)}return t}function _(t){return t.replace(f,"•")}function S(t,e,n){return I(),t?t.replace(v,e).replace(g,n):t}function k(t){for(var e=5*(Math.floor(t.length/5)+1),n="",r=0;r<e;r++)n+=r>0&&r%5==0?" ":"•";return n}function I(){if(h&&null===g)try{g=new RegExp("\\p{N}","gu"),v=new RegExp("\\p{L}","gu"),m=new RegExp("\\p{Sc}","gu")}catch(t){h=!1}}var E=[],O=null;function T(){}var x=[];function M(){}function C(){}function N(){}function j(){}function z(){}var P=Object.freeze({__proto__:null,checkDocumentStyles:function(t){},compute:function(){},data:O,event:j,hashText:M,keys:x,log:T,observe:function(){},register:z,reset:function(){},sheetAdoptionState:[],sheetUpdateState:[],start:function(){},state:E,stop:function(){},track:N,trigger:C}),A=null;function q(t,e){zn()&&t&&"string"==typeof t&&t.length<255&&(A=e&&"string"==typeof e&&e.length<255?{key:t,value:e}:{value:t},fe(24))}var D,R=null,X=null;function H(t){t in R||(R[t]=0),t in X||(X[t]=0),R[t]++,X[t]++}function L(t,e){null!==e&&(t in R||(R[t]=0),t in X||(X[t]=0),R[t]+=e,X[t]+=e)}function U(t,e){null!==e&&!1===isNaN(e)&&(t in R||(R[t]=0),(e>R[t]||0===R[t])&&(X[t]=e,R[t]=e))}function G(t,e,n){return window.setTimeout(fn(t),e,n)}function B(t){return window.clearTimeout(t)}var V=0,Y=0,J=null;function W(){J&&B(J),J=G(Z,Y),V=l()}function Z(){var t=l();D={gap:t-V},fe(25),D.gap<3e5?J=G(Z,Y):Cn&&(q("clarityGemX","suspend"),ar(),["mousemove","touchstart"].forEach((function(t){return hn(document,t,Pn)})),["resize","scroll","pageshow"].forEach((function(t){return hn(window,t,Pn)})))}var F=Object.freeze({__proto__:null,get data(){return D},reset:W,start:function(){Y=6e4,V=0},stop:function(){B(J),V=0,Y=0}}),K=null;function Q(t){zn()&&i.lean&&(i.lean=!1,K={key:t},Qe(),$e(),i.upgrade&&i.upgrade(t),fe(3),i.lite)}var $=Object.freeze({__proto__:null,get data(){return K},start:function(){!i.lean&&i.upgrade&&i.upgrade("Config"),K=null},stop:function(){K=null},upgrade:Q}),tt=function(){return tt=Object.assign||function(t){for(var e,n=1,r=arguments.length;n<r;n++)for(var a in e=arguments[n])Object.prototype.hasOwnProperty.call(e,a)&&(t[a]=e[a]);return t},tt.apply(this,arguments)};function et(t,e,n,r){return new(n||(n=Promise))((function(a,o){function i(t){try{c(r.next(t))}catch(t){o(t)}}function u(t){try{c(r.throw(t))}catch(t){o(t)}}function c(t){var e;t.done?a(t.value):(e=t.value,e instanceof n?e:new n((function(t){t(e)}))).then(i,u)}c((r=r.apply(t,e||[])).next())}))}function nt(t,e){var n,r,a,o,i={label:0,sent:function(){if(1&a[0])throw a[1];return a[1]},trys:[],ops:[]};return o={next:u(0),throw:u(1),return:u(2)},"function"==typeof Symbol&&(o[Symbol.iterator]=function(){return this}),o;function u(u){return function(c){return function(u){if(n)throw new TypeError("Generator is already executing.");for(;o&&(o=0,u[0]&&(i=0)),i;)try{if(n=1,r&&(a=2&u[0]?r.return:u[0]?r.throw||((a=r.return)&&a.call(r),0):r.next)&&!(a=a.call(r,u[1])).done)return a;switch(r=0,a&&(u=[2&u[0],a.value]),u[0]){case 0:case 1:a=u;break;case 4:return i.label++,{value:u[1],done:!1};case 5:i.label++,r=u[1],u=[0];continue;case 7:u=i.ops.pop(),i.trys.pop();continue;default:if(!(a=i.trys,(a=a.length>0&&a[a.length-1])||6!==u[0]&&2!==u[0])){i=0;continue}if(3===u[0]&&(!a||u[1]>a[0]&&u[1]<a[3])){i.label=u[1];break}if(6===u[0]&&i.label<a[1]){i.label=a[1],a=u;break}if(a&&i.label<a[2]){i.label=a[2],i.ops.push(u);break}a[2]&&i.ops.pop(),i.trys.pop();continue}u=e.call(t,i)}catch(t){u=[6,t],r=0}finally{n=a=0}if(5&u[0])throw u[1];return{value:u[0]?u[1]:void 0,done:!0}}([u,c])}}}var rt=null;function at(t,e){it(t,"string"==typeof e?[e]:e)}function ot(t,e,n,r){return void 0===e&&(e=null),void 0===n&&(n=null),void 0===r&&(r=null),et(this,void 0,void 0,(function(){var a,o;return nt(this,(function(i){switch(i.label){case 0:return o={},[4,st(t)];case 1:return o.userId=i.sent(),o.userHint=r||((u=t)&&u.length>=5?"".concat(u.substring(0,2)).concat(S(u.substring(2),"*","*")):S(u,"*","*")),it("userId",[(a=o).userId]),it("userHint",[a.userHint]),it("userType",[lt(t)]),e&&(it("sessionId",[e]),a.sessionId=e),n&&(it("pageId",[n]),a.pageId=n),[2,a]}var u}))}))}function it(t,e){if(zn()&&t&&e&&"string"==typeof t&&t.length<255){for(var n=(t in rt?rt[t]:[]),r=0;r<e.length;r++)"string"==typeof e[r]&&e[r].length<255&&n.push(e[r]);rt[t]=n}}function ut(){fe(34)}function ct(){rt={}}function st(t){return et(this,void 0,void 0,(function(){var e;return nt(this,(function(n){switch(n.label){case 0:return n.trys.push([0,4,,5]),crypto&&t?[4,crypto.subtle.digest("SHA-256",(new TextEncoder).encode(t))]:[3,2];case 1:return e=n.sent(),[2,Array.prototype.map.call(new Uint8Array(e),(function(t){return("00"+t.toString(16)).slice(-2)})).join("")];case 2:return[2,""];case 3:return[3,5];case 4:return n.sent(),[2,""];case 5:return[2]}}))}))}function lt(t){return t&&t.indexOf("@")>0?"email":"string"}var dt=Object.freeze({__proto__:null,compute:ut,get data(){return rt},identify:ot,reset:ct,set:at,start:function(){ct()},stop:function(){ct()}}),ft="CompressionStream"in window;function pt(t){return et(this,void 0,void 0,(function(){var e,n;return nt(this,(function(r){switch(r.label){case 0:return r.trys.push([0,3,,4]),ft?(e=new ReadableStream({start:function(e){return et(this,void 0,void 0,(function(){return nt(this,(function(n){return e.enqueue(t),e.close(),[2]}))}))}}).pipeThrough(new TextEncoderStream).pipeThrough(new window.CompressionStream("gzip")),n=Uint8Array.bind,[4,ht(e)]):[3,2];case 1:return[2,new(n.apply(Uint8Array,[void 0,r.sent()]))];case 2:return[3,4];case 3:return r.sent(),[3,4];case 4:return[2,null]}}))}))}function ht(t){return et(this,void 0,void 0,(function(){var e,n,r,a,o;return nt(this,(function(i){switch(i.label){case 0:e=t.getReader(),n=[],r=!1,a=[],i.label=1;case 1:return r?[3,3]:[4,e.read()];case 2:return o=i.sent(),r=o.done,a=o.value,r?[2,n]:(n.push.apply(n,a),[3,1]);case 3:return[2,n]}}))}))}function gt(t,e){try{return!!t[e]}catch(t){return!1}}function vt(t){try{var e=decodeURIComponent(t);return[e!=t,e]}catch(t){}return[!1,t]}var mt=null,yt="^";function wt(t,e){var n;if(void 0===e&&(e=!1),gt(document,"cookie")){var r=document.cookie.split(";");if(r)for(var a=0;a<r.length;a++){var o=r[a].split("=");if(o.length>1&&o[0]&&o[0].trim()===t){for(var i=vt(o[1]),u=i[0],c=i[1];u;)u=(n=vt(c))[0],c=n[1];return e?c.endsWith("".concat("~","1"))?c.substring(0,c.length-2):null:c}}}return null}function bt(t,e,n){if((i.track||""==e)&&(navigator&&navigator.cookieEnabled||gt(document,"cookie"))){var r=function(t){return encodeURIComponent(t)}(e),a=new Date;a.setDate(a.getDate()+n);var o=a?"expires="+a.toUTCString():"",u="".concat(t,"=").concat(r).concat(";").concat(o).concat(";path=/");try{if(null===mt){for(var c=location.hostname?location.hostname.split("."):[],s=c.length-1;s>=0;s--)if(mt=".".concat(c[s]).concat(mt||""),s<c.length-1&&(document.cookie="".concat(u).concat(";").concat("domain=").concat(mt),wt(t)===e))return;mt=""}}catch(t){mt=""}document.cookie=mt?"".concat(u).concat(";").concat("domain=").concat(mt):u}}var _t=Object.freeze({__proto__:null,COOKIE_SEP:yt,getCookie:wt,setCookie:bt,start:function(){mt=null},stop:function(){mt=null}}),St={debug:!1,excludeClassNames:[],ignoreMutationClassNames:[],discoverTrigger:null},kt=tt({},St);function It(){return kt.debug}var Et=Object.freeze({__proto__:null,get:function(){return kt},isDebug:It,set:function(t){kt=tt(tt({},kt),t)},start:function(){var t,e,n,r,a,o,i,u;kt={debug:new URLSearchParams(window.location.search).has("gemx_debug")||null!==(e=null===(t=null===window||void 0===window?void 0:window.GemXHeatmap)||void 0===t?void 0:t.debug)&&void 0!==e&&e,excludeClassNames:null!==(r=null===(n=null===window||void 0===window?void 0:window.GemXHeatmap)||void 0===n?void 0:n.excludeClassNames)&&void 0!==r?r:[],ignoreMutationClassNames:null!==(o=null===(a=null===window||void 0===window?void 0:window.GemXHeatmap)||void 0===a?void 0:a.ignoreMutationClassNames)&&void 0!==o?o:[],discoverTrigger:null!==(u=null===(i=null===window||void 0===window?void 0:window.GemXHeatmap)||void 0===i?void 0:i.discoverTrigger)&&void 0!==u?u:null}},stop:function(){kt=tt({},St)}}),Ot=[],Tt=0,xt=!1,Mt=0,Ct=null;function Nt(){return xt}function jt(t,e){Ot.push(t),Tt+=e,Mt>0&&Tt>=Mt&&Ct&&Ct()}var zt=null;function Pt(t){try{if(!zt)return;var e=function(t){try{return JSON.parse(t)}catch(t){return[]}}(t);e.forEach((function(t){zt(t)}))}catch(t){}}var At=[Et,Object.freeze({__proto__:null,config:function(t,e){return Mt=null!=t?t:0,Ct=null!=e?e:null,!0},drain:function(){xt=!1;var t=Ot;return Ot=[],Tt=0,t},getBytes:function(){return Tt},hold:jt,isActive:Nt,start:function(){Ot=[],Tt=0,xt=!0},stop:function(){Ot=[],Tt=0,xt=!1,Mt=0,Ct=null}}),P,n,dt,e,P,_t,r,a,o,t,F,$,P];function qt(){R={},X={},H(5),At.forEach((function(t){return fn(t.start)()}))}function Dt(){At.slice().reverse().forEach((function(t){return fn(t.stop)()})),R={},X={}}function Rt(){ve(),Ae(),"gemx"!==i.mode&&(ut(),Ie(),fe(0))}function Xt(t,e,n,r){return"href"===t&&"LINK"===r?"".concat(t,"=").concat(e):"".concat(t,"=").concat(y(e,0===t.indexOf("data-")?"data-":t,n))}var Ht=[],Lt=1,Ut=null;function Gt(){Ht=[],function(t){var e=[t];for(;e.length>0;){for(var n=null,r=null,a=null,o=e.shift(),i=o.firstChild,u=o.parentElement?o.parentElement:o.parentNode?o.parentNode:null;i;)e.push(i),i=i.nextSibling;switch(o.nodeType){case Node.DOCUMENT_TYPE_NODE:var c=o;r="*D",n={name:c.name,publicId:c.publicId,systemId:c.systemId};break;case Node.TEXT_NODE:a=o.nodeValue,r=Ut.get(u)?"*T":r;break;case Node.ELEMENT_NODE:var s=o;n=Bt(s),r=["NOSCRIPT","SCRIPT","STYLE"].indexOf(s.tagName)<0?s.tagName:r}Vt(o,u,{tag:r,attributes:n,value:a})}}(document),function(t){et(this,void 0,void 0,(function(){var e,n,r,a,o,i,u,c,s,d,f,p,h;return nt(this,(function(g){switch(e=l(),n=[e,t],t){case 8:r=O,n.push(r.width),n.push(r.height),r.width,r.height,ae(n);break;case 43:if((a=Ht).length>0){for(o=0,i=a;o<i.length;o++)for(u=i[o],c=u.metadata.privacy,s=u.data,d=0,f=["tag","attributes","value"];d<f.length;d++)if(s[p=f[d]])switch(p){case"tag":n.push(u.id),u.parent&&n.push(u.parent),u.previous&&n.push(u.previous),n.push(s[p]);break;case"attributes":for(h in s[p])void 0!==s[p][h]&&n.push(Xt(h,s[p][h],c,s.tag));break;case"value":n.push(y(s[p],s.tag,c))}ae(function(t){for(var e=[],n={},r=0,a=null,o=0;o<t.length;o++)if("string"==typeof t[o]){var i=t[o],u=n[i]||-1;u>=0?a?a.push(u):(a=[u],e.push(a),r++):(a=null,e.push(i),n[i]=r++)}else a=null,e.push(t[o]),r++;return e}(n),!0)}}return[2]}))}))}(43)}function Bt(t){var e={},n=t.attributes;if(n&&n.length>0)for(var r=0;r<n.length;r++)e[n[r].name]=n[r].value;return e}function Vt(t,e,n){if(t&&n&&n.tag){var r=function(t){return null===t?null:Ut.has(t)?Ut.get(t):(Ut.set(t,Lt),Lt++)}(t),a=e?Ut.get(e):null,o=t.previousSibling?Ut.get(t.previousSibling):null;Ht.push({id:r,parent:a,previous:o,children:[],data:n,selector:null,hash:null,region:null,metadata:{active:!0,suspend:!1,privacy:5,position:null,fraud:null,size:null}})}}var Yt,Jt,Wt,Zt,Ft,Kt,Qt=0,$t=0,te=null,ee=0,ne=!1;function re(){Zt=!0,Qt=0,$t=0,ne=!1,ee=0,Yt=[],Jt=[],Wt={},Ft=null}function ae(t,e){if(void 0===e&&(e=!0),Zt){var n=l(),r=t.length>1?t[1]:null,a=JSON.stringify(t);switch(i.lean?!ne&&$t+a.length>10485760&&(ne=!0):ne=!1,r){case 5:if(ne)break;if(Nt()){jt(t,a.length);break}Qt+=a.length;case 37:case 6:case 43:case 45:case 46:case 44:case 51:if(ne)break;Nt()&&jt(t,a.length),$t+=a.length,Yt.push(a);break;default:Jt.push(a)}H(25);var o=function(){var t=!1===i.lean&&Qt>0?100:on.sequence*i.delay;return"string"==typeof i.upload?Math.max(Math.min(t,3e4),100):i.delay}();n-ee>2*o&&(B(te),te=null),e&&null===te&&(25!==r&&W(),te=G(ce,o),ee=n,he($t))}}function oe(t){Zt&&(B(te),te=null,ce(!1,t))}function ie(t){for(var e=0,n=t;e<n.length;e++){var r=n[e],a=JSON.stringify(r);Qt+=a.length,$t+=a.length,Yt.push(a)}}function ue(){B(te),ce(!0),Qt=0,$t=0,ne=!1,ee=0,Yt=[],Jt=[],Wt={},Ft=null,Zt=!1}function ce(t,e){return void 0===t&&(t=!1),et(this,void 0,void 0,(function(){var n,r,a,o,u,c,s,l,d,f,p,h,g,v,m,y,w;return nt(this,(function(b){switch(b.label){case 0:if(!Zt)return[2];if(te=null,(n=("gemx-snapshot"===e||!1===i.lean)&&$t>0&&($t<1048576||on.sequence>0))&&U(1,1),Rt(),r=!0===t,!on)return[2];if(a=It(),!e&&a){for(o=[[9,"click"],[10,"scroll"]],u=new Set(Jt.map((function(t){return JSON.parse(t)[1]}))),c=[],s=0,l=o;s<l.length;s++)f=(d=l[s])[0],p=d[1],u.has(f)&&c.push(p);e=c.length>0?c.join("-"):void 0}return h=JSON.stringify(sn(r)),g="[".concat(Jt.join(),"]"),v=n?"[".concat(Yt.join(),"]"):"",r&&v.length>0&&h.length+g.length+v.length>65536&&(v=""),m=function(t){return t.p.length>0?'{"e":'.concat(t.e,',"a":').concat(t.a,',"p":').concat(t.p,"}"):'{"e":'.concat(t.e,',"a":').concat(t.a,"}")}({e:h,a:g,p:v}),r?(w=null,[3,3]):[3,1];case 1:return[4,pt(m)];case 2:w=b.sent(),b.label=3;case 3:return L(2,(y=w)?y.length:m.length),se(m,y,on.sequence,r,e),Jt=[],n&&(Yt=[],$t=0,Qt=0,ne=!1),[2]}}))}))}function se(t,e,n,r,a){if(void 0===r&&(r=!1),"string"==typeof i.upload){var o=i.upload,u=!1;if(r&&navigator&&navigator.sendBeacon)try{(u=navigator.sendBeacon.bind(navigator)(o,t))&&de(n)}catch(t){}if(!1===u){n in Wt?Wt[n].attempts++:Wt[n]={data:t,attempts:1};var c=new XMLHttpRequest;c.open("POST",o,!0),c.timeout=15e3,c.ontimeout=function(){dn(new Error("".concat("Timeout"," : ").concat(o)))},null!==n&&(c.onreadystatechange=function(){fn(le)(c,n)}),c.withCredentials=!0,e?(c.setRequestHeader("Accept","application/x-clarity-gzip"),c.send(e)):c.send(t)}}else if(i.upload){(0,i.upload)(t,a),de(n)}}function le(t,e){var n=Wt[e];t&&4===t.readyState&&n&&((t.status<200||t.status>208)&&n.attempts<=1?t.status>=400&&t.status<500?ge(6):(0===t.status&&(i.upload=i.fallback?i.fallback:i.upload),Ft={sequence:e,attempts:n.attempts,status:t.status},fe(2),se(n.data,null,e)):(Ft={sequence:e,attempts:n.attempts,status:t.status},n.attempts>1&&fe(2),200===t.status&&t.responseText&&function(t){for(var e=t&&t.length>0?t.split("\n"):[],n=0,r=e;n<r.length;n++){var a=r[n],o=a&&a.length>0?a.split(/ (.*)/):[""];switch(o[0]){case"END":ge(6);break;case"UPGRADE":Q("Auto");break;case"ACTION":i.action&&o.length>1&&i.action(o[1]);break;case"EXTRACT":case"MODULE":o.length>1&&o[1];break;case"SIGNAL":o.length>1&&Pt(o[1]);break;case"SNAPSHOT":i.lean=!1,Gt()}}}(t.responseText),0===t.status&&(se(n.data,null,e,!0),ge(3)),t.status>=200&&t.status<=208&&de(e),delete Wt[e]))}function de(t){1===t&&($e(),Qe())}function fe(t){var e=[l(),t];switch(t){case 4:var n=E;n&&n.data&&((e=[n.time,n.event]).push(n.data.visible),e.push(n.data.docWidth),e.push(n.data.docHeight),e.push(n.data.screenWidth),e.push(n.data.screenHeight),e.push(n.data.scrollX),e.push(n.data.scrollY),e.push(n.data.pointerX),e.push(n.data.pointerY),e.push(n.data.activityTime),e.push(n.data.scrollTime),e.push(n.data.pointerTime),e.push(n.data.moveX),e.push(n.data.moveY),e.push(n.data.moveTime),e.push(n.data.downX),e.push(n.data.downY),e.push(n.data.downTime),e.push(n.data.upX),e.push(n.data.upY),e.push(n.data.upTime),e.push(n.data.pointerPrevX),e.push(n.data.pointerPrevY),e.push(n.data.pointerPrevTime),e.push(n.data.modules),ae(e,!1));break;case 25:e.push(D.gap),ae(e);break;case 35:e.push(Kt.check),ae(e,!1);break;case 3:e.push(K.key),ae(e);break;case 2:e.push(Ft.sequence),e.push(Ft.attempts),e.push(Ft.status),ae(e,!1);break;case 24:A.key&&e.push(A.key),e.push(A.value),ae(e);break;case 34:var r=Object.keys(rt);if(r.length>0){for(var a=0,o=r;a<o.length;a++){var i=o[a];e.push(i),e.push(rt[i])}ct(),ae(e,!1)}break;case 0:var u=Object.keys(X);if(u.length>0){for(var c=0,s=u;c<s.length;c++){var d=s[c],f=parseInt(d,10);e.push(f),e.push(Math.round(X[d]))}X={},ae(e,!1)}break;case 1:var p=Object.keys(we);if(p.length>0){for(var h=0,g=p;h<g.length;h++){var v=g[h];f=parseInt(v,10);e.push(f),e.push(we[v])}Ee(),ae(e,!1)}break;case 36:var m=Object.keys(O);if(m.length>0){for(var y=0,w=m;y<w.length;y++){var b=w[y];f=parseInt(b,10);e.push(f),e.push([].concat.apply([],O[b]))}ae(e,!1)}break;case 40:x.forEach((function(t){e.push(t);var n=[];for(var r in O[t]){var a=parseInt(r,10);n.push(a),n.push(O[t][r])}e.push(n)})),ae(e,!1);break;case 47:e.push(Oe.source),e.push(Oe.ad_Storage),e.push(Oe.analytics_Storage),ae(e,!1)}}function pe(){Kt={check:0}}function he(t){if(0===Kt.check){var e=Kt.check;e=on.sequence>=128?1:e,e=on.pageNum>=128?7:e,e=l()>72e5?2:e,(e=t>10485760?2:e)!==Kt.check&&ge(e)}}function ge(t){Kt.check=t,5!==t&&(Ke(),ar())}function ve(){0!==Kt.check&&fe(35)}function me(){Kt=null}var ye=null,we=null,be=!1;function _e(){ye={},we={},be=!1}function Se(){ye={},we={},be=!1}function ke(t,e){if(e&&(e="".concat(e),t in ye||(ye[t]=[]),ye[t].indexOf(e)<0)){if(ye[t].length>128)return void(be||(be=!0,ge(5)));ye[t].push(e),t in we||(we[t]=[]),we[t].push(e)}}function Ie(){fe(1)}function Ee(){we={},be=!1}var Oe=null,Te=!0;function xe(){var t,e=null===(t=window.google_tag_data)||void 0===t?void 0:t.ics;Te=!0,(null==e?void 0:e.addListener)&&e.addListener(["ad_storage","analytics_storage"],Ce)}function Me(){Te=!0}function Ce(){var t,e=null===(t=window.google_tag_data)||void 0===t?void 0:t.ics;if(null==e?void 0:e.getConsentState)try{var n=e.getConsentState("analytics_storage");We(function(t){var e={source:2,ad_Storage:1===t.ad_Storage?"granted":"denied",analytics_Storage:1===t.analytics_Storage?"granted":"denied"};return e}({ad_Storage:e.getConsentState("ad_storage"),analytics_Storage:n}))}catch(t){return}}function Ne(t){ze(t.analytics_Storage?1:0),Oe=t}function je(){ze(2)}function ze(t){ke(36,t.toString())}function Pe(t){Oe=t,fe(47)}function Ae(){var t;if(Te&&(fe(47),Te=!1,!i.track)){var e=null===(t=window.google_tag_data)||void 0===t?void 0:t.ics;(null==e?void 0:e.usedUpdate)&&Ce()}}var qe=null,De=[],Re=0,Xe=null,He=!1,Le={source:7,ad_Storage:"denied",analytics_Storage:"denied"};function Ue(){var t,e,n,r=navigator&&"userAgent"in navigator?navigator.userAgent:"",a=null!==(n="undefined"!=typeof Intl&&(null===(e=null===(t=null===Intl||void 0===Intl?void 0:Intl.DateTimeFormat())||void 0===t?void 0:t.resolvedOptions())||void 0===e?void 0:e.timeZone))&&void 0!==n?n:"",o=(new Date).getTimezoneOffset().toString(),u=window.location.ancestorOrigins?Array.from(window.location.ancestorOrigins).toString():"",c=document&&document.title?document.title:"";Re=r.indexOf("Electron")>0?1:0;var s=function(){var t={session:en(),ts:Math.round(Date.now()),count:1,upgrade:null,upload:""},e=wt("_clsk",!i.includeSubdomains);if(e){var n=e.includes("^")?e.split("^"):e.split("|");n.length>=5&&t.ts-nn(n[1])<18e5&&(t.session=n[0],t.count=nn(n[2])+1,t.upgrade=nn(n[3]),t.upload=n.length>=6?"".concat("https://").concat(n[5],"/").concat(n[4]):"".concat("https://").concat(n[4]))}return t}(),l=rn(),d=i.projectId||function(t,e){void 0===e&&(e=null);for(var n,r=5381,a=r,o=0;o<t.length;o+=2)r=(r<<5)+r^t.charCodeAt(o),o+1<t.length&&(a=(a<<5)+a^t.charCodeAt(o+1));return n=Math.abs(r+11579*a),(e?n%Math.pow(2,e):n).toString(36)}(location.host),f=i.externalSession&&i.userId?i.userId:l.id,p=i.externalSession&&i.sessionId?i.sessionId:s.session;qe={projectId:d,userId:f,sessionId:p,pageNum:s.count},i.lean=i.track&&null!==s.upgrade?0===s.upgrade:i.lean,i.upload=i.track&&"string"==typeof i.upload&&s.upload&&s.upload.length>"https://".length?s.upload:i.upload,ke(0,r),ke(3,c),ke(1,w(location.href,!!Re)),ke(2,document.referrer),ke(15,function(){var t=en();if(i.track&>(window,"sessionStorage")){var e=sessionStorage.getItem("_cltk");t=e||t,sessionStorage.setItem("_cltk",t)}return t}()),ke(16,document.documentElement.lang),ke(17,document.dir),ke(26,"".concat(window.devicePixelRatio)),ke(28,l.dob.toString()),ke(29,l.version.toString()),ke(33,u),ke(34,a),ke(35,o),U(0,s.ts),U(1,0),U(35,Re);var h,g=null===window||void 0===window?void 0:window.Zone;g&&"__symbol__"in g&&U(39,1),navigator&&(ke(9,navigator.language),U(33,navigator.hardwareConcurrency),U(32,navigator.maxTouchPoints),U(34,Math.round(navigator.deviceMemory)),(h=navigator.userAgentData)&&h.getHighEntropyValues?h.getHighEntropyValues(["model","platform","platformVersion","uaFullVersion"]).then((function(t){var e;ke(22,t.platform),ke(23,t.platformVersion),null===(e=t.brands)||void 0===e||e.forEach((function(t){ke(24,t.name+"~"+t.version)})),ke(25,t.model),U(27,t.mobile?1:0)})):ke(22,navigator.platform)),screen&&(U(14,Math.round(screen.width)),U(15,Math.round(screen.height)),U(16,Math.round(screen.colorDepth))),null===Xe&&(Xe={source:l.consent?6:0,ad_Storage:i.track?"granted":"denied",analytics_Storage:i.track?"granted":"denied"}),Ge(),Ne(Ze(Xe)),i.externalSession||tn(l)}function Ge(){if(!He&&"granted"===(null==Xe?void 0:Xe.analytics_Storage)&&"granted"===(null==Xe?void 0:Xe.ad_Storage)){for(var t=0,e=i.cookies;t<e.length;t++){var n=e[t],r=wt(n);r&&at(n,r)}He=!0}}function Be(){qe=null,He=!1,De.forEach((function(t){t.called=!1}))}function Ve(t,e,n,r){void 0===e&&(e=!0),void 0===n&&(n=!1),void 0===r&&(r=!1);var a=i.lean?0:1,o=!1;qe&&(a||!1===e)&&(t(qe,!i.lean,r?Xe:void 0),o=!0),!n&&o||De.push({callback:t,wait:e,recall:n,called:o,consentInfo:r})}function Ye(){return qe?[qe.userId,qe.sessionId,qe.pageNum].join("."):""}function Je(t){void 0===t&&(t=!0),We(t?{source:4,ad_Storage:"granted",analytics_Storage:"granted"}:{source:4,ad_Storage:"denied",analytics_Storage:"denied"})}function We(t,e){var n;if(void 0===t&&(t=Le),void 0===e&&(e=5),zn()){var r={source:null!==(n=t.source)&&void 0!==n?n:e,ad_Storage:Fe(t.ad_Storage,null==Xe?void 0:Xe.ad_Storage),analytics_Storage:Fe(t.analytics_Storage,null==Xe?void 0:Xe.analytics_Storage)};if(Xe&&r.ad_Storage===Xe.ad_Storage&&r.analytics_Storage===Xe.analytics_Storage)return Xe.source=r.source,Pe(Ze(Xe)),void je();Xe=r,Qe(!0);var a=Ze(Xe);if(!a.analytics_Storage&&i.track)return i.track=!1,Ke(!0),ar(),void window.setTimeout(rr,250);zn()&&a.analytics_Storage&&(i.track=!0,tn(rn(),1),$e()),Ge(),Pe(a),je()}}function Ze(t){var e;return{source:null!==(e=t.source)&&void 0!==e?e:255,ad_Storage:"granted"===t.ad_Storage?1:0,analytics_Storage:"granted"===t.analytics_Storage?1:0}}function Fe(t,e){return void 0===e&&(e="denied"),"string"==typeof t?t.toLowerCase():e}function Ke(t){void 0===t&&(t=!1),bt("_clsk","",0),t&&bt("_clck","",0)}function Qe(t){void 0===t&&(t=!1),function(t,e){void 0===e&&(e=!1);if(De.length>0)for(var n=0;n<De.length;n++){var r=De[n];r.callback&&(!r.called&&!e||r.consentInfo&&e)&&(!r.wait||t)&&(r.callback(qe,!i.lean,r.consentInfo?Xe:void 0),r.called=!0,r.recall||(De.splice(n,1),n--))}}(i.lean?0:1,t)}function $e(){if(qe&&i.track&&!i.externalSession){var t=Math.round(Date.now()),e=i.upload&&"string"==typeof i.upload?i.upload.replace("https://",""):"",n=i.lean?0:1;bt("_clsk",[qe.sessionId,t,qe.pageNum,n,e].join(yt),1)}}function tn(t,e){void 0===e&&(e=null),e=null===e?t.consent:e;var n=Math.ceil((Date.now()+31536e6)/864e5),r=0===t.dob?null===i.dob?0:i.dob:t.dob;(null===t.expiry||Math.abs(n-t.expiry)>=1||t.consent!==e||t.dob!==r)&&bt("_clck",[qe.userId,2,n.toString(36),e,r].join(yt),365)}function en(){var t=Math.floor(Math.random()*Math.pow(2,32));return window&&window.crypto&&window.crypto.getRandomValues&&Uint32Array&&(t=window.crypto.getRandomValues(new Uint32Array(1))[0]),t.toString(36)}function nn(t,e){return void 0===e&&(e=10),parseInt(t,e)}function rn(){var t={id:en(),version:0,expiry:null,consent:0,dob:0},e=wt("_clck",!i.includeSubdomains);if(e&&e.length>0){var n=e.includes("^")?e.split("^"):e.split("|");n.length>1&&(t.version=nn(n[1])),n.length>2&&(t.expiry=nn(n[2],36)),n.length>3&&1===nn(n[3])&&(t.consent=1),n.length>4&&nn(n[1])>1&&(t.dob=nn(n[4])),i.track=i.track||1===t.consent,t.id=i.track?n[0]:t.id}return t}var an,on=null;function un(){var t=qe;on={version:d,sequence:0,start:0,duration:0,projectId:t.projectId,userId:t.userId,sessionId:t.sessionId,pageNum:t.pageNum,upload:0,end:0,applicationPlatform:0,url:""}}function cn(){on=null}function sn(t){return on.start=on.start+on.duration,on.duration=l()-on.start,on.sequence++,on.upload=t&&"sendBeacon"in navigator?1:0,on.end=t?1:0,on.applicationPlatform=0,on.url=w(location.href,!1,!0),[on.version,on.sequence,on.start,on.duration,on.projectId,on.userId,on.sessionId,on.pageNum,on.upload,on.end,on.applicationPlatform,on.url]}function ln(){an=[]}function dn(t){if(an&&-1===an.indexOf(t.message)){var e=i.report;if(e&&e.length>0&&on){var n={v:on.version,p:on.projectId,u:on.userId,s:on.sessionId,n:on.pageNum};t.message&&(n.m=t.message),t.stack&&(n.e=t.stack);var r=new XMLHttpRequest;r.open("POST",e,!0),r.send(JSON.stringify(n)),an.push(t.message)}}return t}function fn(t){return function(){var e=performance.now();try{t.apply(this,arguments)}catch(t){throw dn(t)}var n=performance.now()-e;L(4,n),n>30&&(H(7),U(6,n),t.dn&&"".concat(t.dn,"-").concat(n))}}var pn=new Map;function hn(t,e,n,r,a){void 0===r&&(r=!1),void 0===a&&(a=!0),n=fn(n);try{t[u("addEventListener")](e,n,{capture:r,passive:a}),function(t){return pn.has(t)}(t)||pn.set(t,[]),pn.get(t).push({event:e,listener:n,options:{capture:r,passive:a}})}catch(t){}}function gn(){pn.forEach((function(t,e){!function(t,e){t.forEach((function(t){try{e[u("removeEventListener")](t.event,t.listener,{capture:t.options.capture,passive:t.options.passive})}catch(t){}})),pn.delete(e)}(t,e)})),pn=new Map}var vn=null,mn=null,yn=null,wn=0;function bn(){return!(wn++>20)}function _n(){wn=0,yn!==kn()&&(ar(),window.setTimeout(Sn,250))}function Sn(){rr(),U(29,1)}function kn(){return location.href?location.href.replace(location.hash,""):location.href}var In=[],En=null,On=null,Tn=null;function xn(){In=[],En=null,On=null}function Mn(){var t=In.shift();t&&(En=t,t.task().then((function(){t.id===Ye()&&(t.resolve(),En=null,Mn())})).catch((function(e){t.id===Ye()&&(e&&(e.name,e.message,e.stack),En=null,Mn())})))}var Cn=!1;function Nn(){Cn=!0,c=s(),xn(),gn(),ln(),function(){if(yn=kn(),wn=0,hn(window,"popstate",_n),null===vn)try{vn=history.pushState,history.pushState=function(){vn.apply(this,arguments),zn()&&bn()&&_n()}}catch(t){vn=null}if(null===mn)try{mn=history.replaceState,history.replaceState=function(){mn.apply(this,arguments),zn()&&bn()&&_n()}}catch(t){mn=null}}()}function jn(){yn=null,wn=0,ln(),gn(),xn(),c=0,Cn=!1}function zn(){return Cn}function Pn(){rr(),q("clarityGemX","restart")}var An=null;function qn(){An=null}function Dn(t){An={fetchStart:Math.round(t.fetchStart),connectStart:Math.round(t.connectStart),connectEnd:Math.round(t.connectEnd),requestStart:Math.round(t.requestStart),responseStart:Math.round(t.responseStart),responseEnd:Math.round(t.responseEnd),domInteractive:Math.round(t.domInteractive),domComplete:Math.round(t.domComplete),loadEventStart:Math.round(t.loadEventStart),loadEventEnd:Math.round(t.loadEventEnd),redirectCount:Math.round(t.redirectCount),size:t.transferSize?t.transferSize:0,type:t.type,protocol:t.nextHopProtocol,encodedSize:t.encodedBodySize?t.encodedBodySize:0,decodedSize:t.decodedBodySize?t.decodedBodySize:0},function(t){et(this,void 0,void 0,(function(){var e,n;return nt(this,(function(r){return e=l(),n=[e,t],29===t&&(n.push(An.fetchStart),n.push(An.connectStart),n.push(An.connectEnd),n.push(An.requestStart),n.push(An.responseStart),n.push(An.responseEnd),n.push(An.domInteractive),n.push(An.domComplete),n.push(An.loadEventStart),n.push(An.loadEventEnd),n.push(An.redirectCount),n.push(An.size),n.push(An.type),n.push(An.protocol),n.push(An.encodedSize),n.push(An.decodedSize),qn(),ae(n)),[2]}))}))}(29)}var Rn,Xn=0,Hn=1/0,Ln=0,Un=0,Gn=[],Bn=new Map,Vn=function(){return Xn||0},Yn=function(){if(!Gn.length)return-1;var t=Math.min(Gn.length-1,Math.floor((Vn()-Un)/50));return Gn[t].latency},Jn=function(){Un=Vn(),Gn.length=0,Bn.clear()},Wn=function(t){if(t.interactionId&&!(t.duration<40)){!function(t){"interactionCount"in performance?Xn=performance.interactionCount:t.interactionId&&(Hn=Math.min(Hn,t.interactionId),Ln=Math.max(Ln,t.interactionId),Xn=Ln?(Ln-Hn)/7+1:0)}(t);var e=Gn[Gn.length-1],n=Bn.get(t.interactionId);if(n||Gn.length<10||t.duration>(null==e?void 0:e.latency)){if(n)t.duration>n.latency&&(n.latency=t.duration);else{var r={id:t.interactionId,latency:t.duration};Bn.set(r.id,r),Gn.push(r)}Gn.sort((function(t,e){return e.latency-t.latency})),Gn.length>10&&Gn.splice(10).forEach((function(t){return Bn.delete(t.id)}))}}},Zn=["navigation","resource","longtask","first-input","layout-shift","largest-contentful-paint","event"];function Fn(){try{Rn&&Rn.disconnect(),Rn=new PerformanceObserver(fn(Kn));for(var t=0,e=Zn;t<e.length;t++){var n=e[t];PerformanceObserver.supportedEntryTypes.indexOf(n)>=0&&("layout-shift"===n&&L(9,0),Rn.observe({type:n,buffered:!0}))}}catch(t){}}function Kn(t){!function(t){for(var e=(!("visibilityState"in document)||"visible"===document.visibilityState),n=0;n<t.length;n++){var r=t[n];switch(r.entryType){case"navigation":Dn(r);break;case"resource":var a=r.name;ke(4,$n(a)),a!==i.upload&&a!==i.fallback||U(28,r.duration);break;case"longtask":H(7);break;case"first-input":e&&U(10,r.processingStart-r.startTime);break;case"event":e&&"PerformanceEventTiming"in window&&"interactionId"in PerformanceEventTiming.prototype&&(Wn(r),ke(37,Yn().toString()));break;case"layout-shift":e&&!r.hadRecentInput&&L(9,1e3*r.value);break;case"largest-contentful-paint":e&&U(8,r.startTime)}}}(t.getEntries())}var Qn=null;function $n(t){return Qn||(Qn=document.createElement("a")),Qn.href=t,Qn.host}var tr=[P,P,P],er=[P,P,P,Object.freeze({__proto__:null,start:function(){qn(),function(){navigator&&navigator.connection&&ke(27,navigator.connection.effectiveType),window.PerformanceObserver&&PerformanceObserver.supportedEntryTypes&&("complete"!==document.readyState?hn(window,"load",G.bind(this,Fn,0)):Fn())}()},stop:function(){Rn&&Rn.disconnect(),Rn=null,Jn(),Qn=null,qn()}}),P],nr=er;function rr(t){void 0===t&&(t=null),nr="gemx"===(null==t?void 0:t.mode)?tr:er,function(){try{var t=navigator&&"globalPrivacyControl"in navigator&&1==navigator.globalPrivacyControl;return!1===Cn&&"undefined"!=typeof Promise&&window.MutationObserver&&document.createTreeWalker&&"now"in Date&&"now"in performance&&"undefined"!=typeof WeakMap&&!t}catch(t){return!1}}()&&(!function(t){if(null===t||Cn)return!1;for(var e in t)e in i&&(i[e]=t[e])}(t),Nn(),qt(),nr.forEach((function(t){return fn(t.start)()})),null===t&&cr())}function ar(){zn()&&(nr.slice().reverse().forEach((function(t){return fn(t.stop)()})),Dt(),jn(),void 0!==ir&&(ir[ur]=function(){(ir[ur].q=ir[ur].q||[]).push(arguments),"start"===arguments[0]&&ir[ur].q.unshift(ir[ur].q.pop())&&cr()}))}var or=Object.freeze({__proto__:null,consent:Je,consentv2:We,dlog:ke,event:q,hashText:M,identify:ot,maxMetric:U,measure:fn,metadata:Ve,pause:function(){zn()&&(q("clarityGemX","pause"),null===On&&(On=new Promise((function(t){Tn=t}))))},queue:ae,register:z,resume:function(){zn()&&(On&&(Tn(),On=null,null===En&&Mn()),q("clarityGemX","resume"))},schedule:function(t,e){return void 0===e&&(e=0),et(this,void 0,void 0,(function(){var n,r,a;return nt(this,(function(o){for(n=0,r=In;n<r.length;n++)if(r[n].task===t)return[2];return a=new Promise((function(n){In[1===e?"unshift":"push"]({task:t,resolve:n,id:Ye()})})),null===En&&null===On&&Mn(),[2,a]}))}))},set:at,signal:function(t){zt=t},start:rr,stop:ar,time:l,upgrade:Q,version:d}),ir=window,ur="clarityGemX";function cr(){if(void 0!==ir){if(ir[ur]&&ir[ur].v)return console.warn("Error CL001: Multiple Clarity tags detected.");var t=ir[ur]&&ir[ur].q||[];for(ir[ur]=function(t){for(var e=[],n=1;n<arguments.length;n++)e[n-1]=arguments[n];return or[t].apply(or,e)},ir[ur].v=d;t.length>0;)ir[ur].apply(ir,t.shift())}}cr()}();
|
package/package.json
CHANGED
package/src/clarity.ts
CHANGED
|
@@ -26,7 +26,7 @@ const ALL: Module[] = [diagnostic, layout, interaction, performance, dynamic];
|
|
|
26
26
|
let modules: Module[] = ALL;
|
|
27
27
|
|
|
28
28
|
export function start(config: Config = null): void {
|
|
29
|
-
modules = config
|
|
29
|
+
modules = config?.mode === "gemx" ? GEMX : ALL;
|
|
30
30
|
// Check that browser supports required APIs and we do not attempt to start Clarity multiple times
|
|
31
31
|
if (core.check()) {
|
|
32
32
|
core.config(config);
|
package/src/core/version.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
let version = "0.8.
|
|
1
|
+
let version = "0.8.91";
|
|
2
2
|
export default version;
|
package/src/data/gemx.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { GemXConfig } from "@clarity-types/data";
|
|
2
2
|
|
|
3
3
|
const defaultConfig: GemXConfig = {
|
|
4
|
+
debug: false,
|
|
4
5
|
excludeClassNames: [],
|
|
5
6
|
ignoreMutationClassNames: [],
|
|
6
7
|
discoverTrigger: null,
|
|
@@ -10,6 +11,7 @@ let _config: GemXConfig = { ...defaultConfig };
|
|
|
10
11
|
|
|
11
12
|
export function start(): void {
|
|
12
13
|
_config = {
|
|
14
|
+
debug: new URLSearchParams(window.location.search).has("gemx_debug") || (window?.GemXHeatmap?.debug ?? false),
|
|
13
15
|
excludeClassNames: (window?.GemXHeatmap?.excludeClassNames ?? []),
|
|
14
16
|
ignoreMutationClassNames: (window?.GemXHeatmap?.ignoreMutationClassNames ?? []),
|
|
15
17
|
discoverTrigger: (window?.GemXHeatmap?.discoverTrigger ?? null),
|
|
@@ -27,3 +29,7 @@ export function set(config: Partial<GemXConfig>): void {
|
|
|
27
29
|
export function get(): GemXConfig {
|
|
28
30
|
return _config;
|
|
29
31
|
}
|
|
32
|
+
|
|
33
|
+
export function isDebug(): boolean {
|
|
34
|
+
return _config.debug;
|
|
35
|
+
}
|
package/src/data/upload.ts
CHANGED
|
@@ -23,6 +23,7 @@ import { signalsEvent } from "@src/data/signal";
|
|
|
23
23
|
import { snapshot } from "@src/insight/snapshot";
|
|
24
24
|
import * as dynamic from "@src/core/dynamic";
|
|
25
25
|
import * as gemxUpload from "@src/data/gemx-upload";
|
|
26
|
+
import * as gemx from "@src/data/gemx";
|
|
26
27
|
|
|
27
28
|
let discoverBytes: number = 0;
|
|
28
29
|
let playbackBytes: number = 0;
|
|
@@ -173,7 +174,21 @@ async function upload(final: boolean = false, type?: string): Promise<void> {
|
|
|
173
174
|
let last = final === true;
|
|
174
175
|
|
|
175
176
|
// In some cases envelope has null data because it's part of the shutdown process while there's one upload call queued which might introduce runtime error
|
|
176
|
-
if(!envelope.data) return;
|
|
177
|
+
if (!envelope.data) return;
|
|
178
|
+
|
|
179
|
+
const isDebug = gemx.isDebug();
|
|
180
|
+
if (!type && isDebug) {
|
|
181
|
+
const trackedEvents: [number, string][] = [
|
|
182
|
+
[Event.Click, "click"],
|
|
183
|
+
[Event.Scroll, "scroll"],
|
|
184
|
+
];
|
|
185
|
+
const eventSet = new Set(analysis.map(item => (JSON.parse(item) as Token[])[1]));
|
|
186
|
+
const labels: string[] = [];
|
|
187
|
+
for (const [eventType, label] of trackedEvents) {
|
|
188
|
+
if (eventSet.has(eventType)) labels.push(label);
|
|
189
|
+
}
|
|
190
|
+
type = labels.length > 0 ? labels.join("-") : undefined;
|
|
191
|
+
}
|
|
177
192
|
|
|
178
193
|
let e = JSON.stringify(envelope.envelope(last));
|
|
179
194
|
let a = `[${analysis.join()}]`;
|
package/src/interaction/click.ts
CHANGED
|
@@ -62,20 +62,6 @@ function handler(event: Event, root: Node, evt: MouseEvent): void {
|
|
|
62
62
|
// Check for null values before processing this event
|
|
63
63
|
if (x !== null && y !== null) {
|
|
64
64
|
const textInfo = text(t);
|
|
65
|
-
if (config.diagnostics) {
|
|
66
|
-
const el = t as HTMLElement;
|
|
67
|
-
console.log("[clarity:click] text debug", {
|
|
68
|
-
tag: el?.tagName,
|
|
69
|
-
id: el?.id || null,
|
|
70
|
-
class: el?.className || null,
|
|
71
|
-
rawTextContent: el?.textContent?.replace(/\s+/g, " ").trim().substring(0, 100) || null,
|
|
72
|
-
inputValue: (el as HTMLInputElement)?.value || null,
|
|
73
|
-
altText: (el as HTMLImageElement)?.alt || null,
|
|
74
|
-
resolvedText: textInfo.text,
|
|
75
|
-
isFullText: textInfo.isFullText,
|
|
76
|
-
x, y,
|
|
77
|
-
});
|
|
78
|
-
}
|
|
79
65
|
state.push({
|
|
80
66
|
time: time(evt), event, data: {
|
|
81
67
|
target: t,
|
|
@@ -17,6 +17,7 @@ import * as timeline from "@src/interaction/timeline";
|
|
|
17
17
|
import * as unload from "@src/interaction/unload";
|
|
18
18
|
import * as visibility from "@src/interaction/visibility";
|
|
19
19
|
import * as focus from "@src/interaction/focus";
|
|
20
|
+
import * as dom from "@src/layout/dom";
|
|
20
21
|
|
|
21
22
|
export default async function (type: Event, ts: number = null): Promise<void> {
|
|
22
23
|
let t = ts || time();
|
|
@@ -59,10 +60,10 @@ export default async function (type: Event, ts: number = null): Promise<void> {
|
|
|
59
60
|
let cTarget = metadata(entry.data.target as Node, entry.event, entry.data.text);
|
|
60
61
|
tokens = [entry.time, entry.event];
|
|
61
62
|
let cHash = cTarget.hash ? cTarget.hash.join(Constant.Dot) : Constant.Empty;
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
63
|
+
|
|
64
|
+
const info = dom.get(entry.data.target as Node);
|
|
65
|
+
console.log(`[GemX - Interaction - Encode]`, info);
|
|
66
|
+
|
|
66
67
|
tokens.push(cTarget.id);
|
|
67
68
|
tokens.push(entry.data.x);
|
|
68
69
|
tokens.push(entry.data.y);
|
package/src/interaction/index.ts
CHANGED
|
@@ -49,7 +49,7 @@ const ALL_OBSERVE = { allRoots: [scroll], documentOnly: [click, clipboard, point
|
|
|
49
49
|
let modules: Module[] = ALL;
|
|
50
50
|
|
|
51
51
|
export function start(): void {
|
|
52
|
-
modules = config
|
|
52
|
+
modules = config?.mode === "gemx" ? GEMX : ALL;
|
|
53
53
|
modules.forEach(m => m.start());
|
|
54
54
|
}
|
|
55
55
|
|
|
@@ -58,7 +58,7 @@ export function stop(): void {
|
|
|
58
58
|
}
|
|
59
59
|
|
|
60
60
|
export function observe(root: Node): void {
|
|
61
|
-
const observeModules = config
|
|
61
|
+
const observeModules = config?.mode === "gemx" ? GEMX_OBSERVE : ALL_OBSERVE;
|
|
62
62
|
observeModules.allRoots.forEach(m => m.observe(root));
|
|
63
63
|
if (root.nodeType === Node.DOCUMENT_NODE) {
|
|
64
64
|
observeModules.documentOnly.forEach(m => m.observe(root));
|