@clawsignal/clawsignal 0.1.0 → 0.2.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/clawdbot.plugin.json +1 -1
- package/dist/index.d.ts +11 -36
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +94 -21
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/clawdbot.plugin.json
CHANGED
package/dist/index.d.ts
CHANGED
|
@@ -1,32 +1,19 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* ClawSignal Plugin for
|
|
2
|
+
* ClawSignal Plugin for Clawdbot
|
|
3
3
|
*
|
|
4
|
-
* Connects to ClawSignal's event stream and triggers the
|
|
5
|
-
* when new messages arrive.
|
|
4
|
+
* Connects to ClawSignal's event stream and triggers the Clawdbot agent
|
|
5
|
+
* when new messages arrive. Sends responses back via ClawSignal.
|
|
6
6
|
*/
|
|
7
|
-
interface
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
7
|
+
interface PluginLogger {
|
|
8
|
+
info: (msg: string, meta?: object) => void;
|
|
9
|
+
warn: (msg: string, meta?: object) => void;
|
|
10
|
+
error: (msg: string, meta?: object) => void;
|
|
11
|
+
debug: (msg: string, meta?: object) => void;
|
|
12
12
|
}
|
|
13
13
|
interface PluginApi {
|
|
14
|
-
config:
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
clawsignal?: {
|
|
18
|
-
enabled?: boolean;
|
|
19
|
-
config?: ClawSignalConfig;
|
|
20
|
-
};
|
|
21
|
-
};
|
|
22
|
-
};
|
|
23
|
-
};
|
|
24
|
-
logger: {
|
|
25
|
-
info: (msg: string, meta?: object) => void;
|
|
26
|
-
warn: (msg: string, meta?: object) => void;
|
|
27
|
-
error: (msg: string, meta?: object) => void;
|
|
28
|
-
debug: (msg: string, meta?: object) => void;
|
|
29
|
-
};
|
|
14
|
+
config: unknown;
|
|
15
|
+
logger: PluginLogger;
|
|
16
|
+
runtime: unknown;
|
|
30
17
|
registerService: (service: {
|
|
31
18
|
id: string;
|
|
32
19
|
start: () => void | Promise<void>;
|
|
@@ -42,18 +29,6 @@ interface PluginApi {
|
|
|
42
29
|
parameters: object;
|
|
43
30
|
handler: (params: unknown) => Promise<unknown>;
|
|
44
31
|
}) => void;
|
|
45
|
-
hooks: {
|
|
46
|
-
triggerAgent: (opts: {
|
|
47
|
-
message: string;
|
|
48
|
-
name?: string;
|
|
49
|
-
sessionKey?: string;
|
|
50
|
-
deliver?: boolean;
|
|
51
|
-
channel?: string;
|
|
52
|
-
to?: string;
|
|
53
|
-
}) => Promise<{
|
|
54
|
-
response?: string;
|
|
55
|
-
}>;
|
|
56
|
-
};
|
|
57
32
|
}
|
|
58
33
|
export default function register(api: PluginApi): void;
|
|
59
34
|
export {};
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAmBH,UAAU,YAAY;IACpB,IAAI,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IAC3C,IAAI,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IAC3C,KAAK,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IAC5C,KAAK,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;CAC7C;AAED,UAAU,SAAS;IACjB,MAAM,EAAE,OAAO,CAAC;IAChB,MAAM,EAAE,YAAY,CAAC;IACrB,OAAO,EAAE,OAAO,CAAC;IACjB,eAAe,EAAE,CAAC,OAAO,EAAE;QACzB,EAAE,EAAE,MAAM,CAAC;QACX,KAAK,EAAE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;QAClC,IAAI,EAAE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;KAClC,KAAK,IAAI,CAAC;IACX,qBAAqB,EAAE,CACrB,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,CAAC,GAAG,EAAE;QAAE,MAAM,EAAE,OAAO,CAAC;QAAC,OAAO,EAAE,CAAC,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,KAAK,IAAI,CAAA;KAAE,KAAK,IAAI,KAC1F,IAAI,CAAC;IACV,YAAY,EAAE,CAAC,IAAI,EAAE;QACnB,IAAI,EAAE,MAAM,CAAC;QACb,WAAW,EAAE,MAAM,CAAC;QACpB,UAAU,EAAE,MAAM,CAAC;QACnB,OAAO,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;KAChD,KAAK,IAAI,CAAC;CACZ;AAMD,MAAM,CAAC,OAAO,UAAU,QAAQ,CAAC,GAAG,EAAE,SAAS,QAwU9C"}
|
package/dist/index.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* ClawSignal Plugin for
|
|
2
|
+
* ClawSignal Plugin for Clawdbot
|
|
3
3
|
*
|
|
4
|
-
* Connects to ClawSignal's event stream and triggers the
|
|
5
|
-
* when new messages arrive.
|
|
4
|
+
* Connects to ClawSignal's event stream and triggers the Clawdbot agent
|
|
5
|
+
* when new messages arrive. Sends responses back via ClawSignal.
|
|
6
6
|
*/
|
|
7
7
|
import WebSocket from 'ws';
|
|
8
8
|
const DEFAULT_SERVER_URL = 'wss://clawsignal.com';
|
|
@@ -10,12 +10,18 @@ const RECONNECT_DELAY_MS = 5000;
|
|
|
10
10
|
const PING_INTERVAL_MS = 30000;
|
|
11
11
|
export default function register(api) {
|
|
12
12
|
const getConfig = () => {
|
|
13
|
-
const
|
|
13
|
+
const config = api.config;
|
|
14
|
+
const entry = config.plugins?.entries?.clawsignal;
|
|
14
15
|
if (!entry?.enabled || !entry?.config?.apiKey) {
|
|
15
16
|
return null;
|
|
16
17
|
}
|
|
17
18
|
return entry.config;
|
|
18
19
|
};
|
|
20
|
+
// Get gateway port from config
|
|
21
|
+
const getGatewayPort = () => {
|
|
22
|
+
const config = api.config;
|
|
23
|
+
return config.gateway?.port || 18789;
|
|
24
|
+
};
|
|
19
25
|
let ws = null;
|
|
20
26
|
let reconnectTimeout = null;
|
|
21
27
|
let pingInterval = null;
|
|
@@ -54,39 +60,107 @@ export default function register(api) {
|
|
|
54
60
|
return false;
|
|
55
61
|
}
|
|
56
62
|
};
|
|
63
|
+
// Trigger agent via local gateway RPC WebSocket
|
|
64
|
+
const triggerAgent = async (sessionKey, message) => {
|
|
65
|
+
return new Promise((resolve) => {
|
|
66
|
+
const port = getGatewayPort();
|
|
67
|
+
const gatewayWs = new WebSocket(`ws://127.0.0.1:${port}`);
|
|
68
|
+
let response = '';
|
|
69
|
+
let resolved = false;
|
|
70
|
+
const timeout = setTimeout(() => {
|
|
71
|
+
if (!resolved) {
|
|
72
|
+
resolved = true;
|
|
73
|
+
gatewayWs.close();
|
|
74
|
+
resolve(response || null);
|
|
75
|
+
}
|
|
76
|
+
}, 60000); // 60 second timeout
|
|
77
|
+
gatewayWs.on('open', () => {
|
|
78
|
+
// Send agent trigger request
|
|
79
|
+
gatewayWs.send(JSON.stringify({
|
|
80
|
+
method: 'agent',
|
|
81
|
+
params: {
|
|
82
|
+
message,
|
|
83
|
+
sessionKey,
|
|
84
|
+
stream: false,
|
|
85
|
+
}
|
|
86
|
+
}));
|
|
87
|
+
});
|
|
88
|
+
gatewayWs.on('message', (data) => {
|
|
89
|
+
try {
|
|
90
|
+
const msg = JSON.parse(data.toString());
|
|
91
|
+
if (msg.type === 'text' || msg.type === 'partial') {
|
|
92
|
+
response += msg.text || '';
|
|
93
|
+
}
|
|
94
|
+
else if (msg.type === 'final' || msg.type === 'end' || msg.ok !== undefined) {
|
|
95
|
+
// Final response
|
|
96
|
+
if (msg.response) {
|
|
97
|
+
response = msg.response;
|
|
98
|
+
}
|
|
99
|
+
if (!resolved) {
|
|
100
|
+
resolved = true;
|
|
101
|
+
clearTimeout(timeout);
|
|
102
|
+
gatewayWs.close();
|
|
103
|
+
resolve(response || null);
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
else if (msg.type === 'error') {
|
|
107
|
+
api.logger.error('Agent error', { error: msg.error });
|
|
108
|
+
if (!resolved) {
|
|
109
|
+
resolved = true;
|
|
110
|
+
clearTimeout(timeout);
|
|
111
|
+
gatewayWs.close();
|
|
112
|
+
resolve(null);
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
catch (err) {
|
|
117
|
+
// Ignore parse errors
|
|
118
|
+
}
|
|
119
|
+
});
|
|
120
|
+
gatewayWs.on('error', (err) => {
|
|
121
|
+
api.logger.error('Gateway WebSocket error', { error: err.message });
|
|
122
|
+
if (!resolved) {
|
|
123
|
+
resolved = true;
|
|
124
|
+
clearTimeout(timeout);
|
|
125
|
+
resolve(null);
|
|
126
|
+
}
|
|
127
|
+
});
|
|
128
|
+
gatewayWs.on('close', () => {
|
|
129
|
+
if (!resolved) {
|
|
130
|
+
resolved = true;
|
|
131
|
+
clearTimeout(timeout);
|
|
132
|
+
resolve(response || null);
|
|
133
|
+
}
|
|
134
|
+
});
|
|
135
|
+
});
|
|
136
|
+
};
|
|
57
137
|
const handleMessage = async (data) => {
|
|
58
|
-
const
|
|
59
|
-
if (!
|
|
138
|
+
const pluginConfig = getConfig();
|
|
139
|
+
if (!pluginConfig)
|
|
60
140
|
return;
|
|
61
141
|
if (data.type === 'ping') {
|
|
62
|
-
// Respond to server pings
|
|
63
142
|
ws?.send(JSON.stringify({ type: 'pong' }));
|
|
64
143
|
return;
|
|
65
144
|
}
|
|
66
145
|
if (data.type === 'connected') {
|
|
67
|
-
api.logger.info('ClawSignal connection established'
|
|
68
|
-
serverUrl: config.serverUrl || DEFAULT_SERVER_URL
|
|
69
|
-
});
|
|
146
|
+
api.logger.info('ClawSignal connection established');
|
|
70
147
|
return;
|
|
71
148
|
}
|
|
72
149
|
if (data.type === 'message' && data.from && data.message) {
|
|
73
|
-
const sessionPrefix =
|
|
150
|
+
const sessionPrefix = pluginConfig.sessionPrefix || 'clawsignal';
|
|
74
151
|
const sessionKey = `${sessionPrefix}:${data.from}`;
|
|
75
152
|
api.logger.info('Received ClawSignal message', {
|
|
76
153
|
from: data.from,
|
|
77
154
|
sessionKey
|
|
78
155
|
});
|
|
79
156
|
try {
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
name: 'ClawSignal',
|
|
84
|
-
sessionKey,
|
|
85
|
-
deliver: false, // We handle delivery ourselves
|
|
86
|
-
});
|
|
157
|
+
const formattedMessage = `[ClawSignal from ${data.from}]: ${data.message}`;
|
|
158
|
+
// Trigger agent and wait for response
|
|
159
|
+
const response = await triggerAgent(sessionKey, formattedMessage);
|
|
87
160
|
// Send response back via ClawSignal if enabled
|
|
88
|
-
if (
|
|
89
|
-
|
|
161
|
+
if (pluginConfig.autoReply !== false && response) {
|
|
162
|
+
api.logger.info('Sending response back via ClawSignal', { to: data.from });
|
|
163
|
+
await sendToClawSignal(data.from, response);
|
|
90
164
|
}
|
|
91
165
|
}
|
|
92
166
|
catch (err) {
|
|
@@ -113,7 +187,6 @@ export default function register(api) {
|
|
|
113
187
|
});
|
|
114
188
|
ws.on('open', () => {
|
|
115
189
|
api.logger.info('ClawSignal WebSocket connected');
|
|
116
|
-
// Start ping interval to keep connection alive
|
|
117
190
|
if (pingInterval)
|
|
118
191
|
clearInterval(pingInterval);
|
|
119
192
|
pingInterval = setInterval(() => {
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,SAAS,MAAM,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,SAAS,MAAM,IAAI,CAAC;AA6C3B,MAAM,kBAAkB,GAAG,sBAAsB,CAAC;AAClD,MAAM,kBAAkB,GAAG,IAAI,CAAC;AAChC,MAAM,gBAAgB,GAAG,KAAK,CAAC;AAE/B,MAAM,CAAC,OAAO,UAAU,QAAQ,CAAC,GAAc;IAC7C,MAAM,SAAS,GAAG,GAA4B,EAAE;QAC9C,MAAM,MAAM,GAAG,GAAG,CAAC,MAAuG,CAAC;QAC3H,MAAM,KAAK,GAAG,MAAM,CAAC,OAAO,EAAE,OAAO,EAAE,UAAU,CAAC;QAClD,IAAI,CAAC,KAAK,EAAE,OAAO,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;YAC9C,OAAO,IAAI,CAAC;QACd,CAAC;QACD,OAAO,KAAK,CAAC,MAAM,CAAC;IACtB,CAAC,CAAC;IAEF,+BAA+B;IAC/B,MAAM,cAAc,GAAG,GAAW,EAAE;QAClC,MAAM,MAAM,GAAG,GAAG,CAAC,MAAyC,CAAC;QAC7D,OAAO,MAAM,CAAC,OAAO,EAAE,IAAI,IAAI,KAAK,CAAC;IACvC,CAAC,CAAC;IAEF,IAAI,EAAE,GAAqB,IAAI,CAAC;IAChC,IAAI,gBAAgB,GAA0B,IAAI,CAAC;IACnD,IAAI,YAAY,GAA0B,IAAI,CAAC;IAC/C,IAAI,cAAc,GAAG,KAAK,CAAC;IAE3B,MAAM,gBAAgB,GAAG,KAAK,EAAE,EAAU,EAAE,OAAe,EAAoB,EAAE;QAC/E,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;QAC3B,IAAI,CAAC,MAAM;YAAE,OAAO,KAAK,CAAC;QAE1B,MAAM,OAAO,GAAG,CAAC,MAAM,CAAC,SAAS,IAAI,kBAAkB,CAAC;aACrD,OAAO,CAAC,QAAQ,EAAE,UAAU,CAAC;aAC7B,OAAO,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;QAE/B,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,OAAO,cAAc,EAAE;gBACrD,MAAM,EAAE,MAAM;gBACd,OAAO,EAAE;oBACP,eAAe,EAAE,UAAU,MAAM,CAAC,MAAM,EAAE;oBAC1C,cAAc,EAAE,kBAAkB;iBACnC;gBACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,OAAO,EAAE,CAAC;aACtC,CAAC,CAAC;YAEH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;gBACjB,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,mCAAmC,EAAE;oBACpD,MAAM,EAAE,QAAQ,CAAC,MAAM;oBACvB,EAAE;iBACH,CAAC,CAAC;gBACH,OAAO,KAAK,CAAC;YACf,CAAC;YAED,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,yBAAyB,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;YACpD,OAAO,IAAI,CAAC;QACd,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,kCAAkC,EAAE;gBACnD,KAAK,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC;gBACvD,EAAE;aACH,CAAC,CAAC;YACH,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC,CAAC;IAEF,gDAAgD;IAChD,MAAM,YAAY,GAAG,KAAK,EAAE,UAAkB,EAAE,OAAe,EAA0B,EAAE;QACzF,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;YAC7B,MAAM,IAAI,GAAG,cAAc,EAAE,CAAC;YAC9B,MAAM,SAAS,GAAG,IAAI,SAAS,CAAC,kBAAkB,IAAI,EAAE,CAAC,CAAC;YAC1D,IAAI,QAAQ,GAAG,EAAE,CAAC;YAClB,IAAI,QAAQ,GAAG,KAAK,CAAC;YAErB,MAAM,OAAO,GAAG,UAAU,CAAC,GAAG,EAAE;gBAC9B,IAAI,CAAC,QAAQ,EAAE,CAAC;oBACd,QAAQ,GAAG,IAAI,CAAC;oBAChB,SAAS,CAAC,KAAK,EAAE,CAAC;oBAClB,OAAO,CAAC,QAAQ,IAAI,IAAI,CAAC,CAAC;gBAC5B,CAAC;YACH,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,oBAAoB;YAE/B,SAAS,CAAC,EAAE,CAAC,MAAM,EAAE,GAAG,EAAE;gBACxB,6BAA6B;gBAC7B,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC;oBAC5B,MAAM,EAAE,OAAO;oBACf,MAAM,EAAE;wBACN,OAAO;wBACP,UAAU;wBACV,MAAM,EAAE,KAAK;qBACd;iBACF,CAAC,CAAC,CAAC;YACN,CAAC,CAAC,CAAC;YAEH,SAAS,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,IAAI,EAAE,EAAE;gBAC/B,IAAI,CAAC;oBACH,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;oBACxC,IAAI,GAAG,CAAC,IAAI,KAAK,MAAM,IAAI,GAAG,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;wBAClD,QAAQ,IAAI,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC;oBAC7B,CAAC;yBAAM,IAAI,GAAG,CAAC,IAAI,KAAK,OAAO,IAAI,GAAG,CAAC,IAAI,KAAK,KAAK,IAAI,GAAG,CAAC,EAAE,KAAK,SAAS,EAAE,CAAC;wBAC9E,iBAAiB;wBACjB,IAAI,GAAG,CAAC,QAAQ,EAAE,CAAC;4BACjB,QAAQ,GAAG,GAAG,CAAC,QAAQ,CAAC;wBAC1B,CAAC;wBACD,IAAI,CAAC,QAAQ,EAAE,CAAC;4BACd,QAAQ,GAAG,IAAI,CAAC;4BAChB,YAAY,CAAC,OAAO,CAAC,CAAC;4BACtB,SAAS,CAAC,KAAK,EAAE,CAAC;4BAClB,OAAO,CAAC,QAAQ,IAAI,IAAI,CAAC,CAAC;wBAC5B,CAAC;oBACH,CAAC;yBAAM,IAAI,GAAG,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;wBAChC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,aAAa,EAAE,EAAE,KAAK,EAAE,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC;wBACtD,IAAI,CAAC,QAAQ,EAAE,CAAC;4BACd,QAAQ,GAAG,IAAI,CAAC;4BAChB,YAAY,CAAC,OAAO,CAAC,CAAC;4BACtB,SAAS,CAAC,KAAK,EAAE,CAAC;4BAClB,OAAO,CAAC,IAAI,CAAC,CAAC;wBAChB,CAAC;oBACH,CAAC;gBACH,CAAC;gBAAC,OAAO,GAAG,EAAE,CAAC;oBACb,sBAAsB;gBACxB,CAAC;YACH,CAAC,CAAC,CAAC;YAEH,SAAS,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE;gBAC5B,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,yBAAyB,EAAE,EAAE,KAAK,EAAE,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;gBACpE,IAAI,CAAC,QAAQ,EAAE,CAAC;oBACd,QAAQ,GAAG,IAAI,CAAC;oBAChB,YAAY,CAAC,OAAO,CAAC,CAAC;oBACtB,OAAO,CAAC,IAAI,CAAC,CAAC;gBAChB,CAAC;YACH,CAAC,CAAC,CAAC;YAEH,SAAS,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE;gBACzB,IAAI,CAAC,QAAQ,EAAE,CAAC;oBACd,QAAQ,GAAG,IAAI,CAAC;oBAChB,YAAY,CAAC,OAAO,CAAC,CAAC;oBACtB,OAAO,CAAC,QAAQ,IAAI,IAAI,CAAC,CAAC;gBAC5B,CAAC;YACH,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC,CAAC;IAEF,MAAM,aAAa,GAAG,KAAK,EAAE,IAAuB,EAAE,EAAE;QACtD,MAAM,YAAY,GAAG,SAAS,EAAE,CAAC;QACjC,IAAI,CAAC,YAAY;YAAE,OAAO;QAE1B,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;YACzB,EAAE,EAAE,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;YAC3C,OAAO;QACT,CAAC;QAED,IAAI,IAAI,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;YAC9B,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,mCAAmC,CAAC,CAAC;YACrD,OAAO;QACT,CAAC;QAED,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACzD,MAAM,aAAa,GAAG,YAAY,CAAC,aAAa,IAAI,YAAY,CAAC;YACjE,MAAM,UAAU,GAAG,GAAG,aAAa,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;YAEnD,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,6BAA6B,EAAE;gBAC7C,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,UAAU;aACX,CAAC,CAAC;YAEH,IAAI,CAAC;gBACH,MAAM,gBAAgB,GAAG,oBAAoB,IAAI,CAAC,IAAI,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;gBAE3E,sCAAsC;gBACtC,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,UAAU,EAAE,gBAAgB,CAAC,CAAC;gBAElE,+CAA+C;gBAC/C,IAAI,YAAY,CAAC,SAAS,KAAK,KAAK,IAAI,QAAQ,EAAE,CAAC;oBACjD,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,sCAAsC,EAAE,EAAE,EAAE,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;oBAC3E,MAAM,gBAAgB,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;gBAC9C,CAAC;YACH,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,qCAAqC,EAAE;oBACtD,KAAK,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC;oBACvD,IAAI,EAAE,IAAI,CAAC,IAAI;iBAChB,CAAC,CAAC;YACL,CAAC;QACH,CAAC;IACH,CAAC,CAAC;IAEF,MAAM,OAAO,GAAG,GAAG,EAAE;QACnB,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;QAC3B,IAAI,CAAC,MAAM,IAAI,cAAc,EAAE,CAAC;YAC9B,OAAO;QACT,CAAC;QAED,MAAM,SAAS,GAAG,MAAM,CAAC,SAAS,IAAI,kBAAkB,CAAC;QACzD,MAAM,KAAK,GAAG,GAAG,SAAS,gBAAgB,CAAC;QAE3C,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,0BAA0B,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC;QAE5D,IAAI,CAAC;YACH,EAAE,GAAG,IAAI,SAAS,CAAC,KAAK,EAAE;gBACxB,OAAO,EAAE;oBACP,eAAe,EAAE,UAAU,MAAM,CAAC,MAAM,EAAE;iBAC3C;aACF,CAAC,CAAC;YAEH,EAAE,CAAC,EAAE,CAAC,MAAM,EAAE,GAAG,EAAE;gBACjB,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,gCAAgC,CAAC,CAAC;gBAElD,IAAI,YAAY;oBAAE,aAAa,CAAC,YAAY,CAAC,CAAC;gBAC9C,YAAY,GAAG,WAAW,CAAC,GAAG,EAAE;oBAC9B,IAAI,EAAE,EAAE,UAAU,KAAK,SAAS,CAAC,IAAI,EAAE,CAAC;wBACtC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;oBAC5C,CAAC;gBACH,CAAC,EAAE,gBAAgB,CAAC,CAAC;YACvB,CAAC,CAAC,CAAC;YAEH,EAAE,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,OAAO,EAAE,EAAE;gBAC3B,IAAI,CAAC;oBACH,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAsB,CAAC;oBACjE,aAAa,CAAC,IAAI,CAAC,CAAC;gBACtB,CAAC;gBAAC,OAAO,GAAG,EAAE,CAAC;oBACb,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,oCAAoC,EAAE;wBACrD,KAAK,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC;qBACxD,CAAC,CAAC;gBACL,CAAC;YACH,CAAC,CAAC,CAAC;YAEH,EAAE,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE;gBAC9B,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,6BAA6B,EAAE;oBAC7C,IAAI;oBACJ,MAAM,EAAE,MAAM,CAAC,QAAQ,EAAE;iBAC1B,CAAC,CAAC;gBACH,OAAO,EAAE,CAAC;gBACV,iBAAiB,EAAE,CAAC;YACtB,CAAC,CAAC,CAAC;YAEH,EAAE,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE;gBACrB,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,4BAA4B,EAAE;oBAC7C,KAAK,EAAE,GAAG,CAAC,OAAO;iBACnB,CAAC,CAAC;YACL,CAAC,CAAC,CAAC;QAEL,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,uCAAuC,EAAE;gBACxD,KAAK,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC;aACxD,CAAC,CAAC;YACH,iBAAiB,EAAE,CAAC;QACtB,CAAC;IACH,CAAC,CAAC;IAEF,MAAM,OAAO,GAAG,GAAG,EAAE;QACnB,IAAI,YAAY,EAAE,CAAC;YACjB,aAAa,CAAC,YAAY,CAAC,CAAC;YAC5B,YAAY,GAAG,IAAI,CAAC;QACtB,CAAC;QACD,IAAI,EAAE,EAAE,CAAC;YACP,EAAE,CAAC,kBAAkB,EAAE,CAAC;YACxB,IAAI,EAAE,CAAC,UAAU,KAAK,SAAS,CAAC,IAAI,EAAE,CAAC;gBACrC,EAAE,CAAC,KAAK,EAAE,CAAC;YACb,CAAC;YACD,EAAE,GAAG,IAAI,CAAC;QACZ,CAAC;IACH,CAAC,CAAC;IAEF,MAAM,iBAAiB,GAAG,GAAG,EAAE;QAC7B,IAAI,cAAc;YAAE,OAAO;QAE3B,IAAI,gBAAgB,EAAE,CAAC;YACrB,YAAY,CAAC,gBAAgB,CAAC,CAAC;QACjC,CAAC;QAED,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,iCAAiC,kBAAkB,GAAG,IAAI,GAAG,CAAC,CAAC;QAC/E,gBAAgB,GAAG,UAAU,CAAC,GAAG,EAAE;YACjC,gBAAgB,GAAG,IAAI,CAAC;YACxB,OAAO,EAAE,CAAC;QACZ,CAAC,EAAE,kBAAkB,CAAC,CAAC;IACzB,CAAC,CAAC;IAEF,8BAA8B;IAC9B,GAAG,CAAC,eAAe,CAAC;QAClB,EAAE,EAAE,qBAAqB;QACzB,KAAK,EAAE,GAAG,EAAE;YACV,cAAc,GAAG,KAAK,CAAC;YACvB,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;YAC3B,IAAI,MAAM,EAAE,CAAC;gBACX,OAAO,EAAE,CAAC;YACZ,CAAC;iBAAM,CAAC;gBACN,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,qDAAqD,CAAC,CAAC;YACzE,CAAC;QACH,CAAC;QACD,IAAI,EAAE,GAAG,EAAE;YACT,cAAc,GAAG,IAAI,CAAC;YACtB,IAAI,gBAAgB,EAAE,CAAC;gBACrB,YAAY,CAAC,gBAAgB,CAAC,CAAC;gBAC/B,gBAAgB,GAAG,IAAI,CAAC;YAC1B,CAAC;YACD,OAAO,EAAE,CAAC;YACV,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC;QACjD,CAAC;KACF,CAAC,CAAC;IAEH,iCAAiC;IACjC,GAAG,CAAC,qBAAqB,CAAC,mBAAmB,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE;QAC7D,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;QAC3B,OAAO,CAAC,IAAI,EAAE;YACZ,UAAU,EAAE,CAAC,CAAC,MAAM;YACpB,SAAS,EAAE,EAAE,EAAE,UAAU,KAAK,SAAS,CAAC,IAAI;YAC5C,SAAS,EAAE,MAAM,EAAE,SAAS,IAAI,kBAAkB;SACnD,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,qCAAqC;IACrC,GAAG,CAAC,YAAY,CAAC;QACf,IAAI,EAAE,iBAAiB;QACvB,WAAW,EAAE,gDAAgD;QAC7D,UAAU,EAAE;YACV,IAAI,EAAE,QAAQ;YACd,QAAQ,EAAE,CAAC,IAAI,EAAE,SAAS,CAAC;YAC3B,UAAU,EAAE;gBACV,EAAE,EAAE;oBACF,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,wCAAwC;iBACtD;gBACD,OAAO,EAAE;oBACP,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,qBAAqB;iBACnC;aACF;SACF;QACD,OAAO,EAAE,KAAK,EAAE,MAAe,EAAE,EAAE;YACjC,MAAM,EAAE,EAAE,EAAE,OAAO,EAAE,GAAG,MAAyC,CAAC;YAClE,MAAM,OAAO,GAAG,MAAM,gBAAgB,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;YACpD,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,gBAAgB,EAAE,CAAC;QAC/E,CAAC;KACF,CAAC,CAAC;IAEH,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,8BAA8B,CAAC,CAAC;AAClD,CAAC"}
|