@camstack/core 0.1.8 → 0.1.11
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/builtins/local-backup/index.d.mts +42 -0
- package/dist/builtins/local-backup/index.d.ts +42 -0
- package/dist/builtins/local-backup/index.mjs +2 -10
- package/dist/builtins/local-backup/index.mjs.map +1 -1
- package/dist/builtins/sqlite-storage/filesystem-storage.addon.d.mts +2 -0
- package/dist/builtins/sqlite-storage/filesystem-storage.addon.d.ts +2 -0
- package/dist/builtins/sqlite-storage/filesystem-storage.addon.mjs +2 -5
- package/dist/builtins/sqlite-storage/index.d.mts +4 -0
- package/dist/builtins/sqlite-storage/index.d.ts +4 -0
- package/dist/builtins/sqlite-storage/index.js +95 -197
- package/dist/builtins/sqlite-storage/index.js.map +1 -1
- package/dist/builtins/sqlite-storage/index.mjs +6 -26
- package/dist/builtins/sqlite-storage/index.mjs.map +1 -1
- package/dist/builtins/sqlite-storage/sqlite-settings.addon.d.mts +2 -0
- package/dist/builtins/sqlite-storage/sqlite-settings.addon.d.ts +2 -0
- package/dist/builtins/sqlite-storage/sqlite-settings.addon.mjs +1 -4
- package/dist/builtins/winston-logging/index.d.mts +30 -0
- package/dist/builtins/winston-logging/index.d.ts +30 -0
- package/dist/builtins/winston-logging/index.mjs +2 -10
- package/dist/builtins/winston-logging/index.mjs.map +1 -1
- package/dist/chunk-2F3XZYRW.mjs +89 -0
- package/dist/chunk-2F3XZYRW.mjs.map +1 -0
- package/dist/chunk-LQFPAEQF.mjs +147 -0
- package/dist/{chunk-XSLBW5C2.mjs.map → chunk-LQFPAEQF.mjs.map} +1 -1
- package/dist/chunk-R3DIIBBX.mjs +532 -0
- package/dist/chunk-R3DIIBBX.mjs.map +1 -0
- package/dist/chunk-SO4LROOT.mjs +150 -0
- package/dist/{chunk-GBWW3JU4.mjs.map → chunk-SO4LROOT.mjs.map} +1 -1
- package/dist/chunk-SPA4JBKN.mjs +175 -0
- package/dist/{chunk-4YD6WMO6.mjs.map → chunk-SPA4JBKN.mjs.map} +1 -1
- package/dist/chunk-YXNXYYHL.mjs +282 -0
- package/dist/{chunk-CHFIH4G6.mjs.map → chunk-YXNXYYHL.mjs.map} +1 -1
- package/dist/dist-3BY63UQ5.mjs +2151 -0
- package/dist/dist-3BY63UQ5.mjs.map +1 -0
- package/dist/filesystem-storage.addon-C42r589X.d.mts +57 -0
- package/dist/filesystem-storage.addon-C42r589X.d.ts +57 -0
- package/dist/index.d.mts +1110 -0
- package/dist/index.d.ts +1110 -0
- package/dist/index.js +6010 -17264
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +3416 -16481
- package/dist/index.mjs.map +1 -1
- package/dist/sql-schema-CKz78rId.d.mts +97 -0
- package/dist/sql-schema-CKz78rId.d.ts +97 -0
- package/dist/sqlite-settings.addon-DigoKwpZ.d.mts +70 -0
- package/dist/sqlite-settings.addon-DigoKwpZ.d.ts +70 -0
- package/dist/storage-location-manager-KKDQNAKA.mjs +7 -0
- package/package.json +1 -1
- package/dist/chunk-4JEXNFZZ.mjs +0 -57
- package/dist/chunk-4YD6WMO6.mjs +0 -207
- package/dist/chunk-CHFIH4G6.mjs +0 -314
- package/dist/chunk-EFQ25JFE.mjs +0 -689
- package/dist/chunk-EFQ25JFE.mjs.map +0 -1
- package/dist/chunk-GBWW3JU4.mjs +0 -180
- package/dist/chunk-XSLBW5C2.mjs +0 -177
- package/dist/onnxruntime_binding-6Q6HXASN.node +0 -0
- package/dist/onnxruntime_binding-EKZT2NRK.node +0 -0
- package/dist/onnxruntime_binding-P6S7V3CI.node +0 -0
- package/dist/onnxruntime_binding-PJNNIIUO.node +0 -0
- package/dist/onnxruntime_binding-UN6SPTQK.node +0 -0
- /package/dist/{chunk-4JEXNFZZ.mjs.map → storage-location-manager-KKDQNAKA.mjs.map} +0 -0
|
@@ -0,0 +1,147 @@
|
|
|
1
|
+
// src/builtins/winston-logging/winston-destination.ts
|
|
2
|
+
import * as winston from "winston";
|
|
3
|
+
import DailyRotateFile from "winston-daily-rotate-file";
|
|
4
|
+
import * as path from "path";
|
|
5
|
+
function formatScope(scope) {
|
|
6
|
+
if (scope.length === 0) return "";
|
|
7
|
+
const [first, ...rest] = scope;
|
|
8
|
+
const restFormatted = rest.map((s) => `[${s}]`).join("");
|
|
9
|
+
return `(${first})${restFormatted}`;
|
|
10
|
+
}
|
|
11
|
+
var WinstonDestination = class {
|
|
12
|
+
logger = null;
|
|
13
|
+
async initialize(config) {
|
|
14
|
+
const {
|
|
15
|
+
level = "info",
|
|
16
|
+
retentionDays = 30,
|
|
17
|
+
logsDir = path.join("camstack-data", "logs")
|
|
18
|
+
} = config ?? {};
|
|
19
|
+
const consoleFormat = winston.format.combine(
|
|
20
|
+
winston.format.timestamp({ format: "YYYY-MM-DD HH:mm:ss" }),
|
|
21
|
+
winston.format.colorize(),
|
|
22
|
+
winston.format.printf(({ timestamp, level: lvl, message, scope }) => {
|
|
23
|
+
const scopeStr = scope ? ` ${scope}` : "";
|
|
24
|
+
return `${timestamp} [${lvl}]${scopeStr} - ${message}`;
|
|
25
|
+
})
|
|
26
|
+
);
|
|
27
|
+
const fileFormat = winston.format.combine(
|
|
28
|
+
winston.format.timestamp(),
|
|
29
|
+
winston.format.json()
|
|
30
|
+
);
|
|
31
|
+
this.logger = winston.createLogger({
|
|
32
|
+
level,
|
|
33
|
+
transports: [
|
|
34
|
+
new winston.transports.Console({
|
|
35
|
+
format: consoleFormat
|
|
36
|
+
}),
|
|
37
|
+
new DailyRotateFile({
|
|
38
|
+
dirname: logsDir,
|
|
39
|
+
filename: "camstack-%DATE%.log",
|
|
40
|
+
datePattern: "YYYY-MM-DD",
|
|
41
|
+
maxFiles: `${retentionDays}d`,
|
|
42
|
+
format: fileFormat
|
|
43
|
+
})
|
|
44
|
+
]
|
|
45
|
+
});
|
|
46
|
+
}
|
|
47
|
+
write(entry) {
|
|
48
|
+
if (!this.logger) return;
|
|
49
|
+
const scope = formatScope(entry.scope);
|
|
50
|
+
const meta = entry.meta ?? {};
|
|
51
|
+
this.logger.log({
|
|
52
|
+
level: entry.level,
|
|
53
|
+
message: entry.message,
|
|
54
|
+
scope,
|
|
55
|
+
timestamp: entry.timestamp.toISOString(),
|
|
56
|
+
...meta
|
|
57
|
+
});
|
|
58
|
+
}
|
|
59
|
+
async query(_filter) {
|
|
60
|
+
return [];
|
|
61
|
+
}
|
|
62
|
+
async shutdown() {
|
|
63
|
+
if (!this.logger) return;
|
|
64
|
+
await new Promise((resolve) => {
|
|
65
|
+
this.logger.on("finish", resolve);
|
|
66
|
+
this.logger.end();
|
|
67
|
+
});
|
|
68
|
+
this.logger = null;
|
|
69
|
+
}
|
|
70
|
+
};
|
|
71
|
+
|
|
72
|
+
// src/builtins/winston-logging/winston-logging.addon.ts
|
|
73
|
+
var WinstonLoggingAddon = class {
|
|
74
|
+
manifest = {
|
|
75
|
+
id: "winston-logging",
|
|
76
|
+
name: "Winston Logging",
|
|
77
|
+
version: "1.0.0",
|
|
78
|
+
capabilities: ["log-destination"]
|
|
79
|
+
};
|
|
80
|
+
destination = null;
|
|
81
|
+
currentConfig = {
|
|
82
|
+
level: "info",
|
|
83
|
+
retentionDays: 30
|
|
84
|
+
};
|
|
85
|
+
async initialize(context) {
|
|
86
|
+
this.currentConfig = {
|
|
87
|
+
level: context.addonConfig.level ?? this.currentConfig.level,
|
|
88
|
+
retentionDays: context.addonConfig.retentionDays ?? this.currentConfig.retentionDays
|
|
89
|
+
};
|
|
90
|
+
const logsDir = context.locationPaths.logs;
|
|
91
|
+
this.destination = new WinstonDestination();
|
|
92
|
+
await this.destination.initialize({ ...this.currentConfig, logsDir });
|
|
93
|
+
context.logger.info("Winston logging initialized");
|
|
94
|
+
}
|
|
95
|
+
async shutdown() {
|
|
96
|
+
await this.destination?.shutdown();
|
|
97
|
+
}
|
|
98
|
+
getDestination() {
|
|
99
|
+
if (!this.destination) throw new Error("Winston not initialized");
|
|
100
|
+
return this.destination;
|
|
101
|
+
}
|
|
102
|
+
getCapabilityProvider(name) {
|
|
103
|
+
if (name === "log-destination" && this.destination) {
|
|
104
|
+
return this.destination;
|
|
105
|
+
}
|
|
106
|
+
return null;
|
|
107
|
+
}
|
|
108
|
+
getConfigSchema() {
|
|
109
|
+
return {
|
|
110
|
+
sections: [
|
|
111
|
+
{
|
|
112
|
+
id: "winston-retention",
|
|
113
|
+
title: "Log Retention",
|
|
114
|
+
description: "How long Winston keeps rotated log files on disk.",
|
|
115
|
+
columns: 1,
|
|
116
|
+
fields: [
|
|
117
|
+
{
|
|
118
|
+
type: "number",
|
|
119
|
+
key: "retentionDays",
|
|
120
|
+
label: "Retention (days)",
|
|
121
|
+
description: "Number of days to keep rotated log files before deletion",
|
|
122
|
+
min: 1,
|
|
123
|
+
max: 365,
|
|
124
|
+
step: 1,
|
|
125
|
+
unit: "days"
|
|
126
|
+
}
|
|
127
|
+
]
|
|
128
|
+
}
|
|
129
|
+
]
|
|
130
|
+
};
|
|
131
|
+
}
|
|
132
|
+
getConfig() {
|
|
133
|
+
return { ...this.currentConfig };
|
|
134
|
+
}
|
|
135
|
+
async onConfigChange(config) {
|
|
136
|
+
this.currentConfig = {
|
|
137
|
+
level: config.level ?? this.currentConfig.level,
|
|
138
|
+
retentionDays: config.retentionDays ?? this.currentConfig.retentionDays
|
|
139
|
+
};
|
|
140
|
+
}
|
|
141
|
+
};
|
|
142
|
+
|
|
143
|
+
export {
|
|
144
|
+
WinstonDestination,
|
|
145
|
+
WinstonLoggingAddon
|
|
146
|
+
};
|
|
147
|
+
//# sourceMappingURL=chunk-LQFPAEQF.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/builtins/winston-logging/winston-destination.ts","../src/builtins/winston-logging/winston-logging.addon.ts"],"sourcesContent":["import * as winston from 'winston'\nimport DailyRotateFile from 'winston-daily-rotate-file'\nimport * as path from 'node:path'\nimport type { ILogDestination, LogEntry, LogFilter } from '@camstack/types'\n\ninterface WinstonConfig {\n readonly level: string\n readonly retentionDays: number\n /** Resolved absolute path to the logs directory (replaces the old dataPath field). */\n readonly logsDir: string\n}\n\nfunction formatScope(scope: readonly string[]): string {\n if (scope.length === 0) return ''\n const [first, ...rest] = scope\n const restFormatted = rest.map((s) => `[${s}]`).join('')\n return `(${first})${restFormatted}`\n}\n\nexport class WinstonDestination implements ILogDestination {\n private logger: winston.Logger | null = null\n\n async initialize(config?: WinstonConfig): Promise<void> {\n const {\n level = 'info',\n retentionDays = 30,\n logsDir = path.join('camstack-data', 'logs'),\n } = config ?? {}\n\n const consoleFormat = winston.format.combine(\n winston.format.timestamp({ format: 'YYYY-MM-DD HH:mm:ss' }),\n winston.format.colorize(),\n winston.format.printf(({ timestamp, level: lvl, message, scope }) => {\n const scopeStr = scope ? ` ${scope}` : ''\n return `${timestamp} [${lvl}]${scopeStr} - ${message}`\n }),\n )\n\n const fileFormat = winston.format.combine(\n winston.format.timestamp(),\n winston.format.json(),\n )\n\n this.logger = winston.createLogger({\n level,\n transports: [\n new winston.transports.Console({\n format: consoleFormat,\n }),\n new DailyRotateFile({\n dirname: logsDir,\n filename: 'camstack-%DATE%.log',\n datePattern: 'YYYY-MM-DD',\n maxFiles: `${retentionDays}d`,\n format: fileFormat,\n }),\n ],\n })\n }\n\n write(entry: LogEntry): void {\n if (!this.logger) return\n\n const scope = formatScope(entry.scope)\n const meta = entry.meta ?? {}\n\n this.logger.log({\n level: entry.level,\n message: entry.message,\n scope,\n timestamp: entry.timestamp.toISOString(),\n ...meta,\n })\n }\n\n async query(_filter: LogFilter): Promise<readonly LogEntry[]> {\n // File-based log querying is not implemented; use structured storage for log queries\n return []\n }\n\n async shutdown(): Promise<void> {\n if (!this.logger) return\n\n await new Promise<void>((resolve) => {\n this.logger!.on('finish', resolve)\n this.logger!.end()\n })\n this.logger = null\n }\n}\n","import type {\n ICamstackAddon,\n AddonManifest,\n AddonContext,\n IConfigurable,\n ConfigUISchema,\n CapabilityProviderMap,\n} from '@camstack/types'\nimport { WinstonDestination } from './winston-destination'\n\nexport class WinstonLoggingAddon implements ICamstackAddon, IConfigurable {\n readonly manifest: AddonManifest = {\n id: 'winston-logging',\n name: 'Winston Logging',\n version: '1.0.0',\n capabilities: ['log-destination'],\n }\n\n private destination: WinstonDestination | null = null\n private currentConfig = {\n level: 'info',\n retentionDays: 30,\n }\n\n async initialize(context: AddonContext): Promise<void> {\n this.currentConfig = {\n level: (context.addonConfig.level as string) ?? this.currentConfig.level,\n retentionDays: (context.addonConfig.retentionDays as number) ?? this.currentConfig.retentionDays,\n }\n const logsDir = context.locationPaths.logs\n this.destination = new WinstonDestination()\n await this.destination.initialize({ ...this.currentConfig, logsDir })\n context.logger.info('Winston logging initialized')\n }\n\n async shutdown(): Promise<void> {\n await this.destination?.shutdown()\n }\n\n getDestination(): WinstonDestination {\n if (!this.destination) throw new Error('Winston not initialized')\n return this.destination\n }\n\n getCapabilityProvider<K extends keyof CapabilityProviderMap>(\n name: K,\n ): CapabilityProviderMap[K] | null {\n if (name === 'log-destination' && this.destination) {\n return this.destination as unknown as CapabilityProviderMap[K]\n }\n return null\n }\n\n getConfigSchema(): ConfigUISchema {\n return {\n sections: [\n {\n id: 'winston-retention',\n title: 'Log Retention',\n description: 'How long Winston keeps rotated log files on disk.',\n columns: 1,\n fields: [\n {\n type: 'number',\n key: 'retentionDays',\n label: 'Retention (days)',\n description: 'Number of days to keep rotated log files before deletion',\n min: 1,\n max: 365,\n step: 1,\n unit: 'days',\n },\n ],\n },\n ],\n }\n }\n\n getConfig(): Record<string, unknown> {\n return { ...this.currentConfig }\n }\n\n async onConfigChange(config: Record<string, unknown>): Promise<void> {\n this.currentConfig = {\n level: (config.level as string) ?? this.currentConfig.level,\n retentionDays: (config.retentionDays as number) ?? this.currentConfig.retentionDays,\n }\n }\n}\n"],"mappings":"
|
|
1
|
+
{"version":3,"sources":["../src/builtins/winston-logging/winston-destination.ts","../src/builtins/winston-logging/winston-logging.addon.ts"],"sourcesContent":["import * as winston from 'winston'\nimport DailyRotateFile from 'winston-daily-rotate-file'\nimport * as path from 'node:path'\nimport type { ILogDestination, LogEntry, LogFilter } from '@camstack/types'\n\ninterface WinstonConfig {\n readonly level: string\n readonly retentionDays: number\n /** Resolved absolute path to the logs directory (replaces the old dataPath field). */\n readonly logsDir: string\n}\n\nfunction formatScope(scope: readonly string[]): string {\n if (scope.length === 0) return ''\n const [first, ...rest] = scope\n const restFormatted = rest.map((s) => `[${s}]`).join('')\n return `(${first})${restFormatted}`\n}\n\nexport class WinstonDestination implements ILogDestination {\n private logger: winston.Logger | null = null\n\n async initialize(config?: WinstonConfig): Promise<void> {\n const {\n level = 'info',\n retentionDays = 30,\n logsDir = path.join('camstack-data', 'logs'),\n } = config ?? {}\n\n const consoleFormat = winston.format.combine(\n winston.format.timestamp({ format: 'YYYY-MM-DD HH:mm:ss' }),\n winston.format.colorize(),\n winston.format.printf(({ timestamp, level: lvl, message, scope }) => {\n const scopeStr = scope ? ` ${scope}` : ''\n return `${timestamp} [${lvl}]${scopeStr} - ${message}`\n }),\n )\n\n const fileFormat = winston.format.combine(\n winston.format.timestamp(),\n winston.format.json(),\n )\n\n this.logger = winston.createLogger({\n level,\n transports: [\n new winston.transports.Console({\n format: consoleFormat,\n }),\n new DailyRotateFile({\n dirname: logsDir,\n filename: 'camstack-%DATE%.log',\n datePattern: 'YYYY-MM-DD',\n maxFiles: `${retentionDays}d`,\n format: fileFormat,\n }),\n ],\n })\n }\n\n write(entry: LogEntry): void {\n if (!this.logger) return\n\n const scope = formatScope(entry.scope)\n const meta = entry.meta ?? {}\n\n this.logger.log({\n level: entry.level,\n message: entry.message,\n scope,\n timestamp: entry.timestamp.toISOString(),\n ...meta,\n })\n }\n\n async query(_filter: LogFilter): Promise<readonly LogEntry[]> {\n // File-based log querying is not implemented; use structured storage for log queries\n return []\n }\n\n async shutdown(): Promise<void> {\n if (!this.logger) return\n\n await new Promise<void>((resolve) => {\n this.logger!.on('finish', resolve)\n this.logger!.end()\n })\n this.logger = null\n }\n}\n","import type {\n ICamstackAddon,\n AddonManifest,\n AddonContext,\n IConfigurable,\n ConfigUISchema,\n CapabilityProviderMap,\n} from '@camstack/types'\nimport { WinstonDestination } from './winston-destination'\n\nexport class WinstonLoggingAddon implements ICamstackAddon, IConfigurable {\n readonly manifest: AddonManifest = {\n id: 'winston-logging',\n name: 'Winston Logging',\n version: '1.0.0',\n capabilities: ['log-destination'],\n }\n\n private destination: WinstonDestination | null = null\n private currentConfig = {\n level: 'info',\n retentionDays: 30,\n }\n\n async initialize(context: AddonContext): Promise<void> {\n this.currentConfig = {\n level: (context.addonConfig.level as string) ?? this.currentConfig.level,\n retentionDays: (context.addonConfig.retentionDays as number) ?? this.currentConfig.retentionDays,\n }\n const logsDir = context.locationPaths.logs\n this.destination = new WinstonDestination()\n await this.destination.initialize({ ...this.currentConfig, logsDir })\n context.logger.info('Winston logging initialized')\n }\n\n async shutdown(): Promise<void> {\n await this.destination?.shutdown()\n }\n\n getDestination(): WinstonDestination {\n if (!this.destination) throw new Error('Winston not initialized')\n return this.destination\n }\n\n getCapabilityProvider<K extends keyof CapabilityProviderMap>(\n name: K,\n ): CapabilityProviderMap[K] | null {\n if (name === 'log-destination' && this.destination) {\n return this.destination as unknown as CapabilityProviderMap[K]\n }\n return null\n }\n\n getConfigSchema(): ConfigUISchema {\n return {\n sections: [\n {\n id: 'winston-retention',\n title: 'Log Retention',\n description: 'How long Winston keeps rotated log files on disk.',\n columns: 1,\n fields: [\n {\n type: 'number',\n key: 'retentionDays',\n label: 'Retention (days)',\n description: 'Number of days to keep rotated log files before deletion',\n min: 1,\n max: 365,\n step: 1,\n unit: 'days',\n },\n ],\n },\n ],\n }\n }\n\n getConfig(): Record<string, unknown> {\n return { ...this.currentConfig }\n }\n\n async onConfigChange(config: Record<string, unknown>): Promise<void> {\n this.currentConfig = {\n level: (config.level as string) ?? this.currentConfig.level,\n retentionDays: (config.retentionDays as number) ?? this.currentConfig.retentionDays,\n }\n }\n}\n"],"mappings":";AAAA,YAAY,aAAa;AACzB,OAAO,qBAAqB;AAC5B,YAAY,UAAU;AAUtB,SAAS,YAAY,OAAkC;AACrD,MAAI,MAAM,WAAW,EAAG,QAAO;AAC/B,QAAM,CAAC,OAAO,GAAG,IAAI,IAAI;AACzB,QAAM,gBAAgB,KAAK,IAAI,CAAC,MAAM,IAAI,CAAC,GAAG,EAAE,KAAK,EAAE;AACvD,SAAO,IAAI,KAAK,IAAI,aAAa;AACnC;AAEO,IAAM,qBAAN,MAAoD;AAAA,EACjD,SAAgC;AAAA,EAExC,MAAM,WAAW,QAAuC;AACtD,UAAM;AAAA,MACJ,QAAQ;AAAA,MACR,gBAAgB;AAAA,MAChB,UAAe,UAAK,iBAAiB,MAAM;AAAA,IAC7C,IAAI,UAAU,CAAC;AAEf,UAAM,gBAAwB,eAAO;AAAA,MAC3B,eAAO,UAAU,EAAE,QAAQ,sBAAsB,CAAC;AAAA,MAClD,eAAO,SAAS;AAAA,MAChB,eAAO,OAAO,CAAC,EAAE,WAAW,OAAO,KAAK,SAAS,MAAM,MAAM;AACnE,cAAM,WAAW,QAAQ,IAAI,KAAK,KAAK;AACvC,eAAO,GAAG,SAAS,KAAK,GAAG,IAAI,QAAQ,MAAM,OAAO;AAAA,MACtD,CAAC;AAAA,IACH;AAEA,UAAM,aAAqB,eAAO;AAAA,MACxB,eAAO,UAAU;AAAA,MACjB,eAAO,KAAK;AAAA,IACtB;AAEA,SAAK,SAAiB,qBAAa;AAAA,MACjC;AAAA,MACA,YAAY;AAAA,QACV,IAAY,mBAAW,QAAQ;AAAA,UAC7B,QAAQ;AAAA,QACV,CAAC;AAAA,QACD,IAAI,gBAAgB;AAAA,UAClB,SAAS;AAAA,UACT,UAAU;AAAA,UACV,aAAa;AAAA,UACb,UAAU,GAAG,aAAa;AAAA,UAC1B,QAAQ;AAAA,QACV,CAAC;AAAA,MACH;AAAA,IACF,CAAC;AAAA,EACH;AAAA,EAEA,MAAM,OAAuB;AAC3B,QAAI,CAAC,KAAK,OAAQ;AAElB,UAAM,QAAQ,YAAY,MAAM,KAAK;AACrC,UAAM,OAAO,MAAM,QAAQ,CAAC;AAE5B,SAAK,OAAO,IAAI;AAAA,MACd,OAAO,MAAM;AAAA,MACb,SAAS,MAAM;AAAA,MACf;AAAA,MACA,WAAW,MAAM,UAAU,YAAY;AAAA,MACvC,GAAG;AAAA,IACL,CAAC;AAAA,EACH;AAAA,EAEA,MAAM,MAAM,SAAkD;AAE5D,WAAO,CAAC;AAAA,EACV;AAAA,EAEA,MAAM,WAA0B;AAC9B,QAAI,CAAC,KAAK,OAAQ;AAElB,UAAM,IAAI,QAAc,CAAC,YAAY;AACnC,WAAK,OAAQ,GAAG,UAAU,OAAO;AACjC,WAAK,OAAQ,IAAI;AAAA,IACnB,CAAC;AACD,SAAK,SAAS;AAAA,EAChB;AACF;;;AC/EO,IAAM,sBAAN,MAAmE;AAAA,EAC/D,WAA0B;AAAA,IACjC,IAAI;AAAA,IACJ,MAAM;AAAA,IACN,SAAS;AAAA,IACT,cAAc,CAAC,iBAAiB;AAAA,EAClC;AAAA,EAEQ,cAAyC;AAAA,EACzC,gBAAgB;AAAA,IACtB,OAAO;AAAA,IACP,eAAe;AAAA,EACjB;AAAA,EAEA,MAAM,WAAW,SAAsC;AACrD,SAAK,gBAAgB;AAAA,MACnB,OAAQ,QAAQ,YAAY,SAAoB,KAAK,cAAc;AAAA,MACnE,eAAgB,QAAQ,YAAY,iBAA4B,KAAK,cAAc;AAAA,IACrF;AACA,UAAM,UAAU,QAAQ,cAAc;AACtC,SAAK,cAAc,IAAI,mBAAmB;AAC1C,UAAM,KAAK,YAAY,WAAW,EAAE,GAAG,KAAK,eAAe,QAAQ,CAAC;AACpE,YAAQ,OAAO,KAAK,6BAA6B;AAAA,EACnD;AAAA,EAEA,MAAM,WAA0B;AAC9B,UAAM,KAAK,aAAa,SAAS;AAAA,EACnC;AAAA,EAEA,iBAAqC;AACnC,QAAI,CAAC,KAAK,YAAa,OAAM,IAAI,MAAM,yBAAyB;AAChE,WAAO,KAAK;AAAA,EACd;AAAA,EAEA,sBACE,MACiC;AACjC,QAAI,SAAS,qBAAqB,KAAK,aAAa;AAClD,aAAO,KAAK;AAAA,IACd;AACA,WAAO;AAAA,EACT;AAAA,EAEA,kBAAkC;AAChC,WAAO;AAAA,MACL,UAAU;AAAA,QACR;AAAA,UACE,IAAI;AAAA,UACJ,OAAO;AAAA,UACP,aAAa;AAAA,UACb,SAAS;AAAA,UACT,QAAQ;AAAA,YACN;AAAA,cACE,MAAM;AAAA,cACN,KAAK;AAAA,cACL,OAAO;AAAA,cACP,aAAa;AAAA,cACb,KAAK;AAAA,cACL,KAAK;AAAA,cACL,MAAM;AAAA,cACN,MAAM;AAAA,YACR;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAAA,EAEA,YAAqC;AACnC,WAAO,EAAE,GAAG,KAAK,cAAc;AAAA,EACjC;AAAA,EAEA,MAAM,eAAe,QAAgD;AACnE,SAAK,gBAAgB;AAAA,MACnB,OAAQ,OAAO,SAAoB,KAAK,cAAc;AAAA,MACtD,eAAgB,OAAO,iBAA4B,KAAK,cAAc;AAAA,IACxE;AAAA,EACF;AACF;","names":[]}
|