sigma-memory 0.1.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.
@@ -0,0 +1,33 @@
1
+ import { NotesManager } from './notes.js';
2
+ import { OntologyManager } from './ontology.js';
3
+ import { QMDManager } from './qmd.js';
4
+ import type { MemoryConfig, UnifiedSearchResult, MemoryStatus } from './types.js';
5
+ export declare class SigmaMemory {
6
+ readonly notes: NotesManager;
7
+ readonly ontology: OntologyManager;
8
+ readonly qmd: QMDManager;
9
+ private readonly config;
10
+ constructor(config?: Partial<MemoryConfig>);
11
+ /**
12
+ * Recherche unifiée : cherche dans notes + ontology + QMD, combine les résultats
13
+ */
14
+ search(query: string): Promise<UnifiedSearchResult[]>;
15
+ /**
16
+ * Initialise tous les dossiers nécessaires
17
+ */
18
+ init(): Promise<void>;
19
+ /**
20
+ * Status de tous les sous-systèmes
21
+ */
22
+ status(): Promise<MemoryStatus>;
23
+ /**
24
+ * Configuration actuelle
25
+ */
26
+ getConfig(): MemoryConfig;
27
+ }
28
+ export { NotesManager } from './notes.js';
29
+ export { OntologyManager } from './ontology.js';
30
+ export { QMDManager } from './qmd.js';
31
+ export * from './types.js';
32
+ export default SigmaMemory;
33
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AACtC,OAAO,KAAK,EAAE,YAAY,EAAE,mBAAmB,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAElF,qBAAa,WAAW;IACtB,SAAgB,KAAK,EAAE,YAAY,CAAC;IACpC,SAAgB,QAAQ,EAAE,eAAe,CAAC;IAC1C,SAAgB,GAAG,EAAE,UAAU,CAAC;IAChC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAe;gBAE1B,MAAM,CAAC,EAAE,OAAO,CAAC,YAAY,CAAC;IAkB1C;;OAEG;IACG,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,mBAAmB,EAAE,CAAC;IAiE3D;;OAEG;IACG,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAoB3B;;OAEG;IACG,MAAM,IAAI,OAAO,CAAC,YAAY,CAAC;IAoCrC;;OAEG;IACH,SAAS,IAAI,YAAY;CAG1B;AAGD,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AACtC,cAAc,YAAY,CAAC;AAG3B,eAAe,WAAW,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,182 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ exports.QMDManager = exports.OntologyManager = exports.NotesManager = exports.SigmaMemory = void 0;
18
+ const path_1 = require("path");
19
+ const os_1 = require("os");
20
+ const fs_1 = require("fs");
21
+ const notes_js_1 = require("./notes.js");
22
+ const ontology_js_1 = require("./ontology.js");
23
+ const qmd_js_1 = require("./qmd.js");
24
+ class SigmaMemory {
25
+ notes;
26
+ ontology;
27
+ qmd;
28
+ config;
29
+ constructor(config) {
30
+ // Configuration par défaut
31
+ const defaultConfig = {
32
+ memoryDir: (0, path_1.join)((0, os_1.homedir)(), '.phi', 'memory'),
33
+ projectMemoryDir: (0, path_1.join)(process.cwd(), '.phi', 'memory'),
34
+ ontologyPath: (0, path_1.join)((0, os_1.homedir)(), '.phi', 'memory', 'ontology', 'graph.jsonl'),
35
+ qmdEnabled: true,
36
+ qmdCommand: 'qmd'
37
+ };
38
+ this.config = { ...defaultConfig, ...config };
39
+ // Initialise les managers
40
+ this.notes = new notes_js_1.NotesManager(this.config);
41
+ this.ontology = new ontology_js_1.OntologyManager(this.config);
42
+ this.qmd = new qmd_js_1.QMDManager(this.config);
43
+ }
44
+ /**
45
+ * Recherche unifiée : cherche dans notes + ontology + QMD, combine les résultats
46
+ */
47
+ async search(query) {
48
+ const results = [];
49
+ // Recherche dans les notes
50
+ try {
51
+ const notesResults = this.notes.search(query);
52
+ for (const result of notesResults) {
53
+ results.push({
54
+ source: 'notes',
55
+ type: 'note',
56
+ score: 0.8, // Score par défaut pour les notes
57
+ data: result
58
+ });
59
+ }
60
+ }
61
+ catch (error) {
62
+ console.error('Notes search error:', error);
63
+ }
64
+ // Recherche dans l'ontologie
65
+ try {
66
+ const entityResults = this.ontology.findEntity({ name: query });
67
+ for (const entity of entityResults) {
68
+ results.push({
69
+ source: 'ontology',
70
+ type: 'entity',
71
+ score: 0.9, // Score élevé pour les entités
72
+ data: entity
73
+ });
74
+ // Inclut aussi les relations de cette entité
75
+ const relations = this.ontology.findRelations(entity.id);
76
+ for (const relation of relations) {
77
+ results.push({
78
+ source: 'ontology',
79
+ type: 'relation',
80
+ score: 0.7,
81
+ data: relation
82
+ });
83
+ }
84
+ }
85
+ }
86
+ catch (error) {
87
+ console.error('Ontology search error:', error);
88
+ }
89
+ // Recherche QMD (vectorielle)
90
+ try {
91
+ const qmdResults = await this.qmd.search(query, 5);
92
+ for (const result of qmdResults) {
93
+ results.push({
94
+ source: 'qmd',
95
+ type: 'file',
96
+ score: result.score,
97
+ data: result
98
+ });
99
+ }
100
+ }
101
+ catch (error) {
102
+ console.error('QMD search error:', error);
103
+ }
104
+ // Trie par score décroissant
105
+ results.sort((a, b) => b.score - a.score);
106
+ return results;
107
+ }
108
+ /**
109
+ * Initialise tous les dossiers nécessaires
110
+ */
111
+ async init() {
112
+ // Crée les dossiers de base
113
+ if (!(0, fs_1.existsSync)(this.config.memoryDir)) {
114
+ (0, fs_1.mkdirSync)(this.config.memoryDir, { recursive: true });
115
+ }
116
+ if (!(0, fs_1.existsSync)(this.config.projectMemoryDir)) {
117
+ (0, fs_1.mkdirSync)(this.config.projectMemoryDir, { recursive: true });
118
+ }
119
+ // Initialise QMD si activé
120
+ if (this.config.qmdEnabled && this.qmd.isAvailable()) {
121
+ try {
122
+ await this.qmd.update();
123
+ }
124
+ catch (error) {
125
+ console.error('QMD initialization error:', error);
126
+ }
127
+ }
128
+ }
129
+ /**
130
+ * Status de tous les sous-systèmes
131
+ */
132
+ async status() {
133
+ // Status des notes
134
+ const notesList = this.notes.list();
135
+ const notesStatus = {
136
+ count: notesList.length,
137
+ totalSize: notesList.reduce((sum, note) => sum + note.size, 0),
138
+ lastModified: notesList.length > 0 ? notesList[0].date : null
139
+ };
140
+ // Status de l'ontologie
141
+ const ontologyStats = this.ontology.stats();
142
+ const ontologyGraph = this.ontology.getGraph();
143
+ const ontologyStatus = {
144
+ entities: ontologyGraph.entities.length,
145
+ relations: ontologyGraph.relations.length,
146
+ entitiesByType: ontologyStats.entitiesByType,
147
+ relationsByType: ontologyStats.relationsByType
148
+ };
149
+ // Status QMD
150
+ let qmdStatus = { available: false };
151
+ if (this.config.qmdEnabled && this.qmd.isAvailable()) {
152
+ const status = await this.qmd.status();
153
+ qmdStatus = {
154
+ available: true,
155
+ status: status || { files: 0, chunks: 0, lastUpdate: null }
156
+ };
157
+ }
158
+ return {
159
+ notes: notesStatus,
160
+ ontology: ontologyStatus,
161
+ qmd: qmdStatus
162
+ };
163
+ }
164
+ /**
165
+ * Configuration actuelle
166
+ */
167
+ getConfig() {
168
+ return { ...this.config };
169
+ }
170
+ }
171
+ exports.SigmaMemory = SigmaMemory;
172
+ // Exports pour une utilisation facile
173
+ var notes_js_2 = require("./notes.js");
174
+ Object.defineProperty(exports, "NotesManager", { enumerable: true, get: function () { return notes_js_2.NotesManager; } });
175
+ var ontology_js_2 = require("./ontology.js");
176
+ Object.defineProperty(exports, "OntologyManager", { enumerable: true, get: function () { return ontology_js_2.OntologyManager; } });
177
+ var qmd_js_2 = require("./qmd.js");
178
+ Object.defineProperty(exports, "QMDManager", { enumerable: true, get: function () { return qmd_js_2.QMDManager; } });
179
+ __exportStar(require("./types.js"), exports);
180
+ // Export par défaut
181
+ exports.default = SigmaMemory;
182
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,40 @@
1
+ import type { MemoryConfig, Note } from './types.js';
2
+ export declare class NotesManager {
3
+ private config;
4
+ private notesDir;
5
+ constructor(config: MemoryConfig);
6
+ private ensureDirectories;
7
+ /**
8
+ * Écrit dans un fichier .md (date du jour si pas de nom)
9
+ */
10
+ write(content: string, filename?: string): void;
11
+ /**
12
+ * Lit un fichier
13
+ */
14
+ read(filename: string): string;
15
+ /**
16
+ * Liste tous les fichiers .md avec leur taille et date
17
+ */
18
+ list(): Array<{
19
+ name: string;
20
+ size: number;
21
+ date: string;
22
+ }>;
23
+ /**
24
+ * Recherche full-text (grep-like) dans tous les .md
25
+ */
26
+ search(query: string): Array<{
27
+ file: string;
28
+ line: number;
29
+ content: string;
30
+ }>;
31
+ /**
32
+ * Retourne les notes des N derniers jours
33
+ */
34
+ getRecent(days: number): Note[];
35
+ /**
36
+ * Ajoute à un fichier existant
37
+ */
38
+ append(content: string, filename?: string): void;
39
+ }
40
+ //# sourceMappingURL=notes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"notes.d.ts","sourceRoot":"","sources":["../src/notes.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,YAAY,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAErD,qBAAa,YAAY;IACvB,OAAO,CAAC,MAAM,CAAe;IAC7B,OAAO,CAAC,QAAQ,CAAS;gBAEb,MAAM,EAAE,YAAY;IAMhC,OAAO,CAAC,iBAAiB;IASzB;;OAEG;IACH,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI;IAQ/C;;OAEG;IACH,IAAI,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM;IAQ9B;;OAEG;IACH,IAAI,IAAI,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;IAmB3D;;OAEG;IACH,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;IAoD7E;;OAEG;IACH,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,EAAE;IAmB/B;;OAEG;IACH,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI;CAcjD"}
package/dist/notes.js ADDED
@@ -0,0 +1,147 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.NotesManager = void 0;
4
+ const fs_1 = require("fs");
5
+ const path_1 = require("path");
6
+ const child_process_1 = require("child_process");
7
+ class NotesManager {
8
+ config;
9
+ notesDir;
10
+ constructor(config) {
11
+ this.config = config;
12
+ this.notesDir = (0, path_1.join)(config.memoryDir, 'notes');
13
+ this.ensureDirectories();
14
+ }
15
+ ensureDirectories() {
16
+ if (!(0, fs_1.existsSync)(this.config.memoryDir)) {
17
+ (0, fs_1.mkdirSync)(this.config.memoryDir, { recursive: true });
18
+ }
19
+ if (!(0, fs_1.existsSync)(this.notesDir)) {
20
+ (0, fs_1.mkdirSync)(this.notesDir, { recursive: true });
21
+ }
22
+ }
23
+ /**
24
+ * Écrit dans un fichier .md (date du jour si pas de nom)
25
+ */
26
+ write(content, filename) {
27
+ const today = new Date().toISOString().split('T')[0]; // YYYY-MM-DD
28
+ const file = filename || `${today}.md`;
29
+ const filePath = (0, path_1.join)(this.notesDir, file);
30
+ (0, fs_1.writeFileSync)(filePath, content, 'utf8');
31
+ }
32
+ /**
33
+ * Lit un fichier
34
+ */
35
+ read(filename) {
36
+ const filePath = (0, path_1.join)(this.notesDir, filename);
37
+ if (!(0, fs_1.existsSync)(filePath)) {
38
+ throw new Error(`File not found: ${filename}`);
39
+ }
40
+ return (0, fs_1.readFileSync)(filePath, 'utf8');
41
+ }
42
+ /**
43
+ * Liste tous les fichiers .md avec leur taille et date
44
+ */
45
+ list() {
46
+ if (!(0, fs_1.existsSync)(this.notesDir)) {
47
+ return [];
48
+ }
49
+ return (0, fs_1.readdirSync)(this.notesDir)
50
+ .filter(file => file.endsWith('.md'))
51
+ .map(file => {
52
+ const filePath = (0, path_1.join)(this.notesDir, file);
53
+ const stats = (0, fs_1.statSync)(filePath);
54
+ return {
55
+ name: file,
56
+ size: stats.size,
57
+ date: stats.mtime.toISOString()
58
+ };
59
+ })
60
+ .sort((a, b) => b.date.localeCompare(a.date));
61
+ }
62
+ /**
63
+ * Recherche full-text (grep-like) dans tous les .md
64
+ */
65
+ search(query) {
66
+ if (!(0, fs_1.existsSync)(this.notesDir)) {
67
+ return [];
68
+ }
69
+ const results = [];
70
+ try {
71
+ // Utilise grep pour une recherche efficace
72
+ const grepResult = (0, child_process_1.execSync)(`grep -n "${query.replace(/"/g, '\\"')}" "${this.notesDir}"/*.md 2>/dev/null || true`, { encoding: 'utf8' });
73
+ if (grepResult.trim()) {
74
+ const lines = grepResult.trim().split('\n');
75
+ for (const line of lines) {
76
+ const match = line.match(/^(.+?):(\d+):(.+)$/);
77
+ if (match) {
78
+ const [, fullPath, lineNumber, content] = match;
79
+ const filename = fullPath.replace(this.notesDir + '/', '');
80
+ results.push({
81
+ file: filename,
82
+ line: parseInt(lineNumber),
83
+ content: content.trim()
84
+ });
85
+ }
86
+ }
87
+ }
88
+ }
89
+ catch (error) {
90
+ // Fallback à une recherche en JavaScript si grep échoue
91
+ const files = (0, fs_1.readdirSync)(this.notesDir).filter(f => f.endsWith('.md'));
92
+ for (const file of files) {
93
+ const filePath = (0, path_1.join)(this.notesDir, file);
94
+ const content = (0, fs_1.readFileSync)(filePath, 'utf8');
95
+ const lines = content.split('\n');
96
+ lines.forEach((line, index) => {
97
+ if (line.toLowerCase().includes(query.toLowerCase())) {
98
+ results.push({
99
+ file,
100
+ line: index + 1,
101
+ content: line.trim()
102
+ });
103
+ }
104
+ });
105
+ }
106
+ }
107
+ return results;
108
+ }
109
+ /**
110
+ * Retourne les notes des N derniers jours
111
+ */
112
+ getRecent(days) {
113
+ const cutoffDate = new Date();
114
+ cutoffDate.setDate(cutoffDate.getDate() - days);
115
+ const files = this.list().filter(file => {
116
+ const fileDate = new Date(file.date);
117
+ return fileDate >= cutoffDate;
118
+ });
119
+ return files.map(file => {
120
+ const content = this.read(file.name);
121
+ return {
122
+ file: file.name,
123
+ date: file.date,
124
+ content
125
+ };
126
+ });
127
+ }
128
+ /**
129
+ * Ajoute à un fichier existant
130
+ */
131
+ append(content, filename) {
132
+ const today = new Date().toISOString().split('T')[0]; // YYYY-MM-DD
133
+ const file = filename || `${today}.md`;
134
+ const filePath = (0, path_1.join)(this.notesDir, file);
135
+ // Ajoute une ligne vide si le fichier existe déjà et ne se termine pas par une ligne vide
136
+ if ((0, fs_1.existsSync)(filePath)) {
137
+ const existingContent = (0, fs_1.readFileSync)(filePath, 'utf8');
138
+ const separator = existingContent.endsWith('\n') ? '' : '\n';
139
+ (0, fs_1.appendFileSync)(filePath, separator + content, 'utf8');
140
+ }
141
+ else {
142
+ (0, fs_1.writeFileSync)(filePath, content, 'utf8');
143
+ }
144
+ }
145
+ }
146
+ exports.NotesManager = NotesManager;
147
+ //# sourceMappingURL=notes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"notes.js","sourceRoot":"","sources":["../src/notes.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,65 @@
1
+ import type { MemoryConfig, OntologyEntity, OntologyRelation } from './types.js';
2
+ export declare class OntologyManager {
3
+ private config;
4
+ private graphPath;
5
+ private entities;
6
+ private relations;
7
+ private loaded;
8
+ constructor(config: MemoryConfig);
9
+ private ensureDirectories;
10
+ private generateId;
11
+ private loadGraph;
12
+ private appendToFile;
13
+ /**
14
+ * Ajoute une entité
15
+ */
16
+ addEntity(entity: Omit<OntologyEntity, 'id' | 'createdAt' | 'updatedAt'>): string;
17
+ /**
18
+ * Ajoute une relation
19
+ */
20
+ addRelation(relation: Omit<OntologyRelation, 'id' | 'createdAt'>): string;
21
+ /**
22
+ * Recherche par type/nom
23
+ */
24
+ findEntity(query: {
25
+ type?: string;
26
+ name?: string;
27
+ }): OntologyEntity[];
28
+ /**
29
+ * Toutes les relations d'une entité
30
+ */
31
+ findRelations(entityId: string): OntologyRelation[];
32
+ /**
33
+ * Retourne le graphe complet
34
+ */
35
+ getGraph(): {
36
+ entities: OntologyEntity[];
37
+ relations: OntologyRelation[];
38
+ };
39
+ /**
40
+ * Supprime entité + ses relations
41
+ */
42
+ removeEntity(id: string): void;
43
+ /**
44
+ * Trouve le chemin entre deux entités (BFS)
45
+ */
46
+ queryPath(fromId: string, toId: string, maxDepth?: number): Array<{
47
+ entity: OntologyEntity;
48
+ relation?: OntologyRelation;
49
+ }> | null;
50
+ /**
51
+ * Exporte tout le graphe en JSON lisible
52
+ */
53
+ export(): {
54
+ entities: OntologyEntity[];
55
+ relations: OntologyRelation[];
56
+ };
57
+ /**
58
+ * Statistiques : nombre d'entités par type, nombre de relations par type
59
+ */
60
+ stats(): {
61
+ entitiesByType: Record<string, number>;
62
+ relationsByType: Record<string, number>;
63
+ };
64
+ }
65
+ //# sourceMappingURL=ontology.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ontology.d.ts","sourceRoot":"","sources":["../src/ontology.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACV,YAAY,EACZ,cAAc,EACd,gBAAgB,EAKjB,MAAM,YAAY,CAAC;AAEpB,qBAAa,eAAe;IAC1B,OAAO,CAAC,MAAM,CAAe;IAC7B,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,QAAQ,CAA0C;IAC1D,OAAO,CAAC,SAAS,CAA4C;IAC7D,OAAO,CAAC,MAAM,CAAS;gBAEX,MAAM,EAAE,YAAY;IAMhC,OAAO,CAAC,iBAAiB;IAOzB,OAAO,CAAC,UAAU;IAIlB,OAAO,CAAC,SAAS;IA6DjB,OAAO,CAAC,YAAY;IAMpB;;OAEG;IACH,SAAS,CAAC,MAAM,EAAE,IAAI,CAAC,cAAc,EAAE,IAAI,GAAG,WAAW,GAAG,WAAW,CAAC,GAAG,MAAM;IAwBjF;;OAEG;IACH,WAAW,CAAC,QAAQ,EAAE,IAAI,CAAC,gBAAgB,EAAE,IAAI,GAAG,WAAW,CAAC,GAAG,MAAM;IA+BzE;;OAEG;IACH,UAAU,CAAC,KAAK,EAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,cAAc,EAAE;IAwBrE;;OAEG;IACH,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,gBAAgB,EAAE;IAcnD;;OAEG;IACH,QAAQ,IAAI;QAAE,QAAQ,EAAE,cAAc,EAAE,CAAC;QAAC,SAAS,EAAE,gBAAgB,EAAE,CAAA;KAAE;IASzE;;OAEG;IACH,YAAY,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI;IA2B9B;;OAEG;IACH,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,SAAI,GAAG,KAAK,CAAC;QAAE,MAAM,EAAE,cAAc,CAAC;QAAC,QAAQ,CAAC,EAAE,gBAAgB,CAAA;KAAE,CAAC,GAAG,IAAI;IAmE5H;;OAEG;IACH,MAAM,IAAI;QAAE,QAAQ,EAAE,cAAc,EAAE,CAAC;QAAC,SAAS,EAAE,gBAAgB,EAAE,CAAA;KAAE;IAIvE;;OAEG;IACH,KAAK,IAAI;QAAE,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAAC,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;KAAE;CAgB7F"}