@opengeni/sdk 0.52.1 → 0.57.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.
- package/README.md +61 -7
- package/dist/artifacts.js +5 -5
- package/dist/{chunk-V5F253OG.js → chunk-GU6JF75T.js} +6 -3
- package/dist/chunk-GU6JF75T.js.map +1 -0
- package/dist/{chunk-FRJFNDIR.js → chunk-HJ3HHUT5.js} +5 -1
- package/dist/chunk-HJ3HHUT5.js.map +1 -0
- package/dist/{chunk-KIHGPM7H.js → chunk-JDLDDRNE.js} +20 -14
- package/dist/chunk-JDLDDRNE.js.map +1 -0
- package/dist/{chunk-FHI4DFIG.js → chunk-JRPFWI6T.js} +2 -2
- package/dist/{chunk-ILQZR5N6.js → chunk-PKQ377ED.js} +693 -34
- package/dist/chunk-PKQ377ED.js.map +1 -0
- package/dist/{chunk-MZWTWOX6.js → chunk-ST5DDKJP.js} +327 -1
- package/dist/chunk-ST5DDKJP.js.map +1 -0
- package/dist/{chunk-DXDL7EEW.js → chunk-YKZME56C.js} +197 -113
- package/dist/chunk-YKZME56C.js.map +1 -0
- package/dist/client.d.ts +106 -16
- package/dist/codex-realtime-controller.d.ts +3 -0
- package/dist/codex-realtime-controller.js +2 -2
- package/dist/core.js +7 -7
- package/dist/desktop.d.ts +8 -0
- package/dist/editable-artifacts.js +4 -4
- package/dist/gateway-realtime-transport.d.ts +1 -0
- package/dist/gateway-realtime-transport.js +5 -3
- package/dist/index.d.ts +6 -2
- package/dist/index.js +68 -34
- package/dist/index.js.map +1 -1
- package/dist/interaction-revision-stream.d.ts +11 -0
- package/dist/interaction.d.ts +604 -5
- package/dist/interaction.js +27 -1
- package/dist/realtime.d.ts +3 -3
- package/dist/realtime.js +11 -7
- package/dist/realtime.js.map +1 -1
- package/dist/types.d.ts +267 -64
- package/dist/workspace-live-stream.d.ts +14 -0
- package/package.json +2 -2
- package/src/client.ts +861 -60
- package/src/codex-realtime-controller.ts +25 -7
- package/src/codex-realtime-lifecycle.ts +1 -0
- package/src/desktop.ts +11 -1
- package/src/errors.ts +16 -2
- package/src/gateway-realtime-transport.ts +252 -109
- package/src/index.ts +42 -13
- package/src/interaction-revision-stream.ts +117 -0
- package/src/interaction.ts +1049 -5
- package/src/realtime.ts +14 -4
- package/src/types.ts +336 -67
- package/src/workspace-live-stream.ts +137 -0
- package/dist/chunk-DXDL7EEW.js.map +0 -1
- package/dist/chunk-FRJFNDIR.js.map +0 -1
- package/dist/chunk-ILQZR5N6.js.map +0 -1
- package/dist/chunk-KIHGPM7H.js.map +0 -1
- package/dist/chunk-MZWTWOX6.js.map +0 -1
- package/dist/chunk-V5F253OG.js.map +0 -1
- /package/dist/{chunk-FHI4DFIG.js.map → chunk-JRPFWI6T.js.map} +0 -0
package/dist/interaction.js
CHANGED
|
@@ -1,50 +1,76 @@
|
|
|
1
1
|
import {
|
|
2
2
|
AttachedBrowserDeviceCollection,
|
|
3
3
|
AttachedBrowserDeviceResource,
|
|
4
|
+
AuthRunCollection,
|
|
5
|
+
AuthRunResource,
|
|
4
6
|
BROWSER_CONTROL_MAX_FRAME_HEADER_BYTES,
|
|
5
7
|
BROWSER_CONTROL_WEBSOCKET_BEARER_PREFIX,
|
|
6
8
|
BROWSER_CONTROL_WEBSOCKET_PROTOCOL,
|
|
7
9
|
BROWSER_FRAME_MAX_BYTES,
|
|
8
10
|
BROWSER_FRAME_MAX_DIMENSION,
|
|
9
11
|
BROWSER_FRAME_MAX_PIXELS,
|
|
12
|
+
BrowserAuthRunCollection,
|
|
13
|
+
BrowserClipboardResource,
|
|
14
|
+
BrowserDownloadCollection,
|
|
15
|
+
BrowserDownloadResource,
|
|
10
16
|
BrowserIdentityCollection,
|
|
11
17
|
BrowserIdentityResource,
|
|
12
18
|
BrowserSessionCollection,
|
|
13
19
|
BrowserSessionResource,
|
|
14
20
|
BrowserTargetCollection,
|
|
15
21
|
COMPUTER_CONTROL_WEBSOCKET_PROTOCOL,
|
|
22
|
+
ComputerClipboardResource,
|
|
16
23
|
ComputerSessionCollection,
|
|
17
24
|
ComputerSessionResource,
|
|
18
25
|
ComputerTargetCollection,
|
|
19
26
|
INTERACTION_PROTOCOL_VERSION,
|
|
27
|
+
InteractionInterventionCollection,
|
|
28
|
+
InteractionInterventionResource,
|
|
29
|
+
NetworkRouteCollection,
|
|
30
|
+
NetworkRouteResource,
|
|
20
31
|
OpenGeniInteractionClient,
|
|
32
|
+
SiteAuthConnectionCollection,
|
|
33
|
+
SiteAuthConnectionResource,
|
|
21
34
|
browserFrameSocketUrl,
|
|
22
35
|
computerFrameSocketUrl,
|
|
23
36
|
decodeBrowserFrameMessage,
|
|
24
37
|
decodeComputerFrameMessage,
|
|
25
38
|
parseBrowserFrameMetadata,
|
|
26
39
|
parseComputerFrameMetadata
|
|
27
|
-
} from "./chunk-
|
|
40
|
+
} from "./chunk-ST5DDKJP.js";
|
|
28
41
|
export {
|
|
29
42
|
AttachedBrowserDeviceCollection,
|
|
30
43
|
AttachedBrowserDeviceResource,
|
|
44
|
+
AuthRunCollection,
|
|
45
|
+
AuthRunResource,
|
|
31
46
|
BROWSER_CONTROL_MAX_FRAME_HEADER_BYTES,
|
|
32
47
|
BROWSER_CONTROL_WEBSOCKET_BEARER_PREFIX,
|
|
33
48
|
BROWSER_CONTROL_WEBSOCKET_PROTOCOL,
|
|
34
49
|
BROWSER_FRAME_MAX_BYTES,
|
|
35
50
|
BROWSER_FRAME_MAX_DIMENSION,
|
|
36
51
|
BROWSER_FRAME_MAX_PIXELS,
|
|
52
|
+
BrowserAuthRunCollection,
|
|
53
|
+
BrowserClipboardResource,
|
|
54
|
+
BrowserDownloadCollection,
|
|
55
|
+
BrowserDownloadResource,
|
|
37
56
|
BrowserIdentityCollection,
|
|
38
57
|
BrowserIdentityResource,
|
|
39
58
|
BrowserSessionCollection,
|
|
40
59
|
BrowserSessionResource,
|
|
41
60
|
BrowserTargetCollection,
|
|
42
61
|
COMPUTER_CONTROL_WEBSOCKET_PROTOCOL,
|
|
62
|
+
ComputerClipboardResource,
|
|
43
63
|
ComputerSessionCollection,
|
|
44
64
|
ComputerSessionResource,
|
|
45
65
|
ComputerTargetCollection,
|
|
46
66
|
INTERACTION_PROTOCOL_VERSION,
|
|
67
|
+
InteractionInterventionCollection,
|
|
68
|
+
InteractionInterventionResource,
|
|
69
|
+
NetworkRouteCollection,
|
|
70
|
+
NetworkRouteResource,
|
|
47
71
|
OpenGeniInteractionClient,
|
|
72
|
+
SiteAuthConnectionCollection,
|
|
73
|
+
SiteAuthConnectionResource,
|
|
48
74
|
browserFrameSocketUrl,
|
|
49
75
|
computerFrameSocketUrl,
|
|
50
76
|
decodeBrowserFrameMessage,
|
package/dist/realtime.d.ts
CHANGED
|
@@ -5,13 +5,13 @@
|
|
|
5
5
|
* entry remains free of eager realtime transport initialization.
|
|
6
6
|
*/
|
|
7
7
|
import { createCodexRealtimeController, hasStoredSessionRealtimeOwnerProof, sessionRealtimeOwnerStorageKey, sessionRealtimeOwnerStorageNamespace, type CodexRealtimeController, type CodexRealtimeControllerClient, type CodexRealtimeControllerSnapshot, type CodexRealtimeControllerStatus, type CodexRealtimeDiagnostic, type CodexRealtimeDiagnosticKind, type CodexRealtimeMicrophoneState, type CodexRealtimeOwnerStorage, type CreateCodexRealtimeControllerOptions, type RealtimeControllerTransportStarter } from "./codex-realtime-controller.js";
|
|
8
|
-
import { createGatewayRealtimeTransportStarter } from "./gateway-realtime-transport.js";
|
|
8
|
+
import { createGatewayRealtimeTransportStarter, createXaiSubscriptionRealtimeTransportStarter } from "./gateway-realtime-transport.js";
|
|
9
9
|
import type { SessionRealtimeModel, WorkspaceRealtimeModelCatalogResponse } from "./types.js";
|
|
10
10
|
/** Exact backend-facing methods required by the batteries-included realtime SDK. */
|
|
11
11
|
export type SessionRealtimeClientLike = CodexRealtimeControllerClient & {
|
|
12
12
|
getWorkspaceRealtimeModelCatalog(workspaceId: string): Promise<WorkspaceRealtimeModelCatalogResponse>;
|
|
13
13
|
};
|
|
14
|
-
export type SessionRealtimeTransportKind = "codex" | "gateway";
|
|
14
|
+
export type SessionRealtimeTransportKind = "codex" | "gateway" | "xai-subscription";
|
|
15
15
|
/** Provider-neutral names for the existing, battle-tested controller projection. */
|
|
16
16
|
export type SessionRealtimeController = CodexRealtimeController;
|
|
17
17
|
export type SessionRealtimeControllerSnapshot = CodexRealtimeControllerSnapshot;
|
|
@@ -32,7 +32,7 @@ export declare function sessionRealtimeTransportKind(model: SessionRealtimeModel
|
|
|
32
32
|
* semantics remain owned by the existing implementations below this facade.
|
|
33
33
|
*/
|
|
34
34
|
export declare function createSessionRealtimeController(options: CreateSessionRealtimeControllerOptions): SessionRealtimeController;
|
|
35
|
-
export { createCodexRealtimeController, createGatewayRealtimeTransportStarter, hasStoredSessionRealtimeOwnerProof, sessionRealtimeOwnerStorageKey, sessionRealtimeOwnerStorageNamespace, };
|
|
35
|
+
export { createCodexRealtimeController, createGatewayRealtimeTransportStarter, createXaiSubscriptionRealtimeTransportStarter, hasStoredSessionRealtimeOwnerProof, sessionRealtimeOwnerStorageKey, sessionRealtimeOwnerStorageNamespace, };
|
|
36
36
|
export type { CodexRealtimeController, CodexRealtimeControllerClient, CodexRealtimeControllerSnapshot, CodexRealtimeControllerStatus, CodexRealtimeDiagnostic, CodexRealtimeDiagnosticKind, CodexRealtimeMicrophoneState, CodexRealtimeOwnerStorage, CreateCodexRealtimeControllerOptions, RealtimeControllerTransportStarter, };
|
|
37
37
|
export { CODEX_REALTIME_NEGOTIATION_TIMEOUT_MS, projectSessionRealtimeLifecycle, } from "./codex-realtime-controller.js";
|
|
38
38
|
export type { SessionRealtimeLifecycleProjection } from "./codex-realtime-lifecycle.js";
|
package/dist/realtime.js
CHANGED
|
@@ -1,3 +1,7 @@
|
|
|
1
|
+
import {
|
|
2
|
+
createGatewayRealtimeTransportStarter,
|
|
3
|
+
createXaiSubscriptionRealtimeTransportStarter
|
|
4
|
+
} from "./chunk-YKZME56C.js";
|
|
1
5
|
import {
|
|
2
6
|
CODEX_REALTIME_CONTEXT_APPEND_MAX_BYTES,
|
|
3
7
|
CODEX_REALTIME_INITIAL_ITEMS_MAX_COUNT,
|
|
@@ -23,22 +27,21 @@ import {
|
|
|
23
27
|
sessionRealtimeOwnerStorageKey,
|
|
24
28
|
sessionRealtimeOwnerStorageNamespace,
|
|
25
29
|
startCodexRealtimeWebrtc
|
|
26
|
-
} from "./chunk-
|
|
27
|
-
import "./chunk-
|
|
28
|
-
import {
|
|
29
|
-
createGatewayRealtimeTransportStarter
|
|
30
|
-
} from "./chunk-DXDL7EEW.js";
|
|
30
|
+
} from "./chunk-JDLDDRNE.js";
|
|
31
|
+
import "./chunk-GU6JF75T.js";
|
|
31
32
|
|
|
32
33
|
// src/realtime.ts
|
|
33
34
|
function sessionRealtimeTransportKind(model) {
|
|
34
|
-
|
|
35
|
+
if (model === "gpt-live-1-boulder-alpha") return "codex";
|
|
36
|
+
if (model === "supergrok/grok-voice-think-fast-2.0") return "xai-subscription";
|
|
37
|
+
return "gateway";
|
|
35
38
|
}
|
|
36
39
|
function createSessionRealtimeController(options) {
|
|
37
40
|
const transport = sessionRealtimeTransportKind(options.model);
|
|
38
41
|
return createCodexRealtimeController({
|
|
39
42
|
...options,
|
|
40
43
|
ownerStorageNamespace: sessionRealtimeOwnerStorageNamespace(options.model),
|
|
41
|
-
...transport === "gateway" ? { startTransport: createGatewayRealtimeTransportStarter() } : {}
|
|
44
|
+
...transport === "gateway" ? { startTransport: createGatewayRealtimeTransportStarter() } : transport === "xai-subscription" ? { startTransport: createXaiSubscriptionRealtimeTransportStarter() } : {}
|
|
42
45
|
});
|
|
43
46
|
}
|
|
44
47
|
export {
|
|
@@ -60,6 +63,7 @@ export {
|
|
|
60
63
|
createCodexRealtimeV3Bridge,
|
|
61
64
|
createGatewayRealtimeTransportStarter,
|
|
62
65
|
createSessionRealtimeController,
|
|
66
|
+
createXaiSubscriptionRealtimeTransportStarter,
|
|
63
67
|
encodeCodexRealtimeV3DelegationContextAppend,
|
|
64
68
|
encodeCodexRealtimeV3SessionContextAppend,
|
|
65
69
|
hasStoredSessionRealtimeOwnerProof,
|
package/dist/realtime.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/realtime.ts"],"sourcesContent":["/**\n * Public, provider-neutral realtime browser SDK.\n *\n * Import this subpath lazily in browser applications. The base `@opengeni/sdk`\n * entry remains free of eager realtime transport initialization.\n */\nimport {\n createCodexRealtimeController,\n hasStoredSessionRealtimeOwnerProof,\n sessionRealtimeOwnerStorageKey,\n sessionRealtimeOwnerStorageNamespace,\n type CodexRealtimeController,\n type CodexRealtimeControllerClient,\n type CodexRealtimeControllerSnapshot,\n type CodexRealtimeControllerStatus,\n type CodexRealtimeDiagnostic,\n type CodexRealtimeDiagnosticKind,\n type CodexRealtimeMicrophoneState,\n type CodexRealtimeOwnerStorage,\n type CreateCodexRealtimeControllerOptions,\n type RealtimeControllerTransportStarter,\n} from \"./codex-realtime-controller\";\nimport {
|
|
1
|
+
{"version":3,"sources":["../src/realtime.ts"],"sourcesContent":["/**\n * Public, provider-neutral realtime browser SDK.\n *\n * Import this subpath lazily in browser applications. The base `@opengeni/sdk`\n * entry remains free of eager realtime transport initialization.\n */\nimport {\n createCodexRealtimeController,\n hasStoredSessionRealtimeOwnerProof,\n sessionRealtimeOwnerStorageKey,\n sessionRealtimeOwnerStorageNamespace,\n type CodexRealtimeController,\n type CodexRealtimeControllerClient,\n type CodexRealtimeControllerSnapshot,\n type CodexRealtimeControllerStatus,\n type CodexRealtimeDiagnostic,\n type CodexRealtimeDiagnosticKind,\n type CodexRealtimeMicrophoneState,\n type CodexRealtimeOwnerStorage,\n type CreateCodexRealtimeControllerOptions,\n type RealtimeControllerTransportStarter,\n} from \"./codex-realtime-controller\";\nimport {\n createGatewayRealtimeTransportStarter,\n createXaiSubscriptionRealtimeTransportStarter,\n} from \"./gateway-realtime-transport\";\nimport type { SessionRealtimeModel, WorkspaceRealtimeModelCatalogResponse } from \"./types\";\n\n/** Exact backend-facing methods required by the batteries-included realtime SDK. */\nexport type SessionRealtimeClientLike = CodexRealtimeControllerClient & {\n getWorkspaceRealtimeModelCatalog(\n workspaceId: string,\n ): Promise<WorkspaceRealtimeModelCatalogResponse>;\n};\n\nexport type SessionRealtimeTransportKind = \"codex\" | \"gateway\" | \"xai-subscription\";\n\n/** Provider-neutral names for the existing, battle-tested controller projection. */\nexport type SessionRealtimeController = CodexRealtimeController;\nexport type SessionRealtimeControllerSnapshot = CodexRealtimeControllerSnapshot;\nexport type SessionRealtimeControllerStatus = CodexRealtimeControllerStatus;\nexport type SessionRealtimeDiagnostic = CodexRealtimeDiagnostic;\nexport type SessionRealtimeDiagnosticKind = CodexRealtimeDiagnosticKind;\nexport type SessionRealtimeMicrophoneState = CodexRealtimeMicrophoneState;\nexport type SessionRealtimeOwnerStorage = CodexRealtimeOwnerStorage;\n\nexport type CreateSessionRealtimeControllerOptions = Omit<\n CreateCodexRealtimeControllerOptions,\n \"client\" | \"model\" | \"ownerStorageNamespace\" | \"startTransport\"\n> & {\n client: CodexRealtimeControllerClient;\n model: SessionRealtimeModel;\n};\n\n/** Select the existing transport without exposing provider mechanics to hosts. */\nexport function sessionRealtimeTransportKind(\n model: SessionRealtimeModel,\n): SessionRealtimeTransportKind {\n if (model === \"gpt-live-1-boulder-alpha\") return \"codex\";\n if (model === \"supergrok/grok-voice-think-fast-2.0\") return \"xai-subscription\";\n return \"gateway\";\n}\n\n/**\n * Compose the exact current controller with its existing Codex Live or AI\n * Gateway transport. Wire, ledger, delegation, recovery, and lifecycle\n * semantics remain owned by the existing implementations below this facade.\n */\nexport function createSessionRealtimeController(\n options: CreateSessionRealtimeControllerOptions,\n): SessionRealtimeController {\n const transport = sessionRealtimeTransportKind(options.model);\n return createCodexRealtimeController({\n ...options,\n ownerStorageNamespace: sessionRealtimeOwnerStorageNamespace(options.model),\n ...(transport === \"gateway\"\n ? { startTransport: createGatewayRealtimeTransportStarter() }\n : transport === \"xai-subscription\"\n ? { startTransport: createXaiSubscriptionRealtimeTransportStarter() }\n : {}),\n });\n}\n\nexport {\n createCodexRealtimeController,\n createGatewayRealtimeTransportStarter,\n createXaiSubscriptionRealtimeTransportStarter,\n hasStoredSessionRealtimeOwnerProof,\n sessionRealtimeOwnerStorageKey,\n sessionRealtimeOwnerStorageNamespace,\n};\nexport type {\n CodexRealtimeController,\n CodexRealtimeControllerClient,\n CodexRealtimeControllerSnapshot,\n CodexRealtimeControllerStatus,\n CodexRealtimeDiagnostic,\n CodexRealtimeDiagnosticKind,\n CodexRealtimeMicrophoneState,\n CodexRealtimeOwnerStorage,\n CreateCodexRealtimeControllerOptions,\n RealtimeControllerTransportStarter,\n};\n\nexport {\n CODEX_REALTIME_NEGOTIATION_TIMEOUT_MS,\n projectSessionRealtimeLifecycle,\n} from \"./codex-realtime-controller\";\nexport type { SessionRealtimeLifecycleProjection } from \"./codex-realtime-lifecycle\";\n\nexport {\n CodexRealtimeMicrophoneError,\n acquireCodexRealtimeMicrophone,\n codexRealtimeMicrophoneHealthy,\n startCodexRealtimeWebrtc,\n} from \"./codex-realtime\";\nexport type {\n AcquireCodexRealtimeMicrophoneOptions,\n CodexRealtimeAudibleOutputState,\n CodexRealtimeConnectionHealth,\n CodexRealtimeMicrophoneErrorCode,\n CodexRealtimeNegotiator,\n CodexRealtimeWebrtcSession,\n StartCodexRealtimeWebrtcOptions,\n} from \"./codex-realtime\";\n\nexport {\n CODEX_REALTIME_CONTEXT_APPEND_MAX_BYTES,\n CODEX_REALTIME_V3_MAX_EVENT_BYTES,\n CODEX_REALTIME_V3_MAX_IDENTIFIER_BYTES,\n CODEX_REALTIME_V3_MAX_TEXT_BYTES,\n CODEX_REALTIME_V3_PENDING_MAX_BYTES,\n CODEX_REALTIME_V3_PENDING_MAX_ENTRIES,\n CODEX_REALTIME_V3_SYNC_MAX_ENTRIES,\n contextAppendChunks,\n createCodexRealtimeV3Bridge,\n encodeCodexRealtimeV3DelegationContextAppend,\n encodeCodexRealtimeV3SessionContextAppend,\n parseCodexRealtimeV3Event,\n} from \"./codex-realtime-v3\";\nexport type {\n CodexRealtimeV3Bridge,\n CodexRealtimeV3BridgeFatal,\n CodexRealtimeV3BridgeOptions,\n CodexRealtimeV3BridgeSnapshot,\n CodexRealtimeV3ContextAppendChannel,\n CodexRealtimeV3DelegationContextAppend,\n CodexRealtimeV3Event,\n CodexRealtimeV3ParseFailure,\n CodexRealtimeV3ParseResult,\n CodexRealtimeV3SessionContextAppend,\n} from \"./codex-realtime-v3\";\n\nexport {\n CODEX_REALTIME_INITIAL_ITEMS_MAX_COUNT,\n CODEX_REALTIME_INITIAL_ITEMS_MAX_TOKENS,\n} from \"./codex-realtime-v3-wire\";\nexport type { CodexRealtimeInitialItem } from \"./codex-realtime-v3-wire\";\n\nexport type {\n ActivateCodexRealtimeConnectionRequest,\n BeginSessionRealtimeRequest,\n CodexRealtimeVoice,\n CodexRealtimeWebrtcRequest,\n CodexRealtimeWebrtcResponse,\n CodexRealtimeWebrtcVersion,\n EndSessionRealtimeRequest,\n GatewayRealtimeConnectRequest,\n GatewayRealtimeConnectResponse,\n GatewayRealtimeInitialItem,\n RenewSessionRealtimeRequest,\n SessionRealtimeEndReason,\n SessionRealtimeLedgerEntry,\n SessionRealtimeMode,\n SessionRealtimeModel,\n SessionRealtimeMutationResponse,\n SessionRealtimeState,\n SyncSessionRealtimeLedgerRequest,\n SyncSessionRealtimeLedgerResponse,\n WorkspaceRealtimeModelCatalogItem,\n WorkspaceRealtimeModelCatalogResponse,\n} from \"./types\";\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAuDO,SAAS,6BACd,OAC8B;AAC9B,MAAI,UAAU,2BAA4B,QAAO;AACjD,MAAI,UAAU,sCAAuC,QAAO;AAC5D,SAAO;AACT;AAOO,SAAS,gCACd,SAC2B;AAC3B,QAAM,YAAY,6BAA6B,QAAQ,KAAK;AAC5D,SAAO,8BAA8B;AAAA,IACnC,GAAG;AAAA,IACH,uBAAuB,qCAAqC,QAAQ,KAAK;AAAA,IACzE,GAAI,cAAc,YACd,EAAE,gBAAgB,sCAAsC,EAAE,IAC1D,cAAc,qBACZ,EAAE,gBAAgB,8CAA8C,EAAE,IAClE,CAAC;AAAA,EACT,CAAC;AACH;","names":[]}
|