bravecode-cli 0.1.44 → 0.1.46

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 (103) hide show
  1. package/dist/cli-main.mjs +27 -8
  2. package/dist/cli-main.mjs.map +2 -2
  3. package/package.json +1 -1
  4. package/dist/autoModel.d.ts +0 -39
  5. package/dist/autoModel.d.ts.map +0 -1
  6. package/dist/autoModel.js +0 -127
  7. package/dist/autoModel.js.map +0 -1
  8. package/dist/bravecode +0 -22
  9. package/dist/cli.d.ts +0 -2
  10. package/dist/cli.d.ts.map +0 -1
  11. package/dist/cli.js +0 -468
  12. package/dist/cli.js.map +0 -1
  13. package/dist/core/agent/index.d.ts +0 -31
  14. package/dist/core/agent/index.d.ts.map +0 -1
  15. package/dist/core/agent/index.js +0 -339
  16. package/dist/core/agent/index.js.map +0 -1
  17. package/dist/core/config/index.d.ts +0 -54
  18. package/dist/core/config/index.d.ts.map +0 -1
  19. package/dist/core/config/index.js +0 -138
  20. package/dist/core/config/index.js.map +0 -1
  21. package/dist/core/context/index.d.ts +0 -20
  22. package/dist/core/context/index.d.ts.map +0 -1
  23. package/dist/core/context/index.js +0 -70
  24. package/dist/core/context/index.js.map +0 -1
  25. package/dist/core/mcp/index.d.ts +0 -32
  26. package/dist/core/mcp/index.d.ts.map +0 -1
  27. package/dist/core/mcp/index.js +0 -160
  28. package/dist/core/mcp/index.js.map +0 -1
  29. package/dist/core/permission/index.d.ts +0 -24
  30. package/dist/core/permission/index.d.ts.map +0 -1
  31. package/dist/core/permission/index.js +0 -96
  32. package/dist/core/permission/index.js.map +0 -1
  33. package/dist/core/plugin/index.d.ts +0 -44
  34. package/dist/core/plugin/index.d.ts.map +0 -1
  35. package/dist/core/plugin/index.js +0 -139
  36. package/dist/core/plugin/index.js.map +0 -1
  37. package/dist/core/session/index.d.ts +0 -23
  38. package/dist/core/session/index.d.ts.map +0 -1
  39. package/dist/core/session/index.js +0 -51
  40. package/dist/core/session/index.js.map +0 -1
  41. package/dist/core/share/index.d.ts +0 -28
  42. package/dist/core/share/index.d.ts.map +0 -1
  43. package/dist/core/share/index.js +0 -100
  44. package/dist/core/share/index.js.map +0 -1
  45. package/dist/core/snapshot/index.d.ts +0 -30
  46. package/dist/core/snapshot/index.d.ts.map +0 -1
  47. package/dist/core/snapshot/index.js +0 -141
  48. package/dist/core/snapshot/index.js.map +0 -1
  49. package/dist/core/tool/bash.d.ts +0 -8
  50. package/dist/core/tool/bash.d.ts.map +0 -1
  51. package/dist/core/tool/bash.js +0 -29
  52. package/dist/core/tool/bash.js.map +0 -1
  53. package/dist/core/tool/browser.d.ts +0 -5
  54. package/dist/core/tool/browser.d.ts.map +0 -1
  55. package/dist/core/tool/browser.js +0 -119
  56. package/dist/core/tool/browser.js.map +0 -1
  57. package/dist/core/tool/file.d.ts +0 -5
  58. package/dist/core/tool/file.d.ts.map +0 -1
  59. package/dist/core/tool/file.js +0 -79
  60. package/dist/core/tool/file.js.map +0 -1
  61. package/dist/core/tool/index.d.ts +0 -21
  62. package/dist/core/tool/index.d.ts.map +0 -1
  63. package/dist/core/tool/index.js +0 -90
  64. package/dist/core/tool/index.js.map +0 -1
  65. package/dist/core/tool/search.d.ts +0 -4
  66. package/dist/core/tool/search.d.ts.map +0 -1
  67. package/dist/core/tool/search.js +0 -107
  68. package/dist/core/tool/search.js.map +0 -1
  69. package/dist/core/tool/task.d.ts +0 -9
  70. package/dist/core/tool/task.d.ts.map +0 -1
  71. package/dist/core/tool/task.js +0 -54
  72. package/dist/core/tool/task.js.map +0 -1
  73. package/dist/core/tool/todowrite.d.ts +0 -3
  74. package/dist/core/tool/todowrite.d.ts.map +0 -1
  75. package/dist/core/tool/todowrite.js +0 -75
  76. package/dist/core/tool/todowrite.js.map +0 -1
  77. package/dist/core/tool/websearch.d.ts +0 -3
  78. package/dist/core/tool/websearch.d.ts.map +0 -1
  79. package/dist/core/tool/websearch.js +0 -46
  80. package/dist/core/tool/websearch.js.map +0 -1
  81. package/dist/core/tui/ChatTUI.d.ts +0 -16
  82. package/dist/core/tui/ChatTUI.d.ts.map +0 -1
  83. package/dist/core/tui/ChatTUI.js +0 -65
  84. package/dist/core/tui/ChatTUI.js.map +0 -1
  85. package/dist/core/tui/index.d.ts +0 -15
  86. package/dist/core/tui/index.d.ts.map +0 -1
  87. package/dist/core/tui/index.js +0 -45
  88. package/dist/core/tui/index.js.map +0 -1
  89. package/dist/core/update/index.d.ts +0 -23
  90. package/dist/core/update/index.d.ts.map +0 -1
  91. package/dist/core/update/index.js +0 -115
  92. package/dist/core/update/index.js.map +0 -1
  93. package/dist/index.d.ts +0 -18
  94. package/dist/index.d.ts.map +0 -1
  95. package/dist/index.js +0 -11
  96. package/dist/index.js.map +0 -1
  97. package/dist/models.json +0 -545
  98. package/dist/provider.d.ts +0 -43
  99. package/dist/provider.d.ts.map +0 -1
  100. package/dist/provider.js +0 -294
  101. package/dist/provider.js.map +0 -1
  102. package/dist/tui/ChatTUI.mjs +0 -89
  103. package/dist/tui-launcher.mjs +0 -64
package/dist/models.json DELETED
@@ -1,545 +0,0 @@
1
- {
2
- "models": [
3
- {
4
- "id": "codestral-latest",
5
- "name": "Codestral (Latest)",
6
- "provider": "bravecode",
7
- "contextWindow": 256000,
8
- "maxOutputTokens": 32000,
9
- "capabilities": {
10
- "code": true,
11
- "reasoning": true,
12
- "vision": false,
13
- "audio": false,
14
- "functionCalling": true
15
- },
16
- "pricing": {
17
- "input": 0,
18
- "output": 0
19
- },
20
- "tags": ["code", "free", "recommended"]
21
- },
22
- {
23
- "id": "mistral-large-2512",
24
- "name": "Mistral Large 2512",
25
- "provider": "bravecode",
26
- "contextWindow": 128000,
27
- "maxOutputTokens": 32000,
28
- "capabilities": {
29
- "code": true,
30
- "reasoning": true,
31
- "vision": false,
32
- "audio": false,
33
- "functionCalling": true
34
- },
35
- "pricing": {
36
- "input": 0,
37
- "output": 0
38
- },
39
- "tags": ["general", "free"]
40
- },
41
- {
42
- "id": "DeepSeek-V1",
43
- "name": "DeepSeek V1",
44
- "provider": "bravecode",
45
- "contextWindow": 128000,
46
- "maxOutputTokens": 32000,
47
- "capabilities": {
48
- "code": true,
49
- "reasoning": true,
50
- "vision": false,
51
- "audio": false,
52
- "functionCalling": false
53
- },
54
- "pricing": {
55
- "input": 0,
56
- "output": 0
57
- },
58
- "tags": ["general", "free"]
59
- },
60
- {
61
- "id": "DeepSeek-V2",
62
- "name": "DeepSeek V2",
63
- "provider": "bravecode",
64
- "contextWindow": 128000,
65
- "maxOutputTokens": 32000,
66
- "capabilities": {
67
- "code": true,
68
- "reasoning": true,
69
- "vision": false,
70
- "audio": false,
71
- "functionCalling": false
72
- },
73
- "pricing": {
74
- "input": 0,
75
- "output": 0
76
- },
77
- "tags": ["general", "free"]
78
- },
79
- {
80
- "id": "DeepSeek-V3",
81
- "name": "DeepSeek V3",
82
- "provider": "bravecode",
83
- "contextWindow": 128000,
84
- "maxOutputTokens": 32000,
85
- "capabilities": {
86
- "code": true,
87
- "reasoning": true,
88
- "vision": false,
89
- "audio": false,
90
- "functionCalling": false
91
- },
92
- "pricing": {
93
- "input": 0,
94
- "output": 0
95
- },
96
- "tags": ["general", "free", "recommended"]
97
- },
98
- {
99
- "id": "DeepSeek-V2.5",
100
- "name": "DeepSeek V2.5",
101
- "provider": "bravecode",
102
- "contextWindow": 128000,
103
- "maxOutputTokens": 32000,
104
- "capabilities": {
105
- "code": true,
106
- "reasoning": true,
107
- "vision": false,
108
- "audio": false,
109
- "functionCalling": false
110
- },
111
- "pricing": {
112
- "input": 0,
113
- "output": 0
114
- },
115
- "tags": ["general", "free"]
116
- },
117
- {
118
- "id": "DeepSeek-V3-0324",
119
- "name": "DeepSeek V3 0324",
120
- "provider": "bravecode",
121
- "contextWindow": 128000,
122
- "maxOutputTokens": 32000,
123
- "capabilities": {
124
- "code": true,
125
- "reasoning": true,
126
- "vision": false,
127
- "audio": false,
128
- "functionCalling": false
129
- },
130
- "pricing": {
131
- "input": 0,
132
- "output": 0
133
- },
134
- "tags": ["general", "free"]
135
- },
136
- {
137
- "id": "DeepSeek-V3.1",
138
- "name": "DeepSeek V3.1",
139
- "provider": "bravecode",
140
- "contextWindow": 128000,
141
- "maxOutputTokens": 32000,
142
- "capabilities": {
143
- "code": true,
144
- "reasoning": true,
145
- "vision": false,
146
- "audio": false,
147
- "functionCalling": false
148
- },
149
- "pricing": {
150
- "input": 0,
151
- "output": 0
152
- },
153
- "tags": ["general", "free"]
154
- },
155
- {
156
- "id": "DeepSeek-V3.2",
157
- "name": "DeepSeek V3.2",
158
- "provider": "bravecode",
159
- "contextWindow": 128000,
160
- "maxOutputTokens": 32000,
161
- "capabilities": {
162
- "code": true,
163
- "reasoning": true,
164
- "vision": false,
165
- "audio": false,
166
- "functionCalling": false
167
- },
168
- "pricing": {
169
- "input": 0,
170
- "output": 0
171
- },
172
- "tags": ["general", "free"]
173
- },
174
- {
175
- "id": "DeepSeek-R1",
176
- "name": "DeepSeek R1",
177
- "provider": "bravecode",
178
- "contextWindow": 128000,
179
- "maxOutputTokens": 32000,
180
- "capabilities": {
181
- "code": true,
182
- "reasoning": true,
183
- "vision": false,
184
- "audio": false,
185
- "functionCalling": false
186
- },
187
- "pricing": {
188
- "input": 0,
189
- "output": 0
190
- },
191
- "tags": ["reasoning", "free", "recommended"]
192
- },
193
- {
194
- "id": "DeepSeek-R1-0528",
195
- "name": "DeepSeek R1 0528",
196
- "provider": "bravecode",
197
- "contextWindow": 128000,
198
- "maxOutputTokens": 32000,
199
- "capabilities": {
200
- "code": true,
201
- "reasoning": true,
202
- "vision": false,
203
- "audio": false,
204
- "functionCalling": false
205
- },
206
- "pricing": {
207
- "input": 0,
208
- "output": 0
209
- },
210
- "tags": ["reasoning", "free"]
211
- },
212
- {
213
- "id": "DeepSeek-VL",
214
- "name": "DeepSeek VL",
215
- "provider": "bravecode",
216
- "contextWindow": 128000,
217
- "maxOutputTokens": 32000,
218
- "capabilities": {
219
- "code": true,
220
- "reasoning": true,
221
- "vision": true,
222
- "audio": false,
223
- "functionCalling": false
224
- },
225
- "pricing": {
226
- "input": 0,
227
- "output": 0
228
- },
229
- "tags": ["vision", "free"]
230
- },
231
- {
232
- "id": "DeepSeek-Coder",
233
- "name": "DeepSeek Coder",
234
- "provider": "bravecode",
235
- "contextWindow": 128000,
236
- "maxOutputTokens": 32000,
237
- "capabilities": {
238
- "code": true,
239
- "reasoning": true,
240
- "vision": false,
241
- "audio": false,
242
- "functionCalling": false
243
- },
244
- "pricing": {
245
- "input": 0,
246
- "output": 0
247
- },
248
- "tags": ["code", "free"]
249
- },
250
- {
251
- "id": "DeepSeek-Coder-V2",
252
- "name": "DeepSeek Coder V2",
253
- "provider": "bravecode",
254
- "contextWindow": 128000,
255
- "maxOutputTokens": 32000,
256
- "capabilities": {
257
- "code": true,
258
- "reasoning": true,
259
- "vision": false,
260
- "audio": false,
261
- "functionCalling": false
262
- },
263
- "pricing": {
264
- "input": 0,
265
- "output": 0
266
- },
267
- "tags": ["code", "free", "recommended"]
268
- },
269
- {
270
- "id": "DeepSeek-Coder-6.7B-instruct",
271
- "name": "DeepSeek Coder 6.7B Instruct",
272
- "provider": "bravecode",
273
- "contextWindow": 128000,
274
- "maxOutputTokens": 32000,
275
- "capabilities": {
276
- "code": true,
277
- "reasoning": true,
278
- "vision": false,
279
- "audio": false,
280
- "functionCalling": false
281
- },
282
- "pricing": {
283
- "input": 0,
284
- "output": 0
285
- },
286
- "tags": ["code", "free"]
287
- },
288
- {
289
- "id": "voxtral-small-2507",
290
- "name": "Voxtral Small 2507",
291
- "provider": "bravecode",
292
- "contextWindow": 32000,
293
- "maxOutputTokens": 32000,
294
- "capabilities": {
295
- "code": false,
296
- "reasoning": false,
297
- "vision": false,
298
- "audio": true,
299
- "functionCalling": false
300
- },
301
- "pricing": {
302
- "input": 0,
303
- "output": 0
304
- },
305
- "tags": ["audio", "free"]
306
- },
307
- {
308
- "id": "ministral-14b-2512",
309
- "name": "Ministral 14B 2512",
310
- "provider": "bravecode",
311
- "contextWindow": 128000,
312
- "maxOutputTokens": 32000,
313
- "capabilities": {
314
- "code": true,
315
- "reasoning": true,
316
- "vision": false,
317
- "audio": false,
318
- "functionCalling": false
319
- },
320
- "pricing": {
321
- "input": 0,
322
- "output": 0
323
- },
324
- "tags": ["general", "free"]
325
- },
326
- {
327
- "id": "deepseek/deepseek-chat:free",
328
- "name": "DeepSeek Chat (OpenRouter Free)",
329
- "provider": "openrouter",
330
- "contextWindow": 128000,
331
- "maxOutputTokens": 32000,
332
- "capabilities": {
333
- "code": true,
334
- "reasoning": true,
335
- "vision": false,
336
- "audio": false,
337
- "functionCalling": true
338
- },
339
- "pricing": {
340
- "input": 0,
341
- "output": 0
342
- },
343
- "tags": ["general", "free"]
344
- },
345
- {
346
- "id": "deepseek/deepseek-coder:free",
347
- "name": "DeepSeek Coder (OpenRouter Free)",
348
- "provider": "openrouter",
349
- "contextWindow": 128000,
350
- "maxOutputTokens": 32000,
351
- "capabilities": {
352
- "code": true,
353
- "reasoning": true,
354
- "vision": false,
355
- "audio": false,
356
- "functionCalling": true
357
- },
358
- "pricing": {
359
- "input": 0,
360
- "output": 0
361
- },
362
- "tags": ["code", "free"]
363
- },
364
- {
365
- "id": "deepseek/deepseek-r1:free",
366
- "name": "DeepSeek R1 (OpenRouter Free)",
367
- "provider": "openrouter",
368
- "contextWindow": 128000,
369
- "maxOutputTokens": 32000,
370
- "capabilities": {
371
- "code": true,
372
- "reasoning": true,
373
- "vision": false,
374
- "audio": false,
375
- "functionCalling": true
376
- },
377
- "pricing": {
378
- "input": 0,
379
- "output": 0
380
- },
381
- "tags": ["reasoning", "free"]
382
- },
383
- {
384
- "id": "mistralai/mistral-7b-instruct:free",
385
- "name": "Mistral 7B Instruct (OpenRouter Free)",
386
- "provider": "openrouter",
387
- "contextWindow": 32000,
388
- "maxOutputTokens": 32000,
389
- "capabilities": {
390
- "code": true,
391
- "reasoning": true,
392
- "vision": false,
393
- "audio": false,
394
- "functionCalling": true
395
- },
396
- "pricing": {
397
- "input": 0,
398
- "output": 0
399
- },
400
- "tags": ["general", "free"]
401
- },
402
- {
403
- "id": "meta-llama/llama-3-8b-instruct:free",
404
- "name": "Llama 3 8B Instruct (OpenRouter Free)",
405
- "provider": "openrouter",
406
- "contextWindow": 8192,
407
- "maxOutputTokens": 8192,
408
- "capabilities": {
409
- "code": true,
410
- "reasoning": true,
411
- "vision": false,
412
- "audio": false,
413
- "functionCalling": true
414
- },
415
- "pricing": {
416
- "input": 0,
417
- "output": 0
418
- },
419
- "tags": ["general", "free"]
420
- },
421
- {
422
- "id": "deepseek/deepseek-chat",
423
- "name": "DeepSeek Chat (9Router)",
424
- "provider": "9router",
425
- "contextWindow": 128000,
426
- "maxOutputTokens": 32000,
427
- "capabilities": {
428
- "code": true,
429
- "reasoning": true,
430
- "vision": false,
431
- "audio": false,
432
- "functionCalling": true
433
- },
434
- "pricing": {
435
- "input": 0.14,
436
- "output": 0.28
437
- },
438
- "tags": ["general", "paid"]
439
- },
440
- {
441
- "id": "deepseek/deepseek-coder",
442
- "name": "DeepSeek Coder (9Router)",
443
- "provider": "9router",
444
- "contextWindow": 128000,
445
- "maxOutputTokens": 32000,
446
- "capabilities": {
447
- "code": true,
448
- "reasoning": true,
449
- "vision": false,
450
- "audio": false,
451
- "functionCalling": true
452
- },
453
- "pricing": {
454
- "input": 0.14,
455
- "output": 0.28
456
- },
457
- "tags": ["code", "paid"]
458
- },
459
- {
460
- "id": "deepseek/deepseek-r1",
461
- "name": "DeepSeek R1 (9Router)",
462
- "provider": "9router",
463
- "contextWindow": 128000,
464
- "maxOutputTokens": 32000,
465
- "capabilities": {
466
- "code": true,
467
- "reasoning": true,
468
- "vision": false,
469
- "audio": false,
470
- "functionCalling": true
471
- },
472
- "pricing": {
473
- "input": 0.55,
474
- "output": 2.19
475
- },
476
- "tags": ["reasoning", "paid"]
477
- },
478
- {
479
- "id": "mistralai/mistral-large-latest",
480
- "name": "Mistral Large (9Router)",
481
- "provider": "9router",
482
- "contextWindow": 128000,
483
- "maxOutputTokens": 32000,
484
- "capabilities": {
485
- "code": true,
486
- "reasoning": true,
487
- "vision": false,
488
- "audio": false,
489
- "functionCalling": true
490
- },
491
- "pricing": {
492
- "input": 2,
493
- "output": 6
494
- },
495
- "tags": ["general", "paid"]
496
- },
497
- {
498
- "id": "mistralai/codestral-latest",
499
- "name": "Codestral (9Router)",
500
- "provider": "9router",
501
- "contextWindow": 256000,
502
- "maxOutputTokens": 32000,
503
- "capabilities": {
504
- "code": true,
505
- "reasoning": true,
506
- "vision": false,
507
- "audio": false,
508
- "functionCalling": true
509
- },
510
- "pricing": {
511
- "input": 0.3,
512
- "output": 0.9
513
- },
514
- "tags": ["code", "paid"]
515
- }
516
- ],
517
- "providers": {
518
- "bravecode": {
519
- "name": "BraveCode AI",
520
- "baseURL": "https://codero.sohailsyed.com/api",
521
- "envKey": "BRAVECODE_API_KEY",
522
- "chatEndpoint": "/chat"
523
- },
524
- "mistral": {
525
- "name": "Mistral AI",
526
- "baseURL": "https://api.mistral.ai/v1",
527
- "envKey": "MISTRAL_API_KEY"
528
- },
529
- "deepseek": {
530
- "name": "DeepSeek",
531
- "baseURL": "https://api.deepseek.com",
532
- "envKey": "DEEPSEEK_API_KEY"
533
- },
534
- "openrouter": {
535
- "name": "OpenRouter",
536
- "baseURL": "https://openrouter.ai/api/v1",
537
- "envKey": "OPENROUTER_API_KEY"
538
- },
539
- "9router": {
540
- "name": "9Router",
541
- "baseURL": "https://9router.com/v1",
542
- "envKey": "NINEROUTER_API_KEY"
543
- }
544
- }
545
- }
@@ -1,43 +0,0 @@
1
- import type { ModelConfig } from "./autoModel";
2
- export interface Message {
3
- role: "system" | "user" | "assistant" | "tool";
4
- content: string;
5
- toolCallId?: string;
6
- }
7
- export interface ChatParams {
8
- model: string;
9
- messages: Message[];
10
- temperature?: number;
11
- maxTokens?: number;
12
- }
13
- export interface ChatResponse {
14
- text?: string;
15
- toolCalls?: any[];
16
- finishReason: "stop" | "tool_calls" | "length";
17
- usage: {
18
- input: number;
19
- output: number;
20
- };
21
- }
22
- export interface StreamChunk {
23
- type: "text" | "tool_call" | "finish";
24
- text?: string;
25
- toolCall?: any;
26
- finishReason?: string;
27
- }
28
- export declare class LLMProviderManager {
29
- private providers;
30
- private coderoApiKey;
31
- constructor();
32
- private initializeProviders;
33
- private getModelProvider;
34
- private mapMessages;
35
- chat(params: ChatParams, modelConfig?: ModelConfig): Promise<ChatResponse>;
36
- chatStream(params: ChatParams, modelConfig?: ModelConfig): AsyncIterable<StreamChunk>;
37
- private coderoChat;
38
- private coderoChatStream;
39
- private getModelConfigById;
40
- getAvailableProviders(): string[];
41
- isProviderConfigured(providerId: string): boolean;
42
- }
43
- //# sourceMappingURL=provider.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"provider.d.ts","sourceRoot":"","sources":["../src/provider.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAG/C,MAAM,WAAW,OAAO;IACtB,IAAI,EAAE,QAAQ,GAAG,MAAM,GAAG,WAAW,GAAG,MAAM,CAAC;IAC/C,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,OAAO,EAAE,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,YAAY;IAC3B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,GAAG,EAAE,CAAC;IAClB,YAAY,EAAE,MAAM,GAAG,YAAY,GAAG,QAAQ,CAAC;IAC/C,KAAK,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;CAC1C;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,GAAG,WAAW,GAAG,QAAQ,CAAC;IACtC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,GAAG,CAAC;IACf,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAWD,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,SAAS,CAA+B;IAChD,OAAO,CAAC,YAAY,CAAc;;IAMlC,OAAO,CAAC,mBAAmB;IAoC3B,OAAO,CAAC,gBAAgB;IAQxB,OAAO,CAAC,WAAW;IAgBb,IAAI,CAAC,MAAM,EAAE,UAAU,EAAE,WAAW,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,YAAY,CAAC;IAoCzE,UAAU,CACf,MAAM,EAAE,UAAU,EAClB,WAAW,CAAC,EAAE,WAAW,GACxB,aAAa,CAAC,WAAW,CAAC;YAoCf,UAAU;YA+FT,gBAAgB;IAkF/B,OAAO,CAAC,kBAAkB;IAI1B,qBAAqB,IAAI,MAAM,EAAE;IAIjC,oBAAoB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO;CAQlD"}