@multiplayer-app/session-recorder-browser 1.3.16 → 1.3.17-session-buffering.0

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.
Files changed (64) hide show
  1. package/dist/browser/index.js +1224 -174
  2. package/dist/config/constants.d.ts +1 -0
  3. package/dist/config/constants.d.ts.map +1 -1
  4. package/dist/config/constants.js +2 -0
  5. package/dist/config/constants.js.map +1 -1
  6. package/dist/config/defaults.d.ts.map +1 -1
  7. package/dist/config/defaults.js +5 -0
  8. package/dist/config/defaults.js.map +1 -1
  9. package/dist/config/session-recorder.d.ts.map +1 -1
  10. package/dist/config/session-recorder.js +6 -1
  11. package/dist/config/session-recorder.js.map +1 -1
  12. package/dist/exporters/index.js +1 -1
  13. package/dist/exporters/index.js.LICENSE.txt +2 -0
  14. package/dist/exporters/index.js.map +1 -1
  15. package/dist/index.js +1216 -175
  16. package/dist/index.js.map +1 -1
  17. package/dist/index.umd.js +1214 -174
  18. package/dist/index.umd.js.map +1 -1
  19. package/dist/otel/index.d.ts +7 -1
  20. package/dist/otel/index.d.ts.map +1 -1
  21. package/dist/otel/index.js +63 -3
  22. package/dist/otel/index.js.map +1 -1
  23. package/dist/patch/fetch.js +2 -2
  24. package/dist/patch/fetch.js.map +1 -1
  25. package/dist/rrweb/index.d.ts +50 -17
  26. package/dist/rrweb/index.d.ts.map +1 -1
  27. package/dist/rrweb/index.js +158 -84
  28. package/dist/rrweb/index.js.map +1 -1
  29. package/dist/services/crashBuffer.service.d.ts +60 -0
  30. package/dist/services/crashBuffer.service.d.ts.map +1 -0
  31. package/dist/services/crashBuffer.service.js +161 -0
  32. package/dist/services/crashBuffer.service.js.map +1 -0
  33. package/dist/services/indexedDb.service.d.ts +72 -0
  34. package/dist/services/indexedDb.service.d.ts.map +1 -0
  35. package/dist/services/indexedDb.service.js +335 -0
  36. package/dist/services/indexedDb.service.js.map +1 -0
  37. package/dist/services/socket.service.d.ts +3 -2
  38. package/dist/services/socket.service.d.ts.map +1 -1
  39. package/dist/services/socket.service.js +8 -1
  40. package/dist/services/socket.service.js.map +1 -1
  41. package/dist/session-recorder.d.ts +12 -1
  42. package/dist/session-recorder.d.ts.map +1 -1
  43. package/dist/session-recorder.js +155 -7
  44. package/dist/session-recorder.js.map +1 -1
  45. package/dist/types/session-recorder.d.ts +20 -0
  46. package/dist/types/session-recorder.d.ts.map +1 -1
  47. package/dist/types/session-recorder.js.map +1 -1
  48. package/dist/utils/index.d.ts +1 -0
  49. package/dist/utils/index.d.ts.map +1 -1
  50. package/dist/utils/index.js +1 -0
  51. package/dist/utils/index.js.map +1 -1
  52. package/dist/utils/storage.d.ts +4 -1
  53. package/dist/utils/storage.d.ts.map +1 -1
  54. package/dist/utils/storage.js +35 -13
  55. package/dist/utils/storage.js.map +1 -1
  56. package/dist/utils/tabId.d.ts +2 -0
  57. package/dist/utils/tabId.d.ts.map +1 -0
  58. package/dist/utils/tabId.js +22 -0
  59. package/dist/utils/tabId.js.map +1 -0
  60. package/package.json +2 -2
  61. package/dist/rrweb/indexedDbService.d.ts +0 -9
  62. package/dist/rrweb/indexedDbService.d.ts.map +0 -1
  63. package/dist/rrweb/indexedDbService.js +0 -54
  64. package/dist/rrweb/indexedDbService.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/rrweb/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/rrweb/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,60 @@
1
+ import { IndexedDBService } from './indexedDb.service';
2
+ export type CrashBufferSnapshot = {
3
+ rrwebEvents: Array<{
4
+ ts: number;
5
+ isFullSnapshot?: boolean;
6
+ event: any;
7
+ }>;
8
+ otelSpans: Array<{
9
+ ts: number;
10
+ span: any;
11
+ }>;
12
+ attrs: {
13
+ sessionAttributes?: Record<string, any>;
14
+ resourceAttributes?: Record<string, any>;
15
+ userAttributes?: any;
16
+ } | null;
17
+ windowMs: number;
18
+ fromTs: number;
19
+ toTs: number;
20
+ };
21
+ export declare class CrashBufferService {
22
+ private readonly db;
23
+ private readonly tabId;
24
+ private readonly windowMs;
25
+ private lastPruneAt;
26
+ private pruneInFlight;
27
+ private isActive;
28
+ private frozenAtTs;
29
+ private lastSeenEventTs;
30
+ private requiresFullSnapshot;
31
+ private lastTouchAt;
32
+ constructor(db: IndexedDBService, tabId: string, windowMs: number);
33
+ private _safe;
34
+ setAttrs(attrs: {
35
+ sessionAttributes?: Record<string, any>;
36
+ resourceAttributes?: Record<string, any>;
37
+ userAttributes?: any;
38
+ }): Promise<void>;
39
+ appendRrwebEvent(payload: {
40
+ ts: number;
41
+ isFullSnapshot?: boolean;
42
+ event: any;
43
+ }): Promise<void>;
44
+ appendOtelSpan(payload: {
45
+ ts: number;
46
+ span: any;
47
+ }): Promise<void>;
48
+ snapshot(now?: number): Promise<CrashBufferSnapshot>;
49
+ clear(): Promise<void>;
50
+ needsFullSnapshot(): boolean;
51
+ /**
52
+ * Mark the tab as active/inactive.
53
+ *
54
+ * - When inactive, we freeze the buffer and keep the last active `windowMs` indefinitely.
55
+ * - When re-activated, we resume buffering but require a new FullSnapshot to start a replayable segment.
56
+ */
57
+ setActive(active: boolean): void;
58
+ private pruneSoon;
59
+ }
60
+ //# sourceMappingURL=crashBuffer.service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"crashBuffer.service.d.ts","sourceRoot":"","sources":["../../src/services/crashBuffer.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAA;AAEtD,MAAM,MAAM,mBAAmB,GAAG;IAChC,WAAW,EAAE,KAAK,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,cAAc,CAAC,EAAE,OAAO,CAAC;QAAC,KAAK,EAAE,GAAG,CAAA;KAAE,CAAC,CAAA;IACxE,SAAS,EAAE,KAAK,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,GAAG,CAAA;KAAE,CAAC,CAAA;IAC3C,KAAK,EAAE;QACL,iBAAiB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;QACvC,kBAAkB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;QACxC,cAAc,CAAC,EAAE,GAAG,CAAA;KACrB,GAAG,IAAI,CAAA;IACR,QAAQ,EAAE,MAAM,CAAA;IAChB,MAAM,EAAE,MAAM,CAAA;IACd,IAAI,EAAE,MAAM,CAAA;CACb,CAAA;AAED,qBAAa,kBAAkB;IAU3B,OAAO,CAAC,QAAQ,CAAC,EAAE;IACnB,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,OAAO,CAAC,QAAQ,CAAC,QAAQ;IAX3B,OAAO,CAAC,WAAW,CAAI;IACvB,OAAO,CAAC,aAAa,CAA6B;IAClD,OAAO,CAAC,QAAQ,CAAO;IACvB,OAAO,CAAC,UAAU,CAAsB;IACxC,OAAO,CAAC,eAAe,CAAY;IACnC,OAAO,CAAC,oBAAoB,CAAO;IACnC,OAAO,CAAC,WAAW,CAAI;gBAGJ,EAAE,EAAE,gBAAgB,EACpB,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,MAAM;YAGrB,KAAK;IAQb,QAAQ,CAAC,KAAK,EAAE;QACpB,iBAAiB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;QACvC,kBAAkB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;QACxC,cAAc,CAAC,EAAE,GAAG,CAAA;KACrB,GAAG,OAAO,CAAC,IAAI,CAAC;IASX,gBAAgB,CAAC,OAAO,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,cAAc,CAAC,EAAE,OAAO,CAAC;QAAC,KAAK,EAAE,GAAG,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IA+B9F,cAAc,CAAC,OAAO,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,GAAG,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAajE,QAAQ,CAAC,GAAG,GAAE,MAAmB,GAAG,OAAO,CAAC,mBAAmB,CAAC;IA6ChE,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAK5B,iBAAiB,IAAI,OAAO;IAI5B;;;;;OAKG;IACH,SAAS,CAAC,MAAM,EAAE,OAAO,GAAG,IAAI;IAsBhC,OAAO,CAAC,SAAS;CAkBlB"}
@@ -0,0 +1,161 @@
1
+ export class CrashBufferService {
2
+ constructor(db, tabId, windowMs) {
3
+ this.db = db;
4
+ this.tabId = tabId;
5
+ this.windowMs = windowMs;
6
+ this.lastPruneAt = 0;
7
+ this.pruneInFlight = null;
8
+ this.isActive = true;
9
+ this.frozenAtTs = null;
10
+ this.lastSeenEventTs = 0;
11
+ this.requiresFullSnapshot = true;
12
+ this.lastTouchAt = 0;
13
+ }
14
+ async _safe(fn, fallback) {
15
+ try {
16
+ return await fn();
17
+ }
18
+ catch (_e) {
19
+ return fallback;
20
+ }
21
+ }
22
+ async setAttrs(attrs) {
23
+ await this._safe(async () => {
24
+ await this.db.setAttrs({
25
+ tabId: this.tabId,
26
+ ...attrs,
27
+ });
28
+ }, undefined);
29
+ }
30
+ async appendRrwebEvent(payload) {
31
+ this.lastSeenEventTs = Math.max(this.lastSeenEventTs, payload.ts || 0);
32
+ if (!this.isActive)
33
+ return;
34
+ const isFullSnapshot = Boolean(payload.isFullSnapshot);
35
+ if (this.requiresFullSnapshot && !isFullSnapshot) {
36
+ // Buffer must always start with a full snapshot; drop incrementals until we see one.
37
+ return;
38
+ }
39
+ await this._safe(async () => {
40
+ await this.db.appendRrwebEvent({
41
+ tabId: this.tabId,
42
+ ts: payload.ts,
43
+ isFullSnapshot: payload.isFullSnapshot,
44
+ event: payload.event,
45
+ });
46
+ }, undefined);
47
+ if (isFullSnapshot && this.requiresFullSnapshot) {
48
+ // Ensure this snapshot becomes the first replayable event.
49
+ // We keep the snapshot itself and prune everything older.
50
+ await this._safe(() => this.db.pruneOlderThan(this.tabId, Math.max(0, payload.ts - 1)), undefined);
51
+ this.requiresFullSnapshot = false;
52
+ }
53
+ else if (isFullSnapshot) {
54
+ this.requiresFullSnapshot = false;
55
+ }
56
+ this.pruneSoon();
57
+ }
58
+ async appendOtelSpan(payload) {
59
+ this.lastSeenEventTs = Math.max(this.lastSeenEventTs, payload.ts || 0);
60
+ if (!this.isActive)
61
+ return;
62
+ await this._safe(async () => {
63
+ await this.db.appendOtelSpan({
64
+ tabId: this.tabId,
65
+ ts: payload.ts,
66
+ span: payload.span,
67
+ });
68
+ }, undefined);
69
+ this.pruneSoon();
70
+ }
71
+ async snapshot(now = Date.now()) {
72
+ const toTs = now;
73
+ const fromTs = Math.max(0, toTs - this.windowMs);
74
+ // Always include a full snapshot "anchor" if one exists at/before the window start.
75
+ const rrwebFromTs = await this._safe(async () => {
76
+ const anchor = await this.db.getLastRrwebFullSnapshotBefore(this.tabId, fromTs);
77
+ return typeof (anchor === null || anchor === void 0 ? void 0 : anchor.ts) === 'number' ? anchor.ts : fromTs;
78
+ }, fromTs);
79
+ const [rrweb, spans, attrs] = await Promise.all([
80
+ this._safe(() => this.db.getRrwebEventsWindow(this.tabId, rrwebFromTs, toTs), []),
81
+ this._safe(() => this.db.getOtelSpansWindow(this.tabId, fromTs, toTs), []),
82
+ this._safe(() => this.db.getAttrs(this.tabId), null),
83
+ ]);
84
+ const rrwebSorted = rrweb
85
+ .sort((a, b) => a.ts - b.ts)
86
+ .map((r) => ({ ts: r.ts, isFullSnapshot: r.isFullSnapshot, event: r.event }));
87
+ // Hard guarantee: snapshot payload starts with a FullSnapshot (or is empty).
88
+ const firstFullSnapshotIdx = rrwebSorted.findIndex((e) => Boolean(e.isFullSnapshot));
89
+ const rrwebEvents = firstFullSnapshotIdx >= 0 ? rrwebSorted.slice(firstFullSnapshotIdx) : [];
90
+ // Align spans with the rrweb replay start: spans must start from the FullSnapshot timestamp.
91
+ const replayStartTs = rrwebEvents.length > 0 ? rrwebEvents[0].ts : fromTs;
92
+ const otelSpans = spans
93
+ .filter((s) => typeof (s === null || s === void 0 ? void 0 : s.ts) === 'number' && s.ts >= replayStartTs)
94
+ .sort((a, b) => a.ts - b.ts)
95
+ .map((r) => ({ ts: r.ts, span: r.span }));
96
+ return {
97
+ rrwebEvents,
98
+ otelSpans,
99
+ attrs: attrs ? {
100
+ sessionAttributes: attrs.sessionAttributes,
101
+ resourceAttributes: attrs.resourceAttributes,
102
+ userAttributes: attrs.userAttributes,
103
+ } : null,
104
+ windowMs: this.windowMs,
105
+ fromTs: replayStartTs,
106
+ toTs,
107
+ };
108
+ }
109
+ async clear() {
110
+ await this._safe(() => this.db.clearTab(this.tabId), undefined);
111
+ this.requiresFullSnapshot = true;
112
+ }
113
+ needsFullSnapshot() {
114
+ return this.requiresFullSnapshot;
115
+ }
116
+ /**
117
+ * Mark the tab as active/inactive.
118
+ *
119
+ * - When inactive, we freeze the buffer and keep the last active `windowMs` indefinitely.
120
+ * - When re-activated, we resume buffering but require a new FullSnapshot to start a replayable segment.
121
+ */
122
+ setActive(active) {
123
+ if (this.isActive === active)
124
+ return;
125
+ this.isActive = active;
126
+ if (!active) {
127
+ const freezeAt = this.lastSeenEventTs || Date.now();
128
+ this.frozenAtTs = freezeAt;
129
+ // Keep the last active window, but preserve rrweb replayability via snapshot anchor.
130
+ const cutoff = Math.max(0, freezeAt - this.windowMs);
131
+ void this._safe(() => this.db.pruneOlderThanWithRrwebSnapshotAnchor(this.tabId, cutoff), undefined);
132
+ return;
133
+ }
134
+ const wasFrozen = this.frozenAtTs !== null;
135
+ this.frozenAtTs = null;
136
+ // New active segment must start with a full snapshot (don’t stitch segments together).
137
+ if (wasFrozen)
138
+ this.requiresFullSnapshot = true;
139
+ this.pruneSoon();
140
+ }
141
+ pruneSoon() {
142
+ if (!this.isActive)
143
+ return;
144
+ const now = Date.now();
145
+ // Throttle pruning to avoid hammering IDB on high event rates
146
+ if (now - this.lastPruneAt < 2000)
147
+ return;
148
+ if (this.pruneInFlight)
149
+ return;
150
+ this.lastPruneAt = now;
151
+ const cutoff = Math.max(0, now - this.windowMs);
152
+ // Heartbeat so the stale-tab sweeper never deletes active tabs.
153
+ if (now - this.lastTouchAt > 30000) {
154
+ this.lastTouchAt = now;
155
+ void this._safe(() => this.db.touchTab(this.tabId, now), undefined);
156
+ }
157
+ this.pruneInFlight = this._safe(() => this.db.pruneOlderThanWithRrwebSnapshotAnchor(this.tabId, cutoff), undefined)
158
+ .finally(() => { this.pruneInFlight = null; });
159
+ }
160
+ }
161
+ //# sourceMappingURL=crashBuffer.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"crashBuffer.service.js","sourceRoot":"","sources":["../../src/services/crashBuffer.service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,72 @@
1
+ type TabId = string;
2
+ export type CrashBufferAttrs = {
3
+ tabId: TabId;
4
+ updatedAt: number;
5
+ sessionAttributes?: Record<string, any>;
6
+ resourceAttributes?: Record<string, any>;
7
+ userAttributes?: any;
8
+ };
9
+ export type CrashBufferRrwebEventRecord = {
10
+ id?: number;
11
+ tabId: TabId;
12
+ ts: number;
13
+ isFullSnapshot?: boolean;
14
+ event: any;
15
+ };
16
+ export type CrashBufferOtelSpanRecord = {
17
+ id?: number;
18
+ tabId: TabId;
19
+ ts: number;
20
+ span: any;
21
+ };
22
+ export declare class IndexedDBService {
23
+ private dbPromise;
24
+ constructor();
25
+ private openDB;
26
+ /**
27
+ * @deprecated Prefer `appendRrwebEvent(tabId, ...)` and `getRrwebEventsWindow(...)`.
28
+ * This writes into the legacy store with no pruning semantics.
29
+ */
30
+ saveEvent(event: any): Promise<void>;
31
+ /**
32
+ * @deprecated Prefer `getRrwebEventsWindow(...)`.
33
+ */
34
+ getAllEvents(): Promise<Array<any>>;
35
+ /**
36
+ * @deprecated Prefer `clearTab(tabId)`.
37
+ */
38
+ clearEvents(): Promise<void>;
39
+ setAttrs(attrs: Omit<CrashBufferAttrs, 'updatedAt'> & {
40
+ updatedAt?: number;
41
+ }): Promise<void>;
42
+ getAttrs(tabId: TabId): Promise<CrashBufferAttrs | null>;
43
+ getAllAttrs(): Promise<CrashBufferAttrs[]>;
44
+ /**
45
+ * Updates `updatedAt` for the tab without clobbering existing attributes.
46
+ */
47
+ touchTab(tabId: TabId, updatedAt?: number): Promise<void>;
48
+ /**
49
+ * Best-effort garbage collection for orphaned tabs.
50
+ * Deletes all data for tabs whose `attrs.updatedAt` is older than `maxAgeMs`.
51
+ */
52
+ sweepStaleTabs(maxAgeMs: number, now?: number): Promise<number>;
53
+ appendRrwebEvent(record: CrashBufferRrwebEventRecord): Promise<void>;
54
+ appendOtelSpan(record: CrashBufferOtelSpanRecord): Promise<void>;
55
+ getRrwebEventsWindow(tabId: TabId, fromTs: number, toTs: number): Promise<CrashBufferRrwebEventRecord[]>;
56
+ /**
57
+ * Returns the last (highest-ts) FullSnapshot record at/before `cutoffTs`.
58
+ * Used to keep a replayable anchor when pruning.
59
+ */
60
+ getLastRrwebFullSnapshotBefore(tabId: TabId, cutoffTs: number): Promise<CrashBufferRrwebEventRecord | null>;
61
+ getOtelSpansWindow(tabId: TabId, fromTs: number, toTs: number): Promise<CrashBufferOtelSpanRecord[]>;
62
+ pruneOlderThan(tabId: TabId, cutoffTs: number): Promise<void>;
63
+ /**
64
+ * Prune older data while keeping rrweb replayability:
65
+ * - rrweb: keep the last FullSnapshot at/before cutoff as an "anchor"
66
+ * - spans: prune strictly by cutoff
67
+ */
68
+ pruneOlderThanWithRrwebSnapshotAnchor(tabId: TabId, cutoffTs: number): Promise<void>;
69
+ clearTab(tabId: TabId): Promise<void>;
70
+ }
71
+ export {};
72
+ //# sourceMappingURL=indexedDb.service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"indexedDb.service.d.ts","sourceRoot":"","sources":["../../src/services/indexedDb.service.ts"],"names":[],"mappings":"AASA,KAAK,KAAK,GAAG,MAAM,CAAA;AAEnB,MAAM,MAAM,gBAAgB,GAAG;IAC7B,KAAK,EAAE,KAAK,CAAA;IACZ,SAAS,EAAE,MAAM,CAAA;IACjB,iBAAiB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IACvC,kBAAkB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IACxC,cAAc,CAAC,EAAE,GAAG,CAAA;CACrB,CAAA;AAED,MAAM,MAAM,2BAA2B,GAAG;IACxC,EAAE,CAAC,EAAE,MAAM,CAAA;IACX,KAAK,EAAE,KAAK,CAAA;IACZ,EAAE,EAAE,MAAM,CAAA;IACV,cAAc,CAAC,EAAE,OAAO,CAAA;IACxB,KAAK,EAAE,GAAG,CAAA;CACX,CAAA;AAED,MAAM,MAAM,yBAAyB,GAAG;IACtC,EAAE,CAAC,EAAE,MAAM,CAAA;IACX,KAAK,EAAE,KAAK,CAAA;IACZ,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,GAAG,CAAA;CACV,CAAA;AAED,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,SAAS,CAAsB;;IAMvC,OAAO,CAAC,MAAM;IA6Bd;;;OAGG;IACG,SAAS,CAAC,KAAK,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC;IAY1C;;OAEG;IACG,YAAY,IAAI,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAezC;;OAEG;IACG,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC;IAY5B,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC,gBAAgB,EAAE,WAAW,CAAC,GAAG;QAAE,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAc5F,QAAQ,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC;IAUxD,WAAW,IAAI,OAAO,CAAC,gBAAgB,EAAE,CAAC;IAUhD;;OAEG;IACG,QAAQ,CAAC,KAAK,EAAE,KAAK,EAAE,SAAS,GAAE,MAAmB,GAAG,OAAO,CAAC,IAAI,CAAC;IAqB3E;;;OAGG;IACG,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,GAAE,MAAmB,GAAG,OAAO,CAAC,MAAM,CAAC;IAoB3E,gBAAgB,CAAC,MAAM,EAAE,2BAA2B,GAAG,OAAO,CAAC,IAAI,CAAC;IAUpE,cAAc,CAAC,MAAM,EAAE,yBAAyB,GAAG,OAAO,CAAC,IAAI,CAAC;IAUhE,oBAAoB,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,2BAA2B,EAAE,CAAC;IAY9G;;;OAGG;IACG,8BAA8B,CAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,2BAA2B,GAAG,IAAI,CAAC;IAwB3G,kBAAkB,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,yBAAyB,EAAE,CAAC;IAYpG,cAAc,CAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAuCnE;;;;OAIG;IACG,qCAAqC,CAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IA0CpF,QAAQ,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC;CAyC5C"}