@diggerhq/anyware 0.7.37 → 0.7.40
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/api/session.d.ts +1 -7
- package/dist/api/session.d.ts.map +1 -1
- package/dist/api/session.js +2 -11
- package/dist/api/session.js.map +1 -1
- package/dist/api/wsClient.d.ts +9 -0
- package/dist/api/wsClient.d.ts.map +1 -1
- package/dist/api/wsClient.js +34 -9
- package/dist/api/wsClient.js.map +1 -1
- package/dist/claude/terminalRenderer.d.ts +1 -1
- package/dist/claude/terminalRenderer.d.ts.map +1 -1
- package/dist/claude/terminalRenderer.js +50 -33
- package/dist/claude/terminalRenderer.js.map +1 -1
- package/dist/server/index.d.ts.map +1 -1
- package/dist/server/index.js +54 -1
- package/dist/server/index.js.map +1 -1
- package/dist/server/sessionManager.d.ts +3 -1
- package/dist/server/sessionManager.d.ts.map +1 -1
- package/dist/server/sessionManager.js +213 -25
- package/dist/server/sessionManager.js.map +1 -1
- package/package.json +3 -2
- package/dist/claude/sdk/query.d.ts +0 -71
- package/dist/claude/sdk/query.d.ts.map +0 -1
- package/dist/claude/sdk/query.js +0 -379
- package/dist/claude/sdk/query.js.map +0 -1
- package/dist/claude/sdk/stream.d.ts +0 -28
- package/dist/claude/sdk/stream.d.ts.map +0 -1
- package/dist/claude/sdk/stream.js +0 -91
- package/dist/claude/sdk/stream.js.map +0 -1
- package/dist/claude/sdk/types.d.ts +0 -179
- package/dist/claude/sdk/types.d.ts.map +0 -1
- package/dist/claude/sdk/types.js +0 -13
- package/dist/claude/sdk/types.js.map +0 -1
- package/dist/utils/claudeHistory.d.ts +0 -33
- package/dist/utils/claudeHistory.d.ts.map +0 -1
- package/dist/utils/claudeHistory.js +0 -170
- package/dist/utils/claudeHistory.js.map +0 -1
|
@@ -1,5 +1,49 @@
|
|
|
1
|
-
import { query } from '
|
|
2
|
-
|
|
1
|
+
import { query } from '@anthropic-ai/claude-agent-sdk';
|
|
2
|
+
/**
|
|
3
|
+
* Async stream class for queuing messages
|
|
4
|
+
*/
|
|
5
|
+
class MessageStream {
|
|
6
|
+
queue = [];
|
|
7
|
+
resolvers = [];
|
|
8
|
+
closed = false;
|
|
9
|
+
enqueue(message) {
|
|
10
|
+
if (this.closed)
|
|
11
|
+
return;
|
|
12
|
+
if (this.resolvers.length > 0) {
|
|
13
|
+
const resolve = this.resolvers.shift();
|
|
14
|
+
resolve({ value: message, done: false });
|
|
15
|
+
}
|
|
16
|
+
else {
|
|
17
|
+
this.queue.push(message);
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
close() {
|
|
21
|
+
this.closed = true;
|
|
22
|
+
// Resolve any pending reads with done
|
|
23
|
+
for (const resolve of this.resolvers) {
|
|
24
|
+
resolve({ value: undefined, done: true });
|
|
25
|
+
}
|
|
26
|
+
this.resolvers = [];
|
|
27
|
+
}
|
|
28
|
+
async *[Symbol.asyncIterator]() {
|
|
29
|
+
while (true) {
|
|
30
|
+
if (this.queue.length > 0) {
|
|
31
|
+
yield this.queue.shift();
|
|
32
|
+
}
|
|
33
|
+
else if (this.closed) {
|
|
34
|
+
return;
|
|
35
|
+
}
|
|
36
|
+
else {
|
|
37
|
+
const message = await new Promise((resolve) => {
|
|
38
|
+
this.resolvers.push(resolve);
|
|
39
|
+
});
|
|
40
|
+
if (message.done)
|
|
41
|
+
return;
|
|
42
|
+
yield message.value;
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
}
|
|
3
47
|
export class SessionManager {
|
|
4
48
|
wsClient;
|
|
5
49
|
sessions = new Map();
|
|
@@ -15,12 +59,14 @@ export class SessionManager {
|
|
|
15
59
|
// Use session-specific directory or fall back to server default
|
|
16
60
|
const sessionCwd = opts.cwd || this.defaultCwd;
|
|
17
61
|
const abortController = new AbortController();
|
|
18
|
-
const
|
|
62
|
+
const messageStream = new MessageStream();
|
|
19
63
|
const session = {
|
|
20
64
|
sessionId: opts.sessionId,
|
|
21
65
|
abortController,
|
|
22
|
-
|
|
66
|
+
messageStream,
|
|
23
67
|
status: 'active',
|
|
68
|
+
alwaysAllowedTools: new Set(),
|
|
69
|
+
agentStack: [],
|
|
24
70
|
};
|
|
25
71
|
this.sessions.set(opts.sessionId, session);
|
|
26
72
|
// Start SDK session in background with session-specific directory
|
|
@@ -31,32 +77,136 @@ export class SessionManager {
|
|
|
31
77
|
}
|
|
32
78
|
async runSDKSession(session, cwd) {
|
|
33
79
|
const queryInstance = query({
|
|
34
|
-
prompt: session.
|
|
80
|
+
prompt: session.messageStream,
|
|
35
81
|
options: {
|
|
36
82
|
cwd,
|
|
37
|
-
|
|
83
|
+
abortController: session.abortController,
|
|
38
84
|
permissionMode: 'default',
|
|
39
|
-
|
|
40
|
-
|
|
85
|
+
// Use extraArgs to pass custom session ID for local persistence
|
|
86
|
+
extraArgs: {
|
|
87
|
+
'session-id': session.sessionId,
|
|
88
|
+
},
|
|
89
|
+
hooks: {
|
|
90
|
+
SubagentStart: [{
|
|
91
|
+
hooks: [async (input, _toolUseID, { signal }) => {
|
|
92
|
+
if (input.hook_event_name !== 'SubagentStart')
|
|
93
|
+
return { continue: true };
|
|
94
|
+
session.currentAgentId = input.agent_id;
|
|
95
|
+
session.currentAgentType = input.agent_type;
|
|
96
|
+
session.agentStack.push({
|
|
97
|
+
agentId: input.agent_id,
|
|
98
|
+
agentType: input.agent_type,
|
|
99
|
+
});
|
|
100
|
+
console.log(`[SessionManager] Subagent started: ${input.agent_type} (${input.agent_id})`);
|
|
101
|
+
return { continue: true };
|
|
102
|
+
}]
|
|
103
|
+
}],
|
|
104
|
+
SubagentStop: [{
|
|
105
|
+
hooks: [async (input, _toolUseID, { signal }) => {
|
|
106
|
+
if (input.hook_event_name !== 'SubagentStop')
|
|
107
|
+
return { continue: true };
|
|
108
|
+
session.agentStack.pop();
|
|
109
|
+
const parent = session.agentStack[session.agentStack.length - 1];
|
|
110
|
+
session.currentAgentId = parent?.agentId;
|
|
111
|
+
session.currentAgentType = parent?.agentType;
|
|
112
|
+
console.log(`[SessionManager] Subagent stopped: ${input.agent_id}`);
|
|
113
|
+
return { continue: true };
|
|
114
|
+
}]
|
|
115
|
+
}],
|
|
116
|
+
PostToolUseFailure: [{
|
|
117
|
+
hooks: [async (input, _toolUseID, { signal }) => {
|
|
118
|
+
if (input.hook_event_name !== 'PostToolUseFailure')
|
|
119
|
+
return { continue: true };
|
|
120
|
+
// Clean up stack if Task tool fails
|
|
121
|
+
if (input.tool_name === 'Task' && session.agentStack.length > 0) {
|
|
122
|
+
session.agentStack.pop();
|
|
123
|
+
const parent = session.agentStack[session.agentStack.length - 1];
|
|
124
|
+
session.currentAgentId = parent?.agentId;
|
|
125
|
+
session.currentAgentType = parent?.agentType;
|
|
126
|
+
console.log(`[SessionManager] Agent stack cleaned up after Task tool failure`);
|
|
127
|
+
}
|
|
128
|
+
return { continue: true };
|
|
129
|
+
}]
|
|
130
|
+
}],
|
|
131
|
+
},
|
|
132
|
+
canUseTool: async (toolName, input, { signal }) => {
|
|
133
|
+
console.log(`[SessionManager] canUseTool called: tool=${toolName}, sessionId=${session.sessionId}`);
|
|
134
|
+
// Check if tool is already "always allowed" for this session
|
|
135
|
+
// AskUserQuestion must NEVER be auto-approved
|
|
136
|
+
if (toolName !== 'AskUserQuestion' && session.alwaysAllowedTools.has(toolName)) {
|
|
137
|
+
console.log(`[SessionManager] Tool ${toolName} is always allowed - auto-approving`);
|
|
138
|
+
return { behavior: 'allow', updatedInput: input };
|
|
139
|
+
}
|
|
140
|
+
// Tool not in cache - request permission from user
|
|
141
|
+
console.log(`[SessionManager] Sending permission request to cloud for ${toolName}`);
|
|
41
142
|
await this.wsClient.sendPermissionRequest(session.sessionId, toolName, input);
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
143
|
+
console.log(`[SessionManager] Permission request sent, waiting for response...`);
|
|
144
|
+
// Start heartbeat to keep connection alive during wait
|
|
145
|
+
this.startPermissionHeartbeat(session);
|
|
146
|
+
try {
|
|
147
|
+
// Wait for web UI response
|
|
148
|
+
session.status = 'waiting_permission';
|
|
149
|
+
const response = await new Promise((resolve) => {
|
|
150
|
+
session.pendingPermission = { toolName, input, resolve };
|
|
151
|
+
console.log(`[SessionManager] Pending permission set for ${toolName}, waiting...`);
|
|
152
|
+
});
|
|
153
|
+
console.log(`[SessionManager] Permission response received: ${response} for ${toolName}`);
|
|
154
|
+
session.status = 'active';
|
|
155
|
+
session.pendingPermission = undefined;
|
|
156
|
+
// Handle 'always' response by updating cache
|
|
157
|
+
if (response === 'always') {
|
|
158
|
+
// Never persist "always allow" for AskUserQuestion (safety check)
|
|
159
|
+
if (toolName === 'AskUserQuestion') {
|
|
160
|
+
console.log(`[SessionManager] WARNING: Ignoring 'always' for AskUserQuestion`);
|
|
161
|
+
}
|
|
162
|
+
else {
|
|
163
|
+
session.alwaysAllowedTools.add(toolName);
|
|
164
|
+
console.log(`[SessionManager] Tool ${toolName} marked as always allowed for this session`);
|
|
165
|
+
}
|
|
166
|
+
// Treat 'always' as 'yes' for this specific request
|
|
167
|
+
return { behavior: 'allow', updatedInput: input };
|
|
168
|
+
}
|
|
169
|
+
// Return permission result for 'yes' or 'no'
|
|
170
|
+
return response === 'yes'
|
|
171
|
+
? { behavior: 'allow', updatedInput: input }
|
|
172
|
+
: { behavior: 'deny', message: 'User denied permission' };
|
|
173
|
+
}
|
|
174
|
+
finally {
|
|
175
|
+
// Always stop heartbeat when permission resolved (success or error)
|
|
176
|
+
this.stopPermissionHeartbeat(session);
|
|
177
|
+
}
|
|
51
178
|
},
|
|
52
179
|
},
|
|
53
180
|
});
|
|
54
|
-
//
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
session.
|
|
181
|
+
// Add stack depth safety validator
|
|
182
|
+
const stackValidator = setInterval(() => {
|
|
183
|
+
if (session.agentStack.length > 10) {
|
|
184
|
+
console.warn('[SessionManager] Agent stack depth exceeded, resetting');
|
|
185
|
+
session.agentStack = [];
|
|
186
|
+
session.currentAgentId = undefined;
|
|
187
|
+
session.currentAgentType = undefined;
|
|
59
188
|
}
|
|
189
|
+
}, 30000);
|
|
190
|
+
try {
|
|
191
|
+
// Forward all SDK events to cloud with subagent metadata
|
|
192
|
+
for await (const message of queryInstance) {
|
|
193
|
+
// Enrich message with current subagent context
|
|
194
|
+
const enrichedMessage = {
|
|
195
|
+
...message,
|
|
196
|
+
agentId: session.currentAgentId,
|
|
197
|
+
agentType: session.currentAgentType,
|
|
198
|
+
isSubagent: !!session.currentAgentId,
|
|
199
|
+
};
|
|
200
|
+
await this.wsClient.sendClaudeEvent(enrichedMessage, session.sessionId);
|
|
201
|
+
// Capture claude session ID from init message
|
|
202
|
+
if (message.type === 'system' && 'subtype' in message && message.subtype === 'init') {
|
|
203
|
+
session.claudeSessionId = message.session_id;
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
finally {
|
|
208
|
+
// Clean up stack validator on session end
|
|
209
|
+
clearInterval(stackValidator);
|
|
60
210
|
}
|
|
61
211
|
}
|
|
62
212
|
sendUserMessage(sessionId, message, images) {
|
|
@@ -85,15 +235,50 @@ export class SessionManager {
|
|
|
85
235
|
role: 'user',
|
|
86
236
|
content,
|
|
87
237
|
},
|
|
238
|
+
parent_tool_use_id: null,
|
|
239
|
+
session_id: session.claudeSessionId || sessionId,
|
|
88
240
|
};
|
|
89
|
-
session.
|
|
241
|
+
session.messageStream.enqueue(userMessage);
|
|
90
242
|
}
|
|
91
243
|
sendPermissionResponse(sessionId, response) {
|
|
244
|
+
console.log(`[SessionManager] sendPermissionResponse called: sessionId=${sessionId}, response=${response}`);
|
|
92
245
|
const session = this.sessions.get(sessionId);
|
|
93
|
-
if (!session
|
|
246
|
+
if (!session) {
|
|
247
|
+
console.error(`[SessionManager] Session not found: ${sessionId}`);
|
|
248
|
+
throw new Error('Session not found');
|
|
249
|
+
}
|
|
250
|
+
if (!session.pendingPermission) {
|
|
251
|
+
console.error(`[SessionManager] No pending permission for session: ${sessionId}`);
|
|
94
252
|
throw new Error('No pending permission');
|
|
253
|
+
}
|
|
254
|
+
console.log(`[SessionManager] Resolving pending permission for ${session.pendingPermission.toolName} with ${response}`);
|
|
95
255
|
session.pendingPermission.resolve(response);
|
|
96
|
-
|
|
256
|
+
console.log(`[SessionManager] Permission resolved successfully`);
|
|
257
|
+
}
|
|
258
|
+
startPermissionHeartbeat(session) {
|
|
259
|
+
// Clear any existing heartbeat first
|
|
260
|
+
this.stopPermissionHeartbeat(session);
|
|
261
|
+
console.log(`[SessionManager] Starting permission heartbeat for session ${session.sessionId}`);
|
|
262
|
+
// Send ping every 30 seconds to keep connection alive
|
|
263
|
+
session.heartbeatInterval = setInterval(() => {
|
|
264
|
+
console.log(`[SessionManager] Sending heartbeat ping for session ${session.sessionId}`);
|
|
265
|
+
try {
|
|
266
|
+
this.wsClient.send({
|
|
267
|
+
type: 'ping',
|
|
268
|
+
payload: { sessionId: session.sessionId }
|
|
269
|
+
});
|
|
270
|
+
}
|
|
271
|
+
catch (error) {
|
|
272
|
+
console.error(`[SessionManager] Heartbeat ping failed for ${session.sessionId}:`, error);
|
|
273
|
+
}
|
|
274
|
+
}, 30000); // 30 seconds matches existing ping pattern
|
|
275
|
+
}
|
|
276
|
+
stopPermissionHeartbeat(session) {
|
|
277
|
+
if (session.heartbeatInterval) {
|
|
278
|
+
console.log(`[SessionManager] Stopping permission heartbeat for session ${session.sessionId}`);
|
|
279
|
+
clearInterval(session.heartbeatInterval);
|
|
280
|
+
session.heartbeatInterval = undefined;
|
|
281
|
+
}
|
|
97
282
|
}
|
|
98
283
|
async stopSession(sessionId) {
|
|
99
284
|
const session = this.sessions.get(sessionId);
|
|
@@ -101,7 +286,10 @@ export class SessionManager {
|
|
|
101
286
|
return;
|
|
102
287
|
session.status = 'stopping';
|
|
103
288
|
session.abortController.abort();
|
|
289
|
+
session.messageStream.close();
|
|
104
290
|
this.sessions.delete(sessionId);
|
|
291
|
+
// Clean up heartbeat if still running
|
|
292
|
+
this.stopPermissionHeartbeat(session);
|
|
105
293
|
}
|
|
106
294
|
getStats() {
|
|
107
295
|
return {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sessionManager.js","sourceRoot":"","sources":["../../src/server/sessionManager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"sessionManager.js","sourceRoot":"","sources":["../../src/server/sessionManager.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@diggerhq/anyware",
|
|
3
|
-
"version": "0.7.
|
|
3
|
+
"version": "0.7.40",
|
|
4
4
|
"description": "Anyware CLI - Claude Code with remote control",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/main.js",
|
|
@@ -18,13 +18,14 @@
|
|
|
18
18
|
"typecheck": "tsc --noEmit"
|
|
19
19
|
},
|
|
20
20
|
"dependencies": {
|
|
21
|
+
"@anthropic-ai/claude-agent-sdk": "^0.2.14",
|
|
21
22
|
"chalk": "^5.6.2",
|
|
22
23
|
"chokidar": "^4.0.0",
|
|
23
24
|
"commander": "^12.1.0",
|
|
24
25
|
"open": "^10.1.0",
|
|
25
26
|
"qrcode-terminal": "^0.12.0",
|
|
26
27
|
"ws": "^8.18.0",
|
|
27
|
-
"zod": "^3.
|
|
28
|
+
"zod": "^4.3.5"
|
|
28
29
|
},
|
|
29
30
|
"devDependencies": {
|
|
30
31
|
"@types/node": "^22.0.0",
|
|
@@ -1,71 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Query implementation for Claude Code SDK
|
|
3
|
-
* Handles spawning Claude process and managing message streams
|
|
4
|
-
*/
|
|
5
|
-
import type { Writable } from 'node:stream';
|
|
6
|
-
import { type QueryOptions, type QueryPrompt, type SDKMessage, type CanCallToolCallback } from './types.js';
|
|
7
|
-
/**
|
|
8
|
-
* Query class manages Claude Code process interaction
|
|
9
|
-
*/
|
|
10
|
-
export declare class Query implements AsyncIterableIterator<SDKMessage> {
|
|
11
|
-
private childStdin;
|
|
12
|
-
private childStdout;
|
|
13
|
-
private processExitPromise;
|
|
14
|
-
private pendingControlResponses;
|
|
15
|
-
private cancelControllers;
|
|
16
|
-
private sdkMessages;
|
|
17
|
-
private inputStream;
|
|
18
|
-
private canCallTool?;
|
|
19
|
-
constructor(childStdin: Writable | null, childStdout: NodeJS.ReadableStream, processExitPromise: Promise<void>, canCallTool?: CanCallToolCallback);
|
|
20
|
-
/**
|
|
21
|
-
* Set an error on the stream
|
|
22
|
-
*/
|
|
23
|
-
setError(error: Error): void;
|
|
24
|
-
/**
|
|
25
|
-
* AsyncIterableIterator implementation
|
|
26
|
-
*/
|
|
27
|
-
next(): Promise<IteratorResult<SDKMessage>>;
|
|
28
|
-
return(value?: unknown): Promise<IteratorResult<SDKMessage>>;
|
|
29
|
-
throw(e: Error): Promise<IteratorResult<SDKMessage>>;
|
|
30
|
-
[Symbol.asyncIterator](): AsyncIterableIterator<SDKMessage>;
|
|
31
|
-
/**
|
|
32
|
-
* Read messages from Claude process stdout
|
|
33
|
-
*/
|
|
34
|
-
private readMessages;
|
|
35
|
-
/**
|
|
36
|
-
* Async generator for SDK messages
|
|
37
|
-
*/
|
|
38
|
-
private readSdkMessages;
|
|
39
|
-
/**
|
|
40
|
-
* Send interrupt request to Claude
|
|
41
|
-
*/
|
|
42
|
-
interrupt(): Promise<void>;
|
|
43
|
-
/**
|
|
44
|
-
* Send control request to Claude process
|
|
45
|
-
*/
|
|
46
|
-
private request;
|
|
47
|
-
/**
|
|
48
|
-
* Handle incoming control requests for tool permissions
|
|
49
|
-
*/
|
|
50
|
-
private handleControlRequest;
|
|
51
|
-
/**
|
|
52
|
-
* Handle control cancel requests
|
|
53
|
-
*/
|
|
54
|
-
private handleControlCancelRequest;
|
|
55
|
-
/**
|
|
56
|
-
* Process control requests based on subtype
|
|
57
|
-
*/
|
|
58
|
-
private processControlRequest;
|
|
59
|
-
/**
|
|
60
|
-
* Cleanup method to abort all pending control requests
|
|
61
|
-
*/
|
|
62
|
-
private cleanupControllers;
|
|
63
|
-
}
|
|
64
|
-
/**
|
|
65
|
-
* Main query function to interact with Claude Code
|
|
66
|
-
*/
|
|
67
|
-
export declare function query(config: {
|
|
68
|
-
prompt: QueryPrompt;
|
|
69
|
-
options?: QueryOptions;
|
|
70
|
-
}): Query;
|
|
71
|
-
//# sourceMappingURL=query.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"query.d.ts","sourceRoot":"","sources":["../../../src/claude/sdk/query.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAOH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAE5C,OAAO,EACL,KAAK,YAAY,EACjB,KAAK,WAAW,EAChB,KAAK,UAAU,EAKf,KAAK,mBAAmB,EAMzB,MAAM,YAAY,CAAC;AA2CpB;;GAEG;AACH,qBAAa,KAAM,YAAW,qBAAqB,CAAC,UAAU,CAAC;IAQ3D,OAAO,CAAC,UAAU;IAClB,OAAO,CAAC,WAAW;IACnB,OAAO,CAAC,kBAAkB;IAT5B,OAAO,CAAC,uBAAuB,CAA6C;IAC5E,OAAO,CAAC,iBAAiB,CAAsC;IAC/D,OAAO,CAAC,WAAW,CAAoC;IACvD,OAAO,CAAC,WAAW,CAA4B;IAC/C,OAAO,CAAC,WAAW,CAAC,CAAsB;gBAGhC,UAAU,EAAE,QAAQ,GAAG,IAAI,EAC3B,WAAW,EAAE,MAAM,CAAC,cAAc,EAClC,kBAAkB,EAAE,OAAO,CAAC,IAAI,CAAC,EACzC,WAAW,CAAC,EAAE,mBAAmB;IAOnC;;OAEG;IACH,QAAQ,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI;IAI5B;;OAEG;IACH,IAAI,IAAI,OAAO,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC;IAI3C,MAAM,CAAC,KAAK,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC;IAO5D,KAAK,CAAC,CAAC,EAAE,KAAK,GAAG,OAAO,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC;IAOpD,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,qBAAqB,CAAC,UAAU,CAAC;IAI3D;;OAEG;YACW,YAAY;IA+C1B;;OAEG;YACY,eAAe;IAM9B;;OAEG;IACG,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC;IAQhC;;OAEG;IACH,OAAO,CAAC,OAAO;IAqBf;;OAEG;YACW,oBAAoB;IA+ClC;;OAEG;IACH,OAAO,CAAC,0BAA0B;IAQlC;;OAEG;YACW,qBAAqB;IAcnC;;OAEG;IACH,OAAO,CAAC,kBAAkB;CAM3B;AAED;;GAEG;AACH,wBAAgB,KAAK,CAAC,MAAM,EAAE;IAAE,MAAM,EAAE,WAAW,CAAC;IAAC,OAAO,CAAC,EAAE,YAAY,CAAA;CAAE,GAAG,KAAK,CAkIpF"}
|