@tinycloud/operations 0.5.4 → 0.6.0-beta.1
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/cli-runtime.cjs +915 -354
- package/dist/cli-runtime.cjs.map +1 -1
- package/dist/cli-runtime.js +905 -345
- package/dist/cli-runtime.js.map +1 -1
- package/dist/delegation-binding.cjs.map +1 -1
- package/dist/delegation-binding.js.map +1 -1
- package/dist/index.cjs +920 -355
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +5 -1
- package/dist/index.d.ts +5 -1
- package/dist/index.js +910 -346
- package/dist/index.js.map +1 -1
- package/dist/tc-apps.cjs +71 -0
- package/dist/tc-apps.cjs.map +1 -0
- package/dist/tc-apps.d.cts +9 -0
- package/dist/tc-apps.d.ts +9 -0
- package/dist/tc-apps.js +40 -0
- package/dist/tc-apps.js.map +1 -0
- package/generated/operations.json +3870 -2
- package/package.json +10 -5
package/dist/tc-apps.cjs
ADDED
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __export = (target, all) => {
|
|
7
|
+
for (var name in all)
|
|
8
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
+
};
|
|
10
|
+
var __copyProps = (to, from, except, desc) => {
|
|
11
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
+
for (let key of __getOwnPropNames(from))
|
|
13
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
+
}
|
|
16
|
+
return to;
|
|
17
|
+
};
|
|
18
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
+
|
|
20
|
+
// src/tc-apps.ts
|
|
21
|
+
var tc_apps_exports = {};
|
|
22
|
+
__export(tc_apps_exports, {
|
|
23
|
+
TC_APPS_COPY_ACTIONS: () => TC_APPS_COPY_ACTIONS,
|
|
24
|
+
TC_APPS_DATABASE: () => TC_APPS_DATABASE,
|
|
25
|
+
TC_APPS_RECORDS_ACTIONS: () => TC_APPS_RECORDS_ACTIONS,
|
|
26
|
+
TC_APPS_ROOT: () => TC_APPS_ROOT,
|
|
27
|
+
isTcAppsPermission: () => isTcAppsPermission,
|
|
28
|
+
tcAppsApprovalMessage: () => tcAppsApprovalMessage,
|
|
29
|
+
tcAppsApprovalReason: () => tcAppsApprovalReason
|
|
30
|
+
});
|
|
31
|
+
module.exports = __toCommonJS(tc_apps_exports);
|
|
32
|
+
var TC_APPS_ROOT = "xyz.tinycloud.agent-data/";
|
|
33
|
+
var TC_APPS_DATABASE = "xyz.tinycloud.agent-data.index";
|
|
34
|
+
var TC_APPS_RECORDS_ACTIONS = ["tinycloud.kv/get", "tinycloud.kv/list", "tinycloud.kv/put", "tinycloud.kv/del"];
|
|
35
|
+
var TC_APPS_COPY_ACTIONS = ["tinycloud.sql/read", "tinycloud.sql/write", "tinycloud.sql/schema"];
|
|
36
|
+
var RECORDS_REASON = "Lets Claude keep your personal records in your TinyCloud default space (keys under xyz.tinycloud.agent-data/): read, add, change and delete them, for 30 days.";
|
|
37
|
+
var COPY_REASON = "Lets Claude keep a fast, searchable copy of those records (database xyz.tinycloud.agent-data.index) for 30 days.";
|
|
38
|
+
function isTcAppsPermission(permission, copy = false) {
|
|
39
|
+
if (typeof permission !== "object" || permission === null) return false;
|
|
40
|
+
const entry = permission;
|
|
41
|
+
const actions = copy ? TC_APPS_COPY_ACTIONS : TC_APPS_RECORDS_ACTIONS;
|
|
42
|
+
return entry.service === (copy ? "tinycloud.sql" : "tinycloud.kv") && entry.path === (copy ? TC_APPS_DATABASE : TC_APPS_ROOT) && typeof entry.space === "string" && (entry.space === "default" || /^tinycloud:[^\s*]+:default$/.test(entry.space)) && Array.isArray(entry.actions) && entry.actions.length > 0 && entry.actions.every((action) => actions.includes(action));
|
|
43
|
+
}
|
|
44
|
+
function approvalKinds(permissions) {
|
|
45
|
+
if (permissions.length === 0 || permissions.some((entry) => !isTcAppsPermission(entry) && !isTcAppsPermission(entry, true))) return void 0;
|
|
46
|
+
return { records: permissions.some((entry) => isTcAppsPermission(entry)), copy: permissions.some((entry) => isTcAppsPermission(entry, true)) };
|
|
47
|
+
}
|
|
48
|
+
function tcAppsApprovalReason(permissions) {
|
|
49
|
+
const kinds = approvalKinds(permissions);
|
|
50
|
+
if (!kinds) return void 0;
|
|
51
|
+
return [kinds.records ? RECORDS_REASON : void 0, kinds.copy ? COPY_REASON : void 0].filter(Boolean).join(" ");
|
|
52
|
+
}
|
|
53
|
+
function tcAppsApprovalMessage(permissions) {
|
|
54
|
+
const kinds = approvalKinds(permissions);
|
|
55
|
+
if (!kinds) return void 0;
|
|
56
|
+
return [
|
|
57
|
+
kinds.records ? "Open the approval link and approve the request on OpenKey. It lets Claude keep your records under xyz.tinycloud.agent-data/ for 30 days. I'll carry on after you approve." : void 0,
|
|
58
|
+
kinds.copy ? "For questions over many records, I can keep a fast, searchable copy of your records. Open the approval link and approve the request on OpenKey. Its page names xyz.tinycloud.agent-data.index. This lasts 30 days; if you don't approve, I can still answer from your records, only more slowly." : void 0
|
|
59
|
+
].filter(Boolean).join(" ");
|
|
60
|
+
}
|
|
61
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
62
|
+
0 && (module.exports = {
|
|
63
|
+
TC_APPS_COPY_ACTIONS,
|
|
64
|
+
TC_APPS_DATABASE,
|
|
65
|
+
TC_APPS_RECORDS_ACTIONS,
|
|
66
|
+
TC_APPS_ROOT,
|
|
67
|
+
isTcAppsPermission,
|
|
68
|
+
tcAppsApprovalMessage,
|
|
69
|
+
tcAppsApprovalReason
|
|
70
|
+
});
|
|
71
|
+
//# sourceMappingURL=tc-apps.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/tc-apps.ts"],"sourcesContent":["export const TC_APPS_ROOT = \"xyz.tinycloud.agent-data/\";\nexport const TC_APPS_DATABASE = \"xyz.tinycloud.agent-data.index\";\nexport const TC_APPS_RECORDS_ACTIONS = [\"tinycloud.kv/get\", \"tinycloud.kv/list\", \"tinycloud.kv/put\", \"tinycloud.kv/del\"] as const;\nexport const TC_APPS_COPY_ACTIONS = [\"tinycloud.sql/read\", \"tinycloud.sql/write\", \"tinycloud.sql/schema\"] as const;\n\nconst RECORDS_REASON = \"Lets Claude keep your personal records in your TinyCloud default space (keys under xyz.tinycloud.agent-data/): read, add, change and delete them, for 30 days.\";\nconst COPY_REASON = \"Lets Claude keep a fast, searchable copy of those records (database xyz.tinycloud.agent-data.index) for 30 days.\";\n\nexport function isTcAppsPermission(permission: unknown, copy = false): boolean {\n if (typeof permission !== \"object\" || permission === null) return false;\n const entry = permission as Record<string, unknown>;\n const actions = copy ? TC_APPS_COPY_ACTIONS : TC_APPS_RECORDS_ACTIONS;\n return entry.service === (copy ? \"tinycloud.sql\" : \"tinycloud.kv\") &&\n entry.path === (copy ? TC_APPS_DATABASE : TC_APPS_ROOT) &&\n typeof entry.space === \"string\" &&\n (entry.space === \"default\" || /^tinycloud:[^\\s*]+:default$/.test(entry.space)) &&\n Array.isArray(entry.actions) && entry.actions.length > 0 &&\n entry.actions.every((action: unknown) => actions.includes(action as never));\n}\n\nfunction approvalKinds(permissions: readonly unknown[]): { records: boolean; copy: boolean } | undefined {\n if (permissions.length === 0 || permissions.some((entry) => !isTcAppsPermission(entry) && !isTcAppsPermission(entry, true))) return undefined;\n return { records: permissions.some((entry) => isTcAppsPermission(entry)), copy: permissions.some((entry) => isTcAppsPermission(entry, true)) };\n}\n\nexport function tcAppsApprovalReason(permissions: readonly unknown[]): string | undefined {\n const kinds = approvalKinds(permissions);\n if (!kinds) return undefined;\n return [kinds.records ? RECORDS_REASON : undefined, kinds.copy ? COPY_REASON : undefined].filter(Boolean).join(\" \");\n}\n\nexport function tcAppsApprovalMessage(permissions: readonly unknown[]): string | undefined {\n const kinds = approvalKinds(permissions);\n if (!kinds) return undefined;\n return [\n kinds.records ? \"Open the approval link and approve the request on OpenKey. It lets Claude keep your records under xyz.tinycloud.agent-data/ for 30 days. I'll carry on after you approve.\" : undefined,\n kinds.copy ? \"For questions over many records, I can keep a fast, searchable copy of your records. Open the approval link and approve the request on OpenKey. Its page names xyz.tinycloud.agent-data.index. This lasts 30 days; if you don't approve, I can still answer from your records, only more slowly.\" : undefined,\n ].filter(Boolean).join(\" \");\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAO,IAAM,eAAe;AACrB,IAAM,mBAAmB;AACzB,IAAM,0BAA0B,CAAC,oBAAoB,qBAAqB,oBAAoB,kBAAkB;AAChH,IAAM,uBAAuB,CAAC,sBAAsB,uBAAuB,sBAAsB;AAExG,IAAM,iBAAiB;AACvB,IAAM,cAAc;AAEb,SAAS,mBAAmB,YAAqB,OAAO,OAAgB;AAC7E,MAAI,OAAO,eAAe,YAAY,eAAe,KAAM,QAAO;AAClE,QAAM,QAAQ;AACd,QAAM,UAAU,OAAO,uBAAuB;AAC9C,SAAO,MAAM,aAAa,OAAO,kBAAkB,mBACjD,MAAM,UAAU,OAAO,mBAAmB,iBAC1C,OAAO,MAAM,UAAU,aACtB,MAAM,UAAU,aAAa,8BAA8B,KAAK,MAAM,KAAK,MAC5E,MAAM,QAAQ,MAAM,OAAO,KAAK,MAAM,QAAQ,SAAS,KACvD,MAAM,QAAQ,MAAM,CAAC,WAAoB,QAAQ,SAAS,MAAe,CAAC;AAC9E;AAEA,SAAS,cAAc,aAAkF;AACvG,MAAI,YAAY,WAAW,KAAK,YAAY,KAAK,CAAC,UAAU,CAAC,mBAAmB,KAAK,KAAK,CAAC,mBAAmB,OAAO,IAAI,CAAC,EAAG,QAAO;AACpI,SAAO,EAAE,SAAS,YAAY,KAAK,CAAC,UAAU,mBAAmB,KAAK,CAAC,GAAG,MAAM,YAAY,KAAK,CAAC,UAAU,mBAAmB,OAAO,IAAI,CAAC,EAAE;AAC/I;AAEO,SAAS,qBAAqB,aAAqD;AACxF,QAAM,QAAQ,cAAc,WAAW;AACvC,MAAI,CAAC,MAAO,QAAO;AACnB,SAAO,CAAC,MAAM,UAAU,iBAAiB,QAAW,MAAM,OAAO,cAAc,MAAS,EAAE,OAAO,OAAO,EAAE,KAAK,GAAG;AACpH;AAEO,SAAS,sBAAsB,aAAqD;AACzF,QAAM,QAAQ,cAAc,WAAW;AACvC,MAAI,CAAC,MAAO,QAAO;AACnB,SAAO;AAAA,IACL,MAAM,UAAU,8KAA8K;AAAA,IAC9L,MAAM,OAAO,qSAAqS;AAAA,EACpT,EAAE,OAAO,OAAO,EAAE,KAAK,GAAG;AAC5B;","names":[]}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
declare const TC_APPS_ROOT = "xyz.tinycloud.agent-data/";
|
|
2
|
+
declare const TC_APPS_DATABASE = "xyz.tinycloud.agent-data.index";
|
|
3
|
+
declare const TC_APPS_RECORDS_ACTIONS: readonly ["tinycloud.kv/get", "tinycloud.kv/list", "tinycloud.kv/put", "tinycloud.kv/del"];
|
|
4
|
+
declare const TC_APPS_COPY_ACTIONS: readonly ["tinycloud.sql/read", "tinycloud.sql/write", "tinycloud.sql/schema"];
|
|
5
|
+
declare function isTcAppsPermission(permission: unknown, copy?: boolean): boolean;
|
|
6
|
+
declare function tcAppsApprovalReason(permissions: readonly unknown[]): string | undefined;
|
|
7
|
+
declare function tcAppsApprovalMessage(permissions: readonly unknown[]): string | undefined;
|
|
8
|
+
|
|
9
|
+
export { TC_APPS_COPY_ACTIONS, TC_APPS_DATABASE, TC_APPS_RECORDS_ACTIONS, TC_APPS_ROOT, isTcAppsPermission, tcAppsApprovalMessage, tcAppsApprovalReason };
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
declare const TC_APPS_ROOT = "xyz.tinycloud.agent-data/";
|
|
2
|
+
declare const TC_APPS_DATABASE = "xyz.tinycloud.agent-data.index";
|
|
3
|
+
declare const TC_APPS_RECORDS_ACTIONS: readonly ["tinycloud.kv/get", "tinycloud.kv/list", "tinycloud.kv/put", "tinycloud.kv/del"];
|
|
4
|
+
declare const TC_APPS_COPY_ACTIONS: readonly ["tinycloud.sql/read", "tinycloud.sql/write", "tinycloud.sql/schema"];
|
|
5
|
+
declare function isTcAppsPermission(permission: unknown, copy?: boolean): boolean;
|
|
6
|
+
declare function tcAppsApprovalReason(permissions: readonly unknown[]): string | undefined;
|
|
7
|
+
declare function tcAppsApprovalMessage(permissions: readonly unknown[]): string | undefined;
|
|
8
|
+
|
|
9
|
+
export { TC_APPS_COPY_ACTIONS, TC_APPS_DATABASE, TC_APPS_RECORDS_ACTIONS, TC_APPS_ROOT, isTcAppsPermission, tcAppsApprovalMessage, tcAppsApprovalReason };
|
package/dist/tc-apps.js
ADDED
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
// src/tc-apps.ts
|
|
2
|
+
var TC_APPS_ROOT = "xyz.tinycloud.agent-data/";
|
|
3
|
+
var TC_APPS_DATABASE = "xyz.tinycloud.agent-data.index";
|
|
4
|
+
var TC_APPS_RECORDS_ACTIONS = ["tinycloud.kv/get", "tinycloud.kv/list", "tinycloud.kv/put", "tinycloud.kv/del"];
|
|
5
|
+
var TC_APPS_COPY_ACTIONS = ["tinycloud.sql/read", "tinycloud.sql/write", "tinycloud.sql/schema"];
|
|
6
|
+
var RECORDS_REASON = "Lets Claude keep your personal records in your TinyCloud default space (keys under xyz.tinycloud.agent-data/): read, add, change and delete them, for 30 days.";
|
|
7
|
+
var COPY_REASON = "Lets Claude keep a fast, searchable copy of those records (database xyz.tinycloud.agent-data.index) for 30 days.";
|
|
8
|
+
function isTcAppsPermission(permission, copy = false) {
|
|
9
|
+
if (typeof permission !== "object" || permission === null) return false;
|
|
10
|
+
const entry = permission;
|
|
11
|
+
const actions = copy ? TC_APPS_COPY_ACTIONS : TC_APPS_RECORDS_ACTIONS;
|
|
12
|
+
return entry.service === (copy ? "tinycloud.sql" : "tinycloud.kv") && entry.path === (copy ? TC_APPS_DATABASE : TC_APPS_ROOT) && typeof entry.space === "string" && (entry.space === "default" || /^tinycloud:[^\s*]+:default$/.test(entry.space)) && Array.isArray(entry.actions) && entry.actions.length > 0 && entry.actions.every((action) => actions.includes(action));
|
|
13
|
+
}
|
|
14
|
+
function approvalKinds(permissions) {
|
|
15
|
+
if (permissions.length === 0 || permissions.some((entry) => !isTcAppsPermission(entry) && !isTcAppsPermission(entry, true))) return void 0;
|
|
16
|
+
return { records: permissions.some((entry) => isTcAppsPermission(entry)), copy: permissions.some((entry) => isTcAppsPermission(entry, true)) };
|
|
17
|
+
}
|
|
18
|
+
function tcAppsApprovalReason(permissions) {
|
|
19
|
+
const kinds = approvalKinds(permissions);
|
|
20
|
+
if (!kinds) return void 0;
|
|
21
|
+
return [kinds.records ? RECORDS_REASON : void 0, kinds.copy ? COPY_REASON : void 0].filter(Boolean).join(" ");
|
|
22
|
+
}
|
|
23
|
+
function tcAppsApprovalMessage(permissions) {
|
|
24
|
+
const kinds = approvalKinds(permissions);
|
|
25
|
+
if (!kinds) return void 0;
|
|
26
|
+
return [
|
|
27
|
+
kinds.records ? "Open the approval link and approve the request on OpenKey. It lets Claude keep your records under xyz.tinycloud.agent-data/ for 30 days. I'll carry on after you approve." : void 0,
|
|
28
|
+
kinds.copy ? "For questions over many records, I can keep a fast, searchable copy of your records. Open the approval link and approve the request on OpenKey. Its page names xyz.tinycloud.agent-data.index. This lasts 30 days; if you don't approve, I can still answer from your records, only more slowly." : void 0
|
|
29
|
+
].filter(Boolean).join(" ");
|
|
30
|
+
}
|
|
31
|
+
export {
|
|
32
|
+
TC_APPS_COPY_ACTIONS,
|
|
33
|
+
TC_APPS_DATABASE,
|
|
34
|
+
TC_APPS_RECORDS_ACTIONS,
|
|
35
|
+
TC_APPS_ROOT,
|
|
36
|
+
isTcAppsPermission,
|
|
37
|
+
tcAppsApprovalMessage,
|
|
38
|
+
tcAppsApprovalReason
|
|
39
|
+
};
|
|
40
|
+
//# sourceMappingURL=tc-apps.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/tc-apps.ts"],"sourcesContent":["export const TC_APPS_ROOT = \"xyz.tinycloud.agent-data/\";\nexport const TC_APPS_DATABASE = \"xyz.tinycloud.agent-data.index\";\nexport const TC_APPS_RECORDS_ACTIONS = [\"tinycloud.kv/get\", \"tinycloud.kv/list\", \"tinycloud.kv/put\", \"tinycloud.kv/del\"] as const;\nexport const TC_APPS_COPY_ACTIONS = [\"tinycloud.sql/read\", \"tinycloud.sql/write\", \"tinycloud.sql/schema\"] as const;\n\nconst RECORDS_REASON = \"Lets Claude keep your personal records in your TinyCloud default space (keys under xyz.tinycloud.agent-data/): read, add, change and delete them, for 30 days.\";\nconst COPY_REASON = \"Lets Claude keep a fast, searchable copy of those records (database xyz.tinycloud.agent-data.index) for 30 days.\";\n\nexport function isTcAppsPermission(permission: unknown, copy = false): boolean {\n if (typeof permission !== \"object\" || permission === null) return false;\n const entry = permission as Record<string, unknown>;\n const actions = copy ? TC_APPS_COPY_ACTIONS : TC_APPS_RECORDS_ACTIONS;\n return entry.service === (copy ? \"tinycloud.sql\" : \"tinycloud.kv\") &&\n entry.path === (copy ? TC_APPS_DATABASE : TC_APPS_ROOT) &&\n typeof entry.space === \"string\" &&\n (entry.space === \"default\" || /^tinycloud:[^\\s*]+:default$/.test(entry.space)) &&\n Array.isArray(entry.actions) && entry.actions.length > 0 &&\n entry.actions.every((action: unknown) => actions.includes(action as never));\n}\n\nfunction approvalKinds(permissions: readonly unknown[]): { records: boolean; copy: boolean } | undefined {\n if (permissions.length === 0 || permissions.some((entry) => !isTcAppsPermission(entry) && !isTcAppsPermission(entry, true))) return undefined;\n return { records: permissions.some((entry) => isTcAppsPermission(entry)), copy: permissions.some((entry) => isTcAppsPermission(entry, true)) };\n}\n\nexport function tcAppsApprovalReason(permissions: readonly unknown[]): string | undefined {\n const kinds = approvalKinds(permissions);\n if (!kinds) return undefined;\n return [kinds.records ? RECORDS_REASON : undefined, kinds.copy ? COPY_REASON : undefined].filter(Boolean).join(\" \");\n}\n\nexport function tcAppsApprovalMessage(permissions: readonly unknown[]): string | undefined {\n const kinds = approvalKinds(permissions);\n if (!kinds) return undefined;\n return [\n kinds.records ? \"Open the approval link and approve the request on OpenKey. It lets Claude keep your records under xyz.tinycloud.agent-data/ for 30 days. I'll carry on after you approve.\" : undefined,\n kinds.copy ? \"For questions over many records, I can keep a fast, searchable copy of your records. Open the approval link and approve the request on OpenKey. Its page names xyz.tinycloud.agent-data.index. This lasts 30 days; if you don't approve, I can still answer from your records, only more slowly.\" : undefined,\n ].filter(Boolean).join(\" \");\n}\n"],"mappings":";AAAO,IAAM,eAAe;AACrB,IAAM,mBAAmB;AACzB,IAAM,0BAA0B,CAAC,oBAAoB,qBAAqB,oBAAoB,kBAAkB;AAChH,IAAM,uBAAuB,CAAC,sBAAsB,uBAAuB,sBAAsB;AAExG,IAAM,iBAAiB;AACvB,IAAM,cAAc;AAEb,SAAS,mBAAmB,YAAqB,OAAO,OAAgB;AAC7E,MAAI,OAAO,eAAe,YAAY,eAAe,KAAM,QAAO;AAClE,QAAM,QAAQ;AACd,QAAM,UAAU,OAAO,uBAAuB;AAC9C,SAAO,MAAM,aAAa,OAAO,kBAAkB,mBACjD,MAAM,UAAU,OAAO,mBAAmB,iBAC1C,OAAO,MAAM,UAAU,aACtB,MAAM,UAAU,aAAa,8BAA8B,KAAK,MAAM,KAAK,MAC5E,MAAM,QAAQ,MAAM,OAAO,KAAK,MAAM,QAAQ,SAAS,KACvD,MAAM,QAAQ,MAAM,CAAC,WAAoB,QAAQ,SAAS,MAAe,CAAC;AAC9E;AAEA,SAAS,cAAc,aAAkF;AACvG,MAAI,YAAY,WAAW,KAAK,YAAY,KAAK,CAAC,UAAU,CAAC,mBAAmB,KAAK,KAAK,CAAC,mBAAmB,OAAO,IAAI,CAAC,EAAG,QAAO;AACpI,SAAO,EAAE,SAAS,YAAY,KAAK,CAAC,UAAU,mBAAmB,KAAK,CAAC,GAAG,MAAM,YAAY,KAAK,CAAC,UAAU,mBAAmB,OAAO,IAAI,CAAC,EAAE;AAC/I;AAEO,SAAS,qBAAqB,aAAqD;AACxF,QAAM,QAAQ,cAAc,WAAW;AACvC,MAAI,CAAC,MAAO,QAAO;AACnB,SAAO,CAAC,MAAM,UAAU,iBAAiB,QAAW,MAAM,OAAO,cAAc,MAAS,EAAE,OAAO,OAAO,EAAE,KAAK,GAAG;AACpH;AAEO,SAAS,sBAAsB,aAAqD;AACzF,QAAM,QAAQ,cAAc,WAAW;AACvC,MAAI,CAAC,MAAO,QAAO;AACnB,SAAO;AAAA,IACL,MAAM,UAAU,8KAA8K;AAAA,IAC9L,MAAM,OAAO,qSAAqS;AAAA,EACpT,EAAE,OAAO,OAAO,EAAE,KAAK,GAAG;AAC5B;","names":[]}
|