@hexidecibel/companion 0.0.1 → 0.1.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/__tests__/task-parser.test.js +29 -29
- package/dist/__tests__/task-parser.test.js.map +1 -1
- package/dist/anthropic-usage.d.ts.map +1 -1
- package/dist/anthropic-usage.js +1 -1
- package/dist/anthropic-usage.js.map +1 -1
- package/dist/cert-generator.d.ts.map +1 -1
- package/dist/cert-generator.js +4 -21
- package/dist/cert-generator.js.map +1 -1
- package/dist/cli.d.ts +9 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +413 -0
- package/dist/cli.js.map +1 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +1 -7
- package/dist/config.js.map +1 -1
- package/dist/escalation.d.ts +51 -0
- package/dist/escalation.d.ts.map +1 -0
- package/dist/escalation.js +198 -0
- package/dist/escalation.js.map +1 -0
- package/dist/index.js +67 -30
- package/dist/index.js.map +1 -1
- package/dist/input-injector.d.ts.map +1 -1
- package/dist/input-injector.js +9 -5
- package/dist/input-injector.js.map +1 -1
- package/dist/notification-store.d.ts +35 -0
- package/dist/notification-store.d.ts.map +1 -0
- package/dist/notification-store.js +272 -0
- package/dist/notification-store.js.map +1 -0
- package/dist/parser.d.ts +15 -1
- package/dist/parser.d.ts.map +1 -1
- package/dist/parser.js +106 -61
- package/dist/parser.js.map +1 -1
- package/dist/push.d.ts +18 -26
- package/dist/push.d.ts.map +1 -1
- package/dist/push.js +90 -184
- package/dist/push.js.map +1 -1
- package/dist/qr-server.d.ts.map +1 -1
- package/dist/qr-server.js +159 -139
- package/dist/qr-server.js.map +1 -1
- package/dist/rules-engine.d.ts +20 -0
- package/dist/rules-engine.d.ts.map +1 -0
- package/dist/rules-engine.js +71 -0
- package/dist/rules-engine.js.map +1 -0
- package/dist/scaffold/claude-commands.d.ts +18 -0
- package/dist/scaffold/claude-commands.d.ts.map +1 -0
- package/dist/scaffold/claude-commands.js +352 -0
- package/dist/scaffold/claude-commands.js.map +1 -0
- package/dist/scaffold/generator.d.ts.map +1 -1
- package/dist/scaffold/generator.js +26 -1
- package/dist/scaffold/generator.js.map +1 -1
- package/dist/scaffold/scorer.d.ts +19 -0
- package/dist/scaffold/scorer.d.ts.map +1 -0
- package/dist/scaffold/scorer.js +92 -0
- package/dist/scaffold/scorer.js.map +1 -0
- package/dist/scaffold/templates/go-cli.d.ts +3 -0
- package/dist/scaffold/templates/go-cli.d.ts.map +1 -0
- package/dist/scaffold/templates/go-cli.js +249 -0
- package/dist/scaffold/templates/go-cli.js.map +1 -0
- package/dist/scaffold/templates/index.d.ts.map +1 -1
- package/dist/scaffold/templates/index.js +8 -2
- package/dist/scaffold/templates/index.js.map +1 -1
- package/dist/scaffold/templates/nextjs.d.ts +3 -0
- package/dist/scaffold/templates/nextjs.d.ts.map +1 -0
- package/dist/scaffold/templates/nextjs.js +336 -0
- package/dist/scaffold/templates/nextjs.js.map +1 -0
- package/dist/scaffold/templates/node-express.d.ts.map +1 -1
- package/dist/scaffold/templates/node-express.js +170 -157
- package/dist/scaffold/templates/node-express.js.map +1 -1
- package/dist/scaffold/templates/python-fastapi.d.ts.map +1 -1
- package/dist/scaffold/templates/python-fastapi.js +234 -221
- package/dist/scaffold/templates/python-fastapi.js.map +1 -1
- package/dist/scaffold/templates/react-mui-website.d.ts.map +1 -1
- package/dist/scaffold/templates/react-mui-website.js +337 -324
- package/dist/scaffold/templates/react-mui-website.js.map +1 -1
- package/dist/scaffold/templates/react-typescript.d.ts.map +1 -1
- package/dist/scaffold/templates/react-typescript.js +219 -206
- package/dist/scaffold/templates/react-typescript.js.map +1 -1
- package/dist/scaffold/templates/typescript-library.d.ts +3 -0
- package/dist/scaffold/templates/typescript-library.d.ts.map +1 -0
- package/dist/scaffold/templates/typescript-library.js +241 -0
- package/dist/scaffold/templates/typescript-library.js.map +1 -0
- package/dist/scaffold/types.d.ts +7 -0
- package/dist/scaffold/types.d.ts.map +1 -1
- package/dist/subagent-watcher.d.ts.map +1 -1
- package/dist/subagent-watcher.js +3 -3
- package/dist/subagent-watcher.js.map +1 -1
- package/dist/tmux-manager.d.ts +37 -0
- package/dist/tmux-manager.d.ts.map +1 -1
- package/dist/tmux-manager.js +165 -5
- package/dist/tmux-manager.js.map +1 -1
- package/dist/tool-config.d.ts.map +1 -1
- package/dist/tool-config.js +2 -2
- package/dist/tool-config.js.map +1 -1
- package/dist/types.d.ts +85 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +18 -0
- package/dist/types.js.map +1 -1
- package/dist/watcher.d.ts +7 -0
- package/dist/watcher.d.ts.map +1 -1
- package/dist/watcher.js +118 -9
- package/dist/watcher.js.map +1 -1
- package/dist/websocket.d.ts +16 -2
- package/dist/websocket.d.ts.map +1 -1
- package/dist/websocket.js +758 -117
- package/dist/websocket.js.map +1 -1
- package/dist/work-group-manager.d.ts +69 -0
- package/dist/work-group-manager.d.ts.map +1 -0
- package/dist/work-group-manager.js +610 -0
- package/dist/work-group-manager.js.map +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1,272 @@
|
|
|
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 __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.NotificationStore = void 0;
|
|
37
|
+
const fs = __importStar(require("fs"));
|
|
38
|
+
const path = __importStar(require("path"));
|
|
39
|
+
const os = __importStar(require("os"));
|
|
40
|
+
const uuid_1 = require("uuid");
|
|
41
|
+
const types_1 = require("./types");
|
|
42
|
+
const COMPANION_DIR = path.join(os.homedir(), '.companion');
|
|
43
|
+
const STATE_FILE = path.join(COMPANION_DIR, 'notification-state.json');
|
|
44
|
+
const HISTORY_FILE = path.join(COMPANION_DIR, 'notification-history.json');
|
|
45
|
+
const MAX_HISTORY = 500;
|
|
46
|
+
const SAVE_DEBOUNCE_MS = 2000;
|
|
47
|
+
class NotificationStore {
|
|
48
|
+
escalation = { ...types_1.DEFAULT_ESCALATION_CONFIG };
|
|
49
|
+
devices = new Map();
|
|
50
|
+
mutedSessions = new Set();
|
|
51
|
+
history = [];
|
|
52
|
+
saveTimer = null;
|
|
53
|
+
historySaveTimer = null;
|
|
54
|
+
constructor() {
|
|
55
|
+
this.ensureDir();
|
|
56
|
+
this.load();
|
|
57
|
+
}
|
|
58
|
+
ensureDir() {
|
|
59
|
+
if (!fs.existsSync(COMPANION_DIR)) {
|
|
60
|
+
fs.mkdirSync(COMPANION_DIR, { recursive: true });
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
load() {
|
|
64
|
+
// Load state
|
|
65
|
+
try {
|
|
66
|
+
if (fs.existsSync(STATE_FILE)) {
|
|
67
|
+
const content = fs.readFileSync(STATE_FILE, 'utf-8');
|
|
68
|
+
const raw = JSON.parse(content);
|
|
69
|
+
// Migration: detect old format (has `rules` array)
|
|
70
|
+
if (raw.rules && Array.isArray(raw.rules)) {
|
|
71
|
+
console.log('NotificationStore: Migrating from old rules-based format');
|
|
72
|
+
// Preserve devices and mutedSessions, create default escalation config
|
|
73
|
+
for (const device of raw.devices || []) {
|
|
74
|
+
this.devices.set(device.deviceId, device);
|
|
75
|
+
}
|
|
76
|
+
for (const sessionId of raw.mutedSessions || []) {
|
|
77
|
+
this.mutedSessions.add(sessionId);
|
|
78
|
+
}
|
|
79
|
+
this.escalation = { ...types_1.DEFAULT_ESCALATION_CONFIG };
|
|
80
|
+
// Save in new format immediately
|
|
81
|
+
this.saveState();
|
|
82
|
+
}
|
|
83
|
+
else {
|
|
84
|
+
// New format
|
|
85
|
+
const state = raw;
|
|
86
|
+
this.escalation = { ...types_1.DEFAULT_ESCALATION_CONFIG, ...state.escalation };
|
|
87
|
+
for (const device of state.devices || []) {
|
|
88
|
+
this.devices.set(device.deviceId, device);
|
|
89
|
+
}
|
|
90
|
+
for (const sessionId of state.mutedSessions || []) {
|
|
91
|
+
this.mutedSessions.add(sessionId);
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
console.log(`NotificationStore: Loaded ${this.devices.size} devices, ${this.mutedSessions.size} muted sessions`);
|
|
95
|
+
}
|
|
96
|
+
else {
|
|
97
|
+
console.log('NotificationStore: First startup, using default escalation config');
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
catch (err) {
|
|
101
|
+
console.error('NotificationStore: Failed to load state:', err);
|
|
102
|
+
}
|
|
103
|
+
// Load history
|
|
104
|
+
try {
|
|
105
|
+
if (fs.existsSync(HISTORY_FILE)) {
|
|
106
|
+
const content = fs.readFileSync(HISTORY_FILE, 'utf-8');
|
|
107
|
+
const rawHistory = JSON.parse(content);
|
|
108
|
+
// Migration: old entries may have ruleName/ruleId/devicesSent/devicesSkipped
|
|
109
|
+
// Convert them to the new format
|
|
110
|
+
this.history = rawHistory.map((entry) => {
|
|
111
|
+
if ('tier' in entry) {
|
|
112
|
+
return entry;
|
|
113
|
+
}
|
|
114
|
+
// Migrate old entry
|
|
115
|
+
return {
|
|
116
|
+
id: entry.id || (0, uuid_1.v4)(),
|
|
117
|
+
timestamp: entry.timestamp || Date.now(),
|
|
118
|
+
eventType: entry.eventType || 'waiting_for_input',
|
|
119
|
+
sessionId: entry.sessionId,
|
|
120
|
+
sessionName: entry.sessionName,
|
|
121
|
+
preview: entry.preview || '',
|
|
122
|
+
tier: 'push',
|
|
123
|
+
acknowledged: false,
|
|
124
|
+
};
|
|
125
|
+
});
|
|
126
|
+
console.log(`NotificationStore: Loaded ${this.history.length} history entries`);
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
catch (err) {
|
|
130
|
+
console.error('NotificationStore: Failed to load history:', err);
|
|
131
|
+
this.history = [];
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
scheduleSave() {
|
|
135
|
+
if (this.saveTimer)
|
|
136
|
+
return;
|
|
137
|
+
this.saveTimer = setTimeout(() => {
|
|
138
|
+
this.saveTimer = null;
|
|
139
|
+
this.saveState();
|
|
140
|
+
}, SAVE_DEBOUNCE_MS);
|
|
141
|
+
}
|
|
142
|
+
scheduleHistorySave() {
|
|
143
|
+
if (this.historySaveTimer)
|
|
144
|
+
return;
|
|
145
|
+
this.historySaveTimer = setTimeout(() => {
|
|
146
|
+
this.historySaveTimer = null;
|
|
147
|
+
this.saveHistory();
|
|
148
|
+
}, SAVE_DEBOUNCE_MS);
|
|
149
|
+
}
|
|
150
|
+
saveState() {
|
|
151
|
+
try {
|
|
152
|
+
const state = {
|
|
153
|
+
escalation: this.escalation,
|
|
154
|
+
devices: Array.from(this.devices.values()),
|
|
155
|
+
mutedSessions: Array.from(this.mutedSessions),
|
|
156
|
+
};
|
|
157
|
+
fs.writeFileSync(STATE_FILE, JSON.stringify(state, null, 2));
|
|
158
|
+
}
|
|
159
|
+
catch (err) {
|
|
160
|
+
console.error('NotificationStore: Failed to save state:', err);
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
saveHistory() {
|
|
164
|
+
try {
|
|
165
|
+
fs.writeFileSync(HISTORY_FILE, JSON.stringify(this.history, null, 2));
|
|
166
|
+
}
|
|
167
|
+
catch (err) {
|
|
168
|
+
console.error('NotificationStore: Failed to save history:', err);
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
// Escalation config methods
|
|
172
|
+
getEscalation() {
|
|
173
|
+
return { ...this.escalation };
|
|
174
|
+
}
|
|
175
|
+
setEscalation(config) {
|
|
176
|
+
if (config.events !== undefined) {
|
|
177
|
+
this.escalation.events = { ...this.escalation.events, ...config.events };
|
|
178
|
+
}
|
|
179
|
+
if (config.pushDelaySeconds !== undefined) {
|
|
180
|
+
this.escalation.pushDelaySeconds = config.pushDelaySeconds;
|
|
181
|
+
}
|
|
182
|
+
if (config.rateLimitSeconds !== undefined) {
|
|
183
|
+
this.escalation.rateLimitSeconds = config.rateLimitSeconds;
|
|
184
|
+
}
|
|
185
|
+
if (config.quietHours !== undefined) {
|
|
186
|
+
this.escalation.quietHours = { ...this.escalation.quietHours, ...config.quietHours };
|
|
187
|
+
}
|
|
188
|
+
this.scheduleSave();
|
|
189
|
+
return this.getEscalation();
|
|
190
|
+
}
|
|
191
|
+
// Device methods
|
|
192
|
+
getDevices() {
|
|
193
|
+
return Array.from(this.devices.values());
|
|
194
|
+
}
|
|
195
|
+
getDevice(deviceId) {
|
|
196
|
+
return this.devices.get(deviceId);
|
|
197
|
+
}
|
|
198
|
+
setDevice(device) {
|
|
199
|
+
this.devices.set(device.deviceId, device);
|
|
200
|
+
this.scheduleSave();
|
|
201
|
+
}
|
|
202
|
+
removeDevice(deviceId) {
|
|
203
|
+
const existed = this.devices.delete(deviceId);
|
|
204
|
+
if (existed)
|
|
205
|
+
this.scheduleSave();
|
|
206
|
+
return existed;
|
|
207
|
+
}
|
|
208
|
+
updateDeviceLastSeen(deviceId) {
|
|
209
|
+
const device = this.devices.get(deviceId);
|
|
210
|
+
if (device) {
|
|
211
|
+
device.lastSeen = Date.now();
|
|
212
|
+
// Don't schedule save for lastSeen updates (too frequent)
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
getDeviceCount() {
|
|
216
|
+
return this.devices.size;
|
|
217
|
+
}
|
|
218
|
+
// Muted session methods
|
|
219
|
+
getMutedSessions() {
|
|
220
|
+
return Array.from(this.mutedSessions);
|
|
221
|
+
}
|
|
222
|
+
isSessionMuted(sessionId) {
|
|
223
|
+
return this.mutedSessions.has(sessionId);
|
|
224
|
+
}
|
|
225
|
+
setSessionMuted(sessionId, muted) {
|
|
226
|
+
if (muted) {
|
|
227
|
+
this.mutedSessions.add(sessionId);
|
|
228
|
+
}
|
|
229
|
+
else {
|
|
230
|
+
this.mutedSessions.delete(sessionId);
|
|
231
|
+
}
|
|
232
|
+
this.scheduleSave();
|
|
233
|
+
}
|
|
234
|
+
// History methods
|
|
235
|
+
getHistory(limit) {
|
|
236
|
+
const total = this.history.length;
|
|
237
|
+
const entries = limit ? this.history.slice(-limit).reverse() : [...this.history].reverse();
|
|
238
|
+
return { entries, total };
|
|
239
|
+
}
|
|
240
|
+
addHistoryEntry(entry) {
|
|
241
|
+
const full = {
|
|
242
|
+
...entry,
|
|
243
|
+
id: (0, uuid_1.v4)(),
|
|
244
|
+
timestamp: Date.now(),
|
|
245
|
+
};
|
|
246
|
+
this.history.push(full);
|
|
247
|
+
if (this.history.length > MAX_HISTORY) {
|
|
248
|
+
this.history = this.history.slice(-MAX_HISTORY);
|
|
249
|
+
}
|
|
250
|
+
this.scheduleHistorySave();
|
|
251
|
+
return full;
|
|
252
|
+
}
|
|
253
|
+
clearHistory() {
|
|
254
|
+
this.history = [];
|
|
255
|
+
this.scheduleHistorySave();
|
|
256
|
+
}
|
|
257
|
+
// Flush pending saves (for shutdown)
|
|
258
|
+
flush() {
|
|
259
|
+
if (this.saveTimer) {
|
|
260
|
+
clearTimeout(this.saveTimer);
|
|
261
|
+
this.saveTimer = null;
|
|
262
|
+
this.saveState();
|
|
263
|
+
}
|
|
264
|
+
if (this.historySaveTimer) {
|
|
265
|
+
clearTimeout(this.historySaveTimer);
|
|
266
|
+
this.historySaveTimer = null;
|
|
267
|
+
this.saveHistory();
|
|
268
|
+
}
|
|
269
|
+
}
|
|
270
|
+
}
|
|
271
|
+
exports.NotificationStore = NotificationStore;
|
|
272
|
+
//# sourceMappingURL=notification-store.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"notification-store.js","sourceRoot":"","sources":["../src/notification-store.ts"],"names":[],"mappings":"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"}
|
package/dist/parser.d.ts
CHANGED
|
@@ -7,6 +7,18 @@ export { TaskItem } from './types';
|
|
|
7
7
|
*/
|
|
8
8
|
export declare function detectCurrentActivityFast(filePath: string): string | undefined;
|
|
9
9
|
export declare function parseConversationFile(filePath: string, limit?: number, preReadContent?: string): ConversationMessage[];
|
|
10
|
+
/**
|
|
11
|
+
* Parse a chain of conversation files for cross-session infinite scroll.
|
|
12
|
+
* Files are ordered oldest-first. Pagination counts from the END of the
|
|
13
|
+
* newest (last) file backwards through older files.
|
|
14
|
+
*
|
|
15
|
+
* Returns { highlights, total, hasMore } matching the get_highlights contract.
|
|
16
|
+
*/
|
|
17
|
+
export declare function parseConversationChain(files: string[], limit: number, offset: number): {
|
|
18
|
+
highlights: ConversationHighlight[];
|
|
19
|
+
total: number;
|
|
20
|
+
hasMore: boolean;
|
|
21
|
+
};
|
|
10
22
|
export declare function extractHighlights(messages: ConversationMessage[]): ConversationHighlight[];
|
|
11
23
|
export declare function detectWaitingForInput(messages: ConversationMessage[]): boolean;
|
|
12
24
|
export declare function detectIdle(messages: ConversationMessage[]): boolean;
|
|
@@ -21,7 +33,9 @@ export declare function detectCurrentActivity(messages: ConversationMessage[]):
|
|
|
21
33
|
export declare function getRecentActivity(messages: ConversationMessage[], limit?: number): ActivityDetail[];
|
|
22
34
|
export declare function getSessionStatus(conversationPath: string, isProcessRunning: boolean): SessionStatus;
|
|
23
35
|
/**
|
|
24
|
-
* Get list of pending tools that need approval from the last message
|
|
36
|
+
* Get list of pending tools that need approval from the last message.
|
|
37
|
+
* Only returns tools that actually require user approval (Bash, Write, Edit, etc.)
|
|
38
|
+
* Excludes Task (runs in background), AskUserQuestion (choice prompts, not tool approval).
|
|
25
39
|
*/
|
|
26
40
|
export declare function getPendingApprovalTools(messages: ConversationMessage[]): string[];
|
|
27
41
|
/**
|
package/dist/parser.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parser.d.ts","sourceRoot":"","sources":["../src/parser.ts"],"names":[],"mappings":"AACA,OAAO,
|
|
1
|
+
{"version":3,"file":"parser.d.ts","sourceRoot":"","sources":["../src/parser.ts"],"names":[],"mappings":"AACA,OAAO,EACL,mBAAmB,EACnB,qBAAqB,EAErB,aAAa,EAGb,YAAY,EACZ,eAAe,EACf,QAAQ,EACT,MAAM,SAAS,CAAC;AAIjB,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAgDnC;;;;GAIG;AACH,wBAAgB,yBAAyB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CA0F9E;AAED,wBAAgB,qBAAqB,CACnC,QAAQ,EAAE,MAAM,EAChB,KAAK,GAAE,MAAqB,EAC5B,cAAc,CAAC,EAAE,MAAM,GACtB,mBAAmB,EAAE,CAsEvB;AAuID;;;;;;GAMG;AACH,wBAAgB,sBAAsB,CACpC,KAAK,EAAE,MAAM,EAAE,EACf,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,GACb;IAAE,UAAU,EAAE,qBAAqB,EAAE,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,OAAO,CAAA;CAAE,CAgD1E;AAED,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,mBAAmB,EAAE,GAAG,qBAAqB,EAAE,CAuG1F;AAED,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,mBAAmB,EAAE,GAAG,OAAO,CAgC9E;AAGD,wBAAgB,UAAU,CAAC,QAAQ,EAAE,mBAAmB,EAAE,GAAG,OAAO,CAmBnE;AAED,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,mBAAmB,EAAE,GAAG,MAAM,GAAG,SAAS,CAsDzF;AAED,wBAAgB,iBAAiB,CAC/B,QAAQ,EAAE,mBAAmB,EAAE,EAC/B,KAAK,GAAE,MAAU,GAChB,cAAc,EAAE,CAsClB;AAED,wBAAgB,gBAAgB,CAC9B,gBAAgB,EAAE,MAAM,EACxB,gBAAgB,EAAE,OAAO,GACxB,aAAa,CAWf;AAED;;;;GAIG;AACH,wBAAgB,uBAAuB,CAAC,QAAQ,EAAE,mBAAmB,EAAE,GAAG,MAAM,EAAE,CAWjF;AAmBD;;;GAGG;AACH,wBAAgB,gBAAgB,CAC9B,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,MAAM,EACnB,WAAW,EAAE,MAAM,EACnB,eAAe,GAAE,MAAU,EAC3B,cAAc,CAAC,EAAE,MAAM,GACtB;IAAE,KAAK,EAAE,eAAe,GAAG,IAAI,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CAgCrD;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,YAAY,CA+DxF;AAsBD;;GAEG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,QAAQ,EAAE,CAuIxD"}
|