@vertesia/tools-sdk 0.81.1 → 0.81.2-dev.20260204.135023Z

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 (80) hide show
  1. package/package.json +4 -4
  2. package/lib/cjs/InteractionCollection.js +0 -164
  3. package/lib/cjs/InteractionCollection.js.map +0 -1
  4. package/lib/cjs/SkillCollection.js +0 -318
  5. package/lib/cjs/SkillCollection.js.map +0 -1
  6. package/lib/cjs/ToolCollection.js +0 -192
  7. package/lib/cjs/ToolCollection.js.map +0 -1
  8. package/lib/cjs/ToolRegistry.js +0 -44
  9. package/lib/cjs/ToolRegistry.js.map +0 -1
  10. package/lib/cjs/auth.js +0 -89
  11. package/lib/cjs/auth.js.map +0 -1
  12. package/lib/cjs/build/validate.js +0 -7
  13. package/lib/cjs/build/validate.js.map +0 -1
  14. package/lib/cjs/copy-assets.js +0 -84
  15. package/lib/cjs/copy-assets.js.map +0 -1
  16. package/lib/cjs/index.js +0 -30
  17. package/lib/cjs/index.js.map +0 -1
  18. package/lib/cjs/package.json +0 -3
  19. package/lib/cjs/server.js +0 -327
  20. package/lib/cjs/server.js.map +0 -1
  21. package/lib/cjs/site/styles.js +0 -621
  22. package/lib/cjs/site/styles.js.map +0 -1
  23. package/lib/cjs/site/templates.js +0 -932
  24. package/lib/cjs/site/templates.js.map +0 -1
  25. package/lib/cjs/types.js +0 -3
  26. package/lib/cjs/types.js.map +0 -1
  27. package/lib/cjs/utils.js +0 -7
  28. package/lib/cjs/utils.js.map +0 -1
  29. package/lib/esm/InteractionCollection.js +0 -125
  30. package/lib/esm/InteractionCollection.js.map +0 -1
  31. package/lib/esm/SkillCollection.js +0 -311
  32. package/lib/esm/SkillCollection.js.map +0 -1
  33. package/lib/esm/ToolCollection.js +0 -154
  34. package/lib/esm/ToolCollection.js.map +0 -1
  35. package/lib/esm/ToolRegistry.js +0 -39
  36. package/lib/esm/ToolRegistry.js.map +0 -1
  37. package/lib/esm/auth.js +0 -82
  38. package/lib/esm/auth.js.map +0 -1
  39. package/lib/esm/build/validate.js +0 -4
  40. package/lib/esm/build/validate.js.map +0 -1
  41. package/lib/esm/copy-assets.js +0 -81
  42. package/lib/esm/copy-assets.js.map +0 -1
  43. package/lib/esm/index.js +0 -10
  44. package/lib/esm/index.js.map +0 -1
  45. package/lib/esm/server.js +0 -323
  46. package/lib/esm/server.js.map +0 -1
  47. package/lib/esm/site/styles.js +0 -618
  48. package/lib/esm/site/styles.js.map +0 -1
  49. package/lib/esm/site/templates.js +0 -920
  50. package/lib/esm/site/templates.js.map +0 -1
  51. package/lib/esm/types.js +0 -2
  52. package/lib/esm/types.js.map +0 -1
  53. package/lib/esm/utils.js +0 -4
  54. package/lib/esm/utils.js.map +0 -1
  55. package/lib/types/InteractionCollection.d.ts +0 -48
  56. package/lib/types/InteractionCollection.d.ts.map +0 -1
  57. package/lib/types/SkillCollection.d.ts +0 -111
  58. package/lib/types/SkillCollection.d.ts.map +0 -1
  59. package/lib/types/ToolCollection.d.ts +0 -61
  60. package/lib/types/ToolCollection.d.ts.map +0 -1
  61. package/lib/types/ToolRegistry.d.ts +0 -15
  62. package/lib/types/ToolRegistry.d.ts.map +0 -1
  63. package/lib/types/auth.d.ts +0 -20
  64. package/lib/types/auth.d.ts.map +0 -1
  65. package/lib/types/build/validate.d.ts +0 -2
  66. package/lib/types/build/validate.d.ts.map +0 -1
  67. package/lib/types/copy-assets.d.ts +0 -14
  68. package/lib/types/copy-assets.d.ts.map +0 -1
  69. package/lib/types/index.d.ts +0 -10
  70. package/lib/types/index.d.ts.map +0 -1
  71. package/lib/types/server.d.ts +0 -72
  72. package/lib/types/server.d.ts.map +0 -1
  73. package/lib/types/site/styles.d.ts +0 -5
  74. package/lib/types/site/styles.d.ts.map +0 -1
  75. package/lib/types/site/templates.d.ts +0 -54
  76. package/lib/types/site/templates.d.ts.map +0 -1
  77. package/lib/types/types.d.ts +0 -262
  78. package/lib/types/types.d.ts.map +0 -1
  79. package/lib/types/utils.d.ts +0 -2
  80. package/lib/types/utils.d.ts.map +0 -1
@@ -1,618 +0,0 @@
1
- /**
2
- * Shared CSS styles for the tools server HTML pages
3
- */
4
- export const baseStyles = /*css*/ `
5
- :root {
6
- color-scheme: light dark;
7
- }
8
-
9
- body {
10
- font-family: system-ui, -apple-system, sans-serif;
11
- margin: 0;
12
- padding: 2.5rem 1.75rem;
13
- background:
14
- radial-gradient(circle at 0 0, rgba(56, 189, 248, 0.10), transparent 55%),
15
- radial-gradient(circle at 100% 0, rgba(129, 140, 248, 0.12), transparent 55%),
16
- #f9fafb;
17
- color: #0f172a;
18
- line-height: 1.5;
19
- }
20
-
21
- .page {
22
- max-width: 1120px;
23
- margin: 0 auto;
24
- }
25
-
26
- .hero {
27
- display: flex;
28
- justify-content: space-between;
29
- align-items: flex-start;
30
- gap: 2.25rem;
31
- padding: 1.75rem 2rem;
32
- margin-bottom: 2.5rem;
33
- border-radius: 1.25rem;
34
- background: linear-gradient(135deg, #ffffff, #f3f4ff);
35
- border: 1px solid #e5e7eb;
36
- box-shadow:
37
- 0 18px 40px rgba(15, 23, 42, 0.08),
38
- 0 0 0 1px rgba(248, 250, 252, 0.8);
39
- }
40
-
41
- .hero-main {
42
- display: flex;
43
- gap: 1.5rem;
44
- align-items: center;
45
- }
46
-
47
- .hero-logo {
48
- display: flex;
49
- align-items: center;
50
- justify-content: center;
51
- width: 56px;
52
- height: 56px;
53
- border-radius: 999px;
54
- background: radial-gradient(circle at 30% 0, #38bdf8, #6366f1);
55
- box-shadow:
56
- 0 0 0 1px rgba(15, 23, 42, 0.85),
57
- 0 12px 30px rgba(37, 99, 235, 0.6);
58
- }
59
-
60
- .hero-logo-initial {
61
- font-size: 1.1rem;
62
- font-weight: 650;
63
- letter-spacing: 0.08em;
64
- text-transform: uppercase;
65
- color: #eff6ff;
66
- }
67
-
68
- .hero-logo img {
69
- display: block;
70
- max-width: 80%;
71
- max-height: 60%;
72
- }
73
-
74
- .logo-dark {
75
- display: none;
76
- }
77
-
78
- .hero-meta {
79
- display: flex;
80
- flex-direction: column;
81
- gap: 0.5rem;
82
- }
83
-
84
- .hero-eyebrow {
85
- font-size: 0.75rem;
86
- letter-spacing: 0.12em;
87
- text-transform: uppercase;
88
- color: #6b7280;
89
- }
90
-
91
- .hero-title {
92
- font-size: 1.9rem;
93
- font-weight: 650;
94
- letter-spacing: -0.03em;
95
- color: #0f172a;
96
- margin: 0;
97
- }
98
-
99
- .hero-tagline {
100
- font-size: 0.95rem;
101
- color: #4b5563;
102
- margin: 0.1rem 0 0 0;
103
- }
104
-
105
- .hero-summary {
106
- display: flex;
107
- flex-wrap: wrap;
108
- gap: 0.5rem;
109
- margin-top: 0.75rem;
110
- font-size: 0.8rem;
111
- color: #6b7280;
112
- }
113
-
114
- .hero-summary span {
115
- display: inline-flex;
116
- align-items: center;
117
- gap: 0.35rem;
118
- padding: 0.15rem 0.55rem;
119
- border-radius: 999px;
120
- background: #f9fafb;
121
- border: 1px solid #e5e7eb;
122
- }
123
-
124
- .hero-summary dot {
125
- width: 6px;
126
- height: 6px;
127
- border-radius: 999px;
128
- display: inline-block;
129
- background: #22c55e;
130
- }
131
-
132
- .search-bar {
133
- display: flex;
134
- flex-direction: column;
135
- gap: 0.4rem;
136
- margin: 0 0 1.75rem 0;
137
- }
138
-
139
- .search-input {
140
- max-width: 360px;
141
- padding: 0.55rem 0.75rem;
142
- border-radius: 999px;
143
- border: 1px solid #e5e7eb;
144
- background: #ffffff;
145
- color: #111827;
146
- font-size: 0.9rem;
147
- font-family: inherit;
148
- box-shadow: 0 4px 10px rgba(15, 23, 42, 0.04);
149
- }
150
-
151
- .search-input::placeholder {
152
- color: #9ca3af;
153
- }
154
-
155
- .search-input:focus {
156
- outline: none;
157
- border-color: #60a5fa;
158
- box-shadow:
159
- 0 0 0 1px rgba(59, 130, 246, 0.4),
160
- 0 6px 18px rgba(37, 99, 235, 0.18);
161
- }
162
-
163
- .search-hint {
164
- font-size: 0.75rem;
165
- color: #9ca3af;
166
- }
167
-
168
- .search-empty {
169
- margin-top: 1rem;
170
- font-size: 0.85rem;
171
- color: #9ca3af;
172
- }
173
-
174
- .hero-panel {
175
- min-width: 220px;
176
- max-width: 260px;
177
- padding: 1.25rem 1.4rem;
178
- border-radius: 1rem;
179
- background: radial-gradient(circle at 0 0, rgba(59, 130, 246, 0.10), transparent 70%),
180
- #eff6ff;
181
- border: 1px solid #bfdbfe;
182
- box-shadow: 0 16px 34px rgba(15, 23, 42, 0.10);
183
- font-size: 0.8rem;
184
- }
185
-
186
- .hero-panel-label {
187
- font-size: 0.7rem;
188
- letter-spacing: 0.13em;
189
- text-transform: uppercase;
190
- color: #1d4ed8;
191
- margin-bottom: 0.5rem;
192
- }
193
-
194
- .hero-panel-endpoint {
195
- display: inline-flex;
196
- align-items: center;
197
- padding: 0.3rem 0.6rem;
198
- border-radius: 0.5rem;
199
- background: #f9fafb;
200
- border: 1px solid #e5e7eb;
201
- font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;
202
- font-size: 0.82rem;
203
- color: #111827;
204
- }
205
-
206
- .hero-panel-hint {
207
- margin-top: 0.6rem;
208
- color: #6b7280;
209
- line-height: 1.4;
210
- }
211
-
212
- .hero-panel-hint strong {
213
- color: #111827;
214
- }
215
-
216
- h1, h2 {
217
- margin: 0 0 1rem 0;
218
- color: #0f172a;
219
- }
220
-
221
- h1 { font-size: 1.875rem; }
222
- h2 {
223
- font-size: 1.4rem;
224
- margin-top: 2rem;
225
- letter-spacing: 0.03em;
226
- text-transform: uppercase;
227
- color: #6b7280;
228
- }
229
-
230
- a {
231
- color: #2563eb;
232
- text-decoration: none;
233
- }
234
- a:hover {
235
- text-decoration: underline;
236
- }
237
-
238
- hr {
239
- border: none;
240
- border-top: 1px solid #e5e7eb;
241
- margin: 2rem 0;
242
- }
243
-
244
- .card-grid {
245
- display: grid;
246
- grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
247
- gap: 1.5rem;
248
- }
249
-
250
- .card {
251
- background: radial-gradient(circle at 0 0, rgba(56, 189, 248, 0.12), transparent 75%),
252
- #ffffff;
253
- padding: 1.25rem 1.35rem;
254
- border-radius: 14px;
255
- box-shadow:
256
- 0 14px 30px rgba(15, 23, 42, 0.06),
257
- 0 0 0 1px rgba(248, 250, 252, 0.9);
258
- border: 1px solid #e5e7eb;
259
- transition: transform 0.15s, box-shadow 0.15s;
260
- text-decoration: none;
261
- color: inherit;
262
- display: block;
263
- }
264
-
265
- .card:hover {
266
- transform: translateY(-3px);
267
- box-shadow:
268
- 0 18px 40px rgba(15, 23, 42, 0.10),
269
- 0 0 0 1px rgba(59, 130, 246, 0.6);
270
- }
271
-
272
- .card-icon {
273
- width: 48px;
274
- height: 48px;
275
- margin-bottom: 0.75rem;
276
- }
277
-
278
- .card-icon svg {
279
- width: 100%;
280
- height: 100%;
281
- }
282
-
283
- .card-title {
284
- font-weight: 600;
285
- font-size: 1.1rem;
286
- margin-bottom: 0.25rem;
287
- color: #0f172a;
288
- }
289
-
290
- .card-desc {
291
- font-size: 0.925rem;
292
- color: #6b7280;
293
- }
294
-
295
- .card-meta {
296
- margin-top: 0.45rem;
297
- font-size: 0.75rem;
298
- text-transform: uppercase;
299
- letter-spacing: 0.08em;
300
- color: #9ca3af;
301
- }
302
-
303
- .item-list {
304
- display: flex;
305
- flex-direction: column;
306
- gap: 1rem;
307
- }
308
-
309
- .item-card {
310
- background: #ffffff;
311
- padding: 1rem 1.25rem;
312
- border-radius: 10px;
313
- border-left: 4px solid #6366f1;
314
- box-shadow:
315
- 0 10px 24px rgba(15, 23, 42, 0.06),
316
- 0 0 0 1px rgba(248, 250, 252, 0.9);
317
- }
318
-
319
- .item-card.skill {
320
- border-left-color: #10b981;
321
- }
322
-
323
- .item-card.interaction {
324
- border-left-color: #f59e0b;
325
- }
326
-
327
- .item-name {
328
- font-weight: 600;
329
- font-size: 1.05rem;
330
- }
331
-
332
- .item-desc {
333
- font-size: 0.9rem;
334
- color: #6b7280;
335
- margin-top: 0.25rem;
336
- }
337
-
338
- .item-meta {
339
- font-size: 0.8rem;
340
- color: #9ca3af;
341
- margin-top: 0.5rem;
342
- }
343
-
344
- .item-schema {
345
- margin-top: 0.75rem;
346
- font-size: 0.8rem;
347
- font-family: ui-monospace, monospace;
348
- background: #f3f4f6;
349
- padding: 0.75rem;
350
- border-radius: 6px;
351
- overflow-x: auto;
352
- white-space: pre-wrap;
353
- color: #374151;
354
- }
355
-
356
- .header {
357
- display: flex;
358
- align-items: center;
359
- gap: 1rem;
360
- margin-bottom: 1.5rem;
361
- }
362
-
363
- .header-icon {
364
- width: 64px;
365
- height: 64px;
366
- }
367
-
368
- .header-icon svg {
369
- width: 100%;
370
- height: 100%;
371
- }
372
-
373
- .section-header {
374
- display: flex;
375
- align-items: baseline;
376
- justify-content: space-between;
377
- gap: 1rem;
378
- margin-bottom: 0.75rem;
379
- }
380
-
381
- .section-subtitle {
382
- font-size: 0.8rem;
383
- color: #6b7280;
384
- }
385
-
386
- .endpoint-url {
387
- font-size: 0.85rem;
388
- color: #6b7280;
389
- margin-top: 0.25rem;
390
- }
391
-
392
- .endpoint-url code {
393
- background: #f3f4f6;
394
- padding: 0.125rem 0.375rem;
395
- border-radius: 4px;
396
- font-family: ui-monospace, monospace;
397
- }
398
-
399
- .badge {
400
- display: inline-block;
401
- font-size: 0.75rem;
402
- padding: 0.125rem 0.5rem;
403
- border-radius: 9999px;
404
- background: #f9fafb;
405
- color: #374151;
406
- border: 1px solid #e5e7eb;
407
- margin-right: 0.25rem;
408
- }
409
-
410
- .badge.python { background: #fef3c7; color: #92400e; border-color: #facc15; }
411
- .badge.typescript { background: #dbeafe; color: #1e40af; border-color: #60a5fa; }
412
- .badge.javascript { background: #fef9c3; color: #854d0e; border-color: #facc15; }
413
-
414
- @media (max-width: 768px) {
415
- body {
416
- padding: 1.75rem 1.25rem;
417
- }
418
-
419
- .hero {
420
- flex-direction: column;
421
- padding: 1.5rem 1.35rem;
422
- }
423
-
424
- .hero-panel {
425
- max-width: 100%;
426
- width: 100%;
427
- }
428
- }
429
-
430
- @media (prefers-color-scheme: dark) {
431
- body {
432
- background:
433
- radial-gradient(circle at 0 0, rgba(56, 189, 248, 0.18), transparent 55%),
434
- radial-gradient(circle at 100% 0, rgba(129, 140, 248, 0.25), transparent 55%),
435
- #020617;
436
- color: #e5e7eb;
437
- }
438
-
439
- .hero {
440
- background: linear-gradient(135deg, rgba(15, 23, 42, 0.98), rgba(15, 23, 42, 0.92));
441
- border: 1px solid rgba(148, 163, 184, 0.45);
442
- box-shadow:
443
- 0 24px 60px rgba(15, 23, 42, 0.85),
444
- 0 0 0 1px rgba(15, 23, 42, 0.75);
445
- }
446
-
447
- .hero-eyebrow {
448
- color: #9ca3af;
449
- }
450
-
451
- .hero-title {
452
- color: #f9fafb;
453
- }
454
-
455
- .hero-tagline {
456
- color: #cbd5f5;
457
- }
458
-
459
- .hero-summary {
460
- color: #9ca3af;
461
- }
462
-
463
- .hero-summary span {
464
- background: rgba(15, 23, 42, 0.95);
465
- border-color: rgba(148, 163, 184, 0.45);
466
- }
467
-
468
- .hero-panel {
469
- background: radial-gradient(circle at 0 0, rgba(56, 189, 248, 0.16), transparent 70%),
470
- rgba(15, 23, 42, 0.96);
471
- border: 1px solid rgba(59, 130, 246, 0.6);
472
- box-shadow: 0 20px 40px rgba(15, 23, 42, 0.85);
473
- }
474
-
475
- .hero-panel-label {
476
- color: #93c5fd;
477
- }
478
-
479
- .hero-panel-endpoint {
480
- background: rgba(15, 23, 42, 0.98);
481
- border-color: rgba(148, 163, 184, 0.6);
482
- color: #e5e7eb;
483
- }
484
-
485
- .hero-panel-hint {
486
- color: #9ca3af;
487
- }
488
-
489
- .hero-panel-hint strong {
490
- color: #e5e7eb;
491
- }
492
-
493
- .search-input {
494
- background: rgba(15, 23, 42, 0.96);
495
- border-color: rgba(55, 65, 81, 0.9);
496
- color: #e5e7eb;
497
- box-shadow:
498
- 0 6px 16px rgba(15, 23, 42, 0.9),
499
- 0 0 0 1px rgba(15, 23, 42, 0.9);
500
- }
501
-
502
- .search-input::placeholder {
503
- color: #6b7280;
504
- }
505
-
506
- .search-input:focus {
507
- border-color: #60a5fa;
508
- box-shadow:
509
- 0 0 0 1px rgba(59, 130, 246, 0.7),
510
- 0 10px 26px rgba(30, 64, 175, 0.7);
511
- }
512
-
513
- .search-hint,
514
- .search-empty {
515
- color: #9ca3af;
516
- }
517
-
518
- h1, h2 {
519
- color: #e5e7eb;
520
- }
521
-
522
- h2 {
523
- color: #9ca3af;
524
- }
525
-
526
- a {
527
- color: #60a5fa;
528
- }
529
-
530
- hr {
531
- border-top-color: rgba(148, 163, 184, 0.4);
532
- }
533
-
534
- .card {
535
- background: radial-gradient(circle at 0 0, rgba(56, 189, 248, 0.12), transparent 75%),
536
- rgba(15, 23, 42, 0.9);
537
- box-shadow:
538
- 0 14px 30px rgba(15, 23, 42, 0.8),
539
- 0 0 0 1px rgba(15, 23, 42, 0.85);
540
- border-color: rgba(148, 163, 184, 0.5);
541
- }
542
-
543
- .card:hover {
544
- box-shadow:
545
- 0 18px 40px rgba(15, 23, 42, 0.9),
546
- 0 0 0 1px rgba(59, 130, 246, 0.8);
547
- }
548
-
549
- .card-title {
550
- color: #e5e7eb;
551
- }
552
-
553
- .card-desc {
554
- color: #9ca3af;
555
- }
556
-
557
- .card-meta {
558
- color: #6b7280;
559
- }
560
-
561
- .item-card {
562
- background: rgba(15, 23, 42, 0.9);
563
- box-shadow:
564
- 0 10px 24px rgba(15, 23, 42, 0.9),
565
- 0 0 0 1px rgba(15, 23, 42, 0.9);
566
- }
567
-
568
- .item-desc,
569
- .item-meta {
570
- color: #9ca3af;
571
- }
572
-
573
- .item-schema {
574
- background: rgba(15, 23, 42, 0.95);
575
- color: #e5e7eb;
576
- }
577
-
578
- .endpoint-url {
579
- color: #9ca3af;
580
- }
581
-
582
- .endpoint-url code {
583
- background: rgba(15, 23, 42, 0.95);
584
- }
585
-
586
- .badge {
587
- background: rgba(15, 23, 42, 0.96);
588
- color: #e5e7eb;
589
- border-color: rgba(148, 163, 184, 0.6);
590
- }
591
-
592
- .badge.python {
593
- background: rgba(252, 211, 77, 0.12);
594
- color: #facc15;
595
- border-color: rgba(250, 204, 21, 0.5);
596
- }
597
-
598
- .badge.typescript {
599
- background: rgba(59, 130, 246, 0.12);
600
- color: #93c5fd;
601
- border-color: rgba(59, 130, 246, 0.7);
602
- }
603
-
604
- .badge.javascript {
605
- background: rgba(251, 191, 36, 0.12);
606
- color: #fbbf24;
607
- border-color: rgba(251, 191, 36, 0.55);
608
- }
609
-
610
- .logo-light {
611
- display: none;
612
- }
613
- .logo-dark {
614
- display: block;
615
- }
616
- }
617
- `;
618
- //# sourceMappingURL=styles.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"styles.js","sourceRoot":"","sources":["../../../src/site/styles.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG,OAAO,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAqmBhC,CAAC"}