coder-link 0.0.9

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.
Files changed (88) hide show
  1. package/README.md +200 -0
  2. package/dist/cli.d.ts +3 -0
  3. package/dist/cli.d.ts.map +1 -0
  4. package/dist/cli.js +684 -0
  5. package/dist/cli.js.map +1 -0
  6. package/dist/index.d.ts +12 -0
  7. package/dist/index.d.ts.map +1 -0
  8. package/dist/index.js +12 -0
  9. package/dist/index.js.map +1 -0
  10. package/dist/lib/amp-manager.d.ts +24 -0
  11. package/dist/lib/amp-manager.d.ts.map +1 -0
  12. package/dist/lib/amp-manager.js +46 -0
  13. package/dist/lib/amp-manager.js.map +1 -0
  14. package/dist/lib/claude-code-manager.d.ts +55 -0
  15. package/dist/lib/claude-code-manager.d.ts.map +1 -0
  16. package/dist/lib/claude-code-manager.js +408 -0
  17. package/dist/lib/claude-code-manager.js.map +1 -0
  18. package/dist/lib/crush-manager.d.ts +31 -0
  19. package/dist/lib/crush-manager.d.ts.map +1 -0
  20. package/dist/lib/crush-manager.js +262 -0
  21. package/dist/lib/crush-manager.js.map +1 -0
  22. package/dist/lib/factory-droid-manager.d.ts +36 -0
  23. package/dist/lib/factory-droid-manager.d.ts.map +1 -0
  24. package/dist/lib/factory-droid-manager.js +387 -0
  25. package/dist/lib/factory-droid-manager.js.map +1 -0
  26. package/dist/lib/kimi-manager.d.ts +34 -0
  27. package/dist/lib/kimi-manager.d.ts.map +1 -0
  28. package/dist/lib/kimi-manager.js +316 -0
  29. package/dist/lib/kimi-manager.js.map +1 -0
  30. package/dist/lib/opencode-manager.d.ts +31 -0
  31. package/dist/lib/opencode-manager.d.ts.map +1 -0
  32. package/dist/lib/opencode-manager.js +315 -0
  33. package/dist/lib/opencode-manager.js.map +1 -0
  34. package/dist/lib/pi-manager.d.ts +30 -0
  35. package/dist/lib/pi-manager.d.ts.map +1 -0
  36. package/dist/lib/pi-manager.js +196 -0
  37. package/dist/lib/pi-manager.js.map +1 -0
  38. package/dist/lib/tool-manager.d.ts +51 -0
  39. package/dist/lib/tool-manager.d.ts.map +1 -0
  40. package/dist/lib/tool-manager.js +113 -0
  41. package/dist/lib/tool-manager.js.map +1 -0
  42. package/dist/locales/en_US.json +49 -0
  43. package/dist/locales/zh_CN.json +49 -0
  44. package/dist/mcp-services.d.ts +3 -0
  45. package/dist/mcp-services.d.ts.map +1 -0
  46. package/dist/mcp-services.js +26 -0
  47. package/dist/mcp-services.js.map +1 -0
  48. package/dist/menu.d.ts +2 -0
  49. package/dist/menu.d.ts.map +1 -0
  50. package/dist/menu.js +1226 -0
  51. package/dist/menu.js.map +1 -0
  52. package/dist/utils/api-test.d.ts +32 -0
  53. package/dist/utils/api-test.d.ts.map +1 -0
  54. package/dist/utils/api-test.js +163 -0
  55. package/dist/utils/api-test.js.map +1 -0
  56. package/dist/utils/brand.d.ts +39 -0
  57. package/dist/utils/brand.d.ts.map +1 -0
  58. package/dist/utils/brand.js +195 -0
  59. package/dist/utils/brand.js.map +1 -0
  60. package/dist/utils/config.d.ts +100 -0
  61. package/dist/utils/config.d.ts.map +1 -0
  62. package/dist/utils/config.js +483 -0
  63. package/dist/utils/config.js.map +1 -0
  64. package/dist/utils/exec.d.ts +5 -0
  65. package/dist/utils/exec.d.ts.map +1 -0
  66. package/dist/utils/exec.js +145 -0
  67. package/dist/utils/exec.js.map +1 -0
  68. package/dist/utils/i18n.d.ts +56 -0
  69. package/dist/utils/i18n.d.ts.map +1 -0
  70. package/dist/utils/i18n.js +42 -0
  71. package/dist/utils/i18n.js.map +1 -0
  72. package/dist/utils/keyboard.d.ts +32 -0
  73. package/dist/utils/keyboard.d.ts.map +1 -0
  74. package/dist/utils/keyboard.js +109 -0
  75. package/dist/utils/keyboard.js.map +1 -0
  76. package/dist/utils/logger.d.ts +14 -0
  77. package/dist/utils/logger.d.ts.map +1 -0
  78. package/dist/utils/logger.js +55 -0
  79. package/dist/utils/logger.js.map +1 -0
  80. package/dist/utils/output.d.ts +58 -0
  81. package/dist/utils/output.d.ts.map +1 -0
  82. package/dist/utils/output.js +93 -0
  83. package/dist/utils/output.js.map +1 -0
  84. package/dist/wizard.d.ts +2 -0
  85. package/dist/wizard.d.ts.map +1 -0
  86. package/dist/wizard.js +114 -0
  87. package/dist/wizard.js.map +1 -0
  88. package/package.json +65 -0
@@ -0,0 +1,387 @@
1
+ import { existsSync, mkdirSync, readFileSync, writeFileSync } from 'fs';
2
+ import { join, dirname } from 'path';
3
+ import { homedir } from 'os';
4
+ import { logger } from '../utils/logger.js';
5
+ export class FactoryDroidManager {
6
+ static instance = null;
7
+ configPath;
8
+ mcpConfigPath;
9
+ constructor() {
10
+ // Factory Droid 配置文件路径
11
+ this.configPath = join(homedir(), '.factory', 'settings.json');
12
+ // Factory Droid MCP 配置文件路径 (单独文件)
13
+ this.mcpConfigPath = join(homedir(), '.factory', 'mcp.json');
14
+ }
15
+ static getInstance() {
16
+ if (!FactoryDroidManager.instance) {
17
+ FactoryDroidManager.instance = new FactoryDroidManager();
18
+ }
19
+ return FactoryDroidManager.instance;
20
+ }
21
+ ensureConfigDir() {
22
+ const dir = dirname(this.configPath);
23
+ if (!existsSync(dir)) {
24
+ mkdirSync(dir, { recursive: true });
25
+ }
26
+ }
27
+ getConfig() {
28
+ try {
29
+ if (existsSync(this.configPath)) {
30
+ const content = readFileSync(this.configPath, 'utf-8');
31
+ return JSON.parse(content);
32
+ }
33
+ }
34
+ catch (error) {
35
+ console.warn('Failed to read Factory Droid config:', error);
36
+ logger.logError('FactoryDroidManager.getConfig', error);
37
+ }
38
+ return {};
39
+ }
40
+ saveConfig(config) {
41
+ try {
42
+ this.ensureConfigDir();
43
+ writeFileSync(this.configPath, JSON.stringify(config, null, 2), 'utf-8');
44
+ }
45
+ catch (error) {
46
+ throw new Error(`Failed to save Factory Droid config: ${error}`);
47
+ }
48
+ }
49
+ getMCPConfig() {
50
+ try {
51
+ if (existsSync(this.mcpConfigPath)) {
52
+ const content = readFileSync(this.mcpConfigPath, 'utf-8');
53
+ return JSON.parse(content);
54
+ }
55
+ }
56
+ catch (error) {
57
+ console.warn('Failed to read Factory Droid MCP config:', error);
58
+ logger.logError('FactoryDroidManager.getMCPConfig', error);
59
+ }
60
+ return {};
61
+ }
62
+ saveMCPConfig(config) {
63
+ try {
64
+ this.ensureConfigDir();
65
+ writeFileSync(this.mcpConfigPath, JSON.stringify(config, null, 2), 'utf-8');
66
+ }
67
+ catch (error) {
68
+ throw new Error(`Failed to save Factory Droid MCP config: ${error}`);
69
+ }
70
+ }
71
+ getBaseUrl(plan, protocol, options) {
72
+ if (options?.baseUrl?.trim()) {
73
+ const url = options.baseUrl.trim();
74
+ // If user provided a base URL, they might want to use it for both protocols,
75
+ // but usually the generic-chat-completion-api works best with OpenAI-like paths.
76
+ return url;
77
+ }
78
+ if (plan === 'kimi') {
79
+ return 'https://api.moonshot.ai/v1';
80
+ }
81
+ if (protocol === 'anthropic') {
82
+ return plan === 'glm_coding_plan_global'
83
+ ? 'https://api.z.ai/api/anthropic'
84
+ : 'https://open.bigmodel.cn/api/anthropic';
85
+ }
86
+ else {
87
+ return plan === 'glm_coding_plan_global'
88
+ ? 'https://api.z.ai/api/coding/paas/v4'
89
+ : 'https://open.bigmodel.cn/api/coding/paas/v4';
90
+ }
91
+ }
92
+ getDisplayName(plan, protocol, options) {
93
+ // For kimi-like providers, use the actual source for the display name
94
+ if (plan === 'kimi' || plan === 'openrouter' || plan === 'nvidia') {
95
+ const source = (options?.source || '').toString().trim().toLowerCase();
96
+ const providerName = source === 'openrouter' ? 'OpenRouter'
97
+ : source === 'nvidia' ? 'NVIDIA NIM'
98
+ : 'Kimi';
99
+ const protocolName = protocol === 'anthropic' ? 'Anthropic' : 'OpenAI';
100
+ return `${providerName} - ${protocolName}`;
101
+ }
102
+ const planName = plan === 'glm_coding_plan_global' ? 'GLM Coding Plan Global' : 'GLM Coding Plan China';
103
+ const protocolName = protocol === 'anthropic' ? 'Anthropic' : 'OpenAI';
104
+ return `${planName} - ${protocolName}`;
105
+ }
106
+ toCustomModelId(displayName, index) {
107
+ const slug = displayName
108
+ .trim()
109
+ .replace(/\s/g, '-');
110
+ return `custom:${slug}-${index}`;
111
+ }
112
+ async loadConfig(plan, apiKey, options) {
113
+ const currentConfig = this.getConfig();
114
+ const targetModel = options?.model?.trim() || (plan === 'kimi' ? 'moonshotai/kimi-k2.5' : 'glm-4-coder');
115
+ // For Kimi/NVIDIA/OpenRouter, we use the provided/detected baseUrl.
116
+ // For GLM, we might still want to use the dual-protocol endpoints if no override is provided.
117
+ const baseUrl = options?.baseUrl?.trim() || (plan === 'kimi' ? 'https://api.moonshot.ai/v1' : this.getBaseUrl(plan, 'openai', options));
118
+ // Filter out old GLM/Kimi/OpenRouter/NVIDIA Coding Plan configurations (by displayName)
119
+ // This ensures refresh properly updates the config
120
+ const existingModels = (currentConfig.customModels || []).filter((m) => !m.displayName.includes('GLM Coding Plan')
121
+ && !m.displayName.includes('Kimi')
122
+ && !m.displayName.includes('OpenRouter')
123
+ && !m.displayName.includes('NVIDIA'));
124
+ // Kimi (Moonshot / OpenRouter / NVIDIA NIM) is OpenAI Chat Completions compatible.
125
+ // Don't write an Anthropic entry for Kimi, and keep provider values within Factory's supported set.
126
+ if (plan === 'kimi') {
127
+ const source = (options?.source || '').toString().trim().toLowerCase();
128
+ // Only the native Moonshot API supports extended thinking / reasoning mode.
129
+ const supportsThinking = (source === '' || source === 'moonshot');
130
+ const displayName = this.getDisplayName(plan, 'openai', options);
131
+ const openaiModel = {
132
+ displayName,
133
+ model: targetModel,
134
+ baseUrl: baseUrl,
135
+ apiKey,
136
+ provider: 'generic-chat-completion-api',
137
+ maxOutputTokens: 131072,
138
+ maxContextSize: options?.maxContextSize || 262144,
139
+ };
140
+ if (!supportsThinking) {
141
+ openaiModel.thinking = false;
142
+ openaiModel.reasoning = false;
143
+ }
144
+ const customModels = [...existingModels, openaiModel];
145
+ const modelIndex = customModels.length - 1;
146
+ const newConfig = {
147
+ ...currentConfig,
148
+ // Ensure droid uses BYOK by default (prevents falling back to Factory-hosted models).
149
+ model: 'custom-model',
150
+ // Avoid requiring a Factory web login just to start sessions.
151
+ cloudSessionSync: false,
152
+ // Best-effort: select the injected custom model as the default.
153
+ sessionDefaultSettings: {
154
+ ...(currentConfig.sessionDefaultSettings || {}),
155
+ model: this.toCustomModelId(openaiModel.displayName, modelIndex)
156
+ },
157
+ customModels
158
+ };
159
+ this.saveConfig(newConfig);
160
+ return;
161
+ }
162
+ // Create Anthropic protocol configuration
163
+ const anthropicModel = {
164
+ displayName: this.getDisplayName(plan, 'anthropic', options),
165
+ model: targetModel,
166
+ baseUrl: this.getBaseUrl(plan, 'anthropic', options),
167
+ apiKey,
168
+ provider: 'anthropic',
169
+ maxOutputTokens: 131072
170
+ };
171
+ // Create OpenAI Chat Completion protocol configuration
172
+ const openaiModel = {
173
+ displayName: this.getDisplayName(plan, 'openai', options),
174
+ model: targetModel,
175
+ baseUrl: this.getBaseUrl(plan, 'openai', options),
176
+ apiKey,
177
+ provider: 'generic-chat-completion-api',
178
+ maxOutputTokens: 131072
179
+ };
180
+ const customModels = [...existingModels, anthropicModel, openaiModel];
181
+ const openaiModelIndex = customModels.length - 1;
182
+ const newConfig = {
183
+ ...currentConfig,
184
+ model: 'custom-model',
185
+ cloudSessionSync: false,
186
+ sessionDefaultSettings: {
187
+ ...(currentConfig.sessionDefaultSettings || {}),
188
+ model: this.toCustomModelId(openaiModel.displayName, openaiModelIndex)
189
+ },
190
+ customModels
191
+ };
192
+ this.saveConfig(newConfig);
193
+ }
194
+ async unloadConfig() {
195
+ const currentConfig = this.getConfig();
196
+ // Filter out GLM/Kimi Coding Plan configurations
197
+ if (currentConfig.customModels) {
198
+ currentConfig.customModels = currentConfig.customModels.filter((m) => !m.displayName.includes('GLM Coding Plan') && !m.displayName.includes('Kimi'));
199
+ // If customModels is empty, delete field
200
+ if (currentConfig.customModels.length === 0) {
201
+ delete currentConfig.customModels;
202
+ }
203
+ }
204
+ this.saveConfig(currentConfig);
205
+ }
206
+ async detectCurrentConfig() {
207
+ try {
208
+ const config = this.getConfig();
209
+ if (!config.customModels || config.customModels.length === 0) {
210
+ return { plan: null, apiKey: null };
211
+ }
212
+ // Find GLM/Kimi/OpenRouter/NVIDIA Coding Plan configuration
213
+ const glmModel = config.customModels.find((m) => m.displayName.includes('GLM Coding Plan')
214
+ || m.displayName.includes('Kimi')
215
+ || m.displayName.includes('OpenRouter')
216
+ || m.displayName.includes('NVIDIA'));
217
+ if (!glmModel) {
218
+ return { plan: null, apiKey: null };
219
+ }
220
+ const apiKey = glmModel.apiKey || null;
221
+ const baseUrl = glmModel.baseUrl;
222
+ const model = glmModel.model || undefined;
223
+ let plan = null;
224
+ if (baseUrl === 'https://api.z.ai/api/coding/paas/v4' || baseUrl === 'https://api.z.ai/api/anthropic') {
225
+ plan = 'glm_coding_plan_global';
226
+ }
227
+ else if (baseUrl === 'https://open.bigmodel.cn/api/coding/paas/v4' || baseUrl === 'https://open.bigmodel.cn/api/anthropic') {
228
+ plan = 'glm_coding_plan_china';
229
+ }
230
+ else if (baseUrl?.includes('openrouter.ai')) {
231
+ plan = 'openrouter';
232
+ }
233
+ else if (baseUrl?.includes('nvidia.com')) {
234
+ plan = 'nvidia';
235
+ }
236
+ else if (baseUrl) {
237
+ plan = 'kimi';
238
+ }
239
+ return { plan, apiKey, model };
240
+ }
241
+ catch {
242
+ return { plan: null, apiKey: null };
243
+ }
244
+ }
245
+ isMCPInstalled(mcpId) {
246
+ try {
247
+ const config = this.getMCPConfig();
248
+ if (!config.mcpServers) {
249
+ return false;
250
+ }
251
+ return mcpId in config.mcpServers;
252
+ }
253
+ catch {
254
+ return false;
255
+ }
256
+ }
257
+ async installMCP(mcp, apiKey, plan) {
258
+ try {
259
+ const config = this.getMCPConfig();
260
+ if (!config.mcpServers) {
261
+ config.mcpServers = {};
262
+ }
263
+ let mcpConfig;
264
+ if (mcp.protocol === 'stdio') {
265
+ // Determine environment variables
266
+ let env = {};
267
+ if (mcp.envTemplate && plan) {
268
+ env = { ...(mcp.envTemplate[plan] || {}) };
269
+ }
270
+ else if (mcp.env) {
271
+ env = { ...mcp.env };
272
+ }
273
+ // Add API key if required
274
+ if (mcp.requiresAuth && apiKey) {
275
+ env.Z_AI_API_KEY = apiKey;
276
+ }
277
+ mcpConfig = {
278
+ type: 'stdio',
279
+ command: mcp.command || 'npx',
280
+ args: mcp.command === 'npx' && !mcp.args?.includes('--silent')
281
+ ? ['--silent', ...(mcp.args || [])]
282
+ : (mcp.args || []),
283
+ env,
284
+ disabled: false
285
+ };
286
+ }
287
+ else if (mcp.protocol === 'sse' || mcp.protocol === 'streamable-http') {
288
+ // Determine URL based on plan
289
+ let url = '';
290
+ if (mcp.urlTemplate && plan) {
291
+ url = mcp.urlTemplate[plan];
292
+ }
293
+ else if (mcp.url) {
294
+ url = mcp.url;
295
+ }
296
+ else {
297
+ throw new Error(`MCP ${mcp.id} missing url or urlTemplate`);
298
+ }
299
+ // Factory Droid uses http type
300
+ mcpConfig = {
301
+ type: 'http',
302
+ url: url,
303
+ headers: {
304
+ ...(mcp.headers || {})
305
+ },
306
+ disabled: false
307
+ };
308
+ // Add API key to headers if required
309
+ if (mcp.requiresAuth && apiKey) {
310
+ mcpConfig.headers = {
311
+ ...mcpConfig.headers,
312
+ 'Authorization': `Bearer ${apiKey}`
313
+ };
314
+ }
315
+ }
316
+ else {
317
+ throw new Error(`Unsupported protocol: ${mcp.protocol}`);
318
+ }
319
+ config.mcpServers[mcp.id] = mcpConfig;
320
+ this.saveMCPConfig(config);
321
+ }
322
+ catch (error) {
323
+ throw new Error(`Failed to install MCP ${mcp.name}: ${error}`);
324
+ }
325
+ }
326
+ async uninstallMCP(mcpId) {
327
+ try {
328
+ const config = this.getMCPConfig();
329
+ if (!config.mcpServers) {
330
+ return;
331
+ }
332
+ delete config.mcpServers[mcpId];
333
+ this.saveMCPConfig(config);
334
+ }
335
+ catch (error) {
336
+ throw new Error(`Failed to uninstall MCP ${mcpId}: ${error}`);
337
+ }
338
+ }
339
+ getInstalledMCPs() {
340
+ try {
341
+ const config = this.getMCPConfig();
342
+ if (!config.mcpServers) {
343
+ return [];
344
+ }
345
+ return Object.keys(config.mcpServers);
346
+ }
347
+ catch {
348
+ return [];
349
+ }
350
+ }
351
+ getMCPStatus(mcpServices) {
352
+ const status = new Map();
353
+ for (const mcp of mcpServices) {
354
+ status.set(mcp.id, this.isMCPInstalled(mcp.id));
355
+ }
356
+ return status;
357
+ }
358
+ getOtherMCPs(builtinIds) {
359
+ try {
360
+ const config = this.getMCPConfig();
361
+ if (!config.mcpServers) {
362
+ return [];
363
+ }
364
+ const otherMCPs = [];
365
+ for (const [id, mcpConfig] of Object.entries(config.mcpServers)) {
366
+ if (!builtinIds.includes(id)) {
367
+ otherMCPs.push({ id, config: mcpConfig });
368
+ }
369
+ }
370
+ return otherMCPs;
371
+ }
372
+ catch {
373
+ return [];
374
+ }
375
+ }
376
+ getAllMCPServers() {
377
+ try {
378
+ const config = this.getMCPConfig();
379
+ return config.mcpServers || {};
380
+ }
381
+ catch {
382
+ return {};
383
+ }
384
+ }
385
+ }
386
+ export const factoryDroidManager = FactoryDroidManager.getInstance();
387
+ //# sourceMappingURL=factory-droid-manager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"factory-droid-manager.js","sourceRoot":"","sources":["../../src/lib/factory-droid-manager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,34 @@
1
+ import type { MCPService } from './tool-manager.js';
2
+ import type { ProviderOptions } from './tool-manager.js';
3
+ export declare class KimiManager {
4
+ static instance: KimiManager | null;
5
+ private configPath;
6
+ constructor();
7
+ static getInstance(): KimiManager;
8
+ private ensureConfigDir;
9
+ private readConfigText;
10
+ private readConfig;
11
+ private writeConfig;
12
+ private ensureMcpSilent;
13
+ private ensureProvider;
14
+ private ensureModel;
15
+ detectCurrentConfig(): Promise<{
16
+ plan: string | null;
17
+ apiKey: string | null;
18
+ model?: string;
19
+ }>;
20
+ loadConfig(plan: string, apiKey: string, options?: ProviderOptions): Promise<void>;
21
+ unloadConfig(): Promise<void>;
22
+ isMCPInstalled(mcpId: string): boolean;
23
+ getInstalledMCPs(): string[];
24
+ getAllMCPServers(): Record<string, any>;
25
+ getOtherMCPs(builtinIds: string[]): Array<{
26
+ id: string;
27
+ config: any;
28
+ }>;
29
+ getMCPStatus(mcpServices: MCPService[]): Map<string, boolean>;
30
+ installMCP(mcp: MCPService, apiKey: string, plan: string): Promise<void>;
31
+ uninstallMCP(mcpId: string): Promise<void>;
32
+ }
33
+ export declare const kimiManager: KimiManager;
34
+ //# sourceMappingURL=kimi-manager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"kimi-manager.d.ts","sourceRoot":"","sources":["../../src/lib/kimi-manager.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAezD,qBAAa,WAAW;IACtB,MAAM,CAAC,QAAQ,EAAE,WAAW,GAAG,IAAI,CAAQ;IAC3C,OAAO,CAAC,UAAU,CAAS;;IAM3B,MAAM,CAAC,WAAW,IAAI,WAAW;IAOjC,OAAO,CAAC,eAAe;IAOvB,OAAO,CAAC,cAAc;IAKtB,OAAO,CAAC,UAAU;IAalB,OAAO,CAAC,WAAW;IAWnB,OAAO,CAAC,eAAe;IA2BvB,OAAO,CAAC,cAAc;IAmBtB,OAAO,CAAC,WAAW;IAiBb,mBAAmB,IAAI,OAAO,CAAC;QAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAgD9F,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC;IAoBlF,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC;IAenC,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO;IAYtC,gBAAgB,IAAI,MAAM,EAAE;IAY5B,gBAAgB,IAAI,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;IAYvC,YAAY,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,KAAK,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,GAAG,CAAA;KAAE,CAAC;IAWtE,YAAY,CAAC,WAAW,EAAE,UAAU,EAAE,GAAG,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC;IAQvD,UAAU,CAAC,GAAG,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IA0DxE,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAWjD;AAED,eAAO,MAAM,WAAW,aAA4B,CAAC"}