@claude-flow/plugin-code-intelligence 3.0.0-alpha.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.
@@ -0,0 +1,527 @@
1
+ /**
2
+ * GNN Bridge for Code Graph Analysis
3
+ *
4
+ * Provides graph neural network operations for code structure analysis
5
+ * using ruvector-gnn-wasm for high-performance graph algorithms.
6
+ *
7
+ * Features:
8
+ * - Code graph construction
9
+ * - Node embedding computation
10
+ * - Impact prediction using graph propagation
11
+ * - Community detection for module discovery
12
+ * - Pattern matching in code graphs
13
+ *
14
+ * Based on ADR-035: Advanced Code Intelligence Plugin
15
+ *
16
+ * @module v3/plugins/code-intelligence/bridges/gnn-bridge
17
+ */
18
+ /**
19
+ * GNN Bridge Implementation
20
+ */
21
+ export class GNNBridge {
22
+ // WASM module for future performance optimization (currently uses JS fallback)
23
+ wasmModule = null;
24
+ initialized = false;
25
+ embeddingDim;
26
+ constructor(embeddingDim = 128) {
27
+ this.embeddingDim = embeddingDim;
28
+ }
29
+ /**
30
+ * Initialize the WASM module
31
+ */
32
+ async initialize() {
33
+ if (this.initialized)
34
+ return;
35
+ try {
36
+ // Dynamic import of WASM module
37
+ this.wasmModule = await this.loadWasmModule();
38
+ this.initialized = true;
39
+ }
40
+ catch {
41
+ // Fallback to pure JS implementation
42
+ console.warn('WASM GNN module not available, using JS fallback');
43
+ this.wasmModule = null;
44
+ this.initialized = true;
45
+ }
46
+ }
47
+ /**
48
+ * Check if initialized
49
+ */
50
+ isInitialized() {
51
+ return this.initialized;
52
+ }
53
+ /**
54
+ * Build code graph from files
55
+ */
56
+ async buildCodeGraph(files, _includeCallGraph) {
57
+ if (!this.initialized) {
58
+ await this.initialize();
59
+ }
60
+ const nodes = [];
61
+ const edges = [];
62
+ const nodeMap = new Map();
63
+ // Create nodes for each file
64
+ for (let i = 0; i < files.length; i++) {
65
+ const file = files[i];
66
+ if (!file)
67
+ continue;
68
+ nodeMap.set(file, i);
69
+ nodes.push({
70
+ id: file,
71
+ label: file.split('/').pop() ?? file,
72
+ type: 'file',
73
+ language: this.detectLanguage(file),
74
+ });
75
+ }
76
+ // Build edges from imports (simplified - in production would parse AST)
77
+ for (const file of files) {
78
+ const imports = await this.extractImports(file, files);
79
+ for (const imp of imports) {
80
+ if (nodeMap.has(imp)) {
81
+ edges.push({
82
+ from: file,
83
+ to: imp,
84
+ type: 'import',
85
+ weight: 1,
86
+ });
87
+ }
88
+ }
89
+ }
90
+ // Calculate metadata
91
+ const avgDegree = edges.length > 0 ? (edges.length * 2) / nodes.length : 0;
92
+ const maxDepth = this.calculateMaxDepth(nodes, edges);
93
+ return {
94
+ nodes,
95
+ edges,
96
+ metadata: {
97
+ totalNodes: nodes.length,
98
+ totalEdges: edges.length,
99
+ avgDegree,
100
+ maxDepth,
101
+ },
102
+ };
103
+ }
104
+ /**
105
+ * Compute node embeddings using GNN
106
+ */
107
+ async computeNodeEmbeddings(graph, embeddingDim) {
108
+ if (!this.initialized) {
109
+ await this.initialize();
110
+ }
111
+ const embeddings = new Map();
112
+ const nodeCount = graph.nodes.length;
113
+ if (nodeCount === 0) {
114
+ return embeddings;
115
+ }
116
+ // Create node lookup
117
+ const nodeMap = new Map();
118
+ graph.nodes.forEach((node, index) => {
119
+ nodeMap.set(node.id, index);
120
+ });
121
+ // Build adjacency list for WASM
122
+ const edgeArray = new Uint32Array(graph.edges.length * 2);
123
+ for (let i = 0; i < graph.edges.length; i++) {
124
+ const edge = graph.edges[i];
125
+ if (!edge)
126
+ continue;
127
+ const fromIdx = nodeMap.get(edge.from) ?? 0;
128
+ const toIdx = nodeMap.get(edge.to) ?? 0;
129
+ edgeArray[i * 2] = fromIdx;
130
+ edgeArray[i * 2 + 1] = toIdx;
131
+ }
132
+ // Initialize features (simple degree-based features)
133
+ const featureDim = 16;
134
+ const features = new Float32Array(nodeCount * featureDim);
135
+ for (let i = 0; i < nodeCount; i++) {
136
+ const node = graph.nodes[i];
137
+ if (!node)
138
+ continue;
139
+ // In-degree
140
+ features[i * featureDim] = graph.edges.filter(e => e.to === node.id).length;
141
+ // Out-degree
142
+ features[i * featureDim + 1] = graph.edges.filter(e => e.from === node.id).length;
143
+ // Node type encoding
144
+ features[i * featureDim + 2] = this.encodeNodeType(node.type);
145
+ // Language encoding
146
+ features[i * featureDim + 3] = node.language ? this.encodeLanguage(node.language) : 0;
147
+ }
148
+ // Compute embeddings (using JS fallback)
149
+ const embeddingMatrix = this.computeEmbeddingsJS(graph, features, featureDim, embeddingDim);
150
+ // Extract embeddings per node
151
+ for (let i = 0; i < nodeCount; i++) {
152
+ const node = graph.nodes[i];
153
+ if (!node)
154
+ continue;
155
+ const nodeEmbedding = embeddingMatrix.slice(i * embeddingDim, (i + 1) * embeddingDim);
156
+ embeddings.set(node.id, nodeEmbedding);
157
+ }
158
+ return embeddings;
159
+ }
160
+ /**
161
+ * Predict impact of changes using GNN
162
+ */
163
+ async predictImpact(graph, changedNodes, depth) {
164
+ if (!this.initialized) {
165
+ await this.initialize();
166
+ }
167
+ const impact = new Map();
168
+ const nodeCount = graph.nodes.length;
169
+ if (nodeCount === 0) {
170
+ return impact;
171
+ }
172
+ // Create node lookup
173
+ const nodeMap = new Map();
174
+ graph.nodes.forEach((node, index) => {
175
+ nodeMap.set(node.id, index);
176
+ });
177
+ // Build adjacency list (reverse direction for impact propagation)
178
+ const adj = Array.from({ length: nodeCount }, () => []);
179
+ for (const edge of graph.edges) {
180
+ const fromIdx = nodeMap.get(edge.from);
181
+ const toIdx = nodeMap.get(edge.to);
182
+ if (fromIdx !== undefined && toIdx !== undefined) {
183
+ // Reverse: impact flows from dependency to dependent
184
+ adj[toIdx]?.push(fromIdx);
185
+ }
186
+ }
187
+ // Initialize impact scores
188
+ const scores = new Float32Array(nodeCount);
189
+ for (const nodeId of changedNodes) {
190
+ const idx = nodeMap.get(nodeId);
191
+ if (idx !== undefined) {
192
+ scores[idx] = 1.0;
193
+ }
194
+ }
195
+ // Propagate impact using BFS with decay
196
+ const visited = new Set();
197
+ const queue = [];
198
+ // Initialize queue with changed nodes
199
+ for (const nodeId of changedNodes) {
200
+ const idx = nodeMap.get(nodeId);
201
+ if (idx !== undefined) {
202
+ queue.push({ node: idx, depth: 0, score: 1.0 });
203
+ visited.add(idx);
204
+ }
205
+ }
206
+ // BFS propagation
207
+ while (queue.length > 0) {
208
+ const current = queue.shift();
209
+ if (!current || current.depth >= depth)
210
+ continue;
211
+ for (const neighbor of adj[current.node] ?? []) {
212
+ const newScore = current.score * 0.7; // Decay factor
213
+ const neighborScore = scores[neighbor];
214
+ if (neighborScore !== undefined && newScore > neighborScore) {
215
+ scores[neighbor] = newScore;
216
+ }
217
+ if (!visited.has(neighbor)) {
218
+ visited.add(neighbor);
219
+ queue.push({
220
+ node: neighbor,
221
+ depth: current.depth + 1,
222
+ score: newScore,
223
+ });
224
+ }
225
+ }
226
+ }
227
+ // Convert to map
228
+ for (let i = 0; i < nodeCount; i++) {
229
+ const node = graph.nodes[i];
230
+ const score = scores[i];
231
+ if (node && score !== undefined && score > 0) {
232
+ impact.set(node.id, score);
233
+ }
234
+ }
235
+ return impact;
236
+ }
237
+ /**
238
+ * Detect communities in code graph
239
+ */
240
+ async detectCommunities(graph) {
241
+ if (!this.initialized) {
242
+ await this.initialize();
243
+ }
244
+ const communities = new Map();
245
+ const nodeCount = graph.nodes.length;
246
+ if (nodeCount === 0) {
247
+ return communities;
248
+ }
249
+ // Create node lookup
250
+ const nodeMap = new Map();
251
+ graph.nodes.forEach((node, index) => {
252
+ nodeMap.set(node.id, index);
253
+ });
254
+ // Build adjacency list (undirected)
255
+ const adj = Array.from({ length: nodeCount }, () => new Set());
256
+ for (const edge of graph.edges) {
257
+ const fromIdx = nodeMap.get(edge.from);
258
+ const toIdx = nodeMap.get(edge.to);
259
+ if (fromIdx !== undefined && toIdx !== undefined) {
260
+ adj[fromIdx]?.add(toIdx);
261
+ adj[toIdx]?.add(fromIdx);
262
+ }
263
+ }
264
+ // Simple community detection using connected components
265
+ // In production, would use Louvain or similar
266
+ const community = new Array(nodeCount).fill(-1);
267
+ let communityId = 0;
268
+ for (let i = 0; i < nodeCount; i++) {
269
+ if (community[i] !== -1)
270
+ continue;
271
+ // BFS to find connected component
272
+ const queue = [i];
273
+ community[i] = communityId;
274
+ while (queue.length > 0) {
275
+ const current = queue.shift();
276
+ for (const neighbor of adj[current] ?? []) {
277
+ if (community[neighbor] === -1) {
278
+ community[neighbor] = communityId;
279
+ queue.push(neighbor);
280
+ }
281
+ }
282
+ }
283
+ communityId++;
284
+ }
285
+ // Convert to map
286
+ for (let i = 0; i < nodeCount; i++) {
287
+ const node = graph.nodes[i];
288
+ const comm = community[i];
289
+ if (node && comm !== undefined) {
290
+ communities.set(node.id, comm);
291
+ }
292
+ }
293
+ return communities;
294
+ }
295
+ /**
296
+ * Find similar code patterns
297
+ */
298
+ async findSimilarPatterns(graph, patternGraph, threshold) {
299
+ if (!this.initialized) {
300
+ await this.initialize();
301
+ }
302
+ const matches = [];
303
+ // Compute embeddings for both graphs
304
+ const graphEmbeddings = await this.computeNodeEmbeddings(graph, this.embeddingDim);
305
+ const patternEmbeddings = await this.computeNodeEmbeddings(patternGraph, this.embeddingDim);
306
+ // Average pattern embedding
307
+ const patternAvg = new Float32Array(this.embeddingDim);
308
+ let patternCount = 0;
309
+ for (const [, embedding] of patternEmbeddings) {
310
+ for (let i = 0; i < this.embeddingDim; i++) {
311
+ patternAvg[i] = (patternAvg[i] ?? 0) + (embedding[i] ?? 0);
312
+ }
313
+ patternCount++;
314
+ }
315
+ if (patternCount > 0) {
316
+ for (let i = 0; i < this.embeddingDim; i++) {
317
+ patternAvg[i] = (patternAvg[i] ?? 0) / patternCount;
318
+ }
319
+ }
320
+ // Find similar nodes in main graph
321
+ for (const [nodeId, embedding] of graphEmbeddings) {
322
+ const similarity = this.cosineSimilarity(embedding, patternAvg);
323
+ if (similarity >= threshold) {
324
+ matches.push({ matchId: nodeId, score: similarity });
325
+ }
326
+ }
327
+ // Sort by score descending
328
+ matches.sort((a, b) => b.score - a.score);
329
+ return matches;
330
+ }
331
+ // ============================================================================
332
+ // Private Helper Methods
333
+ // ============================================================================
334
+ /**
335
+ * Load WASM module dynamically
336
+ */
337
+ async loadWasmModule() {
338
+ throw new Error('WASM module loading not implemented');
339
+ }
340
+ /**
341
+ * Detect language from file extension
342
+ */
343
+ detectLanguage(filePath) {
344
+ const ext = filePath.split('.').pop()?.toLowerCase();
345
+ const langMap = {
346
+ ts: 'typescript',
347
+ tsx: 'typescript',
348
+ js: 'javascript',
349
+ jsx: 'javascript',
350
+ py: 'python',
351
+ java: 'java',
352
+ go: 'go',
353
+ rs: 'rust',
354
+ cpp: 'cpp',
355
+ c: 'cpp',
356
+ cs: 'csharp',
357
+ rb: 'ruby',
358
+ php: 'php',
359
+ swift: 'swift',
360
+ kt: 'kotlin',
361
+ scala: 'scala',
362
+ };
363
+ return ext ? langMap[ext] : undefined;
364
+ }
365
+ /**
366
+ * Extract imports from file (simplified)
367
+ */
368
+ async extractImports(_file, _allFiles) {
369
+ // In production, would parse AST
370
+ // For now, return empty array
371
+ return [];
372
+ }
373
+ /**
374
+ * Calculate max depth of dependency graph
375
+ */
376
+ calculateMaxDepth(nodes, edges) {
377
+ if (nodes.length === 0)
378
+ return 0;
379
+ // Build adjacency list
380
+ const adj = new Map();
381
+ for (const node of nodes) {
382
+ adj.set(node.id, []);
383
+ }
384
+ for (const edge of edges) {
385
+ adj.get(edge.from)?.push(edge.to);
386
+ }
387
+ // Find nodes with no incoming edges (roots)
388
+ const hasIncoming = new Set();
389
+ for (const edge of edges) {
390
+ hasIncoming.add(edge.to);
391
+ }
392
+ const roots = nodes.filter(n => !hasIncoming.has(n.id)).map(n => n.id);
393
+ if (roots.length === 0) {
394
+ // Cycle - use first node
395
+ roots.push(nodes[0].id);
396
+ }
397
+ // BFS to find max depth
398
+ let maxDepth = 0;
399
+ const visited = new Set();
400
+ const queue = [];
401
+ for (const root of roots) {
402
+ queue.push({ node: root, depth: 0 });
403
+ visited.add(root);
404
+ }
405
+ while (queue.length > 0) {
406
+ const current = queue.shift();
407
+ maxDepth = Math.max(maxDepth, current.depth);
408
+ for (const neighbor of adj.get(current.node) ?? []) {
409
+ if (!visited.has(neighbor)) {
410
+ visited.add(neighbor);
411
+ queue.push({ node: neighbor, depth: current.depth + 1 });
412
+ }
413
+ }
414
+ }
415
+ return maxDepth;
416
+ }
417
+ /**
418
+ * Encode node type as number
419
+ */
420
+ encodeNodeType(type) {
421
+ const types = {
422
+ file: 0.1,
423
+ module: 0.2,
424
+ package: 0.3,
425
+ class: 0.4,
426
+ function: 0.5,
427
+ };
428
+ return types[type];
429
+ }
430
+ /**
431
+ * Encode language as number
432
+ */
433
+ encodeLanguage(language) {
434
+ const languages = {
435
+ typescript: 0.1,
436
+ javascript: 0.15,
437
+ python: 0.2,
438
+ java: 0.25,
439
+ go: 0.3,
440
+ rust: 0.35,
441
+ cpp: 0.4,
442
+ csharp: 0.45,
443
+ ruby: 0.5,
444
+ php: 0.55,
445
+ };
446
+ return languages[language] ?? 0;
447
+ }
448
+ /**
449
+ * Compute embeddings using JS (fallback)
450
+ */
451
+ computeEmbeddingsJS(graph, features, featureDim, outputDim) {
452
+ const nodeCount = graph.nodes.length;
453
+ const embeddings = new Float32Array(nodeCount * outputDim);
454
+ // Create adjacency matrix
455
+ const nodeMap = new Map();
456
+ graph.nodes.forEach((node, index) => {
457
+ nodeMap.set(node.id, index);
458
+ });
459
+ // Simple message passing (1 layer)
460
+ for (let i = 0; i < nodeCount; i++) {
461
+ const node = graph.nodes[i];
462
+ if (!node)
463
+ continue;
464
+ // Aggregate neighbor features
465
+ const neighbors = graph.edges
466
+ .filter(e => e.to === node.id)
467
+ .map(e => nodeMap.get(e.from))
468
+ .filter((idx) => idx !== undefined);
469
+ // Initialize with own features (projected to output dim)
470
+ for (let j = 0; j < outputDim; j++) {
471
+ const featureIdx = j % featureDim;
472
+ embeddings[i * outputDim + j] = features[i * featureDim + featureIdx] ?? 0;
473
+ }
474
+ // Add neighbor contributions
475
+ if (neighbors.length > 0) {
476
+ for (const neighborIdx of neighbors) {
477
+ for (let j = 0; j < outputDim; j++) {
478
+ const featureIdx = j % featureDim;
479
+ const contribution = (features[neighborIdx * featureDim + featureIdx] ?? 0) / neighbors.length;
480
+ const embIdx = i * outputDim + j;
481
+ embeddings[embIdx] = (embeddings[embIdx] ?? 0) + contribution * 0.5;
482
+ }
483
+ }
484
+ }
485
+ }
486
+ // Normalize embeddings
487
+ for (let i = 0; i < nodeCount; i++) {
488
+ let norm = 0;
489
+ for (let j = 0; j < outputDim; j++) {
490
+ const val = embeddings[i * outputDim + j] ?? 0;
491
+ norm += val * val;
492
+ }
493
+ norm = Math.sqrt(norm);
494
+ if (norm > 0) {
495
+ for (let j = 0; j < outputDim; j++) {
496
+ embeddings[i * outputDim + j] = (embeddings[i * outputDim + j] ?? 0) / norm;
497
+ }
498
+ }
499
+ }
500
+ return embeddings;
501
+ }
502
+ /**
503
+ * Compute cosine similarity
504
+ */
505
+ cosineSimilarity(a, b) {
506
+ let dot = 0;
507
+ let normA = 0;
508
+ let normB = 0;
509
+ for (let i = 0; i < a.length; i++) {
510
+ const aVal = a[i] ?? 0;
511
+ const bVal = b[i] ?? 0;
512
+ dot += aVal * bVal;
513
+ normA += aVal * aVal;
514
+ normB += bVal * bVal;
515
+ }
516
+ const denominator = Math.sqrt(normA) * Math.sqrt(normB);
517
+ return denominator > 0 ? dot / denominator : 0;
518
+ }
519
+ }
520
+ /**
521
+ * Create and export default bridge instance
522
+ */
523
+ export function createGNNBridge(embeddingDim = 128) {
524
+ return new GNNBridge(embeddingDim);
525
+ }
526
+ export default GNNBridge;
527
+ //# sourceMappingURL=gnn-bridge.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gnn-bridge.js","sourceRoot":"","sources":["../../src/bridges/gnn-bridge.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Code Intelligence Plugin - Bridges Barrel Export
3
+ *
4
+ * @module @claude-flow/plugin-code-intelligence/bridges
5
+ */
6
+ export { GNNBridge, createGNNBridge, } from './gnn-bridge.js';
7
+ export { MinCutBridge, createMinCutBridge, } from './mincut-bridge.js';
8
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/bridges/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EACL,SAAS,EACT,eAAe,GAChB,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EACL,YAAY,EACZ,kBAAkB,GACnB,MAAM,oBAAoB,CAAC"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Code Intelligence Plugin - Bridges Barrel Export
3
+ *
4
+ * @module @claude-flow/plugin-code-intelligence/bridges
5
+ */
6
+ export { GNNBridge, createGNNBridge, } from './gnn-bridge.js';
7
+ export { MinCutBridge, createMinCutBridge, } from './mincut-bridge.js';
8
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/bridges/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EACL,SAAS,EACT,eAAe,GAChB,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EACL,YAAY,EACZ,kBAAkB,GACnB,MAAM,oBAAoB,CAAC"}
@@ -0,0 +1,81 @@
1
+ /**
2
+ * MinCut Bridge for Module Splitting
3
+ *
4
+ * Provides graph min-cut operations for optimal module boundary detection
5
+ * using ruvector-mincut-wasm for high-performance graph partitioning.
6
+ *
7
+ * Features:
8
+ * - Optimal module boundary detection
9
+ * - Multi-way graph partitioning
10
+ * - Constraint-aware splitting
11
+ * - Cut weight optimization
12
+ *
13
+ * Based on ADR-035: Advanced Code Intelligence Plugin
14
+ *
15
+ * @module v3/plugins/code-intelligence/bridges/mincut-bridge
16
+ */
17
+ import type { IMinCutBridge, DependencyGraph, SplitConstraints } from '../types.js';
18
+ /**
19
+ * MinCut Bridge Implementation
20
+ */
21
+ export declare class MinCutBridge implements IMinCutBridge {
22
+ private wasmModule;
23
+ private initialized;
24
+ /**
25
+ * Initialize the WASM module
26
+ */
27
+ initialize(): Promise<void>;
28
+ /**
29
+ * Check if initialized
30
+ */
31
+ isInitialized(): boolean;
32
+ /**
33
+ * Find optimal module boundaries using MinCut
34
+ */
35
+ findOptimalCuts(graph: DependencyGraph, numModules: number, constraints: SplitConstraints): Promise<Map<string, number>>;
36
+ /**
37
+ * Calculate cut weight for a given partition
38
+ */
39
+ calculateCutWeight(graph: DependencyGraph, partition: Map<string, number>): Promise<number>;
40
+ /**
41
+ * Find minimum s-t cut
42
+ */
43
+ minSTCut(graph: DependencyGraph, source: string, sink: string): Promise<{
44
+ cutValue: number;
45
+ cutEdges: Array<{
46
+ from: string;
47
+ to: string;
48
+ }>;
49
+ sourceSet: string[];
50
+ sinkSet: string[];
51
+ }>;
52
+ /**
53
+ * Multi-way cut for module splitting
54
+ */
55
+ multiWayCut(graph: DependencyGraph, terminals: string[], _weights: Map<string, number>): Promise<{
56
+ cutValue: number;
57
+ partitions: Map<string, number>;
58
+ }>;
59
+ /**
60
+ * Load WASM module dynamically
61
+ */
62
+ private loadWasmModule;
63
+ /**
64
+ * Spectral partitioning using Fiedler vector
65
+ */
66
+ private spectralPartition;
67
+ /**
68
+ * Edmonds-Karp algorithm (Ford-Fulkerson with BFS)
69
+ */
70
+ private edmondsKarp;
71
+ /**
72
+ * Compute distances from terminals to all nodes
73
+ */
74
+ private computeDistances;
75
+ }
76
+ /**
77
+ * Create and export default bridge instance
78
+ */
79
+ export declare function createMinCutBridge(): IMinCutBridge;
80
+ export default MinCutBridge;
81
+ //# sourceMappingURL=mincut-bridge.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mincut-bridge.d.ts","sourceRoot":"","sources":["../../src/bridges/mincut-bridge.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,KAAK,EACV,aAAa,EACb,eAAe,EACf,gBAAgB,EACjB,MAAM,aAAa,CAAC;AA4CrB;;GAEG;AACH,qBAAa,YAAa,YAAW,aAAa;IAEhD,OAAO,CAAC,UAAU,CAAiC;IACnD,OAAO,CAAC,WAAW,CAAS;IAE5B;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAejC;;OAEG;IACH,aAAa,IAAI,OAAO;IAIxB;;OAEG;IACG,eAAe,CACnB,KAAK,EAAE,eAAe,EACtB,UAAU,EAAE,MAAM,EAClB,WAAW,EAAE,gBAAgB,GAC5B,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAuF/B;;OAEG;IACG,kBAAkB,CACtB,KAAK,EAAE,eAAe,EACtB,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,GAC7B,OAAO,CAAC,MAAM,CAAC;IAmBlB;;OAEG;IACG,QAAQ,CACZ,KAAK,EAAE,eAAe,EACtB,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,GACX,OAAO,CAAC;QACT,QAAQ,EAAE,MAAM,CAAC;QACjB,QAAQ,EAAE,KAAK,CAAC;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,EAAE,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;QAC9C,SAAS,EAAE,MAAM,EAAE,CAAC;QACpB,OAAO,EAAE,MAAM,EAAE,CAAC;KACnB,CAAC;IA6FF;;OAEG;IACG,WAAW,CACf,KAAK,EAAE,eAAe,EACtB,SAAS,EAAE,MAAM,EAAE,EACnB,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,GAC5B,OAAO,CAAC;QACT,QAAQ,EAAE,MAAM,CAAC;QACjB,UAAU,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;KACjC,CAAC;IAmEF;;OAEG;YACW,cAAc;IAI5B;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAkGzB;;OAEG;IACH,OAAO,CAAC,WAAW;IAyEnB;;OAEG;IACH,OAAO,CAAC,gBAAgB;CAwDzB;AAED;;GAEG;AACH,wBAAgB,kBAAkB,IAAI,aAAa,CAElD;AAED,eAAe,YAAY,CAAC"}