@camstack/types 0.1.30 → 0.1.32
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/addon/build-addon-route-provider.d.ts +55 -0
- package/dist/addon/build-addon-route-provider.d.ts.map +1 -0
- package/dist/capabilities/addon-routes.cap.d.ts +64 -0
- package/dist/capabilities/addon-routes.cap.d.ts.map +1 -1
- package/dist/capabilities/admin-ui.cap.d.ts +6 -2
- package/dist/capabilities/admin-ui.cap.d.ts.map +1 -1
- package/dist/capabilities/advanced-notifier.cap.d.ts +202 -29
- package/dist/capabilities/advanced-notifier.cap.d.ts.map +1 -1
- package/dist/capabilities/audio-codec.cap.d.ts +2 -2
- package/dist/capabilities/auth-provider.cap.d.ts +4 -4
- package/dist/capabilities/auth-provider.cap.d.ts.map +1 -1
- package/dist/capabilities/authentication.cap.d.ts +4 -0
- package/dist/capabilities/authentication.cap.d.ts.map +1 -1
- package/dist/capabilities/capability-definition.d.ts +22 -0
- package/dist/capabilities/capability-definition.d.ts.map +1 -1
- package/dist/capabilities/device-export.cap.d.ts +77 -0
- package/dist/capabilities/device-export.cap.d.ts.map +1 -0
- package/dist/capabilities/embedding-encoder.cap.d.ts +14 -7
- package/dist/capabilities/embedding-encoder.cap.d.ts.map +1 -1
- package/dist/capabilities/index.d.ts +24 -5
- package/dist/capabilities/index.d.ts.map +1 -1
- package/dist/capabilities/intercom.cap.d.ts +34 -0
- package/dist/capabilities/intercom.cap.d.ts.map +1 -1
- package/dist/capabilities/mesh-network.cap.d.ts +32 -16
- package/dist/capabilities/mesh-network.cap.d.ts.map +1 -1
- package/dist/capabilities/mqtt-broker.cap.d.ts +153 -0
- package/dist/capabilities/mqtt-broker.cap.d.ts.map +1 -0
- package/dist/capabilities/network-access.cap.d.ts +41 -1
- package/dist/capabilities/network-access.cap.d.ts.map +1 -1
- package/dist/capabilities/platform-probe.cap.d.ts +234 -15
- package/dist/capabilities/platform-probe.cap.d.ts.map +1 -1
- package/dist/capabilities/settings-store.cap.d.ts +8 -2
- package/dist/capabilities/settings-store.cap.d.ts.map +1 -1
- package/dist/capabilities/smtp-provider.cap.d.ts +63 -0
- package/dist/capabilities/smtp-provider.cap.d.ts.map +1 -0
- package/dist/capabilities/sso-bridge.cap.d.ts +61 -0
- package/dist/capabilities/sso-bridge.cap.d.ts.map +1 -0
- package/dist/capabilities/stream-broker.cap.d.ts +90 -85
- package/dist/capabilities/stream-broker.cap.d.ts.map +1 -1
- package/dist/capabilities/user-management.cap.d.ts +513 -184
- package/dist/capabilities/user-management.cap.d.ts.map +1 -1
- package/dist/capabilities/user-passkeys.cap.d.ts +92 -0
- package/dist/capabilities/user-passkeys.cap.d.ts.map +1 -0
- package/dist/capabilities/webrtc-session.cap.d.ts +34 -0
- package/dist/capabilities/webrtc-session.cap.d.ts.map +1 -1
- package/dist/generated/addon-api.d.ts +11940 -9272
- package/dist/generated/addon-api.d.ts.map +1 -1
- package/dist/generated/cap-status-types.d.ts +5 -1
- package/dist/generated/cap-status-types.d.ts.map +1 -1
- package/dist/generated/capability-router-map.d.ts +19 -4
- package/dist/generated/capability-router-map.d.ts.map +1 -1
- package/dist/generated/device-proxy.d.ts +2 -0
- package/dist/generated/device-proxy.d.ts.map +1 -1
- package/dist/generated/method-access-map.d.ts +6 -1
- package/dist/generated/method-access-map.d.ts.map +1 -1
- package/dist/generated/provider-kind-map.d.ts +22 -0
- package/dist/generated/provider-kind-map.d.ts.map +1 -0
- package/dist/generated/scope-presets.d.ts +17 -0
- package/dist/generated/scope-presets.d.ts.map +1 -0
- package/dist/generated/system-proxy.d.ts +8 -4
- package/dist/generated/system-proxy.d.ts.map +1 -1
- package/dist/{index-DVKPWMwv.mjs → index-BBVUwOlZ.mjs} +1040 -500
- package/dist/index-BBVUwOlZ.mjs.map +1 -0
- package/dist/{index-s8uJNgNs.js → index-BUBhoPUu.js} +741 -201
- package/dist/index-BUBhoPUu.js.map +1 -0
- package/dist/index.d.ts +9 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +852 -500
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +1109 -757
- package/dist/index.mjs.map +1 -1
- package/dist/interfaces/addon-routes.d.ts +8 -2
- package/dist/interfaces/addon-routes.d.ts.map +1 -1
- package/dist/interfaces/addon.d.ts +14 -3
- package/dist/interfaces/addon.d.ts.map +1 -1
- package/dist/interfaces/advanced-notifier.d.ts +8 -7
- package/dist/interfaces/advanced-notifier.d.ts.map +1 -1
- package/dist/interfaces/api-responses.d.ts +2 -3
- package/dist/interfaces/api-responses.d.ts.map +1 -1
- package/dist/interfaces/auth.d.ts +14 -11
- package/dist/interfaces/auth.d.ts.map +1 -1
- package/dist/interfaces/capability.d.ts +6 -6
- package/dist/interfaces/capability.d.ts.map +1 -1
- package/dist/interfaces/embedding-encoder.d.ts +16 -7
- package/dist/interfaces/embedding-encoder.d.ts.map +1 -1
- package/dist/interfaces/rtp-egress.d.ts +45 -0
- package/dist/interfaces/rtp-egress.d.ts.map +1 -0
- package/dist/interfaces/storage.d.ts +15 -2
- package/dist/interfaces/storage.d.ts.map +1 -1
- package/dist/node.js +1 -1
- package/dist/node.mjs +1 -1
- package/dist/schemas/auth-records.d.ts +105 -50
- package/dist/schemas/auth-records.d.ts.map +1 -1
- package/package.json +1 -1
- package/dist/index-DVKPWMwv.mjs.map +0 -1
- package/dist/index-s8uJNgNs.js.map +0 -1
- package/dist/interfaces/auth-provider.d.ts +0 -39
- package/dist/interfaces/auth-provider.d.ts.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"user-management.cap.d.ts","sourceRoot":"","sources":["../../src/capabilities/user-management.cap.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AACvB,OAAO,EAAqC,KAAK,aAAa,EAAE,MAAM,4BAA4B,CAAA;AAMlG,QAAA,MAAM,iBAAiB
|
|
1
|
+
{"version":3,"file":"user-management.cap.d.ts","sourceRoot":"","sources":["../../src/capabilities/user-management.cap.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AACvB,OAAO,EAAqC,KAAK,aAAa,EAAE,MAAM,4BAA4B,CAAA;AAMlG,QAAA,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBASrB,CAAA;AAEF,QAAA,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAOzB,CAAA;AAEF,QAAA,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAMzB,CAAA;AAEF,QAAA,MAAM,mBAAmB;;;;;;;;;iBASvB,CAAA;AAEF,QAAA,MAAM,uBAAuB;;;;;iBAK3B,CAAA;AAEF,QAAA,MAAM,wBAAwB;;;;;;;;;;;;iBAG5B,CAAA;AAEF,QAAA,MAAM,wBAAwB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAS5B,CAAA;AAEF,QAAA,MAAM,4BAA4B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAKhC,CAAA;AAEF,QAAA,MAAM,6BAA6B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAGjC,CAAA;AAqBF;;;;;;;;;GASG;AACH,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAyEI,CAAA;AAEzC,MAAM,MAAM,uBAAuB,GAAG,aAAa,CAAC,OAAO,wBAAwB,CAAC,CAAA;AAEpF,OAAO,EACL,iBAAiB,EAAE,qBAAqB,EAAE,qBAAqB,EAC/D,mBAAmB,EAAE,uBAAuB,EAAE,wBAAwB,EACtE,wBAAwB,EAAE,4BAA4B,EAAE,6BAA6B,GACtF,CAAA"}
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { type InferProvider } from './capability-definition.js';
|
|
3
|
+
/**
|
|
4
|
+
* `user-passkeys` — per-user WebAuthn (passkey) enrollment + assertion.
|
|
5
|
+
*
|
|
6
|
+
* Implemented by `@camstack/addon-auth-webauthn` (collection of one
|
|
7
|
+
* for now; the cap is collection-mode for forward compat with
|
|
8
|
+
* provider-specific passkey stores).
|
|
9
|
+
*
|
|
10
|
+
* Lifecycle:
|
|
11
|
+
* 1. Enrollment (admin or self):
|
|
12
|
+
* a. `beginRegistration({userId, username})` → server returns
|
|
13
|
+
* PublicKeyCredentialCreationOptions (challenge, rp, user, …).
|
|
14
|
+
* The browser passes this to `navigator.credentials.create()`.
|
|
15
|
+
* b. `finishRegistration({userId, response, label})` →
|
|
16
|
+
* server verifies attestation, persists the credential
|
|
17
|
+
* (publicKey + counter + transports + label).
|
|
18
|
+
*
|
|
19
|
+
* 2. Authentication (during login):
|
|
20
|
+
* a. `beginAuthentication({userId?})` → server returns
|
|
21
|
+
* PublicKeyCredentialRequestOptions (challenge, allowCredentials).
|
|
22
|
+
* The browser passes this to `navigator.credentials.get()`.
|
|
23
|
+
* b. `finishAuthentication({userId, response})` → server verifies
|
|
24
|
+
* the assertion, bumps the credential counter, returns ok.
|
|
25
|
+
*
|
|
26
|
+
* 3. Management:
|
|
27
|
+
* - `listPasskeys({userId})` — enumerate user's enrolled credentials.
|
|
28
|
+
* - `removePasskey({userId, credentialId})` — revoke one credential.
|
|
29
|
+
*
|
|
30
|
+
* Challenges are short-lived (5 min, in-memory). The cap is internal —
|
|
31
|
+
* the admin-ui composes the begin/finish round-trip and never exposes
|
|
32
|
+
* the cap to non-admins.
|
|
33
|
+
*/
|
|
34
|
+
declare const PasskeySummarySchema: z.ZodObject<{
|
|
35
|
+
credentialId: z.ZodString;
|
|
36
|
+
label: z.ZodString;
|
|
37
|
+
createdAt: z.ZodNumber;
|
|
38
|
+
lastUsedAt: z.ZodNullable<z.ZodNumber>;
|
|
39
|
+
transports: z.ZodDefault<z.ZodArray<z.ZodString>>;
|
|
40
|
+
}, z.core.$strip>;
|
|
41
|
+
export type PasskeySummary = z.infer<typeof PasskeySummarySchema>;
|
|
42
|
+
export declare const userPasskeysCapability: {
|
|
43
|
+
readonly name: "user-passkeys";
|
|
44
|
+
readonly scope: "system";
|
|
45
|
+
readonly mode: "collection";
|
|
46
|
+
readonly internal: true;
|
|
47
|
+
readonly methods: {
|
|
48
|
+
readonly beginRegistration: import("./capability-definition.js").CapabilityMethodSchema<z.ZodObject<{
|
|
49
|
+
userId: z.ZodString;
|
|
50
|
+
username: z.ZodString;
|
|
51
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
52
|
+
optionsJSON: z.ZodRecord<z.ZodString, z.ZodUnknown>;
|
|
53
|
+
}, z.core.$strip>, "mutation">;
|
|
54
|
+
readonly finishRegistration: import("./capability-definition.js").CapabilityMethodSchema<z.ZodObject<{
|
|
55
|
+
userId: z.ZodString;
|
|
56
|
+
response: z.ZodRecord<z.ZodString, z.ZodUnknown>;
|
|
57
|
+
label: z.ZodString;
|
|
58
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
59
|
+
success: z.ZodLiteral<true>;
|
|
60
|
+
credentialId: z.ZodString;
|
|
61
|
+
}, z.core.$strip>, "mutation">;
|
|
62
|
+
readonly beginAuthentication: import("./capability-definition.js").CapabilityMethodSchema<z.ZodObject<{
|
|
63
|
+
userId: z.ZodOptional<z.ZodString>;
|
|
64
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
65
|
+
optionsJSON: z.ZodRecord<z.ZodString, z.ZodUnknown>;
|
|
66
|
+
}, z.core.$strip>, "mutation">;
|
|
67
|
+
readonly finishAuthentication: import("./capability-definition.js").CapabilityMethodSchema<z.ZodObject<{
|
|
68
|
+
userId: z.ZodString;
|
|
69
|
+
response: z.ZodRecord<z.ZodString, z.ZodUnknown>;
|
|
70
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
71
|
+
verified: z.ZodBoolean;
|
|
72
|
+
}, z.core.$strip>, "mutation">;
|
|
73
|
+
readonly listPasskeys: import("./capability-definition.js").CapabilityMethodSchema<z.ZodObject<{
|
|
74
|
+
userId: z.ZodString;
|
|
75
|
+
}, z.core.$strip>, z.ZodArray<z.ZodObject<{
|
|
76
|
+
credentialId: z.ZodString;
|
|
77
|
+
label: z.ZodString;
|
|
78
|
+
createdAt: z.ZodNumber;
|
|
79
|
+
lastUsedAt: z.ZodNullable<z.ZodNumber>;
|
|
80
|
+
transports: z.ZodDefault<z.ZodArray<z.ZodString>>;
|
|
81
|
+
}, z.core.$strip>>, import("./capability-definition.js").CapabilityMethodKind>;
|
|
82
|
+
readonly removePasskey: import("./capability-definition.js").CapabilityMethodSchema<z.ZodObject<{
|
|
83
|
+
userId: z.ZodString;
|
|
84
|
+
credentialId: z.ZodString;
|
|
85
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
86
|
+
success: z.ZodLiteral<true>;
|
|
87
|
+
}, z.core.$strip>, "mutation">;
|
|
88
|
+
};
|
|
89
|
+
};
|
|
90
|
+
export type IUserPasskeysProvider = InferProvider<typeof userPasskeysCapability>;
|
|
91
|
+
export { PasskeySummarySchema };
|
|
92
|
+
//# sourceMappingURL=user-passkeys.cap.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"user-passkeys.cap.d.ts","sourceRoot":"","sources":["../../src/capabilities/user-passkeys.cap.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AACvB,OAAO,EAAqC,KAAK,aAAa,EAAE,MAAM,4BAA4B,CAAA;AAElG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AAEH,QAAA,MAAM,oBAAoB;;;;;;iBAMxB,CAAA;AAEF,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAA;AAEjE,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAqDM,CAAA;AAEzC,MAAM,MAAM,qBAAqB,GAAG,aAAa,CAAC,OAAO,sBAAsB,CAAC,CAAA;AAChF,OAAO,EAAE,oBAAoB,EAAE,CAAA"}
|
|
@@ -157,6 +157,40 @@ export declare const webrtcSessionCapability: {
|
|
|
157
157
|
sessionId: z.ZodString;
|
|
158
158
|
sdpOffer: z.ZodString;
|
|
159
159
|
}, z.core.$strip>, "mutation">;
|
|
160
|
+
/**
|
|
161
|
+
* Accept a CLIENT-generated SDP offer and return the server's
|
|
162
|
+
* SDP answer. Mirrors the WHEP / Alexa
|
|
163
|
+
* `Alexa.RTCSessionController.InitiateSessionWithOffer` direction
|
|
164
|
+
* (client offers, server answers) — the dual of `createSession`,
|
|
165
|
+
* which has the server offer first.
|
|
166
|
+
*
|
|
167
|
+
* `target` defaults to the device's adaptive selection when
|
|
168
|
+
* omitted; an optional `sessionId` lets the client provide its
|
|
169
|
+
* own correlation id (Alexa supplies one in the directive
|
|
170
|
+
* payload). The returned `sessionId` is whatever the server uses
|
|
171
|
+
* to track the session and accepts via `closeSession`.
|
|
172
|
+
*/
|
|
173
|
+
readonly handleOffer: import("./capability-definition.js").CapabilityMethodSchema<z.ZodObject<{
|
|
174
|
+
deviceId: z.ZodNumber;
|
|
175
|
+
target: z.ZodOptional<z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
176
|
+
kind: z.ZodLiteral<"adaptive">;
|
|
177
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
178
|
+
kind: z.ZodLiteral<"profile">;
|
|
179
|
+
profile: z.ZodEnum<{
|
|
180
|
+
high: "high";
|
|
181
|
+
mid: "mid";
|
|
182
|
+
low: "low";
|
|
183
|
+
}>;
|
|
184
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
185
|
+
kind: z.ZodLiteral<"cam-stream">;
|
|
186
|
+
camStreamId: z.ZodString;
|
|
187
|
+
}, z.core.$strip>], "kind">>;
|
|
188
|
+
sdpOffer: z.ZodString;
|
|
189
|
+
sessionId: z.ZodOptional<z.ZodString>;
|
|
190
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
191
|
+
sessionId: z.ZodString;
|
|
192
|
+
sdpAnswer: z.ZodString;
|
|
193
|
+
}, z.core.$strip>, "mutation">;
|
|
160
194
|
readonly handleAnswer: import("./capability-definition.js").CapabilityMethodSchema<z.ZodObject<{
|
|
161
195
|
deviceId: z.ZodNumber;
|
|
162
196
|
sessionId: z.ZodString;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"webrtc-session.cap.d.ts","sourceRoot":"","sources":["../../src/capabilities/webrtc-session.cap.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AACvB,OAAO,EAAqC,KAAK,aAAa,EAAE,MAAM,4BAA4B,CAAA;AAClG,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAA;AAIrD;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,wBAAwB;;;;;;;;;;;;2BAInC,CAAA;AACF,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,wBAAwB,CAAC,CAAA;AAEzE,qDAAqD;AACrD,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAmBnC,CAAA;AACF,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,wBAAwB,CAAC,CAAA;AAEzE;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,uBAAuB;;;;;;QAMhC;;;;;WAKG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QAKH;;;;;;WAMG
|
|
1
|
+
{"version":3,"file":"webrtc-session.cap.d.ts","sourceRoot":"","sources":["../../src/capabilities/webrtc-session.cap.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AACvB,OAAO,EAAqC,KAAK,aAAa,EAAE,MAAM,4BAA4B,CAAA;AAClG,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAA;AAIrD;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,wBAAwB;;;;;;;;;;;;2BAInC,CAAA;AACF,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,wBAAwB,CAAC,CAAA;AAEzE,qDAAqD;AACrD,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAmBnC,CAAA;AACF,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,wBAAwB,CAAC,CAAA;AAEzE;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,uBAAuB;;;;;;QAMhC;;;;;WAKG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QAKH;;;;;;WAMG;;;;;;;;;;;;;;;;;;;;;;;;;;;QAUH;;;;;;;;;;;;WAYG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QA4BH,kFAAkF;;;;;;;;;;CAS7C,CAAA;AAEzC,MAAM,MAAM,sBAAsB,GAAG,aAAa,CAAC,OAAO,uBAAuB,CAAC,CAAA"}
|